From 3d57e14df7ba5f14a634295caf3b2e60da50bfe2 Mon Sep 17 00:00:00 2001 From: James Taylor Date: Fri, 6 Sep 2019 16:31:13 -0700 Subject: [PATCH] Remove windows python distribution from repo and add requirements.txt --- .gitignore | 3 + python/_asyncio.pyd | Bin 45720 -> 0 bytes python/_brotli.cp36-win32.pyd | Bin 757760 -> 0 bytes python/_bz2.pyd | Bin 78488 -> 0 bytes python/_ctypes.pyd | Bin 102552 -> 0 bytes python/_decimal.pyd | Bin 216728 -> 0 bytes python/_distutils_findvs.pyd | Bin 22168 -> 0 bytes python/_elementtree.pyd | Bin 163992 -> 0 bytes python/_hashlib.pyd | Bin 1121432 -> 0 bytes python/_lzma.pyd | Bin 183960 -> 0 bytes python/_msi.pyd | Bin 33432 -> 0 bytes python/_multiprocessing.pyd | Bin 25752 -> 0 bytes python/_overlapped.pyd | Bin 34456 -> 0 bytes python/_socket.pyd | Bin 63640 -> 0 bytes python/_sqlite3.pyd | Bin 64664 -> 0 bytes python/_ssl.pyd | Bin 1459352 -> 0 bytes python/atoma/__init__.py | 12 - python/atoma/atom.py | 284 - python/atoma/const.py | 1 - python/atoma/exceptions.py | 14 - python/atoma/json_feed.py | 223 - python/atoma/opml.py | 107 - python/atoma/rss.py | 221 - python/atoma/simple.py | 224 - python/atoma/utils.py | 84 - python/attr/__init__.py | 65 - python/attr/__init__.pyi | 252 - python/attr/_compat.py | 163 - python/attr/_config.py | 23 - python/attr/_funcs.py | 290 - python/attr/_make.py | 2034 -- python/attr/converters.py | 78 - python/attr/converters.pyi | 12 - python/attr/exceptions.py | 57 - python/attr/exceptions.pyi | 7 - python/attr/filters.py | 52 - python/attr/filters.pyi | 5 - python/attr/py.typed | 0 python/attr/validators.py | 170 - python/attr/validators.pyi | 14 - python/brotli.py | 56 - python/click/__init__.py | 97 - python/click/_bashcomplete.py | 293 - python/click/_compat.py | 703 - python/click/_termui_impl.py | 621 - python/click/_textwrap.py | 38 - python/click/_unicodefun.py | 125 - python/click/_winconsole.py | 307 - python/click/core.py | 1856 -- python/click/decorators.py | 311 - python/click/exceptions.py | 235 - python/click/formatting.py | 256 - python/click/globals.py | 48 - python/click/parser.py | 427 - python/click/termui.py | 606 - python/click/testing.py | 374 - python/click/types.py | 668 - python/click/utils.py | 440 - python/dateutil/__init__.py | 2 - python/dateutil/_common.py | 34 - python/dateutil/_version.py | 10 - python/dateutil/easter.py | 89 - python/dateutil/parser.py | 1374 - python/dateutil/relativedelta.py | 549 - python/dateutil/rrule.py | 1610 -- python/dateutil/tz/__init__.py | 5 - python/dateutil/tz/_common.py | 394 - python/dateutil/tz/tz.py | 1511 - python/dateutil/tz/win.py | 332 - python/dateutil/tzwin.py | 2 - python/dateutil/zoneinfo/__init__.py | 183 - .../zoneinfo/dateutil-zoneinfo.tar.gz | Bin 138881 -> 0 bytes python/dateutil/zoneinfo/rebuild.py | 52 - python/defusedxml/ElementTree.py | 112 - python/defusedxml/__init__.py | 45 - python/defusedxml/cElementTree.py | 30 - python/defusedxml/common.py | 120 - python/defusedxml/expatbuilder.py | 110 - python/defusedxml/expatreader.py | 59 - python/defusedxml/lxml.py | 153 - python/defusedxml/minidom.py | 42 - python/defusedxml/pulldom.py | 34 - python/defusedxml/sax.py | 49 - python/defusedxml/xmlrpc.py | 157 - python/flask/__init__.py | 49 - python/flask/__main__.py | 14 - python/flask/_compat.py | 101 - python/flask/app.py | 2334 -- python/flask/blueprints.py | 447 - python/flask/cli.py | 910 - python/flask/config.py | 269 - python/flask/ctx.py | 457 - python/flask/debughelpers.py | 168 - python/flask/globals.py | 61 - python/flask/helpers.py | 1051 - python/flask/json/__init__.py | 357 - python/flask/json/tag.py | 300 - python/flask/logging.py | 78 - python/flask/sessions.py | 385 - python/flask/signals.py | 57 - python/flask/templating.py | 150 - python/flask/testing.py | 246 - python/flask/views.py | 158 - python/flask/wrappers.py | 216 - .../__greenlet_primitives.cp36-win32.pyd | Bin 41984 -> 0 bytes python/gevent/__greenlet_primitives.pxd | 44 - python/gevent/__hub_local.cp36-win32.pyd | Bin 40960 -> 0 bytes python/gevent/__hub_local.pxd | 17 - python/gevent/__hub_primitives.cp36-win32.pyd | Bin 96256 -> 0 bytes python/gevent/__hub_primitives.pxd | 69 - python/gevent/__ident.cp36-win32.pyd | Bin 37888 -> 0 bytes python/gevent/__ident.pxd | 26 - python/gevent/__imap.cp36-win32.pyd | Bin 69120 -> 0 bytes python/gevent/__imap.pxd | 45 - python/gevent/__init__.py | 178 - python/gevent/__semaphore.cp36-win32.pyd | Bin 76800 -> 0 bytes python/gevent/__semaphore.pxd | 54 - python/gevent/__tracer.cp36-win32.pyd | Bin 71680 -> 0 bytes python/gevent/__tracer.pxd | 43 - python/gevent/__waiter.cp36-win32.pyd | Bin 62976 -> 0 bytes python/gevent/__waiter.pxd | 48 - python/gevent/_compat.py | 160 - python/gevent/_config.py | 709 - python/gevent/_event.cp36-win32.pyd | Bin 105984 -> 0 bytes python/gevent/_event.pxd | 77 - python/gevent/_ffi/__init__.py | 27 - python/gevent/_ffi/callback.py | 58 - python/gevent/_ffi/loop.py | 709 - python/gevent/_ffi/watcher.py | 641 - python/gevent/_fileobjectcommon.py | 275 - python/gevent/_fileobjectposix.py | 320 - python/gevent/_greenlet.cp36-win32.pyd | Bin 194048 -> 0 bytes python/gevent/_greenlet.pxd | 174 - python/gevent/_greenlet_primitives.c | 6042 ---- python/gevent/_greenlet_primitives.py | 74 - python/gevent/_hub_local.c | 5720 ---- python/gevent/_hub_local.py | 101 - python/gevent/_hub_primitives.c | 11875 -------- python/gevent/_hub_primitives.py | 371 - python/gevent/_ident.c | 5407 ---- python/gevent/_ident.py | 84 - python/gevent/_imap.c | 10490 ------- python/gevent/_imap.py | 227 - python/gevent/_interfaces.py | 220 - python/gevent/_local.cp36-win32.pyd | Bin 105984 -> 0 bytes python/gevent/_local.pxd | 113 - python/gevent/_monitor.py | 325 - python/gevent/_patcher.py | 127 - python/gevent/_queue.cp36-win32.pyd | Bin 171520 -> 0 bytes python/gevent/_queue.pxd | 74 - python/gevent/_semaphore.c | 10292 ------- python/gevent/_semaphore.py | 303 - python/gevent/_socket2.py | 473 - python/gevent/_socket3.py | 756 - python/gevent/_socketcommon.py | 382 - python/gevent/_ssl2.py | 441 - python/gevent/_ssl3.py | 712 - python/gevent/_sslgte279.py | 714 - python/gevent/_tblib.py | 432 - python/gevent/_threading.py | 168 - python/gevent/_tracer.c | 9571 ------ python/gevent/_tracer.py | 179 - python/gevent/_util.py | 178 - python/gevent/_util_py2.py | 23 - python/gevent/_waiter.c | 8782 ------ python/gevent/_waiter.py | 204 - python/gevent/ares.py | 10 - python/gevent/backdoor.py | 210 - python/gevent/baseserver.py | 404 - python/gevent/builtins.py | 135 - python/gevent/core.py | 20 - python/gevent/event.c | 13439 --------- python/gevent/event.py | 481 - python/gevent/events.py | 480 - python/gevent/exceptions.py | 79 - python/gevent/fileobject.py | 61 - python/gevent/greenlet.c | 24050 ---------------- python/gevent/greenlet.py | 944 - python/gevent/hub.py | 733 - python/gevent/libev/__init__.py | 0 python/gevent/libev/_corecffi_build.py | 75 - python/gevent/libev/_corecffi_cdef.c | 243 - python/gevent/libev/_corecffi_source.c | 69 - python/gevent/libev/callbacks.c | 216 - python/gevent/libev/callbacks.h | 38 - python/gevent/libev/corecext.c | 22963 --------------- python/gevent/libev/corecext.cp36-win32.pyd | Bin 209920 -> 0 bytes python/gevent/libev/corecext.h | 147 - python/gevent/libev/corecext.pyx | 1340 - python/gevent/libev/corecffi.py | 418 - python/gevent/libev/libev.h | 100 - python/gevent/libev/libev.pxd | 235 - python/gevent/libev/libev_vfd.h | 225 - python/gevent/libev/stathelper.c | 187 - python/gevent/libev/watcher.py | 282 - python/gevent/libuv/__init__.py | 0 python/gevent/libuv/_corecffi.cp36-win32.pyd | Bin 125952 -> 0 bytes python/gevent/libuv/_corecffi_build.py | 253 - python/gevent/libuv/_corecffi_cdef.c | 393 - python/gevent/libuv/_corecffi_source.c | 181 - python/gevent/libuv/loop.py | 601 - python/gevent/libuv/watcher.py | 732 - python/gevent/local.c | 13741 --------- python/gevent/local.py | 605 - python/gevent/lock.py | 263 - python/gevent/monkey.py | 1079 - python/gevent/os.py | 510 - python/gevent/pool.py | 667 - python/gevent/pywsgi.py | 1545 - python/gevent/queue.c | 22127 -------------- python/gevent/queue.py | 685 - python/gevent/resolver/__init__.py | 103 - python/gevent/resolver/ares.py | 357 - python/gevent/resolver/blocking.py | 41 - python/gevent/resolver/cares.c | 15233 ---------- python/gevent/resolver/cares.cp36-win32.pyd | Bin 154112 -> 0 bytes python/gevent/resolver/cares.pyx | 464 - python/gevent/resolver/cares_ntop.h | 7 - python/gevent/resolver/cares_pton.h | 8 - python/gevent/resolver/dnshelper.c | 159 - python/gevent/resolver/dnspython.py | 662 - python/gevent/resolver/libcares.pxd | 109 - python/gevent/resolver/thread.py | 71 - python/gevent/resolver_ares.py | 10 - python/gevent/resolver_thread.py | 10 - python/gevent/select.py | 286 - python/gevent/server.py | 282 - python/gevent/signal.py | 137 - python/gevent/socket.py | 129 - python/gevent/ssl.py | 26 - python/gevent/subprocess.py | 1672 -- python/gevent/thread.py | 114 - python/gevent/threading.py | 235 - python/gevent/threadpool.py | 580 - python/gevent/time.py | 27 - python/gevent/timeout.py | 373 - python/gevent/util.py | 592 - python/gevent/win32util.py | 98 - python/greenlet.cp36-win32.pyd | Bin 22528 -> 0 bytes python/itsdangerous/__init__.py | 22 - python/itsdangerous/_compat.py | 46 - python/itsdangerous/_json.py | 18 - python/itsdangerous/encoding.py | 49 - python/itsdangerous/exc.py | 98 - python/itsdangerous/jws.py | 218 - python/itsdangerous/serializer.py | 233 - python/itsdangerous/signer.py | 179 - python/itsdangerous/timed.py | 147 - python/itsdangerous/url_safe.py | 65 - python/jinja2/__init__.py | 83 - python/jinja2/_compat.py | 99 - python/jinja2/_identifier.py | 2 - python/jinja2/asyncfilters.py | 146 - python/jinja2/asyncsupport.py | 256 - python/jinja2/bccache.py | 362 - python/jinja2/compiler.py | 1721 -- python/jinja2/constants.py | 32 - python/jinja2/debug.py | 372 - python/jinja2/defaults.py | 56 - python/jinja2/environment.py | 1276 - python/jinja2/exceptions.py | 146 - python/jinja2/ext.py | 627 - python/jinja2/filters.py | 1190 - python/jinja2/idtracking.py | 286 - python/jinja2/lexer.py | 739 - python/jinja2/loaders.py | 481 - python/jinja2/meta.py | 106 - python/jinja2/nativetypes.py | 220 - python/jinja2/nodes.py | 999 - python/jinja2/optimizer.py | 49 - python/jinja2/parser.py | 903 - python/jinja2/runtime.py | 813 - python/jinja2/sandbox.py | 486 - python/jinja2/tests.py | 175 - python/jinja2/utils.py | 647 - python/jinja2/visitor.py | 87 - python/markupsafe/__init__.py | 305 - python/markupsafe/_compat.py | 26 - python/markupsafe/_constants.py | 267 - python/markupsafe/_native.py | 46 - python/markupsafe/_speedups.c | 239 - python/msvcp140.dll | Bin 440120 -> 0 bytes python/pyexpat.pyd | Bin 164504 -> 0 bytes python/python.exe | Bin 97944 -> 0 bytes python/python3.dll | Bin 58520 -> 0 bytes python/python36._pth | 6 - python/python36.dll | Bin 3302040 -> 0 bytes python/python36.zip | Bin 2215299 -> 0 bytes python/pythonw.exe | Bin 96408 -> 0 bytes python/select.pyd | Bin 23704 -> 0 bytes python/six.py | 891 - python/socks.py | 870 - python/sockshandler.py | 79 - python/sqlite3.dll | Bin 880792 -> 0 bytes python/unicodedata.pyd | Bin 896152 -> 0 bytes python/urllib3/__init__.py | 92 - python/urllib3/_collections.py | 329 - python/urllib3/connection.py | 391 - python/urllib3/connectionpool.py | 896 - python/urllib3/contrib/__init__.py | 0 python/urllib3/contrib/_appengine_environ.py | 30 - .../contrib/_securetransport/__init__.py | 0 .../contrib/_securetransport/bindings.py | 593 - .../contrib/_securetransport/low_level.py | 346 - python/urllib3/contrib/appengine.py | 289 - python/urllib3/contrib/ntlmpool.py | 111 - python/urllib3/contrib/pyopenssl.py | 466 - python/urllib3/contrib/securetransport.py | 804 - python/urllib3/contrib/socks.py | 192 - python/urllib3/exceptions.py | 246 - python/urllib3/fields.py | 178 - python/urllib3/filepost.py | 98 - python/urllib3/packages/__init__.py | 5 - python/urllib3/packages/backports/__init__.py | 0 python/urllib3/packages/backports/makefile.py | 53 - python/urllib3/packages/six.py | 868 - .../packages/ssl_match_hostname/__init__.py | 19 - .../ssl_match_hostname/_implementation.py | 156 - python/urllib3/poolmanager.py | 450 - python/urllib3/request.py | 150 - python/urllib3/response.py | 705 - python/urllib3/util/__init__.py | 54 - python/urllib3/util/connection.py | 134 - python/urllib3/util/queue.py | 21 - python/urllib3/util/request.py | 118 - python/urllib3/util/response.py | 87 - python/urllib3/util/retry.py | 411 - python/urllib3/util/ssl_.py | 381 - python/urllib3/util/timeout.py | 242 - python/urllib3/util/url.py | 230 - python/urllib3/util/wait.py | 150 - python/vcruntime140.dll | Bin 86840 -> 0 bytes python/werkzeug/__init__.py | 233 - python/werkzeug/_compat.py | 219 - python/werkzeug/_internal.py | 484 - python/werkzeug/_reloader.py | 334 - python/werkzeug/contrib/__init__.py | 16 - python/werkzeug/contrib/atom.py | 362 - python/werkzeug/contrib/cache.py | 933 - python/werkzeug/contrib/fixers.py | 262 - python/werkzeug/contrib/iterio.py | 358 - python/werkzeug/contrib/lint.py | 11 - python/werkzeug/contrib/profiler.py | 42 - python/werkzeug/contrib/securecookie.py | 362 - python/werkzeug/contrib/sessions.py | 389 - python/werkzeug/contrib/wrappers.py | 385 - python/werkzeug/datastructures.py | 2852 -- python/werkzeug/exceptions.py | 774 - python/werkzeug/filesystem.py | 64 - python/werkzeug/formparser.py | 586 - python/werkzeug/http.py | 1303 - python/werkzeug/local.py | 421 - python/werkzeug/middleware/__init__.py | 25 - python/werkzeug/middleware/dispatcher.py | 66 - python/werkzeug/middleware/http_proxy.py | 219 - python/werkzeug/middleware/lint.py | 408 - python/werkzeug/middleware/profiler.py | 132 - python/werkzeug/middleware/proxy_fix.py | 228 - python/werkzeug/middleware/shared_data.py | 260 - python/werkzeug/posixemulation.py | 117 - python/werkzeug/routing.py | 2026 -- python/werkzeug/security.py | 241 - python/werkzeug/serving.py | 1074 - python/werkzeug/test.py | 1146 - python/werkzeug/testapp.py | 241 - python/werkzeug/urls.py | 1134 - python/werkzeug/useragents.py | 220 - python/werkzeug/utils.py | 836 - python/werkzeug/wrappers/__init__.py | 36 - python/werkzeug/wrappers/accept.py | 50 - python/werkzeug/wrappers/auth.py | 33 - python/werkzeug/wrappers/base_request.py | 693 - python/werkzeug/wrappers/base_response.py | 702 - .../werkzeug/wrappers/common_descriptors.py | 322 - python/werkzeug/wrappers/etag.py | 304 - python/werkzeug/wrappers/json.py | 145 - python/werkzeug/wrappers/request.py | 44 - python/werkzeug/wrappers/response.py | 78 - python/werkzeug/wrappers/user_agent.py | 15 - python/werkzeug/wsgi.py | 1067 - python/winsound.pyd | Bin 24728 -> 0 bytes requirements.txt | 6 + 382 files changed, 9 insertions(+), 285714 deletions(-) delete mode 100644 python/_asyncio.pyd delete mode 100644 python/_brotli.cp36-win32.pyd delete mode 100644 python/_bz2.pyd delete mode 100644 python/_ctypes.pyd delete mode 100644 python/_decimal.pyd delete mode 100644 python/_distutils_findvs.pyd delete mode 100644 python/_elementtree.pyd delete mode 100644 python/_hashlib.pyd delete mode 100644 python/_lzma.pyd delete mode 100644 python/_msi.pyd delete mode 100644 python/_multiprocessing.pyd delete mode 100644 python/_overlapped.pyd delete mode 100644 python/_socket.pyd delete mode 100644 python/_sqlite3.pyd delete mode 100644 python/_ssl.pyd delete mode 100644 python/atoma/__init__.py delete mode 100644 python/atoma/atom.py delete mode 100644 python/atoma/const.py delete mode 100644 python/atoma/exceptions.py delete mode 100644 python/atoma/json_feed.py delete mode 100644 python/atoma/opml.py delete mode 100644 python/atoma/rss.py delete mode 100644 python/atoma/simple.py delete mode 100644 python/atoma/utils.py delete mode 100644 python/attr/__init__.py delete mode 100644 python/attr/__init__.pyi delete mode 100644 python/attr/_compat.py delete mode 100644 python/attr/_config.py delete mode 100644 python/attr/_funcs.py delete mode 100644 python/attr/_make.py delete mode 100644 python/attr/converters.py delete mode 100644 python/attr/converters.pyi delete mode 100644 python/attr/exceptions.py delete mode 100644 python/attr/exceptions.pyi delete mode 100644 python/attr/filters.py delete mode 100644 python/attr/filters.pyi delete mode 100644 python/attr/py.typed delete mode 100644 python/attr/validators.py delete mode 100644 python/attr/validators.pyi delete mode 100644 python/brotli.py delete mode 100644 python/click/__init__.py delete mode 100644 python/click/_bashcomplete.py delete mode 100644 python/click/_compat.py delete mode 100644 python/click/_termui_impl.py delete mode 100644 python/click/_textwrap.py delete mode 100644 python/click/_unicodefun.py delete mode 100644 python/click/_winconsole.py delete mode 100644 python/click/core.py delete mode 100644 python/click/decorators.py delete mode 100644 python/click/exceptions.py delete mode 100644 python/click/formatting.py delete mode 100644 python/click/globals.py delete mode 100644 python/click/parser.py delete mode 100644 python/click/termui.py delete mode 100644 python/click/testing.py delete mode 100644 python/click/types.py delete mode 100644 python/click/utils.py delete mode 100644 python/dateutil/__init__.py delete mode 100644 python/dateutil/_common.py delete mode 100644 python/dateutil/_version.py delete mode 100644 python/dateutil/easter.py delete mode 100644 python/dateutil/parser.py delete mode 100644 python/dateutil/relativedelta.py delete mode 100644 python/dateutil/rrule.py delete mode 100644 python/dateutil/tz/__init__.py delete mode 100644 python/dateutil/tz/_common.py delete mode 100644 python/dateutil/tz/tz.py delete mode 100644 python/dateutil/tz/win.py delete mode 100644 python/dateutil/tzwin.py delete mode 100644 python/dateutil/zoneinfo/__init__.py delete mode 100644 python/dateutil/zoneinfo/dateutil-zoneinfo.tar.gz delete mode 100644 python/dateutil/zoneinfo/rebuild.py delete mode 100644 python/defusedxml/ElementTree.py delete mode 100644 python/defusedxml/__init__.py delete mode 100644 python/defusedxml/cElementTree.py delete mode 100644 python/defusedxml/common.py delete mode 100644 python/defusedxml/expatbuilder.py delete mode 100644 python/defusedxml/expatreader.py delete mode 100644 python/defusedxml/lxml.py delete mode 100644 python/defusedxml/minidom.py delete mode 100644 python/defusedxml/pulldom.py delete mode 100644 python/defusedxml/sax.py delete mode 100644 python/defusedxml/xmlrpc.py delete mode 100644 python/flask/__init__.py delete mode 100644 python/flask/__main__.py delete mode 100644 python/flask/_compat.py delete mode 100644 python/flask/app.py delete mode 100644 python/flask/blueprints.py delete mode 100644 python/flask/cli.py delete mode 100644 python/flask/config.py delete mode 100644 python/flask/ctx.py delete mode 100644 python/flask/debughelpers.py delete mode 100644 python/flask/globals.py delete mode 100644 python/flask/helpers.py delete mode 100644 python/flask/json/__init__.py delete mode 100644 python/flask/json/tag.py delete mode 100644 python/flask/logging.py delete mode 100644 python/flask/sessions.py delete mode 100644 python/flask/signals.py delete mode 100644 python/flask/templating.py delete mode 100644 python/flask/testing.py delete mode 100644 python/flask/views.py delete mode 100644 python/flask/wrappers.py delete mode 100644 python/gevent/__greenlet_primitives.cp36-win32.pyd delete mode 100644 python/gevent/__greenlet_primitives.pxd delete mode 100644 python/gevent/__hub_local.cp36-win32.pyd delete mode 100644 python/gevent/__hub_local.pxd delete mode 100644 python/gevent/__hub_primitives.cp36-win32.pyd delete mode 100644 python/gevent/__hub_primitives.pxd delete mode 100644 python/gevent/__ident.cp36-win32.pyd delete mode 100644 python/gevent/__ident.pxd delete mode 100644 python/gevent/__imap.cp36-win32.pyd delete mode 100644 python/gevent/__imap.pxd delete mode 100644 python/gevent/__init__.py delete mode 100644 python/gevent/__semaphore.cp36-win32.pyd delete mode 100644 python/gevent/__semaphore.pxd delete mode 100644 python/gevent/__tracer.cp36-win32.pyd delete mode 100644 python/gevent/__tracer.pxd delete mode 100644 python/gevent/__waiter.cp36-win32.pyd delete mode 100644 python/gevent/__waiter.pxd delete mode 100644 python/gevent/_compat.py delete mode 100644 python/gevent/_config.py delete mode 100644 python/gevent/_event.cp36-win32.pyd delete mode 100644 python/gevent/_event.pxd delete mode 100644 python/gevent/_ffi/__init__.py delete mode 100644 python/gevent/_ffi/callback.py delete mode 100644 python/gevent/_ffi/loop.py delete mode 100644 python/gevent/_ffi/watcher.py delete mode 100644 python/gevent/_fileobjectcommon.py delete mode 100644 python/gevent/_fileobjectposix.py delete mode 100644 python/gevent/_greenlet.cp36-win32.pyd delete mode 100644 python/gevent/_greenlet.pxd delete mode 100644 python/gevent/_greenlet_primitives.c delete mode 100644 python/gevent/_greenlet_primitives.py delete mode 100644 python/gevent/_hub_local.c delete mode 100644 python/gevent/_hub_local.py delete mode 100644 python/gevent/_hub_primitives.c delete mode 100644 python/gevent/_hub_primitives.py delete mode 100644 python/gevent/_ident.c delete mode 100644 python/gevent/_ident.py delete mode 100644 python/gevent/_imap.c delete mode 100644 python/gevent/_imap.py delete mode 100644 python/gevent/_interfaces.py delete mode 100644 python/gevent/_local.cp36-win32.pyd delete mode 100644 python/gevent/_local.pxd delete mode 100644 python/gevent/_monitor.py delete mode 100644 python/gevent/_patcher.py delete mode 100644 python/gevent/_queue.cp36-win32.pyd delete mode 100644 python/gevent/_queue.pxd delete mode 100644 python/gevent/_semaphore.c delete mode 100644 python/gevent/_semaphore.py delete mode 100644 python/gevent/_socket2.py delete mode 100644 python/gevent/_socket3.py delete mode 100644 python/gevent/_socketcommon.py delete mode 100644 python/gevent/_ssl2.py delete mode 100644 python/gevent/_ssl3.py delete mode 100644 python/gevent/_sslgte279.py delete mode 100644 python/gevent/_tblib.py delete mode 100644 python/gevent/_threading.py delete mode 100644 python/gevent/_tracer.c delete mode 100644 python/gevent/_tracer.py delete mode 100644 python/gevent/_util.py delete mode 100644 python/gevent/_util_py2.py delete mode 100644 python/gevent/_waiter.c delete mode 100644 python/gevent/_waiter.py delete mode 100644 python/gevent/ares.py delete mode 100644 python/gevent/backdoor.py delete mode 100644 python/gevent/baseserver.py delete mode 100644 python/gevent/builtins.py delete mode 100644 python/gevent/core.py delete mode 100644 python/gevent/event.c delete mode 100644 python/gevent/event.py delete mode 100644 python/gevent/events.py delete mode 100644 python/gevent/exceptions.py delete mode 100644 python/gevent/fileobject.py delete mode 100644 python/gevent/greenlet.c delete mode 100644 python/gevent/greenlet.py delete mode 100644 python/gevent/hub.py delete mode 100644 python/gevent/libev/__init__.py delete mode 100644 python/gevent/libev/_corecffi_build.py delete mode 100644 python/gevent/libev/_corecffi_cdef.c delete mode 100644 python/gevent/libev/_corecffi_source.c delete mode 100644 python/gevent/libev/callbacks.c delete mode 100644 python/gevent/libev/callbacks.h delete mode 100644 python/gevent/libev/corecext.c delete mode 100644 python/gevent/libev/corecext.cp36-win32.pyd delete mode 100644 python/gevent/libev/corecext.h delete mode 100644 python/gevent/libev/corecext.pyx delete mode 100644 python/gevent/libev/corecffi.py delete mode 100644 python/gevent/libev/libev.h delete mode 100644 python/gevent/libev/libev.pxd delete mode 100644 python/gevent/libev/libev_vfd.h delete mode 100644 python/gevent/libev/stathelper.c delete mode 100644 python/gevent/libev/watcher.py delete mode 100644 python/gevent/libuv/__init__.py delete mode 100644 python/gevent/libuv/_corecffi.cp36-win32.pyd delete mode 100644 python/gevent/libuv/_corecffi_build.py delete mode 100644 python/gevent/libuv/_corecffi_cdef.c delete mode 100644 python/gevent/libuv/_corecffi_source.c delete mode 100644 python/gevent/libuv/loop.py delete mode 100644 python/gevent/libuv/watcher.py delete mode 100644 python/gevent/local.c delete mode 100644 python/gevent/local.py delete mode 100644 python/gevent/lock.py delete mode 100644 python/gevent/monkey.py delete mode 100644 python/gevent/os.py delete mode 100644 python/gevent/pool.py delete mode 100644 python/gevent/pywsgi.py delete mode 100644 python/gevent/queue.c delete mode 100644 python/gevent/queue.py delete mode 100644 python/gevent/resolver/__init__.py delete mode 100644 python/gevent/resolver/ares.py delete mode 100644 python/gevent/resolver/blocking.py delete mode 100644 python/gevent/resolver/cares.c delete mode 100644 python/gevent/resolver/cares.cp36-win32.pyd delete mode 100644 python/gevent/resolver/cares.pyx delete mode 100644 python/gevent/resolver/cares_ntop.h delete mode 100644 python/gevent/resolver/cares_pton.h delete mode 100644 python/gevent/resolver/dnshelper.c delete mode 100644 python/gevent/resolver/dnspython.py delete mode 100644 python/gevent/resolver/libcares.pxd delete mode 100644 python/gevent/resolver/thread.py delete mode 100644 python/gevent/resolver_ares.py delete mode 100644 python/gevent/resolver_thread.py delete mode 100644 python/gevent/select.py delete mode 100644 python/gevent/server.py delete mode 100644 python/gevent/signal.py delete mode 100644 python/gevent/socket.py delete mode 100644 python/gevent/ssl.py delete mode 100644 python/gevent/subprocess.py delete mode 100644 python/gevent/thread.py delete mode 100644 python/gevent/threading.py delete mode 100644 python/gevent/threadpool.py delete mode 100644 python/gevent/time.py delete mode 100644 python/gevent/timeout.py delete mode 100644 python/gevent/util.py delete mode 100644 python/gevent/win32util.py delete mode 100644 python/greenlet.cp36-win32.pyd delete mode 100644 python/itsdangerous/__init__.py delete mode 100644 python/itsdangerous/_compat.py delete mode 100644 python/itsdangerous/_json.py delete mode 100644 python/itsdangerous/encoding.py delete mode 100644 python/itsdangerous/exc.py delete mode 100644 python/itsdangerous/jws.py delete mode 100644 python/itsdangerous/serializer.py delete mode 100644 python/itsdangerous/signer.py delete mode 100644 python/itsdangerous/timed.py delete mode 100644 python/itsdangerous/url_safe.py delete mode 100644 python/jinja2/__init__.py delete mode 100644 python/jinja2/_compat.py delete mode 100644 python/jinja2/_identifier.py delete mode 100644 python/jinja2/asyncfilters.py delete mode 100644 python/jinja2/asyncsupport.py delete mode 100644 python/jinja2/bccache.py delete mode 100644 python/jinja2/compiler.py delete mode 100644 python/jinja2/constants.py delete mode 100644 python/jinja2/debug.py delete mode 100644 python/jinja2/defaults.py delete mode 100644 python/jinja2/environment.py delete mode 100644 python/jinja2/exceptions.py delete mode 100644 python/jinja2/ext.py delete mode 100644 python/jinja2/filters.py delete mode 100644 python/jinja2/idtracking.py delete mode 100644 python/jinja2/lexer.py delete mode 100644 python/jinja2/loaders.py delete mode 100644 python/jinja2/meta.py delete mode 100644 python/jinja2/nativetypes.py delete mode 100644 python/jinja2/nodes.py delete mode 100644 python/jinja2/optimizer.py delete mode 100644 python/jinja2/parser.py delete mode 100644 python/jinja2/runtime.py delete mode 100644 python/jinja2/sandbox.py delete mode 100644 python/jinja2/tests.py delete mode 100644 python/jinja2/utils.py delete mode 100644 python/jinja2/visitor.py delete mode 100644 python/markupsafe/__init__.py delete mode 100644 python/markupsafe/_compat.py delete mode 100644 python/markupsafe/_constants.py delete mode 100644 python/markupsafe/_native.py delete mode 100644 python/markupsafe/_speedups.c delete mode 100644 python/msvcp140.dll delete mode 100644 python/pyexpat.pyd delete mode 100644 python/python.exe delete mode 100644 python/python3.dll delete mode 100644 python/python36._pth delete mode 100644 python/python36.dll delete mode 100644 python/python36.zip delete mode 100644 python/pythonw.exe delete mode 100644 python/select.pyd delete mode 100644 python/six.py delete mode 100644 python/socks.py delete mode 100644 python/sockshandler.py delete mode 100644 python/sqlite3.dll delete mode 100644 python/unicodedata.pyd delete mode 100644 python/urllib3/__init__.py delete mode 100644 python/urllib3/_collections.py delete mode 100644 python/urllib3/connection.py delete mode 100644 python/urllib3/connectionpool.py delete mode 100644 python/urllib3/contrib/__init__.py delete mode 100644 python/urllib3/contrib/_appengine_environ.py delete mode 100644 python/urllib3/contrib/_securetransport/__init__.py delete mode 100644 python/urllib3/contrib/_securetransport/bindings.py delete mode 100644 python/urllib3/contrib/_securetransport/low_level.py delete mode 100644 python/urllib3/contrib/appengine.py delete mode 100644 python/urllib3/contrib/ntlmpool.py delete mode 100644 python/urllib3/contrib/pyopenssl.py delete mode 100644 python/urllib3/contrib/securetransport.py delete mode 100644 python/urllib3/contrib/socks.py delete mode 100644 python/urllib3/exceptions.py delete mode 100644 python/urllib3/fields.py delete mode 100644 python/urllib3/filepost.py delete mode 100644 python/urllib3/packages/__init__.py delete mode 100644 python/urllib3/packages/backports/__init__.py delete mode 100644 python/urllib3/packages/backports/makefile.py delete mode 100644 python/urllib3/packages/six.py delete mode 100644 python/urllib3/packages/ssl_match_hostname/__init__.py delete mode 100644 python/urllib3/packages/ssl_match_hostname/_implementation.py delete mode 100644 python/urllib3/poolmanager.py delete mode 100644 python/urllib3/request.py delete mode 100644 python/urllib3/response.py delete mode 100644 python/urllib3/util/__init__.py delete mode 100644 python/urllib3/util/connection.py delete mode 100644 python/urllib3/util/queue.py delete mode 100644 python/urllib3/util/request.py delete mode 100644 python/urllib3/util/response.py delete mode 100644 python/urllib3/util/retry.py delete mode 100644 python/urllib3/util/ssl_.py delete mode 100644 python/urllib3/util/timeout.py delete mode 100644 python/urllib3/util/url.py delete mode 100644 python/urllib3/util/wait.py delete mode 100644 python/vcruntime140.dll delete mode 100644 python/werkzeug/__init__.py delete mode 100644 python/werkzeug/_compat.py delete mode 100644 python/werkzeug/_internal.py delete mode 100644 python/werkzeug/_reloader.py delete mode 100644 python/werkzeug/contrib/__init__.py delete mode 100644 python/werkzeug/contrib/atom.py delete mode 100644 python/werkzeug/contrib/cache.py delete mode 100644 python/werkzeug/contrib/fixers.py delete mode 100644 python/werkzeug/contrib/iterio.py delete mode 100644 python/werkzeug/contrib/lint.py delete mode 100644 python/werkzeug/contrib/profiler.py delete mode 100644 python/werkzeug/contrib/securecookie.py delete mode 100644 python/werkzeug/contrib/sessions.py delete mode 100644 python/werkzeug/contrib/wrappers.py delete mode 100644 python/werkzeug/datastructures.py delete mode 100644 python/werkzeug/exceptions.py delete mode 100644 python/werkzeug/filesystem.py delete mode 100644 python/werkzeug/formparser.py delete mode 100644 python/werkzeug/http.py delete mode 100644 python/werkzeug/local.py delete mode 100644 python/werkzeug/middleware/__init__.py delete mode 100644 python/werkzeug/middleware/dispatcher.py delete mode 100644 python/werkzeug/middleware/http_proxy.py delete mode 100644 python/werkzeug/middleware/lint.py delete mode 100644 python/werkzeug/middleware/profiler.py delete mode 100644 python/werkzeug/middleware/proxy_fix.py delete mode 100644 python/werkzeug/middleware/shared_data.py delete mode 100644 python/werkzeug/posixemulation.py delete mode 100644 python/werkzeug/routing.py delete mode 100644 python/werkzeug/security.py delete mode 100644 python/werkzeug/serving.py delete mode 100644 python/werkzeug/test.py delete mode 100644 python/werkzeug/testapp.py delete mode 100644 python/werkzeug/urls.py delete mode 100644 python/werkzeug/useragents.py delete mode 100644 python/werkzeug/utils.py delete mode 100644 python/werkzeug/wrappers/__init__.py delete mode 100644 python/werkzeug/wrappers/accept.py delete mode 100644 python/werkzeug/wrappers/auth.py delete mode 100644 python/werkzeug/wrappers/base_request.py delete mode 100644 python/werkzeug/wrappers/base_response.py delete mode 100644 python/werkzeug/wrappers/common_descriptors.py delete mode 100644 python/werkzeug/wrappers/etag.py delete mode 100644 python/werkzeug/wrappers/json.py delete mode 100644 python/werkzeug/wrappers/request.py delete mode 100644 python/werkzeug/wrappers/response.py delete mode 100644 python/werkzeug/wrappers/user_agent.py delete mode 100644 python/werkzeug/wsgi.py delete mode 100644 python/winsound.pyd create mode 100644 requirements.txt diff --git a/.gitignore b/.gitignore index b923852..149afa3 100644 --- a/.gitignore +++ b/.gitignore @@ -2,5 +2,8 @@ __pycache__/ *$py.class debug/ data/ +python/ banned_addresses.txt settings.txt + +*venv* diff --git a/python/_asyncio.pyd b/python/_asyncio.pyd deleted file mode 100644 index 83a447c1dce0f2bf4ffe4bf9b93984f4c481e4b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45720 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 Rcu=3`NrRPCpiQs%cK}uqy^R0> diff --git a/python/_brotli.cp36-win32.pyd b/python/_brotli.cp36-win32.pyd deleted file mode 100644 index 54f1e0caa5606f58e6d196ff3fcac957d2dcbac0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 757760 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�dz!8~gZ5eRWLutLp?a>VA{gMGY2 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

R-&18C#DMVI_r;`(;G$=V! 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%0A3gO*g_NEmvA! z0kjyFaHuKDb2wAr`pj0l(?nZn4RN@J>l7ZQYWs=GKx{8wlOa_g+(vYu@fC*t=v};) zLb&k3Z#c1|O1X*+@rOg8zw3v{gksXZRJI4OBAoc2;}ku;6MEdBhDV|ziQj+V-6}dJ zd2fHsjxS#LKB|^Y1`vPEE2Lg4FfJ(e7L^B~eTBYoF1XKASL9%uUJPobc`g-Xt5*d6 z#iEG9_9zfatmzd4aoeS`r*GSpMT;-3_66D`5yI_GYPvl&sv6`Zlnmg}SDilR^lDW% zHDMAnAAU6Q{>8>-3^zz&*>XM!5m;M7ow8l_+R`4h4qFdTUjgY>L{R(1SkYxI5Con2 zXq>}BzYr@W=7Vc{0T~h{Kj+AfY|v5ZS0h8)WwQ;Q-XX(q*wiipnO%M2uO>mogy~Ye zsNG88=~#8Co2RsB@j#4dUW`q*Aj@zm-f{@9@}*7`m>ZtM^Ff`NB8PStpTHM|P6F1k zLCZO83B`M2LNKrSVyKkifa2FNbf;1mk#naIhLCT^QH-$^4y$Bem<>q$c>2 z0>4@L+C~h(*n+URrBi)=P`{kQ9?vb6z=9g(aCf!NHh%1L)4V(w@Z49$>F*TsP?^># zJulv926xX}9`46<$#uvjkTr8ok>9ku*IBxT64emy^|JT_9*cC`g5?}N2?h_?T!MYy z?L47)^{+g~R~`8COn+oTHEy}0e(9p6b_E9>8LW-!H%+QggTCyJX&t@rWULBCTe4jQ z=elg~)Y8Jc0>T@e34Q6%Z3Gp_@#lwEIE<4#&*WYL;u4o8Wbu< z)ZNVvs#O2z4)daTf}4gk3+}CU!lY_+QKHjuE}F&rlgN{Ggtc=$?Ak0EVOw-XK6P$> z8BFKHD619?4x7s8pWxx>Gi`pBqKiW(^UN2Yy#+c;_%6dsU3{VCJ7uMJ?t(@Wp5CHC z#n-u@-?ds`5b=IUZLDaEC3UM~w%=l-UpG^iXQuHK`L3US*Gy9vzwga_i<10+ z!|Hh@RnZJXPyKnEf7kliKVUV_qU)6}+o?A@zCwsR$ot9{=EQ^FzB}WnAHKU|zo-Vf zXrrzF`ZHg!@x|L;w8HrEp*2;j30sY`_^U=$SX5y$t@3 z4BIiDpyu^EXxbK2I5O{BnPL33mS{;GnSretdB7Xt#82ISFW+0ne+#wIMryExxwK^b{P<<4 zcff)OC^2i|r)3;*@HE`<&H8vR81C`c_uSB|qL6V%fxuUXG_B$?ls8gDd|v|G@m)c1 zuFxYtC_^NQJ9r=-g*bRqpz|a5WWNky_g6-EnAogJeE4H%i6Nh`%i})08W0TyW#3ND zQJ9E>J19wbdgyDSI^lH?2aNDAK{Oz)A5hc$Xw`!IgnEzQuVSIDDL_yorz|5PyEhHe zvd@>~035i`5O9va$P8XzD;V5Aa1&*POXLu_LQZh09v8q=Qvo`fy0W|4E0I@O{~44d z9(${EV?bne3PKSftNQM~ON?@9_7DN7pdR|=3`V>T-b

)a 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 diff --git a/python/_lzma.pyd b/python/_lzma.pyd deleted file mode 100644 index 5bd7a87176ecef11ae8eb2061c48e93fda2066c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 183960 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 diff --git a/python/_msi.pyd b/python/_msi.pyd deleted file mode 100644 index 8687edafc4eb401326821f8214e5cedb126b5765..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33432 zcmeHw3tUvyxBnR!5CsJl6d&k_VE6#eJQ!wpBaDKAj68jyI5Gn>$jf;M_$UNXaU{*G zv@9_#ADO9XnOb7_!17gDT3S(=j*pCtl**j{cb{_x1~cn-@BiNW|NQUo*nY3Q_S$Q& zwf5fYoT20?D=9~cqWB0_D@E-?N}d=destu)qo^K(_xGUobUig>A1~?DkaVriASl(B z<m**Mf?QQ`afwkdQzOuuiUqo2L3~P@pr}Nx3F_Xxn;(ZdWY-(>XP-SBYzyUEQiJEA zJnqScAOn-WA5_YuM}pY;qd{{~{*G%;+u6XBXP<2d9>CO}VBo)d@-UZ11(W{YJ=w^V zQ+2soGS*+sOsSx#B%U+%-EX3)HkfA0VTdcQ2StrSO$1xJo#Z_bVo14<50iJGC}&c{ zV@s)e6u?|TDvxrYV!$zUBK_J^wn(Q^R03+tk@5jWRieHdQrn}Ys5SjjSV>WrohV8< zfuhoFZ4XJepgqRE9)$}8?_WGYMoqa9ZR!z-2z_LJL@4YY0Y%LS(yLWQ6-D_DL_-Y1 zAOsr0?ukK55DP|~bV0)m1i}!|WdFoaR6|gHo=$C`D1weEMF0;UoLCIOr#I+x(Zuki z5*asyOa!|phJn)*mH?3Oi13OTccvW>vN04jx^vC{-cpA7X7x?)4g48>e8fj<75C~C zH<eZ|bxa?h$Pck(CjSk_*gig5x6yrkthCi@6AINwT*M9L<a^>%mV|y3W&VCzW1YgH zWP28(XLVZ-^xH}Lje2-L53Zj%!(#p*vu?ISo|#vD*dec`!Su_>(;xjhG1cm|g&oS= zLXca%v_OnO&Bw&2rd!T>v*VsT3Hqm5{nw%KB=cDP*R<zJ1=`IDw@j<aqkAP*S!p%7 zSiPDFu9oT}Zq@g#CU*?Q;Py0on2*)=oIb6QMa9JEpM}m=lN;0XCV^~2&+r8v#!fwt z*Y?ao&j;Wy{{wgs2bwG#P5hcW9f;ljL=y0m$=K+*#P#~inXvG{zw)2q7dP0?p5b4n zHUX=sO(IL_)k4smg$UGqY>YF1P&b>mj2FA8!Sw6M)8WZ(3x=6ZF6IwL-d@J5OXMw$ z?_ovL&sa>dDAh;!`-lYsgF9-(4S(XdS>ajJV3fDdQagzZ@2TqJ12HIsRG6Epk9gOd zFgaB>S*JBt^S}&qEPtXo#@h<Y_~Hh;6~z3_3Xhrw_eFIWIy1|>z{OhTsVyWZT{Imi zAq^ficT8P!fD;s%$MEmQ5c}$43bvNIZ73zeTuL|qC0NHurdzc$8F&mo(>8DpGZ`&~ zNoHETjxbPsW!(~ARDkq0h6ip84{|UDLnr8~zM0UWe;_u^Jk5<Ew1Co9f`kIc0;+%q z`%hKYDvp3VS+$A=t5*`cp!coDK6Q#FB}U9f4K!!~vPxugreiKsSw&s%WmD9BP}EDH zCLIt~(~&yGzBH635oE~?W<^tV^JAHLwLBJuwh{znaSD@sk7)j>oas|7N)8<(9}92B z;{;(p1-H7oBloP<iFI{NB+=G`aTr9)a0H8Ce9T-!0L(EQmmOd)7#8p3Sp0yUY4&8v zH!}#u4QZLjYfb_Io+re2j@O(;K4!E#W&Y@R%_Zc)E9!X7h4$RJ_FOY^L<o=9T;_6l zwKX@9U0QPs@iJc4q6TAxInoG*)T#Zbh-@Q2BG}|)zCH4%F{#$`=CjKj0O7(?a-(_S zeX`u{)j8O=*t)ui9_I6PQ+RbR5Gs~AjApdslZC&rfKmX~+<9D@IkB$h)_tp0X*usl zQFV2<{;*n)Eeau36zt2$GhF{Jbx%N%<cuQS2+G^g3=Y*jL!d!8fgbr${kN!FTGN8U zN>1^*G4KUc9m6K2R?rLb+uRe;P7+m;NJ%0AiJCnSoh4BNqB=#3)&uZZF^Y%<%$=mh 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 diff --git a/python/_multiprocessing.pyd b/python/_multiprocessing.pyd deleted file mode 100644 index 1c79fb0f2b5b2686928201f43c52975410518bf5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25752 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 diff --git a/python/_overlapped.pyd b/python/_overlapped.pyd deleted file mode 100644 index d3f2f86905c8cc80f9c4728881b030c8ef2784c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34456 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%0A!(@nL(r z@|XtxD=yUxE4-sGU-0aEi+>HhRJ+F3G&M3x>;7i-uhqXPNA(Z<Vw`UDz5#hN8kYDq zuuEL8A!RqXy6{|Fd>?<N?Y9LVrBDBU;`0@!-EYN`G3_hmxnVtvEkZB0x4Y|9zWV@| z83{svb^s}O4Dik-aWTB|NmP|<gnn#)0`4`yE6HrgSK&Lhk`fKY4p7el?wMLug-IhE z#ttFPyaxDj070V0K;Ch3p(o)8b{MI49Wc;dP2Q^_U|3p?u!bNpfgS!pAE8Jn5(!y) z&3K>>Vih7WD-z>C9zBDd?X=jb8II{Z2l!=FAz+9TJ>Ie!5Y(bSw8J3b+;k6hRg(z? zcs;<)n4vMu)gfw!sRdzzM@8%sUZ699uwkxCcs|%*o~O$a9*=or`&%iQ6Q3R0-}6jx z)zg95qsz|k9(6F$IOo8=aOI5O{0_`rnaB%H+|~GvqQm;`{ASa!z%O>KVO)Mr`^Uar z?<NJ!Ii9PC{Uqr`Vt?ZUODwuwWB&Hs@a={nqtYH5@rLliZ<AFn8Lw@-krL`wsd#m4 z-HGp>`|kFNZ?eb9KU#f$Lg#$(#VXI=+Re)oHrNiiPJV9N7bP!0qkBU0a82!jJimi2 zM`HcXHZ5)+(Z}@n)q#IG`txt51rJ^RdBTuIo10$>+wtW0uU+2u(7=VNpVvRuZ|^tC z#)+3^{d%eI=Fpe7X#}Uvth2T(cr|@|l5Nm8NxfEkeW6`iJ*&7<tvH^S{CMX60SgXQ z{di>mV=mxM-p0khvWtJFTRE&Re<0s4_xT(8oMXpK&!4`q@P~2duBKLpUtmS<9$<7g zw_ZFRe-s<U20F?(X%DoAsLBeA<>4mEIwUwnd2HAK9?!=2VBK-U|JR2dhb<g7f-hwy zY(#^ofn64E?_6Lgaq2sk<0xl_N=yhx8_Lhag8AO8r(*@K9&BGSst=io4>@sXLrA$F z|3P-dCh)Lu5TueasxKLk@=KVAjgW>>nRJpL*Tst&*WNFzs`_EkbavYh+P8oGw)e32 zCoOTG6_xwil$QtAe?N3}?<D<=(za;}SnDsk`jJMj{$-DD-4WfdbMzZ8>>S*@vTgc0 z=JgZaX>XnszUGlLdfu&X<_*hE-J%J&QWc*cyiR}ka8z;4gB~jrzQ6Eg_PAjcDNl?Z z=sx>3X>nlxjgtq}JpK;5guf9IZ?Q{!-;X<_Ew}eY>iK7i*AE%2bY^HG@&D5@#K|x# zl=hHexI1<k&i|KW7-3^>C&v7l3}=v!#tlS{BmPv5Un%g4PTKwc$jwP9@AtJewyQid zp4qwn-0Pt}6AtNZ%VZf-ef&@G$Bp@Y>$-JceyFPQnt3F3+1yL5i4z0YUOO-*asSI_ zw7XWuPr6ns-P7;T$m{B9?f#;&^z6nR%Qv}vF?#s%iC<qR`0Rl?(afE*pPRAe#SmrR z2d=F<r;1ff9`<qnEU(p%-ulaqn}za6x0f5fTm4<`ao;@$Yt(B7eGpvzwe{1$S5Lm@ zGOw}XnVFjAYY&+ACM+9$-XnFz>J?9iy;PAjLi_m^Q^mQyGewpxi}-^t3tCcMj5&1Z zd$HH2KW-e-VfpaOx3Vp<f9G$W7x-q-j_||fhdxZN8RhYt*9TiCJ?HVYZ-`;raZZkx z@UlUv4Az@4KNUL{1hNK_QZNyXKM<K-)vVDWP7v@SR>O{Vlp)~5?J{aIhEW->FoqlL z8k!1vR99P<Wn;SAs&uOGJDQF)8I55Ds<0wac!9>i%E;nI@FQ6<D{L6s5a!&QD1<-g z4OQ^ZO1a2Mxg~$3+t_!4-|){;&rT_LVBBoU-aePv5o8%7`2p;}>U(Ryo>mq{gvV6I z?s|GOliI#2pN*>Axb&f3WdU#gJ@|aX={2s~mZb;3{CvFY&<iKNt@_)8TKBW>h<26k z>j)iHAikKQF70!<xv1~YZkr-Y7Ss*==*pX4y?Nz=;G@TUj;}SHe<$bfA4H8vth`+L z_VEzDVB@wQCmvk>@Y8*(Kk0YtLe5<Mq}hEH$qD*CJHMAc|3=K&-jDg-8d|lhdj57@ z$L|~7@g6wl$3-)H%U_uJ&A_7r79)}<?X%_KRiR(M*)d})@2~zFLdT{IIT!eT^X<wt zlbe^lv1IwIcKNQ!jaA|?;q&*L7xW(RSX=R+nIBtUWwS%;QpWB1c+ru4ae>-`jORbl znYJGqCR?<+wR!K*Gki0<#O)%~)G@o7stinQ%=jwAbHuM-=bQ{lUFNK&yr8BQI;n}2 zRN+9@4>X6X(FfYtV8UwvL8?g|E*!%?OyFJv0yD_VJ&hnqSEMuHv$Sr{0|p<e0Un0% zVfG=?*mVGL0k}cBn~|?f63qCm0eM46J&{QGA`-Y^EE@?=1RU30WX=EF^6WEu{rQZ- zk?e!q;s$pw4nKuA3dHsg%7}yXXAa7ll3<CSI;ZNmYQ4+LZfhs+ZHX^Dnw>3rM$<6$ z{R8v9`s?jWQ$s{WmkY)o_(9XO|8m7Y(l)*N!QWFozR9|wOBDpEckbGE_SfjL_L3M; z=tZA`_RQBmx%roG<|KXcrT(%y>bEU3U!Id!U-sISt)W|FukCbUcxA`^8nz$Zd1=e3 z=iiIG_;``7^dCW0&p)|<ZND1Rt0=_h#<eH4(H*b;t#RI{K65VKHf)`feX#xS9~B<E z^~S!=*T;uEeZK6?jh`Ovv%%lLqu}=0_)-1h8$UVNe0t}Luh%N-bgr3S)?7F_KK}3T zH-4KoB0lKHrq-4HlZSYWU43nkM)khmjoO7<!}C{<)vaQJE9QOSP;7;uRQ_F7o{DWS z5nG4;adqwTzU4gLJsl8Yf1q-}XzW7`!3`sqJ?P|s7zrO4jV1Kmnz7JWprSrUp<{gL z#u@B1Hpo$iZVa$@r;5?JKg)Kta#<E+Z$(t1bEC1)f+piwI*-XoO%=|2>G%fYvSMAs zj$c>2AF#^f>Sz2OYAW69hryfTXTJJ??g{p2gf{VH!j9{lb0y%MD|i0XVFHE??N;P2 zynzlyUQtoea~b7jcwts`htRq%fyd@GqN07%JC|3x-FWmzlkwHO!S6P%-|=4cb3g80 zcly_nSB@6AE%9Lfy5`t}(HWmjUa#dfwcgD5a9Y3hAAGr^-*+$naB5`Qv7#}RvuCb- zVZz4uQzIVz`r)eNM~@sj6|%!T<Uqj(zx@9G<jrroJQJTWd)|w>Uv5W)cMP_acs;_@ zef`kbEw!HC{iAkN$L^L>I~G5?F)CDg>D;p!!8@KB*f^x<r2nD!j=b>K6_0&=ZF7?) z@A|%+82@i(4?Shu)j7@V@?L5G8nNx5ch0i~wm13}E>4PX9@%tr=-RS}j+&Td%HmVU z-5;FKJF_ZfZ9;)Zw)?)KtLOV}pFWy5<nVLfjWPF8jpVPG@@e?q`ID8aUwQeJO4Hh! zmwtM8-Sne7`ki^{h20ap4_KomA%$07n|t=4P58~5v+8w0PtKgS(DK($SL~f4^cnWl z*mYZypRbVo<+-s_kN0`I()Hr<tpko3O6RrQtf<;O;p5uj!zXlxKN>zm(iZ-J?VP!3 z;TmnK*gQ8e@RMpL`-#T~>~Ehs;d<N4{I9o!#k{*?bKQbBw)p&hebkHXKgSR2*mT4< zl|8RM`Sz54QAcjgoI2{mx(^DzdW8Sjyh)bpC$=}=JlFdCui@oO9+50rR()v4LYH|R zd3}!#W7nPY>#(LiCwtR%<rwA9&lOZJee=eU5BGSFi#U4zi{Ce{%;{VH_?iKeL_=(w zR^^y)Y}hpI2)o362z0%xUC-+_dnPRRnX^wD7ghNA=F1&-u*|<pkrFRe!isRJVDYsB z(eJ`&ry{$+Nx$QyNzU=G93I~8lkf#%nO@kR^(BB_-n}2u;CGe=6JT}??&&>PNq@5@ z$iP=E^v!%S`BsoSlseS>A2ni^xZHgXbs^_a7o0;OW1HSu-|`ptHA&M346IH(^=i#A zuNB4D7M=NO(1*$Ii2R2yyPW&9qIdMWUt|^TK3tjavO6cO_P}75E9q4mba9hS`)3rn zUwmny<jG+(zgoSsAv$~WiR-mt1=pjpFD=w>O#j^@t8~{}f0;M^Z{NnhIp~KaU&mbg zrEW;u-ln9IVG~Zhzkc4fC-Szn%-FJE%$YH_v!=8rG(=~#wLS6f%NKZt{cbI>Zu5pr z{zuZRfvyGY=#>HIHqL!<@XD)a^&d?5y+(X?<R?v)59b`atyuE&D>I(R%Ql^Ryw}U? zYcCA0?H{@#q)ED9llt@A2m3q}Kecqw+asp@<I>h!$rB@D&c@qvN^UjHUz1*6z9vp7 zK6Atzaw@v@%ZR-BZ`^*_|3=#2hdVO8_BXa}I;2{Z(C=00EB!5>v6(`j*snIf=oT5$ zsC#hLTciG#Q#zGxPwiiL=wfE3VbtoJQOBNLAK1C?jrTtPVo71IyubZ&VomOl{SQ4h z%DT|yyGgr3Uh^2+Ic9SGsZU+CpZoRxpyJu2cV8FQzOcJ_!$kQd?Sp5&i~8*F7gOu2 zOTH}{`r)<Y3DO~zXJ6gM4_;s4zr^*YYH`k&PX)~SK6<}bFa4$g2bW(Q*IGEfjJMxK z*HQQWUyZVkXGVS+I6UaVZEoJeXJVUPY8{brI_1!a{+G{vmvj1WqQI1cPp^8dWB19M z!_TXqetYAQ?;kJiH8hR=kmoRSFTu<`-_y*&GyhXFN8&xh2JnfuPXaRBDgNAw3FS?j zCta4@daQQ4V$qYTH&0IPVL|R`VoDu03zkmB=KhnG?q2@?eJmX{sra;548v+-C1klH z_+!~Hc1**=4G%2~zOOOHp@DpoO!}3uBT2vh{GsgNF8h0zNn@3yk$|7VKFWHyyB96? zMx2g~b@!qHyTxxu@m%=-P4kFjz>#X7b;@mJ-@hq6GqhEDvpubBer50zF|Ma~Wb~`> zd)j-(?fws+Y(1ExtL`g&J?5ah>_y?L%IhP~y<Nc$&Fq(QaN6uIpG}HC@%l^8o$y{4 z_T_-0eCd?kqo#lS?zTOTZ_6EZd-XFZ<#}~+y#}(S2ew|AI$>LD;mBuJPms;sB^zIS zWmdrAqmk=Jtq!W2+)<%Q*ws3;OmSq0kKXlM4zFCiF71WI>(4d`n4Q;NUb{<ixjs>r z9T!mfNOh@sOZ`NV#hlrpP46{(<(gS-7eashYQS@ab8l_*+IEpiStV~!MJ}D1!e6{c zzPj9RUh%-e@0>r)d#U0j^OH3<QjdL+=lk0uKMh&;c!F?=TQ1DQOc%IYi|hVP>fgop zUS`QDPTR0}Jv*o?Qrg>9=-uTfB5unLbt-uY`{D%M9o6+`L!C<A!r|=DhQat2wC9&6 zUEe6MW4ou}3j_IrhZiYwp3aC1n-Koh2Rm}s4_FlP`THNeRr&t2y<1+0d!#+Z*?=NI z$zS5aNN=zmMeOcb7XrVod*s@lsG2QXuO5lmF({!pJ#a=?_-=i#QOl&ypI>sYX+-#- zj(p9;LD|E<e#bn`f9s66<sRb#cAZUrbLGLarA@Bk!|T4jy7iZUx4!Xt=)9udd(fAj z#r?`BogAWnQs#bg?LpI3b@aJcUwirYFF*QhbyPy~yA#$b#(fytHaa(FRdSti3;Xn^ ze?4CK<J$ZW-`;!6Bkq?c6332-T<}gY`_??aXH<zP)1TgYs@Kyl1-?a7O204l?fuib z#_LPIy67r-{fCKZf#3b*a{cI)%%$%yjU6Z-TzKV|&!37}BrIAbIC%L;+qKh=E?jv! zf9vR=a}~=<^Oub38!Mao;)90Q$9gm|3lB;zXx^LB`_P8NtMaNP@`NFW@>O3-xBMWV zb?(tmRt<i<YN^-g7ksaNP`!K=uc~q07?-0Trc``&VwSOa?dZ?0Z4|`1E}8Y~L(Bkn zURcoY9iQ*s_?RVci}<CSulK*7cBXh^@_V!M4p;OVu<^TZGwVht7JWEy(Fw0<?#!x} zjW<@;?)^Mvbi4mMr`C<DF^U)dFy{KXWzYTincEay+1u5r=SS7>j$dE4XH#8z^Xm6s z$vztM+$xU?{S)KP9sXTs)5ULo@1p|=w~wX|+A;5~=Wlry@y2_s-~2b@+BJhR-QRmh z{bWm$?3I)^_P*G*Ye;mKQSW+T?uW~s44t!ZM$XN*T*}L;{XAc2T;k#d-=J4FC%Frk z@H$}}I*6DV{-<MpF1~jK9ecaGjp^&^GT4o2n8gNkFU(cw)m7-lgCIHHM)Y<Q`oIZ8 zoL3Zumv~Y(Vg|H!S1n(NK=YXo_YDa>CT2gKQq9}3=jx{8og?LUi35*`erx`$$;Y-y zUt18K7rg2pqDA`0$`=$Sr)IvldEc^qKPq2{nGhd-Ze2f-$L-vs5sf<&f?9o=L$7D~ z_`kC5#Z?R5$c&yn<*(NmuY}WQYo6`ftg;<DB`V#t_XXF>6;CE)`0E?bXphF^?0kG+ z=b1|%KL6TJE(>?<d@;lICx5@S8QW8fr}eIVbuhc(`uN_rwmx=98QS<`WI~d6OW|MA zzk8%_(JS-4_RK69*k{Gc;qv2S;>VN;rrez2=FeC5dwa+0PtRD|aKvrXv4|kyo^w%C zS3dT{nJH6N9>~+kJx<Qpb4ojQ&i1VnUSJRI`QSYN>iphW-XAxuEsNRu)i&1^&z{VT NTJYY|s#P0D{6A9h&oux5 diff --git a/python/_socket.pyd b/python/_socket.pyd deleted file mode 100644 index b4c013c979a3b0ab4a28958e68d29bcec962419f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63640 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 diff --git a/python/_sqlite3.pyd b/python/_sqlite3.pyd deleted file mode 100644 index 620b03a1d5512dc2e5a85ddd9fa13c60f1efc911..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64664 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 OxV7)unBMfkXa5KLLY|!f diff --git a/python/_ssl.pyd b/python/_ssl.pyd deleted file mode 100644 index 52c435cd463bf642286b43dfe6eab4e4c3b04806..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1459352 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 z%0D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%0D4L5ohd^UnQT7Gm7Nb%je>Z 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 diff --git a/python/atoma/__init__.py b/python/atoma/__init__.py deleted file mode 100644 index 0768081..0000000 --- a/python/atoma/__init__.py +++ /dev/null @@ -1,12 +0,0 @@ -from .atom import parse_atom_file, parse_atom_bytes -from .rss import parse_rss_file, parse_rss_bytes -from .json_feed import ( - parse_json_feed, parse_json_feed_file, parse_json_feed_bytes -) -from .opml import parse_opml_file, parse_opml_bytes -from .exceptions import ( - FeedParseError, FeedDocumentError, FeedXMLError, FeedJSONError -) -from .const import VERSION - -__version__ = VERSION diff --git a/python/atoma/atom.py b/python/atoma/atom.py deleted file mode 100644 index d4e676c..0000000 --- a/python/atoma/atom.py +++ /dev/null @@ -1,284 +0,0 @@ -from datetime import datetime -import enum -from io import BytesIO -from typing import Optional, List -from xml.etree.ElementTree import Element - -import attr - -from .utils import ( - parse_xml, get_child, get_text, get_datetime, FeedParseError, ns -) - - -class AtomTextType(enum.Enum): - text = "text" - html = "html" - xhtml = "xhtml" - - -@attr.s -class AtomTextConstruct: - text_type: str = attr.ib() - lang: Optional[str] = attr.ib() - value: str = attr.ib() - - -@attr.s -class AtomEntry: - title: AtomTextConstruct = attr.ib() - id_: str = attr.ib() - - # Should be mandatory but many feeds use published instead - updated: Optional[datetime] = attr.ib() - - authors: List['AtomPerson'] = attr.ib() - contributors: List['AtomPerson'] = attr.ib() - links: List['AtomLink'] = attr.ib() - categories: List['AtomCategory'] = attr.ib() - published: Optional[datetime] = attr.ib() - rights: Optional[AtomTextConstruct] = attr.ib() - summary: Optional[AtomTextConstruct] = attr.ib() - content: Optional[AtomTextConstruct] = attr.ib() - source: Optional['AtomFeed'] = attr.ib() - - -@attr.s -class AtomFeed: - title: Optional[AtomTextConstruct] = attr.ib() - id_: str = attr.ib() - - # Should be mandatory but many feeds do not include it - updated: Optional[datetime] = attr.ib() - - authors: List['AtomPerson'] = attr.ib() - contributors: List['AtomPerson'] = attr.ib() - links: List['AtomLink'] = attr.ib() - categories: List['AtomCategory'] = attr.ib() - generator: Optional['AtomGenerator'] = attr.ib() - subtitle: Optional[AtomTextConstruct] = attr.ib() - rights: Optional[AtomTextConstruct] = attr.ib() - icon: Optional[str] = attr.ib() - logo: Optional[str] = attr.ib() - - entries: List[AtomEntry] = attr.ib() - - -@attr.s -class AtomPerson: - name: str = attr.ib() - uri: Optional[str] = attr.ib() - email: Optional[str] = attr.ib() - - -@attr.s -class AtomLink: - href: str = attr.ib() - rel: Optional[str] = attr.ib() - type_: Optional[str] = attr.ib() - hreflang: Optional[str] = attr.ib() - title: Optional[str] = attr.ib() - length: Optional[int] = attr.ib() - - -@attr.s -class AtomCategory: - term: str = attr.ib() - scheme: Optional[str] = attr.ib() - label: Optional[str] = attr.ib() - - -@attr.s -class AtomGenerator: - name: str = attr.ib() - uri: Optional[str] = attr.ib() - version: Optional[str] = attr.ib() - - -def _get_generator(element: Element, name, - optional: bool=True) -> Optional[AtomGenerator]: - child = get_child(element, name, optional) - if child is None: - return None - - return AtomGenerator( - child.text.strip(), - child.attrib.get('uri'), - child.attrib.get('version'), - ) - - -def _get_text_construct(element: Element, name, - optional: bool=True) -> Optional[AtomTextConstruct]: - child = get_child(element, name, optional) - if child is None: - return None - - try: - text_type = AtomTextType(child.attrib['type']) - except KeyError: - text_type = AtomTextType.text - - try: - lang = child.lang - except AttributeError: - lang = None - - if child.text is None: - if optional: - return None - - raise FeedParseError( - 'Could not parse atom feed: "{}" text is required but is empty' - .format(name) - ) - - return AtomTextConstruct( - text_type, - lang, - child.text.strip() - ) - - -def _get_person(element: Element) -> Optional[AtomPerson]: - try: - return AtomPerson( - get_text(element, 'feed:name', optional=False), - get_text(element, 'feed:uri'), - get_text(element, 'feed:email') - ) - except FeedParseError: - return None - - -def _get_link(element: Element) -> AtomLink: - length = element.attrib.get('length') - length = int(length) if length else None - return AtomLink( - element.attrib['href'], - element.attrib.get('rel'), - element.attrib.get('type'), - element.attrib.get('hreflang'), - element.attrib.get('title'), - length - ) - - -def _get_category(element: Element) -> AtomCategory: - return AtomCategory( - element.attrib['term'], - element.attrib.get('scheme'), - element.attrib.get('label'), - ) - - -def _get_entry(element: Element, - default_authors: List[AtomPerson]) -> AtomEntry: - root = element - - # Mandatory - title = _get_text_construct(root, 'feed:title') - id_ = get_text(root, 'feed:id') - - # Optional - try: - source = _parse_atom(get_child(root, 'feed:source', optional=False), - parse_entries=False) - except FeedParseError: - source = None - source_authors = [] - else: - source_authors = source.authors - - authors = [_get_person(e) - for e in root.findall('feed:author', ns)] or default_authors - authors = [a for a in authors if a is not None] - authors = authors or default_authors or source_authors - - contributors = [_get_person(e) - for e in root.findall('feed:contributor', ns) if e] - contributors = [c for c in contributors if c is not None] - - links = [_get_link(e) for e in root.findall('feed:link', ns)] - categories = [_get_category(e) for e in root.findall('feed:category', ns)] - - updated = get_datetime(root, 'feed:updated') - published = get_datetime(root, 'feed:published') - rights = _get_text_construct(root, 'feed:rights') - summary = _get_text_construct(root, 'feed:summary') - content = _get_text_construct(root, 'feed:content') - - return AtomEntry( - title, - id_, - updated, - authors, - contributors, - links, - categories, - published, - rights, - summary, - content, - source - ) - - -def _parse_atom(root: Element, parse_entries: bool=True) -> AtomFeed: - # Mandatory - id_ = get_text(root, 'feed:id', optional=False) - - # Optional - title = _get_text_construct(root, 'feed:title') - updated = get_datetime(root, 'feed:updated') - authors = [_get_person(e) - for e in root.findall('feed:author', ns) if e] - authors = [a for a in authors if a is not None] - contributors = [_get_person(e) - for e in root.findall('feed:contributor', ns) if e] - contributors = [c for c in contributors if c is not None] - links = [_get_link(e) - for e in root.findall('feed:link', ns)] - categories = [_get_category(e) - for e in root.findall('feed:category', ns)] - - generator = _get_generator(root, 'feed:generator') - subtitle = _get_text_construct(root, 'feed:subtitle') - rights = _get_text_construct(root, 'feed:rights') - icon = get_text(root, 'feed:icon') - logo = get_text(root, 'feed:logo') - - if parse_entries: - entries = [_get_entry(e, authors) - for e in root.findall('feed:entry', ns)] - else: - entries = [] - - atom_feed = AtomFeed( - title, - id_, - updated, - authors, - contributors, - links, - categories, - generator, - subtitle, - rights, - icon, - logo, - entries - ) - return atom_feed - - -def parse_atom_file(filename: str) -> AtomFeed: - """Parse an Atom feed from a local XML file.""" - root = parse_xml(filename).getroot() - return _parse_atom(root) - - -def parse_atom_bytes(data: bytes) -> AtomFeed: - """Parse an Atom feed from a byte-string containing XML data.""" - root = parse_xml(BytesIO(data)).getroot() - return _parse_atom(root) diff --git a/python/atoma/const.py b/python/atoma/const.py deleted file mode 100644 index d52d0f6..0000000 --- a/python/atoma/const.py +++ /dev/null @@ -1 +0,0 @@ -VERSION = '0.0.13' diff --git a/python/atoma/exceptions.py b/python/atoma/exceptions.py deleted file mode 100644 index 88170c5..0000000 --- a/python/atoma/exceptions.py +++ /dev/null @@ -1,14 +0,0 @@ -class FeedParseError(Exception): - """Document is an invalid feed.""" - - -class FeedDocumentError(Exception): - """Document is not a supported file.""" - - -class FeedXMLError(FeedDocumentError): - """Document is not valid XML.""" - - -class FeedJSONError(FeedDocumentError): - """Document is not valid JSON.""" diff --git a/python/atoma/json_feed.py b/python/atoma/json_feed.py deleted file mode 100644 index 410ff4a..0000000 --- a/python/atoma/json_feed.py +++ /dev/null @@ -1,223 +0,0 @@ -from datetime import datetime, timedelta -import json -from typing import Optional, List - -import attr - -from .exceptions import FeedParseError, FeedJSONError -from .utils import try_parse_date - - -@attr.s -class JSONFeedAuthor: - - name: Optional[str] = attr.ib() - url: Optional[str] = attr.ib() - avatar: Optional[str] = attr.ib() - - -@attr.s -class JSONFeedAttachment: - - url: str = attr.ib() - mime_type: str = attr.ib() - title: Optional[str] = attr.ib() - size_in_bytes: Optional[int] = attr.ib() - duration: Optional[timedelta] = attr.ib() - - -@attr.s -class JSONFeedItem: - - id_: str = attr.ib() - url: Optional[str] = attr.ib() - external_url: Optional[str] = attr.ib() - title: Optional[str] = attr.ib() - content_html: Optional[str] = attr.ib() - content_text: Optional[str] = attr.ib() - summary: Optional[str] = attr.ib() - image: Optional[str] = attr.ib() - banner_image: Optional[str] = attr.ib() - date_published: Optional[datetime] = attr.ib() - date_modified: Optional[datetime] = attr.ib() - author: Optional[JSONFeedAuthor] = attr.ib() - - tags: List[str] = attr.ib() - attachments: List[JSONFeedAttachment] = attr.ib() - - -@attr.s -class JSONFeed: - - version: str = attr.ib() - title: str = attr.ib() - home_page_url: Optional[str] = attr.ib() - feed_url: Optional[str] = attr.ib() - description: Optional[str] = attr.ib() - user_comment: Optional[str] = attr.ib() - next_url: Optional[str] = attr.ib() - icon: Optional[str] = attr.ib() - favicon: Optional[str] = attr.ib() - author: Optional[JSONFeedAuthor] = attr.ib() - expired: bool = attr.ib() - - items: List[JSONFeedItem] = attr.ib() - - -def _get_items(root: dict) -> List[JSONFeedItem]: - rv = [] - items = root.get('items', []) - if not items: - return rv - - for item in items: - rv.append(_get_item(item)) - - return rv - - -def _get_item(item_dict: dict) -> JSONFeedItem: - return JSONFeedItem( - id_=_get_text(item_dict, 'id', optional=False), - url=_get_text(item_dict, 'url'), - external_url=_get_text(item_dict, 'external_url'), - title=_get_text(item_dict, 'title'), - content_html=_get_text(item_dict, 'content_html'), - content_text=_get_text(item_dict, 'content_text'), - summary=_get_text(item_dict, 'summary'), - image=_get_text(item_dict, 'image'), - banner_image=_get_text(item_dict, 'banner_image'), - date_published=_get_datetime(item_dict, 'date_published'), - date_modified=_get_datetime(item_dict, 'date_modified'), - author=_get_author(item_dict), - tags=_get_tags(item_dict, 'tags'), - attachments=_get_attachments(item_dict, 'attachments') - ) - - -def _get_attachments(root, name) -> List[JSONFeedAttachment]: - rv = list() - for attachment_dict in root.get(name, []): - rv.append(JSONFeedAttachment( - _get_text(attachment_dict, 'url', optional=False), - _get_text(attachment_dict, 'mime_type', optional=False), - _get_text(attachment_dict, 'title'), - _get_int(attachment_dict, 'size_in_bytes'), - _get_duration(attachment_dict, 'duration_in_seconds') - )) - return rv - - -def _get_tags(root, name) -> List[str]: - tags = root.get(name, []) - return [tag for tag in tags if isinstance(tag, str)] - - -def _get_datetime(root: dict, name, optional: bool=True) -> Optional[datetime]: - text = _get_text(root, name, optional) - if text is None: - return None - - return try_parse_date(text) - - -def _get_expired(root: dict) -> bool: - if root.get('expired') is True: - return True - - return False - - -def _get_author(root: dict) -> Optional[JSONFeedAuthor]: - author_dict = root.get('author') - if not author_dict: - return None - - rv = JSONFeedAuthor( - name=_get_text(author_dict, 'name'), - url=_get_text(author_dict, 'url'), - avatar=_get_text(author_dict, 'avatar'), - ) - if rv.name is None and rv.url is None and rv.avatar is None: - return None - - return rv - - -def _get_int(root: dict, name: str, optional: bool=True) -> Optional[int]: - rv = root.get(name) - if not optional and rv is None: - raise FeedParseError('Could not parse feed: "{}" int is required but ' - 'is empty'.format(name)) - - if optional and rv is None: - return None - - if not isinstance(rv, int): - raise FeedParseError('Could not parse feed: "{}" is not an int' - .format(name)) - - return rv - - -def _get_duration(root: dict, name: str, - optional: bool=True) -> Optional[timedelta]: - duration = _get_int(root, name, optional) - if duration is None: - return None - - return timedelta(seconds=duration) - - -def _get_text(root: dict, name: str, optional: bool=True) -> Optional[str]: - rv = root.get(name) - if not optional and rv is None: - raise FeedParseError('Could not parse feed: "{}" text is required but ' - 'is empty'.format(name)) - - if optional and rv is None: - return None - - if not isinstance(rv, str): - raise FeedParseError('Could not parse feed: "{}" is not a string' - .format(name)) - - return rv - - -def parse_json_feed(root: dict) -> JSONFeed: - return JSONFeed( - version=_get_text(root, 'version', optional=False), - title=_get_text(root, 'title', optional=False), - home_page_url=_get_text(root, 'home_page_url'), - feed_url=_get_text(root, 'feed_url'), - description=_get_text(root, 'description'), - user_comment=_get_text(root, 'user_comment'), - next_url=_get_text(root, 'next_url'), - icon=_get_text(root, 'icon'), - favicon=_get_text(root, 'favicon'), - author=_get_author(root), - expired=_get_expired(root), - items=_get_items(root) - ) - - -def parse_json_feed_file(filename: str) -> JSONFeed: - """Parse a JSON feed from a local json file.""" - with open(filename) as f: - try: - root = json.load(f) - except json.decoder.JSONDecodeError: - raise FeedJSONError('Not a valid JSON document') - - return parse_json_feed(root) - - -def parse_json_feed_bytes(data: bytes) -> JSONFeed: - """Parse a JSON feed from a byte-string containing JSON data.""" - try: - root = json.loads(data) - except json.decoder.JSONDecodeError: - raise FeedJSONError('Not a valid JSON document') - - return parse_json_feed(root) diff --git a/python/atoma/opml.py b/python/atoma/opml.py deleted file mode 100644 index a73105e..0000000 --- a/python/atoma/opml.py +++ /dev/null @@ -1,107 +0,0 @@ -from datetime import datetime -from io import BytesIO -from typing import Optional, List -from xml.etree.ElementTree import Element - -import attr - -from .utils import parse_xml, get_text, get_int, get_datetime - - -@attr.s -class OPMLOutline: - text: Optional[str] = attr.ib() - type: Optional[str] = attr.ib() - xml_url: Optional[str] = attr.ib() - description: Optional[str] = attr.ib() - html_url: Optional[str] = attr.ib() - language: Optional[str] = attr.ib() - title: Optional[str] = attr.ib() - version: Optional[str] = attr.ib() - - outlines: List['OPMLOutline'] = attr.ib() - - -@attr.s -class OPML: - title: Optional[str] = attr.ib() - owner_name: Optional[str] = attr.ib() - owner_email: Optional[str] = attr.ib() - date_created: Optional[datetime] = attr.ib() - date_modified: Optional[datetime] = attr.ib() - expansion_state: Optional[str] = attr.ib() - - vertical_scroll_state: Optional[int] = attr.ib() - window_top: Optional[int] = attr.ib() - window_left: Optional[int] = attr.ib() - window_bottom: Optional[int] = attr.ib() - window_right: Optional[int] = attr.ib() - - outlines: List[OPMLOutline] = attr.ib() - - -def _get_outlines(element: Element) -> List[OPMLOutline]: - rv = list() - - for outline in element.findall('outline'): - rv.append(OPMLOutline( - outline.attrib.get('text'), - outline.attrib.get('type'), - outline.attrib.get('xmlUrl'), - outline.attrib.get('description'), - outline.attrib.get('htmlUrl'), - outline.attrib.get('language'), - outline.attrib.get('title'), - outline.attrib.get('version'), - _get_outlines(outline) - )) - - return rv - - -def _parse_opml(root: Element) -> OPML: - head = root.find('head') - body = root.find('body') - - return OPML( - get_text(head, 'title'), - get_text(head, 'ownerName'), - get_text(head, 'ownerEmail'), - get_datetime(head, 'dateCreated'), - get_datetime(head, 'dateModified'), - get_text(head, 'expansionState'), - get_int(head, 'vertScrollState'), - get_int(head, 'windowTop'), - get_int(head, 'windowLeft'), - get_int(head, 'windowBottom'), - get_int(head, 'windowRight'), - outlines=_get_outlines(body) - ) - - -def parse_opml_file(filename: str) -> OPML: - """Parse an OPML document from a local XML file.""" - root = parse_xml(filename).getroot() - return _parse_opml(root) - - -def parse_opml_bytes(data: bytes) -> OPML: - """Parse an OPML document from a byte-string containing XML data.""" - root = parse_xml(BytesIO(data)).getroot() - return _parse_opml(root) - - -def get_feed_list(opml_obj: OPML) -> List[str]: - """Walk an OPML document to extract the list of feed it contains.""" - rv = list() - - def collect(obj): - for outline in obj.outlines: - if outline.type == 'rss' and outline.xml_url: - rv.append(outline.xml_url) - - if outline.outlines: - collect(outline) - - collect(opml_obj) - return rv diff --git a/python/atoma/rss.py b/python/atoma/rss.py deleted file mode 100644 index f447a2f..0000000 --- a/python/atoma/rss.py +++ /dev/null @@ -1,221 +0,0 @@ -from datetime import datetime -from io import BytesIO -from typing import Optional, List -from xml.etree.ElementTree import Element - -import attr - -from .utils import ( - parse_xml, get_child, get_text, get_int, get_datetime, FeedParseError -) - - -@attr.s -class RSSImage: - url: str = attr.ib() - title: Optional[str] = attr.ib() - link: str = attr.ib() - width: int = attr.ib() - height: int = attr.ib() - description: Optional[str] = attr.ib() - - -@attr.s -class RSSEnclosure: - url: str = attr.ib() - length: Optional[int] = attr.ib() - type: Optional[str] = attr.ib() - - -@attr.s -class RSSSource: - title: str = attr.ib() - url: Optional[str] = attr.ib() - - -@attr.s -class RSSItem: - title: Optional[str] = attr.ib() - link: Optional[str] = attr.ib() - description: Optional[str] = attr.ib() - author: Optional[str] = attr.ib() - categories: List[str] = attr.ib() - comments: Optional[str] = attr.ib() - enclosures: List[RSSEnclosure] = attr.ib() - guid: Optional[str] = attr.ib() - pub_date: Optional[datetime] = attr.ib() - source: Optional[RSSSource] = attr.ib() - - # Extension - content_encoded: Optional[str] = attr.ib() - - -@attr.s -class RSSChannel: - title: Optional[str] = attr.ib() - link: Optional[str] = attr.ib() - description: Optional[str] = attr.ib() - language: Optional[str] = attr.ib() - copyright: Optional[str] = attr.ib() - managing_editor: Optional[str] = attr.ib() - web_master: Optional[str] = attr.ib() - pub_date: Optional[datetime] = attr.ib() - last_build_date: Optional[datetime] = attr.ib() - categories: List[str] = attr.ib() - generator: Optional[str] = attr.ib() - docs: Optional[str] = attr.ib() - ttl: Optional[int] = attr.ib() - image: Optional[RSSImage] = attr.ib() - - items: List[RSSItem] = attr.ib() - - # Extension - content_encoded: Optional[str] = attr.ib() - - -def _get_image(element: Element, name, - optional: bool=True) -> Optional[RSSImage]: - child = get_child(element, name, optional) - if child is None: - return None - - return RSSImage( - get_text(child, 'url', optional=False), - get_text(child, 'title'), - get_text(child, 'link', optional=False), - get_int(child, 'width') or 88, - get_int(child, 'height') or 31, - get_text(child, 'description') - ) - - -def _get_source(element: Element, name, - optional: bool=True) -> Optional[RSSSource]: - child = get_child(element, name, optional) - if child is None: - return None - - return RSSSource( - child.text.strip(), - child.attrib.get('url'), - ) - - -def _get_enclosure(element: Element) -> RSSEnclosure: - length = element.attrib.get('length') - try: - length = int(length) - except (TypeError, ValueError): - length = None - - return RSSEnclosure( - element.attrib['url'], - length, - element.attrib.get('type'), - ) - - -def _get_link(element: Element) -> Optional[str]: - """Attempt to retrieve item link. - - Use the GUID as a fallback if it is a permalink. - """ - link = get_text(element, 'link') - if link is not None: - return link - - guid = get_child(element, 'guid') - if guid is not None and guid.attrib.get('isPermaLink') == 'true': - return get_text(element, 'guid') - - return None - - -def _get_item(element: Element) -> RSSItem: - root = element - - title = get_text(root, 'title') - link = _get_link(root) - description = get_text(root, 'description') - author = get_text(root, 'author') - categories = [e.text for e in root.findall('category')] - comments = get_text(root, 'comments') - enclosure = [_get_enclosure(e) for e in root.findall('enclosure')] - guid = get_text(root, 'guid') - pub_date = get_datetime(root, 'pubDate') - source = _get_source(root, 'source') - - content_encoded = get_text(root, 'content:encoded') - - return RSSItem( - title, - link, - description, - author, - categories, - comments, - enclosure, - guid, - pub_date, - source, - content_encoded - ) - - -def _parse_rss(root: Element) -> RSSChannel: - rss_version = root.get('version') - if rss_version != '2.0': - raise FeedParseError('Cannot process RSS feed version "{}"' - .format(rss_version)) - - root = root.find('channel') - - title = get_text(root, 'title') - link = get_text(root, 'link') - description = get_text(root, 'description') - language = get_text(root, 'language') - copyright = get_text(root, 'copyright') - managing_editor = get_text(root, 'managingEditor') - web_master = get_text(root, 'webMaster') - pub_date = get_datetime(root, 'pubDate') - last_build_date = get_datetime(root, 'lastBuildDate') - categories = [e.text for e in root.findall('category')] - generator = get_text(root, 'generator') - docs = get_text(root, 'docs') - ttl = get_int(root, 'ttl') - - image = _get_image(root, 'image') - items = [_get_item(e) for e in root.findall('item')] - - content_encoded = get_text(root, 'content:encoded') - - return RSSChannel( - title, - link, - description, - language, - copyright, - managing_editor, - web_master, - pub_date, - last_build_date, - categories, - generator, - docs, - ttl, - image, - items, - content_encoded - ) - - -def parse_rss_file(filename: str) -> RSSChannel: - """Parse an RSS feed from a local XML file.""" - root = parse_xml(filename).getroot() - return _parse_rss(root) - - -def parse_rss_bytes(data: bytes) -> RSSChannel: - """Parse an RSS feed from a byte-string containing XML data.""" - root = parse_xml(BytesIO(data)).getroot() - return _parse_rss(root) diff --git a/python/atoma/simple.py b/python/atoma/simple.py deleted file mode 100644 index 98bb3e1..0000000 --- a/python/atoma/simple.py +++ /dev/null @@ -1,224 +0,0 @@ -"""Simple API that abstracts away the differences between feed types.""" - -from datetime import datetime, timedelta -import html -import os -from typing import Optional, List, Tuple -import urllib.parse - -import attr - -from . import atom, rss, json_feed -from .exceptions import ( - FeedParseError, FeedDocumentError, FeedXMLError, FeedJSONError -) - - -@attr.s -class Attachment: - link: str = attr.ib() - mime_type: Optional[str] = attr.ib() - title: Optional[str] = attr.ib() - size_in_bytes: Optional[int] = attr.ib() - duration: Optional[timedelta] = attr.ib() - - -@attr.s -class Article: - id: str = attr.ib() - title: Optional[str] = attr.ib() - link: Optional[str] = attr.ib() - content: str = attr.ib() - published_at: Optional[datetime] = attr.ib() - updated_at: Optional[datetime] = attr.ib() - attachments: List[Attachment] = attr.ib() - - -@attr.s -class Feed: - title: str = attr.ib() - subtitle: Optional[str] = attr.ib() - link: Optional[str] = attr.ib() - updated_at: Optional[datetime] = attr.ib() - articles: List[Article] = attr.ib() - - -def _adapt_atom_feed(atom_feed: atom.AtomFeed) -> Feed: - articles = list() - for entry in atom_feed.entries: - if entry.content is not None: - content = entry.content.value - elif entry.summary is not None: - content = entry.summary.value - else: - content = '' - published_at, updated_at = _get_article_dates(entry.published, - entry.updated) - # Find article link and attachments - article_link = None - attachments = list() - for candidate_link in entry.links: - if candidate_link.rel in ('alternate', None): - article_link = candidate_link.href - elif candidate_link.rel == 'enclosure': - attachments.append(Attachment( - title=_get_attachment_title(candidate_link.title, - candidate_link.href), - link=candidate_link.href, - mime_type=candidate_link.type_, - size_in_bytes=candidate_link.length, - duration=None - )) - - if entry.title is None: - entry_title = None - elif entry.title.text_type in (atom.AtomTextType.html, - atom.AtomTextType.xhtml): - entry_title = html.unescape(entry.title.value).strip() - else: - entry_title = entry.title.value - - articles.append(Article( - entry.id_, - entry_title, - article_link, - content, - published_at, - updated_at, - attachments - )) - - # Find feed link - link = None - for candidate_link in atom_feed.links: - if candidate_link.rel == 'self': - link = candidate_link.href - break - - return Feed( - atom_feed.title.value if atom_feed.title else atom_feed.id_, - atom_feed.subtitle.value if atom_feed.subtitle else None, - link, - atom_feed.updated, - articles - ) - - -def _adapt_rss_channel(rss_channel: rss.RSSChannel) -> Feed: - articles = list() - for item in rss_channel.items: - attachments = [ - Attachment(link=e.url, mime_type=e.type, size_in_bytes=e.length, - title=_get_attachment_title(None, e.url), duration=None) - for e in item.enclosures - ] - articles.append(Article( - item.guid or item.link, - item.title, - item.link, - item.content_encoded or item.description or '', - item.pub_date, - None, - attachments - )) - - if rss_channel.title is None and rss_channel.link is None: - raise FeedParseError('RSS feed does not have a title nor a link') - - return Feed( - rss_channel.title if rss_channel.title else rss_channel.link, - rss_channel.description, - rss_channel.link, - rss_channel.pub_date, - articles - ) - - -def _adapt_json_feed(json_feed: json_feed.JSONFeed) -> Feed: - articles = list() - for item in json_feed.items: - attachments = [ - Attachment(a.url, a.mime_type, - _get_attachment_title(a.title, a.url), - a.size_in_bytes, a.duration) - for a in item.attachments - ] - articles.append(Article( - item.id_, - item.title, - item.url, - item.content_html or item.content_text or '', - item.date_published, - item.date_modified, - attachments - )) - - return Feed( - json_feed.title, - json_feed.description, - json_feed.feed_url, - None, - articles - ) - - -def _get_article_dates(published_at: Optional[datetime], - updated_at: Optional[datetime] - ) -> Tuple[Optional[datetime], Optional[datetime]]: - if published_at and updated_at: - return published_at, updated_at - - if updated_at: - return updated_at, None - - if published_at: - return published_at, None - - raise FeedParseError('Article does not have proper dates') - - -def _get_attachment_title(attachment_title: Optional[str], link: str) -> str: - if attachment_title: - return attachment_title - - parsed_link = urllib.parse.urlparse(link) - return os.path.basename(parsed_link.path) - - -def _simple_parse(pairs, content) -> Feed: - is_xml = True - is_json = True - for parser, adapter in pairs: - try: - return adapter(parser(content)) - except FeedXMLError: - is_xml = False - except FeedJSONError: - is_json = False - except FeedParseError: - continue - - if not is_xml and not is_json: - raise FeedDocumentError('File is not a supported feed type') - - raise FeedParseError('File is not a valid supported feed') - - -def simple_parse_file(filename: str) -> Feed: - """Parse an Atom, RSS or JSON feed from a local file.""" - pairs = ( - (rss.parse_rss_file, _adapt_rss_channel), - (atom.parse_atom_file, _adapt_atom_feed), - (json_feed.parse_json_feed_file, _adapt_json_feed) - ) - return _simple_parse(pairs, filename) - - -def simple_parse_bytes(data: bytes) -> Feed: - """Parse an Atom, RSS or JSON feed from a byte-string containing data.""" - pairs = ( - (rss.parse_rss_bytes, _adapt_rss_channel), - (atom.parse_atom_bytes, _adapt_atom_feed), - (json_feed.parse_json_feed_bytes, _adapt_json_feed) - ) - return _simple_parse(pairs, data) diff --git a/python/atoma/utils.py b/python/atoma/utils.py deleted file mode 100644 index 4dc1ab5..0000000 --- a/python/atoma/utils.py +++ /dev/null @@ -1,84 +0,0 @@ -from datetime import datetime, timezone -from xml.etree.ElementTree import Element -from typing import Optional - -import dateutil.parser -from defusedxml.ElementTree import parse as defused_xml_parse, ParseError - -from .exceptions import FeedXMLError, FeedParseError - -ns = { - 'content': 'http://purl.org/rss/1.0/modules/content/', - 'feed': 'http://www.w3.org/2005/Atom' -} - - -def parse_xml(xml_content): - try: - return defused_xml_parse(xml_content) - except ParseError: - raise FeedXMLError('Not a valid XML document') - - -def get_child(element: Element, name, - optional: bool=True) -> Optional[Element]: - child = element.find(name, namespaces=ns) - - if child is None and not optional: - raise FeedParseError( - 'Could not parse feed: "{}" does not have a "{}"' - .format(element.tag, name) - ) - - elif child is None: - return None - - return child - - -def get_text(element: Element, name, optional: bool=True) -> Optional[str]: - child = get_child(element, name, optional) - if child is None: - return None - - if child.text is None: - if optional: - return None - - raise FeedParseError( - 'Could not parse feed: "{}" text is required but is empty' - .format(name) - ) - - return child.text.strip() - - -def get_int(element: Element, name, optional: bool=True) -> Optional[int]: - text = get_text(element, name, optional) - if text is None: - return None - - return int(text) - - -def get_datetime(element: Element, name, - optional: bool=True) -> Optional[datetime]: - text = get_text(element, name, optional) - if text is None: - return None - - return try_parse_date(text) - - -def try_parse_date(date_str: str) -> Optional[datetime]: - try: - date = dateutil.parser.parse(date_str, fuzzy=True) - except (ValueError, OverflowError): - return None - - if date.tzinfo is None: - # TZ naive datetime, make it a TZ aware datetime by assuming it - # contains UTC time - date = date.replace(tzinfo=timezone.utc) - - return date diff --git a/python/attr/__init__.py b/python/attr/__init__.py deleted file mode 100644 index debfd57..0000000 --- a/python/attr/__init__.py +++ /dev/null @@ -1,65 +0,0 @@ -from __future__ import absolute_import, division, print_function - -from functools import partial - -from . import converters, exceptions, filters, validators -from ._config import get_run_validators, set_run_validators -from ._funcs import asdict, assoc, astuple, evolve, has -from ._make import ( - NOTHING, - Attribute, - Factory, - attrib, - attrs, - fields, - fields_dict, - make_class, - validate, -) - - -__version__ = "18.2.0" - -__title__ = "attrs" -__description__ = "Classes Without Boilerplate" -__url__ = "https://www.attrs.org/" -__uri__ = __url__ -__doc__ = __description__ + " <" + __uri__ + ">" - -__author__ = "Hynek Schlawack" -__email__ = "hs@ox.cx" - -__license__ = "MIT" -__copyright__ = "Copyright (c) 2015 Hynek Schlawack" - - -s = attributes = attrs -ib = attr = attrib -dataclass = partial(attrs, auto_attribs=True) # happy Easter ;) - -__all__ = [ - "Attribute", - "Factory", - "NOTHING", - "asdict", - "assoc", - "astuple", - "attr", - "attrib", - "attributes", - "attrs", - "converters", - "evolve", - "exceptions", - "fields", - "fields_dict", - "filters", - "get_run_validators", - "has", - "ib", - "make_class", - "s", - "set_run_validators", - "validate", - "validators", -] diff --git a/python/attr/__init__.pyi b/python/attr/__init__.pyi deleted file mode 100644 index 492fb85..0000000 --- a/python/attr/__init__.pyi +++ /dev/null @@ -1,252 +0,0 @@ -from typing import ( - Any, - Callable, - Dict, - Generic, - List, - Optional, - Sequence, - Mapping, - Tuple, - Type, - TypeVar, - Union, - overload, -) - -# `import X as X` is required to make these public -from . import exceptions as exceptions -from . import filters as filters -from . import converters as converters -from . import validators as validators - -_T = TypeVar("_T") -_C = TypeVar("_C", bound=type) - -_ValidatorType = Callable[[Any, Attribute, _T], Any] -_ConverterType = Callable[[Any], _T] -_FilterType = Callable[[Attribute, Any], bool] -# FIXME: in reality, if multiple validators are passed they must be in a list or tuple, -# but those are invariant and so would prevent subtypes of _ValidatorType from working -# when passed in a list or tuple. -_ValidatorArgType = Union[_ValidatorType[_T], Sequence[_ValidatorType[_T]]] - -# _make -- - -NOTHING: object - -# NOTE: Factory lies about its return type to make this possible: `x: List[int] = Factory(list)` -# Work around mypy issue #4554 in the common case by using an overload. -@overload -def Factory(factory: Callable[[], _T]) -> _T: ... -@overload -def Factory( - factory: Union[Callable[[Any], _T], Callable[[], _T]], - takes_self: bool = ..., -) -> _T: ... - -class Attribute(Generic[_T]): - name: str - default: Optional[_T] - validator: Optional[_ValidatorType[_T]] - repr: bool - cmp: bool - hash: Optional[bool] - init: bool - converter: Optional[_ConverterType[_T]] - metadata: Dict[Any, Any] - type: Optional[Type[_T]] - kw_only: bool - def __lt__(self, x: Attribute) -> bool: ... - def __le__(self, x: Attribute) -> bool: ... - def __gt__(self, x: Attribute) -> bool: ... - def __ge__(self, x: Attribute) -> bool: ... - -# NOTE: We had several choices for the annotation to use for type arg: -# 1) Type[_T] -# - Pros: Handles simple cases correctly -# - Cons: Might produce less informative errors in the case of conflicting TypeVars -# e.g. `attr.ib(default='bad', type=int)` -# 2) Callable[..., _T] -# - Pros: Better error messages than #1 for conflicting TypeVars -# - Cons: Terrible error messages for validator checks. -# e.g. attr.ib(type=int, validator=validate_str) -# -> error: Cannot infer function type argument -# 3) type (and do all of the work in the mypy plugin) -# - Pros: Simple here, and we could customize the plugin with our own errors. -# - Cons: Would need to write mypy plugin code to handle all the cases. -# We chose option #1. - -# `attr` lies about its return type to make the following possible: -# attr() -> Any -# attr(8) -> int -# attr(validator=<some callable>) -> Whatever the callable expects. -# This makes this type of assignments possible: -# x: int = attr(8) -# -# This form catches explicit None or no default but with no other arguments returns Any. -@overload -def attrib( - default: None = ..., - validator: None = ..., - repr: bool = ..., - cmp: bool = ..., - hash: Optional[bool] = ..., - init: bool = ..., - convert: None = ..., - metadata: Optional[Mapping[Any, Any]] = ..., - type: None = ..., - converter: None = ..., - factory: None = ..., - kw_only: bool = ..., -) -> Any: ... - -# This form catches an explicit None or no default and infers the type from the other arguments. -@overload -def attrib( - default: None = ..., - validator: Optional[_ValidatorArgType[_T]] = ..., - repr: bool = ..., - cmp: bool = ..., - hash: Optional[bool] = ..., - init: bool = ..., - convert: Optional[_ConverterType[_T]] = ..., - metadata: Optional[Mapping[Any, Any]] = ..., - type: Optional[Type[_T]] = ..., - converter: Optional[_ConverterType[_T]] = ..., - factory: Optional[Callable[[], _T]] = ..., - kw_only: bool = ..., -) -> _T: ... - -# This form catches an explicit default argument. -@overload -def attrib( - default: _T, - validator: Optional[_ValidatorArgType[_T]] = ..., - repr: bool = ..., - cmp: bool = ..., - hash: Optional[bool] = ..., - init: bool = ..., - convert: Optional[_ConverterType[_T]] = ..., - metadata: Optional[Mapping[Any, Any]] = ..., - type: Optional[Type[_T]] = ..., - converter: Optional[_ConverterType[_T]] = ..., - factory: Optional[Callable[[], _T]] = ..., - kw_only: bool = ..., -) -> _T: ... - -# This form covers type=non-Type: e.g. forward references (str), Any -@overload -def attrib( - default: Optional[_T] = ..., - validator: Optional[_ValidatorArgType[_T]] = ..., - repr: bool = ..., - cmp: bool = ..., - hash: Optional[bool] = ..., - init: bool = ..., - convert: Optional[_ConverterType[_T]] = ..., - metadata: Optional[Mapping[Any, Any]] = ..., - type: object = ..., - converter: Optional[_ConverterType[_T]] = ..., - factory: Optional[Callable[[], _T]] = ..., - kw_only: bool = ..., -) -> Any: ... -@overload -def attrs( - maybe_cls: _C, - these: Optional[Dict[str, Any]] = ..., - repr_ns: Optional[str] = ..., - repr: bool = ..., - cmp: bool = ..., - hash: Optional[bool] = ..., - init: bool = ..., - slots: bool = ..., - frozen: bool = ..., - weakref_slot: bool = ..., - str: bool = ..., - auto_attribs: bool = ..., - kw_only: bool = ..., - cache_hash: bool = ..., -) -> _C: ... -@overload -def attrs( - maybe_cls: None = ..., - these: Optional[Dict[str, Any]] = ..., - repr_ns: Optional[str] = ..., - repr: bool = ..., - cmp: bool = ..., - hash: Optional[bool] = ..., - init: bool = ..., - slots: bool = ..., - frozen: bool = ..., - weakref_slot: bool = ..., - str: bool = ..., - auto_attribs: bool = ..., - kw_only: bool = ..., - cache_hash: bool = ..., -) -> Callable[[_C], _C]: ... - -# TODO: add support for returning NamedTuple from the mypy plugin -class _Fields(Tuple[Attribute, ...]): - def __getattr__(self, name: str) -> Attribute: ... - -def fields(cls: type) -> _Fields: ... -def fields_dict(cls: type) -> Dict[str, Attribute]: ... -def validate(inst: Any) -> None: ... - -# TODO: add support for returning a proper attrs class from the mypy plugin -# we use Any instead of _CountingAttr so that e.g. `make_class('Foo', [attr.ib()])` is valid -def make_class( - name: str, - attrs: Union[List[str], Tuple[str, ...], Dict[str, Any]], - bases: Tuple[type, ...] = ..., - repr_ns: Optional[str] = ..., - repr: bool = ..., - cmp: bool = ..., - hash: Optional[bool] = ..., - init: bool = ..., - slots: bool = ..., - frozen: bool = ..., - weakref_slot: bool = ..., - str: bool = ..., - auto_attribs: bool = ..., - kw_only: bool = ..., - cache_hash: bool = ..., -) -> type: ... - -# _funcs -- - -# TODO: add support for returning TypedDict from the mypy plugin -# FIXME: asdict/astuple do not honor their factory args. waiting on one of these: -# https://github.com/python/mypy/issues/4236 -# https://github.com/python/typing/issues/253 -def asdict( - inst: Any, - recurse: bool = ..., - filter: Optional[_FilterType] = ..., - dict_factory: Type[Mapping[Any, Any]] = ..., - retain_collection_types: bool = ..., -) -> Dict[str, Any]: ... - -# TODO: add support for returning NamedTuple from the mypy plugin -def astuple( - inst: Any, - recurse: bool = ..., - filter: Optional[_FilterType] = ..., - tuple_factory: Type[Sequence] = ..., - retain_collection_types: bool = ..., -) -> Tuple[Any, ...]: ... -def has(cls: type) -> bool: ... -def assoc(inst: _T, **changes: Any) -> _T: ... -def evolve(inst: _T, **changes: Any) -> _T: ... - -# _config -- - -def set_run_validators(run: bool) -> None: ... -def get_run_validators() -> bool: ... - -# aliases -- - -s = attributes = attrs -ib = attr = attrib -dataclass = attrs # Technically, partial(attrs, auto_attribs=True) ;) diff --git a/python/attr/_compat.py b/python/attr/_compat.py deleted file mode 100644 index 5bb0659..0000000 --- a/python/attr/_compat.py +++ /dev/null @@ -1,163 +0,0 @@ -from __future__ import absolute_import, division, print_function - -import platform -import sys -import types -import warnings - - -PY2 = sys.version_info[0] == 2 -PYPY = platform.python_implementation() == "PyPy" - - -if PYPY or sys.version_info[:2] >= (3, 6): - ordered_dict = dict -else: - from collections import OrderedDict - - ordered_dict = OrderedDict - - -if PY2: - from UserDict import IterableUserDict - - # We 'bundle' isclass instead of using inspect as importing inspect is - # fairly expensive (order of 10-15 ms for a modern machine in 2016) - def isclass(klass): - return isinstance(klass, (type, types.ClassType)) - - # TYPE is used in exceptions, repr(int) is different on Python 2 and 3. - TYPE = "type" - - def iteritems(d): - return d.iteritems() - - # Python 2 is bereft of a read-only dict proxy, so we make one! - class ReadOnlyDict(IterableUserDict): - """ - Best-effort read-only dict wrapper. - """ - - def __setitem__(self, key, val): - # We gently pretend we're a Python 3 mappingproxy. - raise TypeError( - "'mappingproxy' object does not support item assignment" - ) - - def update(self, _): - # We gently pretend we're a Python 3 mappingproxy. - raise AttributeError( - "'mappingproxy' object has no attribute 'update'" - ) - - def __delitem__(self, _): - # We gently pretend we're a Python 3 mappingproxy. - raise TypeError( - "'mappingproxy' object does not support item deletion" - ) - - def clear(self): - # We gently pretend we're a Python 3 mappingproxy. - raise AttributeError( - "'mappingproxy' object has no attribute 'clear'" - ) - - def pop(self, key, default=None): - # We gently pretend we're a Python 3 mappingproxy. - raise AttributeError( - "'mappingproxy' object has no attribute 'pop'" - ) - - def popitem(self): - # We gently pretend we're a Python 3 mappingproxy. - raise AttributeError( - "'mappingproxy' object has no attribute 'popitem'" - ) - - def setdefault(self, key, default=None): - # We gently pretend we're a Python 3 mappingproxy. - raise AttributeError( - "'mappingproxy' object has no attribute 'setdefault'" - ) - - def __repr__(self): - # Override to be identical to the Python 3 version. - return "mappingproxy(" + repr(self.data) + ")" - - def metadata_proxy(d): - res = ReadOnlyDict() - res.data.update(d) # We blocked update, so we have to do it like this. - return res - - -else: - - def isclass(klass): - return isinstance(klass, type) - - TYPE = "class" - - def iteritems(d): - return d.items() - - def metadata_proxy(d): - return types.MappingProxyType(dict(d)) - - -def import_ctypes(): - """ - Moved into a function for testability. - """ - import ctypes - - return ctypes - - -if not PY2: - - def just_warn(*args, **kw): - """ - We only warn on Python 3 because we are not aware of any concrete - consequences of not setting the cell on Python 2. - """ - warnings.warn( - "Missing ctypes. Some features like bare super() or accessing " - "__class__ will not work with slots classes.", - RuntimeWarning, - stacklevel=2, - ) - - -else: - - def just_warn(*args, **kw): # pragma: nocover - """ - We only warn on Python 3 because we are not aware of any concrete - consequences of not setting the cell on Python 2. - """ - - -def make_set_closure_cell(): - """ - Moved into a function for testability. - """ - if PYPY: # pragma: no cover - - def set_closure_cell(cell, value): - cell.__setstate__((value,)) - - else: - try: - ctypes = import_ctypes() - - set_closure_cell = ctypes.pythonapi.PyCell_Set - set_closure_cell.argtypes = (ctypes.py_object, ctypes.py_object) - set_closure_cell.restype = ctypes.c_int - except Exception: - # We try best effort to set the cell, but sometimes it's not - # possible. For example on Jython or on GAE. - set_closure_cell = just_warn - return set_closure_cell - - -set_closure_cell = make_set_closure_cell() diff --git a/python/attr/_config.py b/python/attr/_config.py deleted file mode 100644 index 8ec9209..0000000 --- a/python/attr/_config.py +++ /dev/null @@ -1,23 +0,0 @@ -from __future__ import absolute_import, division, print_function - - -__all__ = ["set_run_validators", "get_run_validators"] - -_run_validators = True - - -def set_run_validators(run): - """ - Set whether or not validators are run. By default, they are run. - """ - if not isinstance(run, bool): - raise TypeError("'run' must be bool.") - global _run_validators - _run_validators = run - - -def get_run_validators(): - """ - Return whether or not validators are run. - """ - return _run_validators diff --git a/python/attr/_funcs.py b/python/attr/_funcs.py deleted file mode 100644 index b61d239..0000000 --- a/python/attr/_funcs.py +++ /dev/null @@ -1,290 +0,0 @@ -from __future__ import absolute_import, division, print_function - -import copy - -from ._compat import iteritems -from ._make import NOTHING, _obj_setattr, fields -from .exceptions import AttrsAttributeNotFoundError - - -def asdict( - inst, - recurse=True, - filter=None, - dict_factory=dict, - retain_collection_types=False, -): - """ - Return the ``attrs`` attribute values of *inst* as a dict. - - Optionally recurse into other ``attrs``-decorated classes. - - :param inst: Instance of an ``attrs``-decorated class. - :param bool recurse: Recurse into classes that are also - ``attrs``-decorated. - :param callable filter: A callable whose return code determines whether an - attribute or element is included (``True``) or dropped (``False``). Is - called with the :class:`attr.Attribute` as the first argument and the - value as the second argument. - :param callable dict_factory: A callable to produce dictionaries from. For - example, to produce ordered dictionaries instead of normal Python - dictionaries, pass in ``collections.OrderedDict``. - :param bool retain_collection_types: Do not convert to ``list`` when - encountering an attribute whose type is ``tuple`` or ``set``. Only - meaningful if ``recurse`` is ``True``. - - :rtype: return type of *dict_factory* - - :raise attr.exceptions.NotAnAttrsClassError: If *cls* is not an ``attrs`` - class. - - .. versionadded:: 16.0.0 *dict_factory* - .. versionadded:: 16.1.0 *retain_collection_types* - """ - attrs = fields(inst.__class__) - rv = dict_factory() - for a in attrs: - v = getattr(inst, a.name) - if filter is not None and not filter(a, v): - continue - if recurse is True: - if has(v.__class__): - rv[a.name] = asdict( - v, True, filter, dict_factory, retain_collection_types - ) - elif isinstance(v, (tuple, list, set)): - cf = v.__class__ if retain_collection_types is True else list - rv[a.name] = cf( - [ - _asdict_anything( - i, filter, dict_factory, retain_collection_types - ) - for i in v - ] - ) - elif isinstance(v, dict): - df = dict_factory - rv[a.name] = df( - ( - _asdict_anything( - kk, filter, df, retain_collection_types - ), - _asdict_anything( - vv, filter, df, retain_collection_types - ), - ) - for kk, vv in iteritems(v) - ) - else: - rv[a.name] = v - else: - rv[a.name] = v - return rv - - -def _asdict_anything(val, filter, dict_factory, retain_collection_types): - """ - ``asdict`` only works on attrs instances, this works on anything. - """ - if getattr(val.__class__, "__attrs_attrs__", None) is not None: - # Attrs class. - rv = asdict(val, True, filter, dict_factory, retain_collection_types) - elif isinstance(val, (tuple, list, set)): - cf = val.__class__ if retain_collection_types is True else list - rv = cf( - [ - _asdict_anything( - i, filter, dict_factory, retain_collection_types - ) - for i in val - ] - ) - elif isinstance(val, dict): - df = dict_factory - rv = df( - ( - _asdict_anything(kk, filter, df, retain_collection_types), - _asdict_anything(vv, filter, df, retain_collection_types), - ) - for kk, vv in iteritems(val) - ) - else: - rv = val - return rv - - -def astuple( - inst, - recurse=True, - filter=None, - tuple_factory=tuple, - retain_collection_types=False, -): - """ - Return the ``attrs`` attribute values of *inst* as a tuple. - - Optionally recurse into other ``attrs``-decorated classes. - - :param inst: Instance of an ``attrs``-decorated class. - :param bool recurse: Recurse into classes that are also - ``attrs``-decorated. - :param callable filter: A callable whose return code determines whether an - attribute or element is included (``True``) or dropped (``False``). Is - called with the :class:`attr.Attribute` as the first argument and the - value as the second argument. - :param callable tuple_factory: A callable to produce tuples from. For - example, to produce lists instead of tuples. - :param bool retain_collection_types: Do not convert to ``list`` - or ``dict`` when encountering an attribute which type is - ``tuple``, ``dict`` or ``set``. Only meaningful if ``recurse`` is - ``True``. - - :rtype: return type of *tuple_factory* - - :raise attr.exceptions.NotAnAttrsClassError: If *cls* is not an ``attrs`` - class. - - .. versionadded:: 16.2.0 - """ - attrs = fields(inst.__class__) - rv = [] - retain = retain_collection_types # Very long. :/ - for a in attrs: - v = getattr(inst, a.name) - if filter is not None and not filter(a, v): - continue - if recurse is True: - if has(v.__class__): - rv.append( - astuple( - v, - recurse=True, - filter=filter, - tuple_factory=tuple_factory, - retain_collection_types=retain, - ) - ) - elif isinstance(v, (tuple, list, set)): - cf = v.__class__ if retain is True else list - rv.append( - cf( - [ - astuple( - j, - recurse=True, - filter=filter, - tuple_factory=tuple_factory, - retain_collection_types=retain, - ) - if has(j.__class__) - else j - for j in v - ] - ) - ) - elif isinstance(v, dict): - df = v.__class__ if retain is True else dict - rv.append( - df( - ( - astuple( - kk, - tuple_factory=tuple_factory, - retain_collection_types=retain, - ) - if has(kk.__class__) - else kk, - astuple( - vv, - tuple_factory=tuple_factory, - retain_collection_types=retain, - ) - if has(vv.__class__) - else vv, - ) - for kk, vv in iteritems(v) - ) - ) - else: - rv.append(v) - else: - rv.append(v) - return rv if tuple_factory is list else tuple_factory(rv) - - -def has(cls): - """ - Check whether *cls* is a class with ``attrs`` attributes. - - :param type cls: Class to introspect. - :raise TypeError: If *cls* is not a class. - - :rtype: :class:`bool` - """ - return getattr(cls, "__attrs_attrs__", None) is not None - - -def assoc(inst, **changes): - """ - Copy *inst* and apply *changes*. - - :param inst: Instance of a class with ``attrs`` attributes. - :param changes: Keyword changes in the new copy. - - :return: A copy of inst with *changes* incorporated. - - :raise attr.exceptions.AttrsAttributeNotFoundError: If *attr_name* couldn't - be found on *cls*. - :raise attr.exceptions.NotAnAttrsClassError: If *cls* is not an ``attrs`` - class. - - .. deprecated:: 17.1.0 - Use :func:`evolve` instead. - """ - import warnings - - warnings.warn( - "assoc is deprecated and will be removed after 2018/01.", - DeprecationWarning, - stacklevel=2, - ) - new = copy.copy(inst) - attrs = fields(inst.__class__) - for k, v in iteritems(changes): - a = getattr(attrs, k, NOTHING) - if a is NOTHING: - raise AttrsAttributeNotFoundError( - "{k} is not an attrs attribute on {cl}.".format( - k=k, cl=new.__class__ - ) - ) - _obj_setattr(new, k, v) - return new - - -def evolve(inst, **changes): - """ - Create a new instance, based on *inst* with *changes* applied. - - :param inst: Instance of a class with ``attrs`` attributes. - :param changes: Keyword changes in the new copy. - - :return: A copy of inst with *changes* incorporated. - - :raise TypeError: If *attr_name* couldn't be found in the class - ``__init__``. - :raise attr.exceptions.NotAnAttrsClassError: If *cls* is not an ``attrs`` - class. - - .. versionadded:: 17.1.0 - """ - cls = inst.__class__ - attrs = fields(cls) - for a in attrs: - if not a.init: - continue - attr_name = a.name # To deal with private attributes. - init_name = attr_name if attr_name[0] != "_" else attr_name[1:] - if init_name not in changes: - changes[init_name] = getattr(inst, attr_name) - return cls(**changes) diff --git a/python/attr/_make.py b/python/attr/_make.py deleted file mode 100644 index f7fd05e..0000000 --- a/python/attr/_make.py +++ /dev/null @@ -1,2034 +0,0 @@ -from __future__ import absolute_import, division, print_function - -import copy -import hashlib -import linecache -import sys -import threading -import warnings - -from operator import itemgetter - -from . import _config -from ._compat import ( - PY2, - isclass, - iteritems, - metadata_proxy, - ordered_dict, - set_closure_cell, -) -from .exceptions import ( - DefaultAlreadySetError, - FrozenInstanceError, - NotAnAttrsClassError, - PythonTooOldError, - UnannotatedAttributeError, -) - - -# This is used at least twice, so cache it here. -_obj_setattr = object.__setattr__ -_init_converter_pat = "__attr_converter_{}" -_init_factory_pat = "__attr_factory_{}" -_tuple_property_pat = ( - " {attr_name} = _attrs_property(_attrs_itemgetter({index}))" -) -_classvar_prefixes = ("typing.ClassVar", "t.ClassVar", "ClassVar") -# we don't use a double-underscore prefix because that triggers -# name mangling when trying to create a slot for the field -# (when slots=True) -_hash_cache_field = "_attrs_cached_hash" - -_empty_metadata_singleton = metadata_proxy({}) - - -class _Nothing(object): - """ - Sentinel class to indicate the lack of a value when ``None`` is ambiguous. - - ``_Nothing`` is a singleton. There is only ever one of it. - """ - - _singleton = None - - def __new__(cls): - if _Nothing._singleton is None: - _Nothing._singleton = super(_Nothing, cls).__new__(cls) - return _Nothing._singleton - - def __repr__(self): - return "NOTHING" - - -NOTHING = _Nothing() -""" -Sentinel to indicate the lack of a value when ``None`` is ambiguous. -""" - - -def attrib( - default=NOTHING, - validator=None, - repr=True, - cmp=True, - hash=None, - init=True, - convert=None, - metadata=None, - type=None, - converter=None, - factory=None, - kw_only=False, -): - """ - Create a new attribute on a class. - - .. warning:: - - Does *not* do anything unless the class is also decorated with - :func:`attr.s`! - - :param default: A value that is used if an ``attrs``-generated ``__init__`` - is used and no value is passed while instantiating or the attribute is - excluded using ``init=False``. - - If the value is an instance of :class:`Factory`, its callable will be - used to construct a new value (useful for mutable data types like lists - or dicts). - - If a default is not set (or set manually to ``attr.NOTHING``), a value - *must* be supplied when instantiating; otherwise a :exc:`TypeError` - will be raised. - - The default can also be set using decorator notation as shown below. - - :type default: Any value. - - :param callable factory: Syntactic sugar for - ``default=attr.Factory(callable)``. - - :param validator: :func:`callable` that is called by ``attrs``-generated - ``__init__`` methods after the instance has been initialized. They - receive the initialized instance, the :class:`Attribute`, and the - passed value. - - The return value is *not* inspected so the validator has to throw an - exception itself. - - If a ``list`` is passed, its items are treated as validators and must - all pass. - - Validators can be globally disabled and re-enabled using - :func:`get_run_validators`. - - The validator can also be set using decorator notation as shown below. - - :type validator: ``callable`` or a ``list`` of ``callable``\\ s. - - :param bool repr: Include this attribute in the generated ``__repr__`` - method. - :param bool cmp: Include this attribute in the generated comparison methods - (``__eq__`` et al). - :param hash: Include this attribute in the generated ``__hash__`` - method. If ``None`` (default), mirror *cmp*'s value. This is the - correct behavior according the Python spec. Setting this value to - anything else than ``None`` is *discouraged*. - :type hash: ``bool`` or ``None`` - :param bool init: Include this attribute in the generated ``__init__`` - method. It is possible to set this to ``False`` and set a default - value. In that case this attributed is unconditionally initialized - with the specified default value or factory. - :param callable converter: :func:`callable` that is called by - ``attrs``-generated ``__init__`` methods to converter attribute's value - to the desired format. It is given the passed-in value, and the - returned value will be used as the new value of the attribute. The - value is converted before being passed to the validator, if any. - :param metadata: An arbitrary mapping, to be used by third-party - components. See :ref:`extending_metadata`. - :param type: The type of the attribute. In Python 3.6 or greater, the - preferred method to specify the type is using a variable annotation - (see `PEP 526 <https://www.python.org/dev/peps/pep-0526/>`_). - This argument is provided for backward compatibility. - Regardless of the approach used, the type will be stored on - ``Attribute.type``. - - Please note that ``attrs`` doesn't do anything with this metadata by - itself. You can use it as part of your own code or for - :doc:`static type checking <types>`. - :param kw_only: Make this attribute keyword-only (Python 3+) - in the generated ``__init__`` (if ``init`` is ``False``, this - parameter is ignored). - - .. versionadded:: 15.2.0 *convert* - .. versionadded:: 16.3.0 *metadata* - .. versionchanged:: 17.1.0 *validator* can be a ``list`` now. - .. versionchanged:: 17.1.0 - *hash* is ``None`` and therefore mirrors *cmp* by default. - .. versionadded:: 17.3.0 *type* - .. deprecated:: 17.4.0 *convert* - .. versionadded:: 17.4.0 *converter* as a replacement for the deprecated - *convert* to achieve consistency with other noun-based arguments. - .. versionadded:: 18.1.0 - ``factory=f`` is syntactic sugar for ``default=attr.Factory(f)``. - .. versionadded:: 18.2.0 *kw_only* - """ - if hash is not None and hash is not True and hash is not False: - raise TypeError( - "Invalid value for hash. Must be True, False, or None." - ) - - if convert is not None: - if converter is not None: - raise RuntimeError( - "Can't pass both `convert` and `converter`. " - "Please use `converter` only." - ) - warnings.warn( - "The `convert` argument is deprecated in favor of `converter`. " - "It will be removed after 2019/01.", - DeprecationWarning, - stacklevel=2, - ) - converter = convert - - if factory is not None: - if default is not NOTHING: - raise ValueError( - "The `default` and `factory` arguments are mutually " - "exclusive." - ) - if not callable(factory): - raise ValueError("The `factory` argument must be a callable.") - default = Factory(factory) - - if metadata is None: - metadata = {} - - return _CountingAttr( - default=default, - validator=validator, - repr=repr, - cmp=cmp, - hash=hash, - init=init, - converter=converter, - metadata=metadata, - type=type, - kw_only=kw_only, - ) - - -def _make_attr_tuple_class(cls_name, attr_names): - """ - Create a tuple subclass to hold `Attribute`s for an `attrs` class. - - The subclass is a bare tuple with properties for names. - - class MyClassAttributes(tuple): - __slots__ = () - x = property(itemgetter(0)) - """ - attr_class_name = "{}Attributes".format(cls_name) - attr_class_template = [ - "class {}(tuple):".format(attr_class_name), - " __slots__ = ()", - ] - if attr_names: - for i, attr_name in enumerate(attr_names): - attr_class_template.append( - _tuple_property_pat.format(index=i, attr_name=attr_name) - ) - else: - attr_class_template.append(" pass") - globs = {"_attrs_itemgetter": itemgetter, "_attrs_property": property} - eval(compile("\n".join(attr_class_template), "", "exec"), globs) - - return globs[attr_class_name] - - -# Tuple class for extracted attributes from a class definition. -# `base_attrs` is a subset of `attrs`. -_Attributes = _make_attr_tuple_class( - "_Attributes", - [ - # all attributes to build dunder methods for - "attrs", - # attributes that have been inherited - "base_attrs", - # map inherited attributes to their originating classes - "base_attrs_map", - ], -) - - -def _is_class_var(annot): - """ - Check whether *annot* is a typing.ClassVar. - - The string comparison hack is used to avoid evaluating all string - annotations which would put attrs-based classes at a performance - disadvantage compared to plain old classes. - """ - return str(annot).startswith(_classvar_prefixes) - - -def _get_annotations(cls): - """ - Get annotations for *cls*. - """ - anns = getattr(cls, "__annotations__", None) - if anns is None: - return {} - - # Verify that the annotations aren't merely inherited. - for base_cls in cls.__mro__[1:]: - if anns is getattr(base_cls, "__annotations__", None): - return {} - - return anns - - -def _counter_getter(e): - """ - Key function for sorting to avoid re-creating a lambda for every class. - """ - return e[1].counter - - -def _transform_attrs(cls, these, auto_attribs, kw_only): - """ - Transform all `_CountingAttr`s on a class into `Attribute`s. - - If *these* is passed, use that and don't look for them on the class. - - Return an `_Attributes`. - """ - cd = cls.__dict__ - anns = _get_annotations(cls) - - if these is not None: - ca_list = [(name, ca) for name, ca in iteritems(these)] - - if not isinstance(these, ordered_dict): - ca_list.sort(key=_counter_getter) - elif auto_attribs is True: - ca_names = { - name - for name, attr in cd.items() - if isinstance(attr, _CountingAttr) - } - ca_list = [] - annot_names = set() - for attr_name, type in anns.items(): - if _is_class_var(type): - continue - annot_names.add(attr_name) - a = cd.get(attr_name, NOTHING) - if not isinstance(a, _CountingAttr): - if a is NOTHING: - a = attrib() - else: - a = attrib(default=a) - ca_list.append((attr_name, a)) - - unannotated = ca_names - annot_names - if len(unannotated) > 0: - raise UnannotatedAttributeError( - "The following `attr.ib`s lack a type annotation: " - + ", ".join( - sorted(unannotated, key=lambda n: cd.get(n).counter) - ) - + "." - ) - else: - ca_list = sorted( - ( - (name, attr) - for name, attr in cd.items() - if isinstance(attr, _CountingAttr) - ), - key=lambda e: e[1].counter, - ) - - own_attrs = [ - Attribute.from_counting_attr( - name=attr_name, ca=ca, type=anns.get(attr_name) - ) - for attr_name, ca in ca_list - ] - - base_attrs = [] - base_attr_map = {} # A dictionary of base attrs to their classes. - taken_attr_names = {a.name: a for a in own_attrs} - - # Traverse the MRO and collect attributes. - for base_cls in cls.__mro__[1:-1]: - sub_attrs = getattr(base_cls, "__attrs_attrs__", None) - if sub_attrs is not None: - for a in sub_attrs: - prev_a = taken_attr_names.get(a.name) - # Only add an attribute if it hasn't been defined before. This - # allows for overwriting attribute definitions by subclassing. - if prev_a is None: - base_attrs.append(a) - taken_attr_names[a.name] = a - base_attr_map[a.name] = base_cls - - attr_names = [a.name for a in base_attrs + own_attrs] - - AttrsClass = _make_attr_tuple_class(cls.__name__, attr_names) - - if kw_only: - own_attrs = [a._assoc(kw_only=True) for a in own_attrs] - base_attrs = [a._assoc(kw_only=True) for a in base_attrs] - - attrs = AttrsClass(base_attrs + own_attrs) - - had_default = False - was_kw_only = False - for a in attrs: - if ( - was_kw_only is False - and had_default is True - and a.default is NOTHING - and a.init is True - and a.kw_only is False - ): - raise ValueError( - "No mandatory attributes allowed after an attribute with a " - "default value or factory. Attribute in question: %r" % (a,) - ) - elif ( - had_default is False - and a.default is not NOTHING - and a.init is not False - and - # Keyword-only attributes without defaults can be specified - # after keyword-only attributes with defaults. - a.kw_only is False - ): - had_default = True - if was_kw_only is True and a.kw_only is False: - raise ValueError( - "Non keyword-only attributes are not allowed after a " - "keyword-only attribute. Attribute in question: {a!r}".format( - a=a - ) - ) - if was_kw_only is False and a.init is True and a.kw_only is True: - was_kw_only = True - - return _Attributes((attrs, base_attrs, base_attr_map)) - - -def _frozen_setattrs(self, name, value): - """ - Attached to frozen classes as __setattr__. - """ - raise FrozenInstanceError() - - -def _frozen_delattrs(self, name): - """ - Attached to frozen classes as __delattr__. - """ - raise FrozenInstanceError() - - -class _ClassBuilder(object): - """ - Iteratively build *one* class. - """ - - __slots__ = ( - "_cls", - "_cls_dict", - "_attrs", - "_base_names", - "_attr_names", - "_slots", - "_frozen", - "_weakref_slot", - "_cache_hash", - "_has_post_init", - "_delete_attribs", - "_base_attr_map", - ) - - def __init__( - self, - cls, - these, - slots, - frozen, - weakref_slot, - auto_attribs, - kw_only, - cache_hash, - ): - attrs, base_attrs, base_map = _transform_attrs( - cls, these, auto_attribs, kw_only - ) - - self._cls = cls - self._cls_dict = dict(cls.__dict__) if slots else {} - self._attrs = attrs - self._base_names = set(a.name for a in base_attrs) - self._base_attr_map = base_map - self._attr_names = tuple(a.name for a in attrs) - self._slots = slots - self._frozen = frozen or _has_frozen_base_class(cls) - self._weakref_slot = weakref_slot - self._cache_hash = cache_hash - self._has_post_init = bool(getattr(cls, "__attrs_post_init__", False)) - self._delete_attribs = not bool(these) - - self._cls_dict["__attrs_attrs__"] = self._attrs - - if frozen: - self._cls_dict["__setattr__"] = _frozen_setattrs - self._cls_dict["__delattr__"] = _frozen_delattrs - - def __repr__(self): - return "<_ClassBuilder(cls={cls})>".format(cls=self._cls.__name__) - - def build_class(self): - """ - Finalize class based on the accumulated configuration. - - Builder cannot be used after calling this method. - """ - if self._slots is True: - return self._create_slots_class() - else: - return self._patch_original_class() - - def _patch_original_class(self): - """ - Apply accumulated methods and return the class. - """ - cls = self._cls - base_names = self._base_names - - # Clean class of attribute definitions (`attr.ib()`s). - if self._delete_attribs: - for name in self._attr_names: - if ( - name not in base_names - and getattr(cls, name, None) is not None - ): - try: - delattr(cls, name) - except AttributeError: - # This can happen if a base class defines a class - # variable and we want to set an attribute with the - # same name by using only a type annotation. - pass - - # Attach our dunder methods. - for name, value in self._cls_dict.items(): - setattr(cls, name, value) - - return cls - - def _create_slots_class(self): - """ - Build and return a new class with a `__slots__` attribute. - """ - base_names = self._base_names - cd = { - k: v - for k, v in iteritems(self._cls_dict) - if k not in tuple(self._attr_names) + ("__dict__", "__weakref__") - } - - weakref_inherited = False - - # Traverse the MRO to check for an existing __weakref__. - for base_cls in self._cls.__mro__[1:-1]: - if "__weakref__" in getattr(base_cls, "__dict__", ()): - weakref_inherited = True - break - - names = self._attr_names - if ( - self._weakref_slot - and "__weakref__" not in getattr(self._cls, "__slots__", ()) - and "__weakref__" not in names - and not weakref_inherited - ): - names += ("__weakref__",) - - # We only add the names of attributes that aren't inherited. - # Settings __slots__ to inherited attributes wastes memory. - slot_names = [name for name in names if name not in base_names] - if self._cache_hash: - slot_names.append(_hash_cache_field) - cd["__slots__"] = tuple(slot_names) - - qualname = getattr(self._cls, "__qualname__", None) - if qualname is not None: - cd["__qualname__"] = qualname - - # __weakref__ is not writable. - state_attr_names = tuple( - an for an in self._attr_names if an != "__weakref__" - ) - - def slots_getstate(self): - """ - Automatically created by attrs. - """ - return tuple(getattr(self, name) for name in state_attr_names) - - def slots_setstate(self, state): - """ - Automatically created by attrs. - """ - __bound_setattr = _obj_setattr.__get__(self, Attribute) - for name, value in zip(state_attr_names, state): - __bound_setattr(name, value) - - # slots and frozen require __getstate__/__setstate__ to work - cd["__getstate__"] = slots_getstate - cd["__setstate__"] = slots_setstate - - # Create new class based on old class and our methods. - cls = type(self._cls)(self._cls.__name__, self._cls.__bases__, cd) - - # The following is a fix for - # https://github.com/python-attrs/attrs/issues/102. On Python 3, - # if a method mentions `__class__` or uses the no-arg super(), the - # compiler will bake a reference to the class in the method itself - # as `method.__closure__`. Since we replace the class with a - # clone, we rewrite these references so it keeps working. - for item in cls.__dict__.values(): - if isinstance(item, (classmethod, staticmethod)): - # Class- and staticmethods hide their functions inside. - # These might need to be rewritten as well. - closure_cells = getattr(item.__func__, "__closure__", None) - else: - closure_cells = getattr(item, "__closure__", None) - - if not closure_cells: # Catch None or the empty list. - continue - for cell in closure_cells: - if cell.cell_contents is self._cls: - set_closure_cell(cell, cls) - - return cls - - def add_repr(self, ns): - self._cls_dict["__repr__"] = self._add_method_dunders( - _make_repr(self._attrs, ns=ns) - ) - return self - - def add_str(self): - repr = self._cls_dict.get("__repr__") - if repr is None: - raise ValueError( - "__str__ can only be generated if a __repr__ exists." - ) - - def __str__(self): - return self.__repr__() - - self._cls_dict["__str__"] = self._add_method_dunders(__str__) - return self - - def make_unhashable(self): - self._cls_dict["__hash__"] = None - return self - - def add_hash(self): - self._cls_dict["__hash__"] = self._add_method_dunders( - _make_hash( - self._attrs, frozen=self._frozen, cache_hash=self._cache_hash - ) - ) - - return self - - def add_init(self): - self._cls_dict["__init__"] = self._add_method_dunders( - _make_init( - self._attrs, - self._has_post_init, - self._frozen, - self._slots, - self._cache_hash, - self._base_attr_map, - ) - ) - - return self - - def add_cmp(self): - cd = self._cls_dict - - cd["__eq__"], cd["__ne__"], cd["__lt__"], cd["__le__"], cd[ - "__gt__" - ], cd["__ge__"] = ( - self._add_method_dunders(meth) for meth in _make_cmp(self._attrs) - ) - - return self - - def _add_method_dunders(self, method): - """ - Add __module__ and __qualname__ to a *method* if possible. - """ - try: - method.__module__ = self._cls.__module__ - except AttributeError: - pass - - try: - method.__qualname__ = ".".join( - (self._cls.__qualname__, method.__name__) - ) - except AttributeError: - pass - - return method - - -def attrs( - maybe_cls=None, - these=None, - repr_ns=None, - repr=True, - cmp=True, - hash=None, - init=True, - slots=False, - frozen=False, - weakref_slot=True, - str=False, - auto_attribs=False, - kw_only=False, - cache_hash=False, -): - r""" - A class decorator that adds `dunder - <https://wiki.python.org/moin/DunderAlias>`_\ -methods according to the - specified attributes using :func:`attr.ib` or the *these* argument. - - :param these: A dictionary of name to :func:`attr.ib` mappings. This is - useful to avoid the definition of your attributes within the class body - because you can't (e.g. if you want to add ``__repr__`` methods to - Django models) or don't want to. - - If *these* is not ``None``, ``attrs`` will *not* search the class body - for attributes and will *not* remove any attributes from it. - - If *these* is an ordered dict (:class:`dict` on Python 3.6+, - :class:`collections.OrderedDict` otherwise), the order is deduced from - the order of the attributes inside *these*. Otherwise the order - of the definition of the attributes is used. - - :type these: :class:`dict` of :class:`str` to :func:`attr.ib` - - :param str repr_ns: When using nested classes, there's no way in Python 2 - to automatically detect that. Therefore it's possible to set the - namespace explicitly for a more meaningful ``repr`` output. - :param bool repr: Create a ``__repr__`` method with a human readable - representation of ``attrs`` attributes.. - :param bool str: Create a ``__str__`` method that is identical to - ``__repr__``. This is usually not necessary except for - :class:`Exception`\ s. - :param bool cmp: Create ``__eq__``, ``__ne__``, ``__lt__``, ``__le__``, - ``__gt__``, and ``__ge__`` methods that compare the class as if it were - a tuple of its ``attrs`` attributes. But the attributes are *only* - compared, if the types of both classes are *identical*! - :param hash: If ``None`` (default), the ``__hash__`` method is generated - according how *cmp* and *frozen* are set. - - 1. If *both* are True, ``attrs`` will generate a ``__hash__`` for you. - 2. If *cmp* is True and *frozen* is False, ``__hash__`` will be set to - None, marking it unhashable (which it is). - 3. If *cmp* is False, ``__hash__`` will be left untouched meaning the - ``__hash__`` method of the base class will be used (if base class is - ``object``, this means it will fall back to id-based hashing.). - - Although not recommended, you can decide for yourself and force - ``attrs`` to create one (e.g. if the class is immutable even though you - didn't freeze it programmatically) by passing ``True`` or not. Both of - these cases are rather special and should be used carefully. - - See the `Python documentation \ - <https://docs.python.org/3/reference/datamodel.html#object.__hash__>`_ - and the `GitHub issue that led to the default behavior \ - <https://github.com/python-attrs/attrs/issues/136>`_ for more details. - :type hash: ``bool`` or ``None`` - :param bool init: Create a ``__init__`` method that initializes the - ``attrs`` attributes. Leading underscores are stripped for the - argument name. If a ``__attrs_post_init__`` method exists on the - class, it will be called after the class is fully initialized. - :param bool slots: Create a slots_-style class that's more - memory-efficient. See :ref:`slots` for further ramifications. - :param bool frozen: Make instances immutable after initialization. If - someone attempts to modify a frozen instance, - :exc:`attr.exceptions.FrozenInstanceError` is raised. - - Please note: - - 1. This is achieved by installing a custom ``__setattr__`` method - on your class so you can't implement an own one. - - 2. True immutability is impossible in Python. - - 3. This *does* have a minor a runtime performance :ref:`impact - <how-frozen>` when initializing new instances. In other words: - ``__init__`` is slightly slower with ``frozen=True``. - - 4. If a class is frozen, you cannot modify ``self`` in - ``__attrs_post_init__`` or a self-written ``__init__``. You can - circumvent that limitation by using - ``object.__setattr__(self, "attribute_name", value)``. - - .. _slots: https://docs.python.org/3/reference/datamodel.html#slots - :param bool weakref_slot: Make instances weak-referenceable. This has no - effect unless ``slots`` is also enabled. - :param bool auto_attribs: If True, collect `PEP 526`_-annotated attributes - (Python 3.6 and later only) from the class body. - - In this case, you **must** annotate every field. If ``attrs`` - encounters a field that is set to an :func:`attr.ib` but lacks a type - annotation, an :exc:`attr.exceptions.UnannotatedAttributeError` is - raised. Use ``field_name: typing.Any = attr.ib(...)`` if you don't - want to set a type. - - If you assign a value to those attributes (e.g. ``x: int = 42``), that - value becomes the default value like if it were passed using - ``attr.ib(default=42)``. Passing an instance of :class:`Factory` also - works as expected. - - Attributes annotated as :data:`typing.ClassVar` are **ignored**. - - .. _`PEP 526`: https://www.python.org/dev/peps/pep-0526/ - :param bool kw_only: Make all attributes keyword-only (Python 3+) - in the generated ``__init__`` (if ``init`` is ``False``, this - parameter is ignored). - :param bool cache_hash: Ensure that the object's hash code is computed - only once and stored on the object. If this is set to ``True``, - hashing must be either explicitly or implicitly enabled for this - class. If the hash code is cached, then no attributes of this - class which participate in hash code computation may be mutated - after object creation. - - - .. versionadded:: 16.0.0 *slots* - .. versionadded:: 16.1.0 *frozen* - .. versionadded:: 16.3.0 *str* - .. versionadded:: 16.3.0 Support for ``__attrs_post_init__``. - .. versionchanged:: 17.1.0 - *hash* supports ``None`` as value which is also the default now. - .. versionadded:: 17.3.0 *auto_attribs* - .. versionchanged:: 18.1.0 - If *these* is passed, no attributes are deleted from the class body. - .. versionchanged:: 18.1.0 If *these* is ordered, the order is retained. - .. versionadded:: 18.2.0 *weakref_slot* - .. deprecated:: 18.2.0 - ``__lt__``, ``__le__``, ``__gt__``, and ``__ge__`` now raise a - :class:`DeprecationWarning` if the classes compared are subclasses of - each other. ``__eq`` and ``__ne__`` never tried to compared subclasses - to each other. - .. versionadded:: 18.2.0 *kw_only* - .. versionadded:: 18.2.0 *cache_hash* - """ - - def wrap(cls): - if getattr(cls, "__class__", None) is None: - raise TypeError("attrs only works with new-style classes.") - - builder = _ClassBuilder( - cls, - these, - slots, - frozen, - weakref_slot, - auto_attribs, - kw_only, - cache_hash, - ) - - if repr is True: - builder.add_repr(repr_ns) - if str is True: - builder.add_str() - if cmp is True: - builder.add_cmp() - - if hash is not True and hash is not False and hash is not None: - # Can't use `hash in` because 1 == True for example. - raise TypeError( - "Invalid value for hash. Must be True, False, or None." - ) - elif hash is False or (hash is None and cmp is False): - if cache_hash: - raise TypeError( - "Invalid value for cache_hash. To use hash caching," - " hashing must be either explicitly or implicitly " - "enabled." - ) - elif hash is True or (hash is None and cmp is True and frozen is True): - builder.add_hash() - else: - if cache_hash: - raise TypeError( - "Invalid value for cache_hash. To use hash caching," - " hashing must be either explicitly or implicitly " - "enabled." - ) - builder.make_unhashable() - - if init is True: - builder.add_init() - else: - if cache_hash: - raise TypeError( - "Invalid value for cache_hash. To use hash caching," - " init must be True." - ) - - return builder.build_class() - - # maybe_cls's type depends on the usage of the decorator. It's a class - # if it's used as `@attrs` but ``None`` if used as `@attrs()`. - if maybe_cls is None: - return wrap - else: - return wrap(maybe_cls) - - -_attrs = attrs -""" -Internal alias so we can use it in functions that take an argument called -*attrs*. -""" - - -if PY2: - - def _has_frozen_base_class(cls): - """ - Check whether *cls* has a frozen ancestor by looking at its - __setattr__. - """ - return ( - getattr(cls.__setattr__, "__module__", None) - == _frozen_setattrs.__module__ - and cls.__setattr__.__name__ == _frozen_setattrs.__name__ - ) - - -else: - - def _has_frozen_base_class(cls): - """ - Check whether *cls* has a frozen ancestor by looking at its - __setattr__. - """ - return cls.__setattr__ == _frozen_setattrs - - -def _attrs_to_tuple(obj, attrs): - """ - Create a tuple of all values of *obj*'s *attrs*. - """ - return tuple(getattr(obj, a.name) for a in attrs) - - -def _make_hash(attrs, frozen, cache_hash): - attrs = tuple( - a - for a in attrs - if a.hash is True or (a.hash is None and a.cmp is True) - ) - - tab = " " - - # We cache the generated hash methods for the same kinds of attributes. - sha1 = hashlib.sha1() - sha1.update(repr(attrs).encode("utf-8")) - unique_filename = "<attrs generated hash %s>" % (sha1.hexdigest(),) - type_hash = hash(unique_filename) - - method_lines = ["def __hash__(self):"] - - def append_hash_computation_lines(prefix, indent): - """ - Generate the code for actually computing the hash code. - Below this will either be returned directly or used to compute - a value which is then cached, depending on the value of cache_hash - """ - method_lines.extend( - [indent + prefix + "hash((", indent + " %d," % (type_hash,)] - ) - - for a in attrs: - method_lines.append(indent + " self.%s," % a.name) - - method_lines.append(indent + " ))") - - if cache_hash: - method_lines.append(tab + "if self.%s is None:" % _hash_cache_field) - if frozen: - append_hash_computation_lines( - "object.__setattr__(self, '%s', " % _hash_cache_field, tab * 2 - ) - method_lines.append(tab * 2 + ")") # close __setattr__ - else: - append_hash_computation_lines( - "self.%s = " % _hash_cache_field, tab * 2 - ) - method_lines.append(tab + "return self.%s" % _hash_cache_field) - else: - append_hash_computation_lines("return ", tab) - - script = "\n".join(method_lines) - globs = {} - locs = {} - bytecode = compile(script, unique_filename, "exec") - eval(bytecode, globs, locs) - - # In order of debuggers like PDB being able to step through the code, - # we add a fake linecache entry. - linecache.cache[unique_filename] = ( - len(script), - None, - script.splitlines(True), - unique_filename, - ) - - return locs["__hash__"] - - -def _add_hash(cls, attrs): - """ - Add a hash method to *cls*. - """ - cls.__hash__ = _make_hash(attrs, frozen=False, cache_hash=False) - return cls - - -def __ne__(self, other): - """ - Check equality and either forward a NotImplemented or return the result - negated. - """ - result = self.__eq__(other) - if result is NotImplemented: - return NotImplemented - - return not result - - -WARNING_CMP_ISINSTANCE = ( - "Comparision of subclasses using __%s__ is deprecated and will be removed " - "in 2019." -) - - -def _make_cmp(attrs): - attrs = [a for a in attrs if a.cmp] - - # We cache the generated eq methods for the same kinds of attributes. - sha1 = hashlib.sha1() - sha1.update(repr(attrs).encode("utf-8")) - unique_filename = "<attrs generated eq %s>" % (sha1.hexdigest(),) - lines = [ - "def __eq__(self, other):", - " if other.__class__ is not self.__class__:", - " return NotImplemented", - ] - # We can't just do a big self.x = other.x and... clause due to - # irregularities like nan == nan is false but (nan,) == (nan,) is true. - if attrs: - lines.append(" return (") - others = [" ) == ("] - for a in attrs: - lines.append(" self.%s," % (a.name,)) - others.append(" other.%s," % (a.name,)) - - lines += others + [" )"] - else: - lines.append(" return True") - - script = "\n".join(lines) - globs = {} - locs = {} - bytecode = compile(script, unique_filename, "exec") - eval(bytecode, globs, locs) - - # In order of debuggers like PDB being able to step through the code, - # we add a fake linecache entry. - linecache.cache[unique_filename] = ( - len(script), - None, - script.splitlines(True), - unique_filename, - ) - eq = locs["__eq__"] - ne = __ne__ - - def attrs_to_tuple(obj): - """ - Save us some typing. - """ - return _attrs_to_tuple(obj, attrs) - - def __lt__(self, other): - """ - Automatically created by attrs. - """ - if isinstance(other, self.__class__): - if other.__class__ is not self.__class__: - warnings.warn( - WARNING_CMP_ISINSTANCE % ("lt",), DeprecationWarning - ) - return attrs_to_tuple(self) < attrs_to_tuple(other) - else: - return NotImplemented - - def __le__(self, other): - """ - Automatically created by attrs. - """ - if isinstance(other, self.__class__): - if other.__class__ is not self.__class__: - warnings.warn( - WARNING_CMP_ISINSTANCE % ("le",), DeprecationWarning - ) - return attrs_to_tuple(self) <= attrs_to_tuple(other) - else: - return NotImplemented - - def __gt__(self, other): - """ - Automatically created by attrs. - """ - if isinstance(other, self.__class__): - if other.__class__ is not self.__class__: - warnings.warn( - WARNING_CMP_ISINSTANCE % ("gt",), DeprecationWarning - ) - return attrs_to_tuple(self) > attrs_to_tuple(other) - else: - return NotImplemented - - def __ge__(self, other): - """ - Automatically created by attrs. - """ - if isinstance(other, self.__class__): - if other.__class__ is not self.__class__: - warnings.warn( - WARNING_CMP_ISINSTANCE % ("ge",), DeprecationWarning - ) - return attrs_to_tuple(self) >= attrs_to_tuple(other) - else: - return NotImplemented - - return eq, ne, __lt__, __le__, __gt__, __ge__ - - -def _add_cmp(cls, attrs=None): - """ - Add comparison methods to *cls*. - """ - if attrs is None: - attrs = cls.__attrs_attrs__ - - cls.__eq__, cls.__ne__, cls.__lt__, cls.__le__, cls.__gt__, cls.__ge__ = _make_cmp( # noqa - attrs - ) - - return cls - - -_already_repring = threading.local() - - -def _make_repr(attrs, ns): - """ - Make a repr method for *attr_names* adding *ns* to the full name. - """ - attr_names = tuple(a.name for a in attrs if a.repr) - - def __repr__(self): - """ - Automatically created by attrs. - """ - try: - working_set = _already_repring.working_set - except AttributeError: - working_set = set() - _already_repring.working_set = working_set - - if id(self) in working_set: - return "..." - real_cls = self.__class__ - if ns is None: - qualname = getattr(real_cls, "__qualname__", None) - if qualname is not None: - class_name = qualname.rsplit(">.", 1)[-1] - else: - class_name = real_cls.__name__ - else: - class_name = ns + "." + real_cls.__name__ - - # Since 'self' remains on the stack (i.e.: strongly referenced) for the - # duration of this call, it's safe to depend on id(...) stability, and - # not need to track the instance and therefore worry about properties - # like weakref- or hash-ability. - working_set.add(id(self)) - try: - result = [class_name, "("] - first = True - for name in attr_names: - if first: - first = False - else: - result.append(", ") - result.extend((name, "=", repr(getattr(self, name, NOTHING)))) - return "".join(result) + ")" - finally: - working_set.remove(id(self)) - - return __repr__ - - -def _add_repr(cls, ns=None, attrs=None): - """ - Add a repr method to *cls*. - """ - if attrs is None: - attrs = cls.__attrs_attrs__ - - cls.__repr__ = _make_repr(attrs, ns) - return cls - - -def _make_init(attrs, post_init, frozen, slots, cache_hash, base_attr_map): - attrs = [a for a in attrs if a.init or a.default is not NOTHING] - - # We cache the generated init methods for the same kinds of attributes. - sha1 = hashlib.sha1() - sha1.update(repr(attrs).encode("utf-8")) - unique_filename = "<attrs generated init {0}>".format(sha1.hexdigest()) - - script, globs, annotations = _attrs_to_init_script( - attrs, frozen, slots, post_init, cache_hash, base_attr_map - ) - locs = {} - bytecode = compile(script, unique_filename, "exec") - attr_dict = dict((a.name, a) for a in attrs) - globs.update({"NOTHING": NOTHING, "attr_dict": attr_dict}) - if frozen is True: - # Save the lookup overhead in __init__ if we need to circumvent - # immutability. - globs["_cached_setattr"] = _obj_setattr - eval(bytecode, globs, locs) - - # In order of debuggers like PDB being able to step through the code, - # we add a fake linecache entry. - linecache.cache[unique_filename] = ( - len(script), - None, - script.splitlines(True), - unique_filename, - ) - - __init__ = locs["__init__"] - __init__.__annotations__ = annotations - return __init__ - - -def _add_init(cls, frozen): - """ - Add a __init__ method to *cls*. If *frozen* is True, make it immutable. - """ - cls.__init__ = _make_init( - cls.__attrs_attrs__, - getattr(cls, "__attrs_post_init__", False), - frozen, - _is_slot_cls(cls), - cache_hash=False, - base_attr_map={}, - ) - return cls - - -def fields(cls): - """ - Return the tuple of ``attrs`` attributes for a class. - - The tuple also allows accessing the fields by their names (see below for - examples). - - :param type cls: Class to introspect. - - :raise TypeError: If *cls* is not a class. - :raise attr.exceptions.NotAnAttrsClassError: If *cls* is not an ``attrs`` - class. - - :rtype: tuple (with name accessors) of :class:`attr.Attribute` - - .. versionchanged:: 16.2.0 Returned tuple allows accessing the fields - by name. - """ - if not isclass(cls): - raise TypeError("Passed object must be a class.") - attrs = getattr(cls, "__attrs_attrs__", None) - if attrs is None: - raise NotAnAttrsClassError( - "{cls!r} is not an attrs-decorated class.".format(cls=cls) - ) - return attrs - - -def fields_dict(cls): - """ - Return an ordered dictionary of ``attrs`` attributes for a class, whose - keys are the attribute names. - - :param type cls: Class to introspect. - - :raise TypeError: If *cls* is not a class. - :raise attr.exceptions.NotAnAttrsClassError: If *cls* is not an ``attrs`` - class. - - :rtype: an ordered dict where keys are attribute names and values are - :class:`attr.Attribute`\\ s. This will be a :class:`dict` if it's - naturally ordered like on Python 3.6+ or an - :class:`~collections.OrderedDict` otherwise. - - .. versionadded:: 18.1.0 - """ - if not isclass(cls): - raise TypeError("Passed object must be a class.") - attrs = getattr(cls, "__attrs_attrs__", None) - if attrs is None: - raise NotAnAttrsClassError( - "{cls!r} is not an attrs-decorated class.".format(cls=cls) - ) - return ordered_dict(((a.name, a) for a in attrs)) - - -def validate(inst): - """ - Validate all attributes on *inst* that have a validator. - - Leaves all exceptions through. - - :param inst: Instance of a class with ``attrs`` attributes. - """ - if _config._run_validators is False: - return - - for a in fields(inst.__class__): - v = a.validator - if v is not None: - v(inst, a, getattr(inst, a.name)) - - -def _is_slot_cls(cls): - return "__slots__" in cls.__dict__ - - -def _is_slot_attr(a_name, base_attr_map): - """ - Check if the attribute name comes from a slot class. - """ - return a_name in base_attr_map and _is_slot_cls(base_attr_map[a_name]) - - -def _attrs_to_init_script( - attrs, frozen, slots, post_init, cache_hash, base_attr_map -): - """ - Return a script of an initializer for *attrs* and a dict of globals. - - The globals are expected by the generated script. - - If *frozen* is True, we cannot set the attributes directly so we use - a cached ``object.__setattr__``. - """ - lines = [] - any_slot_ancestors = any( - _is_slot_attr(a.name, base_attr_map) for a in attrs - ) - if frozen is True: - if slots is True: - lines.append( - # Circumvent the __setattr__ descriptor to save one lookup per - # assignment. - # Note _setattr will be used again below if cache_hash is True - "_setattr = _cached_setattr.__get__(self, self.__class__)" - ) - - def fmt_setter(attr_name, value_var): - return "_setattr('%(attr_name)s', %(value_var)s)" % { - "attr_name": attr_name, - "value_var": value_var, - } - - def fmt_setter_with_converter(attr_name, value_var): - conv_name = _init_converter_pat.format(attr_name) - return "_setattr('%(attr_name)s', %(conv)s(%(value_var)s))" % { - "attr_name": attr_name, - "value_var": value_var, - "conv": conv_name, - } - - else: - # Dict frozen classes assign directly to __dict__. - # But only if the attribute doesn't come from an ancestor slot - # class. - # Note _inst_dict will be used again below if cache_hash is True - lines.append("_inst_dict = self.__dict__") - if any_slot_ancestors: - lines.append( - # Circumvent the __setattr__ descriptor to save one lookup - # per assignment. - "_setattr = _cached_setattr.__get__(self, self.__class__)" - ) - - def fmt_setter(attr_name, value_var): - if _is_slot_attr(attr_name, base_attr_map): - res = "_setattr('%(attr_name)s', %(value_var)s)" % { - "attr_name": attr_name, - "value_var": value_var, - } - else: - res = "_inst_dict['%(attr_name)s'] = %(value_var)s" % { - "attr_name": attr_name, - "value_var": value_var, - } - return res - - def fmt_setter_with_converter(attr_name, value_var): - conv_name = _init_converter_pat.format(attr_name) - if _is_slot_attr(attr_name, base_attr_map): - tmpl = "_setattr('%(attr_name)s', %(c)s(%(value_var)s))" - else: - tmpl = "_inst_dict['%(attr_name)s'] = %(c)s(%(value_var)s)" - return tmpl % { - "attr_name": attr_name, - "value_var": value_var, - "c": conv_name, - } - - else: - # Not frozen. - def fmt_setter(attr_name, value): - return "self.%(attr_name)s = %(value)s" % { - "attr_name": attr_name, - "value": value, - } - - def fmt_setter_with_converter(attr_name, value_var): - conv_name = _init_converter_pat.format(attr_name) - return "self.%(attr_name)s = %(conv)s(%(value_var)s)" % { - "attr_name": attr_name, - "value_var": value_var, - "conv": conv_name, - } - - args = [] - kw_only_args = [] - attrs_to_validate = [] - - # This is a dictionary of names to validator and converter callables. - # Injecting this into __init__ globals lets us avoid lookups. - names_for_globals = {} - annotations = {"return": None} - - for a in attrs: - if a.validator: - attrs_to_validate.append(a) - attr_name = a.name - arg_name = a.name.lstrip("_") - has_factory = isinstance(a.default, Factory) - if has_factory and a.default.takes_self: - maybe_self = "self" - else: - maybe_self = "" - if a.init is False: - if has_factory: - init_factory_name = _init_factory_pat.format(a.name) - if a.converter is not None: - lines.append( - fmt_setter_with_converter( - attr_name, - init_factory_name + "({0})".format(maybe_self), - ) - ) - conv_name = _init_converter_pat.format(a.name) - names_for_globals[conv_name] = a.converter - else: - lines.append( - fmt_setter( - attr_name, - init_factory_name + "({0})".format(maybe_self), - ) - ) - names_for_globals[init_factory_name] = a.default.factory - else: - if a.converter is not None: - lines.append( - fmt_setter_with_converter( - attr_name, - "attr_dict['{attr_name}'].default".format( - attr_name=attr_name - ), - ) - ) - conv_name = _init_converter_pat.format(a.name) - names_for_globals[conv_name] = a.converter - else: - lines.append( - fmt_setter( - attr_name, - "attr_dict['{attr_name}'].default".format( - attr_name=attr_name - ), - ) - ) - elif a.default is not NOTHING and not has_factory: - arg = "{arg_name}=attr_dict['{attr_name}'].default".format( - arg_name=arg_name, attr_name=attr_name - ) - if a.kw_only: - kw_only_args.append(arg) - else: - args.append(arg) - if a.converter is not None: - lines.append(fmt_setter_with_converter(attr_name, arg_name)) - names_for_globals[ - _init_converter_pat.format(a.name) - ] = a.converter - else: - lines.append(fmt_setter(attr_name, arg_name)) - elif has_factory: - arg = "{arg_name}=NOTHING".format(arg_name=arg_name) - if a.kw_only: - kw_only_args.append(arg) - else: - args.append(arg) - lines.append( - "if {arg_name} is not NOTHING:".format(arg_name=arg_name) - ) - init_factory_name = _init_factory_pat.format(a.name) - if a.converter is not None: - lines.append( - " " + fmt_setter_with_converter(attr_name, arg_name) - ) - lines.append("else:") - lines.append( - " " - + fmt_setter_with_converter( - attr_name, - init_factory_name + "({0})".format(maybe_self), - ) - ) - names_for_globals[ - _init_converter_pat.format(a.name) - ] = a.converter - else: - lines.append(" " + fmt_setter(attr_name, arg_name)) - lines.append("else:") - lines.append( - " " - + fmt_setter( - attr_name, - init_factory_name + "({0})".format(maybe_self), - ) - ) - names_for_globals[init_factory_name] = a.default.factory - else: - if a.kw_only: - kw_only_args.append(arg_name) - else: - args.append(arg_name) - if a.converter is not None: - lines.append(fmt_setter_with_converter(attr_name, arg_name)) - names_for_globals[ - _init_converter_pat.format(a.name) - ] = a.converter - else: - lines.append(fmt_setter(attr_name, arg_name)) - - if a.init is True and a.converter is None and a.type is not None: - annotations[arg_name] = a.type - - if attrs_to_validate: # we can skip this if there are no validators. - names_for_globals["_config"] = _config - lines.append("if _config._run_validators is True:") - for a in attrs_to_validate: - val_name = "__attr_validator_{}".format(a.name) - attr_name = "__attr_{}".format(a.name) - lines.append( - " {}(self, {}, self.{})".format(val_name, attr_name, a.name) - ) - names_for_globals[val_name] = a.validator - names_for_globals[attr_name] = a - if post_init: - lines.append("self.__attrs_post_init__()") - - # because this is set only after __attrs_post_init is called, a crash - # will result if post-init tries to access the hash code. This seemed - # preferable to setting this beforehand, in which case alteration to - # field values during post-init combined with post-init accessing the - # hash code would result in silent bugs. - if cache_hash: - if frozen: - if slots: - # if frozen and slots, then _setattr defined above - init_hash_cache = "_setattr('%s', %s)" - else: - # if frozen and not slots, then _inst_dict defined above - init_hash_cache = "_inst_dict['%s'] = %s" - else: - init_hash_cache = "self.%s = %s" - lines.append(init_hash_cache % (_hash_cache_field, "None")) - - args = ", ".join(args) - if kw_only_args: - if PY2: - raise PythonTooOldError( - "Keyword-only arguments only work on Python 3 and later." - ) - - args += "{leading_comma}*, {kw_only_args}".format( - leading_comma=", " if args else "", - kw_only_args=", ".join(kw_only_args), - ) - return ( - """\ -def __init__(self, {args}): - {lines} -""".format( - args=args, lines="\n ".join(lines) if lines else "pass" - ), - names_for_globals, - annotations, - ) - - -class Attribute(object): - """ - *Read-only* representation of an attribute. - - :attribute name: The name of the attribute. - - Plus *all* arguments of :func:`attr.ib`. - - For the version history of the fields, see :func:`attr.ib`. - """ - - __slots__ = ( - "name", - "default", - "validator", - "repr", - "cmp", - "hash", - "init", - "metadata", - "type", - "converter", - "kw_only", - ) - - def __init__( - self, - name, - default, - validator, - repr, - cmp, - hash, - init, - convert=None, - metadata=None, - type=None, - converter=None, - kw_only=False, - ): - # Cache this descriptor here to speed things up later. - bound_setattr = _obj_setattr.__get__(self, Attribute) - - # Despite the big red warning, people *do* instantiate `Attribute` - # themselves. - if convert is not None: - if converter is not None: - raise RuntimeError( - "Can't pass both `convert` and `converter`. " - "Please use `converter` only." - ) - warnings.warn( - "The `convert` argument is deprecated in favor of `converter`." - " It will be removed after 2019/01.", - DeprecationWarning, - stacklevel=2, - ) - converter = convert - - bound_setattr("name", name) - bound_setattr("default", default) - bound_setattr("validator", validator) - bound_setattr("repr", repr) - bound_setattr("cmp", cmp) - bound_setattr("hash", hash) - bound_setattr("init", init) - bound_setattr("converter", converter) - bound_setattr( - "metadata", - ( - metadata_proxy(metadata) - if metadata - else _empty_metadata_singleton - ), - ) - bound_setattr("type", type) - bound_setattr("kw_only", kw_only) - - def __setattr__(self, name, value): - raise FrozenInstanceError() - - @property - def convert(self): - warnings.warn( - "The `convert` attribute is deprecated in favor of `converter`. " - "It will be removed after 2019/01.", - DeprecationWarning, - stacklevel=2, - ) - return self.converter - - @classmethod - def from_counting_attr(cls, name, ca, type=None): - # type holds the annotated value. deal with conflicts: - if type is None: - type = ca.type - elif ca.type is not None: - raise ValueError( - "Type annotation and type argument cannot both be present" - ) - inst_dict = { - k: getattr(ca, k) - for k in Attribute.__slots__ - if k - not in ( - "name", - "validator", - "default", - "type", - "convert", - ) # exclude methods and deprecated alias - } - return cls( - name=name, - validator=ca._validator, - default=ca._default, - type=type, - **inst_dict - ) - - # Don't use attr.assoc since fields(Attribute) doesn't work - def _assoc(self, **changes): - """ - Copy *self* and apply *changes*. - """ - new = copy.copy(self) - - new._setattrs(changes.items()) - - return new - - # Don't use _add_pickle since fields(Attribute) doesn't work - def __getstate__(self): - """ - Play nice with pickle. - """ - return tuple( - getattr(self, name) if name != "metadata" else dict(self.metadata) - for name in self.__slots__ - ) - - def __setstate__(self, state): - """ - Play nice with pickle. - """ - self._setattrs(zip(self.__slots__, state)) - - def _setattrs(self, name_values_pairs): - bound_setattr = _obj_setattr.__get__(self, Attribute) - for name, value in name_values_pairs: - if name != "metadata": - bound_setattr(name, value) - else: - bound_setattr( - name, - metadata_proxy(value) - if value - else _empty_metadata_singleton, - ) - - -_a = [ - Attribute( - name=name, - default=NOTHING, - validator=None, - repr=True, - cmp=True, - hash=(name != "metadata"), - init=True, - ) - for name in Attribute.__slots__ - if name != "convert" # XXX: remove once `convert` is gone -] - -Attribute = _add_hash( - _add_cmp(_add_repr(Attribute, attrs=_a), attrs=_a), - attrs=[a for a in _a if a.hash], -) - - -class _CountingAttr(object): - """ - Intermediate representation of attributes that uses a counter to preserve - the order in which the attributes have been defined. - - *Internal* data structure of the attrs library. Running into is most - likely the result of a bug like a forgotten `@attr.s` decorator. - """ - - __slots__ = ( - "counter", - "_default", - "repr", - "cmp", - "hash", - "init", - "metadata", - "_validator", - "converter", - "type", - "kw_only", - ) - __attrs_attrs__ = tuple( - Attribute( - name=name, - default=NOTHING, - validator=None, - repr=True, - cmp=True, - hash=True, - init=True, - kw_only=False, - ) - for name in ("counter", "_default", "repr", "cmp", "hash", "init") - ) + ( - Attribute( - name="metadata", - default=None, - validator=None, - repr=True, - cmp=True, - hash=False, - init=True, - kw_only=False, - ), - ) - cls_counter = 0 - - def __init__( - self, - default, - validator, - repr, - cmp, - hash, - init, - converter, - metadata, - type, - kw_only, - ): - _CountingAttr.cls_counter += 1 - self.counter = _CountingAttr.cls_counter - self._default = default - # If validator is a list/tuple, wrap it using helper validator. - if validator and isinstance(validator, (list, tuple)): - self._validator = and_(*validator) - else: - self._validator = validator - self.repr = repr - self.cmp = cmp - self.hash = hash - self.init = init - self.converter = converter - self.metadata = metadata - self.type = type - self.kw_only = kw_only - - def validator(self, meth): - """ - Decorator that adds *meth* to the list of validators. - - Returns *meth* unchanged. - - .. versionadded:: 17.1.0 - """ - if self._validator is None: - self._validator = meth - else: - self._validator = and_(self._validator, meth) - return meth - - def default(self, meth): - """ - Decorator that allows to set the default for an attribute. - - Returns *meth* unchanged. - - :raises DefaultAlreadySetError: If default has been set before. - - .. versionadded:: 17.1.0 - """ - if self._default is not NOTHING: - raise DefaultAlreadySetError() - - self._default = Factory(meth, takes_self=True) - - return meth - - -_CountingAttr = _add_cmp(_add_repr(_CountingAttr)) - - -@attrs(slots=True, init=False, hash=True) -class Factory(object): - """ - Stores a factory callable. - - If passed as the default value to :func:`attr.ib`, the factory is used to - generate a new value. - - :param callable factory: A callable that takes either none or exactly one - mandatory positional argument depending on *takes_self*. - :param bool takes_self: Pass the partially initialized instance that is - being initialized as a positional argument. - - .. versionadded:: 17.1.0 *takes_self* - """ - - factory = attrib() - takes_self = attrib() - - def __init__(self, factory, takes_self=False): - """ - `Factory` is part of the default machinery so if we want a default - value here, we have to implement it ourselves. - """ - self.factory = factory - self.takes_self = takes_self - - -def make_class(name, attrs, bases=(object,), **attributes_arguments): - """ - A quick way to create a new class called *name* with *attrs*. - - :param name: The name for the new class. - :type name: str - - :param attrs: A list of names or a dictionary of mappings of names to - attributes. - - If *attrs* is a list or an ordered dict (:class:`dict` on Python 3.6+, - :class:`collections.OrderedDict` otherwise), the order is deduced from - the order of the names or attributes inside *attrs*. Otherwise the - order of the definition of the attributes is used. - :type attrs: :class:`list` or :class:`dict` - - :param tuple bases: Classes that the new class will subclass. - - :param attributes_arguments: Passed unmodified to :func:`attr.s`. - - :return: A new class with *attrs*. - :rtype: type - - .. versionadded:: 17.1.0 *bases* - .. versionchanged:: 18.1.0 If *attrs* is ordered, the order is retained. - """ - if isinstance(attrs, dict): - cls_dict = attrs - elif isinstance(attrs, (list, tuple)): - cls_dict = dict((a, attrib()) for a in attrs) - else: - raise TypeError("attrs argument must be a dict or a list.") - - post_init = cls_dict.pop("__attrs_post_init__", None) - type_ = type( - name, - bases, - {} if post_init is None else {"__attrs_post_init__": post_init}, - ) - # For pickling to work, the __module__ variable needs to be set to the - # frame where the class is created. Bypass this step in environments where - # sys._getframe is not defined (Jython for example) or sys._getframe is not - # defined for arguments greater than 0 (IronPython). - try: - type_.__module__ = sys._getframe(1).f_globals.get( - "__name__", "__main__" - ) - except (AttributeError, ValueError): - pass - - return _attrs(these=cls_dict, **attributes_arguments)(type_) - - -# These are required by within this module so we define them here and merely -# import into .validators. - - -@attrs(slots=True, hash=True) -class _AndValidator(object): - """ - Compose many validators to a single one. - """ - - _validators = attrib() - - def __call__(self, inst, attr, value): - for v in self._validators: - v(inst, attr, value) - - -def and_(*validators): - """ - A validator that composes multiple validators into one. - - When called on a value, it runs all wrapped validators. - - :param validators: Arbitrary number of validators. - :type validators: callables - - .. versionadded:: 17.1.0 - """ - vals = [] - for validator in validators: - vals.extend( - validator._validators - if isinstance(validator, _AndValidator) - else [validator] - ) - - return _AndValidator(tuple(vals)) diff --git a/python/attr/converters.py b/python/attr/converters.py deleted file mode 100644 index 37c4a07..0000000 --- a/python/attr/converters.py +++ /dev/null @@ -1,78 +0,0 @@ -""" -Commonly useful converters. -""" - -from __future__ import absolute_import, division, print_function - -from ._make import NOTHING, Factory - - -def optional(converter): - """ - A converter that allows an attribute to be optional. An optional attribute - is one which can be set to ``None``. - - :param callable converter: the converter that is used for non-``None`` - values. - - .. versionadded:: 17.1.0 - """ - - def optional_converter(val): - if val is None: - return None - return converter(val) - - return optional_converter - - -def default_if_none(default=NOTHING, factory=None): - """ - A converter that allows to replace ``None`` values by *default* or the - result of *factory*. - - :param default: Value to be used if ``None`` is passed. Passing an instance - of :class:`attr.Factory` is supported, however the ``takes_self`` option - is *not*. - :param callable factory: A callable that takes not parameters whose result - is used if ``None`` is passed. - - :raises TypeError: If **neither** *default* or *factory* is passed. - :raises TypeError: If **both** *default* and *factory* are passed. - :raises ValueError: If an instance of :class:`attr.Factory` is passed with - ``takes_self=True``. - - .. versionadded:: 18.2.0 - """ - if default is NOTHING and factory is None: - raise TypeError("Must pass either `default` or `factory`.") - - if default is not NOTHING and factory is not None: - raise TypeError( - "Must pass either `default` or `factory` but not both." - ) - - if factory is not None: - default = Factory(factory) - - if isinstance(default, Factory): - if default.takes_self: - raise ValueError( - "`takes_self` is not supported by default_if_none." - ) - - def default_if_none_converter(val): - if val is not None: - return val - - return default.factory() - - else: - - def default_if_none_converter(val): - if val is not None: - return val - - return default - - return default_if_none_converter diff --git a/python/attr/converters.pyi b/python/attr/converters.pyi deleted file mode 100644 index 63b2a38..0000000 --- a/python/attr/converters.pyi +++ /dev/null @@ -1,12 +0,0 @@ -from typing import TypeVar, Optional, Callable, overload -from . import _ConverterType - -_T = TypeVar("_T") - -def optional( - converter: _ConverterType[_T] -) -> _ConverterType[Optional[_T]]: ... -@overload -def default_if_none(default: _T) -> _ConverterType[_T]: ... -@overload -def default_if_none(*, factory: Callable[[], _T]) -> _ConverterType[_T]: ... diff --git a/python/attr/exceptions.py b/python/attr/exceptions.py deleted file mode 100644 index b12e41e..0000000 --- a/python/attr/exceptions.py +++ /dev/null @@ -1,57 +0,0 @@ -from __future__ import absolute_import, division, print_function - - -class FrozenInstanceError(AttributeError): - """ - A frozen/immutable instance has been attempted to be modified. - - It mirrors the behavior of ``namedtuples`` by using the same error message - and subclassing :exc:`AttributeError`. - - .. versionadded:: 16.1.0 - """ - - msg = "can't set attribute" - args = [msg] - - -class AttrsAttributeNotFoundError(ValueError): - """ - An ``attrs`` function couldn't find an attribute that the user asked for. - - .. versionadded:: 16.2.0 - """ - - -class NotAnAttrsClassError(ValueError): - """ - A non-``attrs`` class has been passed into an ``attrs`` function. - - .. versionadded:: 16.2.0 - """ - - -class DefaultAlreadySetError(RuntimeError): - """ - A default has been set using ``attr.ib()`` and is attempted to be reset - using the decorator. - - .. versionadded:: 17.1.0 - """ - - -class UnannotatedAttributeError(RuntimeError): - """ - A class with ``auto_attribs=True`` has an ``attr.ib()`` without a type - annotation. - - .. versionadded:: 17.3.0 - """ - - -class PythonTooOldError(RuntimeError): - """ - An ``attrs`` feature requiring a more recent python version has been used. - - .. versionadded:: 18.2.0 - """ diff --git a/python/attr/exceptions.pyi b/python/attr/exceptions.pyi deleted file mode 100644 index 48fffcc..0000000 --- a/python/attr/exceptions.pyi +++ /dev/null @@ -1,7 +0,0 @@ -class FrozenInstanceError(AttributeError): - msg: str = ... - -class AttrsAttributeNotFoundError(ValueError): ... -class NotAnAttrsClassError(ValueError): ... -class DefaultAlreadySetError(RuntimeError): ... -class UnannotatedAttributeError(RuntimeError): ... diff --git a/python/attr/filters.py b/python/attr/filters.py deleted file mode 100644 index f1c69b8..0000000 --- a/python/attr/filters.py +++ /dev/null @@ -1,52 +0,0 @@ -""" -Commonly useful filters for :func:`attr.asdict`. -""" - -from __future__ import absolute_import, division, print_function - -from ._compat import isclass -from ._make import Attribute - - -def _split_what(what): - """ - Returns a tuple of `frozenset`s of classes and attributes. - """ - return ( - frozenset(cls for cls in what if isclass(cls)), - frozenset(cls for cls in what if isinstance(cls, Attribute)), - ) - - -def include(*what): - """ - Whitelist *what*. - - :param what: What to whitelist. - :type what: :class:`list` of :class:`type` or :class:`attr.Attribute`\\ s - - :rtype: :class:`callable` - """ - cls, attrs = _split_what(what) - - def include_(attribute, value): - return value.__class__ in cls or attribute in attrs - - return include_ - - -def exclude(*what): - """ - Blacklist *what*. - - :param what: What to blacklist. - :type what: :class:`list` of classes or :class:`attr.Attribute`\\ s. - - :rtype: :class:`callable` - """ - cls, attrs = _split_what(what) - - def exclude_(attribute, value): - return value.__class__ not in cls and attribute not in attrs - - return exclude_ diff --git a/python/attr/filters.pyi b/python/attr/filters.pyi deleted file mode 100644 index a618140..0000000 --- a/python/attr/filters.pyi +++ /dev/null @@ -1,5 +0,0 @@ -from typing import Union -from . import Attribute, _FilterType - -def include(*what: Union[type, Attribute]) -> _FilterType: ... -def exclude(*what: Union[type, Attribute]) -> _FilterType: ... diff --git a/python/attr/py.typed b/python/attr/py.typed deleted file mode 100644 index e69de29..0000000 diff --git a/python/attr/validators.py b/python/attr/validators.py deleted file mode 100644 index f12d0aa..0000000 --- a/python/attr/validators.py +++ /dev/null @@ -1,170 +0,0 @@ -""" -Commonly useful validators. -""" - -from __future__ import absolute_import, division, print_function - -from ._make import _AndValidator, and_, attrib, attrs - - -__all__ = ["and_", "in_", "instance_of", "optional", "provides"] - - -@attrs(repr=False, slots=True, hash=True) -class _InstanceOfValidator(object): - type = attrib() - - def __call__(self, inst, attr, value): - """ - We use a callable class to be able to change the ``__repr__``. - """ - if not isinstance(value, self.type): - raise TypeError( - "'{name}' must be {type!r} (got {value!r} that is a " - "{actual!r}).".format( - name=attr.name, - type=self.type, - actual=value.__class__, - value=value, - ), - attr, - self.type, - value, - ) - - def __repr__(self): - return "<instance_of validator for type {type!r}>".format( - type=self.type - ) - - -def instance_of(type): - """ - A validator that raises a :exc:`TypeError` if the initializer is called - with a wrong type for this particular attribute (checks are performed using - :func:`isinstance` therefore it's also valid to pass a tuple of types). - - :param type: The type to check for. - :type type: type or tuple of types - - :raises TypeError: With a human readable error message, the attribute - (of type :class:`attr.Attribute`), the expected type, and the value it - got. - """ - return _InstanceOfValidator(type) - - -@attrs(repr=False, slots=True, hash=True) -class _ProvidesValidator(object): - interface = attrib() - - def __call__(self, inst, attr, value): - """ - We use a callable class to be able to change the ``__repr__``. - """ - if not self.interface.providedBy(value): - raise TypeError( - "'{name}' must provide {interface!r} which {value!r} " - "doesn't.".format( - name=attr.name, interface=self.interface, value=value - ), - attr, - self.interface, - value, - ) - - def __repr__(self): - return "<provides validator for interface {interface!r}>".format( - interface=self.interface - ) - - -def provides(interface): - """ - A validator that raises a :exc:`TypeError` if the initializer is called - with an object that does not provide the requested *interface* (checks are - performed using ``interface.providedBy(value)`` (see `zope.interface - <https://zopeinterface.readthedocs.io/en/latest/>`_). - - :param zope.interface.Interface interface: The interface to check for. - - :raises TypeError: With a human readable error message, the attribute - (of type :class:`attr.Attribute`), the expected interface, and the - value it got. - """ - return _ProvidesValidator(interface) - - -@attrs(repr=False, slots=True, hash=True) -class _OptionalValidator(object): - validator = attrib() - - def __call__(self, inst, attr, value): - if value is None: - return - - self.validator(inst, attr, value) - - def __repr__(self): - return "<optional validator for {what} or None>".format( - what=repr(self.validator) - ) - - -def optional(validator): - """ - A validator that makes an attribute optional. An optional attribute is one - which can be set to ``None`` in addition to satisfying the requirements of - the sub-validator. - - :param validator: A validator (or a list of validators) that is used for - non-``None`` values. - :type validator: callable or :class:`list` of callables. - - .. versionadded:: 15.1.0 - .. versionchanged:: 17.1.0 *validator* can be a list of validators. - """ - if isinstance(validator, list): - return _OptionalValidator(_AndValidator(validator)) - return _OptionalValidator(validator) - - -@attrs(repr=False, slots=True, hash=True) -class _InValidator(object): - options = attrib() - - def __call__(self, inst, attr, value): - try: - in_options = value in self.options - except TypeError as e: # e.g. `1 in "abc"` - in_options = False - - if not in_options: - raise ValueError( - "'{name}' must be in {options!r} (got {value!r})".format( - name=attr.name, options=self.options, value=value - ) - ) - - def __repr__(self): - return "<in_ validator with options {options!r}>".format( - options=self.options - ) - - -def in_(options): - """ - A validator that raises a :exc:`ValueError` if the initializer is called - with a value that does not belong in the options provided. The check is - performed using ``value in options``. - - :param options: Allowed options. - :type options: list, tuple, :class:`enum.Enum`, ... - - :raises ValueError: With a human readable error message, the attribute (of - type :class:`attr.Attribute`), the expected options, and the value it - got. - - .. versionadded:: 17.1.0 - """ - return _InValidator(options) diff --git a/python/attr/validators.pyi b/python/attr/validators.pyi deleted file mode 100644 index abbaedf..0000000 --- a/python/attr/validators.pyi +++ /dev/null @@ -1,14 +0,0 @@ -from typing import Container, List, Union, TypeVar, Type, Any, Optional, Tuple -from . import _ValidatorType - -_T = TypeVar("_T") - -def instance_of( - type: Union[Tuple[Type[_T], ...], Type[_T]] -) -> _ValidatorType[_T]: ... -def provides(interface: Any) -> _ValidatorType[Any]: ... -def optional( - validator: Union[_ValidatorType[_T], List[_ValidatorType[_T]]] -) -> _ValidatorType[Optional[_T]]: ... -def in_(options: Container[_T]) -> _ValidatorType[_T]: ... -def and_(*validators: _ValidatorType[_T]) -> _ValidatorType[_T]: ... diff --git a/python/brotli.py b/python/brotli.py deleted file mode 100644 index d66966b..0000000 --- a/python/brotli.py +++ /dev/null @@ -1,56 +0,0 @@ -# Copyright 2016 The Brotli Authors. All rights reserved. -# -# Distributed under MIT license. -# See file LICENSE for detail or copy at https://opensource.org/licenses/MIT - -"""Functions to compress and decompress data using the Brotli library.""" - -import _brotli - - -# The library version. -__version__ = _brotli.__version__ - -# The compression mode. -MODE_GENERIC = _brotli.MODE_GENERIC -MODE_TEXT = _brotli.MODE_TEXT -MODE_FONT = _brotli.MODE_FONT - -# The Compressor object. -Compressor = _brotli.Compressor - -# The Decompressor object. -Decompressor = _brotli.Decompressor - -# Compress a byte string. -def compress(string, mode=MODE_GENERIC, quality=11, lgwin=22, lgblock=0): - """Compress a byte string. - - Args: - string (bytes): The input data. - mode (int, optional): The compression mode can be MODE_GENERIC (default), - MODE_TEXT (for UTF-8 format text input) or MODE_FONT (for WOFF 2.0). - quality (int, optional): Controls the compression-speed vs compression- - density tradeoff. The higher the quality, the slower the compression. - Range is 0 to 11. Defaults to 11. - lgwin (int, optional): Base 2 logarithm of the sliding window size. Range - is 10 to 24. Defaults to 22. - lgblock (int, optional): Base 2 logarithm of the maximum input block size. - Range is 16 to 24. If set to 0, the value will be set based on the - quality. Defaults to 0. - - Returns: - The compressed byte string. - - Raises: - brotli.error: If arguments are invalid, or compressor fails. - """ - compressor = Compressor(mode=mode, quality=quality, lgwin=lgwin, - lgblock=lgblock) - return compressor.process(string) + compressor.finish() - -# Decompress a compressed byte string. -decompress = _brotli.decompress - -# Raised if compression or decompression fails. -error = _brotli.error diff --git a/python/click/__init__.py b/python/click/__init__.py deleted file mode 100644 index d3c3366..0000000 --- a/python/click/__init__.py +++ /dev/null @@ -1,97 +0,0 @@ -# -*- coding: utf-8 -*- -""" -click -~~~~~ - -Click is a simple Python module inspired by the stdlib optparse to make -writing command line scripts fun. Unlike other modules, it's based -around a simple API that does not come with too much magic and is -composable. - -:copyright: © 2014 by the Pallets team. -:license: BSD, see LICENSE.rst for more details. -""" - -# Core classes -from .core import Context, BaseCommand, Command, MultiCommand, Group, \ - CommandCollection, Parameter, Option, Argument - -# Globals -from .globals import get_current_context - -# Decorators -from .decorators import pass_context, pass_obj, make_pass_decorator, \ - command, group, argument, option, confirmation_option, \ - password_option, version_option, help_option - -# Types -from .types import ParamType, File, Path, Choice, IntRange, Tuple, \ - DateTime, STRING, INT, FLOAT, BOOL, UUID, UNPROCESSED, FloatRange - -# Utilities -from .utils import echo, get_binary_stream, get_text_stream, open_file, \ - format_filename, get_app_dir, get_os_args - -# Terminal functions -from .termui import prompt, confirm, get_terminal_size, echo_via_pager, \ - progressbar, clear, style, unstyle, secho, edit, launch, getchar, \ - pause - -# Exceptions -from .exceptions import ClickException, UsageError, BadParameter, \ - FileError, Abort, NoSuchOption, BadOptionUsage, BadArgumentUsage, \ - MissingParameter - -# Formatting -from .formatting import HelpFormatter, wrap_text - -# Parsing -from .parser import OptionParser - - -__all__ = [ - # Core classes - 'Context', 'BaseCommand', 'Command', 'MultiCommand', 'Group', - 'CommandCollection', 'Parameter', 'Option', 'Argument', - - # Globals - 'get_current_context', - - # Decorators - 'pass_context', 'pass_obj', 'make_pass_decorator', 'command', 'group', - 'argument', 'option', 'confirmation_option', 'password_option', - 'version_option', 'help_option', - - # Types - 'ParamType', 'File', 'Path', 'Choice', 'IntRange', 'Tuple', - 'DateTime', 'STRING', 'INT', 'FLOAT', 'BOOL', 'UUID', 'UNPROCESSED', - 'FloatRange', - - # Utilities - 'echo', 'get_binary_stream', 'get_text_stream', 'open_file', - 'format_filename', 'get_app_dir', 'get_os_args', - - # Terminal functions - 'prompt', 'confirm', 'get_terminal_size', 'echo_via_pager', - 'progressbar', 'clear', 'style', 'unstyle', 'secho', 'edit', 'launch', - 'getchar', 'pause', - - # Exceptions - 'ClickException', 'UsageError', 'BadParameter', 'FileError', - 'Abort', 'NoSuchOption', 'BadOptionUsage', 'BadArgumentUsage', - 'MissingParameter', - - # Formatting - 'HelpFormatter', 'wrap_text', - - # Parsing - 'OptionParser', -] - - -# Controls if click should emit the warning about the use of unicode -# literals. -disable_unicode_literals_warning = False - - -__version__ = '7.0' diff --git a/python/click/_bashcomplete.py b/python/click/_bashcomplete.py deleted file mode 100644 index a5f1084..0000000 --- a/python/click/_bashcomplete.py +++ /dev/null @@ -1,293 +0,0 @@ -import copy -import os -import re - -from .utils import echo -from .parser import split_arg_string -from .core import MultiCommand, Option, Argument -from .types import Choice - -try: - from collections import abc -except ImportError: - import collections as abc - -WORDBREAK = '=' - -# Note, only BASH version 4.4 and later have the nosort option. -COMPLETION_SCRIPT_BASH = ''' -%(complete_func)s() { - local IFS=$'\n' - COMPREPLY=( $( env COMP_WORDS="${COMP_WORDS[*]}" \\ - COMP_CWORD=$COMP_CWORD \\ - %(autocomplete_var)s=complete $1 ) ) - return 0 -} - -%(complete_func)setup() { - local COMPLETION_OPTIONS="" - local BASH_VERSION_ARR=(${BASH_VERSION//./ }) - # Only BASH version 4.4 and later have the nosort option. - if [ ${BASH_VERSION_ARR[0]} -gt 4 ] || ([ ${BASH_VERSION_ARR[0]} -eq 4 ] && [ ${BASH_VERSION_ARR[1]} -ge 4 ]); then - COMPLETION_OPTIONS="-o nosort" - fi - - complete $COMPLETION_OPTIONS -F %(complete_func)s %(script_names)s -} - -%(complete_func)setup -''' - -COMPLETION_SCRIPT_ZSH = ''' -%(complete_func)s() { - local -a completions - local -a completions_with_descriptions - local -a response - response=("${(@f)$( env COMP_WORDS=\"${words[*]}\" \\ - COMP_CWORD=$((CURRENT-1)) \\ - %(autocomplete_var)s=\"complete_zsh\" \\ - %(script_names)s )}") - - for key descr in ${(kv)response}; do - if [[ "$descr" == "_" ]]; then - completions+=("$key") - else - completions_with_descriptions+=("$key":"$descr") - fi - done - - if [ -n "$completions_with_descriptions" ]; then - _describe -V unsorted completions_with_descriptions -U -Q - fi - - if [ -n "$completions" ]; then - compadd -U -V unsorted -Q -a completions - fi - compstate[insert]="automenu" -} - -compdef %(complete_func)s %(script_names)s -''' - -_invalid_ident_char_re = re.compile(r'[^a-zA-Z0-9_]') - - -def get_completion_script(prog_name, complete_var, shell): - cf_name = _invalid_ident_char_re.sub('', prog_name.replace('-', '_')) - script = COMPLETION_SCRIPT_ZSH if shell == 'zsh' else COMPLETION_SCRIPT_BASH - return (script % { - 'complete_func': '_%s_completion' % cf_name, - 'script_names': prog_name, - 'autocomplete_var': complete_var, - }).strip() + ';' - - -def resolve_ctx(cli, prog_name, args): - """ - Parse into a hierarchy of contexts. Contexts are connected through the parent variable. - :param cli: command definition - :param prog_name: the program that is running - :param args: full list of args - :return: the final context/command parsed - """ - ctx = cli.make_context(prog_name, args, resilient_parsing=True) - args = ctx.protected_args + ctx.args - while args: - if isinstance(ctx.command, MultiCommand): - if not ctx.command.chain: - cmd_name, cmd, args = ctx.command.resolve_command(ctx, args) - if cmd is None: - return ctx - ctx = cmd.make_context(cmd_name, args, parent=ctx, - resilient_parsing=True) - args = ctx.protected_args + ctx.args - else: - # Walk chained subcommand contexts saving the last one. - while args: - cmd_name, cmd, args = ctx.command.resolve_command(ctx, args) - if cmd is None: - return ctx - sub_ctx = cmd.make_context(cmd_name, args, parent=ctx, - allow_extra_args=True, - allow_interspersed_args=False, - resilient_parsing=True) - args = sub_ctx.args - ctx = sub_ctx - args = sub_ctx.protected_args + sub_ctx.args - else: - break - return ctx - - -def start_of_option(param_str): - """ - :param param_str: param_str to check - :return: whether or not this is the start of an option declaration (i.e. starts "-" or "--") - """ - return param_str and param_str[:1] == '-' - - -def is_incomplete_option(all_args, cmd_param): - """ - :param all_args: the full original list of args supplied - :param cmd_param: the current command paramter - :return: whether or not the last option declaration (i.e. starts "-" or "--") is incomplete and - corresponds to this cmd_param. In other words whether this cmd_param option can still accept - values - """ - if not isinstance(cmd_param, Option): - return False - if cmd_param.is_flag: - return False - last_option = None - for index, arg_str in enumerate(reversed([arg for arg in all_args if arg != WORDBREAK])): - if index + 1 > cmd_param.nargs: - break - if start_of_option(arg_str): - last_option = arg_str - - return True if last_option and last_option in cmd_param.opts else False - - -def is_incomplete_argument(current_params, cmd_param): - """ - :param current_params: the current params and values for this argument as already entered - :param cmd_param: the current command parameter - :return: whether or not the last argument is incomplete and corresponds to this cmd_param. In - other words whether or not the this cmd_param argument can still accept values - """ - if not isinstance(cmd_param, Argument): - return False - current_param_values = current_params[cmd_param.name] - if current_param_values is None: - return True - if cmd_param.nargs == -1: - return True - if isinstance(current_param_values, abc.Iterable) \ - and cmd_param.nargs > 1 and len(current_param_values) < cmd_param.nargs: - return True - return False - - -def get_user_autocompletions(ctx, args, incomplete, cmd_param): - """ - :param ctx: context associated with the parsed command - :param args: full list of args - :param incomplete: the incomplete text to autocomplete - :param cmd_param: command definition - :return: all the possible user-specified completions for the param - """ - results = [] - if isinstance(cmd_param.type, Choice): - # Choices don't support descriptions. - results = [(c, None) - for c in cmd_param.type.choices if str(c).startswith(incomplete)] - elif cmd_param.autocompletion is not None: - dynamic_completions = cmd_param.autocompletion(ctx=ctx, - args=args, - incomplete=incomplete) - results = [c if isinstance(c, tuple) else (c, None) - for c in dynamic_completions] - return results - - -def get_visible_commands_starting_with(ctx, starts_with): - """ - :param ctx: context associated with the parsed command - :starts_with: string that visible commands must start with. - :return: all visible (not hidden) commands that start with starts_with. - """ - for c in ctx.command.list_commands(ctx): - if c.startswith(starts_with): - command = ctx.command.get_command(ctx, c) - if not command.hidden: - yield command - - -def add_subcommand_completions(ctx, incomplete, completions_out): - # Add subcommand completions. - if isinstance(ctx.command, MultiCommand): - completions_out.extend( - [(c.name, c.get_short_help_str()) for c in get_visible_commands_starting_with(ctx, incomplete)]) - - # Walk up the context list and add any other completion possibilities from chained commands - while ctx.parent is not None: - ctx = ctx.parent - if isinstance(ctx.command, MultiCommand) and ctx.command.chain: - remaining_commands = [c for c in get_visible_commands_starting_with(ctx, incomplete) - if c.name not in ctx.protected_args] - completions_out.extend([(c.name, c.get_short_help_str()) for c in remaining_commands]) - - -def get_choices(cli, prog_name, args, incomplete): - """ - :param cli: command definition - :param prog_name: the program that is running - :param args: full list of args - :param incomplete: the incomplete text to autocomplete - :return: all the possible completions for the incomplete - """ - all_args = copy.deepcopy(args) - - ctx = resolve_ctx(cli, prog_name, args) - if ctx is None: - return [] - - # In newer versions of bash long opts with '='s are partitioned, but it's easier to parse - # without the '=' - if start_of_option(incomplete) and WORDBREAK in incomplete: - partition_incomplete = incomplete.partition(WORDBREAK) - all_args.append(partition_incomplete[0]) - incomplete = partition_incomplete[2] - elif incomplete == WORDBREAK: - incomplete = '' - - completions = [] - if start_of_option(incomplete): - # completions for partial options - for param in ctx.command.params: - if isinstance(param, Option) and not param.hidden: - param_opts = [param_opt for param_opt in param.opts + - param.secondary_opts if param_opt not in all_args or param.multiple] - completions.extend([(o, param.help) for o in param_opts if o.startswith(incomplete)]) - return completions - # completion for option values from user supplied values - for param in ctx.command.params: - if is_incomplete_option(all_args, param): - return get_user_autocompletions(ctx, all_args, incomplete, param) - # completion for argument values from user supplied values - for param in ctx.command.params: - if is_incomplete_argument(ctx.params, param): - return get_user_autocompletions(ctx, all_args, incomplete, param) - - add_subcommand_completions(ctx, incomplete, completions) - # Sort before returning so that proper ordering can be enforced in custom types. - return sorted(completions) - - -def do_complete(cli, prog_name, include_descriptions): - cwords = split_arg_string(os.environ['COMP_WORDS']) - cword = int(os.environ['COMP_CWORD']) - args = cwords[1:cword] - try: - incomplete = cwords[cword] - except IndexError: - incomplete = '' - - for item in get_choices(cli, prog_name, args, incomplete): - echo(item[0]) - if include_descriptions: - # ZSH has trouble dealing with empty array parameters when returned from commands, so use a well defined character '_' to indicate no description is present. - echo(item[1] if item[1] else '_') - - return True - - -def bashcomplete(cli, prog_name, complete_var, complete_instr): - if complete_instr.startswith('source'): - shell = 'zsh' if complete_instr == 'source_zsh' else 'bash' - echo(get_completion_script(prog_name, complete_var, shell)) - return True - elif complete_instr == 'complete' or complete_instr == 'complete_zsh': - return do_complete(cli, prog_name, complete_instr == 'complete_zsh') - return False diff --git a/python/click/_compat.py b/python/click/_compat.py deleted file mode 100644 index 937e230..0000000 --- a/python/click/_compat.py +++ /dev/null @@ -1,703 +0,0 @@ -import re -import io -import os -import sys -import codecs -from weakref import WeakKeyDictionary - - -PY2 = sys.version_info[0] == 2 -CYGWIN = sys.platform.startswith('cygwin') -# Determine local App Engine environment, per Google's own suggestion -APP_ENGINE = ('APPENGINE_RUNTIME' in os.environ and - 'Development/' in os.environ['SERVER_SOFTWARE']) -WIN = sys.platform.startswith('win') and not APP_ENGINE -DEFAULT_COLUMNS = 80 - - -_ansi_re = re.compile(r'\033\[((?:\d|;)*)([a-zA-Z])') - - -def get_filesystem_encoding(): - return sys.getfilesystemencoding() or sys.getdefaultencoding() - - -def _make_text_stream(stream, encoding, errors, - force_readable=False, force_writable=False): - if encoding is None: - encoding = get_best_encoding(stream) - if errors is None: - errors = 'replace' - return _NonClosingTextIOWrapper(stream, encoding, errors, - line_buffering=True, - force_readable=force_readable, - force_writable=force_writable) - - -def is_ascii_encoding(encoding): - """Checks if a given encoding is ascii.""" - try: - return codecs.lookup(encoding).name == 'ascii' - except LookupError: - return False - - -def get_best_encoding(stream): - """Returns the default stream encoding if not found.""" - rv = getattr(stream, 'encoding', None) or sys.getdefaultencoding() - if is_ascii_encoding(rv): - return 'utf-8' - return rv - - -class _NonClosingTextIOWrapper(io.TextIOWrapper): - - def __init__(self, stream, encoding, errors, - force_readable=False, force_writable=False, **extra): - self._stream = stream = _FixupStream(stream, force_readable, - force_writable) - io.TextIOWrapper.__init__(self, stream, encoding, errors, **extra) - - # The io module is a place where the Python 3 text behavior - # was forced upon Python 2, so we need to unbreak - # it to look like Python 2. - if PY2: - def write(self, x): - if isinstance(x, str) or is_bytes(x): - try: - self.flush() - except Exception: - pass - return self.buffer.write(str(x)) - return io.TextIOWrapper.write(self, x) - - def writelines(self, lines): - for line in lines: - self.write(line) - - def __del__(self): - try: - self.detach() - except Exception: - pass - - def isatty(self): - # https://bitbucket.org/pypy/pypy/issue/1803 - return self._stream.isatty() - - -class _FixupStream(object): - """The new io interface needs more from streams than streams - traditionally implement. As such, this fix-up code is necessary in - some circumstances. - - The forcing of readable and writable flags are there because some tools - put badly patched objects on sys (one such offender are certain version - of jupyter notebook). - """ - - def __init__(self, stream, force_readable=False, force_writable=False): - self._stream = stream - self._force_readable = force_readable - self._force_writable = force_writable - - def __getattr__(self, name): - return getattr(self._stream, name) - - def read1(self, size): - f = getattr(self._stream, 'read1', None) - if f is not None: - return f(size) - # We only dispatch to readline instead of read in Python 2 as we - # do not want cause problems with the different implementation - # of line buffering. - if PY2: - return self._stream.readline(size) - return self._stream.read(size) - - def readable(self): - if self._force_readable: - return True - x = getattr(self._stream, 'readable', None) - if x is not None: - return x() - try: - self._stream.read(0) - except Exception: - return False - return True - - def writable(self): - if self._force_writable: - return True - x = getattr(self._stream, 'writable', None) - if x is not None: - return x() - try: - self._stream.write('') - except Exception: - try: - self._stream.write(b'') - except Exception: - return False - return True - - def seekable(self): - x = getattr(self._stream, 'seekable', None) - if x is not None: - return x() - try: - self._stream.seek(self._stream.tell()) - except Exception: - return False - return True - - -if PY2: - text_type = unicode - bytes = str - raw_input = raw_input - string_types = (str, unicode) - int_types = (int, long) - iteritems = lambda x: x.iteritems() - range_type = xrange - - def is_bytes(x): - return isinstance(x, (buffer, bytearray)) - - _identifier_re = re.compile(r'^[a-zA-Z_][a-zA-Z0-9_]*$') - - # For Windows, we need to force stdout/stdin/stderr to binary if it's - # fetched for that. This obviously is not the most correct way to do - # it as it changes global state. Unfortunately, there does not seem to - # be a clear better way to do it as just reopening the file in binary - # mode does not change anything. - # - # An option would be to do what Python 3 does and to open the file as - # binary only, patch it back to the system, and then use a wrapper - # stream that converts newlines. It's not quite clear what's the - # correct option here. - # - # This code also lives in _winconsole for the fallback to the console - # emulation stream. - # - # There are also Windows environments where the `msvcrt` module is not - # available (which is why we use try-catch instead of the WIN variable - # here), such as the Google App Engine development server on Windows. In - # those cases there is just nothing we can do. - def set_binary_mode(f): - return f - - try: - import msvcrt - except ImportError: - pass - else: - def set_binary_mode(f): - try: - fileno = f.fileno() - except Exception: - pass - else: - msvcrt.setmode(fileno, os.O_BINARY) - return f - - try: - import fcntl - except ImportError: - pass - else: - def set_binary_mode(f): - try: - fileno = f.fileno() - except Exception: - pass - else: - flags = fcntl.fcntl(fileno, fcntl.F_GETFL) - fcntl.fcntl(fileno, fcntl.F_SETFL, flags & ~os.O_NONBLOCK) - return f - - def isidentifier(x): - return _identifier_re.search(x) is not None - - def get_binary_stdin(): - return set_binary_mode(sys.stdin) - - def get_binary_stdout(): - _wrap_std_stream('stdout') - return set_binary_mode(sys.stdout) - - def get_binary_stderr(): - _wrap_std_stream('stderr') - return set_binary_mode(sys.stderr) - - def get_text_stdin(encoding=None, errors=None): - rv = _get_windows_console_stream(sys.stdin, encoding, errors) - if rv is not None: - return rv - return _make_text_stream(sys.stdin, encoding, errors, - force_readable=True) - - def get_text_stdout(encoding=None, errors=None): - _wrap_std_stream('stdout') - rv = _get_windows_console_stream(sys.stdout, encoding, errors) - if rv is not None: - return rv - return _make_text_stream(sys.stdout, encoding, errors, - force_writable=True) - - def get_text_stderr(encoding=None, errors=None): - _wrap_std_stream('stderr') - rv = _get_windows_console_stream(sys.stderr, encoding, errors) - if rv is not None: - return rv - return _make_text_stream(sys.stderr, encoding, errors, - force_writable=True) - - def filename_to_ui(value): - if isinstance(value, bytes): - value = value.decode(get_filesystem_encoding(), 'replace') - return value -else: - import io - text_type = str - raw_input = input - string_types = (str,) - int_types = (int,) - range_type = range - isidentifier = lambda x: x.isidentifier() - iteritems = lambda x: iter(x.items()) - - def is_bytes(x): - return isinstance(x, (bytes, memoryview, bytearray)) - - def _is_binary_reader(stream, default=False): - try: - return isinstance(stream.read(0), bytes) - except Exception: - return default - # This happens in some cases where the stream was already - # closed. In this case, we assume the default. - - def _is_binary_writer(stream, default=False): - try: - stream.write(b'') - except Exception: - try: - stream.write('') - return False - except Exception: - pass - return default - return True - - def _find_binary_reader(stream): - # We need to figure out if the given stream is already binary. - # This can happen because the official docs recommend detaching - # the streams to get binary streams. Some code might do this, so - # we need to deal with this case explicitly. - if _is_binary_reader(stream, False): - return stream - - buf = getattr(stream, 'buffer', None) - - # Same situation here; this time we assume that the buffer is - # actually binary in case it's closed. - if buf is not None and _is_binary_reader(buf, True): - return buf - - def _find_binary_writer(stream): - # We need to figure out if the given stream is already binary. - # This can happen because the official docs recommend detatching - # the streams to get binary streams. Some code might do this, so - # we need to deal with this case explicitly. - if _is_binary_writer(stream, False): - return stream - - buf = getattr(stream, 'buffer', None) - - # Same situation here; this time we assume that the buffer is - # actually binary in case it's closed. - if buf is not None and _is_binary_writer(buf, True): - return buf - - def _stream_is_misconfigured(stream): - """A stream is misconfigured if its encoding is ASCII.""" - # If the stream does not have an encoding set, we assume it's set - # to ASCII. This appears to happen in certain unittest - # environments. It's not quite clear what the correct behavior is - # but this at least will force Click to recover somehow. - return is_ascii_encoding(getattr(stream, 'encoding', None) or 'ascii') - - def _is_compatible_text_stream(stream, encoding, errors): - stream_encoding = getattr(stream, 'encoding', None) - stream_errors = getattr(stream, 'errors', None) - - # Perfect match. - if stream_encoding == encoding and stream_errors == errors: - return True - - # Otherwise, it's only a compatible stream if we did not ask for - # an encoding. - if encoding is None: - return stream_encoding is not None - - return False - - def _force_correct_text_reader(text_reader, encoding, errors, - force_readable=False): - if _is_binary_reader(text_reader, False): - binary_reader = text_reader - else: - # If there is no target encoding set, we need to verify that the - # reader is not actually misconfigured. - if encoding is None and not _stream_is_misconfigured(text_reader): - return text_reader - - if _is_compatible_text_stream(text_reader, encoding, errors): - return text_reader - - # If the reader has no encoding, we try to find the underlying - # binary reader for it. If that fails because the environment is - # misconfigured, we silently go with the same reader because this - # is too common to happen. In that case, mojibake is better than - # exceptions. - binary_reader = _find_binary_reader(text_reader) - if binary_reader is None: - return text_reader - - # At this point, we default the errors to replace instead of strict - # because nobody handles those errors anyways and at this point - # we're so fundamentally fucked that nothing can repair it. - if errors is None: - errors = 'replace' - return _make_text_stream(binary_reader, encoding, errors, - force_readable=force_readable) - - def _force_correct_text_writer(text_writer, encoding, errors, - force_writable=False): - if _is_binary_writer(text_writer, False): - binary_writer = text_writer - else: - # If there is no target encoding set, we need to verify that the - # writer is not actually misconfigured. - if encoding is None and not _stream_is_misconfigured(text_writer): - return text_writer - - if _is_compatible_text_stream(text_writer, encoding, errors): - return text_writer - - # If the writer has no encoding, we try to find the underlying - # binary writer for it. If that fails because the environment is - # misconfigured, we silently go with the same writer because this - # is too common to happen. In that case, mojibake is better than - # exceptions. - binary_writer = _find_binary_writer(text_writer) - if binary_writer is None: - return text_writer - - # At this point, we default the errors to replace instead of strict - # because nobody handles those errors anyways and at this point - # we're so fundamentally fucked that nothing can repair it. - if errors is None: - errors = 'replace' - return _make_text_stream(binary_writer, encoding, errors, - force_writable=force_writable) - - def get_binary_stdin(): - reader = _find_binary_reader(sys.stdin) - if reader is None: - raise RuntimeError('Was not able to determine binary ' - 'stream for sys.stdin.') - return reader - - def get_binary_stdout(): - writer = _find_binary_writer(sys.stdout) - if writer is None: - raise RuntimeError('Was not able to determine binary ' - 'stream for sys.stdout.') - return writer - - def get_binary_stderr(): - writer = _find_binary_writer(sys.stderr) - if writer is None: - raise RuntimeError('Was not able to determine binary ' - 'stream for sys.stderr.') - return writer - - def get_text_stdin(encoding=None, errors=None): - rv = _get_windows_console_stream(sys.stdin, encoding, errors) - if rv is not None: - return rv - return _force_correct_text_reader(sys.stdin, encoding, errors, - force_readable=True) - - def get_text_stdout(encoding=None, errors=None): - rv = _get_windows_console_stream(sys.stdout, encoding, errors) - if rv is not None: - return rv - return _force_correct_text_writer(sys.stdout, encoding, errors, - force_writable=True) - - def get_text_stderr(encoding=None, errors=None): - rv = _get_windows_console_stream(sys.stderr, encoding, errors) - if rv is not None: - return rv - return _force_correct_text_writer(sys.stderr, encoding, errors, - force_writable=True) - - def filename_to_ui(value): - if isinstance(value, bytes): - value = value.decode(get_filesystem_encoding(), 'replace') - else: - value = value.encode('utf-8', 'surrogateescape') \ - .decode('utf-8', 'replace') - return value - - -def get_streerror(e, default=None): - if hasattr(e, 'strerror'): - msg = e.strerror - else: - if default is not None: - msg = default - else: - msg = str(e) - if isinstance(msg, bytes): - msg = msg.decode('utf-8', 'replace') - return msg - - -def open_stream(filename, mode='r', encoding=None, errors='strict', - atomic=False): - # Standard streams first. These are simple because they don't need - # special handling for the atomic flag. It's entirely ignored. - if filename == '-': - if any(m in mode for m in ['w', 'a', 'x']): - if 'b' in mode: - return get_binary_stdout(), False - return get_text_stdout(encoding=encoding, errors=errors), False - if 'b' in mode: - return get_binary_stdin(), False - return get_text_stdin(encoding=encoding, errors=errors), False - - # Non-atomic writes directly go out through the regular open functions. - if not atomic: - if encoding is None: - return open(filename, mode), True - return io.open(filename, mode, encoding=encoding, errors=errors), True - - # Some usability stuff for atomic writes - if 'a' in mode: - raise ValueError( - 'Appending to an existing file is not supported, because that ' - 'would involve an expensive `copy`-operation to a temporary ' - 'file. Open the file in normal `w`-mode and copy explicitly ' - 'if that\'s what you\'re after.' - ) - if 'x' in mode: - raise ValueError('Use the `overwrite`-parameter instead.') - if 'w' not in mode: - raise ValueError('Atomic writes only make sense with `w`-mode.') - - # Atomic writes are more complicated. They work by opening a file - # as a proxy in the same folder and then using the fdopen - # functionality to wrap it in a Python file. Then we wrap it in an - # atomic file that moves the file over on close. - import tempfile - fd, tmp_filename = tempfile.mkstemp(dir=os.path.dirname(filename), - prefix='.__atomic-write') - - if encoding is not None: - f = io.open(fd, mode, encoding=encoding, errors=errors) - else: - f = os.fdopen(fd, mode) - - return _AtomicFile(f, tmp_filename, os.path.realpath(filename)), True - - -# Used in a destructor call, needs extra protection from interpreter cleanup. -if hasattr(os, 'replace'): - _replace = os.replace - _can_replace = True -else: - _replace = os.rename - _can_replace = not WIN - - -class _AtomicFile(object): - - def __init__(self, f, tmp_filename, real_filename): - self._f = f - self._tmp_filename = tmp_filename - self._real_filename = real_filename - self.closed = False - - @property - def name(self): - return self._real_filename - - def close(self, delete=False): - if self.closed: - return - self._f.close() - if not _can_replace: - try: - os.remove(self._real_filename) - except OSError: - pass - _replace(self._tmp_filename, self._real_filename) - self.closed = True - - def __getattr__(self, name): - return getattr(self._f, name) - - def __enter__(self): - return self - - def __exit__(self, exc_type, exc_value, tb): - self.close(delete=exc_type is not None) - - def __repr__(self): - return repr(self._f) - - -auto_wrap_for_ansi = None -colorama = None -get_winterm_size = None - - -def strip_ansi(value): - return _ansi_re.sub('', value) - - -def should_strip_ansi(stream=None, color=None): - if color is None: - if stream is None: - stream = sys.stdin - return not isatty(stream) - return not color - - -# If we're on Windows, we provide transparent integration through -# colorama. This will make ANSI colors through the echo function -# work automatically. -if WIN: - # Windows has a smaller terminal - DEFAULT_COLUMNS = 79 - - from ._winconsole import _get_windows_console_stream, _wrap_std_stream - - def _get_argv_encoding(): - import locale - return locale.getpreferredencoding() - - if PY2: - def raw_input(prompt=''): - sys.stderr.flush() - if prompt: - stdout = _default_text_stdout() - stdout.write(prompt) - stdin = _default_text_stdin() - return stdin.readline().rstrip('\r\n') - - try: - import colorama - except ImportError: - pass - else: - _ansi_stream_wrappers = WeakKeyDictionary() - - def auto_wrap_for_ansi(stream, color=None): - """This function wraps a stream so that calls through colorama - are issued to the win32 console API to recolor on demand. It - also ensures to reset the colors if a write call is interrupted - to not destroy the console afterwards. - """ - try: - cached = _ansi_stream_wrappers.get(stream) - except Exception: - cached = None - if cached is not None: - return cached - strip = should_strip_ansi(stream, color) - ansi_wrapper = colorama.AnsiToWin32(stream, strip=strip) - rv = ansi_wrapper.stream - _write = rv.write - - def _safe_write(s): - try: - return _write(s) - except: - ansi_wrapper.reset_all() - raise - - rv.write = _safe_write - try: - _ansi_stream_wrappers[stream] = rv - except Exception: - pass - return rv - - def get_winterm_size(): - win = colorama.win32.GetConsoleScreenBufferInfo( - colorama.win32.STDOUT).srWindow - return win.Right - win.Left, win.Bottom - win.Top -else: - def _get_argv_encoding(): - return getattr(sys.stdin, 'encoding', None) or get_filesystem_encoding() - - _get_windows_console_stream = lambda *x: None - _wrap_std_stream = lambda *x: None - - -def term_len(x): - return len(strip_ansi(x)) - - -def isatty(stream): - try: - return stream.isatty() - except Exception: - return False - - -def _make_cached_stream_func(src_func, wrapper_func): - cache = WeakKeyDictionary() - def func(): - stream = src_func() - try: - rv = cache.get(stream) - except Exception: - rv = None - if rv is not None: - return rv - rv = wrapper_func() - try: - stream = src_func() # In case wrapper_func() modified the stream - cache[stream] = rv - except Exception: - pass - return rv - return func - - -_default_text_stdin = _make_cached_stream_func( - lambda: sys.stdin, get_text_stdin) -_default_text_stdout = _make_cached_stream_func( - lambda: sys.stdout, get_text_stdout) -_default_text_stderr = _make_cached_stream_func( - lambda: sys.stderr, get_text_stderr) - - -binary_streams = { - 'stdin': get_binary_stdin, - 'stdout': get_binary_stdout, - 'stderr': get_binary_stderr, -} - -text_streams = { - 'stdin': get_text_stdin, - 'stdout': get_text_stdout, - 'stderr': get_text_stderr, -} diff --git a/python/click/_termui_impl.py b/python/click/_termui_impl.py deleted file mode 100644 index 00a8e5e..0000000 --- a/python/click/_termui_impl.py +++ /dev/null @@ -1,621 +0,0 @@ -# -*- coding: utf-8 -*- -""" -click._termui_impl -~~~~~~~~~~~~~~~~~~ - -This module contains implementations for the termui module. To keep the -import time of Click down, some infrequently used functionality is -placed in this module and only imported as needed. - -:copyright: © 2014 by the Pallets team. -:license: BSD, see LICENSE.rst for more details. -""" - -import os -import sys -import time -import math -import contextlib -from ._compat import _default_text_stdout, range_type, PY2, isatty, \ - open_stream, strip_ansi, term_len, get_best_encoding, WIN, int_types, \ - CYGWIN -from .utils import echo -from .exceptions import ClickException - - -if os.name == 'nt': - BEFORE_BAR = '\r' - AFTER_BAR = '\n' -else: - BEFORE_BAR = '\r\033[?25l' - AFTER_BAR = '\033[?25h\n' - - -def _length_hint(obj): - """Returns the length hint of an object.""" - try: - return len(obj) - except (AttributeError, TypeError): - try: - get_hint = type(obj).__length_hint__ - except AttributeError: - return None - try: - hint = get_hint(obj) - except TypeError: - return None - if hint is NotImplemented or \ - not isinstance(hint, int_types) or \ - hint < 0: - return None - return hint - - -class ProgressBar(object): - - def __init__(self, iterable, length=None, fill_char='#', empty_char=' ', - bar_template='%(bar)s', info_sep=' ', show_eta=True, - show_percent=None, show_pos=False, item_show_func=None, - label=None, file=None, color=None, width=30): - self.fill_char = fill_char - self.empty_char = empty_char - self.bar_template = bar_template - self.info_sep = info_sep - self.show_eta = show_eta - self.show_percent = show_percent - self.show_pos = show_pos - self.item_show_func = item_show_func - self.label = label or '' - if file is None: - file = _default_text_stdout() - self.file = file - self.color = color - self.width = width - self.autowidth = width == 0 - - if length is None: - length = _length_hint(iterable) - if iterable is None: - if length is None: - raise TypeError('iterable or length is required') - iterable = range_type(length) - self.iter = iter(iterable) - self.length = length - self.length_known = length is not None - self.pos = 0 - self.avg = [] - self.start = self.last_eta = time.time() - self.eta_known = False - self.finished = False - self.max_width = None - self.entered = False - self.current_item = None - self.is_hidden = not isatty(self.file) - self._last_line = None - self.short_limit = 0.5 - - def __enter__(self): - self.entered = True - self.render_progress() - return self - - def __exit__(self, exc_type, exc_value, tb): - self.render_finish() - - def __iter__(self): - if not self.entered: - raise RuntimeError('You need to use progress bars in a with block.') - self.render_progress() - return self.generator() - - def is_fast(self): - return time.time() - self.start <= self.short_limit - - def render_finish(self): - if self.is_hidden or self.is_fast(): - return - self.file.write(AFTER_BAR) - self.file.flush() - - @property - def pct(self): - if self.finished: - return 1.0 - return min(self.pos / (float(self.length) or 1), 1.0) - - @property - def time_per_iteration(self): - if not self.avg: - return 0.0 - return sum(self.avg) / float(len(self.avg)) - - @property - def eta(self): - if self.length_known and not self.finished: - return self.time_per_iteration * (self.length - self.pos) - return 0.0 - - def format_eta(self): - if self.eta_known: - t = int(self.eta) - seconds = t % 60 - t //= 60 - minutes = t % 60 - t //= 60 - hours = t % 24 - t //= 24 - if t > 0: - days = t - return '%dd %02d:%02d:%02d' % (days, hours, minutes, seconds) - else: - return '%02d:%02d:%02d' % (hours, minutes, seconds) - return '' - - def format_pos(self): - pos = str(self.pos) - if self.length_known: - pos += '/%s' % self.length - return pos - - def format_pct(self): - return ('% 4d%%' % int(self.pct * 100))[1:] - - def format_bar(self): - if self.length_known: - bar_length = int(self.pct * self.width) - bar = self.fill_char * bar_length - bar += self.empty_char * (self.width - bar_length) - elif self.finished: - bar = self.fill_char * self.width - else: - bar = list(self.empty_char * (self.width or 1)) - if self.time_per_iteration != 0: - bar[int((math.cos(self.pos * self.time_per_iteration) - / 2.0 + 0.5) * self.width)] = self.fill_char - bar = ''.join(bar) - return bar - - def format_progress_line(self): - show_percent = self.show_percent - - info_bits = [] - if self.length_known and show_percent is None: - show_percent = not self.show_pos - - if self.show_pos: - info_bits.append(self.format_pos()) - if show_percent: - info_bits.append(self.format_pct()) - if self.show_eta and self.eta_known and not self.finished: - info_bits.append(self.format_eta()) - if self.item_show_func is not None: - item_info = self.item_show_func(self.current_item) - if item_info is not None: - info_bits.append(item_info) - - return (self.bar_template % { - 'label': self.label, - 'bar': self.format_bar(), - 'info': self.info_sep.join(info_bits) - }).rstrip() - - def render_progress(self): - from .termui import get_terminal_size - - if self.is_hidden: - return - - buf = [] - # Update width in case the terminal has been resized - if self.autowidth: - old_width = self.width - self.width = 0 - clutter_length = term_len(self.format_progress_line()) - new_width = max(0, get_terminal_size()[0] - clutter_length) - if new_width < old_width: - buf.append(BEFORE_BAR) - buf.append(' ' * self.max_width) - self.max_width = new_width - self.width = new_width - - clear_width = self.width - if self.max_width is not None: - clear_width = self.max_width - - buf.append(BEFORE_BAR) - line = self.format_progress_line() - line_len = term_len(line) - if self.max_width is None or self.max_width < line_len: - self.max_width = line_len - - buf.append(line) - buf.append(' ' * (clear_width - line_len)) - line = ''.join(buf) - # Render the line only if it changed. - - if line != self._last_line and not self.is_fast(): - self._last_line = line - echo(line, file=self.file, color=self.color, nl=False) - self.file.flush() - - def make_step(self, n_steps): - self.pos += n_steps - if self.length_known and self.pos >= self.length: - self.finished = True - - if (time.time() - self.last_eta) < 1.0: - return - - self.last_eta = time.time() - - # self.avg is a rolling list of length <= 7 of steps where steps are - # defined as time elapsed divided by the total progress through - # self.length. - if self.pos: - step = (time.time() - self.start) / self.pos - else: - step = time.time() - self.start - - self.avg = self.avg[-6:] + [step] - - self.eta_known = self.length_known - - def update(self, n_steps): - self.make_step(n_steps) - self.render_progress() - - def finish(self): - self.eta_known = 0 - self.current_item = None - self.finished = True - - def generator(self): - """ - Returns a generator which yields the items added to the bar during - construction, and updates the progress bar *after* the yielded block - returns. - """ - if not self.entered: - raise RuntimeError('You need to use progress bars in a with block.') - - if self.is_hidden: - for rv in self.iter: - yield rv - else: - for rv in self.iter: - self.current_item = rv - yield rv - self.update(1) - self.finish() - self.render_progress() - - -def pager(generator, color=None): - """Decide what method to use for paging through text.""" - stdout = _default_text_stdout() - if not isatty(sys.stdin) or not isatty(stdout): - return _nullpager(stdout, generator, color) - pager_cmd = (os.environ.get('PAGER', None) or '').strip() - if pager_cmd: - if WIN: - return _tempfilepager(generator, pager_cmd, color) - return _pipepager(generator, pager_cmd, color) - if os.environ.get('TERM') in ('dumb', 'emacs'): - return _nullpager(stdout, generator, color) - if WIN or sys.platform.startswith('os2'): - return _tempfilepager(generator, 'more <', color) - if hasattr(os, 'system') and os.system('(less) 2>/dev/null') == 0: - return _pipepager(generator, 'less', color) - - import tempfile - fd, filename = tempfile.mkstemp() - os.close(fd) - try: - if hasattr(os, 'system') and os.system('more "%s"' % filename) == 0: - return _pipepager(generator, 'more', color) - return _nullpager(stdout, generator, color) - finally: - os.unlink(filename) - - -def _pipepager(generator, cmd, color): - """Page through text by feeding it to another program. Invoking a - pager through this might support colors. - """ - import subprocess - env = dict(os.environ) - - # If we're piping to less we might support colors under the - # condition that - cmd_detail = cmd.rsplit('/', 1)[-1].split() - if color is None and cmd_detail[0] == 'less': - less_flags = os.environ.get('LESS', '') + ' '.join(cmd_detail[1:]) - if not less_flags: - env['LESS'] = '-R' - color = True - elif 'r' in less_flags or 'R' in less_flags: - color = True - - c = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, - env=env) - encoding = get_best_encoding(c.stdin) - try: - for text in generator: - if not color: - text = strip_ansi(text) - - c.stdin.write(text.encode(encoding, 'replace')) - except (IOError, KeyboardInterrupt): - pass - else: - c.stdin.close() - - # Less doesn't respect ^C, but catches it for its own UI purposes (aborting - # search or other commands inside less). - # - # That means when the user hits ^C, the parent process (click) terminates, - # but less is still alive, paging the output and messing up the terminal. - # - # If the user wants to make the pager exit on ^C, they should set - # `LESS='-K'`. It's not our decision to make. - while True: - try: - c.wait() - except KeyboardInterrupt: - pass - else: - break - - -def _tempfilepager(generator, cmd, color): - """Page through text by invoking a program on a temporary file.""" - import tempfile - filename = tempfile.mktemp() - # TODO: This never terminates if the passed generator never terminates. - text = "".join(generator) - if not color: - text = strip_ansi(text) - encoding = get_best_encoding(sys.stdout) - with open_stream(filename, 'wb')[0] as f: - f.write(text.encode(encoding)) - try: - os.system(cmd + ' "' + filename + '"') - finally: - os.unlink(filename) - - -def _nullpager(stream, generator, color): - """Simply print unformatted text. This is the ultimate fallback.""" - for text in generator: - if not color: - text = strip_ansi(text) - stream.write(text) - - -class Editor(object): - - def __init__(self, editor=None, env=None, require_save=True, - extension='.txt'): - self.editor = editor - self.env = env - self.require_save = require_save - self.extension = extension - - def get_editor(self): - if self.editor is not None: - return self.editor - for key in 'VISUAL', 'EDITOR': - rv = os.environ.get(key) - if rv: - return rv - if WIN: - return 'notepad' - for editor in 'vim', 'nano': - if os.system('which %s >/dev/null 2>&1' % editor) == 0: - return editor - return 'vi' - - def edit_file(self, filename): - import subprocess - editor = self.get_editor() - if self.env: - environ = os.environ.copy() - environ.update(self.env) - else: - environ = None - try: - c = subprocess.Popen('%s "%s"' % (editor, filename), - env=environ, shell=True) - exit_code = c.wait() - if exit_code != 0: - raise ClickException('%s: Editing failed!' % editor) - except OSError as e: - raise ClickException('%s: Editing failed: %s' % (editor, e)) - - def edit(self, text): - import tempfile - - text = text or '' - if text and not text.endswith('\n'): - text += '\n' - - fd, name = tempfile.mkstemp(prefix='editor-', suffix=self.extension) - try: - if WIN: - encoding = 'utf-8-sig' - text = text.replace('\n', '\r\n') - else: - encoding = 'utf-8' - text = text.encode(encoding) - - f = os.fdopen(fd, 'wb') - f.write(text) - f.close() - timestamp = os.path.getmtime(name) - - self.edit_file(name) - - if self.require_save \ - and os.path.getmtime(name) == timestamp: - return None - - f = open(name, 'rb') - try: - rv = f.read() - finally: - f.close() - return rv.decode('utf-8-sig').replace('\r\n', '\n') - finally: - os.unlink(name) - - -def open_url(url, wait=False, locate=False): - import subprocess - - def _unquote_file(url): - try: - import urllib - except ImportError: - import urllib - if url.startswith('file://'): - url = urllib.unquote(url[7:]) - return url - - if sys.platform == 'darwin': - args = ['open'] - if wait: - args.append('-W') - if locate: - args.append('-R') - args.append(_unquote_file(url)) - null = open('/dev/null', 'w') - try: - return subprocess.Popen(args, stderr=null).wait() - finally: - null.close() - elif WIN: - if locate: - url = _unquote_file(url) - args = 'explorer /select,"%s"' % _unquote_file( - url.replace('"', '')) - else: - args = 'start %s "" "%s"' % ( - wait and '/WAIT' or '', url.replace('"', '')) - return os.system(args) - elif CYGWIN: - if locate: - url = _unquote_file(url) - args = 'cygstart "%s"' % (os.path.dirname(url).replace('"', '')) - else: - args = 'cygstart %s "%s"' % ( - wait and '-w' or '', url.replace('"', '')) - return os.system(args) - - try: - if locate: - url = os.path.dirname(_unquote_file(url)) or '.' - else: - url = _unquote_file(url) - c = subprocess.Popen(['xdg-open', url]) - if wait: - return c.wait() - return 0 - except OSError: - if url.startswith(('http://', 'https://')) and not locate and not wait: - import webbrowser - webbrowser.open(url) - return 0 - return 1 - - -def _translate_ch_to_exc(ch): - if ch == u'\x03': - raise KeyboardInterrupt() - if ch == u'\x04' and not WIN: # Unix-like, Ctrl+D - raise EOFError() - if ch == u'\x1a' and WIN: # Windows, Ctrl+Z - raise EOFError() - - -if WIN: - import msvcrt - - @contextlib.contextmanager - def raw_terminal(): - yield - - def getchar(echo): - # The function `getch` will return a bytes object corresponding to - # the pressed character. Since Windows 10 build 1803, it will also - # return \x00 when called a second time after pressing a regular key. - # - # `getwch` does not share this probably-bugged behavior. Moreover, it - # returns a Unicode object by default, which is what we want. - # - # Either of these functions will return \x00 or \xe0 to indicate - # a special key, and you need to call the same function again to get - # the "rest" of the code. The fun part is that \u00e0 is - # "latin small letter a with grave", so if you type that on a French - # keyboard, you _also_ get a \xe0. - # E.g., consider the Up arrow. This returns \xe0 and then \x48. The - # resulting Unicode string reads as "a with grave" + "capital H". - # This is indistinguishable from when the user actually types - # "a with grave" and then "capital H". - # - # When \xe0 is returned, we assume it's part of a special-key sequence - # and call `getwch` again, but that means that when the user types - # the \u00e0 character, `getchar` doesn't return until a second - # character is typed. - # The alternative is returning immediately, but that would mess up - # cross-platform handling of arrow keys and others that start with - # \xe0. Another option is using `getch`, but then we can't reliably - # read non-ASCII characters, because return values of `getch` are - # limited to the current 8-bit codepage. - # - # Anyway, Click doesn't claim to do this Right(tm), and using `getwch` - # is doing the right thing in more situations than with `getch`. - if echo: - func = msvcrt.getwche - else: - func = msvcrt.getwch - - rv = func() - if rv in (u'\x00', u'\xe0'): - # \x00 and \xe0 are control characters that indicate special key, - # see above. - rv += func() - _translate_ch_to_exc(rv) - return rv -else: - import tty - import termios - - @contextlib.contextmanager - def raw_terminal(): - if not isatty(sys.stdin): - f = open('/dev/tty') - fd = f.fileno() - else: - fd = sys.stdin.fileno() - f = None - try: - old_settings = termios.tcgetattr(fd) - try: - tty.setraw(fd) - yield fd - finally: - termios.tcsetattr(fd, termios.TCSADRAIN, old_settings) - sys.stdout.flush() - if f is not None: - f.close() - except termios.error: - pass - - def getchar(echo): - with raw_terminal() as fd: - ch = os.read(fd, 32) - ch = ch.decode(get_best_encoding(sys.stdin), 'replace') - if echo and isatty(sys.stdout): - sys.stdout.write(ch) - _translate_ch_to_exc(ch) - return ch diff --git a/python/click/_textwrap.py b/python/click/_textwrap.py deleted file mode 100644 index 7e77603..0000000 --- a/python/click/_textwrap.py +++ /dev/null @@ -1,38 +0,0 @@ -import textwrap -from contextlib import contextmanager - - -class TextWrapper(textwrap.TextWrapper): - - def _handle_long_word(self, reversed_chunks, cur_line, cur_len, width): - space_left = max(width - cur_len, 1) - - if self.break_long_words: - last = reversed_chunks[-1] - cut = last[:space_left] - res = last[space_left:] - cur_line.append(cut) - reversed_chunks[-1] = res - elif not cur_line: - cur_line.append(reversed_chunks.pop()) - - @contextmanager - def extra_indent(self, indent): - old_initial_indent = self.initial_indent - old_subsequent_indent = self.subsequent_indent - self.initial_indent += indent - self.subsequent_indent += indent - try: - yield - finally: - self.initial_indent = old_initial_indent - self.subsequent_indent = old_subsequent_indent - - def indent_only(self, text): - rv = [] - for idx, line in enumerate(text.splitlines()): - indent = self.initial_indent - if idx > 0: - indent = self.subsequent_indent - rv.append(indent + line) - return '\n'.join(rv) diff --git a/python/click/_unicodefun.py b/python/click/_unicodefun.py deleted file mode 100644 index 620edff..0000000 --- a/python/click/_unicodefun.py +++ /dev/null @@ -1,125 +0,0 @@ -import os -import sys -import codecs - -from ._compat import PY2 - - -# If someone wants to vendor click, we want to ensure the -# correct package is discovered. Ideally we could use a -# relative import here but unfortunately Python does not -# support that. -click = sys.modules[__name__.rsplit('.', 1)[0]] - - -def _find_unicode_literals_frame(): - import __future__ - if not hasattr(sys, '_getframe'): # not all Python implementations have it - return 0 - frm = sys._getframe(1) - idx = 1 - while frm is not None: - if frm.f_globals.get('__name__', '').startswith('click.'): - frm = frm.f_back - idx += 1 - elif frm.f_code.co_flags & __future__.unicode_literals.compiler_flag: - return idx - else: - break - return 0 - - -def _check_for_unicode_literals(): - if not __debug__: - return - if not PY2 or click.disable_unicode_literals_warning: - return - bad_frame = _find_unicode_literals_frame() - if bad_frame <= 0: - return - from warnings import warn - warn(Warning('Click detected the use of the unicode_literals ' - '__future__ import. This is heavily discouraged ' - 'because it can introduce subtle bugs in your ' - 'code. You should instead use explicit u"" literals ' - 'for your unicode strings. For more information see ' - 'https://click.palletsprojects.com/python3/'), - stacklevel=bad_frame) - - -def _verify_python3_env(): - """Ensures that the environment is good for unicode on Python 3.""" - if PY2: - return - try: - import locale - fs_enc = codecs.lookup(locale.getpreferredencoding()).name - except Exception: - fs_enc = 'ascii' - if fs_enc != 'ascii': - return - - extra = '' - if os.name == 'posix': - import subprocess - try: - rv = subprocess.Popen(['locale', '-a'], stdout=subprocess.PIPE, - stderr=subprocess.PIPE).communicate()[0] - except OSError: - rv = b'' - good_locales = set() - has_c_utf8 = False - - # Make sure we're operating on text here. - if isinstance(rv, bytes): - rv = rv.decode('ascii', 'replace') - - for line in rv.splitlines(): - locale = line.strip() - if locale.lower().endswith(('.utf-8', '.utf8')): - good_locales.add(locale) - if locale.lower() in ('c.utf8', 'c.utf-8'): - has_c_utf8 = True - - extra += '\n\n' - if not good_locales: - extra += ( - 'Additional information: on this system no suitable UTF-8\n' - 'locales were discovered. This most likely requires resolving\n' - 'by reconfiguring the locale system.' - ) - elif has_c_utf8: - extra += ( - 'This system supports the C.UTF-8 locale which is recommended.\n' - 'You might be able to resolve your issue by exporting the\n' - 'following environment variables:\n\n' - ' export LC_ALL=C.UTF-8\n' - ' export LANG=C.UTF-8' - ) - else: - extra += ( - 'This system lists a couple of UTF-8 supporting locales that\n' - 'you can pick from. The following suitable locales were\n' - 'discovered: %s' - ) % ', '.join(sorted(good_locales)) - - bad_locale = None - for locale in os.environ.get('LC_ALL'), os.environ.get('LANG'): - if locale and locale.lower().endswith(('.utf-8', '.utf8')): - bad_locale = locale - if locale is not None: - break - if bad_locale is not None: - extra += ( - '\n\nClick discovered that you exported a UTF-8 locale\n' - 'but the locale system could not pick up from it because\n' - 'it does not exist. The exported locale is "%s" but it\n' - 'is not supported' - ) % bad_locale - - raise RuntimeError( - 'Click will abort further execution because Python 3 was' - ' configured to use ASCII as encoding for the environment.' - ' Consult https://click.palletsprojects.com/en/7.x/python3/ for' - ' mitigation steps.' + extra - ) diff --git a/python/click/_winconsole.py b/python/click/_winconsole.py deleted file mode 100644 index bbb080d..0000000 --- a/python/click/_winconsole.py +++ /dev/null @@ -1,307 +0,0 @@ -# -*- coding: utf-8 -*- -# This module is based on the excellent work by Adam Bartoš who -# provided a lot of what went into the implementation here in -# the discussion to issue1602 in the Python bug tracker. -# -# There are some general differences in regards to how this works -# compared to the original patches as we do not need to patch -# the entire interpreter but just work in our little world of -# echo and prmopt. - -import io -import os -import sys -import zlib -import time -import ctypes -import msvcrt -from ._compat import _NonClosingTextIOWrapper, text_type, PY2 -from ctypes import byref, POINTER, c_int, c_char, c_char_p, \ - c_void_p, py_object, c_ssize_t, c_ulong, windll, WINFUNCTYPE -try: - from ctypes import pythonapi - PyObject_GetBuffer = pythonapi.PyObject_GetBuffer - PyBuffer_Release = pythonapi.PyBuffer_Release -except ImportError: - pythonapi = None -from ctypes.wintypes import LPWSTR, LPCWSTR - - -c_ssize_p = POINTER(c_ssize_t) - -kernel32 = windll.kernel32 -GetStdHandle = kernel32.GetStdHandle -ReadConsoleW = kernel32.ReadConsoleW -WriteConsoleW = kernel32.WriteConsoleW -GetLastError = kernel32.GetLastError -GetCommandLineW = WINFUNCTYPE(LPWSTR)( - ('GetCommandLineW', windll.kernel32)) -CommandLineToArgvW = WINFUNCTYPE( - POINTER(LPWSTR), LPCWSTR, POINTER(c_int))( - ('CommandLineToArgvW', windll.shell32)) - - -STDIN_HANDLE = GetStdHandle(-10) -STDOUT_HANDLE = GetStdHandle(-11) -STDERR_HANDLE = GetStdHandle(-12) - - -PyBUF_SIMPLE = 0 -PyBUF_WRITABLE = 1 - -ERROR_SUCCESS = 0 -ERROR_NOT_ENOUGH_MEMORY = 8 -ERROR_OPERATION_ABORTED = 995 - -STDIN_FILENO = 0 -STDOUT_FILENO = 1 -STDERR_FILENO = 2 - -EOF = b'\x1a' -MAX_BYTES_WRITTEN = 32767 - - -class Py_buffer(ctypes.Structure): - _fields_ = [ - ('buf', c_void_p), - ('obj', py_object), - ('len', c_ssize_t), - ('itemsize', c_ssize_t), - ('readonly', c_int), - ('ndim', c_int), - ('format', c_char_p), - ('shape', c_ssize_p), - ('strides', c_ssize_p), - ('suboffsets', c_ssize_p), - ('internal', c_void_p) - ] - - if PY2: - _fields_.insert(-1, ('smalltable', c_ssize_t * 2)) - - -# On PyPy we cannot get buffers so our ability to operate here is -# serverly limited. -if pythonapi is None: - get_buffer = None -else: - def get_buffer(obj, writable=False): - buf = Py_buffer() - flags = PyBUF_WRITABLE if writable else PyBUF_SIMPLE - PyObject_GetBuffer(py_object(obj), byref(buf), flags) - try: - buffer_type = c_char * buf.len - return buffer_type.from_address(buf.buf) - finally: - PyBuffer_Release(byref(buf)) - - -class _WindowsConsoleRawIOBase(io.RawIOBase): - - def __init__(self, handle): - self.handle = handle - - def isatty(self): - io.RawIOBase.isatty(self) - return True - - -class _WindowsConsoleReader(_WindowsConsoleRawIOBase): - - def readable(self): - return True - - def readinto(self, b): - bytes_to_be_read = len(b) - if not bytes_to_be_read: - return 0 - elif bytes_to_be_read % 2: - raise ValueError('cannot read odd number of bytes from ' - 'UTF-16-LE encoded console') - - buffer = get_buffer(b, writable=True) - code_units_to_be_read = bytes_to_be_read // 2 - code_units_read = c_ulong() - - rv = ReadConsoleW(self.handle, buffer, code_units_to_be_read, - byref(code_units_read), None) - if GetLastError() == ERROR_OPERATION_ABORTED: - # wait for KeyboardInterrupt - time.sleep(0.1) - if not rv: - raise OSError('Windows error: %s' % GetLastError()) - - if buffer[0] == EOF: - return 0 - return 2 * code_units_read.value - - -class _WindowsConsoleWriter(_WindowsConsoleRawIOBase): - - def writable(self): - return True - - @staticmethod - def _get_error_message(errno): - if errno == ERROR_SUCCESS: - return 'ERROR_SUCCESS' - elif errno == ERROR_NOT_ENOUGH_MEMORY: - return 'ERROR_NOT_ENOUGH_MEMORY' - return 'Windows error %s' % errno - - def write(self, b): - bytes_to_be_written = len(b) - buf = get_buffer(b) - code_units_to_be_written = min(bytes_to_be_written, - MAX_BYTES_WRITTEN) // 2 - code_units_written = c_ulong() - - WriteConsoleW(self.handle, buf, code_units_to_be_written, - byref(code_units_written), None) - bytes_written = 2 * code_units_written.value - - if bytes_written == 0 and bytes_to_be_written > 0: - raise OSError(self._get_error_message(GetLastError())) - return bytes_written - - -class ConsoleStream(object): - - def __init__(self, text_stream, byte_stream): - self._text_stream = text_stream - self.buffer = byte_stream - - @property - def name(self): - return self.buffer.name - - def write(self, x): - if isinstance(x, text_type): - return self._text_stream.write(x) - try: - self.flush() - except Exception: - pass - return self.buffer.write(x) - - def writelines(self, lines): - for line in lines: - self.write(line) - - def __getattr__(self, name): - return getattr(self._text_stream, name) - - def isatty(self): - return self.buffer.isatty() - - def __repr__(self): - return '<ConsoleStream name=%r encoding=%r>' % ( - self.name, - self.encoding, - ) - - -class WindowsChunkedWriter(object): - """ - Wraps a stream (such as stdout), acting as a transparent proxy for all - attribute access apart from method 'write()' which we wrap to write in - limited chunks due to a Windows limitation on binary console streams. - """ - def __init__(self, wrapped): - # double-underscore everything to prevent clashes with names of - # attributes on the wrapped stream object. - self.__wrapped = wrapped - - def __getattr__(self, name): - return getattr(self.__wrapped, name) - - def write(self, text): - total_to_write = len(text) - written = 0 - - while written < total_to_write: - to_write = min(total_to_write - written, MAX_BYTES_WRITTEN) - self.__wrapped.write(text[written:written+to_write]) - written += to_write - - -_wrapped_std_streams = set() - - -def _wrap_std_stream(name): - # Python 2 & Windows 7 and below - if PY2 and sys.getwindowsversion()[:2] <= (6, 1) and name not in _wrapped_std_streams: - setattr(sys, name, WindowsChunkedWriter(getattr(sys, name))) - _wrapped_std_streams.add(name) - - -def _get_text_stdin(buffer_stream): - text_stream = _NonClosingTextIOWrapper( - io.BufferedReader(_WindowsConsoleReader(STDIN_HANDLE)), - 'utf-16-le', 'strict', line_buffering=True) - return ConsoleStream(text_stream, buffer_stream) - - -def _get_text_stdout(buffer_stream): - text_stream = _NonClosingTextIOWrapper( - io.BufferedWriter(_WindowsConsoleWriter(STDOUT_HANDLE)), - 'utf-16-le', 'strict', line_buffering=True) - return ConsoleStream(text_stream, buffer_stream) - - -def _get_text_stderr(buffer_stream): - text_stream = _NonClosingTextIOWrapper( - io.BufferedWriter(_WindowsConsoleWriter(STDERR_HANDLE)), - 'utf-16-le', 'strict', line_buffering=True) - return ConsoleStream(text_stream, buffer_stream) - - -if PY2: - def _hash_py_argv(): - return zlib.crc32('\x00'.join(sys.argv[1:])) - - _initial_argv_hash = _hash_py_argv() - - def _get_windows_argv(): - argc = c_int(0) - argv_unicode = CommandLineToArgvW(GetCommandLineW(), byref(argc)) - argv = [argv_unicode[i] for i in range(0, argc.value)] - - if not hasattr(sys, 'frozen'): - argv = argv[1:] - while len(argv) > 0: - arg = argv[0] - if not arg.startswith('-') or arg == '-': - break - argv = argv[1:] - if arg.startswith(('-c', '-m')): - break - - return argv[1:] - - -_stream_factories = { - 0: _get_text_stdin, - 1: _get_text_stdout, - 2: _get_text_stderr, -} - - -def _get_windows_console_stream(f, encoding, errors): - if get_buffer is not None and \ - encoding in ('utf-16-le', None) \ - and errors in ('strict', None) and \ - hasattr(f, 'isatty') and f.isatty(): - func = _stream_factories.get(f.fileno()) - if func is not None: - if not PY2: - f = getattr(f, 'buffer', None) - if f is None: - return None - else: - # If we are on Python 2 we need to set the stream that we - # deal with to binary mode as otherwise the exercise if a - # bit moot. The same problems apply as for - # get_binary_stdin and friends from _compat. - msvcrt.setmode(f.fileno(), os.O_BINARY) - return func(f) diff --git a/python/click/core.py b/python/click/core.py deleted file mode 100644 index 7a1e342..0000000 --- a/python/click/core.py +++ /dev/null @@ -1,1856 +0,0 @@ -import errno -import inspect -import os -import sys -from contextlib import contextmanager -from itertools import repeat -from functools import update_wrapper - -from .types import convert_type, IntRange, BOOL -from .utils import PacifyFlushWrapper, make_str, make_default_short_help, \ - echo, get_os_args -from .exceptions import ClickException, UsageError, BadParameter, Abort, \ - MissingParameter, Exit -from .termui import prompt, confirm, style -from .formatting import HelpFormatter, join_options -from .parser import OptionParser, split_opt -from .globals import push_context, pop_context - -from ._compat import PY2, isidentifier, iteritems, string_types -from ._unicodefun import _check_for_unicode_literals, _verify_python3_env - - -_missing = object() - - -SUBCOMMAND_METAVAR = 'COMMAND [ARGS]...' -SUBCOMMANDS_METAVAR = 'COMMAND1 [ARGS]... [COMMAND2 [ARGS]...]...' - -DEPRECATED_HELP_NOTICE = ' (DEPRECATED)' -DEPRECATED_INVOKE_NOTICE = 'DeprecationWarning: ' + \ - 'The command %(name)s is deprecated.' - - -def _maybe_show_deprecated_notice(cmd): - if cmd.deprecated: - echo(style(DEPRECATED_INVOKE_NOTICE % {'name': cmd.name}, fg='red'), err=True) - - -def fast_exit(code): - """Exit without garbage collection, this speeds up exit by about 10ms for - things like bash completion. - """ - sys.stdout.flush() - sys.stderr.flush() - os._exit(code) - - -def _bashcomplete(cmd, prog_name, complete_var=None): - """Internal handler for the bash completion support.""" - if complete_var is None: - complete_var = '_%s_COMPLETE' % (prog_name.replace('-', '_')).upper() - complete_instr = os.environ.get(complete_var) - if not complete_instr: - return - - from ._bashcomplete import bashcomplete - if bashcomplete(cmd, prog_name, complete_var, complete_instr): - fast_exit(1) - - -def _check_multicommand(base_command, cmd_name, cmd, register=False): - if not base_command.chain or not isinstance(cmd, MultiCommand): - return - if register: - hint = 'It is not possible to add multi commands as children to ' \ - 'another multi command that is in chain mode' - else: - hint = 'Found a multi command as subcommand to a multi command ' \ - 'that is in chain mode. This is not supported' - raise RuntimeError('%s. Command "%s" is set to chain and "%s" was ' - 'added as subcommand but it in itself is a ' - 'multi command. ("%s" is a %s within a chained ' - '%s named "%s").' % ( - hint, base_command.name, cmd_name, - cmd_name, cmd.__class__.__name__, - base_command.__class__.__name__, - base_command.name)) - - -def batch(iterable, batch_size): - return list(zip(*repeat(iter(iterable), batch_size))) - - -def invoke_param_callback(callback, ctx, param, value): - code = getattr(callback, '__code__', None) - args = getattr(code, 'co_argcount', 3) - - if args < 3: - # This will become a warning in Click 3.0: - from warnings import warn - warn(Warning('Invoked legacy parameter callback "%s". The new ' - 'signature for such callbacks starting with ' - 'click 2.0 is (ctx, param, value).' - % callback), stacklevel=3) - return callback(ctx, value) - return callback(ctx, param, value) - - -@contextmanager -def augment_usage_errors(ctx, param=None): - """Context manager that attaches extra information to exceptions that - fly. - """ - try: - yield - except BadParameter as e: - if e.ctx is None: - e.ctx = ctx - if param is not None and e.param is None: - e.param = param - raise - except UsageError as e: - if e.ctx is None: - e.ctx = ctx - raise - - -def iter_params_for_processing(invocation_order, declaration_order): - """Given a sequence of parameters in the order as should be considered - for processing and an iterable of parameters that exist, this returns - a list in the correct order as they should be processed. - """ - def sort_key(item): - try: - idx = invocation_order.index(item) - except ValueError: - idx = float('inf') - return (not item.is_eager, idx) - - return sorted(declaration_order, key=sort_key) - - -class Context(object): - """The context is a special internal object that holds state relevant - for the script execution at every single level. It's normally invisible - to commands unless they opt-in to getting access to it. - - The context is useful as it can pass internal objects around and can - control special execution features such as reading data from - environment variables. - - A context can be used as context manager in which case it will call - :meth:`close` on teardown. - - .. versionadded:: 2.0 - Added the `resilient_parsing`, `help_option_names`, - `token_normalize_func` parameters. - - .. versionadded:: 3.0 - Added the `allow_extra_args` and `allow_interspersed_args` - parameters. - - .. versionadded:: 4.0 - Added the `color`, `ignore_unknown_options`, and - `max_content_width` parameters. - - :param command: the command class for this context. - :param parent: the parent context. - :param info_name: the info name for this invocation. Generally this - is the most descriptive name for the script or - command. For the toplevel script it is usually - the name of the script, for commands below it it's - the name of the script. - :param obj: an arbitrary object of user data. - :param auto_envvar_prefix: the prefix to use for automatic environment - variables. If this is `None` then reading - from environment variables is disabled. This - does not affect manually set environment - variables which are always read. - :param default_map: a dictionary (like object) with default values - for parameters. - :param terminal_width: the width of the terminal. The default is - inherit from parent context. If no context - defines the terminal width then auto - detection will be applied. - :param max_content_width: the maximum width for content rendered by - Click (this currently only affects help - pages). This defaults to 80 characters if - not overridden. In other words: even if the - terminal is larger than that, Click will not - format things wider than 80 characters by - default. In addition to that, formatters might - add some safety mapping on the right. - :param resilient_parsing: if this flag is enabled then Click will - parse without any interactivity or callback - invocation. Default values will also be - ignored. This is useful for implementing - things such as completion support. - :param allow_extra_args: if this is set to `True` then extra arguments - at the end will not raise an error and will be - kept on the context. The default is to inherit - from the command. - :param allow_interspersed_args: if this is set to `False` then options - and arguments cannot be mixed. The - default is to inherit from the command. - :param ignore_unknown_options: instructs click to ignore options it does - not know and keeps them for later - processing. - :param help_option_names: optionally a list of strings that define how - the default help parameter is named. The - default is ``['--help']``. - :param token_normalize_func: an optional function that is used to - normalize tokens (options, choices, - etc.). This for instance can be used to - implement case insensitive behavior. - :param color: controls if the terminal supports ANSI colors or not. The - default is autodetection. This is only needed if ANSI - codes are used in texts that Click prints which is by - default not the case. This for instance would affect - help output. - """ - - def __init__(self, command, parent=None, info_name=None, obj=None, - auto_envvar_prefix=None, default_map=None, - terminal_width=None, max_content_width=None, - resilient_parsing=False, allow_extra_args=None, - allow_interspersed_args=None, - ignore_unknown_options=None, help_option_names=None, - token_normalize_func=None, color=None): - #: the parent context or `None` if none exists. - self.parent = parent - #: the :class:`Command` for this context. - self.command = command - #: the descriptive information name - self.info_name = info_name - #: the parsed parameters except if the value is hidden in which - #: case it's not remembered. - self.params = {} - #: the leftover arguments. - self.args = [] - #: protected arguments. These are arguments that are prepended - #: to `args` when certain parsing scenarios are encountered but - #: must be never propagated to another arguments. This is used - #: to implement nested parsing. - self.protected_args = [] - if obj is None and parent is not None: - obj = parent.obj - #: the user object stored. - self.obj = obj - self._meta = getattr(parent, 'meta', {}) - - #: A dictionary (-like object) with defaults for parameters. - if default_map is None \ - and parent is not None \ - and parent.default_map is not None: - default_map = parent.default_map.get(info_name) - self.default_map = default_map - - #: This flag indicates if a subcommand is going to be executed. A - #: group callback can use this information to figure out if it's - #: being executed directly or because the execution flow passes - #: onwards to a subcommand. By default it's None, but it can be - #: the name of the subcommand to execute. - #: - #: If chaining is enabled this will be set to ``'*'`` in case - #: any commands are executed. It is however not possible to - #: figure out which ones. If you require this knowledge you - #: should use a :func:`resultcallback`. - self.invoked_subcommand = None - - if terminal_width is None and parent is not None: - terminal_width = parent.terminal_width - #: The width of the terminal (None is autodetection). - self.terminal_width = terminal_width - - if max_content_width is None and parent is not None: - max_content_width = parent.max_content_width - #: The maximum width of formatted content (None implies a sensible - #: default which is 80 for most things). - self.max_content_width = max_content_width - - if allow_extra_args is None: - allow_extra_args = command.allow_extra_args - #: Indicates if the context allows extra args or if it should - #: fail on parsing. - #: - #: .. versionadded:: 3.0 - self.allow_extra_args = allow_extra_args - - if allow_interspersed_args is None: - allow_interspersed_args = command.allow_interspersed_args - #: Indicates if the context allows mixing of arguments and - #: options or not. - #: - #: .. versionadded:: 3.0 - self.allow_interspersed_args = allow_interspersed_args - - if ignore_unknown_options is None: - ignore_unknown_options = command.ignore_unknown_options - #: Instructs click to ignore options that a command does not - #: understand and will store it on the context for later - #: processing. This is primarily useful for situations where you - #: want to call into external programs. Generally this pattern is - #: strongly discouraged because it's not possibly to losslessly - #: forward all arguments. - #: - #: .. versionadded:: 4.0 - self.ignore_unknown_options = ignore_unknown_options - - if help_option_names is None: - if parent is not None: - help_option_names = parent.help_option_names - else: - help_option_names = ['--help'] - - #: The names for the help options. - self.help_option_names = help_option_names - - if token_normalize_func is None and parent is not None: - token_normalize_func = parent.token_normalize_func - - #: An optional normalization function for tokens. This is - #: options, choices, commands etc. - self.token_normalize_func = token_normalize_func - - #: Indicates if resilient parsing is enabled. In that case Click - #: will do its best to not cause any failures and default values - #: will be ignored. Useful for completion. - self.resilient_parsing = resilient_parsing - - # If there is no envvar prefix yet, but the parent has one and - # the command on this level has a name, we can expand the envvar - # prefix automatically. - if auto_envvar_prefix is None: - if parent is not None \ - and parent.auto_envvar_prefix is not None and \ - self.info_name is not None: - auto_envvar_prefix = '%s_%s' % (parent.auto_envvar_prefix, - self.info_name.upper()) - else: - auto_envvar_prefix = auto_envvar_prefix.upper() - self.auto_envvar_prefix = auto_envvar_prefix - - if color is None and parent is not None: - color = parent.color - - #: Controls if styling output is wanted or not. - self.color = color - - self._close_callbacks = [] - self._depth = 0 - - def __enter__(self): - self._depth += 1 - push_context(self) - return self - - def __exit__(self, exc_type, exc_value, tb): - self._depth -= 1 - if self._depth == 0: - self.close() - pop_context() - - @contextmanager - def scope(self, cleanup=True): - """This helper method can be used with the context object to promote - it to the current thread local (see :func:`get_current_context`). - The default behavior of this is to invoke the cleanup functions which - can be disabled by setting `cleanup` to `False`. The cleanup - functions are typically used for things such as closing file handles. - - If the cleanup is intended the context object can also be directly - used as a context manager. - - Example usage:: - - with ctx.scope(): - assert get_current_context() is ctx - - This is equivalent:: - - with ctx: - assert get_current_context() is ctx - - .. versionadded:: 5.0 - - :param cleanup: controls if the cleanup functions should be run or - not. The default is to run these functions. In - some situations the context only wants to be - temporarily pushed in which case this can be disabled. - Nested pushes automatically defer the cleanup. - """ - if not cleanup: - self._depth += 1 - try: - with self as rv: - yield rv - finally: - if not cleanup: - self._depth -= 1 - - @property - def meta(self): - """This is a dictionary which is shared with all the contexts - that are nested. It exists so that click utilities can store some - state here if they need to. It is however the responsibility of - that code to manage this dictionary well. - - The keys are supposed to be unique dotted strings. For instance - module paths are a good choice for it. What is stored in there is - irrelevant for the operation of click. However what is important is - that code that places data here adheres to the general semantics of - the system. - - Example usage:: - - LANG_KEY = __name__ + '.lang' - - def set_language(value): - ctx = get_current_context() - ctx.meta[LANG_KEY] = value - - def get_language(): - return get_current_context().meta.get(LANG_KEY, 'en_US') - - .. versionadded:: 5.0 - """ - return self._meta - - def make_formatter(self): - """Creates the formatter for the help and usage output.""" - return HelpFormatter(width=self.terminal_width, - max_width=self.max_content_width) - - def call_on_close(self, f): - """This decorator remembers a function as callback that should be - executed when the context tears down. This is most useful to bind - resource handling to the script execution. For instance, file objects - opened by the :class:`File` type will register their close callbacks - here. - - :param f: the function to execute on teardown. - """ - self._close_callbacks.append(f) - return f - - def close(self): - """Invokes all close callbacks.""" - for cb in self._close_callbacks: - cb() - self._close_callbacks = [] - - @property - def command_path(self): - """The computed command path. This is used for the ``usage`` - information on the help page. It's automatically created by - combining the info names of the chain of contexts to the root. - """ - rv = '' - if self.info_name is not None: - rv = self.info_name - if self.parent is not None: - rv = self.parent.command_path + ' ' + rv - return rv.lstrip() - - def find_root(self): - """Finds the outermost context.""" - node = self - while node.parent is not None: - node = node.parent - return node - - def find_object(self, object_type): - """Finds the closest object of a given type.""" - node = self - while node is not None: - if isinstance(node.obj, object_type): - return node.obj - node = node.parent - - def ensure_object(self, object_type): - """Like :meth:`find_object` but sets the innermost object to a - new instance of `object_type` if it does not exist. - """ - rv = self.find_object(object_type) - if rv is None: - self.obj = rv = object_type() - return rv - - def lookup_default(self, name): - """Looks up the default for a parameter name. This by default - looks into the :attr:`default_map` if available. - """ - if self.default_map is not None: - rv = self.default_map.get(name) - if callable(rv): - rv = rv() - return rv - - def fail(self, message): - """Aborts the execution of the program with a specific error - message. - - :param message: the error message to fail with. - """ - raise UsageError(message, self) - - def abort(self): - """Aborts the script.""" - raise Abort() - - def exit(self, code=0): - """Exits the application with a given exit code.""" - raise Exit(code) - - def get_usage(self): - """Helper method to get formatted usage string for the current - context and command. - """ - return self.command.get_usage(self) - - def get_help(self): - """Helper method to get formatted help page for the current - context and command. - """ - return self.command.get_help(self) - - def invoke(*args, **kwargs): - """Invokes a command callback in exactly the way it expects. There - are two ways to invoke this method: - - 1. the first argument can be a callback and all other arguments and - keyword arguments are forwarded directly to the function. - 2. the first argument is a click command object. In that case all - arguments are forwarded as well but proper click parameters - (options and click arguments) must be keyword arguments and Click - will fill in defaults. - - Note that before Click 3.2 keyword arguments were not properly filled - in against the intention of this code and no context was created. For - more information about this change and why it was done in a bugfix - release see :ref:`upgrade-to-3.2`. - """ - self, callback = args[:2] - ctx = self - - # It's also possible to invoke another command which might or - # might not have a callback. In that case we also fill - # in defaults and make a new context for this command. - if isinstance(callback, Command): - other_cmd = callback - callback = other_cmd.callback - ctx = Context(other_cmd, info_name=other_cmd.name, parent=self) - if callback is None: - raise TypeError('The given command does not have a ' - 'callback that can be invoked.') - - for param in other_cmd.params: - if param.name not in kwargs and param.expose_value: - kwargs[param.name] = param.get_default(ctx) - - args = args[2:] - with augment_usage_errors(self): - with ctx: - return callback(*args, **kwargs) - - def forward(*args, **kwargs): - """Similar to :meth:`invoke` but fills in default keyword - arguments from the current context if the other command expects - it. This cannot invoke callbacks directly, only other commands. - """ - self, cmd = args[:2] - - # It's also possible to invoke another command which might or - # might not have a callback. - if not isinstance(cmd, Command): - raise TypeError('Callback is not a command.') - - for param in self.params: - if param not in kwargs: - kwargs[param] = self.params[param] - - return self.invoke(cmd, **kwargs) - - -class BaseCommand(object): - """The base command implements the minimal API contract of commands. - Most code will never use this as it does not implement a lot of useful - functionality but it can act as the direct subclass of alternative - parsing methods that do not depend on the Click parser. - - For instance, this can be used to bridge Click and other systems like - argparse or docopt. - - Because base commands do not implement a lot of the API that other - parts of Click take for granted, they are not supported for all - operations. For instance, they cannot be used with the decorators - usually and they have no built-in callback system. - - .. versionchanged:: 2.0 - Added the `context_settings` parameter. - - :param name: the name of the command to use unless a group overrides it. - :param context_settings: an optional dictionary with defaults that are - passed to the context object. - """ - #: the default for the :attr:`Context.allow_extra_args` flag. - allow_extra_args = False - #: the default for the :attr:`Context.allow_interspersed_args` flag. - allow_interspersed_args = True - #: the default for the :attr:`Context.ignore_unknown_options` flag. - ignore_unknown_options = False - - def __init__(self, name, context_settings=None): - #: the name the command thinks it has. Upon registering a command - #: on a :class:`Group` the group will default the command name - #: with this information. You should instead use the - #: :class:`Context`\'s :attr:`~Context.info_name` attribute. - self.name = name - if context_settings is None: - context_settings = {} - #: an optional dictionary with defaults passed to the context. - self.context_settings = context_settings - - def get_usage(self, ctx): - raise NotImplementedError('Base commands cannot get usage') - - def get_help(self, ctx): - raise NotImplementedError('Base commands cannot get help') - - def make_context(self, info_name, args, parent=None, **extra): - """This function when given an info name and arguments will kick - off the parsing and create a new :class:`Context`. It does not - invoke the actual command callback though. - - :param info_name: the info name for this invokation. Generally this - is the most descriptive name for the script or - command. For the toplevel script it's usually - the name of the script, for commands below it it's - the name of the script. - :param args: the arguments to parse as list of strings. - :param parent: the parent context if available. - :param extra: extra keyword arguments forwarded to the context - constructor. - """ - for key, value in iteritems(self.context_settings): - if key not in extra: - extra[key] = value - ctx = Context(self, info_name=info_name, parent=parent, **extra) - with ctx.scope(cleanup=False): - self.parse_args(ctx, args) - return ctx - - def parse_args(self, ctx, args): - """Given a context and a list of arguments this creates the parser - and parses the arguments, then modifies the context as necessary. - This is automatically invoked by :meth:`make_context`. - """ - raise NotImplementedError('Base commands do not know how to parse ' - 'arguments.') - - def invoke(self, ctx): - """Given a context, this invokes the command. The default - implementation is raising a not implemented error. - """ - raise NotImplementedError('Base commands are not invokable by default') - - def main(self, args=None, prog_name=None, complete_var=None, - standalone_mode=True, **extra): - """This is the way to invoke a script with all the bells and - whistles as a command line application. This will always terminate - the application after a call. If this is not wanted, ``SystemExit`` - needs to be caught. - - This method is also available by directly calling the instance of - a :class:`Command`. - - .. versionadded:: 3.0 - Added the `standalone_mode` flag to control the standalone mode. - - :param args: the arguments that should be used for parsing. If not - provided, ``sys.argv[1:]`` is used. - :param prog_name: the program name that should be used. By default - the program name is constructed by taking the file - name from ``sys.argv[0]``. - :param complete_var: the environment variable that controls the - bash completion support. The default is - ``"_<prog_name>_COMPLETE"`` with prog_name in - uppercase. - :param standalone_mode: the default behavior is to invoke the script - in standalone mode. Click will then - handle exceptions and convert them into - error messages and the function will never - return but shut down the interpreter. If - this is set to `False` they will be - propagated to the caller and the return - value of this function is the return value - of :meth:`invoke`. - :param extra: extra keyword arguments are forwarded to the context - constructor. See :class:`Context` for more information. - """ - # If we are in Python 3, we will verify that the environment is - # sane at this point or reject further execution to avoid a - # broken script. - if not PY2: - _verify_python3_env() - else: - _check_for_unicode_literals() - - if args is None: - args = get_os_args() - else: - args = list(args) - - if prog_name is None: - prog_name = make_str(os.path.basename( - sys.argv and sys.argv[0] or __file__)) - - # Hook for the Bash completion. This only activates if the Bash - # completion is actually enabled, otherwise this is quite a fast - # noop. - _bashcomplete(self, prog_name, complete_var) - - try: - try: - with self.make_context(prog_name, args, **extra) as ctx: - rv = self.invoke(ctx) - if not standalone_mode: - return rv - # it's not safe to `ctx.exit(rv)` here! - # note that `rv` may actually contain data like "1" which - # has obvious effects - # more subtle case: `rv=[None, None]` can come out of - # chained commands which all returned `None` -- so it's not - # even always obvious that `rv` indicates success/failure - # by its truthiness/falsiness - ctx.exit() - except (EOFError, KeyboardInterrupt): - echo(file=sys.stderr) - raise Abort() - except ClickException as e: - if not standalone_mode: - raise - e.show() - sys.exit(e.exit_code) - except IOError as e: - if e.errno == errno.EPIPE: - sys.stdout = PacifyFlushWrapper(sys.stdout) - sys.stderr = PacifyFlushWrapper(sys.stderr) - sys.exit(1) - else: - raise - except Exit as e: - if standalone_mode: - sys.exit(e.exit_code) - else: - # in non-standalone mode, return the exit code - # note that this is only reached if `self.invoke` above raises - # an Exit explicitly -- thus bypassing the check there which - # would return its result - # the results of non-standalone execution may therefore be - # somewhat ambiguous: if there are codepaths which lead to - # `ctx.exit(1)` and to `return 1`, the caller won't be able to - # tell the difference between the two - return e.exit_code - except Abort: - if not standalone_mode: - raise - echo('Aborted!', file=sys.stderr) - sys.exit(1) - - def __call__(self, *args, **kwargs): - """Alias for :meth:`main`.""" - return self.main(*args, **kwargs) - - -class Command(BaseCommand): - """Commands are the basic building block of command line interfaces in - Click. A basic command handles command line parsing and might dispatch - more parsing to commands nested below it. - - .. versionchanged:: 2.0 - Added the `context_settings` parameter. - - :param name: the name of the command to use unless a group overrides it. - :param context_settings: an optional dictionary with defaults that are - passed to the context object. - :param callback: the callback to invoke. This is optional. - :param params: the parameters to register with this command. This can - be either :class:`Option` or :class:`Argument` objects. - :param help: the help string to use for this command. - :param epilog: like the help string but it's printed at the end of the - help page after everything else. - :param short_help: the short help to use for this command. This is - shown on the command listing of the parent command. - :param add_help_option: by default each command registers a ``--help`` - option. This can be disabled by this parameter. - :param hidden: hide this command from help outputs. - - :param deprecated: issues a message indicating that - the command is deprecated. - """ - - def __init__(self, name, context_settings=None, callback=None, - params=None, help=None, epilog=None, short_help=None, - options_metavar='[OPTIONS]', add_help_option=True, - hidden=False, deprecated=False): - BaseCommand.__init__(self, name, context_settings) - #: the callback to execute when the command fires. This might be - #: `None` in which case nothing happens. - self.callback = callback - #: the list of parameters for this command in the order they - #: should show up in the help page and execute. Eager parameters - #: will automatically be handled before non eager ones. - self.params = params or [] - # if a form feed (page break) is found in the help text, truncate help - # text to the content preceding the first form feed - if help and '\f' in help: - help = help.split('\f', 1)[0] - self.help = help - self.epilog = epilog - self.options_metavar = options_metavar - self.short_help = short_help - self.add_help_option = add_help_option - self.hidden = hidden - self.deprecated = deprecated - - def get_usage(self, ctx): - formatter = ctx.make_formatter() - self.format_usage(ctx, formatter) - return formatter.getvalue().rstrip('\n') - - def get_params(self, ctx): - rv = self.params - help_option = self.get_help_option(ctx) - if help_option is not None: - rv = rv + [help_option] - return rv - - def format_usage(self, ctx, formatter): - """Writes the usage line into the formatter.""" - pieces = self.collect_usage_pieces(ctx) - formatter.write_usage(ctx.command_path, ' '.join(pieces)) - - def collect_usage_pieces(self, ctx): - """Returns all the pieces that go into the usage line and returns - it as a list of strings. - """ - rv = [self.options_metavar] - for param in self.get_params(ctx): - rv.extend(param.get_usage_pieces(ctx)) - return rv - - def get_help_option_names(self, ctx): - """Returns the names for the help option.""" - all_names = set(ctx.help_option_names) - for param in self.params: - all_names.difference_update(param.opts) - all_names.difference_update(param.secondary_opts) - return all_names - - def get_help_option(self, ctx): - """Returns the help option object.""" - help_options = self.get_help_option_names(ctx) - if not help_options or not self.add_help_option: - return - - def show_help(ctx, param, value): - if value and not ctx.resilient_parsing: - echo(ctx.get_help(), color=ctx.color) - ctx.exit() - return Option(help_options, is_flag=True, - is_eager=True, expose_value=False, - callback=show_help, - help='Show this message and exit.') - - def make_parser(self, ctx): - """Creates the underlying option parser for this command.""" - parser = OptionParser(ctx) - for param in self.get_params(ctx): - param.add_to_parser(parser, ctx) - return parser - - def get_help(self, ctx): - """Formats the help into a string and returns it. This creates a - formatter and will call into the following formatting methods: - """ - formatter = ctx.make_formatter() - self.format_help(ctx, formatter) - return formatter.getvalue().rstrip('\n') - - def get_short_help_str(self, limit=45): - """Gets short help for the command or makes it by shortening the long help string.""" - return self.short_help or self.help and make_default_short_help(self.help, limit) or '' - - def format_help(self, ctx, formatter): - """Writes the help into the formatter if it exists. - - This calls into the following methods: - - - :meth:`format_usage` - - :meth:`format_help_text` - - :meth:`format_options` - - :meth:`format_epilog` - """ - self.format_usage(ctx, formatter) - self.format_help_text(ctx, formatter) - self.format_options(ctx, formatter) - self.format_epilog(ctx, formatter) - - def format_help_text(self, ctx, formatter): - """Writes the help text to the formatter if it exists.""" - if self.help: - formatter.write_paragraph() - with formatter.indentation(): - help_text = self.help - if self.deprecated: - help_text += DEPRECATED_HELP_NOTICE - formatter.write_text(help_text) - elif self.deprecated: - formatter.write_paragraph() - with formatter.indentation(): - formatter.write_text(DEPRECATED_HELP_NOTICE) - - def format_options(self, ctx, formatter): - """Writes all the options into the formatter if they exist.""" - opts = [] - for param in self.get_params(ctx): - rv = param.get_help_record(ctx) - if rv is not None: - opts.append(rv) - - if opts: - with formatter.section('Options'): - formatter.write_dl(opts) - - def format_epilog(self, ctx, formatter): - """Writes the epilog into the formatter if it exists.""" - if self.epilog: - formatter.write_paragraph() - with formatter.indentation(): - formatter.write_text(self.epilog) - - def parse_args(self, ctx, args): - parser = self.make_parser(ctx) - opts, args, param_order = parser.parse_args(args=args) - - for param in iter_params_for_processing( - param_order, self.get_params(ctx)): - value, args = param.handle_parse_result(ctx, opts, args) - - if args and not ctx.allow_extra_args and not ctx.resilient_parsing: - ctx.fail('Got unexpected extra argument%s (%s)' - % (len(args) != 1 and 's' or '', - ' '.join(map(make_str, args)))) - - ctx.args = args - return args - - def invoke(self, ctx): - """Given a context, this invokes the attached callback (if it exists) - in the right way. - """ - _maybe_show_deprecated_notice(self) - if self.callback is not None: - return ctx.invoke(self.callback, **ctx.params) - - -class MultiCommand(Command): - """A multi command is the basic implementation of a command that - dispatches to subcommands. The most common version is the - :class:`Group`. - - :param invoke_without_command: this controls how the multi command itself - is invoked. By default it's only invoked - if a subcommand is provided. - :param no_args_is_help: this controls what happens if no arguments are - provided. This option is enabled by default if - `invoke_without_command` is disabled or disabled - if it's enabled. If enabled this will add - ``--help`` as argument if no arguments are - passed. - :param subcommand_metavar: the string that is used in the documentation - to indicate the subcommand place. - :param chain: if this is set to `True` chaining of multiple subcommands - is enabled. This restricts the form of commands in that - they cannot have optional arguments but it allows - multiple commands to be chained together. - :param result_callback: the result callback to attach to this multi - command. - """ - allow_extra_args = True - allow_interspersed_args = False - - def __init__(self, name=None, invoke_without_command=False, - no_args_is_help=None, subcommand_metavar=None, - chain=False, result_callback=None, **attrs): - Command.__init__(self, name, **attrs) - if no_args_is_help is None: - no_args_is_help = not invoke_without_command - self.no_args_is_help = no_args_is_help - self.invoke_without_command = invoke_without_command - if subcommand_metavar is None: - if chain: - subcommand_metavar = SUBCOMMANDS_METAVAR - else: - subcommand_metavar = SUBCOMMAND_METAVAR - self.subcommand_metavar = subcommand_metavar - self.chain = chain - #: The result callback that is stored. This can be set or - #: overridden with the :func:`resultcallback` decorator. - self.result_callback = result_callback - - if self.chain: - for param in self.params: - if isinstance(param, Argument) and not param.required: - raise RuntimeError('Multi commands in chain mode cannot ' - 'have optional arguments.') - - def collect_usage_pieces(self, ctx): - rv = Command.collect_usage_pieces(self, ctx) - rv.append(self.subcommand_metavar) - return rv - - def format_options(self, ctx, formatter): - Command.format_options(self, ctx, formatter) - self.format_commands(ctx, formatter) - - def resultcallback(self, replace=False): - """Adds a result callback to the chain command. By default if a - result callback is already registered this will chain them but - this can be disabled with the `replace` parameter. The result - callback is invoked with the return value of the subcommand - (or the list of return values from all subcommands if chaining - is enabled) as well as the parameters as they would be passed - to the main callback. - - Example:: - - @click.group() - @click.option('-i', '--input', default=23) - def cli(input): - return 42 - - @cli.resultcallback() - def process_result(result, input): - return result + input - - .. versionadded:: 3.0 - - :param replace: if set to `True` an already existing result - callback will be removed. - """ - def decorator(f): - old_callback = self.result_callback - if old_callback is None or replace: - self.result_callback = f - return f - def function(__value, *args, **kwargs): - return f(old_callback(__value, *args, **kwargs), - *args, **kwargs) - self.result_callback = rv = update_wrapper(function, f) - return rv - return decorator - - def format_commands(self, ctx, formatter): - """Extra format methods for multi methods that adds all the commands - after the options. - """ - commands = [] - for subcommand in self.list_commands(ctx): - cmd = self.get_command(ctx, subcommand) - # What is this, the tool lied about a command. Ignore it - if cmd is None: - continue - if cmd.hidden: - continue - - commands.append((subcommand, cmd)) - - # allow for 3 times the default spacing - if len(commands): - limit = formatter.width - 6 - max(len(cmd[0]) for cmd in commands) - - rows = [] - for subcommand, cmd in commands: - help = cmd.get_short_help_str(limit) - rows.append((subcommand, help)) - - if rows: - with formatter.section('Commands'): - formatter.write_dl(rows) - - def parse_args(self, ctx, args): - if not args and self.no_args_is_help and not ctx.resilient_parsing: - echo(ctx.get_help(), color=ctx.color) - ctx.exit() - - rest = Command.parse_args(self, ctx, args) - if self.chain: - ctx.protected_args = rest - ctx.args = [] - elif rest: - ctx.protected_args, ctx.args = rest[:1], rest[1:] - - return ctx.args - - def invoke(self, ctx): - def _process_result(value): - if self.result_callback is not None: - value = ctx.invoke(self.result_callback, value, - **ctx.params) - return value - - if not ctx.protected_args: - # If we are invoked without command the chain flag controls - # how this happens. If we are not in chain mode, the return - # value here is the return value of the command. - # If however we are in chain mode, the return value is the - # return value of the result processor invoked with an empty - # list (which means that no subcommand actually was executed). - if self.invoke_without_command: - if not self.chain: - return Command.invoke(self, ctx) - with ctx: - Command.invoke(self, ctx) - return _process_result([]) - ctx.fail('Missing command.') - - # Fetch args back out - args = ctx.protected_args + ctx.args - ctx.args = [] - ctx.protected_args = [] - - # If we're not in chain mode, we only allow the invocation of a - # single command but we also inform the current context about the - # name of the command to invoke. - if not self.chain: - # Make sure the context is entered so we do not clean up - # resources until the result processor has worked. - with ctx: - cmd_name, cmd, args = self.resolve_command(ctx, args) - ctx.invoked_subcommand = cmd_name - Command.invoke(self, ctx) - sub_ctx = cmd.make_context(cmd_name, args, parent=ctx) - with sub_ctx: - return _process_result(sub_ctx.command.invoke(sub_ctx)) - - # In chain mode we create the contexts step by step, but after the - # base command has been invoked. Because at that point we do not - # know the subcommands yet, the invoked subcommand attribute is - # set to ``*`` to inform the command that subcommands are executed - # but nothing else. - with ctx: - ctx.invoked_subcommand = args and '*' or None - Command.invoke(self, ctx) - - # Otherwise we make every single context and invoke them in a - # chain. In that case the return value to the result processor - # is the list of all invoked subcommand's results. - contexts = [] - while args: - cmd_name, cmd, args = self.resolve_command(ctx, args) - sub_ctx = cmd.make_context(cmd_name, args, parent=ctx, - allow_extra_args=True, - allow_interspersed_args=False) - contexts.append(sub_ctx) - args, sub_ctx.args = sub_ctx.args, [] - - rv = [] - for sub_ctx in contexts: - with sub_ctx: - rv.append(sub_ctx.command.invoke(sub_ctx)) - return _process_result(rv) - - def resolve_command(self, ctx, args): - cmd_name = make_str(args[0]) - original_cmd_name = cmd_name - - # Get the command - cmd = self.get_command(ctx, cmd_name) - - # If we can't find the command but there is a normalization - # function available, we try with that one. - if cmd is None and ctx.token_normalize_func is not None: - cmd_name = ctx.token_normalize_func(cmd_name) - cmd = self.get_command(ctx, cmd_name) - - # If we don't find the command we want to show an error message - # to the user that it was not provided. However, there is - # something else we should do: if the first argument looks like - # an option we want to kick off parsing again for arguments to - # resolve things like --help which now should go to the main - # place. - if cmd is None and not ctx.resilient_parsing: - if split_opt(cmd_name)[0]: - self.parse_args(ctx, ctx.args) - ctx.fail('No such command "%s".' % original_cmd_name) - - return cmd_name, cmd, args[1:] - - def get_command(self, ctx, cmd_name): - """Given a context and a command name, this returns a - :class:`Command` object if it exists or returns `None`. - """ - raise NotImplementedError() - - def list_commands(self, ctx): - """Returns a list of subcommand names in the order they should - appear. - """ - return [] - - -class Group(MultiCommand): - """A group allows a command to have subcommands attached. This is the - most common way to implement nesting in Click. - - :param commands: a dictionary of commands. - """ - - def __init__(self, name=None, commands=None, **attrs): - MultiCommand.__init__(self, name, **attrs) - #: the registered subcommands by their exported names. - self.commands = commands or {} - - def add_command(self, cmd, name=None): - """Registers another :class:`Command` with this group. If the name - is not provided, the name of the command is used. - """ - name = name or cmd.name - if name is None: - raise TypeError('Command has no name.') - _check_multicommand(self, name, cmd, register=True) - self.commands[name] = cmd - - def command(self, *args, **kwargs): - """A shortcut decorator for declaring and attaching a command to - the group. This takes the same arguments as :func:`command` but - immediately registers the created command with this instance by - calling into :meth:`add_command`. - """ - def decorator(f): - cmd = command(*args, **kwargs)(f) - self.add_command(cmd) - return cmd - return decorator - - def group(self, *args, **kwargs): - """A shortcut decorator for declaring and attaching a group to - the group. This takes the same arguments as :func:`group` but - immediately registers the created command with this instance by - calling into :meth:`add_command`. - """ - def decorator(f): - cmd = group(*args, **kwargs)(f) - self.add_command(cmd) - return cmd - return decorator - - def get_command(self, ctx, cmd_name): - return self.commands.get(cmd_name) - - def list_commands(self, ctx): - return sorted(self.commands) - - -class CommandCollection(MultiCommand): - """A command collection is a multi command that merges multiple multi - commands together into one. This is a straightforward implementation - that accepts a list of different multi commands as sources and - provides all the commands for each of them. - """ - - def __init__(self, name=None, sources=None, **attrs): - MultiCommand.__init__(self, name, **attrs) - #: The list of registered multi commands. - self.sources = sources or [] - - def add_source(self, multi_cmd): - """Adds a new multi command to the chain dispatcher.""" - self.sources.append(multi_cmd) - - def get_command(self, ctx, cmd_name): - for source in self.sources: - rv = source.get_command(ctx, cmd_name) - if rv is not None: - if self.chain: - _check_multicommand(self, cmd_name, rv) - return rv - - def list_commands(self, ctx): - rv = set() - for source in self.sources: - rv.update(source.list_commands(ctx)) - return sorted(rv) - - -class Parameter(object): - r"""A parameter to a command comes in two versions: they are either - :class:`Option`\s or :class:`Argument`\s. Other subclasses are currently - not supported by design as some of the internals for parsing are - intentionally not finalized. - - Some settings are supported by both options and arguments. - - .. versionchanged:: 2.0 - Changed signature for parameter callback to also be passed the - parameter. In Click 2.0, the old callback format will still work, - but it will raise a warning to give you change to migrate the - code easier. - - :param param_decls: the parameter declarations for this option or - argument. This is a list of flags or argument - names. - :param type: the type that should be used. Either a :class:`ParamType` - or a Python type. The later is converted into the former - automatically if supported. - :param required: controls if this is optional or not. - :param default: the default value if omitted. This can also be a callable, - in which case it's invoked when the default is needed - without any arguments. - :param callback: a callback that should be executed after the parameter - was matched. This is called as ``fn(ctx, param, - value)`` and needs to return the value. Before Click - 2.0, the signature was ``(ctx, value)``. - :param nargs: the number of arguments to match. If not ``1`` the return - value is a tuple instead of single value. The default for - nargs is ``1`` (except if the type is a tuple, then it's - the arity of the tuple). - :param metavar: how the value is represented in the help page. - :param expose_value: if this is `True` then the value is passed onwards - to the command callback and stored on the context, - otherwise it's skipped. - :param is_eager: eager values are processed before non eager ones. This - should not be set for arguments or it will inverse the - order of processing. - :param envvar: a string or list of strings that are environment variables - that should be checked. - """ - param_type_name = 'parameter' - - def __init__(self, param_decls=None, type=None, required=False, - default=None, callback=None, nargs=None, metavar=None, - expose_value=True, is_eager=False, envvar=None, - autocompletion=None): - self.name, self.opts, self.secondary_opts = \ - self._parse_decls(param_decls or (), expose_value) - - self.type = convert_type(type, default) - - # Default nargs to what the type tells us if we have that - # information available. - if nargs is None: - if self.type.is_composite: - nargs = self.type.arity - else: - nargs = 1 - - self.required = required - self.callback = callback - self.nargs = nargs - self.multiple = False - self.expose_value = expose_value - self.default = default - self.is_eager = is_eager - self.metavar = metavar - self.envvar = envvar - self.autocompletion = autocompletion - - @property - def human_readable_name(self): - """Returns the human readable name of this parameter. This is the - same as the name for options, but the metavar for arguments. - """ - return self.name - - def make_metavar(self): - if self.metavar is not None: - return self.metavar - metavar = self.type.get_metavar(self) - if metavar is None: - metavar = self.type.name.upper() - if self.nargs != 1: - metavar += '...' - return metavar - - def get_default(self, ctx): - """Given a context variable this calculates the default value.""" - # Otherwise go with the regular default. - if callable(self.default): - rv = self.default() - else: - rv = self.default - return self.type_cast_value(ctx, rv) - - def add_to_parser(self, parser, ctx): - pass - - def consume_value(self, ctx, opts): - value = opts.get(self.name) - if value is None: - value = self.value_from_envvar(ctx) - if value is None: - value = ctx.lookup_default(self.name) - return value - - def type_cast_value(self, ctx, value): - """Given a value this runs it properly through the type system. - This automatically handles things like `nargs` and `multiple` as - well as composite types. - """ - if self.type.is_composite: - if self.nargs <= 1: - raise TypeError('Attempted to invoke composite type ' - 'but nargs has been set to %s. This is ' - 'not supported; nargs needs to be set to ' - 'a fixed value > 1.' % self.nargs) - if self.multiple: - return tuple(self.type(x or (), self, ctx) for x in value or ()) - return self.type(value or (), self, ctx) - - def _convert(value, level): - if level == 0: - return self.type(value, self, ctx) - return tuple(_convert(x, level - 1) for x in value or ()) - return _convert(value, (self.nargs != 1) + bool(self.multiple)) - - def process_value(self, ctx, value): - """Given a value and context this runs the logic to convert the - value as necessary. - """ - # If the value we were given is None we do nothing. This way - # code that calls this can easily figure out if something was - # not provided. Otherwise it would be converted into an empty - # tuple for multiple invocations which is inconvenient. - if value is not None: - return self.type_cast_value(ctx, value) - - def value_is_missing(self, value): - if value is None: - return True - if (self.nargs != 1 or self.multiple) and value == (): - return True - return False - - def full_process_value(self, ctx, value): - value = self.process_value(ctx, value) - - if value is None and not ctx.resilient_parsing: - value = self.get_default(ctx) - - if self.required and self.value_is_missing(value): - raise MissingParameter(ctx=ctx, param=self) - - return value - - def resolve_envvar_value(self, ctx): - if self.envvar is None: - return - if isinstance(self.envvar, (tuple, list)): - for envvar in self.envvar: - rv = os.environ.get(envvar) - if rv is not None: - return rv - else: - return os.environ.get(self.envvar) - - def value_from_envvar(self, ctx): - rv = self.resolve_envvar_value(ctx) - if rv is not None and self.nargs != 1: - rv = self.type.split_envvar_value(rv) - return rv - - def handle_parse_result(self, ctx, opts, args): - with augment_usage_errors(ctx, param=self): - value = self.consume_value(ctx, opts) - try: - value = self.full_process_value(ctx, value) - except Exception: - if not ctx.resilient_parsing: - raise - value = None - if self.callback is not None: - try: - value = invoke_param_callback( - self.callback, ctx, self, value) - except Exception: - if not ctx.resilient_parsing: - raise - - if self.expose_value: - ctx.params[self.name] = value - return value, args - - def get_help_record(self, ctx): - pass - - def get_usage_pieces(self, ctx): - return [] - - def get_error_hint(self, ctx): - """Get a stringified version of the param for use in error messages to - indicate which param caused the error. - """ - hint_list = self.opts or [self.human_readable_name] - return ' / '.join('"%s"' % x for x in hint_list) - - -class Option(Parameter): - """Options are usually optional values on the command line and - have some extra features that arguments don't have. - - All other parameters are passed onwards to the parameter constructor. - - :param show_default: controls if the default value should be shown on the - help page. Normally, defaults are not shown. If this - value is a string, it shows the string instead of the - value. This is particularly useful for dynamic options. - :param show_envvar: controls if an environment variable should be shown on - the help page. Normally, environment variables - are not shown. - :param prompt: if set to `True` or a non empty string then the user will be - prompted for input. If set to `True` the prompt will be the - option name capitalized. - :param confirmation_prompt: if set then the value will need to be confirmed - if it was prompted for. - :param hide_input: if this is `True` then the input on the prompt will be - hidden from the user. This is useful for password - input. - :param is_flag: forces this option to act as a flag. The default is - auto detection. - :param flag_value: which value should be used for this flag if it's - enabled. This is set to a boolean automatically if - the option string contains a slash to mark two options. - :param multiple: if this is set to `True` then the argument is accepted - multiple times and recorded. This is similar to ``nargs`` - in how it works but supports arbitrary number of - arguments. - :param count: this flag makes an option increment an integer. - :param allow_from_autoenv: if this is enabled then the value of this - parameter will be pulled from an environment - variable in case a prefix is defined on the - context. - :param help: the help string. - :param hidden: hide this option from help outputs. - """ - param_type_name = 'option' - - def __init__(self, param_decls=None, show_default=False, - prompt=False, confirmation_prompt=False, - hide_input=False, is_flag=None, flag_value=None, - multiple=False, count=False, allow_from_autoenv=True, - type=None, help=None, hidden=False, show_choices=True, - show_envvar=False, **attrs): - default_is_missing = attrs.get('default', _missing) is _missing - Parameter.__init__(self, param_decls, type=type, **attrs) - - if prompt is True: - prompt_text = self.name.replace('_', ' ').capitalize() - elif prompt is False: - prompt_text = None - else: - prompt_text = prompt - self.prompt = prompt_text - self.confirmation_prompt = confirmation_prompt - self.hide_input = hide_input - self.hidden = hidden - - # Flags - if is_flag is None: - if flag_value is not None: - is_flag = True - else: - is_flag = bool(self.secondary_opts) - if is_flag and default_is_missing: - self.default = False - if flag_value is None: - flag_value = not self.default - self.is_flag = is_flag - self.flag_value = flag_value - if self.is_flag and isinstance(self.flag_value, bool) \ - and type is None: - self.type = BOOL - self.is_bool_flag = True - else: - self.is_bool_flag = False - - # Counting - self.count = count - if count: - if type is None: - self.type = IntRange(min=0) - if default_is_missing: - self.default = 0 - - self.multiple = multiple - self.allow_from_autoenv = allow_from_autoenv - self.help = help - self.show_default = show_default - self.show_choices = show_choices - self.show_envvar = show_envvar - - # Sanity check for stuff we don't support - if __debug__: - if self.nargs < 0: - raise TypeError('Options cannot have nargs < 0') - if self.prompt and self.is_flag and not self.is_bool_flag: - raise TypeError('Cannot prompt for flags that are not bools.') - if not self.is_bool_flag and self.secondary_opts: - raise TypeError('Got secondary option for non boolean flag.') - if self.is_bool_flag and self.hide_input \ - and self.prompt is not None: - raise TypeError('Hidden input does not work with boolean ' - 'flag prompts.') - if self.count: - if self.multiple: - raise TypeError('Options cannot be multiple and count ' - 'at the same time.') - elif self.is_flag: - raise TypeError('Options cannot be count and flags at ' - 'the same time.') - - def _parse_decls(self, decls, expose_value): - opts = [] - secondary_opts = [] - name = None - possible_names = [] - - for decl in decls: - if isidentifier(decl): - if name is not None: - raise TypeError('Name defined twice') - name = decl - else: - split_char = decl[:1] == '/' and ';' or '/' - if split_char in decl: - first, second = decl.split(split_char, 1) - first = first.rstrip() - if first: - possible_names.append(split_opt(first)) - opts.append(first) - second = second.lstrip() - if second: - secondary_opts.append(second.lstrip()) - else: - possible_names.append(split_opt(decl)) - opts.append(decl) - - if name is None and possible_names: - possible_names.sort(key=lambda x: -len(x[0])) # group long options first - name = possible_names[0][1].replace('-', '_').lower() - if not isidentifier(name): - name = None - - if name is None: - if not expose_value: - return None, opts, secondary_opts - raise TypeError('Could not determine name for option') - - if not opts and not secondary_opts: - raise TypeError('No options defined but a name was passed (%s). ' - 'Did you mean to declare an argument instead ' - 'of an option?' % name) - - return name, opts, secondary_opts - - def add_to_parser(self, parser, ctx): - kwargs = { - 'dest': self.name, - 'nargs': self.nargs, - 'obj': self, - } - - if self.multiple: - action = 'append' - elif self.count: - action = 'count' - else: - action = 'store' - - if self.is_flag: - kwargs.pop('nargs', None) - if self.is_bool_flag and self.secondary_opts: - parser.add_option(self.opts, action=action + '_const', - const=True, **kwargs) - parser.add_option(self.secondary_opts, action=action + - '_const', const=False, **kwargs) - else: - parser.add_option(self.opts, action=action + '_const', - const=self.flag_value, - **kwargs) - else: - kwargs['action'] = action - parser.add_option(self.opts, **kwargs) - - def get_help_record(self, ctx): - if self.hidden: - return - any_prefix_is_slash = [] - - def _write_opts(opts): - rv, any_slashes = join_options(opts) - if any_slashes: - any_prefix_is_slash[:] = [True] - if not self.is_flag and not self.count: - rv += ' ' + self.make_metavar() - return rv - - rv = [_write_opts(self.opts)] - if self.secondary_opts: - rv.append(_write_opts(self.secondary_opts)) - - help = self.help or '' - extra = [] - if self.show_envvar: - envvar = self.envvar - if envvar is None: - if self.allow_from_autoenv and \ - ctx.auto_envvar_prefix is not None: - envvar = '%s_%s' % (ctx.auto_envvar_prefix, self.name.upper()) - if envvar is not None: - extra.append('env var: %s' % ( - ', '.join('%s' % d for d in envvar) - if isinstance(envvar, (list, tuple)) - else envvar, )) - if self.default is not None and self.show_default: - if isinstance(self.show_default, string_types): - default_string = '({})'.format(self.show_default) - elif isinstance(self.default, (list, tuple)): - default_string = ', '.join('%s' % d for d in self.default) - elif inspect.isfunction(self.default): - default_string = "(dynamic)" - else: - default_string = self.default - extra.append('default: {}'.format(default_string)) - - if self.required: - extra.append('required') - if extra: - help = '%s[%s]' % (help and help + ' ' or '', '; '.join(extra)) - - return ((any_prefix_is_slash and '; ' or ' / ').join(rv), help) - - def get_default(self, ctx): - # If we're a non boolean flag out default is more complex because - # we need to look at all flags in the same group to figure out - # if we're the the default one in which case we return the flag - # value as default. - if self.is_flag and not self.is_bool_flag: - for param in ctx.command.params: - if param.name == self.name and param.default: - return param.flag_value - return None - return Parameter.get_default(self, ctx) - - def prompt_for_value(self, ctx): - """This is an alternative flow that can be activated in the full - value processing if a value does not exist. It will prompt the - user until a valid value exists and then returns the processed - value as result. - """ - # Calculate the default before prompting anything to be stable. - default = self.get_default(ctx) - - # If this is a prompt for a flag we need to handle this - # differently. - if self.is_bool_flag: - return confirm(self.prompt, default) - - return prompt(self.prompt, default=default, type=self.type, - hide_input=self.hide_input, show_choices=self.show_choices, - confirmation_prompt=self.confirmation_prompt, - value_proc=lambda x: self.process_value(ctx, x)) - - def resolve_envvar_value(self, ctx): - rv = Parameter.resolve_envvar_value(self, ctx) - if rv is not None: - return rv - if self.allow_from_autoenv and \ - ctx.auto_envvar_prefix is not None: - envvar = '%s_%s' % (ctx.auto_envvar_prefix, self.name.upper()) - return os.environ.get(envvar) - - def value_from_envvar(self, ctx): - rv = self.resolve_envvar_value(ctx) - if rv is None: - return None - value_depth = (self.nargs != 1) + bool(self.multiple) - if value_depth > 0 and rv is not None: - rv = self.type.split_envvar_value(rv) - if self.multiple and self.nargs != 1: - rv = batch(rv, self.nargs) - return rv - - def full_process_value(self, ctx, value): - if value is None and self.prompt is not None \ - and not ctx.resilient_parsing: - return self.prompt_for_value(ctx) - return Parameter.full_process_value(self, ctx, value) - - -class Argument(Parameter): - """Arguments are positional parameters to a command. They generally - provide fewer features than options but can have infinite ``nargs`` - and are required by default. - - All parameters are passed onwards to the parameter constructor. - """ - param_type_name = 'argument' - - def __init__(self, param_decls, required=None, **attrs): - if required is None: - if attrs.get('default') is not None: - required = False - else: - required = attrs.get('nargs', 1) > 0 - Parameter.__init__(self, param_decls, required=required, **attrs) - if self.default is not None and self.nargs < 0: - raise TypeError('nargs=-1 in combination with a default value ' - 'is not supported.') - - @property - def human_readable_name(self): - if self.metavar is not None: - return self.metavar - return self.name.upper() - - def make_metavar(self): - if self.metavar is not None: - return self.metavar - var = self.type.get_metavar(self) - if not var: - var = self.name.upper() - if not self.required: - var = '[%s]' % var - if self.nargs != 1: - var += '...' - return var - - def _parse_decls(self, decls, expose_value): - if not decls: - if not expose_value: - return None, [], [] - raise TypeError('Could not determine name for argument') - if len(decls) == 1: - name = arg = decls[0] - name = name.replace('-', '_').lower() - else: - raise TypeError('Arguments take exactly one ' - 'parameter declaration, got %d' % len(decls)) - return name, [arg], [] - - def get_usage_pieces(self, ctx): - return [self.make_metavar()] - - def get_error_hint(self, ctx): - return '"%s"' % self.make_metavar() - - def add_to_parser(self, parser, ctx): - parser.add_argument(dest=self.name, nargs=self.nargs, - obj=self) - - -# Circular dependency between decorators and core -from .decorators import command, group diff --git a/python/click/decorators.py b/python/click/decorators.py deleted file mode 100644 index c57c530..0000000 --- a/python/click/decorators.py +++ /dev/null @@ -1,311 +0,0 @@ -import sys -import inspect - -from functools import update_wrapper - -from ._compat import iteritems -from ._unicodefun import _check_for_unicode_literals -from .utils import echo -from .globals import get_current_context - - -def pass_context(f): - """Marks a callback as wanting to receive the current context - object as first argument. - """ - def new_func(*args, **kwargs): - return f(get_current_context(), *args, **kwargs) - return update_wrapper(new_func, f) - - -def pass_obj(f): - """Similar to :func:`pass_context`, but only pass the object on the - context onwards (:attr:`Context.obj`). This is useful if that object - represents the state of a nested system. - """ - def new_func(*args, **kwargs): - return f(get_current_context().obj, *args, **kwargs) - return update_wrapper(new_func, f) - - -def make_pass_decorator(object_type, ensure=False): - """Given an object type this creates a decorator that will work - similar to :func:`pass_obj` but instead of passing the object of the - current context, it will find the innermost context of type - :func:`object_type`. - - This generates a decorator that works roughly like this:: - - from functools import update_wrapper - - def decorator(f): - @pass_context - def new_func(ctx, *args, **kwargs): - obj = ctx.find_object(object_type) - return ctx.invoke(f, obj, *args, **kwargs) - return update_wrapper(new_func, f) - return decorator - - :param object_type: the type of the object to pass. - :param ensure: if set to `True`, a new object will be created and - remembered on the context if it's not there yet. - """ - def decorator(f): - def new_func(*args, **kwargs): - ctx = get_current_context() - if ensure: - obj = ctx.ensure_object(object_type) - else: - obj = ctx.find_object(object_type) - if obj is None: - raise RuntimeError('Managed to invoke callback without a ' - 'context object of type %r existing' - % object_type.__name__) - return ctx.invoke(f, obj, *args, **kwargs) - return update_wrapper(new_func, f) - return decorator - - -def _make_command(f, name, attrs, cls): - if isinstance(f, Command): - raise TypeError('Attempted to convert a callback into a ' - 'command twice.') - try: - params = f.__click_params__ - params.reverse() - del f.__click_params__ - except AttributeError: - params = [] - help = attrs.get('help') - if help is None: - help = inspect.getdoc(f) - if isinstance(help, bytes): - help = help.decode('utf-8') - else: - help = inspect.cleandoc(help) - attrs['help'] = help - _check_for_unicode_literals() - return cls(name=name or f.__name__.lower().replace('_', '-'), - callback=f, params=params, **attrs) - - -def command(name=None, cls=None, **attrs): - r"""Creates a new :class:`Command` and uses the decorated function as - callback. This will also automatically attach all decorated - :func:`option`\s and :func:`argument`\s as parameters to the command. - - The name of the command defaults to the name of the function. If you - want to change that, you can pass the intended name as the first - argument. - - All keyword arguments are forwarded to the underlying command class. - - Once decorated the function turns into a :class:`Command` instance - that can be invoked as a command line utility or be attached to a - command :class:`Group`. - - :param name: the name of the command. This defaults to the function - name with underscores replaced by dashes. - :param cls: the command class to instantiate. This defaults to - :class:`Command`. - """ - if cls is None: - cls = Command - def decorator(f): - cmd = _make_command(f, name, attrs, cls) - cmd.__doc__ = f.__doc__ - return cmd - return decorator - - -def group(name=None, **attrs): - """Creates a new :class:`Group` with a function as callback. This - works otherwise the same as :func:`command` just that the `cls` - parameter is set to :class:`Group`. - """ - attrs.setdefault('cls', Group) - return command(name, **attrs) - - -def _param_memo(f, param): - if isinstance(f, Command): - f.params.append(param) - else: - if not hasattr(f, '__click_params__'): - f.__click_params__ = [] - f.__click_params__.append(param) - - -def argument(*param_decls, **attrs): - """Attaches an argument to the command. All positional arguments are - passed as parameter declarations to :class:`Argument`; all keyword - arguments are forwarded unchanged (except ``cls``). - This is equivalent to creating an :class:`Argument` instance manually - and attaching it to the :attr:`Command.params` list. - - :param cls: the argument class to instantiate. This defaults to - :class:`Argument`. - """ - def decorator(f): - ArgumentClass = attrs.pop('cls', Argument) - _param_memo(f, ArgumentClass(param_decls, **attrs)) - return f - return decorator - - -def option(*param_decls, **attrs): - """Attaches an option to the command. All positional arguments are - passed as parameter declarations to :class:`Option`; all keyword - arguments are forwarded unchanged (except ``cls``). - This is equivalent to creating an :class:`Option` instance manually - and attaching it to the :attr:`Command.params` list. - - :param cls: the option class to instantiate. This defaults to - :class:`Option`. - """ - def decorator(f): - # Issue 926, copy attrs, so pre-defined options can re-use the same cls= - option_attrs = attrs.copy() - - if 'help' in option_attrs: - option_attrs['help'] = inspect.cleandoc(option_attrs['help']) - OptionClass = option_attrs.pop('cls', Option) - _param_memo(f, OptionClass(param_decls, **option_attrs)) - return f - return decorator - - -def confirmation_option(*param_decls, **attrs): - """Shortcut for confirmation prompts that can be ignored by passing - ``--yes`` as parameter. - - This is equivalent to decorating a function with :func:`option` with - the following parameters:: - - def callback(ctx, param, value): - if not value: - ctx.abort() - - @click.command() - @click.option('--yes', is_flag=True, callback=callback, - expose_value=False, prompt='Do you want to continue?') - def dropdb(): - pass - """ - def decorator(f): - def callback(ctx, param, value): - if not value: - ctx.abort() - attrs.setdefault('is_flag', True) - attrs.setdefault('callback', callback) - attrs.setdefault('expose_value', False) - attrs.setdefault('prompt', 'Do you want to continue?') - attrs.setdefault('help', 'Confirm the action without prompting.') - return option(*(param_decls or ('--yes',)), **attrs)(f) - return decorator - - -def password_option(*param_decls, **attrs): - """Shortcut for password prompts. - - This is equivalent to decorating a function with :func:`option` with - the following parameters:: - - @click.command() - @click.option('--password', prompt=True, confirmation_prompt=True, - hide_input=True) - def changeadmin(password): - pass - """ - def decorator(f): - attrs.setdefault('prompt', True) - attrs.setdefault('confirmation_prompt', True) - attrs.setdefault('hide_input', True) - return option(*(param_decls or ('--password',)), **attrs)(f) - return decorator - - -def version_option(version=None, *param_decls, **attrs): - """Adds a ``--version`` option which immediately ends the program - printing out the version number. This is implemented as an eager - option that prints the version and exits the program in the callback. - - :param version: the version number to show. If not provided Click - attempts an auto discovery via setuptools. - :param prog_name: the name of the program (defaults to autodetection) - :param message: custom message to show instead of the default - (``'%(prog)s, version %(version)s'``) - :param others: everything else is forwarded to :func:`option`. - """ - if version is None: - if hasattr(sys, '_getframe'): - module = sys._getframe(1).f_globals.get('__name__') - else: - module = '' - - def decorator(f): - prog_name = attrs.pop('prog_name', None) - message = attrs.pop('message', '%(prog)s, version %(version)s') - - def callback(ctx, param, value): - if not value or ctx.resilient_parsing: - return - prog = prog_name - if prog is None: - prog = ctx.find_root().info_name - ver = version - if ver is None: - try: - import pkg_resources - except ImportError: - pass - else: - for dist in pkg_resources.working_set: - scripts = dist.get_entry_map().get('console_scripts') or {} - for script_name, entry_point in iteritems(scripts): - if entry_point.module_name == module: - ver = dist.version - break - if ver is None: - raise RuntimeError('Could not determine version') - echo(message % { - 'prog': prog, - 'version': ver, - }, color=ctx.color) - ctx.exit() - - attrs.setdefault('is_flag', True) - attrs.setdefault('expose_value', False) - attrs.setdefault('is_eager', True) - attrs.setdefault('help', 'Show the version and exit.') - attrs['callback'] = callback - return option(*(param_decls or ('--version',)), **attrs)(f) - return decorator - - -def help_option(*param_decls, **attrs): - """Adds a ``--help`` option which immediately ends the program - printing out the help page. This is usually unnecessary to add as - this is added by default to all commands unless suppressed. - - Like :func:`version_option`, this is implemented as eager option that - prints in the callback and exits. - - All arguments are forwarded to :func:`option`. - """ - def decorator(f): - def callback(ctx, param, value): - if value and not ctx.resilient_parsing: - echo(ctx.get_help(), color=ctx.color) - ctx.exit() - attrs.setdefault('is_flag', True) - attrs.setdefault('expose_value', False) - attrs.setdefault('help', 'Show this message and exit.') - attrs.setdefault('is_eager', True) - attrs['callback'] = callback - return option(*(param_decls or ('--help',)), **attrs)(f) - return decorator - - -# Circular dependencies between core and decorators -from .core import Command, Group, Argument, Option diff --git a/python/click/exceptions.py b/python/click/exceptions.py deleted file mode 100644 index 6fa1765..0000000 --- a/python/click/exceptions.py +++ /dev/null @@ -1,235 +0,0 @@ -from ._compat import PY2, filename_to_ui, get_text_stderr -from .utils import echo - - -def _join_param_hints(param_hint): - if isinstance(param_hint, (tuple, list)): - return ' / '.join('"%s"' % x for x in param_hint) - return param_hint - - -class ClickException(Exception): - """An exception that Click can handle and show to the user.""" - - #: The exit code for this exception - exit_code = 1 - - def __init__(self, message): - ctor_msg = message - if PY2: - if ctor_msg is not None: - ctor_msg = ctor_msg.encode('utf-8') - Exception.__init__(self, ctor_msg) - self.message = message - - def format_message(self): - return self.message - - def __str__(self): - return self.message - - if PY2: - __unicode__ = __str__ - - def __str__(self): - return self.message.encode('utf-8') - - def show(self, file=None): - if file is None: - file = get_text_stderr() - echo('Error: %s' % self.format_message(), file=file) - - -class UsageError(ClickException): - """An internal exception that signals a usage error. This typically - aborts any further handling. - - :param message: the error message to display. - :param ctx: optionally the context that caused this error. Click will - fill in the context automatically in some situations. - """ - exit_code = 2 - - def __init__(self, message, ctx=None): - ClickException.__init__(self, message) - self.ctx = ctx - self.cmd = self.ctx and self.ctx.command or None - - def show(self, file=None): - if file is None: - file = get_text_stderr() - color = None - hint = '' - if (self.cmd is not None and - self.cmd.get_help_option(self.ctx) is not None): - hint = ('Try "%s %s" for help.\n' - % (self.ctx.command_path, self.ctx.help_option_names[0])) - if self.ctx is not None: - color = self.ctx.color - echo(self.ctx.get_usage() + '\n%s' % hint, file=file, color=color) - echo('Error: %s' % self.format_message(), file=file, color=color) - - -class BadParameter(UsageError): - """An exception that formats out a standardized error message for a - bad parameter. This is useful when thrown from a callback or type as - Click will attach contextual information to it (for instance, which - parameter it is). - - .. versionadded:: 2.0 - - :param param: the parameter object that caused this error. This can - be left out, and Click will attach this info itself - if possible. - :param param_hint: a string that shows up as parameter name. This - can be used as alternative to `param` in cases - where custom validation should happen. If it is - a string it's used as such, if it's a list then - each item is quoted and separated. - """ - - def __init__(self, message, ctx=None, param=None, - param_hint=None): - UsageError.__init__(self, message, ctx) - self.param = param - self.param_hint = param_hint - - def format_message(self): - if self.param_hint is not None: - param_hint = self.param_hint - elif self.param is not None: - param_hint = self.param.get_error_hint(self.ctx) - else: - return 'Invalid value: %s' % self.message - param_hint = _join_param_hints(param_hint) - - return 'Invalid value for %s: %s' % (param_hint, self.message) - - -class MissingParameter(BadParameter): - """Raised if click required an option or argument but it was not - provided when invoking the script. - - .. versionadded:: 4.0 - - :param param_type: a string that indicates the type of the parameter. - The default is to inherit the parameter type from - the given `param`. Valid values are ``'parameter'``, - ``'option'`` or ``'argument'``. - """ - - def __init__(self, message=None, ctx=None, param=None, - param_hint=None, param_type=None): - BadParameter.__init__(self, message, ctx, param, param_hint) - self.param_type = param_type - - def format_message(self): - if self.param_hint is not None: - param_hint = self.param_hint - elif self.param is not None: - param_hint = self.param.get_error_hint(self.ctx) - else: - param_hint = None - param_hint = _join_param_hints(param_hint) - - param_type = self.param_type - if param_type is None and self.param is not None: - param_type = self.param.param_type_name - - msg = self.message - if self.param is not None: - msg_extra = self.param.type.get_missing_message(self.param) - if msg_extra: - if msg: - msg += '. ' + msg_extra - else: - msg = msg_extra - - return 'Missing %s%s%s%s' % ( - param_type, - param_hint and ' %s' % param_hint or '', - msg and '. ' or '.', - msg or '', - ) - - -class NoSuchOption(UsageError): - """Raised if click attempted to handle an option that does not - exist. - - .. versionadded:: 4.0 - """ - - def __init__(self, option_name, message=None, possibilities=None, - ctx=None): - if message is None: - message = 'no such option: %s' % option_name - UsageError.__init__(self, message, ctx) - self.option_name = option_name - self.possibilities = possibilities - - def format_message(self): - bits = [self.message] - if self.possibilities: - if len(self.possibilities) == 1: - bits.append('Did you mean %s?' % self.possibilities[0]) - else: - possibilities = sorted(self.possibilities) - bits.append('(Possible options: %s)' % ', '.join(possibilities)) - return ' '.join(bits) - - -class BadOptionUsage(UsageError): - """Raised if an option is generally supplied but the use of the option - was incorrect. This is for instance raised if the number of arguments - for an option is not correct. - - .. versionadded:: 4.0 - - :param option_name: the name of the option being used incorrectly. - """ - - def __init__(self, option_name, message, ctx=None): - UsageError.__init__(self, message, ctx) - self.option_name = option_name - - -class BadArgumentUsage(UsageError): - """Raised if an argument is generally supplied but the use of the argument - was incorrect. This is for instance raised if the number of values - for an argument is not correct. - - .. versionadded:: 6.0 - """ - - def __init__(self, message, ctx=None): - UsageError.__init__(self, message, ctx) - - -class FileError(ClickException): - """Raised if a file cannot be opened.""" - - def __init__(self, filename, hint=None): - ui_filename = filename_to_ui(filename) - if hint is None: - hint = 'unknown error' - ClickException.__init__(self, hint) - self.ui_filename = ui_filename - self.filename = filename - - def format_message(self): - return 'Could not open file %s: %s' % (self.ui_filename, self.message) - - -class Abort(RuntimeError): - """An internal signalling exception that signals Click to abort.""" - - -class Exit(RuntimeError): - """An exception that indicates that the application should exit with some - status code. - - :param code: the status code to exit with. - """ - def __init__(self, code=0): - self.exit_code = code diff --git a/python/click/formatting.py b/python/click/formatting.py deleted file mode 100644 index a3d6a4d..0000000 --- a/python/click/formatting.py +++ /dev/null @@ -1,256 +0,0 @@ -from contextlib import contextmanager -from .termui import get_terminal_size -from .parser import split_opt -from ._compat import term_len - - -# Can force a width. This is used by the test system -FORCED_WIDTH = None - - -def measure_table(rows): - widths = {} - for row in rows: - for idx, col in enumerate(row): - widths[idx] = max(widths.get(idx, 0), term_len(col)) - return tuple(y for x, y in sorted(widths.items())) - - -def iter_rows(rows, col_count): - for row in rows: - row = tuple(row) - yield row + ('',) * (col_count - len(row)) - - -def wrap_text(text, width=78, initial_indent='', subsequent_indent='', - preserve_paragraphs=False): - """A helper function that intelligently wraps text. By default, it - assumes that it operates on a single paragraph of text but if the - `preserve_paragraphs` parameter is provided it will intelligently - handle paragraphs (defined by two empty lines). - - If paragraphs are handled, a paragraph can be prefixed with an empty - line containing the ``\\b`` character (``\\x08``) to indicate that - no rewrapping should happen in that block. - - :param text: the text that should be rewrapped. - :param width: the maximum width for the text. - :param initial_indent: the initial indent that should be placed on the - first line as a string. - :param subsequent_indent: the indent string that should be placed on - each consecutive line. - :param preserve_paragraphs: if this flag is set then the wrapping will - intelligently handle paragraphs. - """ - from ._textwrap import TextWrapper - text = text.expandtabs() - wrapper = TextWrapper(width, initial_indent=initial_indent, - subsequent_indent=subsequent_indent, - replace_whitespace=False) - if not preserve_paragraphs: - return wrapper.fill(text) - - p = [] - buf = [] - indent = None - - def _flush_par(): - if not buf: - return - if buf[0].strip() == '\b': - p.append((indent or 0, True, '\n'.join(buf[1:]))) - else: - p.append((indent or 0, False, ' '.join(buf))) - del buf[:] - - for line in text.splitlines(): - if not line: - _flush_par() - indent = None - else: - if indent is None: - orig_len = term_len(line) - line = line.lstrip() - indent = orig_len - term_len(line) - buf.append(line) - _flush_par() - - rv = [] - for indent, raw, text in p: - with wrapper.extra_indent(' ' * indent): - if raw: - rv.append(wrapper.indent_only(text)) - else: - rv.append(wrapper.fill(text)) - - return '\n\n'.join(rv) - - -class HelpFormatter(object): - """This class helps with formatting text-based help pages. It's - usually just needed for very special internal cases, but it's also - exposed so that developers can write their own fancy outputs. - - At present, it always writes into memory. - - :param indent_increment: the additional increment for each level. - :param width: the width for the text. This defaults to the terminal - width clamped to a maximum of 78. - """ - - def __init__(self, indent_increment=2, width=None, max_width=None): - self.indent_increment = indent_increment - if max_width is None: - max_width = 80 - if width is None: - width = FORCED_WIDTH - if width is None: - width = max(min(get_terminal_size()[0], max_width) - 2, 50) - self.width = width - self.current_indent = 0 - self.buffer = [] - - def write(self, string): - """Writes a unicode string into the internal buffer.""" - self.buffer.append(string) - - def indent(self): - """Increases the indentation.""" - self.current_indent += self.indent_increment - - def dedent(self): - """Decreases the indentation.""" - self.current_indent -= self.indent_increment - - def write_usage(self, prog, args='', prefix='Usage: '): - """Writes a usage line into the buffer. - - :param prog: the program name. - :param args: whitespace separated list of arguments. - :param prefix: the prefix for the first line. - """ - usage_prefix = '%*s%s ' % (self.current_indent, prefix, prog) - text_width = self.width - self.current_indent - - if text_width >= (term_len(usage_prefix) + 20): - # The arguments will fit to the right of the prefix. - indent = ' ' * term_len(usage_prefix) - self.write(wrap_text(args, text_width, - initial_indent=usage_prefix, - subsequent_indent=indent)) - else: - # The prefix is too long, put the arguments on the next line. - self.write(usage_prefix) - self.write('\n') - indent = ' ' * (max(self.current_indent, term_len(prefix)) + 4) - self.write(wrap_text(args, text_width, - initial_indent=indent, - subsequent_indent=indent)) - - self.write('\n') - - def write_heading(self, heading): - """Writes a heading into the buffer.""" - self.write('%*s%s:\n' % (self.current_indent, '', heading)) - - def write_paragraph(self): - """Writes a paragraph into the buffer.""" - if self.buffer: - self.write('\n') - - def write_text(self, text): - """Writes re-indented text into the buffer. This rewraps and - preserves paragraphs. - """ - text_width = max(self.width - self.current_indent, 11) - indent = ' ' * self.current_indent - self.write(wrap_text(text, text_width, - initial_indent=indent, - subsequent_indent=indent, - preserve_paragraphs=True)) - self.write('\n') - - def write_dl(self, rows, col_max=30, col_spacing=2): - """Writes a definition list into the buffer. This is how options - and commands are usually formatted. - - :param rows: a list of two item tuples for the terms and values. - :param col_max: the maximum width of the first column. - :param col_spacing: the number of spaces between the first and - second column. - """ - rows = list(rows) - widths = measure_table(rows) - if len(widths) != 2: - raise TypeError('Expected two columns for definition list') - - first_col = min(widths[0], col_max) + col_spacing - - for first, second in iter_rows(rows, len(widths)): - self.write('%*s%s' % (self.current_indent, '', first)) - if not second: - self.write('\n') - continue - if term_len(first) <= first_col - col_spacing: - self.write(' ' * (first_col - term_len(first))) - else: - self.write('\n') - self.write(' ' * (first_col + self.current_indent)) - - text_width = max(self.width - first_col - 2, 10) - lines = iter(wrap_text(second, text_width).splitlines()) - if lines: - self.write(next(lines) + '\n') - for line in lines: - self.write('%*s%s\n' % ( - first_col + self.current_indent, '', line)) - else: - self.write('\n') - - @contextmanager - def section(self, name): - """Helpful context manager that writes a paragraph, a heading, - and the indents. - - :param name: the section name that is written as heading. - """ - self.write_paragraph() - self.write_heading(name) - self.indent() - try: - yield - finally: - self.dedent() - - @contextmanager - def indentation(self): - """A context manager that increases the indentation.""" - self.indent() - try: - yield - finally: - self.dedent() - - def getvalue(self): - """Returns the buffer contents.""" - return ''.join(self.buffer) - - -def join_options(options): - """Given a list of option strings this joins them in the most appropriate - way and returns them in the form ``(formatted_string, - any_prefix_is_slash)`` where the second item in the tuple is a flag that - indicates if any of the option prefixes was a slash. - """ - rv = [] - any_prefix_is_slash = False - for opt in options: - prefix = split_opt(opt)[0] - if prefix == '/': - any_prefix_is_slash = True - rv.append((len(prefix), opt)) - - rv.sort(key=lambda x: x[0]) - - rv = ', '.join(x[1] for x in rv) - return rv, any_prefix_is_slash diff --git a/python/click/globals.py b/python/click/globals.py deleted file mode 100644 index 843b594..0000000 --- a/python/click/globals.py +++ /dev/null @@ -1,48 +0,0 @@ -from threading import local - - -_local = local() - - -def get_current_context(silent=False): - """Returns the current click context. This can be used as a way to - access the current context object from anywhere. This is a more implicit - alternative to the :func:`pass_context` decorator. This function is - primarily useful for helpers such as :func:`echo` which might be - interested in changing its behavior based on the current context. - - To push the current context, :meth:`Context.scope` can be used. - - .. versionadded:: 5.0 - - :param silent: is set to `True` the return value is `None` if no context - is available. The default behavior is to raise a - :exc:`RuntimeError`. - """ - try: - return getattr(_local, 'stack')[-1] - except (AttributeError, IndexError): - if not silent: - raise RuntimeError('There is no active click context.') - - -def push_context(ctx): - """Pushes a new context to the current stack.""" - _local.__dict__.setdefault('stack', []).append(ctx) - - -def pop_context(): - """Removes the top level from the stack.""" - _local.stack.pop() - - -def resolve_color_default(color=None): - """"Internal helper to get the default value of the color flag. If a - value is passed it's returned unchanged, otherwise it's looked up from - the current context. - """ - if color is not None: - return color - ctx = get_current_context(silent=True) - if ctx is not None: - return ctx.color diff --git a/python/click/parser.py b/python/click/parser.py deleted file mode 100644 index 1c3ae9c..0000000 --- a/python/click/parser.py +++ /dev/null @@ -1,427 +0,0 @@ -# -*- coding: utf-8 -*- -""" -click.parser -~~~~~~~~~~~~ - -This module started out as largely a copy paste from the stdlib's -optparse module with the features removed that we do not need from -optparse because we implement them in Click on a higher level (for -instance type handling, help formatting and a lot more). - -The plan is to remove more and more from here over time. - -The reason this is a different module and not optparse from the stdlib -is that there are differences in 2.x and 3.x about the error messages -generated and optparse in the stdlib uses gettext for no good reason -and might cause us issues. -""" - -import re -from collections import deque -from .exceptions import UsageError, NoSuchOption, BadOptionUsage, \ - BadArgumentUsage - - -def _unpack_args(args, nargs_spec): - """Given an iterable of arguments and an iterable of nargs specifications, - it returns a tuple with all the unpacked arguments at the first index - and all remaining arguments as the second. - - The nargs specification is the number of arguments that should be consumed - or `-1` to indicate that this position should eat up all the remainders. - - Missing items are filled with `None`. - """ - args = deque(args) - nargs_spec = deque(nargs_spec) - rv = [] - spos = None - - def _fetch(c): - try: - if spos is None: - return c.popleft() - else: - return c.pop() - except IndexError: - return None - - while nargs_spec: - nargs = _fetch(nargs_spec) - if nargs == 1: - rv.append(_fetch(args)) - elif nargs > 1: - x = [_fetch(args) for _ in range(nargs)] - # If we're reversed, we're pulling in the arguments in reverse, - # so we need to turn them around. - if spos is not None: - x.reverse() - rv.append(tuple(x)) - elif nargs < 0: - if spos is not None: - raise TypeError('Cannot have two nargs < 0') - spos = len(rv) - rv.append(None) - - # spos is the position of the wildcard (star). If it's not `None`, - # we fill it with the remainder. - if spos is not None: - rv[spos] = tuple(args) - args = [] - rv[spos + 1:] = reversed(rv[spos + 1:]) - - return tuple(rv), list(args) - - -def _error_opt_args(nargs, opt): - if nargs == 1: - raise BadOptionUsage(opt, '%s option requires an argument' % opt) - raise BadOptionUsage(opt, '%s option requires %d arguments' % (opt, nargs)) - - -def split_opt(opt): - first = opt[:1] - if first.isalnum(): - return '', opt - if opt[1:2] == first: - return opt[:2], opt[2:] - return first, opt[1:] - - -def normalize_opt(opt, ctx): - if ctx is None or ctx.token_normalize_func is None: - return opt - prefix, opt = split_opt(opt) - return prefix + ctx.token_normalize_func(opt) - - -def split_arg_string(string): - """Given an argument string this attempts to split it into small parts.""" - rv = [] - for match in re.finditer(r"('([^'\\]*(?:\\.[^'\\]*)*)'" - r'|"([^"\\]*(?:\\.[^"\\]*)*)"' - r'|\S+)\s*', string, re.S): - arg = match.group().strip() - if arg[:1] == arg[-1:] and arg[:1] in '"\'': - arg = arg[1:-1].encode('ascii', 'backslashreplace') \ - .decode('unicode-escape') - try: - arg = type(string)(arg) - except UnicodeError: - pass - rv.append(arg) - return rv - - -class Option(object): - - def __init__(self, opts, dest, action=None, nargs=1, const=None, obj=None): - self._short_opts = [] - self._long_opts = [] - self.prefixes = set() - - for opt in opts: - prefix, value = split_opt(opt) - if not prefix: - raise ValueError('Invalid start character for option (%s)' - % opt) - self.prefixes.add(prefix[0]) - if len(prefix) == 1 and len(value) == 1: - self._short_opts.append(opt) - else: - self._long_opts.append(opt) - self.prefixes.add(prefix) - - if action is None: - action = 'store' - - self.dest = dest - self.action = action - self.nargs = nargs - self.const = const - self.obj = obj - - @property - def takes_value(self): - return self.action in ('store', 'append') - - def process(self, value, state): - if self.action == 'store': - state.opts[self.dest] = value - elif self.action == 'store_const': - state.opts[self.dest] = self.const - elif self.action == 'append': - state.opts.setdefault(self.dest, []).append(value) - elif self.action == 'append_const': - state.opts.setdefault(self.dest, []).append(self.const) - elif self.action == 'count': - state.opts[self.dest] = state.opts.get(self.dest, 0) + 1 - else: - raise ValueError('unknown action %r' % self.action) - state.order.append(self.obj) - - -class Argument(object): - - def __init__(self, dest, nargs=1, obj=None): - self.dest = dest - self.nargs = nargs - self.obj = obj - - def process(self, value, state): - if self.nargs > 1: - holes = sum(1 for x in value if x is None) - if holes == len(value): - value = None - elif holes != 0: - raise BadArgumentUsage('argument %s takes %d values' - % (self.dest, self.nargs)) - state.opts[self.dest] = value - state.order.append(self.obj) - - -class ParsingState(object): - - def __init__(self, rargs): - self.opts = {} - self.largs = [] - self.rargs = rargs - self.order = [] - - -class OptionParser(object): - """The option parser is an internal class that is ultimately used to - parse options and arguments. It's modelled after optparse and brings - a similar but vastly simplified API. It should generally not be used - directly as the high level Click classes wrap it for you. - - It's not nearly as extensible as optparse or argparse as it does not - implement features that are implemented on a higher level (such as - types or defaults). - - :param ctx: optionally the :class:`~click.Context` where this parser - should go with. - """ - - def __init__(self, ctx=None): - #: The :class:`~click.Context` for this parser. This might be - #: `None` for some advanced use cases. - self.ctx = ctx - #: This controls how the parser deals with interspersed arguments. - #: If this is set to `False`, the parser will stop on the first - #: non-option. Click uses this to implement nested subcommands - #: safely. - self.allow_interspersed_args = True - #: This tells the parser how to deal with unknown options. By - #: default it will error out (which is sensible), but there is a - #: second mode where it will ignore it and continue processing - #: after shifting all the unknown options into the resulting args. - self.ignore_unknown_options = False - if ctx is not None: - self.allow_interspersed_args = ctx.allow_interspersed_args - self.ignore_unknown_options = ctx.ignore_unknown_options - self._short_opt = {} - self._long_opt = {} - self._opt_prefixes = set(['-', '--']) - self._args = [] - - def add_option(self, opts, dest, action=None, nargs=1, const=None, - obj=None): - """Adds a new option named `dest` to the parser. The destination - is not inferred (unlike with optparse) and needs to be explicitly - provided. Action can be any of ``store``, ``store_const``, - ``append``, ``appnd_const`` or ``count``. - - The `obj` can be used to identify the option in the order list - that is returned from the parser. - """ - if obj is None: - obj = dest - opts = [normalize_opt(opt, self.ctx) for opt in opts] - option = Option(opts, dest, action=action, nargs=nargs, - const=const, obj=obj) - self._opt_prefixes.update(option.prefixes) - for opt in option._short_opts: - self._short_opt[opt] = option - for opt in option._long_opts: - self._long_opt[opt] = option - - def add_argument(self, dest, nargs=1, obj=None): - """Adds a positional argument named `dest` to the parser. - - The `obj` can be used to identify the option in the order list - that is returned from the parser. - """ - if obj is None: - obj = dest - self._args.append(Argument(dest=dest, nargs=nargs, obj=obj)) - - def parse_args(self, args): - """Parses positional arguments and returns ``(values, args, order)`` - for the parsed options and arguments as well as the leftover - arguments if there are any. The order is a list of objects as they - appear on the command line. If arguments appear multiple times they - will be memorized multiple times as well. - """ - state = ParsingState(args) - try: - self._process_args_for_options(state) - self._process_args_for_args(state) - except UsageError: - if self.ctx is None or not self.ctx.resilient_parsing: - raise - return state.opts, state.largs, state.order - - def _process_args_for_args(self, state): - pargs, args = _unpack_args(state.largs + state.rargs, - [x.nargs for x in self._args]) - - for idx, arg in enumerate(self._args): - arg.process(pargs[idx], state) - - state.largs = args - state.rargs = [] - - def _process_args_for_options(self, state): - while state.rargs: - arg = state.rargs.pop(0) - arglen = len(arg) - # Double dashes always handled explicitly regardless of what - # prefixes are valid. - if arg == '--': - return - elif arg[:1] in self._opt_prefixes and arglen > 1: - self._process_opts(arg, state) - elif self.allow_interspersed_args: - state.largs.append(arg) - else: - state.rargs.insert(0, arg) - return - - # Say this is the original argument list: - # [arg0, arg1, ..., arg(i-1), arg(i), arg(i+1), ..., arg(N-1)] - # ^ - # (we are about to process arg(i)). - # - # Then rargs is [arg(i), ..., arg(N-1)] and largs is a *subset* of - # [arg0, ..., arg(i-1)] (any options and their arguments will have - # been removed from largs). - # - # The while loop will usually consume 1 or more arguments per pass. - # If it consumes 1 (eg. arg is an option that takes no arguments), - # then after _process_arg() is done the situation is: - # - # largs = subset of [arg0, ..., arg(i)] - # rargs = [arg(i+1), ..., arg(N-1)] - # - # If allow_interspersed_args is false, largs will always be - # *empty* -- still a subset of [arg0, ..., arg(i-1)], but - # not a very interesting subset! - - def _match_long_opt(self, opt, explicit_value, state): - if opt not in self._long_opt: - possibilities = [word for word in self._long_opt - if word.startswith(opt)] - raise NoSuchOption(opt, possibilities=possibilities, ctx=self.ctx) - - option = self._long_opt[opt] - if option.takes_value: - # At this point it's safe to modify rargs by injecting the - # explicit value, because no exception is raised in this - # branch. This means that the inserted value will be fully - # consumed. - if explicit_value is not None: - state.rargs.insert(0, explicit_value) - - nargs = option.nargs - if len(state.rargs) < nargs: - _error_opt_args(nargs, opt) - elif nargs == 1: - value = state.rargs.pop(0) - else: - value = tuple(state.rargs[:nargs]) - del state.rargs[:nargs] - - elif explicit_value is not None: - raise BadOptionUsage(opt, '%s option does not take a value' % opt) - - else: - value = None - - option.process(value, state) - - def _match_short_opt(self, arg, state): - stop = False - i = 1 - prefix = arg[0] - unknown_options = [] - - for ch in arg[1:]: - opt = normalize_opt(prefix + ch, self.ctx) - option = self._short_opt.get(opt) - i += 1 - - if not option: - if self.ignore_unknown_options: - unknown_options.append(ch) - continue - raise NoSuchOption(opt, ctx=self.ctx) - if option.takes_value: - # Any characters left in arg? Pretend they're the - # next arg, and stop consuming characters of arg. - if i < len(arg): - state.rargs.insert(0, arg[i:]) - stop = True - - nargs = option.nargs - if len(state.rargs) < nargs: - _error_opt_args(nargs, opt) - elif nargs == 1: - value = state.rargs.pop(0) - else: - value = tuple(state.rargs[:nargs]) - del state.rargs[:nargs] - - else: - value = None - - option.process(value, state) - - if stop: - break - - # If we got any unknown options we re-combinate the string of the - # remaining options and re-attach the prefix, then report that - # to the state as new larg. This way there is basic combinatorics - # that can be achieved while still ignoring unknown arguments. - if self.ignore_unknown_options and unknown_options: - state.largs.append(prefix + ''.join(unknown_options)) - - def _process_opts(self, arg, state): - explicit_value = None - # Long option handling happens in two parts. The first part is - # supporting explicitly attached values. In any case, we will try - # to long match the option first. - if '=' in arg: - long_opt, explicit_value = arg.split('=', 1) - else: - long_opt = arg - norm_long_opt = normalize_opt(long_opt, self.ctx) - - # At this point we will match the (assumed) long option through - # the long option matching code. Note that this allows options - # like "-foo" to be matched as long options. - try: - self._match_long_opt(norm_long_opt, explicit_value, state) - except NoSuchOption: - # At this point the long option matching failed, and we need - # to try with short options. However there is a special rule - # which says, that if we have a two character options prefix - # (applies to "--foo" for instance), we do not dispatch to the - # short option code and will instead raise the no option - # error. - if arg[:2] not in self._opt_prefixes: - return self._match_short_opt(arg, state) - if not self.ignore_unknown_options: - raise - state.largs.append(arg) diff --git a/python/click/termui.py b/python/click/termui.py deleted file mode 100644 index bf9a3aa..0000000 --- a/python/click/termui.py +++ /dev/null @@ -1,606 +0,0 @@ -import os -import sys -import struct -import inspect -import itertools - -from ._compat import raw_input, text_type, string_types, \ - isatty, strip_ansi, get_winterm_size, DEFAULT_COLUMNS, WIN -from .utils import echo -from .exceptions import Abort, UsageError -from .types import convert_type, Choice, Path -from .globals import resolve_color_default - - -# The prompt functions to use. The doc tools currently override these -# functions to customize how they work. -visible_prompt_func = raw_input - -_ansi_colors = { - 'black': 30, - 'red': 31, - 'green': 32, - 'yellow': 33, - 'blue': 34, - 'magenta': 35, - 'cyan': 36, - 'white': 37, - 'reset': 39, - 'bright_black': 90, - 'bright_red': 91, - 'bright_green': 92, - 'bright_yellow': 93, - 'bright_blue': 94, - 'bright_magenta': 95, - 'bright_cyan': 96, - 'bright_white': 97, -} -_ansi_reset_all = '\033[0m' - - -def hidden_prompt_func(prompt): - import getpass - return getpass.getpass(prompt) - - -def _build_prompt(text, suffix, show_default=False, default=None, show_choices=True, type=None): - prompt = text - if type is not None and show_choices and isinstance(type, Choice): - prompt += ' (' + ", ".join(map(str, type.choices)) + ')' - if default is not None and show_default: - prompt = '%s [%s]' % (prompt, default) - return prompt + suffix - - -def prompt(text, default=None, hide_input=False, confirmation_prompt=False, - type=None, value_proc=None, prompt_suffix=': ', show_default=True, - err=False, show_choices=True): - """Prompts a user for input. This is a convenience function that can - be used to prompt a user for input later. - - If the user aborts the input by sending a interrupt signal, this - function will catch it and raise a :exc:`Abort` exception. - - .. versionadded:: 7.0 - Added the show_choices parameter. - - .. versionadded:: 6.0 - Added unicode support for cmd.exe on Windows. - - .. versionadded:: 4.0 - Added the `err` parameter. - - :param text: the text to show for the prompt. - :param default: the default value to use if no input happens. If this - is not given it will prompt until it's aborted. - :param hide_input: if this is set to true then the input value will - be hidden. - :param confirmation_prompt: asks for confirmation for the value. - :param type: the type to use to check the value against. - :param value_proc: if this parameter is provided it's a function that - is invoked instead of the type conversion to - convert a value. - :param prompt_suffix: a suffix that should be added to the prompt. - :param show_default: shows or hides the default value in the prompt. - :param err: if set to true the file defaults to ``stderr`` instead of - ``stdout``, the same as with echo. - :param show_choices: Show or hide choices if the passed type is a Choice. - For example if type is a Choice of either day or week, - show_choices is true and text is "Group by" then the - prompt will be "Group by (day, week): ". - """ - result = None - - def prompt_func(text): - f = hide_input and hidden_prompt_func or visible_prompt_func - try: - # Write the prompt separately so that we get nice - # coloring through colorama on Windows - echo(text, nl=False, err=err) - return f('') - except (KeyboardInterrupt, EOFError): - # getpass doesn't print a newline if the user aborts input with ^C. - # Allegedly this behavior is inherited from getpass(3). - # A doc bug has been filed at https://bugs.python.org/issue24711 - if hide_input: - echo(None, err=err) - raise Abort() - - if value_proc is None: - value_proc = convert_type(type, default) - - prompt = _build_prompt(text, prompt_suffix, show_default, default, show_choices, type) - - while 1: - while 1: - value = prompt_func(prompt) - if value: - break - elif default is not None: - if isinstance(value_proc, Path): - # validate Path default value(exists, dir_okay etc.) - value = default - break - return default - try: - result = value_proc(value) - except UsageError as e: - echo('Error: %s' % e.message, err=err) - continue - if not confirmation_prompt: - return result - while 1: - value2 = prompt_func('Repeat for confirmation: ') - if value2: - break - if value == value2: - return result - echo('Error: the two entered values do not match', err=err) - - -def confirm(text, default=False, abort=False, prompt_suffix=': ', - show_default=True, err=False): - """Prompts for confirmation (yes/no question). - - If the user aborts the input by sending a interrupt signal this - function will catch it and raise a :exc:`Abort` exception. - - .. versionadded:: 4.0 - Added the `err` parameter. - - :param text: the question to ask. - :param default: the default for the prompt. - :param abort: if this is set to `True` a negative answer aborts the - exception by raising :exc:`Abort`. - :param prompt_suffix: a suffix that should be added to the prompt. - :param show_default: shows or hides the default value in the prompt. - :param err: if set to true the file defaults to ``stderr`` instead of - ``stdout``, the same as with echo. - """ - prompt = _build_prompt(text, prompt_suffix, show_default, - default and 'Y/n' or 'y/N') - while 1: - try: - # Write the prompt separately so that we get nice - # coloring through colorama on Windows - echo(prompt, nl=False, err=err) - value = visible_prompt_func('').lower().strip() - except (KeyboardInterrupt, EOFError): - raise Abort() - if value in ('y', 'yes'): - rv = True - elif value in ('n', 'no'): - rv = False - elif value == '': - rv = default - else: - echo('Error: invalid input', err=err) - continue - break - if abort and not rv: - raise Abort() - return rv - - -def get_terminal_size(): - """Returns the current size of the terminal as tuple in the form - ``(width, height)`` in columns and rows. - """ - # If shutil has get_terminal_size() (Python 3.3 and later) use that - if sys.version_info >= (3, 3): - import shutil - shutil_get_terminal_size = getattr(shutil, 'get_terminal_size', None) - if shutil_get_terminal_size: - sz = shutil_get_terminal_size() - return sz.columns, sz.lines - - # We provide a sensible default for get_winterm_size() when being invoked - # inside a subprocess. Without this, it would not provide a useful input. - if get_winterm_size is not None: - size = get_winterm_size() - if size == (0, 0): - return (79, 24) - else: - return size - - def ioctl_gwinsz(fd): - try: - import fcntl - import termios - cr = struct.unpack( - 'hh', fcntl.ioctl(fd, termios.TIOCGWINSZ, '1234')) - except Exception: - return - return cr - - cr = ioctl_gwinsz(0) or ioctl_gwinsz(1) or ioctl_gwinsz(2) - if not cr: - try: - fd = os.open(os.ctermid(), os.O_RDONLY) - try: - cr = ioctl_gwinsz(fd) - finally: - os.close(fd) - except Exception: - pass - if not cr or not cr[0] or not cr[1]: - cr = (os.environ.get('LINES', 25), - os.environ.get('COLUMNS', DEFAULT_COLUMNS)) - return int(cr[1]), int(cr[0]) - - -def echo_via_pager(text_or_generator, color=None): - """This function takes a text and shows it via an environment specific - pager on stdout. - - .. versionchanged:: 3.0 - Added the `color` flag. - - :param text_or_generator: the text to page, or alternatively, a - generator emitting the text to page. - :param color: controls if the pager supports ANSI colors or not. The - default is autodetection. - """ - color = resolve_color_default(color) - - if inspect.isgeneratorfunction(text_or_generator): - i = text_or_generator() - elif isinstance(text_or_generator, string_types): - i = [text_or_generator] - else: - i = iter(text_or_generator) - - # convert every element of i to a text type if necessary - text_generator = (el if isinstance(el, string_types) else text_type(el) - for el in i) - - from ._termui_impl import pager - return pager(itertools.chain(text_generator, "\n"), color) - - -def progressbar(iterable=None, length=None, label=None, show_eta=True, - show_percent=None, show_pos=False, - item_show_func=None, fill_char='#', empty_char='-', - bar_template='%(label)s [%(bar)s] %(info)s', - info_sep=' ', width=36, file=None, color=None): - """This function creates an iterable context manager that can be used - to iterate over something while showing a progress bar. It will - either iterate over the `iterable` or `length` items (that are counted - up). While iteration happens, this function will print a rendered - progress bar to the given `file` (defaults to stdout) and will attempt - to calculate remaining time and more. By default, this progress bar - will not be rendered if the file is not a terminal. - - The context manager creates the progress bar. When the context - manager is entered the progress bar is already displayed. With every - iteration over the progress bar, the iterable passed to the bar is - advanced and the bar is updated. When the context manager exits, - a newline is printed and the progress bar is finalized on screen. - - No printing must happen or the progress bar will be unintentionally - destroyed. - - Example usage:: - - with progressbar(items) as bar: - for item in bar: - do_something_with(item) - - Alternatively, if no iterable is specified, one can manually update the - progress bar through the `update()` method instead of directly - iterating over the progress bar. The update method accepts the number - of steps to increment the bar with:: - - with progressbar(length=chunks.total_bytes) as bar: - for chunk in chunks: - process_chunk(chunk) - bar.update(chunks.bytes) - - .. versionadded:: 2.0 - - .. versionadded:: 4.0 - Added the `color` parameter. Added a `update` method to the - progressbar object. - - :param iterable: an iterable to iterate over. If not provided the length - is required. - :param length: the number of items to iterate over. By default the - progressbar will attempt to ask the iterator about its - length, which might or might not work. If an iterable is - also provided this parameter can be used to override the - length. If an iterable is not provided the progress bar - will iterate over a range of that length. - :param label: the label to show next to the progress bar. - :param show_eta: enables or disables the estimated time display. This is - automatically disabled if the length cannot be - determined. - :param show_percent: enables or disables the percentage display. The - default is `True` if the iterable has a length or - `False` if not. - :param show_pos: enables or disables the absolute position display. The - default is `False`. - :param item_show_func: a function called with the current item which - can return a string to show the current item - next to the progress bar. Note that the current - item can be `None`! - :param fill_char: the character to use to show the filled part of the - progress bar. - :param empty_char: the character to use to show the non-filled part of - the progress bar. - :param bar_template: the format string to use as template for the bar. - The parameters in it are ``label`` for the label, - ``bar`` for the progress bar and ``info`` for the - info section. - :param info_sep: the separator between multiple info items (eta etc.) - :param width: the width of the progress bar in characters, 0 means full - terminal width - :param file: the file to write to. If this is not a terminal then - only the label is printed. - :param color: controls if the terminal supports ANSI colors or not. The - default is autodetection. This is only needed if ANSI - codes are included anywhere in the progress bar output - which is not the case by default. - """ - from ._termui_impl import ProgressBar - color = resolve_color_default(color) - return ProgressBar(iterable=iterable, length=length, show_eta=show_eta, - show_percent=show_percent, show_pos=show_pos, - item_show_func=item_show_func, fill_char=fill_char, - empty_char=empty_char, bar_template=bar_template, - info_sep=info_sep, file=file, label=label, - width=width, color=color) - - -def clear(): - """Clears the terminal screen. This will have the effect of clearing - the whole visible space of the terminal and moving the cursor to the - top left. This does not do anything if not connected to a terminal. - - .. versionadded:: 2.0 - """ - if not isatty(sys.stdout): - return - # If we're on Windows and we don't have colorama available, then we - # clear the screen by shelling out. Otherwise we can use an escape - # sequence. - if WIN: - os.system('cls') - else: - sys.stdout.write('\033[2J\033[1;1H') - - -def style(text, fg=None, bg=None, bold=None, dim=None, underline=None, - blink=None, reverse=None, reset=True): - """Styles a text with ANSI styles and returns the new string. By - default the styling is self contained which means that at the end - of the string a reset code is issued. This can be prevented by - passing ``reset=False``. - - Examples:: - - click.echo(click.style('Hello World!', fg='green')) - click.echo(click.style('ATTENTION!', blink=True)) - click.echo(click.style('Some things', reverse=True, fg='cyan')) - - Supported color names: - - * ``black`` (might be a gray) - * ``red`` - * ``green`` - * ``yellow`` (might be an orange) - * ``blue`` - * ``magenta`` - * ``cyan`` - * ``white`` (might be light gray) - * ``bright_black`` - * ``bright_red`` - * ``bright_green`` - * ``bright_yellow`` - * ``bright_blue`` - * ``bright_magenta`` - * ``bright_cyan`` - * ``bright_white`` - * ``reset`` (reset the color code only) - - .. versionadded:: 2.0 - - .. versionadded:: 7.0 - Added support for bright colors. - - :param text: the string to style with ansi codes. - :param fg: if provided this will become the foreground color. - :param bg: if provided this will become the background color. - :param bold: if provided this will enable or disable bold mode. - :param dim: if provided this will enable or disable dim mode. This is - badly supported. - :param underline: if provided this will enable or disable underline. - :param blink: if provided this will enable or disable blinking. - :param reverse: if provided this will enable or disable inverse - rendering (foreground becomes background and the - other way round). - :param reset: by default a reset-all code is added at the end of the - string which means that styles do not carry over. This - can be disabled to compose styles. - """ - bits = [] - if fg: - try: - bits.append('\033[%dm' % (_ansi_colors[fg])) - except KeyError: - raise TypeError('Unknown color %r' % fg) - if bg: - try: - bits.append('\033[%dm' % (_ansi_colors[bg] + 10)) - except KeyError: - raise TypeError('Unknown color %r' % bg) - if bold is not None: - bits.append('\033[%dm' % (1 if bold else 22)) - if dim is not None: - bits.append('\033[%dm' % (2 if dim else 22)) - if underline is not None: - bits.append('\033[%dm' % (4 if underline else 24)) - if blink is not None: - bits.append('\033[%dm' % (5 if blink else 25)) - if reverse is not None: - bits.append('\033[%dm' % (7 if reverse else 27)) - bits.append(text) - if reset: - bits.append(_ansi_reset_all) - return ''.join(bits) - - -def unstyle(text): - """Removes ANSI styling information from a string. Usually it's not - necessary to use this function as Click's echo function will - automatically remove styling if necessary. - - .. versionadded:: 2.0 - - :param text: the text to remove style information from. - """ - return strip_ansi(text) - - -def secho(message=None, file=None, nl=True, err=False, color=None, **styles): - """This function combines :func:`echo` and :func:`style` into one - call. As such the following two calls are the same:: - - click.secho('Hello World!', fg='green') - click.echo(click.style('Hello World!', fg='green')) - - All keyword arguments are forwarded to the underlying functions - depending on which one they go with. - - .. versionadded:: 2.0 - """ - if message is not None: - message = style(message, **styles) - return echo(message, file=file, nl=nl, err=err, color=color) - - -def edit(text=None, editor=None, env=None, require_save=True, - extension='.txt', filename=None): - r"""Edits the given text in the defined editor. If an editor is given - (should be the full path to the executable but the regular operating - system search path is used for finding the executable) it overrides - the detected editor. Optionally, some environment variables can be - used. If the editor is closed without changes, `None` is returned. In - case a file is edited directly the return value is always `None` and - `require_save` and `extension` are ignored. - - If the editor cannot be opened a :exc:`UsageError` is raised. - - Note for Windows: to simplify cross-platform usage, the newlines are - automatically converted from POSIX to Windows and vice versa. As such, - the message here will have ``\n`` as newline markers. - - :param text: the text to edit. - :param editor: optionally the editor to use. Defaults to automatic - detection. - :param env: environment variables to forward to the editor. - :param require_save: if this is true, then not saving in the editor - will make the return value become `None`. - :param extension: the extension to tell the editor about. This defaults - to `.txt` but changing this might change syntax - highlighting. - :param filename: if provided it will edit this file instead of the - provided text contents. It will not use a temporary - file as an indirection in that case. - """ - from ._termui_impl import Editor - editor = Editor(editor=editor, env=env, require_save=require_save, - extension=extension) - if filename is None: - return editor.edit(text) - editor.edit_file(filename) - - -def launch(url, wait=False, locate=False): - """This function launches the given URL (or filename) in the default - viewer application for this file type. If this is an executable, it - might launch the executable in a new session. The return value is - the exit code of the launched application. Usually, ``0`` indicates - success. - - Examples:: - - click.launch('https://click.palletsprojects.com/') - click.launch('/my/downloaded/file', locate=True) - - .. versionadded:: 2.0 - - :param url: URL or filename of the thing to launch. - :param wait: waits for the program to stop. - :param locate: if this is set to `True` then instead of launching the - application associated with the URL it will attempt to - launch a file manager with the file located. This - might have weird effects if the URL does not point to - the filesystem. - """ - from ._termui_impl import open_url - return open_url(url, wait=wait, locate=locate) - - -# If this is provided, getchar() calls into this instead. This is used -# for unittesting purposes. -_getchar = None - - -def getchar(echo=False): - """Fetches a single character from the terminal and returns it. This - will always return a unicode character and under certain rare - circumstances this might return more than one character. The - situations which more than one character is returned is when for - whatever reason multiple characters end up in the terminal buffer or - standard input was not actually a terminal. - - Note that this will always read from the terminal, even if something - is piped into the standard input. - - Note for Windows: in rare cases when typing non-ASCII characters, this - function might wait for a second character and then return both at once. - This is because certain Unicode characters look like special-key markers. - - .. versionadded:: 2.0 - - :param echo: if set to `True`, the character read will also show up on - the terminal. The default is to not show it. - """ - f = _getchar - if f is None: - from ._termui_impl import getchar as f - return f(echo) - - -def raw_terminal(): - from ._termui_impl import raw_terminal as f - return f() - - -def pause(info='Press any key to continue ...', err=False): - """This command stops execution and waits for the user to press any - key to continue. This is similar to the Windows batch "pause" - command. If the program is not run through a terminal, this command - will instead do nothing. - - .. versionadded:: 2.0 - - .. versionadded:: 4.0 - Added the `err` parameter. - - :param info: the info string to print before pausing. - :param err: if set to message goes to ``stderr`` instead of - ``stdout``, the same as with echo. - """ - if not isatty(sys.stdin) or not isatty(sys.stdout): - return - try: - if info: - echo(info, nl=False, err=err) - try: - getchar() - except (KeyboardInterrupt, EOFError): - pass - finally: - if info: - echo(err=err) diff --git a/python/click/testing.py b/python/click/testing.py deleted file mode 100644 index 1b2924e..0000000 --- a/python/click/testing.py +++ /dev/null @@ -1,374 +0,0 @@ -import os -import sys -import shutil -import tempfile -import contextlib -import shlex - -from ._compat import iteritems, PY2, string_types - - -# If someone wants to vendor click, we want to ensure the -# correct package is discovered. Ideally we could use a -# relative import here but unfortunately Python does not -# support that. -clickpkg = sys.modules[__name__.rsplit('.', 1)[0]] - - -if PY2: - from cStringIO import StringIO -else: - import io - from ._compat import _find_binary_reader - - -class EchoingStdin(object): - - def __init__(self, input, output): - self._input = input - self._output = output - - def __getattr__(self, x): - return getattr(self._input, x) - - def _echo(self, rv): - self._output.write(rv) - return rv - - def read(self, n=-1): - return self._echo(self._input.read(n)) - - def readline(self, n=-1): - return self._echo(self._input.readline(n)) - - def readlines(self): - return [self._echo(x) for x in self._input.readlines()] - - def __iter__(self): - return iter(self._echo(x) for x in self._input) - - def __repr__(self): - return repr(self._input) - - -def make_input_stream(input, charset): - # Is already an input stream. - if hasattr(input, 'read'): - if PY2: - return input - rv = _find_binary_reader(input) - if rv is not None: - return rv - raise TypeError('Could not find binary reader for input stream.') - - if input is None: - input = b'' - elif not isinstance(input, bytes): - input = input.encode(charset) - if PY2: - return StringIO(input) - return io.BytesIO(input) - - -class Result(object): - """Holds the captured result of an invoked CLI script.""" - - def __init__(self, runner, stdout_bytes, stderr_bytes, exit_code, - exception, exc_info=None): - #: The runner that created the result - self.runner = runner - #: The standard output as bytes. - self.stdout_bytes = stdout_bytes - #: The standard error as bytes, or False(y) if not available - self.stderr_bytes = stderr_bytes - #: The exit code as integer. - self.exit_code = exit_code - #: The exception that happened if one did. - self.exception = exception - #: The traceback - self.exc_info = exc_info - - @property - def output(self): - """The (standard) output as unicode string.""" - return self.stdout - - @property - def stdout(self): - """The standard output as unicode string.""" - return self.stdout_bytes.decode(self.runner.charset, 'replace') \ - .replace('\r\n', '\n') - - @property - def stderr(self): - """The standard error as unicode string.""" - if not self.stderr_bytes: - raise ValueError("stderr not separately captured") - return self.stderr_bytes.decode(self.runner.charset, 'replace') \ - .replace('\r\n', '\n') - - - def __repr__(self): - return '<%s %s>' % ( - type(self).__name__, - self.exception and repr(self.exception) or 'okay', - ) - - -class CliRunner(object): - """The CLI runner provides functionality to invoke a Click command line - script for unittesting purposes in a isolated environment. This only - works in single-threaded systems without any concurrency as it changes the - global interpreter state. - - :param charset: the character set for the input and output data. This is - UTF-8 by default and should not be changed currently as - the reporting to Click only works in Python 2 properly. - :param env: a dictionary with environment variables for overriding. - :param echo_stdin: if this is set to `True`, then reading from stdin writes - to stdout. This is useful for showing examples in - some circumstances. Note that regular prompts - will automatically echo the input. - :param mix_stderr: if this is set to `False`, then stdout and stderr are - preserved as independent streams. This is useful for - Unix-philosophy apps that have predictable stdout and - noisy stderr, such that each may be measured - independently - """ - - def __init__(self, charset=None, env=None, echo_stdin=False, - mix_stderr=True): - if charset is None: - charset = 'utf-8' - self.charset = charset - self.env = env or {} - self.echo_stdin = echo_stdin - self.mix_stderr = mix_stderr - - def get_default_prog_name(self, cli): - """Given a command object it will return the default program name - for it. The default is the `name` attribute or ``"root"`` if not - set. - """ - return cli.name or 'root' - - def make_env(self, overrides=None): - """Returns the environment overrides for invoking a script.""" - rv = dict(self.env) - if overrides: - rv.update(overrides) - return rv - - @contextlib.contextmanager - def isolation(self, input=None, env=None, color=False): - """A context manager that sets up the isolation for invoking of a - command line tool. This sets up stdin with the given input data - and `os.environ` with the overrides from the given dictionary. - This also rebinds some internals in Click to be mocked (like the - prompt functionality). - - This is automatically done in the :meth:`invoke` method. - - .. versionadded:: 4.0 - The ``color`` parameter was added. - - :param input: the input stream to put into sys.stdin. - :param env: the environment overrides as dictionary. - :param color: whether the output should contain color codes. The - application can still override this explicitly. - """ - input = make_input_stream(input, self.charset) - - old_stdin = sys.stdin - old_stdout = sys.stdout - old_stderr = sys.stderr - old_forced_width = clickpkg.formatting.FORCED_WIDTH - clickpkg.formatting.FORCED_WIDTH = 80 - - env = self.make_env(env) - - if PY2: - bytes_output = StringIO() - if self.echo_stdin: - input = EchoingStdin(input, bytes_output) - sys.stdout = bytes_output - if not self.mix_stderr: - bytes_error = StringIO() - sys.stderr = bytes_error - else: - bytes_output = io.BytesIO() - if self.echo_stdin: - input = EchoingStdin(input, bytes_output) - input = io.TextIOWrapper(input, encoding=self.charset) - sys.stdout = io.TextIOWrapper( - bytes_output, encoding=self.charset) - if not self.mix_stderr: - bytes_error = io.BytesIO() - sys.stderr = io.TextIOWrapper( - bytes_error, encoding=self.charset) - - if self.mix_stderr: - sys.stderr = sys.stdout - - sys.stdin = input - - def visible_input(prompt=None): - sys.stdout.write(prompt or '') - val = input.readline().rstrip('\r\n') - sys.stdout.write(val + '\n') - sys.stdout.flush() - return val - - def hidden_input(prompt=None): - sys.stdout.write((prompt or '') + '\n') - sys.stdout.flush() - return input.readline().rstrip('\r\n') - - def _getchar(echo): - char = sys.stdin.read(1) - if echo: - sys.stdout.write(char) - sys.stdout.flush() - return char - - default_color = color - - def should_strip_ansi(stream=None, color=None): - if color is None: - return not default_color - return not color - - old_visible_prompt_func = clickpkg.termui.visible_prompt_func - old_hidden_prompt_func = clickpkg.termui.hidden_prompt_func - old__getchar_func = clickpkg.termui._getchar - old_should_strip_ansi = clickpkg.utils.should_strip_ansi - clickpkg.termui.visible_prompt_func = visible_input - clickpkg.termui.hidden_prompt_func = hidden_input - clickpkg.termui._getchar = _getchar - clickpkg.utils.should_strip_ansi = should_strip_ansi - - old_env = {} - try: - for key, value in iteritems(env): - old_env[key] = os.environ.get(key) - if value is None: - try: - del os.environ[key] - except Exception: - pass - else: - os.environ[key] = value - yield (bytes_output, not self.mix_stderr and bytes_error) - finally: - for key, value in iteritems(old_env): - if value is None: - try: - del os.environ[key] - except Exception: - pass - else: - os.environ[key] = value - sys.stdout = old_stdout - sys.stderr = old_stderr - sys.stdin = old_stdin - clickpkg.termui.visible_prompt_func = old_visible_prompt_func - clickpkg.termui.hidden_prompt_func = old_hidden_prompt_func - clickpkg.termui._getchar = old__getchar_func - clickpkg.utils.should_strip_ansi = old_should_strip_ansi - clickpkg.formatting.FORCED_WIDTH = old_forced_width - - def invoke(self, cli, args=None, input=None, env=None, - catch_exceptions=True, color=False, mix_stderr=False, **extra): - """Invokes a command in an isolated environment. The arguments are - forwarded directly to the command line script, the `extra` keyword - arguments are passed to the :meth:`~clickpkg.Command.main` function of - the command. - - This returns a :class:`Result` object. - - .. versionadded:: 3.0 - The ``catch_exceptions`` parameter was added. - - .. versionchanged:: 3.0 - The result object now has an `exc_info` attribute with the - traceback if available. - - .. versionadded:: 4.0 - The ``color`` parameter was added. - - :param cli: the command to invoke - :param args: the arguments to invoke. It may be given as an iterable - or a string. When given as string it will be interpreted - as a Unix shell command. More details at - :func:`shlex.split`. - :param input: the input data for `sys.stdin`. - :param env: the environment overrides. - :param catch_exceptions: Whether to catch any other exceptions than - ``SystemExit``. - :param extra: the keyword arguments to pass to :meth:`main`. - :param color: whether the output should contain color codes. The - application can still override this explicitly. - """ - exc_info = None - with self.isolation(input=input, env=env, color=color) as outstreams: - exception = None - exit_code = 0 - - if isinstance(args, string_types): - args = shlex.split(args) - - try: - prog_name = extra.pop("prog_name") - except KeyError: - prog_name = self.get_default_prog_name(cli) - - try: - cli.main(args=args or (), prog_name=prog_name, **extra) - except SystemExit as e: - exc_info = sys.exc_info() - exit_code = e.code - if exit_code is None: - exit_code = 0 - - if exit_code != 0: - exception = e - - if not isinstance(exit_code, int): - sys.stdout.write(str(exit_code)) - sys.stdout.write('\n') - exit_code = 1 - - except Exception as e: - if not catch_exceptions: - raise - exception = e - exit_code = 1 - exc_info = sys.exc_info() - finally: - sys.stdout.flush() - stdout = outstreams[0].getvalue() - stderr = outstreams[1] and outstreams[1].getvalue() - - return Result(runner=self, - stdout_bytes=stdout, - stderr_bytes=stderr, - exit_code=exit_code, - exception=exception, - exc_info=exc_info) - - @contextlib.contextmanager - def isolated_filesystem(self): - """A context manager that creates a temporary folder and changes - the current working directory to it for isolated filesystem tests. - """ - cwd = os.getcwd() - t = tempfile.mkdtemp() - os.chdir(t) - try: - yield t - finally: - os.chdir(cwd) - try: - shutil.rmtree(t) - except (OSError, IOError): - pass diff --git a/python/click/types.py b/python/click/types.py deleted file mode 100644 index 1f88032..0000000 --- a/python/click/types.py +++ /dev/null @@ -1,668 +0,0 @@ -import os -import stat -from datetime import datetime - -from ._compat import open_stream, text_type, filename_to_ui, \ - get_filesystem_encoding, get_streerror, _get_argv_encoding, PY2 -from .exceptions import BadParameter -from .utils import safecall, LazyFile - - -class ParamType(object): - """Helper for converting values through types. The following is - necessary for a valid type: - - * it needs a name - * it needs to pass through None unchanged - * it needs to convert from a string - * it needs to convert its result type through unchanged - (eg: needs to be idempotent) - * it needs to be able to deal with param and context being `None`. - This can be the case when the object is used with prompt - inputs. - """ - is_composite = False - - #: the descriptive name of this type - name = None - - #: if a list of this type is expected and the value is pulled from a - #: string environment variable, this is what splits it up. `None` - #: means any whitespace. For all parameters the general rule is that - #: whitespace splits them up. The exception are paths and files which - #: are split by ``os.path.pathsep`` by default (":" on Unix and ";" on - #: Windows). - envvar_list_splitter = None - - def __call__(self, value, param=None, ctx=None): - if value is not None: - return self.convert(value, param, ctx) - - def get_metavar(self, param): - """Returns the metavar default for this param if it provides one.""" - - def get_missing_message(self, param): - """Optionally might return extra information about a missing - parameter. - - .. versionadded:: 2.0 - """ - - def convert(self, value, param, ctx): - """Converts the value. This is not invoked for values that are - `None` (the missing value). - """ - return value - - def split_envvar_value(self, rv): - """Given a value from an environment variable this splits it up - into small chunks depending on the defined envvar list splitter. - - If the splitter is set to `None`, which means that whitespace splits, - then leading and trailing whitespace is ignored. Otherwise, leading - and trailing splitters usually lead to empty items being included. - """ - return (rv or '').split(self.envvar_list_splitter) - - def fail(self, message, param=None, ctx=None): - """Helper method to fail with an invalid value message.""" - raise BadParameter(message, ctx=ctx, param=param) - - -class CompositeParamType(ParamType): - is_composite = True - - @property - def arity(self): - raise NotImplementedError() - - -class FuncParamType(ParamType): - - def __init__(self, func): - self.name = func.__name__ - self.func = func - - def convert(self, value, param, ctx): - try: - return self.func(value) - except ValueError: - try: - value = text_type(value) - except UnicodeError: - value = str(value).decode('utf-8', 'replace') - self.fail(value, param, ctx) - - -class UnprocessedParamType(ParamType): - name = 'text' - - def convert(self, value, param, ctx): - return value - - def __repr__(self): - return 'UNPROCESSED' - - -class StringParamType(ParamType): - name = 'text' - - def convert(self, value, param, ctx): - if isinstance(value, bytes): - enc = _get_argv_encoding() - try: - value = value.decode(enc) - except UnicodeError: - fs_enc = get_filesystem_encoding() - if fs_enc != enc: - try: - value = value.decode(fs_enc) - except UnicodeError: - value = value.decode('utf-8', 'replace') - return value - return value - - def __repr__(self): - return 'STRING' - - -class Choice(ParamType): - """The choice type allows a value to be checked against a fixed set - of supported values. All of these values have to be strings. - - You should only pass a list or tuple of choices. Other iterables - (like generators) may lead to surprising results. - - See :ref:`choice-opts` for an example. - - :param case_sensitive: Set to false to make choices case - insensitive. Defaults to true. - """ - - name = 'choice' - - def __init__(self, choices, case_sensitive=True): - self.choices = choices - self.case_sensitive = case_sensitive - - def get_metavar(self, param): - return '[%s]' % '|'.join(self.choices) - - def get_missing_message(self, param): - return 'Choose from:\n\t%s.' % ',\n\t'.join(self.choices) - - def convert(self, value, param, ctx): - # Exact match - if value in self.choices: - return value - - # Match through normalization and case sensitivity - # first do token_normalize_func, then lowercase - # preserve original `value` to produce an accurate message in - # `self.fail` - normed_value = value - normed_choices = self.choices - - if ctx is not None and \ - ctx.token_normalize_func is not None: - normed_value = ctx.token_normalize_func(value) - normed_choices = [ctx.token_normalize_func(choice) for choice in - self.choices] - - if not self.case_sensitive: - normed_value = normed_value.lower() - normed_choices = [choice.lower() for choice in normed_choices] - - if normed_value in normed_choices: - return normed_value - - self.fail('invalid choice: %s. (choose from %s)' % - (value, ', '.join(self.choices)), param, ctx) - - def __repr__(self): - return 'Choice(%r)' % list(self.choices) - - -class DateTime(ParamType): - """The DateTime type converts date strings into `datetime` objects. - - The format strings which are checked are configurable, but default to some - common (non-timezone aware) ISO 8601 formats. - - When specifying *DateTime* formats, you should only pass a list or a tuple. - Other iterables, like generators, may lead to surprising results. - - The format strings are processed using ``datetime.strptime``, and this - consequently defines the format strings which are allowed. - - Parsing is tried using each format, in order, and the first format which - parses successfully is used. - - :param formats: A list or tuple of date format strings, in the order in - which they should be tried. Defaults to - ``'%Y-%m-%d'``, ``'%Y-%m-%dT%H:%M:%S'``, - ``'%Y-%m-%d %H:%M:%S'``. - """ - name = 'datetime' - - def __init__(self, formats=None): - self.formats = formats or [ - '%Y-%m-%d', - '%Y-%m-%dT%H:%M:%S', - '%Y-%m-%d %H:%M:%S' - ] - - def get_metavar(self, param): - return '[{}]'.format('|'.join(self.formats)) - - def _try_to_convert_date(self, value, format): - try: - return datetime.strptime(value, format) - except ValueError: - return None - - def convert(self, value, param, ctx): - # Exact match - for format in self.formats: - dtime = self._try_to_convert_date(value, format) - if dtime: - return dtime - - self.fail( - 'invalid datetime format: {}. (choose from {})'.format( - value, ', '.join(self.formats))) - - def __repr__(self): - return 'DateTime' - - -class IntParamType(ParamType): - name = 'integer' - - def convert(self, value, param, ctx): - try: - return int(value) - except (ValueError, UnicodeError): - self.fail('%s is not a valid integer' % value, param, ctx) - - def __repr__(self): - return 'INT' - - -class IntRange(IntParamType): - """A parameter that works similar to :data:`click.INT` but restricts - the value to fit into a range. The default behavior is to fail if the - value falls outside the range, but it can also be silently clamped - between the two edges. - - See :ref:`ranges` for an example. - """ - name = 'integer range' - - def __init__(self, min=None, max=None, clamp=False): - self.min = min - self.max = max - self.clamp = clamp - - def convert(self, value, param, ctx): - rv = IntParamType.convert(self, value, param, ctx) - if self.clamp: - if self.min is not None and rv < self.min: - return self.min - if self.max is not None and rv > self.max: - return self.max - if self.min is not None and rv < self.min or \ - self.max is not None and rv > self.max: - if self.min is None: - self.fail('%s is bigger than the maximum valid value ' - '%s.' % (rv, self.max), param, ctx) - elif self.max is None: - self.fail('%s is smaller than the minimum valid value ' - '%s.' % (rv, self.min), param, ctx) - else: - self.fail('%s is not in the valid range of %s to %s.' - % (rv, self.min, self.max), param, ctx) - return rv - - def __repr__(self): - return 'IntRange(%r, %r)' % (self.min, self.max) - - -class FloatParamType(ParamType): - name = 'float' - - def convert(self, value, param, ctx): - try: - return float(value) - except (UnicodeError, ValueError): - self.fail('%s is not a valid floating point value' % - value, param, ctx) - - def __repr__(self): - return 'FLOAT' - - -class FloatRange(FloatParamType): - """A parameter that works similar to :data:`click.FLOAT` but restricts - the value to fit into a range. The default behavior is to fail if the - value falls outside the range, but it can also be silently clamped - between the two edges. - - See :ref:`ranges` for an example. - """ - name = 'float range' - - def __init__(self, min=None, max=None, clamp=False): - self.min = min - self.max = max - self.clamp = clamp - - def convert(self, value, param, ctx): - rv = FloatParamType.convert(self, value, param, ctx) - if self.clamp: - if self.min is not None and rv < self.min: - return self.min - if self.max is not None and rv > self.max: - return self.max - if self.min is not None and rv < self.min or \ - self.max is not None and rv > self.max: - if self.min is None: - self.fail('%s is bigger than the maximum valid value ' - '%s.' % (rv, self.max), param, ctx) - elif self.max is None: - self.fail('%s is smaller than the minimum valid value ' - '%s.' % (rv, self.min), param, ctx) - else: - self.fail('%s is not in the valid range of %s to %s.' - % (rv, self.min, self.max), param, ctx) - return rv - - def __repr__(self): - return 'FloatRange(%r, %r)' % (self.min, self.max) - - -class BoolParamType(ParamType): - name = 'boolean' - - def convert(self, value, param, ctx): - if isinstance(value, bool): - return bool(value) - value = value.lower() - if value in ('true', 't', '1', 'yes', 'y'): - return True - elif value in ('false', 'f', '0', 'no', 'n'): - return False - self.fail('%s is not a valid boolean' % value, param, ctx) - - def __repr__(self): - return 'BOOL' - - -class UUIDParameterType(ParamType): - name = 'uuid' - - def convert(self, value, param, ctx): - import uuid - try: - if PY2 and isinstance(value, text_type): - value = value.encode('ascii') - return uuid.UUID(value) - except (UnicodeError, ValueError): - self.fail('%s is not a valid UUID value' % value, param, ctx) - - def __repr__(self): - return 'UUID' - - -class File(ParamType): - """Declares a parameter to be a file for reading or writing. The file - is automatically closed once the context tears down (after the command - finished working). - - Files can be opened for reading or writing. The special value ``-`` - indicates stdin or stdout depending on the mode. - - By default, the file is opened for reading text data, but it can also be - opened in binary mode or for writing. The encoding parameter can be used - to force a specific encoding. - - The `lazy` flag controls if the file should be opened immediately or upon - first IO. The default is to be non-lazy for standard input and output - streams as well as files opened for reading, `lazy` otherwise. When opening a - file lazily for reading, it is still opened temporarily for validation, but - will not be held open until first IO. lazy is mainly useful when opening - for writing to avoid creating the file until it is needed. - - Starting with Click 2.0, files can also be opened atomically in which - case all writes go into a separate file in the same folder and upon - completion the file will be moved over to the original location. This - is useful if a file regularly read by other users is modified. - - See :ref:`file-args` for more information. - """ - name = 'filename' - envvar_list_splitter = os.path.pathsep - - def __init__(self, mode='r', encoding=None, errors='strict', lazy=None, - atomic=False): - self.mode = mode - self.encoding = encoding - self.errors = errors - self.lazy = lazy - self.atomic = atomic - - def resolve_lazy_flag(self, value): - if self.lazy is not None: - return self.lazy - if value == '-': - return False - elif 'w' in self.mode: - return True - return False - - def convert(self, value, param, ctx): - try: - if hasattr(value, 'read') or hasattr(value, 'write'): - return value - - lazy = self.resolve_lazy_flag(value) - - if lazy: - f = LazyFile(value, self.mode, self.encoding, self.errors, - atomic=self.atomic) - if ctx is not None: - ctx.call_on_close(f.close_intelligently) - return f - - f, should_close = open_stream(value, self.mode, - self.encoding, self.errors, - atomic=self.atomic) - # If a context is provided, we automatically close the file - # at the end of the context execution (or flush out). If a - # context does not exist, it's the caller's responsibility to - # properly close the file. This for instance happens when the - # type is used with prompts. - if ctx is not None: - if should_close: - ctx.call_on_close(safecall(f.close)) - else: - ctx.call_on_close(safecall(f.flush)) - return f - except (IOError, OSError) as e: - self.fail('Could not open file: %s: %s' % ( - filename_to_ui(value), - get_streerror(e), - ), param, ctx) - - -class Path(ParamType): - """The path type is similar to the :class:`File` type but it performs - different checks. First of all, instead of returning an open file - handle it returns just the filename. Secondly, it can perform various - basic checks about what the file or directory should be. - - .. versionchanged:: 6.0 - `allow_dash` was added. - - :param exists: if set to true, the file or directory needs to exist for - this value to be valid. If this is not required and a - file does indeed not exist, then all further checks are - silently skipped. - :param file_okay: controls if a file is a possible value. - :param dir_okay: controls if a directory is a possible value. - :param writable: if true, a writable check is performed. - :param readable: if true, a readable check is performed. - :param resolve_path: if this is true, then the path is fully resolved - before the value is passed onwards. This means - that it's absolute and symlinks are resolved. It - will not expand a tilde-prefix, as this is - supposed to be done by the shell only. - :param allow_dash: If this is set to `True`, a single dash to indicate - standard streams is permitted. - :param path_type: optionally a string type that should be used to - represent the path. The default is `None` which - means the return value will be either bytes or - unicode depending on what makes most sense given the - input data Click deals with. - """ - envvar_list_splitter = os.path.pathsep - - def __init__(self, exists=False, file_okay=True, dir_okay=True, - writable=False, readable=True, resolve_path=False, - allow_dash=False, path_type=None): - self.exists = exists - self.file_okay = file_okay - self.dir_okay = dir_okay - self.writable = writable - self.readable = readable - self.resolve_path = resolve_path - self.allow_dash = allow_dash - self.type = path_type - - if self.file_okay and not self.dir_okay: - self.name = 'file' - self.path_type = 'File' - elif self.dir_okay and not self.file_okay: - self.name = 'directory' - self.path_type = 'Directory' - else: - self.name = 'path' - self.path_type = 'Path' - - def coerce_path_result(self, rv): - if self.type is not None and not isinstance(rv, self.type): - if self.type is text_type: - rv = rv.decode(get_filesystem_encoding()) - else: - rv = rv.encode(get_filesystem_encoding()) - return rv - - def convert(self, value, param, ctx): - rv = value - - is_dash = self.file_okay and self.allow_dash and rv in (b'-', '-') - - if not is_dash: - if self.resolve_path: - rv = os.path.realpath(rv) - - try: - st = os.stat(rv) - except OSError: - if not self.exists: - return self.coerce_path_result(rv) - self.fail('%s "%s" does not exist.' % ( - self.path_type, - filename_to_ui(value) - ), param, ctx) - - if not self.file_okay and stat.S_ISREG(st.st_mode): - self.fail('%s "%s" is a file.' % ( - self.path_type, - filename_to_ui(value) - ), param, ctx) - if not self.dir_okay and stat.S_ISDIR(st.st_mode): - self.fail('%s "%s" is a directory.' % ( - self.path_type, - filename_to_ui(value) - ), param, ctx) - if self.writable and not os.access(value, os.W_OK): - self.fail('%s "%s" is not writable.' % ( - self.path_type, - filename_to_ui(value) - ), param, ctx) - if self.readable and not os.access(value, os.R_OK): - self.fail('%s "%s" is not readable.' % ( - self.path_type, - filename_to_ui(value) - ), param, ctx) - - return self.coerce_path_result(rv) - - -class Tuple(CompositeParamType): - """The default behavior of Click is to apply a type on a value directly. - This works well in most cases, except for when `nargs` is set to a fixed - count and different types should be used for different items. In this - case the :class:`Tuple` type can be used. This type can only be used - if `nargs` is set to a fixed number. - - For more information see :ref:`tuple-type`. - - This can be selected by using a Python tuple literal as a type. - - :param types: a list of types that should be used for the tuple items. - """ - - def __init__(self, types): - self.types = [convert_type(ty) for ty in types] - - @property - def name(self): - return "<" + " ".join(ty.name for ty in self.types) + ">" - - @property - def arity(self): - return len(self.types) - - def convert(self, value, param, ctx): - if len(value) != len(self.types): - raise TypeError('It would appear that nargs is set to conflict ' - 'with the composite type arity.') - return tuple(ty(x, param, ctx) for ty, x in zip(self.types, value)) - - -def convert_type(ty, default=None): - """Converts a callable or python ty into the most appropriate param - ty. - """ - guessed_type = False - if ty is None and default is not None: - if isinstance(default, tuple): - ty = tuple(map(type, default)) - else: - ty = type(default) - guessed_type = True - - if isinstance(ty, tuple): - return Tuple(ty) - if isinstance(ty, ParamType): - return ty - if ty is text_type or ty is str or ty is None: - return STRING - if ty is int: - return INT - # Booleans are only okay if not guessed. This is done because for - # flags the default value is actually a bit of a lie in that it - # indicates which of the flags is the one we want. See get_default() - # for more information. - if ty is bool and not guessed_type: - return BOOL - if ty is float: - return FLOAT - if guessed_type: - return STRING - - # Catch a common mistake - if __debug__: - try: - if issubclass(ty, ParamType): - raise AssertionError('Attempted to use an uninstantiated ' - 'parameter type (%s).' % ty) - except TypeError: - pass - return FuncParamType(ty) - - -#: A dummy parameter type that just does nothing. From a user's -#: perspective this appears to just be the same as `STRING` but internally -#: no string conversion takes place. This is necessary to achieve the -#: same bytes/unicode behavior on Python 2/3 in situations where you want -#: to not convert argument types. This is usually useful when working -#: with file paths as they can appear in bytes and unicode. -#: -#: For path related uses the :class:`Path` type is a better choice but -#: there are situations where an unprocessed type is useful which is why -#: it is is provided. -#: -#: .. versionadded:: 4.0 -UNPROCESSED = UnprocessedParamType() - -#: A unicode string parameter type which is the implicit default. This -#: can also be selected by using ``str`` as type. -STRING = StringParamType() - -#: An integer parameter. This can also be selected by using ``int`` as -#: type. -INT = IntParamType() - -#: A floating point value parameter. This can also be selected by using -#: ``float`` as type. -FLOAT = FloatParamType() - -#: A boolean parameter. This is the default for boolean flags. This can -#: also be selected by using ``bool`` as a type. -BOOL = BoolParamType() - -#: A UUID parameter. -UUID = UUIDParameterType() diff --git a/python/click/utils.py b/python/click/utils.py deleted file mode 100644 index fc84369..0000000 --- a/python/click/utils.py +++ /dev/null @@ -1,440 +0,0 @@ -import os -import sys - -from .globals import resolve_color_default - -from ._compat import text_type, open_stream, get_filesystem_encoding, \ - get_streerror, string_types, PY2, binary_streams, text_streams, \ - filename_to_ui, auto_wrap_for_ansi, strip_ansi, should_strip_ansi, \ - _default_text_stdout, _default_text_stderr, is_bytes, WIN - -if not PY2: - from ._compat import _find_binary_writer -elif WIN: - from ._winconsole import _get_windows_argv, \ - _hash_py_argv, _initial_argv_hash - - -echo_native_types = string_types + (bytes, bytearray) - - -def _posixify(name): - return '-'.join(name.split()).lower() - - -def safecall(func): - """Wraps a function so that it swallows exceptions.""" - def wrapper(*args, **kwargs): - try: - return func(*args, **kwargs) - except Exception: - pass - return wrapper - - -def make_str(value): - """Converts a value into a valid string.""" - if isinstance(value, bytes): - try: - return value.decode(get_filesystem_encoding()) - except UnicodeError: - return value.decode('utf-8', 'replace') - return text_type(value) - - -def make_default_short_help(help, max_length=45): - """Return a condensed version of help string.""" - words = help.split() - total_length = 0 - result = [] - done = False - - for word in words: - if word[-1:] == '.': - done = True - new_length = result and 1 + len(word) or len(word) - if total_length + new_length > max_length: - result.append('...') - done = True - else: - if result: - result.append(' ') - result.append(word) - if done: - break - total_length += new_length - - return ''.join(result) - - -class LazyFile(object): - """A lazy file works like a regular file but it does not fully open - the file but it does perform some basic checks early to see if the - filename parameter does make sense. This is useful for safely opening - files for writing. - """ - - def __init__(self, filename, mode='r', encoding=None, errors='strict', - atomic=False): - self.name = filename - self.mode = mode - self.encoding = encoding - self.errors = errors - self.atomic = atomic - - if filename == '-': - self._f, self.should_close = open_stream(filename, mode, - encoding, errors) - else: - if 'r' in mode: - # Open and close the file in case we're opening it for - # reading so that we can catch at least some errors in - # some cases early. - open(filename, mode).close() - self._f = None - self.should_close = True - - def __getattr__(self, name): - return getattr(self.open(), name) - - def __repr__(self): - if self._f is not None: - return repr(self._f) - return '<unopened file %r %s>' % (self.name, self.mode) - - def open(self): - """Opens the file if it's not yet open. This call might fail with - a :exc:`FileError`. Not handling this error will produce an error - that Click shows. - """ - if self._f is not None: - return self._f - try: - rv, self.should_close = open_stream(self.name, self.mode, - self.encoding, - self.errors, - atomic=self.atomic) - except (IOError, OSError) as e: - from .exceptions import FileError - raise FileError(self.name, hint=get_streerror(e)) - self._f = rv - return rv - - def close(self): - """Closes the underlying file, no matter what.""" - if self._f is not None: - self._f.close() - - def close_intelligently(self): - """This function only closes the file if it was opened by the lazy - file wrapper. For instance this will never close stdin. - """ - if self.should_close: - self.close() - - def __enter__(self): - return self - - def __exit__(self, exc_type, exc_value, tb): - self.close_intelligently() - - def __iter__(self): - self.open() - return iter(self._f) - - -class KeepOpenFile(object): - - def __init__(self, file): - self._file = file - - def __getattr__(self, name): - return getattr(self._file, name) - - def __enter__(self): - return self - - def __exit__(self, exc_type, exc_value, tb): - pass - - def __repr__(self): - return repr(self._file) - - def __iter__(self): - return iter(self._file) - - -def echo(message=None, file=None, nl=True, err=False, color=None): - """Prints a message plus a newline to the given file or stdout. On - first sight, this looks like the print function, but it has improved - support for handling Unicode and binary data that does not fail no - matter how badly configured the system is. - - Primarily it means that you can print binary data as well as Unicode - data on both 2.x and 3.x to the given file in the most appropriate way - possible. This is a very carefree function in that it will try its - best to not fail. As of Click 6.0 this includes support for unicode - output on the Windows console. - - In addition to that, if `colorama`_ is installed, the echo function will - also support clever handling of ANSI codes. Essentially it will then - do the following: - - - add transparent handling of ANSI color codes on Windows. - - hide ANSI codes automatically if the destination file is not a - terminal. - - .. _colorama: https://pypi.org/project/colorama/ - - .. versionchanged:: 6.0 - As of Click 6.0 the echo function will properly support unicode - output on the windows console. Not that click does not modify - the interpreter in any way which means that `sys.stdout` or the - print statement or function will still not provide unicode support. - - .. versionchanged:: 2.0 - Starting with version 2.0 of Click, the echo function will work - with colorama if it's installed. - - .. versionadded:: 3.0 - The `err` parameter was added. - - .. versionchanged:: 4.0 - Added the `color` flag. - - :param message: the message to print - :param file: the file to write to (defaults to ``stdout``) - :param err: if set to true the file defaults to ``stderr`` instead of - ``stdout``. This is faster and easier than calling - :func:`get_text_stderr` yourself. - :param nl: if set to `True` (the default) a newline is printed afterwards. - :param color: controls if the terminal supports ANSI colors or not. The - default is autodetection. - """ - if file is None: - if err: - file = _default_text_stderr() - else: - file = _default_text_stdout() - - # Convert non bytes/text into the native string type. - if message is not None and not isinstance(message, echo_native_types): - message = text_type(message) - - if nl: - message = message or u'' - if isinstance(message, text_type): - message += u'\n' - else: - message += b'\n' - - # If there is a message, and we're in Python 3, and the value looks - # like bytes, we manually need to find the binary stream and write the - # message in there. This is done separately so that most stream - # types will work as you would expect. Eg: you can write to StringIO - # for other cases. - if message and not PY2 and is_bytes(message): - binary_file = _find_binary_writer(file) - if binary_file is not None: - file.flush() - binary_file.write(message) - binary_file.flush() - return - - # ANSI-style support. If there is no message or we are dealing with - # bytes nothing is happening. If we are connected to a file we want - # to strip colors. If we are on windows we either wrap the stream - # to strip the color or we use the colorama support to translate the - # ansi codes to API calls. - if message and not is_bytes(message): - color = resolve_color_default(color) - if should_strip_ansi(file, color): - message = strip_ansi(message) - elif WIN: - if auto_wrap_for_ansi is not None: - file = auto_wrap_for_ansi(file) - elif not color: - message = strip_ansi(message) - - if message: - file.write(message) - file.flush() - - -def get_binary_stream(name): - """Returns a system stream for byte processing. This essentially - returns the stream from the sys module with the given name but it - solves some compatibility issues between different Python versions. - Primarily this function is necessary for getting binary streams on - Python 3. - - :param name: the name of the stream to open. Valid names are ``'stdin'``, - ``'stdout'`` and ``'stderr'`` - """ - opener = binary_streams.get(name) - if opener is None: - raise TypeError('Unknown standard stream %r' % name) - return opener() - - -def get_text_stream(name, encoding=None, errors='strict'): - """Returns a system stream for text processing. This usually returns - a wrapped stream around a binary stream returned from - :func:`get_binary_stream` but it also can take shortcuts on Python 3 - for already correctly configured streams. - - :param name: the name of the stream to open. Valid names are ``'stdin'``, - ``'stdout'`` and ``'stderr'`` - :param encoding: overrides the detected default encoding. - :param errors: overrides the default error mode. - """ - opener = text_streams.get(name) - if opener is None: - raise TypeError('Unknown standard stream %r' % name) - return opener(encoding, errors) - - -def open_file(filename, mode='r', encoding=None, errors='strict', - lazy=False, atomic=False): - """This is similar to how the :class:`File` works but for manual - usage. Files are opened non lazy by default. This can open regular - files as well as stdin/stdout if ``'-'`` is passed. - - If stdin/stdout is returned the stream is wrapped so that the context - manager will not close the stream accidentally. This makes it possible - to always use the function like this without having to worry to - accidentally close a standard stream:: - - with open_file(filename) as f: - ... - - .. versionadded:: 3.0 - - :param filename: the name of the file to open (or ``'-'`` for stdin/stdout). - :param mode: the mode in which to open the file. - :param encoding: the encoding to use. - :param errors: the error handling for this file. - :param lazy: can be flipped to true to open the file lazily. - :param atomic: in atomic mode writes go into a temporary file and it's - moved on close. - """ - if lazy: - return LazyFile(filename, mode, encoding, errors, atomic=atomic) - f, should_close = open_stream(filename, mode, encoding, errors, - atomic=atomic) - if not should_close: - f = KeepOpenFile(f) - return f - - -def get_os_args(): - """This returns the argument part of sys.argv in the most appropriate - form for processing. What this means is that this return value is in - a format that works for Click to process but does not necessarily - correspond well to what's actually standard for the interpreter. - - On most environments the return value is ``sys.argv[:1]`` unchanged. - However if you are on Windows and running Python 2 the return value - will actually be a list of unicode strings instead because the - default behavior on that platform otherwise will not be able to - carry all possible values that sys.argv can have. - - .. versionadded:: 6.0 - """ - # We can only extract the unicode argv if sys.argv has not been - # changed since the startup of the application. - if PY2 and WIN and _initial_argv_hash == _hash_py_argv(): - return _get_windows_argv() - return sys.argv[1:] - - -def format_filename(filename, shorten=False): - """Formats a filename for user display. The main purpose of this - function is to ensure that the filename can be displayed at all. This - will decode the filename to unicode if necessary in a way that it will - not fail. Optionally, it can shorten the filename to not include the - full path to the filename. - - :param filename: formats a filename for UI display. This will also convert - the filename into unicode without failing. - :param shorten: this optionally shortens the filename to strip of the - path that leads up to it. - """ - if shorten: - filename = os.path.basename(filename) - return filename_to_ui(filename) - - -def get_app_dir(app_name, roaming=True, force_posix=False): - r"""Returns the config folder for the application. The default behavior - is to return whatever is most appropriate for the operating system. - - To give you an idea, for an app called ``"Foo Bar"``, something like - the following folders could be returned: - - Mac OS X: - ``~/Library/Application Support/Foo Bar`` - Mac OS X (POSIX): - ``~/.foo-bar`` - Unix: - ``~/.config/foo-bar`` - Unix (POSIX): - ``~/.foo-bar`` - Win XP (roaming): - ``C:\Documents and Settings\<user>\Local Settings\Application Data\Foo Bar`` - Win XP (not roaming): - ``C:\Documents and Settings\<user>\Application Data\Foo Bar`` - Win 7 (roaming): - ``C:\Users\<user>\AppData\Roaming\Foo Bar`` - Win 7 (not roaming): - ``C:\Users\<user>\AppData\Local\Foo Bar`` - - .. versionadded:: 2.0 - - :param app_name: the application name. This should be properly capitalized - and can contain whitespace. - :param roaming: controls if the folder should be roaming or not on Windows. - Has no affect otherwise. - :param force_posix: if this is set to `True` then on any POSIX system the - folder will be stored in the home folder with a leading - dot instead of the XDG config home or darwin's - application support folder. - """ - if WIN: - key = roaming and 'APPDATA' or 'LOCALAPPDATA' - folder = os.environ.get(key) - if folder is None: - folder = os.path.expanduser('~') - return os.path.join(folder, app_name) - if force_posix: - return os.path.join(os.path.expanduser('~/.' + _posixify(app_name))) - if sys.platform == 'darwin': - return os.path.join(os.path.expanduser( - '~/Library/Application Support'), app_name) - return os.path.join( - os.environ.get('XDG_CONFIG_HOME', os.path.expanduser('~/.config')), - _posixify(app_name)) - - -class PacifyFlushWrapper(object): - """This wrapper is used to catch and suppress BrokenPipeErrors resulting - from ``.flush()`` being called on broken pipe during the shutdown/final-GC - of the Python interpreter. Notably ``.flush()`` is always called on - ``sys.stdout`` and ``sys.stderr``. So as to have minimal impact on any - other cleanup code, and the case where the underlying file is not a broken - pipe, all calls and attributes are proxied. - """ - - def __init__(self, wrapped): - self.wrapped = wrapped - - def flush(self): - try: - self.wrapped.flush() - except IOError as e: - import errno - if e.errno != errno.EPIPE: - raise - - def __getattr__(self, attr): - return getattr(self.wrapped, attr) diff --git a/python/dateutil/__init__.py b/python/dateutil/__init__.py deleted file mode 100644 index 796ef3d..0000000 --- a/python/dateutil/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -# -*- coding: utf-8 -*- -from ._version import VERSION as __version__ diff --git a/python/dateutil/_common.py b/python/dateutil/_common.py deleted file mode 100644 index e8b4af7..0000000 --- a/python/dateutil/_common.py +++ /dev/null @@ -1,34 +0,0 @@ -""" -Common code used in multiple modules. -""" - - -class weekday(object): - __slots__ = ["weekday", "n"] - - def __init__(self, weekday, n=None): - self.weekday = weekday - self.n = n - - def __call__(self, n): - if n == self.n: - return self - else: - return self.__class__(self.weekday, n) - - def __eq__(self, other): - try: - if self.weekday != other.weekday or self.n != other.n: - return False - except AttributeError: - return False - return True - - __hash__ = None - - def __repr__(self): - s = ("MO", "TU", "WE", "TH", "FR", "SA", "SU")[self.weekday] - if not self.n: - return s - else: - return "%s(%+d)" % (s, self.n) diff --git a/python/dateutil/_version.py b/python/dateutil/_version.py deleted file mode 100644 index c1a0357..0000000 --- a/python/dateutil/_version.py +++ /dev/null @@ -1,10 +0,0 @@ -""" -Contains information about the dateutil version. -""" - -VERSION_MAJOR = 2 -VERSION_MINOR = 6 -VERSION_PATCH = 1 - -VERSION_TUPLE = (VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH) -VERSION = '.'.join(map(str, VERSION_TUPLE)) diff --git a/python/dateutil/easter.py b/python/dateutil/easter.py deleted file mode 100644 index e4def97..0000000 --- a/python/dateutil/easter.py +++ /dev/null @@ -1,89 +0,0 @@ -# -*- coding: utf-8 -*- -""" -This module offers a generic easter computing method for any given year, using -Western, Orthodox or Julian algorithms. -""" - -import datetime - -__all__ = ["easter", "EASTER_JULIAN", "EASTER_ORTHODOX", "EASTER_WESTERN"] - -EASTER_JULIAN = 1 -EASTER_ORTHODOX = 2 -EASTER_WESTERN = 3 - - -def easter(year, method=EASTER_WESTERN): - """ - This method was ported from the work done by GM Arts, - on top of the algorithm by Claus Tondering, which was - based in part on the algorithm of Ouding (1940), as - quoted in "Explanatory Supplement to the Astronomical - Almanac", P. Kenneth Seidelmann, editor. - - This algorithm implements three different easter - calculation methods: - - 1 - Original calculation in Julian calendar, valid in - dates after 326 AD - 2 - Original method, with date converted to Gregorian - calendar, valid in years 1583 to 4099 - 3 - Revised method, in Gregorian calendar, valid in - years 1583 to 4099 as well - - These methods are represented by the constants: - - * ``EASTER_JULIAN = 1`` - * ``EASTER_ORTHODOX = 2`` - * ``EASTER_WESTERN = 3`` - - The default method is method 3. - - More about the algorithm may be found at: - - http://users.chariot.net.au/~gmarts/eastalg.htm - - and - - http://www.tondering.dk/claus/calendar.html - - """ - - if not (1 <= method <= 3): - raise ValueError("invalid method") - - # g - Golden year - 1 - # c - Century - # h - (23 - Epact) mod 30 - # i - Number of days from March 21 to Paschal Full Moon - # j - Weekday for PFM (0=Sunday, etc) - # p - Number of days from March 21 to Sunday on or before PFM - # (-6 to 28 methods 1 & 3, to 56 for method 2) - # e - Extra days to add for method 2 (converting Julian - # date to Gregorian date) - - y = year - g = y % 19 - e = 0 - if method < 3: - # Old method - i = (19*g + 15) % 30 - j = (y + y//4 + i) % 7 - if method == 2: - # Extra dates to convert Julian to Gregorian date - e = 10 - if y > 1600: - e = e + y//100 - 16 - (y//100 - 16)//4 - else: - # New method - c = y//100 - h = (c - c//4 - (8*c + 13)//25 + 19*g + 15) % 30 - i = h - (h//28)*(1 - (h//28)*(29//(h + 1))*((21 - g)//11)) - j = (y + y//4 + i + 2 - c + c//4) % 7 - - # p can be from -6 to 56 corresponding to dates 22 March to 23 May - # (later dates apply to method 2, although 23 May never actually occurs) - p = i - j + e - d = 1 + (p + 27 + (p + 6)//40) % 31 - m = 3 + (p + 26)//30 - return datetime.date(int(y), int(m), int(d)) diff --git a/python/dateutil/parser.py b/python/dateutil/parser.py deleted file mode 100644 index 595331f..0000000 --- a/python/dateutil/parser.py +++ /dev/null @@ -1,1374 +0,0 @@ -# -*- coding: utf-8 -*- -""" -This module offers a generic date/time string parser which is able to parse -most known formats to represent a date and/or time. - -This module attempts to be forgiving with regards to unlikely input formats, -returning a datetime object even for dates which are ambiguous. If an element -of a date/time stamp is omitted, the following rules are applied: -- If AM or PM is left unspecified, a 24-hour clock is assumed, however, an hour - on a 12-hour clock (``0 <= hour <= 12``) *must* be specified if AM or PM is - specified. -- If a time zone is omitted, a timezone-naive datetime is returned. - -If any other elements are missing, they are taken from the -:class:`datetime.datetime` object passed to the parameter ``default``. If this -results in a day number exceeding the valid number of days per month, the -value falls back to the end of the month. - -Additional resources about date/time string formats can be found below: - -- `A summary of the international standard date and time notation - <http://www.cl.cam.ac.uk/~mgk25/iso-time.html>`_ -- `W3C Date and Time Formats <http://www.w3.org/TR/NOTE-datetime>`_ -- `Time Formats (Planetary Rings Node) <http://pds-rings.seti.org/tools/time_formats.html>`_ -- `CPAN ParseDate module - <http://search.cpan.org/~muir/Time-modules-2013.0912/lib/Time/ParseDate.pm>`_ -- `Java SimpleDateFormat Class - <https://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html>`_ -""" -from __future__ import unicode_literals - -import datetime -import string -import time -import collections -import re -from io import StringIO -from calendar import monthrange - -from six import text_type, binary_type, integer_types - -from . import relativedelta -from . import tz - -__all__ = ["parse", "parserinfo"] - - -class _timelex(object): - # Fractional seconds are sometimes split by a comma - _split_decimal = re.compile("([.,])") - - def __init__(self, instream): - if isinstance(instream, binary_type): - instream = instream.decode() - - if isinstance(instream, text_type): - instream = StringIO(instream) - - if getattr(instream, 'read', None) is None: - raise TypeError('Parser must be a string or character stream, not ' - '{itype}'.format(itype=instream.__class__.__name__)) - - self.instream = instream - self.charstack = [] - self.tokenstack = [] - self.eof = False - - def get_token(self): - """ - This function breaks the time string into lexical units (tokens), which - can be parsed by the parser. Lexical units are demarcated by changes in - the character set, so any continuous string of letters is considered - one unit, any continuous string of numbers is considered one unit. - - The main complication arises from the fact that dots ('.') can be used - both as separators (e.g. "Sep.20.2009") or decimal points (e.g. - "4:30:21.447"). As such, it is necessary to read the full context of - any dot-separated strings before breaking it into tokens; as such, this - function maintains a "token stack", for when the ambiguous context - demands that multiple tokens be parsed at once. - """ - if self.tokenstack: - return self.tokenstack.pop(0) - - seenletters = False - token = None - state = None - - while not self.eof: - # We only realize that we've reached the end of a token when we - # find a character that's not part of the current token - since - # that character may be part of the next token, it's stored in the - # charstack. - if self.charstack: - nextchar = self.charstack.pop(0) - else: - nextchar = self.instream.read(1) - while nextchar == '\x00': - nextchar = self.instream.read(1) - - if not nextchar: - self.eof = True - break - elif not state: - # First character of the token - determines if we're starting - # to parse a word, a number or something else. - token = nextchar - if self.isword(nextchar): - state = 'a' - elif self.isnum(nextchar): - state = '0' - elif self.isspace(nextchar): - token = ' ' - break # emit token - else: - break # emit token - elif state == 'a': - # If we've already started reading a word, we keep reading - # letters until we find something that's not part of a word. - seenletters = True - if self.isword(nextchar): - token += nextchar - elif nextchar == '.': - token += nextchar - state = 'a.' - else: - self.charstack.append(nextchar) - break # emit token - elif state == '0': - # If we've already started reading a number, we keep reading - # numbers until we find something that doesn't fit. - if self.isnum(nextchar): - token += nextchar - elif nextchar == '.' or (nextchar == ',' and len(token) >= 2): - token += nextchar - state = '0.' - else: - self.charstack.append(nextchar) - break # emit token - elif state == 'a.': - # If we've seen some letters and a dot separator, continue - # parsing, and the tokens will be broken up later. - seenletters = True - if nextchar == '.' or self.isword(nextchar): - token += nextchar - elif self.isnum(nextchar) and token[-1] == '.': - token += nextchar - state = '0.' - else: - self.charstack.append(nextchar) - break # emit token - elif state == '0.': - # If we've seen at least one dot separator, keep going, we'll - # break up the tokens later. - if nextchar == '.' or self.isnum(nextchar): - token += nextchar - elif self.isword(nextchar) and token[-1] == '.': - token += nextchar - state = 'a.' - else: - self.charstack.append(nextchar) - break # emit token - - if (state in ('a.', '0.') and (seenletters or token.count('.') > 1 or - token[-1] in '.,')): - l = self._split_decimal.split(token) - token = l[0] - for tok in l[1:]: - if tok: - self.tokenstack.append(tok) - - if state == '0.' and token.count('.') == 0: - token = token.replace(',', '.') - - return token - - def __iter__(self): - return self - - def __next__(self): - token = self.get_token() - if token is None: - raise StopIteration - - return token - - def next(self): - return self.__next__() # Python 2.x support - - @classmethod - def split(cls, s): - return list(cls(s)) - - @classmethod - def isword(cls, nextchar): - """ Whether or not the next character is part of a word """ - return nextchar.isalpha() - - @classmethod - def isnum(cls, nextchar): - """ Whether the next character is part of a number """ - return nextchar.isdigit() - - @classmethod - def isspace(cls, nextchar): - """ Whether the next character is whitespace """ - return nextchar.isspace() - - -class _resultbase(object): - - def __init__(self): - for attr in self.__slots__: - setattr(self, attr, None) - - def _repr(self, classname): - l = [] - for attr in self.__slots__: - value = getattr(self, attr) - if value is not None: - l.append("%s=%s" % (attr, repr(value))) - return "%s(%s)" % (classname, ", ".join(l)) - - def __len__(self): - return (sum(getattr(self, attr) is not None - for attr in self.__slots__)) - - def __repr__(self): - return self._repr(self.__class__.__name__) - - -class parserinfo(object): - """ - Class which handles what inputs are accepted. Subclass this to customize - the language and acceptable values for each parameter. - - :param dayfirst: - Whether to interpret the first value in an ambiguous 3-integer date - (e.g. 01/05/09) as the day (``True``) or month (``False``). If - ``yearfirst`` is set to ``True``, this distinguishes between YDM - and YMD. Default is ``False``. - - :param yearfirst: - Whether to interpret the first value in an ambiguous 3-integer date - (e.g. 01/05/09) as the year. If ``True``, the first number is taken - to be the year, otherwise the last number is taken to be the year. - Default is ``False``. - """ - - # m from a.m/p.m, t from ISO T separator - JUMP = [" ", ".", ",", ";", "-", "/", "'", - "at", "on", "and", "ad", "m", "t", "of", - "st", "nd", "rd", "th"] - - WEEKDAYS = [("Mon", "Monday"), - ("Tue", "Tuesday"), - ("Wed", "Wednesday"), - ("Thu", "Thursday"), - ("Fri", "Friday"), - ("Sat", "Saturday"), - ("Sun", "Sunday")] - MONTHS = [("Jan", "January"), - ("Feb", "February"), - ("Mar", "March"), - ("Apr", "April"), - ("May", "May"), - ("Jun", "June"), - ("Jul", "July"), - ("Aug", "August"), - ("Sep", "Sept", "September"), - ("Oct", "October"), - ("Nov", "November"), - ("Dec", "December")] - HMS = [("h", "hour", "hours"), - ("m", "minute", "minutes"), - ("s", "second", "seconds")] - AMPM = [("am", "a"), - ("pm", "p")] - UTCZONE = ["UTC", "GMT", "Z"] - PERTAIN = ["of"] - TZOFFSET = {} - - def __init__(self, dayfirst=False, yearfirst=False): - self._jump = self._convert(self.JUMP) - self._weekdays = self._convert(self.WEEKDAYS) - self._months = self._convert(self.MONTHS) - self._hms = self._convert(self.HMS) - self._ampm = self._convert(self.AMPM) - self._utczone = self._convert(self.UTCZONE) - self._pertain = self._convert(self.PERTAIN) - - self.dayfirst = dayfirst - self.yearfirst = yearfirst - - self._year = time.localtime().tm_year - self._century = self._year // 100 * 100 - - def _convert(self, lst): - dct = {} - for i, v in enumerate(lst): - if isinstance(v, tuple): - for v in v: - dct[v.lower()] = i - else: - dct[v.lower()] = i - return dct - - def jump(self, name): - return name.lower() in self._jump - - def weekday(self, name): - if len(name) >= min(len(n) for n in self._weekdays.keys()): - try: - return self._weekdays[name.lower()] - except KeyError: - pass - return None - - def month(self, name): - if len(name) >= min(len(n) for n in self._months.keys()): - try: - return self._months[name.lower()] + 1 - except KeyError: - pass - return None - - def hms(self, name): - try: - return self._hms[name.lower()] - except KeyError: - return None - - def ampm(self, name): - try: - return self._ampm[name.lower()] - except KeyError: - return None - - def pertain(self, name): - return name.lower() in self._pertain - - def utczone(self, name): - return name.lower() in self._utczone - - def tzoffset(self, name): - if name in self._utczone: - return 0 - - return self.TZOFFSET.get(name) - - def convertyear(self, year, century_specified=False): - if year < 100 and not century_specified: - year += self._century - if abs(year - self._year) >= 50: - if year < self._year: - year += 100 - else: - year -= 100 - return year - - def validate(self, res): - # move to info - if res.year is not None: - res.year = self.convertyear(res.year, res.century_specified) - - if res.tzoffset == 0 and not res.tzname or res.tzname == 'Z': - res.tzname = "UTC" - res.tzoffset = 0 - elif res.tzoffset != 0 and res.tzname and self.utczone(res.tzname): - res.tzoffset = 0 - return True - - -class _ymd(list): - def __init__(self, tzstr, *args, **kwargs): - super(self.__class__, self).__init__(*args, **kwargs) - self.century_specified = False - self.tzstr = tzstr - - @staticmethod - def token_could_be_year(token, year): - try: - return int(token) == year - except ValueError: - return False - - @staticmethod - def find_potential_year_tokens(year, tokens): - return [token for token in tokens if _ymd.token_could_be_year(token, year)] - - def find_probable_year_index(self, tokens): - """ - attempt to deduce if a pre 100 year was lost - due to padded zeros being taken off - """ - for index, token in enumerate(self): - potential_year_tokens = _ymd.find_potential_year_tokens(token, tokens) - if len(potential_year_tokens) == 1 and len(potential_year_tokens[0]) > 2: - return index - - def append(self, val): - if hasattr(val, '__len__'): - if val.isdigit() and len(val) > 2: - self.century_specified = True - elif val > 100: - self.century_specified = True - - super(self.__class__, self).append(int(val)) - - def resolve_ymd(self, mstridx, yearfirst, dayfirst): - len_ymd = len(self) - year, month, day = (None, None, None) - - if len_ymd > 3: - raise ValueError("More than three YMD values") - elif len_ymd == 1 or (mstridx != -1 and len_ymd == 2): - # One member, or two members with a month string - if mstridx != -1: - month = self[mstridx] - del self[mstridx] - - if len_ymd > 1 or mstridx == -1: - if self[0] > 31: - year = self[0] - else: - day = self[0] - - elif len_ymd == 2: - # Two members with numbers - if self[0] > 31: - # 99-01 - year, month = self - elif self[1] > 31: - # 01-99 - month, year = self - elif dayfirst and self[1] <= 12: - # 13-01 - day, month = self - else: - # 01-13 - month, day = self - - elif len_ymd == 3: - # Three members - if mstridx == 0: - month, day, year = self - elif mstridx == 1: - if self[0] > 31 or (yearfirst and self[2] <= 31): - # 99-Jan-01 - year, month, day = self - else: - # 01-Jan-01 - # Give precendence to day-first, since - # two-digit years is usually hand-written. - day, month, year = self - - elif mstridx == 2: - # WTF!? - if self[1] > 31: - # 01-99-Jan - day, year, month = self - else: - # 99-01-Jan - year, day, month = self - - else: - if self[0] > 31 or \ - self.find_probable_year_index(_timelex.split(self.tzstr)) == 0 or \ - (yearfirst and self[1] <= 12 and self[2] <= 31): - # 99-01-01 - if dayfirst and self[2] <= 12: - year, day, month = self - else: - year, month, day = self - elif self[0] > 12 or (dayfirst and self[1] <= 12): - # 13-01-01 - day, month, year = self - else: - # 01-13-01 - month, day, year = self - - return year, month, day - - -class parser(object): - def __init__(self, info=None): - self.info = info or parserinfo() - - def parse(self, timestr, default=None, ignoretz=False, tzinfos=None, **kwargs): - """ - Parse the date/time string into a :class:`datetime.datetime` object. - - :param timestr: - Any date/time string using the supported formats. - - :param default: - The default datetime object, if this is a datetime object and not - ``None``, elements specified in ``timestr`` replace elements in the - default object. - - :param ignoretz: - If set ``True``, time zones in parsed strings are ignored and a - naive :class:`datetime.datetime` object is returned. - - :param tzinfos: - Additional time zone names / aliases which may be present in the - string. This argument maps time zone names (and optionally offsets - from those time zones) to time zones. This parameter can be a - dictionary with timezone aliases mapping time zone names to time - zones or a function taking two parameters (``tzname`` and - ``tzoffset``) and returning a time zone. - - The timezones to which the names are mapped can be an integer - offset from UTC in minutes or a :class:`tzinfo` object. - - .. doctest:: - :options: +NORMALIZE_WHITESPACE - - >>> from dateutil.parser import parse - >>> from dateutil.tz import gettz - >>> tzinfos = {"BRST": -10800, "CST": gettz("America/Chicago")} - >>> parse("2012-01-19 17:21:00 BRST", tzinfos=tzinfos) - datetime.datetime(2012, 1, 19, 17, 21, tzinfo=tzoffset(u'BRST', -10800)) - >>> parse("2012-01-19 17:21:00 CST", tzinfos=tzinfos) - datetime.datetime(2012, 1, 19, 17, 21, - tzinfo=tzfile('/usr/share/zoneinfo/America/Chicago')) - - This parameter is ignored if ``ignoretz`` is set. - - :param **kwargs: - Keyword arguments as passed to ``_parse()``. - - :return: - Returns a :class:`datetime.datetime` object or, if the - ``fuzzy_with_tokens`` option is ``True``, returns a tuple, the - first element being a :class:`datetime.datetime` object, the second - a tuple containing the fuzzy tokens. - - :raises ValueError: - Raised for invalid or unknown string format, if the provided - :class:`tzinfo` is not in a valid format, or if an invalid date - would be created. - - :raises TypeError: - Raised for non-string or character stream input. - - :raises OverflowError: - Raised if the parsed date exceeds the largest valid C integer on - your system. - """ - - if default is None: - default = datetime.datetime.now().replace(hour=0, minute=0, - second=0, microsecond=0) - - res, skipped_tokens = self._parse(timestr, **kwargs) - - if res is None: - raise ValueError("Unknown string format") - - if len(res) == 0: - raise ValueError("String does not contain a date.") - - repl = {} - for attr in ("year", "month", "day", "hour", - "minute", "second", "microsecond"): - value = getattr(res, attr) - if value is not None: - repl[attr] = value - - if 'day' not in repl: - # If the default day exceeds the last day of the month, fall back to - # the end of the month. - cyear = default.year if res.year is None else res.year - cmonth = default.month if res.month is None else res.month - cday = default.day if res.day is None else res.day - - if cday > monthrange(cyear, cmonth)[1]: - repl['day'] = monthrange(cyear, cmonth)[1] - - ret = default.replace(**repl) - - if res.weekday is not None and not res.day: - ret = ret+relativedelta.relativedelta(weekday=res.weekday) - - if not ignoretz: - if (isinstance(tzinfos, collections.Callable) or - tzinfos and res.tzname in tzinfos): - - if isinstance(tzinfos, collections.Callable): - tzdata = tzinfos(res.tzname, res.tzoffset) - else: - tzdata = tzinfos.get(res.tzname) - - if isinstance(tzdata, datetime.tzinfo): - tzinfo = tzdata - elif isinstance(tzdata, text_type): - tzinfo = tz.tzstr(tzdata) - elif isinstance(tzdata, integer_types): - tzinfo = tz.tzoffset(res.tzname, tzdata) - else: - raise ValueError("Offset must be tzinfo subclass, " - "tz string, or int offset.") - ret = ret.replace(tzinfo=tzinfo) - elif res.tzname and res.tzname in time.tzname: - ret = ret.replace(tzinfo=tz.tzlocal()) - elif res.tzoffset == 0: - ret = ret.replace(tzinfo=tz.tzutc()) - elif res.tzoffset: - ret = ret.replace(tzinfo=tz.tzoffset(res.tzname, res.tzoffset)) - - if kwargs.get('fuzzy_with_tokens', False): - return ret, skipped_tokens - else: - return ret - - class _result(_resultbase): - __slots__ = ["year", "month", "day", "weekday", - "hour", "minute", "second", "microsecond", - "tzname", "tzoffset", "ampm"] - - def _parse(self, timestr, dayfirst=None, yearfirst=None, fuzzy=False, - fuzzy_with_tokens=False): - """ - Private method which performs the heavy lifting of parsing, called from - ``parse()``, which passes on its ``kwargs`` to this function. - - :param timestr: - The string to parse. - - :param dayfirst: - Whether to interpret the first value in an ambiguous 3-integer date - (e.g. 01/05/09) as the day (``True``) or month (``False``). If - ``yearfirst`` is set to ``True``, this distinguishes between YDM - and YMD. If set to ``None``, this value is retrieved from the - current :class:`parserinfo` object (which itself defaults to - ``False``). - - :param yearfirst: - Whether to interpret the first value in an ambiguous 3-integer date - (e.g. 01/05/09) as the year. If ``True``, the first number is taken - to be the year, otherwise the last number is taken to be the year. - If this is set to ``None``, the value is retrieved from the current - :class:`parserinfo` object (which itself defaults to ``False``). - - :param fuzzy: - Whether to allow fuzzy parsing, allowing for string like "Today is - January 1, 2047 at 8:21:00AM". - - :param fuzzy_with_tokens: - If ``True``, ``fuzzy`` is automatically set to True, and the parser - will return a tuple where the first element is the parsed - :class:`datetime.datetime` datetimestamp and the second element is - a tuple containing the portions of the string which were ignored: - - .. doctest:: - - >>> from dateutil.parser import parse - >>> parse("Today is January 1, 2047 at 8:21:00AM", fuzzy_with_tokens=True) - (datetime.datetime(2047, 1, 1, 8, 21), (u'Today is ', u' ', u'at ')) - - """ - if fuzzy_with_tokens: - fuzzy = True - - info = self.info - - if dayfirst is None: - dayfirst = info.dayfirst - - if yearfirst is None: - yearfirst = info.yearfirst - - res = self._result() - l = _timelex.split(timestr) # Splits the timestr into tokens - - # keep up with the last token skipped so we can recombine - # consecutively skipped tokens (-2 for when i begins at 0). - last_skipped_token_i = -2 - skipped_tokens = list() - - try: - # year/month/day list - ymd = _ymd(timestr) - - # Index of the month string in ymd - mstridx = -1 - - len_l = len(l) - i = 0 - while i < len_l: - - # Check if it's a number - try: - value_repr = l[i] - value = float(value_repr) - except ValueError: - value = None - - if value is not None: - # Token is a number - len_li = len(l[i]) - i += 1 - - if (len(ymd) == 3 and len_li in (2, 4) - and res.hour is None and (i >= len_l or (l[i] != ':' and - info.hms(l[i]) is None))): - # 19990101T23[59] - s = l[i-1] - res.hour = int(s[:2]) - - if len_li == 4: - res.minute = int(s[2:]) - - elif len_li == 6 or (len_li > 6 and l[i-1].find('.') == 6): - # YYMMDD or HHMMSS[.ss] - s = l[i-1] - - if not ymd and l[i-1].find('.') == -1: - #ymd.append(info.convertyear(int(s[:2]))) - - ymd.append(s[:2]) - ymd.append(s[2:4]) - ymd.append(s[4:]) - else: - # 19990101T235959[.59] - res.hour = int(s[:2]) - res.minute = int(s[2:4]) - res.second, res.microsecond = _parsems(s[4:]) - - elif len_li in (8, 12, 14): - # YYYYMMDD - s = l[i-1] - ymd.append(s[:4]) - ymd.append(s[4:6]) - ymd.append(s[6:8]) - - if len_li > 8: - res.hour = int(s[8:10]) - res.minute = int(s[10:12]) - - if len_li > 12: - res.second = int(s[12:]) - - elif ((i < len_l and info.hms(l[i]) is not None) or - (i+1 < len_l and l[i] == ' ' and - info.hms(l[i+1]) is not None)): - - # HH[ ]h or MM[ ]m or SS[.ss][ ]s - if l[i] == ' ': - i += 1 - - idx = info.hms(l[i]) - - while True: - if idx == 0: - res.hour = int(value) - - if value % 1: - res.minute = int(60*(value % 1)) - - elif idx == 1: - res.minute = int(value) - - if value % 1: - res.second = int(60*(value % 1)) - - elif idx == 2: - res.second, res.microsecond = \ - _parsems(value_repr) - - i += 1 - - if i >= len_l or idx == 2: - break - - # 12h00 - try: - value_repr = l[i] - value = float(value_repr) - except ValueError: - break - else: - i += 1 - idx += 1 - - if i < len_l: - newidx = info.hms(l[i]) - - if newidx is not None: - idx = newidx - - elif (i == len_l and l[i-2] == ' ' and - info.hms(l[i-3]) is not None): - # X h MM or X m SS - idx = info.hms(l[i-3]) - - if idx == 0: # h - res.minute = int(value) - - sec_remainder = value % 1 - if sec_remainder: - res.second = int(60 * sec_remainder) - elif idx == 1: # m - res.second, res.microsecond = \ - _parsems(value_repr) - - # We don't need to advance the tokens here because the - # i == len_l call indicates that we're looking at all - # the tokens already. - - elif i+1 < len_l and l[i] == ':': - # HH:MM[:SS[.ss]] - res.hour = int(value) - i += 1 - value = float(l[i]) - res.minute = int(value) - - if value % 1: - res.second = int(60*(value % 1)) - - i += 1 - - if i < len_l and l[i] == ':': - res.second, res.microsecond = _parsems(l[i+1]) - i += 2 - - elif i < len_l and l[i] in ('-', '/', '.'): - sep = l[i] - ymd.append(value_repr) - i += 1 - - if i < len_l and not info.jump(l[i]): - try: - # 01-01[-01] - ymd.append(l[i]) - except ValueError: - # 01-Jan[-01] - value = info.month(l[i]) - - if value is not None: - ymd.append(value) - assert mstridx == -1 - mstridx = len(ymd)-1 - else: - return None, None - - i += 1 - - if i < len_l and l[i] == sep: - # We have three members - i += 1 - value = info.month(l[i]) - - if value is not None: - ymd.append(value) - mstridx = len(ymd)-1 - assert mstridx == -1 - else: - ymd.append(l[i]) - - i += 1 - elif i >= len_l or info.jump(l[i]): - if i+1 < len_l and info.ampm(l[i+1]) is not None: - # 12 am - res.hour = int(value) - - if res.hour < 12 and info.ampm(l[i+1]) == 1: - res.hour += 12 - elif res.hour == 12 and info.ampm(l[i+1]) == 0: - res.hour = 0 - - i += 1 - else: - # Year, month or day - ymd.append(value) - i += 1 - elif info.ampm(l[i]) is not None: - - # 12am - res.hour = int(value) - - if res.hour < 12 and info.ampm(l[i]) == 1: - res.hour += 12 - elif res.hour == 12 and info.ampm(l[i]) == 0: - res.hour = 0 - i += 1 - - elif not fuzzy: - return None, None - else: - i += 1 - continue - - # Check weekday - value = info.weekday(l[i]) - if value is not None: - res.weekday = value - i += 1 - continue - - # Check month name - value = info.month(l[i]) - if value is not None: - ymd.append(value) - assert mstridx == -1 - mstridx = len(ymd)-1 - - i += 1 - if i < len_l: - if l[i] in ('-', '/'): - # Jan-01[-99] - sep = l[i] - i += 1 - ymd.append(l[i]) - i += 1 - - if i < len_l and l[i] == sep: - # Jan-01-99 - i += 1 - ymd.append(l[i]) - i += 1 - - elif (i+3 < len_l and l[i] == l[i+2] == ' ' - and info.pertain(l[i+1])): - # Jan of 01 - # In this case, 01 is clearly year - try: - value = int(l[i+3]) - except ValueError: - # Wrong guess - pass - else: - # Convert it here to become unambiguous - ymd.append(str(info.convertyear(value))) - i += 4 - continue - - # Check am/pm - value = info.ampm(l[i]) - if value is not None: - # For fuzzy parsing, 'a' or 'am' (both valid English words) - # may erroneously trigger the AM/PM flag. Deal with that - # here. - val_is_ampm = True - - # If there's already an AM/PM flag, this one isn't one. - if fuzzy and res.ampm is not None: - val_is_ampm = False - - # If AM/PM is found and hour is not, raise a ValueError - if res.hour is None: - if fuzzy: - val_is_ampm = False - else: - raise ValueError('No hour specified with ' + - 'AM or PM flag.') - elif not 0 <= res.hour <= 12: - # If AM/PM is found, it's a 12 hour clock, so raise - # an error for invalid range - if fuzzy: - val_is_ampm = False - else: - raise ValueError('Invalid hour specified for ' + - '12-hour clock.') - - if val_is_ampm: - if value == 1 and res.hour < 12: - res.hour += 12 - elif value == 0 and res.hour == 12: - res.hour = 0 - - res.ampm = value - - elif fuzzy: - last_skipped_token_i = self._skip_token(skipped_tokens, - last_skipped_token_i, i, l) - i += 1 - continue - - # Check for a timezone name - if (res.hour is not None and len(l[i]) <= 5 and - res.tzname is None and res.tzoffset is None and - not [x for x in l[i] if x not in - string.ascii_uppercase]): - res.tzname = l[i] - res.tzoffset = info.tzoffset(res.tzname) - i += 1 - - # Check for something like GMT+3, or BRST+3. Notice - # that it doesn't mean "I am 3 hours after GMT", but - # "my time +3 is GMT". If found, we reverse the - # logic so that timezone parsing code will get it - # right. - if i < len_l and l[i] in ('+', '-'): - l[i] = ('+', '-')[l[i] == '+'] - res.tzoffset = None - if info.utczone(res.tzname): - # With something like GMT+3, the timezone - # is *not* GMT. - res.tzname = None - - continue - - # Check for a numbered timezone - if res.hour is not None and l[i] in ('+', '-'): - signal = (-1, 1)[l[i] == '+'] - i += 1 - len_li = len(l[i]) - - if len_li == 4: - # -0300 - res.tzoffset = int(l[i][:2])*3600+int(l[i][2:])*60 - elif i+1 < len_l and l[i+1] == ':': - # -03:00 - res.tzoffset = int(l[i])*3600+int(l[i+2])*60 - i += 2 - elif len_li <= 2: - # -[0]3 - res.tzoffset = int(l[i][:2])*3600 - else: - return None, None - i += 1 - - res.tzoffset *= signal - - # Look for a timezone name between parenthesis - if (i+3 < len_l and - info.jump(l[i]) and l[i+1] == '(' and l[i+3] == ')' and - 3 <= len(l[i+2]) <= 5 and - not [x for x in l[i+2] - if x not in string.ascii_uppercase]): - # -0300 (BRST) - res.tzname = l[i+2] - i += 4 - continue - - # Check jumps - if not (info.jump(l[i]) or fuzzy): - return None, None - - last_skipped_token_i = self._skip_token(skipped_tokens, - last_skipped_token_i, i, l) - i += 1 - - # Process year/month/day - year, month, day = ymd.resolve_ymd(mstridx, yearfirst, dayfirst) - if year is not None: - res.year = year - res.century_specified = ymd.century_specified - - if month is not None: - res.month = month - - if day is not None: - res.day = day - - except (IndexError, ValueError, AssertionError): - return None, None - - if not info.validate(res): - return None, None - - if fuzzy_with_tokens: - return res, tuple(skipped_tokens) - else: - return res, None - - @staticmethod - def _skip_token(skipped_tokens, last_skipped_token_i, i, l): - if last_skipped_token_i == i - 1: - # recombine the tokens - skipped_tokens[-1] += l[i] - else: - # just append - skipped_tokens.append(l[i]) - last_skipped_token_i = i - return last_skipped_token_i - - -DEFAULTPARSER = parser() - - -def parse(timestr, parserinfo=None, **kwargs): - """ - - Parse a string in one of the supported formats, using the - ``parserinfo`` parameters. - - :param timestr: - A string containing a date/time stamp. - - :param parserinfo: - A :class:`parserinfo` object containing parameters for the parser. - If ``None``, the default arguments to the :class:`parserinfo` - constructor are used. - - The ``**kwargs`` parameter takes the following keyword arguments: - - :param default: - The default datetime object, if this is a datetime object and not - ``None``, elements specified in ``timestr`` replace elements in the - default object. - - :param ignoretz: - If set ``True``, time zones in parsed strings are ignored and a naive - :class:`datetime` object is returned. - - :param tzinfos: - Additional time zone names / aliases which may be present in the - string. This argument maps time zone names (and optionally offsets - from those time zones) to time zones. This parameter can be a - dictionary with timezone aliases mapping time zone names to time - zones or a function taking two parameters (``tzname`` and - ``tzoffset``) and returning a time zone. - - The timezones to which the names are mapped can be an integer - offset from UTC in minutes or a :class:`tzinfo` object. - - .. doctest:: - :options: +NORMALIZE_WHITESPACE - - >>> from dateutil.parser import parse - >>> from dateutil.tz import gettz - >>> tzinfos = {"BRST": -10800, "CST": gettz("America/Chicago")} - >>> parse("2012-01-19 17:21:00 BRST", tzinfos=tzinfos) - datetime.datetime(2012, 1, 19, 17, 21, tzinfo=tzoffset(u'BRST', -10800)) - >>> parse("2012-01-19 17:21:00 CST", tzinfos=tzinfos) - datetime.datetime(2012, 1, 19, 17, 21, - tzinfo=tzfile('/usr/share/zoneinfo/America/Chicago')) - - This parameter is ignored if ``ignoretz`` is set. - - :param dayfirst: - Whether to interpret the first value in an ambiguous 3-integer date - (e.g. 01/05/09) as the day (``True``) or month (``False``). If - ``yearfirst`` is set to ``True``, this distinguishes between YDM and - YMD. If set to ``None``, this value is retrieved from the current - :class:`parserinfo` object (which itself defaults to ``False``). - - :param yearfirst: - Whether to interpret the first value in an ambiguous 3-integer date - (e.g. 01/05/09) as the year. If ``True``, the first number is taken to - be the year, otherwise the last number is taken to be the year. If - this is set to ``None``, the value is retrieved from the current - :class:`parserinfo` object (which itself defaults to ``False``). - - :param fuzzy: - Whether to allow fuzzy parsing, allowing for string like "Today is - January 1, 2047 at 8:21:00AM". - - :param fuzzy_with_tokens: - If ``True``, ``fuzzy`` is automatically set to True, and the parser - will return a tuple where the first element is the parsed - :class:`datetime.datetime` datetimestamp and the second element is - a tuple containing the portions of the string which were ignored: - - .. doctest:: - - >>> from dateutil.parser import parse - >>> parse("Today is January 1, 2047 at 8:21:00AM", fuzzy_with_tokens=True) - (datetime.datetime(2047, 1, 1, 8, 21), (u'Today is ', u' ', u'at ')) - - :return: - Returns a :class:`datetime.datetime` object or, if the - ``fuzzy_with_tokens`` option is ``True``, returns a tuple, the - first element being a :class:`datetime.datetime` object, the second - a tuple containing the fuzzy tokens. - - :raises ValueError: - Raised for invalid or unknown string format, if the provided - :class:`tzinfo` is not in a valid format, or if an invalid date - would be created. - - :raises OverflowError: - Raised if the parsed date exceeds the largest valid C integer on - your system. - """ - if parserinfo: - return parser(parserinfo).parse(timestr, **kwargs) - else: - return DEFAULTPARSER.parse(timestr, **kwargs) - - -class _tzparser(object): - - class _result(_resultbase): - - __slots__ = ["stdabbr", "stdoffset", "dstabbr", "dstoffset", - "start", "end"] - - class _attr(_resultbase): - __slots__ = ["month", "week", "weekday", - "yday", "jyday", "day", "time"] - - def __repr__(self): - return self._repr("") - - def __init__(self): - _resultbase.__init__(self) - self.start = self._attr() - self.end = self._attr() - - def parse(self, tzstr): - res = self._result() - l = _timelex.split(tzstr) - try: - - len_l = len(l) - - i = 0 - while i < len_l: - # BRST+3[BRDT[+2]] - j = i - while j < len_l and not [x for x in l[j] - if x in "0123456789:,-+"]: - j += 1 - if j != i: - if not res.stdabbr: - offattr = "stdoffset" - res.stdabbr = "".join(l[i:j]) - else: - offattr = "dstoffset" - res.dstabbr = "".join(l[i:j]) - i = j - if (i < len_l and (l[i] in ('+', '-') or l[i][0] in - "0123456789")): - if l[i] in ('+', '-'): - # Yes, that's right. See the TZ variable - # documentation. - signal = (1, -1)[l[i] == '+'] - i += 1 - else: - signal = -1 - len_li = len(l[i]) - if len_li == 4: - # -0300 - setattr(res, offattr, (int(l[i][:2])*3600 + - int(l[i][2:])*60)*signal) - elif i+1 < len_l and l[i+1] == ':': - # -03:00 - setattr(res, offattr, - (int(l[i])*3600+int(l[i+2])*60)*signal) - i += 2 - elif len_li <= 2: - # -[0]3 - setattr(res, offattr, - int(l[i][:2])*3600*signal) - else: - return None - i += 1 - if res.dstabbr: - break - else: - break - - if i < len_l: - for j in range(i, len_l): - if l[j] == ';': - l[j] = ',' - - assert l[i] == ',' - - i += 1 - - if i >= len_l: - pass - elif (8 <= l.count(',') <= 9 and - not [y for x in l[i:] if x != ',' - for y in x if y not in "0123456789"]): - # GMT0BST,3,0,30,3600,10,0,26,7200[,3600] - for x in (res.start, res.end): - x.month = int(l[i]) - i += 2 - if l[i] == '-': - value = int(l[i+1])*-1 - i += 1 - else: - value = int(l[i]) - i += 2 - if value: - x.week = value - x.weekday = (int(l[i])-1) % 7 - else: - x.day = int(l[i]) - i += 2 - x.time = int(l[i]) - i += 2 - if i < len_l: - if l[i] in ('-', '+'): - signal = (-1, 1)[l[i] == "+"] - i += 1 - else: - signal = 1 - res.dstoffset = (res.stdoffset+int(l[i]))*signal - elif (l.count(',') == 2 and l[i:].count('/') <= 2 and - not [y for x in l[i:] if x not in (',', '/', 'J', 'M', - '.', '-', ':') - for y in x if y not in "0123456789"]): - for x in (res.start, res.end): - if l[i] == 'J': - # non-leap year day (1 based) - i += 1 - x.jyday = int(l[i]) - elif l[i] == 'M': - # month[-.]week[-.]weekday - i += 1 - x.month = int(l[i]) - i += 1 - assert l[i] in ('-', '.') - i += 1 - x.week = int(l[i]) - if x.week == 5: - x.week = -1 - i += 1 - assert l[i] in ('-', '.') - i += 1 - x.weekday = (int(l[i])-1) % 7 - else: - # year day (zero based) - x.yday = int(l[i])+1 - - i += 1 - - if i < len_l and l[i] == '/': - i += 1 - # start time - len_li = len(l[i]) - if len_li == 4: - # -0300 - x.time = (int(l[i][:2])*3600+int(l[i][2:])*60) - elif i+1 < len_l and l[i+1] == ':': - # -03:00 - x.time = int(l[i])*3600+int(l[i+2])*60 - i += 2 - if i+1 < len_l and l[i+1] == ':': - i += 2 - x.time += int(l[i]) - elif len_li <= 2: - # -[0]3 - x.time = (int(l[i][:2])*3600) - else: - return None - i += 1 - - assert i == len_l or l[i] == ',' - - i += 1 - - assert i >= len_l - - except (IndexError, ValueError, AssertionError): - return None - - return res - - -DEFAULTTZPARSER = _tzparser() - - -def _parsetz(tzstr): - return DEFAULTTZPARSER.parse(tzstr) - - -def _parsems(value): - """Parse a I[.F] seconds value into (seconds, microseconds).""" - if "." not in value: - return int(value), 0 - else: - i, f = value.split(".") - return int(i), int(f.ljust(6, "0")[:6]) - - -# vim:ts=4:sw=4:et diff --git a/python/dateutil/relativedelta.py b/python/dateutil/relativedelta.py deleted file mode 100644 index 0e66afc..0000000 --- a/python/dateutil/relativedelta.py +++ /dev/null @@ -1,549 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -import calendar - -import operator -from math import copysign - -from six import integer_types -from warnings import warn - -from ._common import weekday - -MO, TU, WE, TH, FR, SA, SU = weekdays = tuple(weekday(x) for x in range(7)) - -__all__ = ["relativedelta", "MO", "TU", "WE", "TH", "FR", "SA", "SU"] - - -class relativedelta(object): - """ - The relativedelta type is based on the specification of the excellent - work done by M.-A. Lemburg in his - `mx.DateTime <http://www.egenix.com/files/python/mxDateTime.html>`_ extension. - However, notice that this type does *NOT* implement the same algorithm as - his work. Do *NOT* expect it to behave like mx.DateTime's counterpart. - - There are two different ways to build a relativedelta instance. The - first one is passing it two date/datetime classes:: - - relativedelta(datetime1, datetime2) - - The second one is passing it any number of the following keyword arguments:: - - relativedelta(arg1=x,arg2=y,arg3=z...) - - year, month, day, hour, minute, second, microsecond: - Absolute information (argument is singular); adding or subtracting a - relativedelta with absolute information does not perform an aritmetic - operation, but rather REPLACES the corresponding value in the - original datetime with the value(s) in relativedelta. - - years, months, weeks, days, hours, minutes, seconds, microseconds: - Relative information, may be negative (argument is plural); adding - or subtracting a relativedelta with relative information performs - the corresponding aritmetic operation on the original datetime value - with the information in the relativedelta. - - weekday: - One of the weekday instances (MO, TU, etc). These instances may - receive a parameter N, specifying the Nth weekday, which could - be positive or negative (like MO(+1) or MO(-2). Not specifying - it is the same as specifying +1. You can also use an integer, - where 0=MO. - - leapdays: - Will add given days to the date found, if year is a leap - year, and the date found is post 28 of february. - - yearday, nlyearday: - Set the yearday or the non-leap year day (jump leap days). - These are converted to day/month/leapdays information. - - Here is the behavior of operations with relativedelta: - - 1. Calculate the absolute year, using the 'year' argument, or the - original datetime year, if the argument is not present. - - 2. Add the relative 'years' argument to the absolute year. - - 3. Do steps 1 and 2 for month/months. - - 4. Calculate the absolute day, using the 'day' argument, or the - original datetime day, if the argument is not present. Then, - subtract from the day until it fits in the year and month - found after their operations. - - 5. Add the relative 'days' argument to the absolute day. Notice - that the 'weeks' argument is multiplied by 7 and added to - 'days'. - - 6. Do steps 1 and 2 for hour/hours, minute/minutes, second/seconds, - microsecond/microseconds. - - 7. If the 'weekday' argument is present, calculate the weekday, - with the given (wday, nth) tuple. wday is the index of the - weekday (0-6, 0=Mon), and nth is the number of weeks to add - forward or backward, depending on its signal. Notice that if - the calculated date is already Monday, for example, using - (0, 1) or (0, -1) won't change the day. - """ - - def __init__(self, dt1=None, dt2=None, - years=0, months=0, days=0, leapdays=0, weeks=0, - hours=0, minutes=0, seconds=0, microseconds=0, - year=None, month=None, day=None, weekday=None, - yearday=None, nlyearday=None, - hour=None, minute=None, second=None, microsecond=None): - - # Check for non-integer values in integer-only quantities - if any(x is not None and x != int(x) for x in (years, months)): - raise ValueError("Non-integer years and months are " - "ambiguous and not currently supported.") - - if dt1 and dt2: - # datetime is a subclass of date. So both must be date - if not (isinstance(dt1, datetime.date) and - isinstance(dt2, datetime.date)): - raise TypeError("relativedelta only diffs datetime/date") - - # We allow two dates, or two datetimes, so we coerce them to be - # of the same type - if (isinstance(dt1, datetime.datetime) != - isinstance(dt2, datetime.datetime)): - if not isinstance(dt1, datetime.datetime): - dt1 = datetime.datetime.fromordinal(dt1.toordinal()) - elif not isinstance(dt2, datetime.datetime): - dt2 = datetime.datetime.fromordinal(dt2.toordinal()) - - self.years = 0 - self.months = 0 - self.days = 0 - self.leapdays = 0 - self.hours = 0 - self.minutes = 0 - self.seconds = 0 - self.microseconds = 0 - self.year = None - self.month = None - self.day = None - self.weekday = None - self.hour = None - self.minute = None - self.second = None - self.microsecond = None - self._has_time = 0 - - # Get year / month delta between the two - months = (dt1.year - dt2.year) * 12 + (dt1.month - dt2.month) - self._set_months(months) - - # Remove the year/month delta so the timedelta is just well-defined - # time units (seconds, days and microseconds) - dtm = self.__radd__(dt2) - - # If we've overshot our target, make an adjustment - if dt1 < dt2: - compare = operator.gt - increment = 1 - else: - compare = operator.lt - increment = -1 - - while compare(dt1, dtm): - months += increment - self._set_months(months) - dtm = self.__radd__(dt2) - - # Get the timedelta between the "months-adjusted" date and dt1 - delta = dt1 - dtm - self.seconds = delta.seconds + delta.days * 86400 - self.microseconds = delta.microseconds - else: - # Relative information - self.years = years - self.months = months - self.days = days + weeks * 7 - self.leapdays = leapdays - self.hours = hours - self.minutes = minutes - self.seconds = seconds - self.microseconds = microseconds - - # Absolute information - self.year = year - self.month = month - self.day = day - self.hour = hour - self.minute = minute - self.second = second - self.microsecond = microsecond - - if any(x is not None and int(x) != x - for x in (year, month, day, hour, - minute, second, microsecond)): - # For now we'll deprecate floats - later it'll be an error. - warn("Non-integer value passed as absolute information. " + - "This is not a well-defined condition and will raise " + - "errors in future versions.", DeprecationWarning) - - if isinstance(weekday, integer_types): - self.weekday = weekdays[weekday] - else: - self.weekday = weekday - - yday = 0 - if nlyearday: - yday = nlyearday - elif yearday: - yday = yearday - if yearday > 59: - self.leapdays = -1 - if yday: - ydayidx = [31, 59, 90, 120, 151, 181, 212, - 243, 273, 304, 334, 366] - for idx, ydays in enumerate(ydayidx): - if yday <= ydays: - self.month = idx+1 - if idx == 0: - self.day = yday - else: - self.day = yday-ydayidx[idx-1] - break - else: - raise ValueError("invalid year day (%d)" % yday) - - self._fix() - - def _fix(self): - if abs(self.microseconds) > 999999: - s = _sign(self.microseconds) - div, mod = divmod(self.microseconds * s, 1000000) - self.microseconds = mod * s - self.seconds += div * s - if abs(self.seconds) > 59: - s = _sign(self.seconds) - div, mod = divmod(self.seconds * s, 60) - self.seconds = mod * s - self.minutes += div * s - if abs(self.minutes) > 59: - s = _sign(self.minutes) - div, mod = divmod(self.minutes * s, 60) - self.minutes = mod * s - self.hours += div * s - if abs(self.hours) > 23: - s = _sign(self.hours) - div, mod = divmod(self.hours * s, 24) - self.hours = mod * s - self.days += div * s - if abs(self.months) > 11: - s = _sign(self.months) - div, mod = divmod(self.months * s, 12) - self.months = mod * s - self.years += div * s - if (self.hours or self.minutes or self.seconds or self.microseconds - or self.hour is not None or self.minute is not None or - self.second is not None or self.microsecond is not None): - self._has_time = 1 - else: - self._has_time = 0 - - @property - def weeks(self): - return self.days // 7 - - @weeks.setter - def weeks(self, value): - self.days = self.days - (self.weeks * 7) + value * 7 - - def _set_months(self, months): - self.months = months - if abs(self.months) > 11: - s = _sign(self.months) - div, mod = divmod(self.months * s, 12) - self.months = mod * s - self.years = div * s - else: - self.years = 0 - - def normalized(self): - """ - Return a version of this object represented entirely using integer - values for the relative attributes. - - >>> relativedelta(days=1.5, hours=2).normalized() - relativedelta(days=1, hours=14) - - :return: - Returns a :class:`dateutil.relativedelta.relativedelta` object. - """ - # Cascade remainders down (rounding each to roughly nearest microsecond) - days = int(self.days) - - hours_f = round(self.hours + 24 * (self.days - days), 11) - hours = int(hours_f) - - minutes_f = round(self.minutes + 60 * (hours_f - hours), 10) - minutes = int(minutes_f) - - seconds_f = round(self.seconds + 60 * (minutes_f - minutes), 8) - seconds = int(seconds_f) - - microseconds = round(self.microseconds + 1e6 * (seconds_f - seconds)) - - # Constructor carries overflow back up with call to _fix() - return self.__class__(years=self.years, months=self.months, - days=days, hours=hours, minutes=minutes, - seconds=seconds, microseconds=microseconds, - leapdays=self.leapdays, year=self.year, - month=self.month, day=self.day, - weekday=self.weekday, hour=self.hour, - minute=self.minute, second=self.second, - microsecond=self.microsecond) - - def __add__(self, other): - if isinstance(other, relativedelta): - return self.__class__(years=other.years + self.years, - months=other.months + self.months, - days=other.days + self.days, - hours=other.hours + self.hours, - minutes=other.minutes + self.minutes, - seconds=other.seconds + self.seconds, - microseconds=(other.microseconds + - self.microseconds), - leapdays=other.leapdays or self.leapdays, - year=(other.year if other.year is not None - else self.year), - month=(other.month if other.month is not None - else self.month), - day=(other.day if other.day is not None - else self.day), - weekday=(other.weekday if other.weekday is not None - else self.weekday), - hour=(other.hour if other.hour is not None - else self.hour), - minute=(other.minute if other.minute is not None - else self.minute), - second=(other.second if other.second is not None - else self.second), - microsecond=(other.microsecond if other.microsecond - is not None else - self.microsecond)) - if isinstance(other, datetime.timedelta): - return self.__class__(years=self.years, - months=self.months, - days=self.days + other.days, - hours=self.hours, - minutes=self.minutes, - seconds=self.seconds + other.seconds, - microseconds=self.microseconds + other.microseconds, - leapdays=self.leapdays, - year=self.year, - month=self.month, - day=self.day, - weekday=self.weekday, - hour=self.hour, - minute=self.minute, - second=self.second, - microsecond=self.microsecond) - if not isinstance(other, datetime.date): - return NotImplemented - elif self._has_time and not isinstance(other, datetime.datetime): - other = datetime.datetime.fromordinal(other.toordinal()) - year = (self.year or other.year)+self.years - month = self.month or other.month - if self.months: - assert 1 <= abs(self.months) <= 12 - month += self.months - if month > 12: - year += 1 - month -= 12 - elif month < 1: - year -= 1 - month += 12 - day = min(calendar.monthrange(year, month)[1], - self.day or other.day) - repl = {"year": year, "month": month, "day": day} - for attr in ["hour", "minute", "second", "microsecond"]: - value = getattr(self, attr) - if value is not None: - repl[attr] = value - days = self.days - if self.leapdays and month > 2 and calendar.isleap(year): - days += self.leapdays - ret = (other.replace(**repl) - + datetime.timedelta(days=days, - hours=self.hours, - minutes=self.minutes, - seconds=self.seconds, - microseconds=self.microseconds)) - if self.weekday: - weekday, nth = self.weekday.weekday, self.weekday.n or 1 - jumpdays = (abs(nth) - 1) * 7 - if nth > 0: - jumpdays += (7 - ret.weekday() + weekday) % 7 - else: - jumpdays += (ret.weekday() - weekday) % 7 - jumpdays *= -1 - ret += datetime.timedelta(days=jumpdays) - return ret - - def __radd__(self, other): - return self.__add__(other) - - def __rsub__(self, other): - return self.__neg__().__radd__(other) - - def __sub__(self, other): - if not isinstance(other, relativedelta): - return NotImplemented # In case the other object defines __rsub__ - return self.__class__(years=self.years - other.years, - months=self.months - other.months, - days=self.days - other.days, - hours=self.hours - other.hours, - minutes=self.minutes - other.minutes, - seconds=self.seconds - other.seconds, - microseconds=self.microseconds - other.microseconds, - leapdays=self.leapdays or other.leapdays, - year=(self.year if self.year is not None - else other.year), - month=(self.month if self.month is not None else - other.month), - day=(self.day if self.day is not None else - other.day), - weekday=(self.weekday if self.weekday is not None else - other.weekday), - hour=(self.hour if self.hour is not None else - other.hour), - minute=(self.minute if self.minute is not None else - other.minute), - second=(self.second if self.second is not None else - other.second), - microsecond=(self.microsecond if self.microsecond - is not None else - other.microsecond)) - - def __neg__(self): - return self.__class__(years=-self.years, - months=-self.months, - days=-self.days, - hours=-self.hours, - minutes=-self.minutes, - seconds=-self.seconds, - microseconds=-self.microseconds, - leapdays=self.leapdays, - year=self.year, - month=self.month, - day=self.day, - weekday=self.weekday, - hour=self.hour, - minute=self.minute, - second=self.second, - microsecond=self.microsecond) - - def __bool__(self): - return not (not self.years and - not self.months and - not self.days and - not self.hours and - not self.minutes and - not self.seconds and - not self.microseconds and - not self.leapdays and - self.year is None and - self.month is None and - self.day is None and - self.weekday is None and - self.hour is None and - self.minute is None and - self.second is None and - self.microsecond is None) - # Compatibility with Python 2.x - __nonzero__ = __bool__ - - def __mul__(self, other): - try: - f = float(other) - except TypeError: - return NotImplemented - - return self.__class__(years=int(self.years * f), - months=int(self.months * f), - days=int(self.days * f), - hours=int(self.hours * f), - minutes=int(self.minutes * f), - seconds=int(self.seconds * f), - microseconds=int(self.microseconds * f), - leapdays=self.leapdays, - year=self.year, - month=self.month, - day=self.day, - weekday=self.weekday, - hour=self.hour, - minute=self.minute, - second=self.second, - microsecond=self.microsecond) - - __rmul__ = __mul__ - - def __eq__(self, other): - if not isinstance(other, relativedelta): - return NotImplemented - if self.weekday or other.weekday: - if not self.weekday or not other.weekday: - return False - if self.weekday.weekday != other.weekday.weekday: - return False - n1, n2 = self.weekday.n, other.weekday.n - if n1 != n2 and not ((not n1 or n1 == 1) and (not n2 or n2 == 1)): - return False - return (self.years == other.years and - self.months == other.months and - self.days == other.days and - self.hours == other.hours and - self.minutes == other.minutes and - self.seconds == other.seconds and - self.microseconds == other.microseconds and - self.leapdays == other.leapdays and - self.year == other.year and - self.month == other.month and - self.day == other.day and - self.hour == other.hour and - self.minute == other.minute and - self.second == other.second and - self.microsecond == other.microsecond) - - __hash__ = None - - def __ne__(self, other): - return not self.__eq__(other) - - def __div__(self, other): - try: - reciprocal = 1 / float(other) - except TypeError: - return NotImplemented - - return self.__mul__(reciprocal) - - __truediv__ = __div__ - - def __repr__(self): - l = [] - for attr in ["years", "months", "days", "leapdays", - "hours", "minutes", "seconds", "microseconds"]: - value = getattr(self, attr) - if value: - l.append("{attr}={value:+g}".format(attr=attr, value=value)) - for attr in ["year", "month", "day", "weekday", - "hour", "minute", "second", "microsecond"]: - value = getattr(self, attr) - if value is not None: - l.append("{attr}={value}".format(attr=attr, value=repr(value))) - return "{classname}({attrs})".format(classname=self.__class__.__name__, - attrs=", ".join(l)) - - -def _sign(x): - return int(copysign(1, x)) - -# vim:ts=4:sw=4:et diff --git a/python/dateutil/rrule.py b/python/dateutil/rrule.py deleted file mode 100644 index 429f8fc..0000000 --- a/python/dateutil/rrule.py +++ /dev/null @@ -1,1610 +0,0 @@ -# -*- coding: utf-8 -*- -""" -The rrule module offers a small, complete, and very fast, implementation of -the recurrence rules documented in the -`iCalendar RFC <http://www.ietf.org/rfc/rfc2445.txt>`_, -including support for caching of results. -""" -import itertools -import datetime -import calendar -import sys - -try: - from math import gcd -except ImportError: - from fractions import gcd - -from six import advance_iterator, integer_types -from six.moves import _thread, range -import heapq - -from ._common import weekday as weekdaybase - -# For warning about deprecation of until and count -from warnings import warn - -__all__ = ["rrule", "rruleset", "rrulestr", - "YEARLY", "MONTHLY", "WEEKLY", "DAILY", - "HOURLY", "MINUTELY", "SECONDLY", - "MO", "TU", "WE", "TH", "FR", "SA", "SU"] - -# Every mask is 7 days longer to handle cross-year weekly periods. -M366MASK = tuple([1]*31+[2]*29+[3]*31+[4]*30+[5]*31+[6]*30 + - [7]*31+[8]*31+[9]*30+[10]*31+[11]*30+[12]*31+[1]*7) -M365MASK = list(M366MASK) -M29, M30, M31 = list(range(1, 30)), list(range(1, 31)), list(range(1, 32)) -MDAY366MASK = tuple(M31+M29+M31+M30+M31+M30+M31+M31+M30+M31+M30+M31+M31[:7]) -MDAY365MASK = list(MDAY366MASK) -M29, M30, M31 = list(range(-29, 0)), list(range(-30, 0)), list(range(-31, 0)) -NMDAY366MASK = tuple(M31+M29+M31+M30+M31+M30+M31+M31+M30+M31+M30+M31+M31[:7]) -NMDAY365MASK = list(NMDAY366MASK) -M366RANGE = (0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366) -M365RANGE = (0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365) -WDAYMASK = [0, 1, 2, 3, 4, 5, 6]*55 -del M29, M30, M31, M365MASK[59], MDAY365MASK[59], NMDAY365MASK[31] -MDAY365MASK = tuple(MDAY365MASK) -M365MASK = tuple(M365MASK) - -FREQNAMES = ['YEARLY', 'MONTHLY', 'WEEKLY', 'DAILY', 'HOURLY', 'MINUTELY', 'SECONDLY'] - -(YEARLY, - MONTHLY, - WEEKLY, - DAILY, - HOURLY, - MINUTELY, - SECONDLY) = list(range(7)) - -# Imported on demand. -easter = None -parser = None - - -class weekday(weekdaybase): - """ - This version of weekday does not allow n = 0. - """ - def __init__(self, wkday, n=None): - if n == 0: - raise ValueError("Can't create weekday with n==0") - - super(weekday, self).__init__(wkday, n) - - -MO, TU, WE, TH, FR, SA, SU = weekdays = tuple(weekday(x) for x in range(7)) - - -def _invalidates_cache(f): - """ - Decorator for rruleset methods which may invalidate the - cached length. - """ - def inner_func(self, *args, **kwargs): - rv = f(self, *args, **kwargs) - self._invalidate_cache() - return rv - - return inner_func - - -class rrulebase(object): - def __init__(self, cache=False): - if cache: - self._cache = [] - self._cache_lock = _thread.allocate_lock() - self._invalidate_cache() - else: - self._cache = None - self._cache_complete = False - self._len = None - - def __iter__(self): - if self._cache_complete: - return iter(self._cache) - elif self._cache is None: - return self._iter() - else: - return self._iter_cached() - - def _invalidate_cache(self): - if self._cache is not None: - self._cache = [] - self._cache_complete = False - self._cache_gen = self._iter() - - if self._cache_lock.locked(): - self._cache_lock.release() - - self._len = None - - def _iter_cached(self): - i = 0 - gen = self._cache_gen - cache = self._cache - acquire = self._cache_lock.acquire - release = self._cache_lock.release - while gen: - if i == len(cache): - acquire() - if self._cache_complete: - break - try: - for j in range(10): - cache.append(advance_iterator(gen)) - except StopIteration: - self._cache_gen = gen = None - self._cache_complete = True - break - release() - yield cache[i] - i += 1 - while i < self._len: - yield cache[i] - i += 1 - - def __getitem__(self, item): - if self._cache_complete: - return self._cache[item] - elif isinstance(item, slice): - if item.step and item.step < 0: - return list(iter(self))[item] - else: - return list(itertools.islice(self, - item.start or 0, - item.stop or sys.maxsize, - item.step or 1)) - elif item >= 0: - gen = iter(self) - try: - for i in range(item+1): - res = advance_iterator(gen) - except StopIteration: - raise IndexError - return res - else: - return list(iter(self))[item] - - def __contains__(self, item): - if self._cache_complete: - return item in self._cache - else: - for i in self: - if i == item: - return True - elif i > item: - return False - return False - - # __len__() introduces a large performance penality. - def count(self): - """ Returns the number of recurrences in this set. It will have go - trough the whole recurrence, if this hasn't been done before. """ - if self._len is None: - for x in self: - pass - return self._len - - def before(self, dt, inc=False): - """ Returns the last recurrence before the given datetime instance. The - inc keyword defines what happens if dt is an occurrence. With - inc=True, if dt itself is an occurrence, it will be returned. """ - if self._cache_complete: - gen = self._cache - else: - gen = self - last = None - if inc: - for i in gen: - if i > dt: - break - last = i - else: - for i in gen: - if i >= dt: - break - last = i - return last - - def after(self, dt, inc=False): - """ Returns the first recurrence after the given datetime instance. The - inc keyword defines what happens if dt is an occurrence. With - inc=True, if dt itself is an occurrence, it will be returned. """ - if self._cache_complete: - gen = self._cache - else: - gen = self - if inc: - for i in gen: - if i >= dt: - return i - else: - for i in gen: - if i > dt: - return i - return None - - def xafter(self, dt, count=None, inc=False): - """ - Generator which yields up to `count` recurrences after the given - datetime instance, equivalent to `after`. - - :param dt: - The datetime at which to start generating recurrences. - - :param count: - The maximum number of recurrences to generate. If `None` (default), - dates are generated until the recurrence rule is exhausted. - - :param inc: - If `dt` is an instance of the rule and `inc` is `True`, it is - included in the output. - - :yields: Yields a sequence of `datetime` objects. - """ - - if self._cache_complete: - gen = self._cache - else: - gen = self - - # Select the comparison function - if inc: - comp = lambda dc, dtc: dc >= dtc - else: - comp = lambda dc, dtc: dc > dtc - - # Generate dates - n = 0 - for d in gen: - if comp(d, dt): - if count is not None: - n += 1 - if n > count: - break - - yield d - - def between(self, after, before, inc=False, count=1): - """ Returns all the occurrences of the rrule between after and before. - The inc keyword defines what happens if after and/or before are - themselves occurrences. With inc=True, they will be included in the - list, if they are found in the recurrence set. """ - if self._cache_complete: - gen = self._cache - else: - gen = self - started = False - l = [] - if inc: - for i in gen: - if i > before: - break - elif not started: - if i >= after: - started = True - l.append(i) - else: - l.append(i) - else: - for i in gen: - if i >= before: - break - elif not started: - if i > after: - started = True - l.append(i) - else: - l.append(i) - return l - - -class rrule(rrulebase): - """ - That's the base of the rrule operation. It accepts all the keywords - defined in the RFC as its constructor parameters (except byday, - which was renamed to byweekday) and more. The constructor prototype is:: - - rrule(freq) - - Where freq must be one of YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY, - or SECONDLY. - - .. note:: - Per RFC section 3.3.10, recurrence instances falling on invalid dates - and times are ignored rather than coerced: - - Recurrence rules may generate recurrence instances with an invalid - date (e.g., February 30) or nonexistent local time (e.g., 1:30 AM - on a day where the local time is moved forward by an hour at 1:00 - AM). Such recurrence instances MUST be ignored and MUST NOT be - counted as part of the recurrence set. - - This can lead to possibly surprising behavior when, for example, the - start date occurs at the end of the month: - - >>> from dateutil.rrule import rrule, MONTHLY - >>> from datetime import datetime - >>> start_date = datetime(2014, 12, 31) - >>> list(rrule(freq=MONTHLY, count=4, dtstart=start_date)) - ... # doctest: +NORMALIZE_WHITESPACE - [datetime.datetime(2014, 12, 31, 0, 0), - datetime.datetime(2015, 1, 31, 0, 0), - datetime.datetime(2015, 3, 31, 0, 0), - datetime.datetime(2015, 5, 31, 0, 0)] - - Additionally, it supports the following keyword arguments: - - :param cache: - If given, it must be a boolean value specifying to enable or disable - caching of results. If you will use the same rrule instance multiple - times, enabling caching will improve the performance considerably. - :param dtstart: - The recurrence start. Besides being the base for the recurrence, - missing parameters in the final recurrence instances will also be - extracted from this date. If not given, datetime.now() will be used - instead. - :param interval: - The interval between each freq iteration. For example, when using - YEARLY, an interval of 2 means once every two years, but with HOURLY, - it means once every two hours. The default interval is 1. - :param wkst: - The week start day. Must be one of the MO, TU, WE constants, or an - integer, specifying the first day of the week. This will affect - recurrences based on weekly periods. The default week start is got - from calendar.firstweekday(), and may be modified by - calendar.setfirstweekday(). - :param count: - How many occurrences will be generated. - - .. note:: - As of version 2.5.0, the use of the ``until`` keyword together - with the ``count`` keyword is deprecated per RFC-2445 Sec. 4.3.10. - :param until: - If given, this must be a datetime instance, that will specify the - limit of the recurrence. The last recurrence in the rule is the greatest - datetime that is less than or equal to the value specified in the - ``until`` parameter. - - .. note:: - As of version 2.5.0, the use of the ``until`` keyword together - with the ``count`` keyword is deprecated per RFC-2445 Sec. 4.3.10. - :param bysetpos: - If given, it must be either an integer, or a sequence of integers, - positive or negative. Each given integer will specify an occurrence - number, corresponding to the nth occurrence of the rule inside the - frequency period. For example, a bysetpos of -1 if combined with a - MONTHLY frequency, and a byweekday of (MO, TU, WE, TH, FR), will - result in the last work day of every month. - :param bymonth: - If given, it must be either an integer, or a sequence of integers, - meaning the months to apply the recurrence to. - :param bymonthday: - If given, it must be either an integer, or a sequence of integers, - meaning the month days to apply the recurrence to. - :param byyearday: - If given, it must be either an integer, or a sequence of integers, - meaning the year days to apply the recurrence to. - :param byweekno: - If given, it must be either an integer, or a sequence of integers, - meaning the week numbers to apply the recurrence to. Week numbers - have the meaning described in ISO8601, that is, the first week of - the year is that containing at least four days of the new year. - :param byweekday: - If given, it must be either an integer (0 == MO), a sequence of - integers, one of the weekday constants (MO, TU, etc), or a sequence - of these constants. When given, these variables will define the - weekdays where the recurrence will be applied. It's also possible to - use an argument n for the weekday instances, which will mean the nth - occurrence of this weekday in the period. For example, with MONTHLY, - or with YEARLY and BYMONTH, using FR(+1) in byweekday will specify the - first friday of the month where the recurrence happens. Notice that in - the RFC documentation, this is specified as BYDAY, but was renamed to - avoid the ambiguity of that keyword. - :param byhour: - If given, it must be either an integer, or a sequence of integers, - meaning the hours to apply the recurrence to. - :param byminute: - If given, it must be either an integer, or a sequence of integers, - meaning the minutes to apply the recurrence to. - :param bysecond: - If given, it must be either an integer, or a sequence of integers, - meaning the seconds to apply the recurrence to. - :param byeaster: - If given, it must be either an integer, or a sequence of integers, - positive or negative. Each integer will define an offset from the - Easter Sunday. Passing the offset 0 to byeaster will yield the Easter - Sunday itself. This is an extension to the RFC specification. - """ - def __init__(self, freq, dtstart=None, - interval=1, wkst=None, count=None, until=None, bysetpos=None, - bymonth=None, bymonthday=None, byyearday=None, byeaster=None, - byweekno=None, byweekday=None, - byhour=None, byminute=None, bysecond=None, - cache=False): - super(rrule, self).__init__(cache) - global easter - if not dtstart: - dtstart = datetime.datetime.now().replace(microsecond=0) - elif not isinstance(dtstart, datetime.datetime): - dtstart = datetime.datetime.fromordinal(dtstart.toordinal()) - else: - dtstart = dtstart.replace(microsecond=0) - self._dtstart = dtstart - self._tzinfo = dtstart.tzinfo - self._freq = freq - self._interval = interval - self._count = count - - # Cache the original byxxx rules, if they are provided, as the _byxxx - # attributes do not necessarily map to the inputs, and this can be - # a problem in generating the strings. Only store things if they've - # been supplied (the string retrieval will just use .get()) - self._original_rule = {} - - if until and not isinstance(until, datetime.datetime): - until = datetime.datetime.fromordinal(until.toordinal()) - self._until = until - - if count is not None and until: - warn("Using both 'count' and 'until' is inconsistent with RFC 2445" - " and has been deprecated in dateutil. Future versions will " - "raise an error.", DeprecationWarning) - - if wkst is None: - self._wkst = calendar.firstweekday() - elif isinstance(wkst, integer_types): - self._wkst = wkst - else: - self._wkst = wkst.weekday - - if bysetpos is None: - self._bysetpos = None - elif isinstance(bysetpos, integer_types): - if bysetpos == 0 or not (-366 <= bysetpos <= 366): - raise ValueError("bysetpos must be between 1 and 366, " - "or between -366 and -1") - self._bysetpos = (bysetpos,) - else: - self._bysetpos = tuple(bysetpos) - for pos in self._bysetpos: - if pos == 0 or not (-366 <= pos <= 366): - raise ValueError("bysetpos must be between 1 and 366, " - "or between -366 and -1") - - if self._bysetpos: - self._original_rule['bysetpos'] = self._bysetpos - - if (byweekno is None and byyearday is None and bymonthday is None and - byweekday is None and byeaster is None): - if freq == YEARLY: - if bymonth is None: - bymonth = dtstart.month - self._original_rule['bymonth'] = None - bymonthday = dtstart.day - self._original_rule['bymonthday'] = None - elif freq == MONTHLY: - bymonthday = dtstart.day - self._original_rule['bymonthday'] = None - elif freq == WEEKLY: - byweekday = dtstart.weekday() - self._original_rule['byweekday'] = None - - # bymonth - if bymonth is None: - self._bymonth = None - else: - if isinstance(bymonth, integer_types): - bymonth = (bymonth,) - - self._bymonth = tuple(sorted(set(bymonth))) - - if 'bymonth' not in self._original_rule: - self._original_rule['bymonth'] = self._bymonth - - # byyearday - if byyearday is None: - self._byyearday = None - else: - if isinstance(byyearday, integer_types): - byyearday = (byyearday,) - - self._byyearday = tuple(sorted(set(byyearday))) - self._original_rule['byyearday'] = self._byyearday - - # byeaster - if byeaster is not None: - if not easter: - from dateutil import easter - if isinstance(byeaster, integer_types): - self._byeaster = (byeaster,) - else: - self._byeaster = tuple(sorted(byeaster)) - - self._original_rule['byeaster'] = self._byeaster - else: - self._byeaster = None - - # bymonthday - if bymonthday is None: - self._bymonthday = () - self._bynmonthday = () - else: - if isinstance(bymonthday, integer_types): - bymonthday = (bymonthday,) - - bymonthday = set(bymonthday) # Ensure it's unique - - self._bymonthday = tuple(sorted(x for x in bymonthday if x > 0)) - self._bynmonthday = tuple(sorted(x for x in bymonthday if x < 0)) - - # Storing positive numbers first, then negative numbers - if 'bymonthday' not in self._original_rule: - self._original_rule['bymonthday'] = tuple( - itertools.chain(self._bymonthday, self._bynmonthday)) - - # byweekno - if byweekno is None: - self._byweekno = None - else: - if isinstance(byweekno, integer_types): - byweekno = (byweekno,) - - self._byweekno = tuple(sorted(set(byweekno))) - - self._original_rule['byweekno'] = self._byweekno - - # byweekday / bynweekday - if byweekday is None: - self._byweekday = None - self._bynweekday = None - else: - # If it's one of the valid non-sequence types, convert to a - # single-element sequence before the iterator that builds the - # byweekday set. - if isinstance(byweekday, integer_types) or hasattr(byweekday, "n"): - byweekday = (byweekday,) - - self._byweekday = set() - self._bynweekday = set() - for wday in byweekday: - if isinstance(wday, integer_types): - self._byweekday.add(wday) - elif not wday.n or freq > MONTHLY: - self._byweekday.add(wday.weekday) - else: - self._bynweekday.add((wday.weekday, wday.n)) - - if not self._byweekday: - self._byweekday = None - elif not self._bynweekday: - self._bynweekday = None - - if self._byweekday is not None: - self._byweekday = tuple(sorted(self._byweekday)) - orig_byweekday = [weekday(x) for x in self._byweekday] - else: - orig_byweekday = tuple() - - if self._bynweekday is not None: - self._bynweekday = tuple(sorted(self._bynweekday)) - orig_bynweekday = [weekday(*x) for x in self._bynweekday] - else: - orig_bynweekday = tuple() - - if 'byweekday' not in self._original_rule: - self._original_rule['byweekday'] = tuple(itertools.chain( - orig_byweekday, orig_bynweekday)) - - # byhour - if byhour is None: - if freq < HOURLY: - self._byhour = set((dtstart.hour,)) - else: - self._byhour = None - else: - if isinstance(byhour, integer_types): - byhour = (byhour,) - - if freq == HOURLY: - self._byhour = self.__construct_byset(start=dtstart.hour, - byxxx=byhour, - base=24) - else: - self._byhour = set(byhour) - - self._byhour = tuple(sorted(self._byhour)) - self._original_rule['byhour'] = self._byhour - - # byminute - if byminute is None: - if freq < MINUTELY: - self._byminute = set((dtstart.minute,)) - else: - self._byminute = None - else: - if isinstance(byminute, integer_types): - byminute = (byminute,) - - if freq == MINUTELY: - self._byminute = self.__construct_byset(start=dtstart.minute, - byxxx=byminute, - base=60) - else: - self._byminute = set(byminute) - - self._byminute = tuple(sorted(self._byminute)) - self._original_rule['byminute'] = self._byminute - - # bysecond - if bysecond is None: - if freq < SECONDLY: - self._bysecond = ((dtstart.second,)) - else: - self._bysecond = None - else: - if isinstance(bysecond, integer_types): - bysecond = (bysecond,) - - self._bysecond = set(bysecond) - - if freq == SECONDLY: - self._bysecond = self.__construct_byset(start=dtstart.second, - byxxx=bysecond, - base=60) - else: - self._bysecond = set(bysecond) - - self._bysecond = tuple(sorted(self._bysecond)) - self._original_rule['bysecond'] = self._bysecond - - if self._freq >= HOURLY: - self._timeset = None - else: - self._timeset = [] - for hour in self._byhour: - for minute in self._byminute: - for second in self._bysecond: - self._timeset.append( - datetime.time(hour, minute, second, - tzinfo=self._tzinfo)) - self._timeset.sort() - self._timeset = tuple(self._timeset) - - def __str__(self): - """ - Output a string that would generate this RRULE if passed to rrulestr. - This is mostly compatible with RFC2445, except for the - dateutil-specific extension BYEASTER. - """ - - output = [] - h, m, s = [None] * 3 - if self._dtstart: - output.append(self._dtstart.strftime('DTSTART:%Y%m%dT%H%M%S')) - h, m, s = self._dtstart.timetuple()[3:6] - - parts = ['FREQ=' + FREQNAMES[self._freq]] - if self._interval != 1: - parts.append('INTERVAL=' + str(self._interval)) - - if self._wkst: - parts.append('WKST=' + repr(weekday(self._wkst))[0:2]) - - if self._count is not None: - parts.append('COUNT=' + str(self._count)) - - if self._until: - parts.append(self._until.strftime('UNTIL=%Y%m%dT%H%M%S')) - - if self._original_rule.get('byweekday') is not None: - # The str() method on weekday objects doesn't generate - # RFC2445-compliant strings, so we should modify that. - original_rule = dict(self._original_rule) - wday_strings = [] - for wday in original_rule['byweekday']: - if wday.n: - wday_strings.append('{n:+d}{wday}'.format( - n=wday.n, - wday=repr(wday)[0:2])) - else: - wday_strings.append(repr(wday)) - - original_rule['byweekday'] = wday_strings - else: - original_rule = self._original_rule - - partfmt = '{name}={vals}' - for name, key in [('BYSETPOS', 'bysetpos'), - ('BYMONTH', 'bymonth'), - ('BYMONTHDAY', 'bymonthday'), - ('BYYEARDAY', 'byyearday'), - ('BYWEEKNO', 'byweekno'), - ('BYDAY', 'byweekday'), - ('BYHOUR', 'byhour'), - ('BYMINUTE', 'byminute'), - ('BYSECOND', 'bysecond'), - ('BYEASTER', 'byeaster')]: - value = original_rule.get(key) - if value: - parts.append(partfmt.format(name=name, vals=(','.join(str(v) - for v in value)))) - - output.append(';'.join(parts)) - return '\n'.join(output) - - def replace(self, **kwargs): - """Return new rrule with same attributes except for those attributes given new - values by whichever keyword arguments are specified.""" - new_kwargs = {"interval": self._interval, - "count": self._count, - "dtstart": self._dtstart, - "freq": self._freq, - "until": self._until, - "wkst": self._wkst, - "cache": False if self._cache is None else True } - new_kwargs.update(self._original_rule) - new_kwargs.update(kwargs) - return rrule(**new_kwargs) - - def _iter(self): - year, month, day, hour, minute, second, weekday, yearday, _ = \ - self._dtstart.timetuple() - - # Some local variables to speed things up a bit - freq = self._freq - interval = self._interval - wkst = self._wkst - until = self._until - bymonth = self._bymonth - byweekno = self._byweekno - byyearday = self._byyearday - byweekday = self._byweekday - byeaster = self._byeaster - bymonthday = self._bymonthday - bynmonthday = self._bynmonthday - bysetpos = self._bysetpos - byhour = self._byhour - byminute = self._byminute - bysecond = self._bysecond - - ii = _iterinfo(self) - ii.rebuild(year, month) - - getdayset = {YEARLY: ii.ydayset, - MONTHLY: ii.mdayset, - WEEKLY: ii.wdayset, - DAILY: ii.ddayset, - HOURLY: ii.ddayset, - MINUTELY: ii.ddayset, - SECONDLY: ii.ddayset}[freq] - - if freq < HOURLY: - timeset = self._timeset - else: - gettimeset = {HOURLY: ii.htimeset, - MINUTELY: ii.mtimeset, - SECONDLY: ii.stimeset}[freq] - if ((freq >= HOURLY and - self._byhour and hour not in self._byhour) or - (freq >= MINUTELY and - self._byminute and minute not in self._byminute) or - (freq >= SECONDLY and - self._bysecond and second not in self._bysecond)): - timeset = () - else: - timeset = gettimeset(hour, minute, second) - - total = 0 - count = self._count - while True: - # Get dayset with the right frequency - dayset, start, end = getdayset(year, month, day) - - # Do the "hard" work ;-) - filtered = False - for i in dayset[start:end]: - if ((bymonth and ii.mmask[i] not in bymonth) or - (byweekno and not ii.wnomask[i]) or - (byweekday and ii.wdaymask[i] not in byweekday) or - (ii.nwdaymask and not ii.nwdaymask[i]) or - (byeaster and not ii.eastermask[i]) or - ((bymonthday or bynmonthday) and - ii.mdaymask[i] not in bymonthday and - ii.nmdaymask[i] not in bynmonthday) or - (byyearday and - ((i < ii.yearlen and i+1 not in byyearday and - -ii.yearlen+i not in byyearday) or - (i >= ii.yearlen and i+1-ii.yearlen not in byyearday and - -ii.nextyearlen+i-ii.yearlen not in byyearday)))): - dayset[i] = None - filtered = True - - # Output results - if bysetpos and timeset: - poslist = [] - for pos in bysetpos: - if pos < 0: - daypos, timepos = divmod(pos, len(timeset)) - else: - daypos, timepos = divmod(pos-1, len(timeset)) - try: - i = [x for x in dayset[start:end] - if x is not None][daypos] - time = timeset[timepos] - except IndexError: - pass - else: - date = datetime.date.fromordinal(ii.yearordinal+i) - res = datetime.datetime.combine(date, time) - if res not in poslist: - poslist.append(res) - poslist.sort() - for res in poslist: - if until and res > until: - self._len = total - return - elif res >= self._dtstart: - if count is not None: - count -= 1 - if count < 0: - self._len = total - return - total += 1 - yield res - else: - for i in dayset[start:end]: - if i is not None: - date = datetime.date.fromordinal(ii.yearordinal + i) - for time in timeset: - res = datetime.datetime.combine(date, time) - if until and res > until: - self._len = total - return - elif res >= self._dtstart: - if count is not None: - count -= 1 - if count < 0: - self._len = total - return - - total += 1 - yield res - - # Handle frequency and interval - fixday = False - if freq == YEARLY: - year += interval - if year > datetime.MAXYEAR: - self._len = total - return - ii.rebuild(year, month) - elif freq == MONTHLY: - month += interval - if month > 12: - div, mod = divmod(month, 12) - month = mod - year += div - if month == 0: - month = 12 - year -= 1 - if year > datetime.MAXYEAR: - self._len = total - return - ii.rebuild(year, month) - elif freq == WEEKLY: - if wkst > weekday: - day += -(weekday+1+(6-wkst))+self._interval*7 - else: - day += -(weekday-wkst)+self._interval*7 - weekday = wkst - fixday = True - elif freq == DAILY: - day += interval - fixday = True - elif freq == HOURLY: - if filtered: - # Jump to one iteration before next day - hour += ((23-hour)//interval)*interval - - if byhour: - ndays, hour = self.__mod_distance(value=hour, - byxxx=self._byhour, - base=24) - else: - ndays, hour = divmod(hour+interval, 24) - - if ndays: - day += ndays - fixday = True - - timeset = gettimeset(hour, minute, second) - elif freq == MINUTELY: - if filtered: - # Jump to one iteration before next day - minute += ((1439-(hour*60+minute))//interval)*interval - - valid = False - rep_rate = (24*60) - for j in range(rep_rate // gcd(interval, rep_rate)): - if byminute: - nhours, minute = \ - self.__mod_distance(value=minute, - byxxx=self._byminute, - base=60) - else: - nhours, minute = divmod(minute+interval, 60) - - div, hour = divmod(hour+nhours, 24) - if div: - day += div - fixday = True - filtered = False - - if not byhour or hour in byhour: - valid = True - break - - if not valid: - raise ValueError('Invalid combination of interval and ' + - 'byhour resulting in empty rule.') - - timeset = gettimeset(hour, minute, second) - elif freq == SECONDLY: - if filtered: - # Jump to one iteration before next day - second += (((86399 - (hour * 3600 + minute * 60 + second)) - // interval) * interval) - - rep_rate = (24 * 3600) - valid = False - for j in range(0, rep_rate // gcd(interval, rep_rate)): - if bysecond: - nminutes, second = \ - self.__mod_distance(value=second, - byxxx=self._bysecond, - base=60) - else: - nminutes, second = divmod(second+interval, 60) - - div, minute = divmod(minute+nminutes, 60) - if div: - hour += div - div, hour = divmod(hour, 24) - if div: - day += div - fixday = True - - if ((not byhour or hour in byhour) and - (not byminute or minute in byminute) and - (not bysecond or second in bysecond)): - valid = True - break - - if not valid: - raise ValueError('Invalid combination of interval, ' + - 'byhour and byminute resulting in empty' + - ' rule.') - - timeset = gettimeset(hour, minute, second) - - if fixday and day > 28: - daysinmonth = calendar.monthrange(year, month)[1] - if day > daysinmonth: - while day > daysinmonth: - day -= daysinmonth - month += 1 - if month == 13: - month = 1 - year += 1 - if year > datetime.MAXYEAR: - self._len = total - return - daysinmonth = calendar.monthrange(year, month)[1] - ii.rebuild(year, month) - - def __construct_byset(self, start, byxxx, base): - """ - If a `BYXXX` sequence is passed to the constructor at the same level as - `FREQ` (e.g. `FREQ=HOURLY,BYHOUR={2,4,7},INTERVAL=3`), there are some - specifications which cannot be reached given some starting conditions. - - This occurs whenever the interval is not coprime with the base of a - given unit and the difference between the starting position and the - ending position is not coprime with the greatest common denominator - between the interval and the base. For example, with a FREQ of hourly - starting at 17:00 and an interval of 4, the only valid values for - BYHOUR would be {21, 1, 5, 9, 13, 17}, because 4 and 24 are not - coprime. - - :param start: - Specifies the starting position. - :param byxxx: - An iterable containing the list of allowed values. - :param base: - The largest allowable value for the specified frequency (e.g. - 24 hours, 60 minutes). - - This does not preserve the type of the iterable, returning a set, since - the values should be unique and the order is irrelevant, this will - speed up later lookups. - - In the event of an empty set, raises a :exception:`ValueError`, as this - results in an empty rrule. - """ - - cset = set() - - # Support a single byxxx value. - if isinstance(byxxx, integer_types): - byxxx = (byxxx, ) - - for num in byxxx: - i_gcd = gcd(self._interval, base) - # Use divmod rather than % because we need to wrap negative nums. - if i_gcd == 1 or divmod(num - start, i_gcd)[1] == 0: - cset.add(num) - - if len(cset) == 0: - raise ValueError("Invalid rrule byxxx generates an empty set.") - - return cset - - def __mod_distance(self, value, byxxx, base): - """ - Calculates the next value in a sequence where the `FREQ` parameter is - specified along with a `BYXXX` parameter at the same "level" - (e.g. `HOURLY` specified with `BYHOUR`). - - :param value: - The old value of the component. - :param byxxx: - The `BYXXX` set, which should have been generated by - `rrule._construct_byset`, or something else which checks that a - valid rule is present. - :param base: - The largest allowable value for the specified frequency (e.g. - 24 hours, 60 minutes). - - If a valid value is not found after `base` iterations (the maximum - number before the sequence would start to repeat), this raises a - :exception:`ValueError`, as no valid values were found. - - This returns a tuple of `divmod(n*interval, base)`, where `n` is the - smallest number of `interval` repetitions until the next specified - value in `byxxx` is found. - """ - accumulator = 0 - for ii in range(1, base + 1): - # Using divmod() over % to account for negative intervals - div, value = divmod(value + self._interval, base) - accumulator += div - if value in byxxx: - return (accumulator, value) - - -class _iterinfo(object): - __slots__ = ["rrule", "lastyear", "lastmonth", - "yearlen", "nextyearlen", "yearordinal", "yearweekday", - "mmask", "mrange", "mdaymask", "nmdaymask", - "wdaymask", "wnomask", "nwdaymask", "eastermask"] - - def __init__(self, rrule): - for attr in self.__slots__: - setattr(self, attr, None) - self.rrule = rrule - - def rebuild(self, year, month): - # Every mask is 7 days longer to handle cross-year weekly periods. - rr = self.rrule - if year != self.lastyear: - self.yearlen = 365 + calendar.isleap(year) - self.nextyearlen = 365 + calendar.isleap(year + 1) - firstyday = datetime.date(year, 1, 1) - self.yearordinal = firstyday.toordinal() - self.yearweekday = firstyday.weekday() - - wday = datetime.date(year, 1, 1).weekday() - if self.yearlen == 365: - self.mmask = M365MASK - self.mdaymask = MDAY365MASK - self.nmdaymask = NMDAY365MASK - self.wdaymask = WDAYMASK[wday:] - self.mrange = M365RANGE - else: - self.mmask = M366MASK - self.mdaymask = MDAY366MASK - self.nmdaymask = NMDAY366MASK - self.wdaymask = WDAYMASK[wday:] - self.mrange = M366RANGE - - if not rr._byweekno: - self.wnomask = None - else: - self.wnomask = [0]*(self.yearlen+7) - # no1wkst = firstwkst = self.wdaymask.index(rr._wkst) - no1wkst = firstwkst = (7-self.yearweekday+rr._wkst) % 7 - if no1wkst >= 4: - no1wkst = 0 - # Number of days in the year, plus the days we got - # from last year. - wyearlen = self.yearlen+(self.yearweekday-rr._wkst) % 7 - else: - # Number of days in the year, minus the days we - # left in last year. - wyearlen = self.yearlen-no1wkst - div, mod = divmod(wyearlen, 7) - numweeks = div+mod//4 - for n in rr._byweekno: - if n < 0: - n += numweeks+1 - if not (0 < n <= numweeks): - continue - if n > 1: - i = no1wkst+(n-1)*7 - if no1wkst != firstwkst: - i -= 7-firstwkst - else: - i = no1wkst - for j in range(7): - self.wnomask[i] = 1 - i += 1 - if self.wdaymask[i] == rr._wkst: - break - if 1 in rr._byweekno: - # Check week number 1 of next year as well - # TODO: Check -numweeks for next year. - i = no1wkst+numweeks*7 - if no1wkst != firstwkst: - i -= 7-firstwkst - if i < self.yearlen: - # If week starts in next year, we - # don't care about it. - for j in range(7): - self.wnomask[i] = 1 - i += 1 - if self.wdaymask[i] == rr._wkst: - break - if no1wkst: - # Check last week number of last year as - # well. If no1wkst is 0, either the year - # started on week start, or week number 1 - # got days from last year, so there are no - # days from last year's last week number in - # this year. - if -1 not in rr._byweekno: - lyearweekday = datetime.date(year-1, 1, 1).weekday() - lno1wkst = (7-lyearweekday+rr._wkst) % 7 - lyearlen = 365+calendar.isleap(year-1) - if lno1wkst >= 4: - lno1wkst = 0 - lnumweeks = 52+(lyearlen + - (lyearweekday-rr._wkst) % 7) % 7//4 - else: - lnumweeks = 52+(self.yearlen-no1wkst) % 7//4 - else: - lnumweeks = -1 - if lnumweeks in rr._byweekno: - for i in range(no1wkst): - self.wnomask[i] = 1 - - if (rr._bynweekday and (month != self.lastmonth or - year != self.lastyear)): - ranges = [] - if rr._freq == YEARLY: - if rr._bymonth: - for month in rr._bymonth: - ranges.append(self.mrange[month-1:month+1]) - else: - ranges = [(0, self.yearlen)] - elif rr._freq == MONTHLY: - ranges = [self.mrange[month-1:month+1]] - if ranges: - # Weekly frequency won't get here, so we may not - # care about cross-year weekly periods. - self.nwdaymask = [0]*self.yearlen - for first, last in ranges: - last -= 1 - for wday, n in rr._bynweekday: - if n < 0: - i = last+(n+1)*7 - i -= (self.wdaymask[i]-wday) % 7 - else: - i = first+(n-1)*7 - i += (7-self.wdaymask[i]+wday) % 7 - if first <= i <= last: - self.nwdaymask[i] = 1 - - if rr._byeaster: - self.eastermask = [0]*(self.yearlen+7) - eyday = easter.easter(year).toordinal()-self.yearordinal - for offset in rr._byeaster: - self.eastermask[eyday+offset] = 1 - - self.lastyear = year - self.lastmonth = month - - def ydayset(self, year, month, day): - return list(range(self.yearlen)), 0, self.yearlen - - def mdayset(self, year, month, day): - dset = [None]*self.yearlen - start, end = self.mrange[month-1:month+1] - for i in range(start, end): - dset[i] = i - return dset, start, end - - def wdayset(self, year, month, day): - # We need to handle cross-year weeks here. - dset = [None]*(self.yearlen+7) - i = datetime.date(year, month, day).toordinal()-self.yearordinal - start = i - for j in range(7): - dset[i] = i - i += 1 - # if (not (0 <= i < self.yearlen) or - # self.wdaymask[i] == self.rrule._wkst): - # This will cross the year boundary, if necessary. - if self.wdaymask[i] == self.rrule._wkst: - break - return dset, start, i - - def ddayset(self, year, month, day): - dset = [None] * self.yearlen - i = datetime.date(year, month, day).toordinal() - self.yearordinal - dset[i] = i - return dset, i, i + 1 - - def htimeset(self, hour, minute, second): - tset = [] - rr = self.rrule - for minute in rr._byminute: - for second in rr._bysecond: - tset.append(datetime.time(hour, minute, second, - tzinfo=rr._tzinfo)) - tset.sort() - return tset - - def mtimeset(self, hour, minute, second): - tset = [] - rr = self.rrule - for second in rr._bysecond: - tset.append(datetime.time(hour, minute, second, tzinfo=rr._tzinfo)) - tset.sort() - return tset - - def stimeset(self, hour, minute, second): - return (datetime.time(hour, minute, second, - tzinfo=self.rrule._tzinfo),) - - -class rruleset(rrulebase): - """ The rruleset type allows more complex recurrence setups, mixing - multiple rules, dates, exclusion rules, and exclusion dates. The type - constructor takes the following keyword arguments: - - :param cache: If True, caching of results will be enabled, improving - performance of multiple queries considerably. """ - - class _genitem(object): - def __init__(self, genlist, gen): - try: - self.dt = advance_iterator(gen) - genlist.append(self) - except StopIteration: - pass - self.genlist = genlist - self.gen = gen - - def __next__(self): - try: - self.dt = advance_iterator(self.gen) - except StopIteration: - if self.genlist[0] is self: - heapq.heappop(self.genlist) - else: - self.genlist.remove(self) - heapq.heapify(self.genlist) - - next = __next__ - - def __lt__(self, other): - return self.dt < other.dt - - def __gt__(self, other): - return self.dt > other.dt - - def __eq__(self, other): - return self.dt == other.dt - - def __ne__(self, other): - return self.dt != other.dt - - def __init__(self, cache=False): - super(rruleset, self).__init__(cache) - self._rrule = [] - self._rdate = [] - self._exrule = [] - self._exdate = [] - - @_invalidates_cache - def rrule(self, rrule): - """ Include the given :py:class:`rrule` instance in the recurrence set - generation. """ - self._rrule.append(rrule) - - @_invalidates_cache - def rdate(self, rdate): - """ Include the given :py:class:`datetime` instance in the recurrence - set generation. """ - self._rdate.append(rdate) - - @_invalidates_cache - def exrule(self, exrule): - """ Include the given rrule instance in the recurrence set exclusion - list. Dates which are part of the given recurrence rules will not - be generated, even if some inclusive rrule or rdate matches them. - """ - self._exrule.append(exrule) - - @_invalidates_cache - def exdate(self, exdate): - """ Include the given datetime instance in the recurrence set - exclusion list. Dates included that way will not be generated, - even if some inclusive rrule or rdate matches them. """ - self._exdate.append(exdate) - - def _iter(self): - rlist = [] - self._rdate.sort() - self._genitem(rlist, iter(self._rdate)) - for gen in [iter(x) for x in self._rrule]: - self._genitem(rlist, gen) - exlist = [] - self._exdate.sort() - self._genitem(exlist, iter(self._exdate)) - for gen in [iter(x) for x in self._exrule]: - self._genitem(exlist, gen) - lastdt = None - total = 0 - heapq.heapify(rlist) - heapq.heapify(exlist) - while rlist: - ritem = rlist[0] - if not lastdt or lastdt != ritem.dt: - while exlist and exlist[0] < ritem: - exitem = exlist[0] - advance_iterator(exitem) - if exlist and exlist[0] is exitem: - heapq.heapreplace(exlist, exitem) - if not exlist or ritem != exlist[0]: - total += 1 - yield ritem.dt - lastdt = ritem.dt - advance_iterator(ritem) - if rlist and rlist[0] is ritem: - heapq.heapreplace(rlist, ritem) - self._len = total - - -class _rrulestr(object): - - _freq_map = {"YEARLY": YEARLY, - "MONTHLY": MONTHLY, - "WEEKLY": WEEKLY, - "DAILY": DAILY, - "HOURLY": HOURLY, - "MINUTELY": MINUTELY, - "SECONDLY": SECONDLY} - - _weekday_map = {"MO": 0, "TU": 1, "WE": 2, "TH": 3, - "FR": 4, "SA": 5, "SU": 6} - - def _handle_int(self, rrkwargs, name, value, **kwargs): - rrkwargs[name.lower()] = int(value) - - def _handle_int_list(self, rrkwargs, name, value, **kwargs): - rrkwargs[name.lower()] = [int(x) for x in value.split(',')] - - _handle_INTERVAL = _handle_int - _handle_COUNT = _handle_int - _handle_BYSETPOS = _handle_int_list - _handle_BYMONTH = _handle_int_list - _handle_BYMONTHDAY = _handle_int_list - _handle_BYYEARDAY = _handle_int_list - _handle_BYEASTER = _handle_int_list - _handle_BYWEEKNO = _handle_int_list - _handle_BYHOUR = _handle_int_list - _handle_BYMINUTE = _handle_int_list - _handle_BYSECOND = _handle_int_list - - def _handle_FREQ(self, rrkwargs, name, value, **kwargs): - rrkwargs["freq"] = self._freq_map[value] - - def _handle_UNTIL(self, rrkwargs, name, value, **kwargs): - global parser - if not parser: - from dateutil import parser - try: - rrkwargs["until"] = parser.parse(value, - ignoretz=kwargs.get("ignoretz"), - tzinfos=kwargs.get("tzinfos")) - except ValueError: - raise ValueError("invalid until date") - - def _handle_WKST(self, rrkwargs, name, value, **kwargs): - rrkwargs["wkst"] = self._weekday_map[value] - - def _handle_BYWEEKDAY(self, rrkwargs, name, value, **kwargs): - """ - Two ways to specify this: +1MO or MO(+1) - """ - l = [] - for wday in value.split(','): - if '(' in wday: - # If it's of the form TH(+1), etc. - splt = wday.split('(') - w = splt[0] - n = int(splt[1][:-1]) - elif len(wday): - # If it's of the form +1MO - for i in range(len(wday)): - if wday[i] not in '+-0123456789': - break - n = wday[:i] or None - w = wday[i:] - if n: - n = int(n) - else: - raise ValueError("Invalid (empty) BYDAY specification.") - - l.append(weekdays[self._weekday_map[w]](n)) - rrkwargs["byweekday"] = l - - _handle_BYDAY = _handle_BYWEEKDAY - - def _parse_rfc_rrule(self, line, - dtstart=None, - cache=False, - ignoretz=False, - tzinfos=None): - if line.find(':') != -1: - name, value = line.split(':') - if name != "RRULE": - raise ValueError("unknown parameter name") - else: - value = line - rrkwargs = {} - for pair in value.split(';'): - name, value = pair.split('=') - name = name.upper() - value = value.upper() - try: - getattr(self, "_handle_"+name)(rrkwargs, name, value, - ignoretz=ignoretz, - tzinfos=tzinfos) - except AttributeError: - raise ValueError("unknown parameter '%s'" % name) - except (KeyError, ValueError): - raise ValueError("invalid '%s': %s" % (name, value)) - return rrule(dtstart=dtstart, cache=cache, **rrkwargs) - - def _parse_rfc(self, s, - dtstart=None, - cache=False, - unfold=False, - forceset=False, - compatible=False, - ignoretz=False, - tzinfos=None): - global parser - if compatible: - forceset = True - unfold = True - s = s.upper() - if not s.strip(): - raise ValueError("empty string") - if unfold: - lines = s.splitlines() - i = 0 - while i < len(lines): - line = lines[i].rstrip() - if not line: - del lines[i] - elif i > 0 and line[0] == " ": - lines[i-1] += line[1:] - del lines[i] - else: - i += 1 - else: - lines = s.split() - if (not forceset and len(lines) == 1 and (s.find(':') == -1 or - s.startswith('RRULE:'))): - return self._parse_rfc_rrule(lines[0], cache=cache, - dtstart=dtstart, ignoretz=ignoretz, - tzinfos=tzinfos) - else: - rrulevals = [] - rdatevals = [] - exrulevals = [] - exdatevals = [] - for line in lines: - if not line: - continue - if line.find(':') == -1: - name = "RRULE" - value = line - else: - name, value = line.split(':', 1) - parms = name.split(';') - if not parms: - raise ValueError("empty property name") - name = parms[0] - parms = parms[1:] - if name == "RRULE": - for parm in parms: - raise ValueError("unsupported RRULE parm: "+parm) - rrulevals.append(value) - elif name == "RDATE": - for parm in parms: - if parm != "VALUE=DATE-TIME": - raise ValueError("unsupported RDATE parm: "+parm) - rdatevals.append(value) - elif name == "EXRULE": - for parm in parms: - raise ValueError("unsupported EXRULE parm: "+parm) - exrulevals.append(value) - elif name == "EXDATE": - for parm in parms: - if parm != "VALUE=DATE-TIME": - raise ValueError("unsupported EXDATE parm: "+parm) - exdatevals.append(value) - elif name == "DTSTART": - for parm in parms: - raise ValueError("unsupported DTSTART parm: "+parm) - if not parser: - from dateutil import parser - dtstart = parser.parse(value, ignoretz=ignoretz, - tzinfos=tzinfos) - else: - raise ValueError("unsupported property: "+name) - if (forceset or len(rrulevals) > 1 or rdatevals - or exrulevals or exdatevals): - if not parser and (rdatevals or exdatevals): - from dateutil import parser - rset = rruleset(cache=cache) - for value in rrulevals: - rset.rrule(self._parse_rfc_rrule(value, dtstart=dtstart, - ignoretz=ignoretz, - tzinfos=tzinfos)) - for value in rdatevals: - for datestr in value.split(','): - rset.rdate(parser.parse(datestr, - ignoretz=ignoretz, - tzinfos=tzinfos)) - for value in exrulevals: - rset.exrule(self._parse_rfc_rrule(value, dtstart=dtstart, - ignoretz=ignoretz, - tzinfos=tzinfos)) - for value in exdatevals: - for datestr in value.split(','): - rset.exdate(parser.parse(datestr, - ignoretz=ignoretz, - tzinfos=tzinfos)) - if compatible and dtstart: - rset.rdate(dtstart) - return rset - else: - return self._parse_rfc_rrule(rrulevals[0], - dtstart=dtstart, - cache=cache, - ignoretz=ignoretz, - tzinfos=tzinfos) - - def __call__(self, s, **kwargs): - return self._parse_rfc(s, **kwargs) - - -rrulestr = _rrulestr() - -# vim:ts=4:sw=4:et diff --git a/python/dateutil/tz/__init__.py b/python/dateutil/tz/__init__.py deleted file mode 100644 index b0a5043..0000000 --- a/python/dateutil/tz/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from .tz import * - -__all__ = ["tzutc", "tzoffset", "tzlocal", "tzfile", "tzrange", - "tzstr", "tzical", "tzwin", "tzwinlocal", "gettz", - "enfold", "datetime_ambiguous", "datetime_exists"] diff --git a/python/dateutil/tz/_common.py b/python/dateutil/tz/_common.py deleted file mode 100644 index f1cf2af..0000000 --- a/python/dateutil/tz/_common.py +++ /dev/null @@ -1,394 +0,0 @@ -from six import PY3 - -from functools import wraps - -from datetime import datetime, timedelta, tzinfo - - -ZERO = timedelta(0) - -__all__ = ['tzname_in_python2', 'enfold'] - - -def tzname_in_python2(namefunc): - """Change unicode output into bytestrings in Python 2 - - tzname() API changed in Python 3. It used to return bytes, but was changed - to unicode strings - """ - def adjust_encoding(*args, **kwargs): - name = namefunc(*args, **kwargs) - if name is not None and not PY3: - name = name.encode() - - return name - - return adjust_encoding - - -# The following is adapted from Alexander Belopolsky's tz library -# https://github.com/abalkin/tz -if hasattr(datetime, 'fold'): - # This is the pre-python 3.6 fold situation - def enfold(dt, fold=1): - """ - Provides a unified interface for assigning the ``fold`` attribute to - datetimes both before and after the implementation of PEP-495. - - :param fold: - The value for the ``fold`` attribute in the returned datetime. This - should be either 0 or 1. - - :return: - Returns an object for which ``getattr(dt, 'fold', 0)`` returns - ``fold`` for all versions of Python. In versions prior to - Python 3.6, this is a ``_DatetimeWithFold`` object, which is a - subclass of :py:class:`datetime.datetime` with the ``fold`` - attribute added, if ``fold`` is 1. - - .. versionadded:: 2.6.0 - """ - return dt.replace(fold=fold) - -else: - class _DatetimeWithFold(datetime): - """ - This is a class designed to provide a PEP 495-compliant interface for - Python versions before 3.6. It is used only for dates in a fold, so - the ``fold`` attribute is fixed at ``1``. - - .. versionadded:: 2.6.0 - """ - __slots__ = () - - @property - def fold(self): - return 1 - - def enfold(dt, fold=1): - """ - Provides a unified interface for assigning the ``fold`` attribute to - datetimes both before and after the implementation of PEP-495. - - :param fold: - The value for the ``fold`` attribute in the returned datetime. This - should be either 0 or 1. - - :return: - Returns an object for which ``getattr(dt, 'fold', 0)`` returns - ``fold`` for all versions of Python. In versions prior to - Python 3.6, this is a ``_DatetimeWithFold`` object, which is a - subclass of :py:class:`datetime.datetime` with the ``fold`` - attribute added, if ``fold`` is 1. - - .. versionadded:: 2.6.0 - """ - if getattr(dt, 'fold', 0) == fold: - return dt - - args = dt.timetuple()[:6] - args += (dt.microsecond, dt.tzinfo) - - if fold: - return _DatetimeWithFold(*args) - else: - return datetime(*args) - - -def _validate_fromutc_inputs(f): - """ - The CPython version of ``fromutc`` checks that the input is a ``datetime`` - object and that ``self`` is attached as its ``tzinfo``. - """ - @wraps(f) - def fromutc(self, dt): - if not isinstance(dt, datetime): - raise TypeError("fromutc() requires a datetime argument") - if dt.tzinfo is not self: - raise ValueError("dt.tzinfo is not self") - - return f(self, dt) - - return fromutc - - -class _tzinfo(tzinfo): - """ - Base class for all ``dateutil`` ``tzinfo`` objects. - """ - - def is_ambiguous(self, dt): - """ - Whether or not the "wall time" of a given datetime is ambiguous in this - zone. - - :param dt: - A :py:class:`datetime.datetime`, naive or time zone aware. - - - :return: - Returns ``True`` if ambiguous, ``False`` otherwise. - - .. versionadded:: 2.6.0 - """ - - dt = dt.replace(tzinfo=self) - - wall_0 = enfold(dt, fold=0) - wall_1 = enfold(dt, fold=1) - - same_offset = wall_0.utcoffset() == wall_1.utcoffset() - same_dt = wall_0.replace(tzinfo=None) == wall_1.replace(tzinfo=None) - - return same_dt and not same_offset - - def _fold_status(self, dt_utc, dt_wall): - """ - Determine the fold status of a "wall" datetime, given a representation - of the same datetime as a (naive) UTC datetime. This is calculated based - on the assumption that ``dt.utcoffset() - dt.dst()`` is constant for all - datetimes, and that this offset is the actual number of hours separating - ``dt_utc`` and ``dt_wall``. - - :param dt_utc: - Representation of the datetime as UTC - - :param dt_wall: - Representation of the datetime as "wall time". This parameter must - either have a `fold` attribute or have a fold-naive - :class:`datetime.tzinfo` attached, otherwise the calculation may - fail. - """ - if self.is_ambiguous(dt_wall): - delta_wall = dt_wall - dt_utc - _fold = int(delta_wall == (dt_utc.utcoffset() - dt_utc.dst())) - else: - _fold = 0 - - return _fold - - def _fold(self, dt): - return getattr(dt, 'fold', 0) - - def _fromutc(self, dt): - """ - Given a timezone-aware datetime in a given timezone, calculates a - timezone-aware datetime in a new timezone. - - Since this is the one time that we *know* we have an unambiguous - datetime object, we take this opportunity to determine whether the - datetime is ambiguous and in a "fold" state (e.g. if it's the first - occurence, chronologically, of the ambiguous datetime). - - :param dt: - A timezone-aware :class:`datetime.datetime` object. - """ - - # Re-implement the algorithm from Python's datetime.py - dtoff = dt.utcoffset() - if dtoff is None: - raise ValueError("fromutc() requires a non-None utcoffset() " - "result") - - # The original datetime.py code assumes that `dst()` defaults to - # zero during ambiguous times. PEP 495 inverts this presumption, so - # for pre-PEP 495 versions of python, we need to tweak the algorithm. - dtdst = dt.dst() - if dtdst is None: - raise ValueError("fromutc() requires a non-None dst() result") - delta = dtoff - dtdst - - dt += delta - # Set fold=1 so we can default to being in the fold for - # ambiguous dates. - dtdst = enfold(dt, fold=1).dst() - if dtdst is None: - raise ValueError("fromutc(): dt.dst gave inconsistent " - "results; cannot convert") - return dt + dtdst - - @_validate_fromutc_inputs - def fromutc(self, dt): - """ - Given a timezone-aware datetime in a given timezone, calculates a - timezone-aware datetime in a new timezone. - - Since this is the one time that we *know* we have an unambiguous - datetime object, we take this opportunity to determine whether the - datetime is ambiguous and in a "fold" state (e.g. if it's the first - occurance, chronologically, of the ambiguous datetime). - - :param dt: - A timezone-aware :class:`datetime.datetime` object. - """ - dt_wall = self._fromutc(dt) - - # Calculate the fold status given the two datetimes. - _fold = self._fold_status(dt, dt_wall) - - # Set the default fold value for ambiguous dates - return enfold(dt_wall, fold=_fold) - - -class tzrangebase(_tzinfo): - """ - This is an abstract base class for time zones represented by an annual - transition into and out of DST. Child classes should implement the following - methods: - - * ``__init__(self, *args, **kwargs)`` - * ``transitions(self, year)`` - this is expected to return a tuple of - datetimes representing the DST on and off transitions in standard - time. - - A fully initialized ``tzrangebase`` subclass should also provide the - following attributes: - * ``hasdst``: Boolean whether or not the zone uses DST. - * ``_dst_offset`` / ``_std_offset``: :class:`datetime.timedelta` objects - representing the respective UTC offsets. - * ``_dst_abbr`` / ``_std_abbr``: Strings representing the timezone short - abbreviations in DST and STD, respectively. - * ``_hasdst``: Whether or not the zone has DST. - - .. versionadded:: 2.6.0 - """ - def __init__(self): - raise NotImplementedError('tzrangebase is an abstract base class') - - def utcoffset(self, dt): - isdst = self._isdst(dt) - - if isdst is None: - return None - elif isdst: - return self._dst_offset - else: - return self._std_offset - - def dst(self, dt): - isdst = self._isdst(dt) - - if isdst is None: - return None - elif isdst: - return self._dst_base_offset - else: - return ZERO - - @tzname_in_python2 - def tzname(self, dt): - if self._isdst(dt): - return self._dst_abbr - else: - return self._std_abbr - - def fromutc(self, dt): - """ Given a datetime in UTC, return local time """ - if not isinstance(dt, datetime): - raise TypeError("fromutc() requires a datetime argument") - - if dt.tzinfo is not self: - raise ValueError("dt.tzinfo is not self") - - # Get transitions - if there are none, fixed offset - transitions = self.transitions(dt.year) - if transitions is None: - return dt + self.utcoffset(dt) - - # Get the transition times in UTC - dston, dstoff = transitions - - dston -= self._std_offset - dstoff -= self._std_offset - - utc_transitions = (dston, dstoff) - dt_utc = dt.replace(tzinfo=None) - - isdst = self._naive_isdst(dt_utc, utc_transitions) - - if isdst: - dt_wall = dt + self._dst_offset - else: - dt_wall = dt + self._std_offset - - _fold = int(not isdst and self.is_ambiguous(dt_wall)) - - return enfold(dt_wall, fold=_fold) - - def is_ambiguous(self, dt): - """ - Whether or not the "wall time" of a given datetime is ambiguous in this - zone. - - :param dt: - A :py:class:`datetime.datetime`, naive or time zone aware. - - - :return: - Returns ``True`` if ambiguous, ``False`` otherwise. - - .. versionadded:: 2.6.0 - """ - if not self.hasdst: - return False - - start, end = self.transitions(dt.year) - - dt = dt.replace(tzinfo=None) - return (end <= dt < end + self._dst_base_offset) - - def _isdst(self, dt): - if not self.hasdst: - return False - elif dt is None: - return None - - transitions = self.transitions(dt.year) - - if transitions is None: - return False - - dt = dt.replace(tzinfo=None) - - isdst = self._naive_isdst(dt, transitions) - - # Handle ambiguous dates - if not isdst and self.is_ambiguous(dt): - return not self._fold(dt) - else: - return isdst - - def _naive_isdst(self, dt, transitions): - dston, dstoff = transitions - - dt = dt.replace(tzinfo=None) - - if dston < dstoff: - isdst = dston <= dt < dstoff - else: - isdst = not dstoff <= dt < dston - - return isdst - - @property - def _dst_base_offset(self): - return self._dst_offset - self._std_offset - - __hash__ = None - - def __ne__(self, other): - return not (self == other) - - def __repr__(self): - return "%s(...)" % self.__class__.__name__ - - __reduce__ = object.__reduce__ - - -def _total_seconds(td): - # Python 2.6 doesn't have a total_seconds() method on timedelta objects - return ((td.seconds + td.days * 86400) * 1000000 + - td.microseconds) // 1000000 - - -_total_seconds = getattr(timedelta, 'total_seconds', _total_seconds) diff --git a/python/dateutil/tz/tz.py b/python/dateutil/tz/tz.py deleted file mode 100644 index 9468282..0000000 --- a/python/dateutil/tz/tz.py +++ /dev/null @@ -1,1511 +0,0 @@ -# -*- coding: utf-8 -*- -""" -This module offers timezone implementations subclassing the abstract -:py:`datetime.tzinfo` type. There are classes to handle tzfile format files -(usually are in :file:`/etc/localtime`, :file:`/usr/share/zoneinfo`, etc), TZ -environment string (in all known formats), given ranges (with help from -relative deltas), local machine timezone, fixed offset timezone, and UTC -timezone. -""" -import datetime -import struct -import time -import sys -import os -import bisect - -from six import string_types -from ._common import tzname_in_python2, _tzinfo, _total_seconds -from ._common import tzrangebase, enfold -from ._common import _validate_fromutc_inputs - -try: - from .win import tzwin, tzwinlocal -except ImportError: - tzwin = tzwinlocal = None - -ZERO = datetime.timedelta(0) -EPOCH = datetime.datetime.utcfromtimestamp(0) -EPOCHORDINAL = EPOCH.toordinal() - - -class tzutc(datetime.tzinfo): - """ - This is a tzinfo object that represents the UTC time zone. - """ - def utcoffset(self, dt): - return ZERO - - def dst(self, dt): - return ZERO - - @tzname_in_python2 - def tzname(self, dt): - return "UTC" - - def is_ambiguous(self, dt): - """ - Whether or not the "wall time" of a given datetime is ambiguous in this - zone. - - :param dt: - A :py:class:`datetime.datetime`, naive or time zone aware. - - - :return: - Returns ``True`` if ambiguous, ``False`` otherwise. - - .. versionadded:: 2.6.0 - """ - return False - - @_validate_fromutc_inputs - def fromutc(self, dt): - """ - Fast track version of fromutc() returns the original ``dt`` object for - any valid :py:class:`datetime.datetime` object. - """ - return dt - - def __eq__(self, other): - if not isinstance(other, (tzutc, tzoffset)): - return NotImplemented - - return (isinstance(other, tzutc) or - (isinstance(other, tzoffset) and other._offset == ZERO)) - - __hash__ = None - - def __ne__(self, other): - return not (self == other) - - def __repr__(self): - return "%s()" % self.__class__.__name__ - - __reduce__ = object.__reduce__ - - -class tzoffset(datetime.tzinfo): - """ - A simple class for representing a fixed offset from UTC. - - :param name: - The timezone name, to be returned when ``tzname()`` is called. - - :param offset: - The time zone offset in seconds, or (since version 2.6.0, represented - as a :py:class:`datetime.timedelta` object. - """ - def __init__(self, name, offset): - self._name = name - - try: - # Allow a timedelta - offset = _total_seconds(offset) - except (TypeError, AttributeError): - pass - self._offset = datetime.timedelta(seconds=offset) - - def utcoffset(self, dt): - return self._offset - - def dst(self, dt): - return ZERO - - @tzname_in_python2 - def tzname(self, dt): - return self._name - - @_validate_fromutc_inputs - def fromutc(self, dt): - return dt + self._offset - - def is_ambiguous(self, dt): - """ - Whether or not the "wall time" of a given datetime is ambiguous in this - zone. - - :param dt: - A :py:class:`datetime.datetime`, naive or time zone aware. - - - :return: - Returns ``True`` if ambiguous, ``False`` otherwise. - - .. versionadded:: 2.6.0 - """ - return False - - def __eq__(self, other): - if not isinstance(other, tzoffset): - return NotImplemented - - return self._offset == other._offset - - __hash__ = None - - def __ne__(self, other): - return not (self == other) - - def __repr__(self): - return "%s(%s, %s)" % (self.__class__.__name__, - repr(self._name), - int(_total_seconds(self._offset))) - - __reduce__ = object.__reduce__ - - -class tzlocal(_tzinfo): - """ - A :class:`tzinfo` subclass built around the ``time`` timezone functions. - """ - def __init__(self): - super(tzlocal, self).__init__() - - self._std_offset = datetime.timedelta(seconds=-time.timezone) - if time.daylight: - self._dst_offset = datetime.timedelta(seconds=-time.altzone) - else: - self._dst_offset = self._std_offset - - self._dst_saved = self._dst_offset - self._std_offset - self._hasdst = bool(self._dst_saved) - - def utcoffset(self, dt): - if dt is None and self._hasdst: - return None - - if self._isdst(dt): - return self._dst_offset - else: - return self._std_offset - - def dst(self, dt): - if dt is None and self._hasdst: - return None - - if self._isdst(dt): - return self._dst_offset - self._std_offset - else: - return ZERO - - @tzname_in_python2 - def tzname(self, dt): - return time.tzname[self._isdst(dt)] - - def is_ambiguous(self, dt): - """ - Whether or not the "wall time" of a given datetime is ambiguous in this - zone. - - :param dt: - A :py:class:`datetime.datetime`, naive or time zone aware. - - - :return: - Returns ``True`` if ambiguous, ``False`` otherwise. - - .. versionadded:: 2.6.0 - """ - naive_dst = self._naive_is_dst(dt) - return (not naive_dst and - (naive_dst != self._naive_is_dst(dt - self._dst_saved))) - - def _naive_is_dst(self, dt): - timestamp = _datetime_to_timestamp(dt) - return time.localtime(timestamp + time.timezone).tm_isdst - - def _isdst(self, dt, fold_naive=True): - # We can't use mktime here. It is unstable when deciding if - # the hour near to a change is DST or not. - # - # timestamp = time.mktime((dt.year, dt.month, dt.day, dt.hour, - # dt.minute, dt.second, dt.weekday(), 0, -1)) - # return time.localtime(timestamp).tm_isdst - # - # The code above yields the following result: - # - # >>> import tz, datetime - # >>> t = tz.tzlocal() - # >>> datetime.datetime(2003,2,15,23,tzinfo=t).tzname() - # 'BRDT' - # >>> datetime.datetime(2003,2,16,0,tzinfo=t).tzname() - # 'BRST' - # >>> datetime.datetime(2003,2,15,23,tzinfo=t).tzname() - # 'BRST' - # >>> datetime.datetime(2003,2,15,22,tzinfo=t).tzname() - # 'BRDT' - # >>> datetime.datetime(2003,2,15,23,tzinfo=t).tzname() - # 'BRDT' - # - # Here is a more stable implementation: - # - if not self._hasdst: - return False - - # Check for ambiguous times: - dstval = self._naive_is_dst(dt) - fold = getattr(dt, 'fold', None) - - if self.is_ambiguous(dt): - if fold is not None: - return not self._fold(dt) - else: - return True - - return dstval - - def __eq__(self, other): - if not isinstance(other, tzlocal): - return NotImplemented - - return (self._std_offset == other._std_offset and - self._dst_offset == other._dst_offset) - - __hash__ = None - - def __ne__(self, other): - return not (self == other) - - def __repr__(self): - return "%s()" % self.__class__.__name__ - - __reduce__ = object.__reduce__ - - -class _ttinfo(object): - __slots__ = ["offset", "delta", "isdst", "abbr", - "isstd", "isgmt", "dstoffset"] - - def __init__(self): - for attr in self.__slots__: - setattr(self, attr, None) - - def __repr__(self): - l = [] - for attr in self.__slots__: - value = getattr(self, attr) - if value is not None: - l.append("%s=%s" % (attr, repr(value))) - return "%s(%s)" % (self.__class__.__name__, ", ".join(l)) - - def __eq__(self, other): - if not isinstance(other, _ttinfo): - return NotImplemented - - return (self.offset == other.offset and - self.delta == other.delta and - self.isdst == other.isdst and - self.abbr == other.abbr and - self.isstd == other.isstd and - self.isgmt == other.isgmt and - self.dstoffset == other.dstoffset) - - __hash__ = None - - def __ne__(self, other): - return not (self == other) - - def __getstate__(self): - state = {} - for name in self.__slots__: - state[name] = getattr(self, name, None) - return state - - def __setstate__(self, state): - for name in self.__slots__: - if name in state: - setattr(self, name, state[name]) - - -class _tzfile(object): - """ - Lightweight class for holding the relevant transition and time zone - information read from binary tzfiles. - """ - attrs = ['trans_list', 'trans_list_utc', 'trans_idx', 'ttinfo_list', - 'ttinfo_std', 'ttinfo_dst', 'ttinfo_before', 'ttinfo_first'] - - def __init__(self, **kwargs): - for attr in self.attrs: - setattr(self, attr, kwargs.get(attr, None)) - - -class tzfile(_tzinfo): - """ - This is a ``tzinfo`` subclass thant allows one to use the ``tzfile(5)`` - format timezone files to extract current and historical zone information. - - :param fileobj: - This can be an opened file stream or a file name that the time zone - information can be read from. - - :param filename: - This is an optional parameter specifying the source of the time zone - information in the event that ``fileobj`` is a file object. If omitted - and ``fileobj`` is a file stream, this parameter will be set either to - ``fileobj``'s ``name`` attribute or to ``repr(fileobj)``. - - See `Sources for Time Zone and Daylight Saving Time Data - <http://www.twinsun.com/tz/tz-link.htm>`_ for more information. Time zone - files can be compiled from the `IANA Time Zone database files - <https://www.iana.org/time-zones>`_ with the `zic time zone compiler - <https://www.freebsd.org/cgi/man.cgi?query=zic&sektion=8>`_ - """ - - def __init__(self, fileobj, filename=None): - super(tzfile, self).__init__() - - file_opened_here = False - if isinstance(fileobj, string_types): - self._filename = fileobj - fileobj = open(fileobj, 'rb') - file_opened_here = True - elif filename is not None: - self._filename = filename - elif hasattr(fileobj, "name"): - self._filename = fileobj.name - else: - self._filename = repr(fileobj) - - if fileobj is not None: - if not file_opened_here: - fileobj = _ContextWrapper(fileobj) - - with fileobj as file_stream: - tzobj = self._read_tzfile(file_stream) - - self._set_tzdata(tzobj) - - def _set_tzdata(self, tzobj): - """ Set the time zone data of this object from a _tzfile object """ - # Copy the relevant attributes over as private attributes - for attr in _tzfile.attrs: - setattr(self, '_' + attr, getattr(tzobj, attr)) - - def _read_tzfile(self, fileobj): - out = _tzfile() - - # From tzfile(5): - # - # The time zone information files used by tzset(3) - # begin with the magic characters "TZif" to identify - # them as time zone information files, followed by - # sixteen bytes reserved for future use, followed by - # six four-byte values of type long, written in a - # ``standard'' byte order (the high-order byte - # of the value is written first). - if fileobj.read(4).decode() != "TZif": - raise ValueError("magic not found") - - fileobj.read(16) - - ( - # The number of UTC/local indicators stored in the file. - ttisgmtcnt, - - # The number of standard/wall indicators stored in the file. - ttisstdcnt, - - # The number of leap seconds for which data is - # stored in the file. - leapcnt, - - # The number of "transition times" for which data - # is stored in the file. - timecnt, - - # The number of "local time types" for which data - # is stored in the file (must not be zero). - typecnt, - - # The number of characters of "time zone - # abbreviation strings" stored in the file. - charcnt, - - ) = struct.unpack(">6l", fileobj.read(24)) - - # The above header is followed by tzh_timecnt four-byte - # values of type long, sorted in ascending order. - # These values are written in ``standard'' byte order. - # Each is used as a transition time (as returned by - # time(2)) at which the rules for computing local time - # change. - - if timecnt: - out.trans_list_utc = list(struct.unpack(">%dl" % timecnt, - fileobj.read(timecnt*4))) - else: - out.trans_list_utc = [] - - # Next come tzh_timecnt one-byte values of type unsigned - # char; each one tells which of the different types of - # ``local time'' types described in the file is associated - # with the same-indexed transition time. These values - # serve as indices into an array of ttinfo structures that - # appears next in the file. - - if timecnt: - out.trans_idx = struct.unpack(">%dB" % timecnt, - fileobj.read(timecnt)) - else: - out.trans_idx = [] - - # Each ttinfo structure is written as a four-byte value - # for tt_gmtoff of type long, in a standard byte - # order, followed by a one-byte value for tt_isdst - # and a one-byte value for tt_abbrind. In each - # structure, tt_gmtoff gives the number of - # seconds to be added to UTC, tt_isdst tells whether - # tm_isdst should be set by localtime(3), and - # tt_abbrind serves as an index into the array of - # time zone abbreviation characters that follow the - # ttinfo structure(s) in the file. - - ttinfo = [] - - for i in range(typecnt): - ttinfo.append(struct.unpack(">lbb", fileobj.read(6))) - - abbr = fileobj.read(charcnt).decode() - - # Then there are tzh_leapcnt pairs of four-byte - # values, written in standard byte order; the - # first value of each pair gives the time (as - # returned by time(2)) at which a leap second - # occurs; the second gives the total number of - # leap seconds to be applied after the given time. - # The pairs of values are sorted in ascending order - # by time. - - # Not used, for now (but seek for correct file position) - if leapcnt: - fileobj.seek(leapcnt * 8, os.SEEK_CUR) - - # Then there are tzh_ttisstdcnt standard/wall - # indicators, each stored as a one-byte value; - # they tell whether the transition times associated - # with local time types were specified as standard - # time or wall clock time, and are used when - # a time zone file is used in handling POSIX-style - # time zone environment variables. - - if ttisstdcnt: - isstd = struct.unpack(">%db" % ttisstdcnt, - fileobj.read(ttisstdcnt)) - - # Finally, there are tzh_ttisgmtcnt UTC/local - # indicators, each stored as a one-byte value; - # they tell whether the transition times associated - # with local time types were specified as UTC or - # local time, and are used when a time zone file - # is used in handling POSIX-style time zone envi- - # ronment variables. - - if ttisgmtcnt: - isgmt = struct.unpack(">%db" % ttisgmtcnt, - fileobj.read(ttisgmtcnt)) - - # Build ttinfo list - out.ttinfo_list = [] - for i in range(typecnt): - gmtoff, isdst, abbrind = ttinfo[i] - # Round to full-minutes if that's not the case. Python's - # datetime doesn't accept sub-minute timezones. Check - # http://python.org/sf/1447945 for some information. - gmtoff = 60 * ((gmtoff + 30) // 60) - tti = _ttinfo() - tti.offset = gmtoff - tti.dstoffset = datetime.timedelta(0) - tti.delta = datetime.timedelta(seconds=gmtoff) - tti.isdst = isdst - tti.abbr = abbr[abbrind:abbr.find('\x00', abbrind)] - tti.isstd = (ttisstdcnt > i and isstd[i] != 0) - tti.isgmt = (ttisgmtcnt > i and isgmt[i] != 0) - out.ttinfo_list.append(tti) - - # Replace ttinfo indexes for ttinfo objects. - out.trans_idx = [out.ttinfo_list[idx] for idx in out.trans_idx] - - # Set standard, dst, and before ttinfos. before will be - # used when a given time is before any transitions, - # and will be set to the first non-dst ttinfo, or to - # the first dst, if all of them are dst. - out.ttinfo_std = None - out.ttinfo_dst = None - out.ttinfo_before = None - if out.ttinfo_list: - if not out.trans_list_utc: - out.ttinfo_std = out.ttinfo_first = out.ttinfo_list[0] - else: - for i in range(timecnt-1, -1, -1): - tti = out.trans_idx[i] - if not out.ttinfo_std and not tti.isdst: - out.ttinfo_std = tti - elif not out.ttinfo_dst and tti.isdst: - out.ttinfo_dst = tti - - if out.ttinfo_std and out.ttinfo_dst: - break - else: - if out.ttinfo_dst and not out.ttinfo_std: - out.ttinfo_std = out.ttinfo_dst - - for tti in out.ttinfo_list: - if not tti.isdst: - out.ttinfo_before = tti - break - else: - out.ttinfo_before = out.ttinfo_list[0] - - # Now fix transition times to become relative to wall time. - # - # I'm not sure about this. In my tests, the tz source file - # is setup to wall time, and in the binary file isstd and - # isgmt are off, so it should be in wall time. OTOH, it's - # always in gmt time. Let me know if you have comments - # about this. - laststdoffset = None - out.trans_list = [] - for i, tti in enumerate(out.trans_idx): - if not tti.isdst: - offset = tti.offset - laststdoffset = offset - else: - if laststdoffset is not None: - # Store the DST offset as well and update it in the list - tti.dstoffset = tti.offset - laststdoffset - out.trans_idx[i] = tti - - offset = laststdoffset or 0 - - out.trans_list.append(out.trans_list_utc[i] + offset) - - # In case we missed any DST offsets on the way in for some reason, make - # a second pass over the list, looking for the /next/ DST offset. - laststdoffset = None - for i in reversed(range(len(out.trans_idx))): - tti = out.trans_idx[i] - if tti.isdst: - if not (tti.dstoffset or laststdoffset is None): - tti.dstoffset = tti.offset - laststdoffset - else: - laststdoffset = tti.offset - - if not isinstance(tti.dstoffset, datetime.timedelta): - tti.dstoffset = datetime.timedelta(seconds=tti.dstoffset) - - out.trans_idx[i] = tti - - out.trans_idx = tuple(out.trans_idx) - out.trans_list = tuple(out.trans_list) - out.trans_list_utc = tuple(out.trans_list_utc) - - return out - - def _find_last_transition(self, dt, in_utc=False): - # If there's no list, there are no transitions to find - if not self._trans_list: - return None - - timestamp = _datetime_to_timestamp(dt) - - # Find where the timestamp fits in the transition list - if the - # timestamp is a transition time, it's part of the "after" period. - trans_list = self._trans_list_utc if in_utc else self._trans_list - idx = bisect.bisect_right(trans_list, timestamp) - - # We want to know when the previous transition was, so subtract off 1 - return idx - 1 - - def _get_ttinfo(self, idx): - # For no list or after the last transition, default to _ttinfo_std - if idx is None or (idx + 1) >= len(self._trans_list): - return self._ttinfo_std - - # If there is a list and the time is before it, return _ttinfo_before - if idx < 0: - return self._ttinfo_before - - return self._trans_idx[idx] - - def _find_ttinfo(self, dt): - idx = self._resolve_ambiguous_time(dt) - - return self._get_ttinfo(idx) - - def fromutc(self, dt): - """ - The ``tzfile`` implementation of :py:func:`datetime.tzinfo.fromutc`. - - :param dt: - A :py:class:`datetime.datetime` object. - - :raises TypeError: - Raised if ``dt`` is not a :py:class:`datetime.datetime` object. - - :raises ValueError: - Raised if this is called with a ``dt`` which does not have this - ``tzinfo`` attached. - - :return: - Returns a :py:class:`datetime.datetime` object representing the - wall time in ``self``'s time zone. - """ - # These isinstance checks are in datetime.tzinfo, so we'll preserve - # them, even if we don't care about duck typing. - if not isinstance(dt, datetime.datetime): - raise TypeError("fromutc() requires a datetime argument") - - if dt.tzinfo is not self: - raise ValueError("dt.tzinfo is not self") - - # First treat UTC as wall time and get the transition we're in. - idx = self._find_last_transition(dt, in_utc=True) - tti = self._get_ttinfo(idx) - - dt_out = dt + datetime.timedelta(seconds=tti.offset) - - fold = self.is_ambiguous(dt_out, idx=idx) - - return enfold(dt_out, fold=int(fold)) - - def is_ambiguous(self, dt, idx=None): - """ - Whether or not the "wall time" of a given datetime is ambiguous in this - zone. - - :param dt: - A :py:class:`datetime.datetime`, naive or time zone aware. - - - :return: - Returns ``True`` if ambiguous, ``False`` otherwise. - - .. versionadded:: 2.6.0 - """ - if idx is None: - idx = self._find_last_transition(dt) - - # Calculate the difference in offsets from current to previous - timestamp = _datetime_to_timestamp(dt) - tti = self._get_ttinfo(idx) - - if idx is None or idx <= 0: - return False - - od = self._get_ttinfo(idx - 1).offset - tti.offset - tt = self._trans_list[idx] # Transition time - - return timestamp < tt + od - - def _resolve_ambiguous_time(self, dt): - idx = self._find_last_transition(dt) - - # If we have no transitions, return the index - _fold = self._fold(dt) - if idx is None or idx == 0: - return idx - - # If it's ambiguous and we're in a fold, shift to a different index. - idx_offset = int(not _fold and self.is_ambiguous(dt, idx)) - - return idx - idx_offset - - def utcoffset(self, dt): - if dt is None: - return None - - if not self._ttinfo_std: - return ZERO - - return self._find_ttinfo(dt).delta - - def dst(self, dt): - if dt is None: - return None - - if not self._ttinfo_dst: - return ZERO - - tti = self._find_ttinfo(dt) - - if not tti.isdst: - return ZERO - - # The documentation says that utcoffset()-dst() must - # be constant for every dt. - return tti.dstoffset - - @tzname_in_python2 - def tzname(self, dt): - if not self._ttinfo_std or dt is None: - return None - return self._find_ttinfo(dt).abbr - - def __eq__(self, other): - if not isinstance(other, tzfile): - return NotImplemented - return (self._trans_list == other._trans_list and - self._trans_idx == other._trans_idx and - self._ttinfo_list == other._ttinfo_list) - - __hash__ = None - - def __ne__(self, other): - return not (self == other) - - def __repr__(self): - return "%s(%s)" % (self.__class__.__name__, repr(self._filename)) - - def __reduce__(self): - return self.__reduce_ex__(None) - - def __reduce_ex__(self, protocol): - return (self.__class__, (None, self._filename), self.__dict__) - - -class tzrange(tzrangebase): - """ - The ``tzrange`` object is a time zone specified by a set of offsets and - abbreviations, equivalent to the way the ``TZ`` variable can be specified - in POSIX-like systems, but using Python delta objects to specify DST - start, end and offsets. - - :param stdabbr: - The abbreviation for standard time (e.g. ``'EST'``). - - :param stdoffset: - An integer or :class:`datetime.timedelta` object or equivalent - specifying the base offset from UTC. - - If unspecified, +00:00 is used. - - :param dstabbr: - The abbreviation for DST / "Summer" time (e.g. ``'EDT'``). - - If specified, with no other DST information, DST is assumed to occur - and the default behavior or ``dstoffset``, ``start`` and ``end`` is - used. If unspecified and no other DST information is specified, it - is assumed that this zone has no DST. - - If this is unspecified and other DST information is *is* specified, - DST occurs in the zone but the time zone abbreviation is left - unchanged. - - :param dstoffset: - A an integer or :class:`datetime.timedelta` object or equivalent - specifying the UTC offset during DST. If unspecified and any other DST - information is specified, it is assumed to be the STD offset +1 hour. - - :param start: - A :class:`relativedelta.relativedelta` object or equivalent specifying - the time and time of year that daylight savings time starts. To specify, - for example, that DST starts at 2AM on the 2nd Sunday in March, pass: - - ``relativedelta(hours=2, month=3, day=1, weekday=SU(+2))`` - - If unspecified and any other DST information is specified, the default - value is 2 AM on the first Sunday in April. - - :param end: - A :class:`relativedelta.relativedelta` object or equivalent representing - the time and time of year that daylight savings time ends, with the - same specification method as in ``start``. One note is that this should - point to the first time in the *standard* zone, so if a transition - occurs at 2AM in the DST zone and the clocks are set back 1 hour to 1AM, - set the `hours` parameter to +1. - - - **Examples:** - - .. testsetup:: tzrange - - from dateutil.tz import tzrange, tzstr - - .. doctest:: tzrange - - >>> tzstr('EST5EDT') == tzrange("EST", -18000, "EDT") - True - - >>> from dateutil.relativedelta import * - >>> range1 = tzrange("EST", -18000, "EDT") - >>> range2 = tzrange("EST", -18000, "EDT", -14400, - ... relativedelta(hours=+2, month=4, day=1, - ... weekday=SU(+1)), - ... relativedelta(hours=+1, month=10, day=31, - ... weekday=SU(-1))) - >>> tzstr('EST5EDT') == range1 == range2 - True - - """ - def __init__(self, stdabbr, stdoffset=None, - dstabbr=None, dstoffset=None, - start=None, end=None): - - global relativedelta - from dateutil import relativedelta - - self._std_abbr = stdabbr - self._dst_abbr = dstabbr - - try: - stdoffset = _total_seconds(stdoffset) - except (TypeError, AttributeError): - pass - - try: - dstoffset = _total_seconds(dstoffset) - except (TypeError, AttributeError): - pass - - if stdoffset is not None: - self._std_offset = datetime.timedelta(seconds=stdoffset) - else: - self._std_offset = ZERO - - if dstoffset is not None: - self._dst_offset = datetime.timedelta(seconds=dstoffset) - elif dstabbr and stdoffset is not None: - self._dst_offset = self._std_offset + datetime.timedelta(hours=+1) - else: - self._dst_offset = ZERO - - if dstabbr and start is None: - self._start_delta = relativedelta.relativedelta( - hours=+2, month=4, day=1, weekday=relativedelta.SU(+1)) - else: - self._start_delta = start - - if dstabbr and end is None: - self._end_delta = relativedelta.relativedelta( - hours=+1, month=10, day=31, weekday=relativedelta.SU(-1)) - else: - self._end_delta = end - - self._dst_base_offset_ = self._dst_offset - self._std_offset - self.hasdst = bool(self._start_delta) - - def transitions(self, year): - """ - For a given year, get the DST on and off transition times, expressed - always on the standard time side. For zones with no transitions, this - function returns ``None``. - - :param year: - The year whose transitions you would like to query. - - :return: - Returns a :class:`tuple` of :class:`datetime.datetime` objects, - ``(dston, dstoff)`` for zones with an annual DST transition, or - ``None`` for fixed offset zones. - """ - if not self.hasdst: - return None - - base_year = datetime.datetime(year, 1, 1) - - start = base_year + self._start_delta - end = base_year + self._end_delta - - return (start, end) - - def __eq__(self, other): - if not isinstance(other, tzrange): - return NotImplemented - - return (self._std_abbr == other._std_abbr and - self._dst_abbr == other._dst_abbr and - self._std_offset == other._std_offset and - self._dst_offset == other._dst_offset and - self._start_delta == other._start_delta and - self._end_delta == other._end_delta) - - @property - def _dst_base_offset(self): - return self._dst_base_offset_ - - -class tzstr(tzrange): - """ - ``tzstr`` objects are time zone objects specified by a time-zone string as - it would be passed to a ``TZ`` variable on POSIX-style systems (see - the `GNU C Library: TZ Variable`_ for more details). - - There is one notable exception, which is that POSIX-style time zones use an - inverted offset format, so normally ``GMT+3`` would be parsed as an offset - 3 hours *behind* GMT. The ``tzstr`` time zone object will parse this as an - offset 3 hours *ahead* of GMT. If you would like to maintain the POSIX - behavior, pass a ``True`` value to ``posix_offset``. - - The :class:`tzrange` object provides the same functionality, but is - specified using :class:`relativedelta.relativedelta` objects. rather than - strings. - - :param s: - A time zone string in ``TZ`` variable format. This can be a - :class:`bytes` (2.x: :class:`str`), :class:`str` (2.x: :class:`unicode`) - or a stream emitting unicode characters (e.g. :class:`StringIO`). - - :param posix_offset: - Optional. If set to ``True``, interpret strings such as ``GMT+3`` or - ``UTC+3`` as being 3 hours *behind* UTC rather than ahead, per the - POSIX standard. - - .. _`GNU C Library: TZ Variable`: - https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html - """ - def __init__(self, s, posix_offset=False): - global parser - from dateutil import parser - - self._s = s - - res = parser._parsetz(s) - if res is None: - raise ValueError("unknown string format") - - # Here we break the compatibility with the TZ variable handling. - # GMT-3 actually *means* the timezone -3. - if res.stdabbr in ("GMT", "UTC") and not posix_offset: - res.stdoffset *= -1 - - # We must initialize it first, since _delta() needs - # _std_offset and _dst_offset set. Use False in start/end - # to avoid building it two times. - tzrange.__init__(self, res.stdabbr, res.stdoffset, - res.dstabbr, res.dstoffset, - start=False, end=False) - - if not res.dstabbr: - self._start_delta = None - self._end_delta = None - else: - self._start_delta = self._delta(res.start) - if self._start_delta: - self._end_delta = self._delta(res.end, isend=1) - - self.hasdst = bool(self._start_delta) - - def _delta(self, x, isend=0): - from dateutil import relativedelta - kwargs = {} - if x.month is not None: - kwargs["month"] = x.month - if x.weekday is not None: - kwargs["weekday"] = relativedelta.weekday(x.weekday, x.week) - if x.week > 0: - kwargs["day"] = 1 - else: - kwargs["day"] = 31 - elif x.day: - kwargs["day"] = x.day - elif x.yday is not None: - kwargs["yearday"] = x.yday - elif x.jyday is not None: - kwargs["nlyearday"] = x.jyday - if not kwargs: - # Default is to start on first sunday of april, and end - # on last sunday of october. - if not isend: - kwargs["month"] = 4 - kwargs["day"] = 1 - kwargs["weekday"] = relativedelta.SU(+1) - else: - kwargs["month"] = 10 - kwargs["day"] = 31 - kwargs["weekday"] = relativedelta.SU(-1) - if x.time is not None: - kwargs["seconds"] = x.time - else: - # Default is 2AM. - kwargs["seconds"] = 7200 - if isend: - # Convert to standard time, to follow the documented way - # of working with the extra hour. See the documentation - # of the tzinfo class. - delta = self._dst_offset - self._std_offset - kwargs["seconds"] -= delta.seconds + delta.days * 86400 - return relativedelta.relativedelta(**kwargs) - - def __repr__(self): - return "%s(%s)" % (self.__class__.__name__, repr(self._s)) - - -class _tzicalvtzcomp(object): - def __init__(self, tzoffsetfrom, tzoffsetto, isdst, - tzname=None, rrule=None): - self.tzoffsetfrom = datetime.timedelta(seconds=tzoffsetfrom) - self.tzoffsetto = datetime.timedelta(seconds=tzoffsetto) - self.tzoffsetdiff = self.tzoffsetto - self.tzoffsetfrom - self.isdst = isdst - self.tzname = tzname - self.rrule = rrule - - -class _tzicalvtz(_tzinfo): - def __init__(self, tzid, comps=[]): - super(_tzicalvtz, self).__init__() - - self._tzid = tzid - self._comps = comps - self._cachedate = [] - self._cachecomp = [] - - def _find_comp(self, dt): - if len(self._comps) == 1: - return self._comps[0] - - dt = dt.replace(tzinfo=None) - - try: - return self._cachecomp[self._cachedate.index((dt, self._fold(dt)))] - except ValueError: - pass - - lastcompdt = None - lastcomp = None - - for comp in self._comps: - compdt = self._find_compdt(comp, dt) - - if compdt and (not lastcompdt or lastcompdt < compdt): - lastcompdt = compdt - lastcomp = comp - - if not lastcomp: - # RFC says nothing about what to do when a given - # time is before the first onset date. We'll look for the - # first standard component, or the first component, if - # none is found. - for comp in self._comps: - if not comp.isdst: - lastcomp = comp - break - else: - lastcomp = comp[0] - - self._cachedate.insert(0, (dt, self._fold(dt))) - self._cachecomp.insert(0, lastcomp) - - if len(self._cachedate) > 10: - self._cachedate.pop() - self._cachecomp.pop() - - return lastcomp - - def _find_compdt(self, comp, dt): - if comp.tzoffsetdiff < ZERO and self._fold(dt): - dt -= comp.tzoffsetdiff - - compdt = comp.rrule.before(dt, inc=True) - - return compdt - - def utcoffset(self, dt): - if dt is None: - return None - - return self._find_comp(dt).tzoffsetto - - def dst(self, dt): - comp = self._find_comp(dt) - if comp.isdst: - return comp.tzoffsetdiff - else: - return ZERO - - @tzname_in_python2 - def tzname(self, dt): - return self._find_comp(dt).tzname - - def __repr__(self): - return "<tzicalvtz %s>" % repr(self._tzid) - - __reduce__ = object.__reduce__ - - -class tzical(object): - """ - This object is designed to parse an iCalendar-style ``VTIMEZONE`` structure - as set out in `RFC 2445`_ Section 4.6.5 into one or more `tzinfo` objects. - - :param `fileobj`: - A file or stream in iCalendar format, which should be UTF-8 encoded - with CRLF endings. - - .. _`RFC 2445`: https://www.ietf.org/rfc/rfc2445.txt - """ - def __init__(self, fileobj): - global rrule - from dateutil import rrule - - if isinstance(fileobj, string_types): - self._s = fileobj - # ical should be encoded in UTF-8 with CRLF - fileobj = open(fileobj, 'r') - else: - self._s = getattr(fileobj, 'name', repr(fileobj)) - fileobj = _ContextWrapper(fileobj) - - self._vtz = {} - - with fileobj as fobj: - self._parse_rfc(fobj.read()) - - def keys(self): - """ - Retrieves the available time zones as a list. - """ - return list(self._vtz.keys()) - - def get(self, tzid=None): - """ - Retrieve a :py:class:`datetime.tzinfo` object by its ``tzid``. - - :param tzid: - If there is exactly one time zone available, omitting ``tzid`` - or passing :py:const:`None` value returns it. Otherwise a valid - key (which can be retrieved from :func:`keys`) is required. - - :raises ValueError: - Raised if ``tzid`` is not specified but there are either more - or fewer than 1 zone defined. - - :returns: - Returns either a :py:class:`datetime.tzinfo` object representing - the relevant time zone or :py:const:`None` if the ``tzid`` was - not found. - """ - if tzid is None: - if len(self._vtz) == 0: - raise ValueError("no timezones defined") - elif len(self._vtz) > 1: - raise ValueError("more than one timezone available") - tzid = next(iter(self._vtz)) - - return self._vtz.get(tzid) - - def _parse_offset(self, s): - s = s.strip() - if not s: - raise ValueError("empty offset") - if s[0] in ('+', '-'): - signal = (-1, +1)[s[0] == '+'] - s = s[1:] - else: - signal = +1 - if len(s) == 4: - return (int(s[:2]) * 3600 + int(s[2:]) * 60) * signal - elif len(s) == 6: - return (int(s[:2]) * 3600 + int(s[2:4]) * 60 + int(s[4:])) * signal - else: - raise ValueError("invalid offset: " + s) - - def _parse_rfc(self, s): - lines = s.splitlines() - if not lines: - raise ValueError("empty string") - - # Unfold - i = 0 - while i < len(lines): - line = lines[i].rstrip() - if not line: - del lines[i] - elif i > 0 and line[0] == " ": - lines[i-1] += line[1:] - del lines[i] - else: - i += 1 - - tzid = None - comps = [] - invtz = False - comptype = None - for line in lines: - if not line: - continue - name, value = line.split(':', 1) - parms = name.split(';') - if not parms: - raise ValueError("empty property name") - name = parms[0].upper() - parms = parms[1:] - if invtz: - if name == "BEGIN": - if value in ("STANDARD", "DAYLIGHT"): - # Process component - pass - else: - raise ValueError("unknown component: "+value) - comptype = value - founddtstart = False - tzoffsetfrom = None - tzoffsetto = None - rrulelines = [] - tzname = None - elif name == "END": - if value == "VTIMEZONE": - if comptype: - raise ValueError("component not closed: "+comptype) - if not tzid: - raise ValueError("mandatory TZID not found") - if not comps: - raise ValueError( - "at least one component is needed") - # Process vtimezone - self._vtz[tzid] = _tzicalvtz(tzid, comps) - invtz = False - elif value == comptype: - if not founddtstart: - raise ValueError("mandatory DTSTART not found") - if tzoffsetfrom is None: - raise ValueError( - "mandatory TZOFFSETFROM not found") - if tzoffsetto is None: - raise ValueError( - "mandatory TZOFFSETFROM not found") - # Process component - rr = None - if rrulelines: - rr = rrule.rrulestr("\n".join(rrulelines), - compatible=True, - ignoretz=True, - cache=True) - comp = _tzicalvtzcomp(tzoffsetfrom, tzoffsetto, - (comptype == "DAYLIGHT"), - tzname, rr) - comps.append(comp) - comptype = None - else: - raise ValueError("invalid component end: "+value) - elif comptype: - if name == "DTSTART": - rrulelines.append(line) - founddtstart = True - elif name in ("RRULE", "RDATE", "EXRULE", "EXDATE"): - rrulelines.append(line) - elif name == "TZOFFSETFROM": - if parms: - raise ValueError( - "unsupported %s parm: %s " % (name, parms[0])) - tzoffsetfrom = self._parse_offset(value) - elif name == "TZOFFSETTO": - if parms: - raise ValueError( - "unsupported TZOFFSETTO parm: "+parms[0]) - tzoffsetto = self._parse_offset(value) - elif name == "TZNAME": - if parms: - raise ValueError( - "unsupported TZNAME parm: "+parms[0]) - tzname = value - elif name == "COMMENT": - pass - else: - raise ValueError("unsupported property: "+name) - else: - if name == "TZID": - if parms: - raise ValueError( - "unsupported TZID parm: "+parms[0]) - tzid = value - elif name in ("TZURL", "LAST-MODIFIED", "COMMENT"): - pass - else: - raise ValueError("unsupported property: "+name) - elif name == "BEGIN" and value == "VTIMEZONE": - tzid = None - comps = [] - invtz = True - - def __repr__(self): - return "%s(%s)" % (self.__class__.__name__, repr(self._s)) - - -if sys.platform != "win32": - TZFILES = ["/etc/localtime", "localtime"] - TZPATHS = ["/usr/share/zoneinfo", - "/usr/lib/zoneinfo", - "/usr/share/lib/zoneinfo", - "/etc/zoneinfo"] -else: - TZFILES = [] - TZPATHS = [] - - -def gettz(name=None): - tz = None - if not name: - try: - name = os.environ["TZ"] - except KeyError: - pass - if name is None or name == ":": - for filepath in TZFILES: - if not os.path.isabs(filepath): - filename = filepath - for path in TZPATHS: - filepath = os.path.join(path, filename) - if os.path.isfile(filepath): - break - else: - continue - if os.path.isfile(filepath): - try: - tz = tzfile(filepath) - break - except (IOError, OSError, ValueError): - pass - else: - tz = tzlocal() - else: - if name.startswith(":"): - name = name[:-1] - if os.path.isabs(name): - if os.path.isfile(name): - tz = tzfile(name) - else: - tz = None - else: - for path in TZPATHS: - filepath = os.path.join(path, name) - if not os.path.isfile(filepath): - filepath = filepath.replace(' ', '_') - if not os.path.isfile(filepath): - continue - try: - tz = tzfile(filepath) - break - except (IOError, OSError, ValueError): - pass - else: - tz = None - if tzwin is not None: - try: - tz = tzwin(name) - except WindowsError: - tz = None - - if not tz: - from dateutil.zoneinfo import get_zonefile_instance - tz = get_zonefile_instance().get(name) - - if not tz: - for c in name: - # name must have at least one offset to be a tzstr - if c in "0123456789": - try: - tz = tzstr(name) - except ValueError: - pass - break - else: - if name in ("GMT", "UTC"): - tz = tzutc() - elif name in time.tzname: - tz = tzlocal() - return tz - - -def datetime_exists(dt, tz=None): - """ - Given a datetime and a time zone, determine whether or not a given datetime - would fall in a gap. - - :param dt: - A :class:`datetime.datetime` (whose time zone will be ignored if ``tz`` - is provided.) - - :param tz: - A :class:`datetime.tzinfo` with support for the ``fold`` attribute. If - ``None`` or not provided, the datetime's own time zone will be used. - - :return: - Returns a boolean value whether or not the "wall time" exists in ``tz``. - """ - if tz is None: - if dt.tzinfo is None: - raise ValueError('Datetime is naive and no time zone provided.') - tz = dt.tzinfo - - dt = dt.replace(tzinfo=None) - - # This is essentially a test of whether or not the datetime can survive - # a round trip to UTC. - dt_rt = dt.replace(tzinfo=tz).astimezone(tzutc()).astimezone(tz) - dt_rt = dt_rt.replace(tzinfo=None) - - return dt == dt_rt - - -def datetime_ambiguous(dt, tz=None): - """ - Given a datetime and a time zone, determine whether or not a given datetime - is ambiguous (i.e if there are two times differentiated only by their DST - status). - - :param dt: - A :class:`datetime.datetime` (whose time zone will be ignored if ``tz`` - is provided.) - - :param tz: - A :class:`datetime.tzinfo` with support for the ``fold`` attribute. If - ``None`` or not provided, the datetime's own time zone will be used. - - :return: - Returns a boolean value whether or not the "wall time" is ambiguous in - ``tz``. - - .. versionadded:: 2.6.0 - """ - if tz is None: - if dt.tzinfo is None: - raise ValueError('Datetime is naive and no time zone provided.') - - tz = dt.tzinfo - - # If a time zone defines its own "is_ambiguous" function, we'll use that. - is_ambiguous_fn = getattr(tz, 'is_ambiguous', None) - if is_ambiguous_fn is not None: - try: - return tz.is_ambiguous(dt) - except: - pass - - # If it doesn't come out and tell us it's ambiguous, we'll just check if - # the fold attribute has any effect on this particular date and time. - dt = dt.replace(tzinfo=tz) - wall_0 = enfold(dt, fold=0) - wall_1 = enfold(dt, fold=1) - - same_offset = wall_0.utcoffset() == wall_1.utcoffset() - same_dst = wall_0.dst() == wall_1.dst() - - return not (same_offset and same_dst) - - -def _datetime_to_timestamp(dt): - """ - Convert a :class:`datetime.datetime` object to an epoch timestamp in seconds - since January 1, 1970, ignoring the time zone. - """ - return _total_seconds((dt.replace(tzinfo=None) - EPOCH)) - - -class _ContextWrapper(object): - """ - Class for wrapping contexts so that they are passed through in a - with statement. - """ - def __init__(self, context): - self.context = context - - def __enter__(self): - return self.context - - def __exit__(*args, **kwargs): - pass - -# vim:ts=4:sw=4:et diff --git a/python/dateutil/tz/win.py b/python/dateutil/tz/win.py deleted file mode 100644 index 36a1c26..0000000 --- a/python/dateutil/tz/win.py +++ /dev/null @@ -1,332 +0,0 @@ -# This code was originally contributed by Jeffrey Harris. -import datetime -import struct - -from six.moves import winreg -from six import text_type - -try: - import ctypes - from ctypes import wintypes -except ValueError: - # ValueError is raised on non-Windows systems for some horrible reason. - raise ImportError("Running tzwin on non-Windows system") - -from ._common import tzrangebase - -__all__ = ["tzwin", "tzwinlocal", "tzres"] - -ONEWEEK = datetime.timedelta(7) - -TZKEYNAMENT = r"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones" -TZKEYNAME9X = r"SOFTWARE\Microsoft\Windows\CurrentVersion\Time Zones" -TZLOCALKEYNAME = r"SYSTEM\CurrentControlSet\Control\TimeZoneInformation" - - -def _settzkeyname(): - handle = winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE) - try: - winreg.OpenKey(handle, TZKEYNAMENT).Close() - TZKEYNAME = TZKEYNAMENT - except WindowsError: - TZKEYNAME = TZKEYNAME9X - handle.Close() - return TZKEYNAME - - -TZKEYNAME = _settzkeyname() - - -class tzres(object): - """ - Class for accessing `tzres.dll`, which contains timezone name related - resources. - - .. versionadded:: 2.5.0 - """ - p_wchar = ctypes.POINTER(wintypes.WCHAR) # Pointer to a wide char - - def __init__(self, tzres_loc='tzres.dll'): - # Load the user32 DLL so we can load strings from tzres - user32 = ctypes.WinDLL('user32') - - # Specify the LoadStringW function - user32.LoadStringW.argtypes = (wintypes.HINSTANCE, - wintypes.UINT, - wintypes.LPWSTR, - ctypes.c_int) - - self.LoadStringW = user32.LoadStringW - self._tzres = ctypes.WinDLL(tzres_loc) - self.tzres_loc = tzres_loc - - def load_name(self, offset): - """ - Load a timezone name from a DLL offset (integer). - - >>> from dateutil.tzwin import tzres - >>> tzr = tzres() - >>> print(tzr.load_name(112)) - 'Eastern Standard Time' - - :param offset: - A positive integer value referring to a string from the tzres dll. - - ..note: - Offsets found in the registry are generally of the form - `@tzres.dll,-114`. The offset in this case if 114, not -114. - - """ - resource = self.p_wchar() - lpBuffer = ctypes.cast(ctypes.byref(resource), wintypes.LPWSTR) - nchar = self.LoadStringW(self._tzres._handle, offset, lpBuffer, 0) - return resource[:nchar] - - def name_from_string(self, tzname_str): - """ - Parse strings as returned from the Windows registry into the time zone - name as defined in the registry. - - >>> from dateutil.tzwin import tzres - >>> tzr = tzres() - >>> print(tzr.name_from_string('@tzres.dll,-251')) - 'Dateline Daylight Time' - >>> print(tzr.name_from_string('Eastern Standard Time')) - 'Eastern Standard Time' - - :param tzname_str: - A timezone name string as returned from a Windows registry key. - - :return: - Returns the localized timezone string from tzres.dll if the string - is of the form `@tzres.dll,-offset`, else returns the input string. - """ - if not tzname_str.startswith('@'): - return tzname_str - - name_splt = tzname_str.split(',-') - try: - offset = int(name_splt[1]) - except: - raise ValueError("Malformed timezone string.") - - return self.load_name(offset) - - -class tzwinbase(tzrangebase): - """tzinfo class based on win32's timezones available in the registry.""" - def __init__(self): - raise NotImplementedError('tzwinbase is an abstract base class') - - def __eq__(self, other): - # Compare on all relevant dimensions, including name. - if not isinstance(other, tzwinbase): - return NotImplemented - - return (self._std_offset == other._std_offset and - self._dst_offset == other._dst_offset and - self._stddayofweek == other._stddayofweek and - self._dstdayofweek == other._dstdayofweek and - self._stdweeknumber == other._stdweeknumber and - self._dstweeknumber == other._dstweeknumber and - self._stdhour == other._stdhour and - self._dsthour == other._dsthour and - self._stdminute == other._stdminute and - self._dstminute == other._dstminute and - self._std_abbr == other._std_abbr and - self._dst_abbr == other._dst_abbr) - - @staticmethod - def list(): - """Return a list of all time zones known to the system.""" - with winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE) as handle: - with winreg.OpenKey(handle, TZKEYNAME) as tzkey: - result = [winreg.EnumKey(tzkey, i) - for i in range(winreg.QueryInfoKey(tzkey)[0])] - return result - - def display(self): - return self._display - - def transitions(self, year): - """ - For a given year, get the DST on and off transition times, expressed - always on the standard time side. For zones with no transitions, this - function returns ``None``. - - :param year: - The year whose transitions you would like to query. - - :return: - Returns a :class:`tuple` of :class:`datetime.datetime` objects, - ``(dston, dstoff)`` for zones with an annual DST transition, or - ``None`` for fixed offset zones. - """ - - if not self.hasdst: - return None - - dston = picknthweekday(year, self._dstmonth, self._dstdayofweek, - self._dsthour, self._dstminute, - self._dstweeknumber) - - dstoff = picknthweekday(year, self._stdmonth, self._stddayofweek, - self._stdhour, self._stdminute, - self._stdweeknumber) - - # Ambiguous dates default to the STD side - dstoff -= self._dst_base_offset - - return dston, dstoff - - def _get_hasdst(self): - return self._dstmonth != 0 - - @property - def _dst_base_offset(self): - return self._dst_base_offset_ - - -class tzwin(tzwinbase): - - def __init__(self, name): - self._name = name - - # multiple contexts only possible in 2.7 and 3.1, we still support 2.6 - with winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE) as handle: - tzkeyname = text_type("{kn}\\{name}").format(kn=TZKEYNAME, name=name) - with winreg.OpenKey(handle, tzkeyname) as tzkey: - keydict = valuestodict(tzkey) - - self._std_abbr = keydict["Std"] - self._dst_abbr = keydict["Dlt"] - - self._display = keydict["Display"] - - # See http://ww_winreg.jsiinc.com/SUBA/tip0300/rh0398.htm - tup = struct.unpack("=3l16h", keydict["TZI"]) - stdoffset = -tup[0]-tup[1] # Bias + StandardBias * -1 - dstoffset = stdoffset-tup[2] # + DaylightBias * -1 - self._std_offset = datetime.timedelta(minutes=stdoffset) - self._dst_offset = datetime.timedelta(minutes=dstoffset) - - # for the meaning see the win32 TIME_ZONE_INFORMATION structure docs - # http://msdn.microsoft.com/en-us/library/windows/desktop/ms725481(v=vs.85).aspx - (self._stdmonth, - self._stddayofweek, # Sunday = 0 - self._stdweeknumber, # Last = 5 - self._stdhour, - self._stdminute) = tup[4:9] - - (self._dstmonth, - self._dstdayofweek, # Sunday = 0 - self._dstweeknumber, # Last = 5 - self._dsthour, - self._dstminute) = tup[12:17] - - self._dst_base_offset_ = self._dst_offset - self._std_offset - self.hasdst = self._get_hasdst() - - def __repr__(self): - return "tzwin(%s)" % repr(self._name) - - def __reduce__(self): - return (self.__class__, (self._name,)) - - -class tzwinlocal(tzwinbase): - def __init__(self): - with winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE) as handle: - with winreg.OpenKey(handle, TZLOCALKEYNAME) as tzlocalkey: - keydict = valuestodict(tzlocalkey) - - self._std_abbr = keydict["StandardName"] - self._dst_abbr = keydict["DaylightName"] - - try: - tzkeyname = text_type('{kn}\\{sn}').format(kn=TZKEYNAME, - sn=self._std_abbr) - with winreg.OpenKey(handle, tzkeyname) as tzkey: - _keydict = valuestodict(tzkey) - self._display = _keydict["Display"] - except OSError: - self._display = None - - stdoffset = -keydict["Bias"]-keydict["StandardBias"] - dstoffset = stdoffset-keydict["DaylightBias"] - - self._std_offset = datetime.timedelta(minutes=stdoffset) - self._dst_offset = datetime.timedelta(minutes=dstoffset) - - # For reasons unclear, in this particular key, the day of week has been - # moved to the END of the SYSTEMTIME structure. - tup = struct.unpack("=8h", keydict["StandardStart"]) - - (self._stdmonth, - self._stdweeknumber, # Last = 5 - self._stdhour, - self._stdminute) = tup[1:5] - - self._stddayofweek = tup[7] - - tup = struct.unpack("=8h", keydict["DaylightStart"]) - - (self._dstmonth, - self._dstweeknumber, # Last = 5 - self._dsthour, - self._dstminute) = tup[1:5] - - self._dstdayofweek = tup[7] - - self._dst_base_offset_ = self._dst_offset - self._std_offset - self.hasdst = self._get_hasdst() - - def __repr__(self): - return "tzwinlocal()" - - def __str__(self): - # str will return the standard name, not the daylight name. - return "tzwinlocal(%s)" % repr(self._std_abbr) - - def __reduce__(self): - return (self.__class__, ()) - - -def picknthweekday(year, month, dayofweek, hour, minute, whichweek): - """ dayofweek == 0 means Sunday, whichweek 5 means last instance """ - first = datetime.datetime(year, month, 1, hour, minute) - - # This will work if dayofweek is ISO weekday (1-7) or Microsoft-style (0-6), - # Because 7 % 7 = 0 - weekdayone = first.replace(day=((dayofweek - first.isoweekday()) % 7) + 1) - wd = weekdayone + ((whichweek - 1) * ONEWEEK) - if (wd.month != month): - wd -= ONEWEEK - - return wd - - -def valuestodict(key): - """Convert a registry key's values to a dictionary.""" - dout = {} - size = winreg.QueryInfoKey(key)[1] - tz_res = None - - for i in range(size): - key_name, value, dtype = winreg.EnumValue(key, i) - if dtype == winreg.REG_DWORD or dtype == winreg.REG_DWORD_LITTLE_ENDIAN: - # If it's a DWORD (32-bit integer), it's stored as unsigned - convert - # that to a proper signed integer - if value & (1 << 31): - value = value - (1 << 32) - elif dtype == winreg.REG_SZ: - # If it's a reference to the tzres DLL, load the actual string - if value.startswith('@tzres'): - tz_res = tz_res or tzres() - value = tz_res.name_from_string(value) - - value = value.rstrip('\x00') # Remove trailing nulls - - dout[key_name] = value - - return dout diff --git a/python/dateutil/tzwin.py b/python/dateutil/tzwin.py deleted file mode 100644 index cebc673..0000000 --- a/python/dateutil/tzwin.py +++ /dev/null @@ -1,2 +0,0 @@ -# tzwin has moved to dateutil.tz.win -from .tz.win import * diff --git a/python/dateutil/zoneinfo/__init__.py b/python/dateutil/zoneinfo/__init__.py deleted file mode 100644 index a2ed4f9..0000000 --- a/python/dateutil/zoneinfo/__init__.py +++ /dev/null @@ -1,183 +0,0 @@ -# -*- coding: utf-8 -*- -import warnings -import json - -from tarfile import TarFile -from pkgutil import get_data -from io import BytesIO -from contextlib import closing - -from dateutil.tz import tzfile - -__all__ = ["get_zonefile_instance", "gettz", "gettz_db_metadata", "rebuild"] - -ZONEFILENAME = "dateutil-zoneinfo.tar.gz" -METADATA_FN = 'METADATA' - -# python2.6 compatability. Note that TarFile.__exit__ != TarFile.close, but -# it's close enough for python2.6 -tar_open = TarFile.open -if not hasattr(TarFile, '__exit__'): - def tar_open(*args, **kwargs): - return closing(TarFile.open(*args, **kwargs)) - - -class tzfile(tzfile): - def __reduce__(self): - return (gettz, (self._filename,)) - - -def getzoneinfofile_stream(): - try: - return BytesIO(get_data(__name__, ZONEFILENAME)) - except IOError as e: # TODO switch to FileNotFoundError? - warnings.warn("I/O error({0}): {1}".format(e.errno, e.strerror)) - return None - - -class ZoneInfoFile(object): - def __init__(self, zonefile_stream=None): - if zonefile_stream is not None: - with tar_open(fileobj=zonefile_stream, mode='r') as tf: - # dict comprehension does not work on python2.6 - # TODO: get back to the nicer syntax when we ditch python2.6 - # self.zones = {zf.name: tzfile(tf.extractfile(zf), - # filename = zf.name) - # for zf in tf.getmembers() if zf.isfile()} - self.zones = dict((zf.name, tzfile(tf.extractfile(zf), - filename=zf.name)) - for zf in tf.getmembers() - if zf.isfile() and zf.name != METADATA_FN) - # deal with links: They'll point to their parent object. Less - # waste of memory - # links = {zl.name: self.zones[zl.linkname] - # for zl in tf.getmembers() if zl.islnk() or zl.issym()} - links = dict((zl.name, self.zones[zl.linkname]) - for zl in tf.getmembers() if - zl.islnk() or zl.issym()) - self.zones.update(links) - try: - metadata_json = tf.extractfile(tf.getmember(METADATA_FN)) - metadata_str = metadata_json.read().decode('UTF-8') - self.metadata = json.loads(metadata_str) - except KeyError: - # no metadata in tar file - self.metadata = None - else: - self.zones = dict() - self.metadata = None - - def get(self, name, default=None): - """ - Wrapper for :func:`ZoneInfoFile.zones.get`. This is a convenience method - for retrieving zones from the zone dictionary. - - :param name: - The name of the zone to retrieve. (Generally IANA zone names) - - :param default: - The value to return in the event of a missing key. - - .. versionadded:: 2.6.0 - - """ - return self.zones.get(name, default) - - -# The current API has gettz as a module function, although in fact it taps into -# a stateful class. So as a workaround for now, without changing the API, we -# will create a new "global" class instance the first time a user requests a -# timezone. Ugly, but adheres to the api. -# -# TODO: Remove after deprecation period. -_CLASS_ZONE_INSTANCE = list() - - -def get_zonefile_instance(new_instance=False): - """ - This is a convenience function which provides a :class:`ZoneInfoFile` - instance using the data provided by the ``dateutil`` package. By default, it - caches a single instance of the ZoneInfoFile object and returns that. - - :param new_instance: - If ``True``, a new instance of :class:`ZoneInfoFile` is instantiated and - used as the cached instance for the next call. Otherwise, new instances - are created only as necessary. - - :return: - Returns a :class:`ZoneInfoFile` object. - - .. versionadded:: 2.6 - """ - if new_instance: - zif = None - else: - zif = getattr(get_zonefile_instance, '_cached_instance', None) - - if zif is None: - zif = ZoneInfoFile(getzoneinfofile_stream()) - - get_zonefile_instance._cached_instance = zif - - return zif - - -def gettz(name): - """ - This retrieves a time zone from the local zoneinfo tarball that is packaged - with dateutil. - - :param name: - An IANA-style time zone name, as found in the zoneinfo file. - - :return: - Returns a :class:`dateutil.tz.tzfile` time zone object. - - .. warning:: - It is generally inadvisable to use this function, and it is only - provided for API compatibility with earlier versions. This is *not* - equivalent to ``dateutil.tz.gettz()``, which selects an appropriate - time zone based on the inputs, favoring system zoneinfo. This is ONLY - for accessing the dateutil-specific zoneinfo (which may be out of - date compared to the system zoneinfo). - - .. deprecated:: 2.6 - If you need to use a specific zoneinfofile over the system zoneinfo, - instantiate a :class:`dateutil.zoneinfo.ZoneInfoFile` object and call - :func:`dateutil.zoneinfo.ZoneInfoFile.get(name)` instead. - - Use :func:`get_zonefile_instance` to retrieve an instance of the - dateutil-provided zoneinfo. - """ - warnings.warn("zoneinfo.gettz() will be removed in future versions, " - "to use the dateutil-provided zoneinfo files, instantiate a " - "ZoneInfoFile object and use ZoneInfoFile.zones.get() " - "instead. See the documentation for details.", - DeprecationWarning) - - if len(_CLASS_ZONE_INSTANCE) == 0: - _CLASS_ZONE_INSTANCE.append(ZoneInfoFile(getzoneinfofile_stream())) - return _CLASS_ZONE_INSTANCE[0].zones.get(name) - - -def gettz_db_metadata(): - """ Get the zonefile metadata - - See `zonefile_metadata`_ - - :returns: - A dictionary with the database metadata - - .. deprecated:: 2.6 - See deprecation warning in :func:`zoneinfo.gettz`. To get metadata, - query the attribute ``zoneinfo.ZoneInfoFile.metadata``. - """ - warnings.warn("zoneinfo.gettz_db_metadata() will be removed in future " - "versions, to use the dateutil-provided zoneinfo files, " - "ZoneInfoFile object and query the 'metadata' attribute " - "instead. See the documentation for details.", - DeprecationWarning) - - if len(_CLASS_ZONE_INSTANCE) == 0: - _CLASS_ZONE_INSTANCE.append(ZoneInfoFile(getzoneinfofile_stream())) - return _CLASS_ZONE_INSTANCE[0].metadata diff --git a/python/dateutil/zoneinfo/dateutil-zoneinfo.tar.gz b/python/dateutil/zoneinfo/dateutil-zoneinfo.tar.gz deleted file mode 100644 index 613c0ff3b4ef910935629a7d145354f40314150c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138881 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 diff --git a/python/dateutil/zoneinfo/rebuild.py b/python/dateutil/zoneinfo/rebuild.py deleted file mode 100644 index 9d53bb8..0000000 --- a/python/dateutil/zoneinfo/rebuild.py +++ /dev/null @@ -1,52 +0,0 @@ -import logging -import os -import tempfile -import shutil -import json -from subprocess import check_call - -from dateutil.zoneinfo import tar_open, METADATA_FN, ZONEFILENAME - - -def rebuild(filename, tag=None, format="gz", zonegroups=[], metadata=None): - """Rebuild the internal timezone info in dateutil/zoneinfo/zoneinfo*tar* - - filename is the timezone tarball from ftp.iana.org/tz. - - """ - tmpdir = tempfile.mkdtemp() - zonedir = os.path.join(tmpdir, "zoneinfo") - moduledir = os.path.dirname(__file__) - try: - with tar_open(filename) as tf: - for name in zonegroups: - tf.extract(name, tmpdir) - filepaths = [os.path.join(tmpdir, n) for n in zonegroups] - try: - check_call(["zic", "-d", zonedir] + filepaths) - except OSError as e: - _print_on_nosuchfile(e) - raise - # write metadata file - with open(os.path.join(zonedir, METADATA_FN), 'w') as f: - json.dump(metadata, f, indent=4, sort_keys=True) - target = os.path.join(moduledir, ZONEFILENAME) - with tar_open(target, "w:%s" % format) as tf: - for entry in os.listdir(zonedir): - entrypath = os.path.join(zonedir, entry) - tf.add(entrypath, entry) - finally: - shutil.rmtree(tmpdir) - - -def _print_on_nosuchfile(e): - """Print helpful troubleshooting message - - e is an exception raised by subprocess.check_call() - - """ - if e.errno == 2: - logging.error( - "Could not find zic. Perhaps you need to install " - "libc-bin or some other package that provides it, " - "or it's not in your PATH?") diff --git a/python/defusedxml/ElementTree.py b/python/defusedxml/ElementTree.py deleted file mode 100644 index 41b2ea8..0000000 --- a/python/defusedxml/ElementTree.py +++ /dev/null @@ -1,112 +0,0 @@ -# defusedxml -# -# Copyright (c) 2013 by Christian Heimes <christian@python.org> -# Licensed to PSF under a Contributor Agreement. -# See http://www.python.org/psf/license for licensing details. -"""Defused xml.etree.ElementTree facade -""" -from __future__ import print_function, absolute_import - -import sys -from xml.etree.ElementTree import TreeBuilder as _TreeBuilder -from xml.etree.ElementTree import parse as _parse -from xml.etree.ElementTree import tostring - -from .common import PY3 - - -if PY3: - import importlib -else: - from xml.etree.ElementTree import XMLParser as _XMLParser - from xml.etree.ElementTree import iterparse as _iterparse - from xml.etree.ElementTree import ParseError - - -from .common import (DTDForbidden, EntitiesForbidden, - ExternalReferenceForbidden, _generate_etree_functions) - -__origin__ = "xml.etree.ElementTree" - - -def _get_py3_cls(): - """Python 3.3 hides the pure Python code but defusedxml requires it. - - The code is based on test.support.import_fresh_module(). - """ - pymodname = "xml.etree.ElementTree" - cmodname = "_elementtree" - - pymod = sys.modules.pop(pymodname, None) - cmod = sys.modules.pop(cmodname, None) - - sys.modules[cmodname] = None - pure_pymod = importlib.import_module(pymodname) - if cmod is not None: - sys.modules[cmodname] = cmod - else: - sys.modules.pop(cmodname) - sys.modules[pymodname] = pymod - - _XMLParser = pure_pymod.XMLParser - _iterparse = pure_pymod.iterparse - ParseError = pure_pymod.ParseError - - return _XMLParser, _iterparse, ParseError - - -if PY3: - _XMLParser, _iterparse, ParseError = _get_py3_cls() - - -class DefusedXMLParser(_XMLParser): - - def __init__(self, html=0, target=None, encoding=None, - forbid_dtd=False, forbid_entities=True, - forbid_external=True): - # Python 2.x old style class - _XMLParser.__init__(self, html, target, encoding) - self.forbid_dtd = forbid_dtd - self.forbid_entities = forbid_entities - self.forbid_external = forbid_external - if PY3: - parser = self.parser - else: - parser = self._parser - if self.forbid_dtd: - parser.StartDoctypeDeclHandler = self.defused_start_doctype_decl - if self.forbid_entities: - parser.EntityDeclHandler = self.defused_entity_decl - parser.UnparsedEntityDeclHandler = self.defused_unparsed_entity_decl - if self.forbid_external: - parser.ExternalEntityRefHandler = self.defused_external_entity_ref_handler - - def defused_start_doctype_decl(self, name, sysid, pubid, - has_internal_subset): - raise DTDForbidden(name, sysid, pubid) - - def defused_entity_decl(self, name, is_parameter_entity, value, base, - sysid, pubid, notation_name): - raise EntitiesForbidden(name, value, base, sysid, pubid, notation_name) - - def defused_unparsed_entity_decl(self, name, base, sysid, pubid, - notation_name): - # expat 1.2 - raise EntitiesForbidden(name, None, base, sysid, pubid, notation_name) - - def defused_external_entity_ref_handler(self, context, base, sysid, - pubid): - raise ExternalReferenceForbidden(context, base, sysid, pubid) - - -# aliases -XMLTreeBuilder = XMLParse = DefusedXMLParser - -parse, iterparse, fromstring = _generate_etree_functions(DefusedXMLParser, - _TreeBuilder, _parse, - _iterparse) -XML = fromstring - - -__all__ = ['XML', 'XMLParse', 'XMLTreeBuilder', 'fromstring', 'iterparse', - 'parse', 'tostring'] diff --git a/python/defusedxml/__init__.py b/python/defusedxml/__init__.py deleted file mode 100644 index 590a5a9..0000000 --- a/python/defusedxml/__init__.py +++ /dev/null @@ -1,45 +0,0 @@ -# defusedxml -# -# Copyright (c) 2013 by Christian Heimes <christian@python.org> -# Licensed to PSF under a Contributor Agreement. -# See http://www.python.org/psf/license for licensing details. -"""Defuse XML bomb denial of service vulnerabilities -""" -from __future__ import print_function, absolute_import - -from .common import (DefusedXmlException, DTDForbidden, EntitiesForbidden, - ExternalReferenceForbidden, NotSupportedError, - _apply_defusing) - - -def defuse_stdlib(): - """Monkey patch and defuse all stdlib packages - - :warning: The monkey patch is an EXPERIMETNAL feature. - """ - defused = {} - - from . import cElementTree - from . import ElementTree - from . import minidom - from . import pulldom - from . import sax - from . import expatbuilder - from . import expatreader - from . import xmlrpc - - xmlrpc.monkey_patch() - defused[xmlrpc] = None - - for defused_mod in [cElementTree, ElementTree, minidom, pulldom, sax, - expatbuilder, expatreader]: - stdlib_mod = _apply_defusing(defused_mod) - defused[defused_mod] = stdlib_mod - - return defused - - -__version__ = "0.5.0" - -__all__ = ['DefusedXmlException', 'DTDForbidden', 'EntitiesForbidden', - 'ExternalReferenceForbidden', 'NotSupportedError'] diff --git a/python/defusedxml/cElementTree.py b/python/defusedxml/cElementTree.py deleted file mode 100644 index cc13689..0000000 --- a/python/defusedxml/cElementTree.py +++ /dev/null @@ -1,30 +0,0 @@ -# defusedxml -# -# Copyright (c) 2013 by Christian Heimes <christian@python.org> -# Licensed to PSF under a Contributor Agreement. -# See http://www.python.org/psf/license for licensing details. -"""Defused xml.etree.cElementTree -""" -from __future__ import absolute_import - -from xml.etree.cElementTree import TreeBuilder as _TreeBuilder -from xml.etree.cElementTree import parse as _parse -from xml.etree.cElementTree import tostring -# iterparse from ElementTree! -from xml.etree.ElementTree import iterparse as _iterparse - -from .ElementTree import DefusedXMLParser -from .common import _generate_etree_functions - -__origin__ = "xml.etree.cElementTree" - - -XMLTreeBuilder = XMLParse = DefusedXMLParser - -parse, iterparse, fromstring = _generate_etree_functions(DefusedXMLParser, - _TreeBuilder, _parse, - _iterparse) -XML = fromstring - -__all__ = ['XML', 'XMLParse', 'XMLTreeBuilder', 'fromstring', 'iterparse', - 'parse', 'tostring'] diff --git a/python/defusedxml/common.py b/python/defusedxml/common.py deleted file mode 100644 index 668b609..0000000 --- a/python/defusedxml/common.py +++ /dev/null @@ -1,120 +0,0 @@ -# defusedxml -# -# Copyright (c) 2013 by Christian Heimes <christian@python.org> -# Licensed to PSF under a Contributor Agreement. -# See http://www.python.org/psf/license for licensing details. -"""Common constants, exceptions and helpe functions -""" -import sys - -PY3 = sys.version_info[0] == 3 - - -class DefusedXmlException(ValueError): - """Base exception - """ - - def __repr__(self): - return str(self) - - -class DTDForbidden(DefusedXmlException): - """Document type definition is forbidden - """ - - def __init__(self, name, sysid, pubid): - super(DTDForbidden, self).__init__() - self.name = name - self.sysid = sysid - self.pubid = pubid - - def __str__(self): - tpl = "DTDForbidden(name='{}', system_id={!r}, public_id={!r})" - return tpl.format(self.name, self.sysid, self.pubid) - - -class EntitiesForbidden(DefusedXmlException): - """Entity definition is forbidden - """ - - def __init__(self, name, value, base, sysid, pubid, notation_name): - super(EntitiesForbidden, self).__init__() - self.name = name - self.value = value - self.base = base - self.sysid = sysid - self.pubid = pubid - self.notation_name = notation_name - - def __str__(self): - tpl = "EntitiesForbidden(name='{}', system_id={!r}, public_id={!r})" - return tpl.format(self.name, self.sysid, self.pubid) - - -class ExternalReferenceForbidden(DefusedXmlException): - """Resolving an external reference is forbidden - """ - - def __init__(self, context, base, sysid, pubid): - super(ExternalReferenceForbidden, self).__init__() - self.context = context - self.base = base - self.sysid = sysid - self.pubid = pubid - - def __str__(self): - tpl = "ExternalReferenceForbidden(system_id='{}', public_id={})" - return tpl.format(self.sysid, self.pubid) - - -class NotSupportedError(DefusedXmlException): - """The operation is not supported - """ - - -def _apply_defusing(defused_mod): - assert defused_mod is sys.modules[defused_mod.__name__] - stdlib_name = defused_mod.__origin__ - __import__(stdlib_name, {}, {}, ["*"]) - stdlib_mod = sys.modules[stdlib_name] - stdlib_names = set(dir(stdlib_mod)) - for name, obj in vars(defused_mod).items(): - if name.startswith("_") or name not in stdlib_names: - continue - setattr(stdlib_mod, name, obj) - return stdlib_mod - - -def _generate_etree_functions(DefusedXMLParser, _TreeBuilder, - _parse, _iterparse): - """Factory for functions needed by etree, dependent on whether - cElementTree or ElementTree is used.""" - - def parse(source, parser=None, forbid_dtd=False, forbid_entities=True, - forbid_external=True): - if parser is None: - parser = DefusedXMLParser(target=_TreeBuilder(), - forbid_dtd=forbid_dtd, - forbid_entities=forbid_entities, - forbid_external=forbid_external) - return _parse(source, parser) - - def iterparse(source, events=None, parser=None, forbid_dtd=False, - forbid_entities=True, forbid_external=True): - if parser is None: - parser = DefusedXMLParser(target=_TreeBuilder(), - forbid_dtd=forbid_dtd, - forbid_entities=forbid_entities, - forbid_external=forbid_external) - return _iterparse(source, events, parser) - - def fromstring(text, forbid_dtd=False, forbid_entities=True, - forbid_external=True): - parser = DefusedXMLParser(target=_TreeBuilder(), - forbid_dtd=forbid_dtd, - forbid_entities=forbid_entities, - forbid_external=forbid_external) - parser.feed(text) - return parser.close() - - return parse, iterparse, fromstring diff --git a/python/defusedxml/expatbuilder.py b/python/defusedxml/expatbuilder.py deleted file mode 100644 index 0eb6b91..0000000 --- a/python/defusedxml/expatbuilder.py +++ /dev/null @@ -1,110 +0,0 @@ -# defusedxml -# -# Copyright (c) 2013 by Christian Heimes <christian@python.org> -# Licensed to PSF under a Contributor Agreement. -# See http://www.python.org/psf/license for licensing details. -"""Defused xml.dom.expatbuilder -""" -from __future__ import print_function, absolute_import - -from xml.dom.expatbuilder import ExpatBuilder as _ExpatBuilder -from xml.dom.expatbuilder import Namespaces as _Namespaces - -from .common import (DTDForbidden, EntitiesForbidden, - ExternalReferenceForbidden) - -__origin__ = "xml.dom.expatbuilder" - - -class DefusedExpatBuilder(_ExpatBuilder): - """Defused document builder""" - - def __init__(self, options=None, forbid_dtd=False, forbid_entities=True, - forbid_external=True): - _ExpatBuilder.__init__(self, options) - self.forbid_dtd = forbid_dtd - self.forbid_entities = forbid_entities - self.forbid_external = forbid_external - - def defused_start_doctype_decl(self, name, sysid, pubid, - has_internal_subset): - raise DTDForbidden(name, sysid, pubid) - - def defused_entity_decl(self, name, is_parameter_entity, value, base, - sysid, pubid, notation_name): - raise EntitiesForbidden(name, value, base, sysid, pubid, notation_name) - - def defused_unparsed_entity_decl(self, name, base, sysid, pubid, - notation_name): - # expat 1.2 - raise EntitiesForbidden(name, None, base, sysid, pubid, notation_name) - - def defused_external_entity_ref_handler(self, context, base, sysid, - pubid): - raise ExternalReferenceForbidden(context, base, sysid, pubid) - - def install(self, parser): - _ExpatBuilder.install(self, parser) - - if self.forbid_dtd: - parser.StartDoctypeDeclHandler = self.defused_start_doctype_decl - if self.forbid_entities: - # if self._options.entities: - parser.EntityDeclHandler = self.defused_entity_decl - parser.UnparsedEntityDeclHandler = self.defused_unparsed_entity_decl - if self.forbid_external: - parser.ExternalEntityRefHandler = self.defused_external_entity_ref_handler - - -class DefusedExpatBuilderNS(_Namespaces, DefusedExpatBuilder): - """Defused document builder that supports namespaces.""" - - def install(self, parser): - DefusedExpatBuilder.install(self, parser) - if self._options.namespace_declarations: - parser.StartNamespaceDeclHandler = ( - self.start_namespace_decl_handler) - - def reset(self): - DefusedExpatBuilder.reset(self) - self._initNamespaces() - - -def parse(file, namespaces=True, forbid_dtd=False, forbid_entities=True, - forbid_external=True): - """Parse a document, returning the resulting Document node. - - 'file' may be either a file name or an open file object. - """ - if namespaces: - build_builder = DefusedExpatBuilderNS - else: - build_builder = DefusedExpatBuilder - builder = build_builder(forbid_dtd=forbid_dtd, - forbid_entities=forbid_entities, - forbid_external=forbid_external) - - if isinstance(file, str): - fp = open(file, 'rb') - try: - result = builder.parseFile(fp) - finally: - fp.close() - else: - result = builder.parseFile(file) - return result - - -def parseString(string, namespaces=True, forbid_dtd=False, - forbid_entities=True, forbid_external=True): - """Parse a document from a string, returning the resulting - Document node. - """ - if namespaces: - build_builder = DefusedExpatBuilderNS - else: - build_builder = DefusedExpatBuilder - builder = build_builder(forbid_dtd=forbid_dtd, - forbid_entities=forbid_entities, - forbid_external=forbid_external) - return builder.parseString(string) diff --git a/python/defusedxml/expatreader.py b/python/defusedxml/expatreader.py deleted file mode 100644 index ef6bc39..0000000 --- a/python/defusedxml/expatreader.py +++ /dev/null @@ -1,59 +0,0 @@ -# defusedxml -# -# Copyright (c) 2013 by Christian Heimes <christian@python.org> -# Licensed to PSF under a Contributor Agreement. -# See http://www.python.org/psf/license for licensing details. -"""Defused xml.sax.expatreader -""" -from __future__ import print_function, absolute_import - -from xml.sax.expatreader import ExpatParser as _ExpatParser - -from .common import (DTDForbidden, EntitiesForbidden, - ExternalReferenceForbidden) - -__origin__ = "xml.sax.expatreader" - - -class DefusedExpatParser(_ExpatParser): - """Defused SAX driver for the pyexpat C module.""" - - def __init__(self, namespaceHandling=0, bufsize=2 ** 16 - 20, - forbid_dtd=False, forbid_entities=True, - forbid_external=True): - _ExpatParser.__init__(self, namespaceHandling, bufsize) - self.forbid_dtd = forbid_dtd - self.forbid_entities = forbid_entities - self.forbid_external = forbid_external - - def defused_start_doctype_decl(self, name, sysid, pubid, - has_internal_subset): - raise DTDForbidden(name, sysid, pubid) - - def defused_entity_decl(self, name, is_parameter_entity, value, base, - sysid, pubid, notation_name): - raise EntitiesForbidden(name, value, base, sysid, pubid, notation_name) - - def defused_unparsed_entity_decl(self, name, base, sysid, pubid, - notation_name): - # expat 1.2 - raise EntitiesForbidden(name, None, base, sysid, pubid, notation_name) - - def defused_external_entity_ref_handler(self, context, base, sysid, - pubid): - raise ExternalReferenceForbidden(context, base, sysid, pubid) - - def reset(self): - _ExpatParser.reset(self) - parser = self._parser - if self.forbid_dtd: - parser.StartDoctypeDeclHandler = self.defused_start_doctype_decl - if self.forbid_entities: - parser.EntityDeclHandler = self.defused_entity_decl - parser.UnparsedEntityDeclHandler = self.defused_unparsed_entity_decl - if self.forbid_external: - parser.ExternalEntityRefHandler = self.defused_external_entity_ref_handler - - -def create_parser(*args, **kwargs): - return DefusedExpatParser(*args, **kwargs) diff --git a/python/defusedxml/lxml.py b/python/defusedxml/lxml.py deleted file mode 100644 index 7f3ee0b..0000000 --- a/python/defusedxml/lxml.py +++ /dev/null @@ -1,153 +0,0 @@ -# defusedxml -# -# Copyright (c) 2013 by Christian Heimes <christian@python.org> -# Licensed to PSF under a Contributor Agreement. -# See http://www.python.org/psf/license for licensing details. -"""Example code for lxml.etree protection - -The code has NO protection against decompression bombs. -""" -from __future__ import print_function, absolute_import - -import threading -from lxml import etree as _etree - -from .common import DTDForbidden, EntitiesForbidden, NotSupportedError - -LXML3 = _etree.LXML_VERSION[0] >= 3 - -__origin__ = "lxml.etree" - -tostring = _etree.tostring - - -class RestrictedElement(_etree.ElementBase): - """A restricted Element class that filters out instances of some classes - """ - __slots__ = () - # blacklist = (etree._Entity, etree._ProcessingInstruction, etree._Comment) - blacklist = _etree._Entity - - def _filter(self, iterator): - blacklist = self.blacklist - for child in iterator: - if isinstance(child, blacklist): - continue - yield child - - def __iter__(self): - iterator = super(RestrictedElement, self).__iter__() - return self._filter(iterator) - - def iterchildren(self, tag=None, reversed=False): - iterator = super(RestrictedElement, self).iterchildren( - tag=tag, reversed=reversed) - return self._filter(iterator) - - def iter(self, tag=None, *tags): - iterator = super(RestrictedElement, self).iter(tag=tag, *tags) - return self._filter(iterator) - - def iterdescendants(self, tag=None, *tags): - iterator = super(RestrictedElement, - self).iterdescendants(tag=tag, *tags) - return self._filter(iterator) - - def itersiblings(self, tag=None, preceding=False): - iterator = super(RestrictedElement, self).itersiblings( - tag=tag, preceding=preceding) - return self._filter(iterator) - - def getchildren(self): - iterator = super(RestrictedElement, self).__iter__() - return list(self._filter(iterator)) - - def getiterator(self, tag=None): - iterator = super(RestrictedElement, self).getiterator(tag) - return self._filter(iterator) - - -class GlobalParserTLS(threading.local): - """Thread local context for custom parser instances - """ - parser_config = { - 'resolve_entities': False, - # 'remove_comments': True, - # 'remove_pis': True, - } - - element_class = RestrictedElement - - def createDefaultParser(self): - parser = _etree.XMLParser(**self.parser_config) - element_class = self.element_class - if self.element_class is not None: - lookup = _etree.ElementDefaultClassLookup(element=element_class) - parser.set_element_class_lookup(lookup) - return parser - - def setDefaultParser(self, parser): - self._default_parser = parser - - def getDefaultParser(self): - parser = getattr(self, "_default_parser", None) - if parser is None: - parser = self.createDefaultParser() - self.setDefaultParser(parser) - return parser - - -_parser_tls = GlobalParserTLS() -getDefaultParser = _parser_tls.getDefaultParser - - -def check_docinfo(elementtree, forbid_dtd=False, forbid_entities=True): - """Check docinfo of an element tree for DTD and entity declarations - - The check for entity declarations needs lxml 3 or newer. lxml 2.x does - not support dtd.iterentities(). - """ - docinfo = elementtree.docinfo - if docinfo.doctype: - if forbid_dtd: - raise DTDForbidden(docinfo.doctype, - docinfo.system_url, - docinfo.public_id) - if forbid_entities and not LXML3: - # lxml < 3 has no iterentities() - raise NotSupportedError("Unable to check for entity declarations " - "in lxml 2.x") - - if forbid_entities: - for dtd in docinfo.internalDTD, docinfo.externalDTD: - if dtd is None: - continue - for entity in dtd.iterentities(): - raise EntitiesForbidden(entity.name, entity.content, None, - None, None, None) - - -def parse(source, parser=None, base_url=None, forbid_dtd=False, - forbid_entities=True): - if parser is None: - parser = getDefaultParser() - elementtree = _etree.parse(source, parser, base_url=base_url) - check_docinfo(elementtree, forbid_dtd, forbid_entities) - return elementtree - - -def fromstring(text, parser=None, base_url=None, forbid_dtd=False, - forbid_entities=True): - if parser is None: - parser = getDefaultParser() - rootelement = _etree.fromstring(text, parser, base_url=base_url) - elementtree = rootelement.getroottree() - check_docinfo(elementtree, forbid_dtd, forbid_entities) - return rootelement - - -XML = fromstring - - -def iterparse(*args, **kwargs): - raise NotSupportedError("defused lxml.etree.iterparse not available") diff --git a/python/defusedxml/minidom.py b/python/defusedxml/minidom.py deleted file mode 100644 index 0fd8684..0000000 --- a/python/defusedxml/minidom.py +++ /dev/null @@ -1,42 +0,0 @@ -# defusedxml -# -# Copyright (c) 2013 by Christian Heimes <christian@python.org> -# Licensed to PSF under a Contributor Agreement. -# See http://www.python.org/psf/license for licensing details. -"""Defused xml.dom.minidom -""" -from __future__ import print_function, absolute_import - -from xml.dom.minidom import _do_pulldom_parse -from . import expatbuilder as _expatbuilder -from . import pulldom as _pulldom - -__origin__ = "xml.dom.minidom" - - -def parse(file, parser=None, bufsize=None, forbid_dtd=False, - forbid_entities=True, forbid_external=True): - """Parse a file into a DOM by filename or file object.""" - if parser is None and not bufsize: - return _expatbuilder.parse(file, forbid_dtd=forbid_dtd, - forbid_entities=forbid_entities, - forbid_external=forbid_external) - else: - return _do_pulldom_parse(_pulldom.parse, (file,), - {'parser': parser, 'bufsize': bufsize, - 'forbid_dtd': forbid_dtd, 'forbid_entities': forbid_entities, - 'forbid_external': forbid_external}) - - -def parseString(string, parser=None, forbid_dtd=False, - forbid_entities=True, forbid_external=True): - """Parse a file into a DOM from a string.""" - if parser is None: - return _expatbuilder.parseString(string, forbid_dtd=forbid_dtd, - forbid_entities=forbid_entities, - forbid_external=forbid_external) - else: - return _do_pulldom_parse(_pulldom.parseString, (string,), - {'parser': parser, 'forbid_dtd': forbid_dtd, - 'forbid_entities': forbid_entities, - 'forbid_external': forbid_external}) diff --git a/python/defusedxml/pulldom.py b/python/defusedxml/pulldom.py deleted file mode 100644 index fc9e466..0000000 --- a/python/defusedxml/pulldom.py +++ /dev/null @@ -1,34 +0,0 @@ -# defusedxml -# -# Copyright (c) 2013 by Christian Heimes <christian@python.org> -# Licensed to PSF under a Contributor Agreement. -# See http://www.python.org/psf/license for licensing details. -"""Defused xml.dom.pulldom -""" -from __future__ import print_function, absolute_import - -from xml.dom.pulldom import parse as _parse -from xml.dom.pulldom import parseString as _parseString -from .sax import make_parser - -__origin__ = "xml.dom.pulldom" - - -def parse(stream_or_string, parser=None, bufsize=None, forbid_dtd=False, - forbid_entities=True, forbid_external=True): - if parser is None: - parser = make_parser() - parser.forbid_dtd = forbid_dtd - parser.forbid_entities = forbid_entities - parser.forbid_external = forbid_external - return _parse(stream_or_string, parser, bufsize) - - -def parseString(string, parser=None, forbid_dtd=False, - forbid_entities=True, forbid_external=True): - if parser is None: - parser = make_parser() - parser.forbid_dtd = forbid_dtd - parser.forbid_entities = forbid_entities - parser.forbid_external = forbid_external - return _parseString(string, parser) diff --git a/python/defusedxml/sax.py b/python/defusedxml/sax.py deleted file mode 100644 index 534d0ca..0000000 --- a/python/defusedxml/sax.py +++ /dev/null @@ -1,49 +0,0 @@ -# defusedxml -# -# Copyright (c) 2013 by Christian Heimes <christian@python.org> -# Licensed to PSF under a Contributor Agreement. -# See http://www.python.org/psf/license for licensing details. -"""Defused xml.sax -""" -from __future__ import print_function, absolute_import - -from xml.sax import InputSource as _InputSource -from xml.sax import ErrorHandler as _ErrorHandler - -from . import expatreader - -__origin__ = "xml.sax" - - -def parse(source, handler, errorHandler=_ErrorHandler(), forbid_dtd=False, - forbid_entities=True, forbid_external=True): - parser = make_parser() - parser.setContentHandler(handler) - parser.setErrorHandler(errorHandler) - parser.forbid_dtd = forbid_dtd - parser.forbid_entities = forbid_entities - parser.forbid_external = forbid_external - parser.parse(source) - - -def parseString(string, handler, errorHandler=_ErrorHandler(), - forbid_dtd=False, forbid_entities=True, - forbid_external=True): - from io import BytesIO - - if errorHandler is None: - errorHandler = _ErrorHandler() - parser = make_parser() - parser.setContentHandler(handler) - parser.setErrorHandler(errorHandler) - parser.forbid_dtd = forbid_dtd - parser.forbid_entities = forbid_entities - parser.forbid_external = forbid_external - - inpsrc = _InputSource() - inpsrc.setByteStream(BytesIO(string)) - parser.parse(inpsrc) - - -def make_parser(parser_list=[]): - return expatreader.create_parser() diff --git a/python/defusedxml/xmlrpc.py b/python/defusedxml/xmlrpc.py deleted file mode 100644 index 2a456e6..0000000 --- a/python/defusedxml/xmlrpc.py +++ /dev/null @@ -1,157 +0,0 @@ -# defusedxml -# -# Copyright (c) 2013 by Christian Heimes <christian@python.org> -# Licensed to PSF under a Contributor Agreement. -# See http://www.python.org/psf/license for licensing details. -"""Defused xmlrpclib - -Also defuses gzip bomb -""" -from __future__ import print_function, absolute_import - -import io - -from .common import ( - DTDForbidden, EntitiesForbidden, ExternalReferenceForbidden, PY3) - -if PY3: - __origin__ = "xmlrpc.client" - from xmlrpc.client import ExpatParser - from xmlrpc import client as xmlrpc_client - from xmlrpc import server as xmlrpc_server - from xmlrpc.client import gzip_decode as _orig_gzip_decode - from xmlrpc.client import GzipDecodedResponse as _OrigGzipDecodedResponse -else: - __origin__ = "xmlrpclib" - from xmlrpclib import ExpatParser - import xmlrpclib as xmlrpc_client - xmlrpc_server = None - from xmlrpclib import gzip_decode as _orig_gzip_decode - from xmlrpclib import GzipDecodedResponse as _OrigGzipDecodedResponse - -try: - import gzip -except ImportError: - gzip = None - - -# Limit maximum request size to prevent resource exhaustion DoS -# Also used to limit maximum amount of gzip decoded data in order to prevent -# decompression bombs -# A value of -1 or smaller disables the limit -MAX_DATA = 30 * 1024 * 1024 # 30 MB - - -def defused_gzip_decode(data, limit=None): - """gzip encoded data -> unencoded data - - Decode data using the gzip content encoding as described in RFC 1952 - """ - if not gzip: - raise NotImplementedError - if limit is None: - limit = MAX_DATA - f = io.BytesIO(data) - gzf = gzip.GzipFile(mode="rb", fileobj=f) - try: - if limit < 0: # no limit - decoded = gzf.read() - else: - decoded = gzf.read(limit + 1) - except IOError: - raise ValueError("invalid data") - f.close() - gzf.close() - if limit >= 0 and len(decoded) > limit: - raise ValueError("max gzipped payload length exceeded") - return decoded - - -class DefusedGzipDecodedResponse(gzip.GzipFile if gzip else object): - """a file-like object to decode a response encoded with the gzip - method, as described in RFC 1952. - """ - - def __init__(self, response, limit=None): - # response doesn't support tell() and read(), required by - # GzipFile - if not gzip: - raise NotImplementedError - self.limit = limit = limit if limit is not None else MAX_DATA - if limit < 0: # no limit - data = response.read() - self.readlength = None - else: - data = response.read(limit + 1) - self.readlength = 0 - if limit >= 0 and len(data) > limit: - raise ValueError("max payload length exceeded") - self.stringio = io.BytesIO(data) - gzip.GzipFile.__init__(self, mode="rb", fileobj=self.stringio) - - def read(self, n): - if self.limit >= 0: - left = self.limit - self.readlength - n = min(n, left + 1) - data = gzip.GzipFile.read(self, n) - self.readlength += len(data) - if self.readlength > self.limit: - raise ValueError("max payload length exceeded") - return data - else: - return gzip.GzipFile.read(self, n) - - def close(self): - gzip.GzipFile.close(self) - self.stringio.close() - - -class DefusedExpatParser(ExpatParser): - - def __init__(self, target, forbid_dtd=False, forbid_entities=True, - forbid_external=True): - ExpatParser.__init__(self, target) - self.forbid_dtd = forbid_dtd - self.forbid_entities = forbid_entities - self.forbid_external = forbid_external - parser = self._parser - if self.forbid_dtd: - parser.StartDoctypeDeclHandler = self.defused_start_doctype_decl - if self.forbid_entities: - parser.EntityDeclHandler = self.defused_entity_decl - parser.UnparsedEntityDeclHandler = self.defused_unparsed_entity_decl - if self.forbid_external: - parser.ExternalEntityRefHandler = self.defused_external_entity_ref_handler - - def defused_start_doctype_decl(self, name, sysid, pubid, - has_internal_subset): - raise DTDForbidden(name, sysid, pubid) - - def defused_entity_decl(self, name, is_parameter_entity, value, base, - sysid, pubid, notation_name): - raise EntitiesForbidden(name, value, base, sysid, pubid, notation_name) - - def defused_unparsed_entity_decl(self, name, base, sysid, pubid, - notation_name): - # expat 1.2 - raise EntitiesForbidden(name, None, base, sysid, pubid, notation_name) - - def defused_external_entity_ref_handler(self, context, base, sysid, - pubid): - raise ExternalReferenceForbidden(context, base, sysid, pubid) - - -def monkey_patch(): - xmlrpc_client.FastParser = DefusedExpatParser - xmlrpc_client.GzipDecodedResponse = DefusedGzipDecodedResponse - xmlrpc_client.gzip_decode = defused_gzip_decode - if xmlrpc_server: - xmlrpc_server.gzip_decode = defused_gzip_decode - - -def unmonkey_patch(): - xmlrpc_client.FastParser = None - xmlrpc_client.GzipDecodedResponse = _OrigGzipDecodedResponse - xmlrpc_client.gzip_decode = _orig_gzip_decode - if xmlrpc_server: - xmlrpc_server.gzip_decode = _orig_gzip_decode diff --git a/python/flask/__init__.py b/python/flask/__init__.py deleted file mode 100644 index 59f0fff..0000000 --- a/python/flask/__init__.py +++ /dev/null @@ -1,49 +0,0 @@ -# -*- coding: utf-8 -*- -""" - flask - ~~~~~ - - A microframework based on Werkzeug. It's extensively documented - and follows best practice patterns. - - :copyright: © 2010 by the Pallets team. - :license: BSD, see LICENSE for more details. -""" - -__version__ = '1.0.3' - -# utilities we import from Werkzeug and Jinja2 that are unused -# in the module but are exported as public interface. -from werkzeug.exceptions import abort -from werkzeug.utils import redirect -from jinja2 import Markup, escape - -from .app import Flask, Request, Response -from .config import Config -from .helpers import url_for, flash, send_file, send_from_directory, \ - get_flashed_messages, get_template_attribute, make_response, safe_join, \ - stream_with_context -from .globals import current_app, g, request, session, _request_ctx_stack, \ - _app_ctx_stack -from .ctx import has_request_context, has_app_context, \ - after_this_request, copy_current_request_context -from .blueprints import Blueprint -from .templating import render_template, render_template_string - -# the signals -from .signals import signals_available, template_rendered, request_started, \ - request_finished, got_request_exception, request_tearing_down, \ - appcontext_tearing_down, appcontext_pushed, \ - appcontext_popped, message_flashed, before_render_template - -# We're not exposing the actual json module but a convenient wrapper around -# it. -from . import json - -# This was the only thing that Flask used to export at one point and it had -# a more generic name. -jsonify = json.jsonify - -# backwards compat, goes away in 1.0 -from .sessions import SecureCookieSession as Session -json_available = True diff --git a/python/flask/__main__.py b/python/flask/__main__.py deleted file mode 100644 index 4aee654..0000000 --- a/python/flask/__main__.py +++ /dev/null @@ -1,14 +0,0 @@ -# -*- coding: utf-8 -*- -""" - flask.__main__ - ~~~~~~~~~~~~~~ - - Alias for flask.run for the command line. - - :copyright: © 2010 by the Pallets team. - :license: BSD, see LICENSE for more details. -""" - -if __name__ == '__main__': - from .cli import main - main(as_module=True) diff --git a/python/flask/_compat.py b/python/flask/_compat.py deleted file mode 100644 index dfbaae9..0000000 --- a/python/flask/_compat.py +++ /dev/null @@ -1,101 +0,0 @@ -# -*- coding: utf-8 -*- -""" - flask._compat - ~~~~~~~~~~~~~ - - Some py2/py3 compatibility support based on a stripped down - version of six so we don't have to depend on a specific version - of it. - - :copyright: © 2010 by the Pallets team. - :license: BSD, see LICENSE for more details. -""" - -import sys - -PY2 = sys.version_info[0] == 2 -_identity = lambda x: x - - -if not PY2: - text_type = str - string_types = (str,) - integer_types = (int,) - - iterkeys = lambda d: iter(d.keys()) - itervalues = lambda d: iter(d.values()) - iteritems = lambda d: iter(d.items()) - - from inspect import getfullargspec as getargspec - from io import StringIO - import collections.abc as collections_abc - - def reraise(tp, value, tb=None): - if value.__traceback__ is not tb: - raise value.with_traceback(tb) - raise value - - implements_to_string = _identity - -else: - text_type = unicode - string_types = (str, unicode) - integer_types = (int, long) - - iterkeys = lambda d: d.iterkeys() - itervalues = lambda d: d.itervalues() - iteritems = lambda d: d.iteritems() - - from inspect import getargspec - from cStringIO import StringIO - import collections as collections_abc - - exec('def reraise(tp, value, tb=None):\n raise tp, value, tb') - - def implements_to_string(cls): - cls.__unicode__ = cls.__str__ - cls.__str__ = lambda x: x.__unicode__().encode('utf-8') - return cls - - -def with_metaclass(meta, *bases): - """Create a base class with a metaclass.""" - # This requires a bit of explanation: the basic idea is to make a - # dummy metaclass for one level of class instantiation that replaces - # itself with the actual metaclass. - class metaclass(type): - def __new__(cls, name, this_bases, d): - return meta(name, bases, d) - return type.__new__(metaclass, 'temporary_class', (), {}) - - -# Certain versions of pypy have a bug where clearing the exception stack -# breaks the __exit__ function in a very peculiar way. The second level of -# exception blocks is necessary because pypy seems to forget to check if an -# exception happened until the next bytecode instruction? -# -# Relevant PyPy bugfix commit: -# https://bitbucket.org/pypy/pypy/commits/77ecf91c635a287e88e60d8ddb0f4e9df4003301 -# According to ronan on #pypy IRC, it is released in PyPy2 2.3 and later -# versions. -# -# Ubuntu 14.04 has PyPy 2.2.1, which does exhibit this bug. -BROKEN_PYPY_CTXMGR_EXIT = False -if hasattr(sys, 'pypy_version_info'): - class _Mgr(object): - def __enter__(self): - return self - def __exit__(self, *args): - if hasattr(sys, 'exc_clear'): - # Python 3 (PyPy3) doesn't have exc_clear - sys.exc_clear() - try: - try: - with _Mgr(): - raise AssertionError() - except: - raise - except TypeError: - BROKEN_PYPY_CTXMGR_EXIT = True - except AssertionError: - pass diff --git a/python/flask/app.py b/python/flask/app.py deleted file mode 100644 index c570a95..0000000 --- a/python/flask/app.py +++ /dev/null @@ -1,2334 +0,0 @@ -# -*- coding: utf-8 -*- -""" - flask.app - ~~~~~~~~~ - - This module implements the central WSGI application object. - - :copyright: © 2010 by the Pallets team. - :license: BSD, see LICENSE for more details. -""" - -import os -import sys -import warnings -from datetime import timedelta -from functools import update_wrapper -from itertools import chain -from threading import Lock - -from werkzeug.datastructures import Headers, ImmutableDict -from werkzeug.exceptions import BadRequest, BadRequestKeyError, HTTPException, \ - InternalServerError, MethodNotAllowed, default_exceptions -from werkzeug.routing import BuildError, Map, RequestRedirect, \ - RoutingException, Rule - -from . import cli, json -from ._compat import integer_types, reraise, string_types, text_type -from .config import Config, ConfigAttribute -from .ctx import AppContext, RequestContext, _AppCtxGlobals -from .globals import _request_ctx_stack, g, request, session -from .helpers import ( - _PackageBoundObject, - _endpoint_from_view_func, find_package, get_env, get_debug_flag, - get_flashed_messages, locked_cached_property, url_for, get_load_dotenv -) -from .logging import create_logger -from .sessions import SecureCookieSessionInterface -from .signals import appcontext_tearing_down, got_request_exception, \ - request_finished, request_started, request_tearing_down -from .templating import DispatchingJinjaLoader, Environment, \ - _default_template_ctx_processor -from .wrappers import Request, Response - -# a singleton sentinel value for parameter defaults -_sentinel = object() - - -def _make_timedelta(value): - if not isinstance(value, timedelta): - return timedelta(seconds=value) - return value - - -def setupmethod(f): - """Wraps a method so that it performs a check in debug mode if the - first request was already handled. - """ - def wrapper_func(self, *args, **kwargs): - if self.debug and self._got_first_request: - raise AssertionError('A setup function was called after the ' - 'first request was handled. This usually indicates a bug ' - 'in the application where a module was not imported ' - 'and decorators or other functionality was called too late.\n' - 'To fix this make sure to import all your view modules, ' - 'database models and everything related at a central place ' - 'before the application starts serving requests.') - return f(self, *args, **kwargs) - return update_wrapper(wrapper_func, f) - - -class Flask(_PackageBoundObject): - """The flask object implements a WSGI application and acts as the central - object. It is passed the name of the module or package of the - application. Once it is created it will act as a central registry for - the view functions, the URL rules, template configuration and much more. - - The name of the package is used to resolve resources from inside the - package or the folder the module is contained in depending on if the - package parameter resolves to an actual python package (a folder with - an :file:`__init__.py` file inside) or a standard module (just a ``.py`` file). - - For more information about resource loading, see :func:`open_resource`. - - Usually you create a :class:`Flask` instance in your main module or - in the :file:`__init__.py` file of your package like this:: - - from flask import Flask - app = Flask(__name__) - - .. admonition:: About the First Parameter - - The idea of the first parameter is to give Flask an idea of what - belongs to your application. This name is used to find resources - on the filesystem, can be used by extensions to improve debugging - information and a lot more. - - So it's important what you provide there. If you are using a single - module, `__name__` is always the correct value. If you however are - using a package, it's usually recommended to hardcode the name of - your package there. - - For example if your application is defined in :file:`yourapplication/app.py` - you should create it with one of the two versions below:: - - app = Flask('yourapplication') - app = Flask(__name__.split('.')[0]) - - Why is that? The application will work even with `__name__`, thanks - to how resources are looked up. However it will make debugging more - painful. Certain extensions can make assumptions based on the - import name of your application. For example the Flask-SQLAlchemy - extension will look for the code in your application that triggered - an SQL query in debug mode. If the import name is not properly set - up, that debugging information is lost. (For example it would only - pick up SQL queries in `yourapplication.app` and not - `yourapplication.views.frontend`) - - .. versionadded:: 0.7 - The `static_url_path`, `static_folder`, and `template_folder` - parameters were added. - - .. versionadded:: 0.8 - The `instance_path` and `instance_relative_config` parameters were - added. - - .. versionadded:: 0.11 - The `root_path` parameter was added. - - .. versionadded:: 1.0 - The ``host_matching`` and ``static_host`` parameters were added. - - .. versionadded:: 1.0 - The ``subdomain_matching`` parameter was added. Subdomain - matching needs to be enabled manually now. Setting - :data:`SERVER_NAME` does not implicitly enable it. - - :param import_name: the name of the application package - :param static_url_path: can be used to specify a different path for the - static files on the web. Defaults to the name - of the `static_folder` folder. - :param static_folder: the folder with static files that should be served - at `static_url_path`. Defaults to the ``'static'`` - folder in the root path of the application. - :param static_host: the host to use when adding the static route. - Defaults to None. Required when using ``host_matching=True`` - with a ``static_folder`` configured. - :param host_matching: set ``url_map.host_matching`` attribute. - Defaults to False. - :param subdomain_matching: consider the subdomain relative to - :data:`SERVER_NAME` when matching routes. Defaults to False. - :param template_folder: the folder that contains the templates that should - be used by the application. Defaults to - ``'templates'`` folder in the root path of the - application. - :param instance_path: An alternative instance path for the application. - By default the folder ``'instance'`` next to the - package or module is assumed to be the instance - path. - :param instance_relative_config: if set to ``True`` relative filenames - for loading the config are assumed to - be relative to the instance path instead - of the application root. - :param root_path: Flask by default will automatically calculate the path - to the root of the application. In certain situations - this cannot be achieved (for instance if the package - is a Python 3 namespace package) and needs to be - manually defined. - """ - - #: The class that is used for request objects. See :class:`~flask.Request` - #: for more information. - request_class = Request - - #: The class that is used for response objects. See - #: :class:`~flask.Response` for more information. - response_class = Response - - #: The class that is used for the Jinja environment. - #: - #: .. versionadded:: 0.11 - jinja_environment = Environment - - #: The class that is used for the :data:`~flask.g` instance. - #: - #: Example use cases for a custom class: - #: - #: 1. Store arbitrary attributes on flask.g. - #: 2. Add a property for lazy per-request database connectors. - #: 3. Return None instead of AttributeError on unexpected attributes. - #: 4. Raise exception if an unexpected attr is set, a "controlled" flask.g. - #: - #: In Flask 0.9 this property was called `request_globals_class` but it - #: was changed in 0.10 to :attr:`app_ctx_globals_class` because the - #: flask.g object is now application context scoped. - #: - #: .. versionadded:: 0.10 - app_ctx_globals_class = _AppCtxGlobals - - #: The class that is used for the ``config`` attribute of this app. - #: Defaults to :class:`~flask.Config`. - #: - #: Example use cases for a custom class: - #: - #: 1. Default values for certain config options. - #: 2. Access to config values through attributes in addition to keys. - #: - #: .. versionadded:: 0.11 - config_class = Config - - #: The testing flag. Set this to ``True`` to enable the test mode of - #: Flask extensions (and in the future probably also Flask itself). - #: For example this might activate test helpers that have an - #: additional runtime cost which should not be enabled by default. - #: - #: If this is enabled and PROPAGATE_EXCEPTIONS is not changed from the - #: default it's implicitly enabled. - #: - #: This attribute can also be configured from the config with the - #: ``TESTING`` configuration key. Defaults to ``False``. - testing = ConfigAttribute('TESTING') - - #: If a secret key is set, cryptographic components can use this to - #: sign cookies and other things. Set this to a complex random value - #: when you want to use the secure cookie for instance. - #: - #: This attribute can also be configured from the config with the - #: :data:`SECRET_KEY` configuration key. Defaults to ``None``. - secret_key = ConfigAttribute('SECRET_KEY') - - #: The secure cookie uses this for the name of the session cookie. - #: - #: This attribute can also be configured from the config with the - #: ``SESSION_COOKIE_NAME`` configuration key. Defaults to ``'session'`` - session_cookie_name = ConfigAttribute('SESSION_COOKIE_NAME') - - #: A :class:`~datetime.timedelta` which is used to set the expiration - #: date of a permanent session. The default is 31 days which makes a - #: permanent session survive for roughly one month. - #: - #: This attribute can also be configured from the config with the - #: ``PERMANENT_SESSION_LIFETIME`` configuration key. Defaults to - #: ``timedelta(days=31)`` - permanent_session_lifetime = ConfigAttribute('PERMANENT_SESSION_LIFETIME', - get_converter=_make_timedelta) - - #: A :class:`~datetime.timedelta` which is used as default cache_timeout - #: for the :func:`send_file` functions. The default is 12 hours. - #: - #: This attribute can also be configured from the config with the - #: ``SEND_FILE_MAX_AGE_DEFAULT`` configuration key. This configuration - #: variable can also be set with an integer value used as seconds. - #: Defaults to ``timedelta(hours=12)`` - send_file_max_age_default = ConfigAttribute('SEND_FILE_MAX_AGE_DEFAULT', - get_converter=_make_timedelta) - - #: Enable this if you want to use the X-Sendfile feature. Keep in - #: mind that the server has to support this. This only affects files - #: sent with the :func:`send_file` method. - #: - #: .. versionadded:: 0.2 - #: - #: This attribute can also be configured from the config with the - #: ``USE_X_SENDFILE`` configuration key. Defaults to ``False``. - use_x_sendfile = ConfigAttribute('USE_X_SENDFILE') - - #: The JSON encoder class to use. Defaults to :class:`~flask.json.JSONEncoder`. - #: - #: .. versionadded:: 0.10 - json_encoder = json.JSONEncoder - - #: The JSON decoder class to use. Defaults to :class:`~flask.json.JSONDecoder`. - #: - #: .. versionadded:: 0.10 - json_decoder = json.JSONDecoder - - #: Options that are passed directly to the Jinja2 environment. - jinja_options = ImmutableDict( - extensions=['jinja2.ext.autoescape', 'jinja2.ext.with_'] - ) - - #: Default configuration parameters. - default_config = ImmutableDict({ - 'ENV': None, - 'DEBUG': None, - 'TESTING': False, - 'PROPAGATE_EXCEPTIONS': None, - 'PRESERVE_CONTEXT_ON_EXCEPTION': None, - 'SECRET_KEY': None, - 'PERMANENT_SESSION_LIFETIME': timedelta(days=31), - 'USE_X_SENDFILE': False, - 'SERVER_NAME': None, - 'APPLICATION_ROOT': '/', - 'SESSION_COOKIE_NAME': 'session', - 'SESSION_COOKIE_DOMAIN': None, - 'SESSION_COOKIE_PATH': None, - 'SESSION_COOKIE_HTTPONLY': True, - 'SESSION_COOKIE_SECURE': False, - 'SESSION_COOKIE_SAMESITE': None, - 'SESSION_REFRESH_EACH_REQUEST': True, - 'MAX_CONTENT_LENGTH': None, - 'SEND_FILE_MAX_AGE_DEFAULT': timedelta(hours=12), - 'TRAP_BAD_REQUEST_ERRORS': None, - 'TRAP_HTTP_EXCEPTIONS': False, - 'EXPLAIN_TEMPLATE_LOADING': False, - 'PREFERRED_URL_SCHEME': 'http', - 'JSON_AS_ASCII': True, - 'JSON_SORT_KEYS': True, - 'JSONIFY_PRETTYPRINT_REGULAR': False, - 'JSONIFY_MIMETYPE': 'application/json', - 'TEMPLATES_AUTO_RELOAD': None, - 'MAX_COOKIE_SIZE': 4093, - }) - - #: The rule object to use for URL rules created. This is used by - #: :meth:`add_url_rule`. Defaults to :class:`werkzeug.routing.Rule`. - #: - #: .. versionadded:: 0.7 - url_rule_class = Rule - - #: the test client that is used with when `test_client` is used. - #: - #: .. versionadded:: 0.7 - test_client_class = None - - #: The :class:`~click.testing.CliRunner` subclass, by default - #: :class:`~flask.testing.FlaskCliRunner` that is used by - #: :meth:`test_cli_runner`. Its ``__init__`` method should take a - #: Flask app object as the first argument. - #: - #: .. versionadded:: 1.0 - test_cli_runner_class = None - - #: the session interface to use. By default an instance of - #: :class:`~flask.sessions.SecureCookieSessionInterface` is used here. - #: - #: .. versionadded:: 0.8 - session_interface = SecureCookieSessionInterface() - - # TODO remove the next three attrs when Sphinx :inherited-members: works - # https://github.com/sphinx-doc/sphinx/issues/741 - - #: The name of the package or module that this app belongs to. Do not - #: change this once it is set by the constructor. - import_name = None - - #: Location of the template files to be added to the template lookup. - #: ``None`` if templates should not be added. - template_folder = None - - #: Absolute path to the package on the filesystem. Used to look up - #: resources contained in the package. - root_path = None - - def __init__( - self, - import_name, - static_url_path=None, - static_folder='static', - static_host=None, - host_matching=False, - subdomain_matching=False, - template_folder='templates', - instance_path=None, - instance_relative_config=False, - root_path=None - ): - _PackageBoundObject.__init__( - self, - import_name, - template_folder=template_folder, - root_path=root_path - ) - - if static_url_path is not None: - self.static_url_path = static_url_path - - if static_folder is not None: - self.static_folder = static_folder - - if instance_path is None: - instance_path = self.auto_find_instance_path() - elif not os.path.isabs(instance_path): - raise ValueError( - 'If an instance path is provided it must be absolute.' - ' A relative path was given instead.' - ) - - #: Holds the path to the instance folder. - #: - #: .. versionadded:: 0.8 - self.instance_path = instance_path - - #: The configuration dictionary as :class:`Config`. This behaves - #: exactly like a regular dictionary but supports additional methods - #: to load a config from files. - self.config = self.make_config(instance_relative_config) - - #: A dictionary of all view functions registered. The keys will - #: be function names which are also used to generate URLs and - #: the values are the function objects themselves. - #: To register a view function, use the :meth:`route` decorator. - self.view_functions = {} - - #: A dictionary of all registered error handlers. The key is ``None`` - #: for error handlers active on the application, otherwise the key is - #: the name of the blueprint. Each key points to another dictionary - #: where the key is the status code of the http exception. The - #: special key ``None`` points to a list of tuples where the first item - #: is the class for the instance check and the second the error handler - #: function. - #: - #: To register an error handler, use the :meth:`errorhandler` - #: decorator. - self.error_handler_spec = {} - - #: A list of functions that are called when :meth:`url_for` raises a - #: :exc:`~werkzeug.routing.BuildError`. Each function registered here - #: is called with `error`, `endpoint` and `values`. If a function - #: returns ``None`` or raises a :exc:`BuildError` the next function is - #: tried. - #: - #: .. versionadded:: 0.9 - self.url_build_error_handlers = [] - - #: A dictionary with lists of functions that will be called at the - #: beginning of each request. The key of the dictionary is the name of - #: the blueprint this function is active for, or ``None`` for all - #: requests. To register a function, use the :meth:`before_request` - #: decorator. - self.before_request_funcs = {} - - #: A list of functions that will be called at the beginning of the - #: first request to this instance. To register a function, use the - #: :meth:`before_first_request` decorator. - #: - #: .. versionadded:: 0.8 - self.before_first_request_funcs = [] - - #: A dictionary with lists of functions that should be called after - #: each request. The key of the dictionary is the name of the blueprint - #: this function is active for, ``None`` for all requests. This can for - #: example be used to close database connections. To register a function - #: here, use the :meth:`after_request` decorator. - self.after_request_funcs = {} - - #: A dictionary with lists of functions that are called after - #: each request, even if an exception has occurred. The key of the - #: dictionary is the name of the blueprint this function is active for, - #: ``None`` for all requests. These functions are not allowed to modify - #: the request, and their return values are ignored. If an exception - #: occurred while processing the request, it gets passed to each - #: teardown_request function. To register a function here, use the - #: :meth:`teardown_request` decorator. - #: - #: .. versionadded:: 0.7 - self.teardown_request_funcs = {} - - #: A list of functions that are called when the application context - #: is destroyed. Since the application context is also torn down - #: if the request ends this is the place to store code that disconnects - #: from databases. - #: - #: .. versionadded:: 0.9 - self.teardown_appcontext_funcs = [] - - #: A dictionary with lists of functions that are called before the - #: :attr:`before_request_funcs` functions. The key of the dictionary is - #: the name of the blueprint this function is active for, or ``None`` - #: for all requests. To register a function, use - #: :meth:`url_value_preprocessor`. - #: - #: .. versionadded:: 0.7 - self.url_value_preprocessors = {} - - #: A dictionary with lists of functions that can be used as URL value - #: preprocessors. The key ``None`` here is used for application wide - #: callbacks, otherwise the key is the name of the blueprint. - #: Each of these functions has the chance to modify the dictionary - #: of URL values before they are used as the keyword arguments of the - #: view function. For each function registered this one should also - #: provide a :meth:`url_defaults` function that adds the parameters - #: automatically again that were removed that way. - #: - #: .. versionadded:: 0.7 - self.url_default_functions = {} - - #: A dictionary with list of functions that are called without argument - #: to populate the template context. The key of the dictionary is the - #: name of the blueprint this function is active for, ``None`` for all - #: requests. Each returns a dictionary that the template context is - #: updated with. To register a function here, use the - #: :meth:`context_processor` decorator. - self.template_context_processors = { - None: [_default_template_ctx_processor] - } - - #: A list of shell context processor functions that should be run - #: when a shell context is created. - #: - #: .. versionadded:: 0.11 - self.shell_context_processors = [] - - #: all the attached blueprints in a dictionary by name. Blueprints - #: can be attached multiple times so this dictionary does not tell - #: you how often they got attached. - #: - #: .. versionadded:: 0.7 - self.blueprints = {} - self._blueprint_order = [] - - #: a place where extensions can store application specific state. For - #: example this is where an extension could store database engines and - #: similar things. For backwards compatibility extensions should register - #: themselves like this:: - #: - #: if not hasattr(app, 'extensions'): - #: app.extensions = {} - #: app.extensions['extensionname'] = SomeObject() - #: - #: The key must match the name of the extension module. For example in - #: case of a "Flask-Foo" extension in `flask_foo`, the key would be - #: ``'foo'``. - #: - #: .. versionadded:: 0.7 - self.extensions = {} - - #: The :class:`~werkzeug.routing.Map` for this instance. You can use - #: this to change the routing converters after the class was created - #: but before any routes are connected. Example:: - #: - #: from werkzeug.routing import BaseConverter - #: - #: class ListConverter(BaseConverter): - #: def to_python(self, value): - #: return value.split(',') - #: def to_url(self, values): - #: return ','.join(super(ListConverter, self).to_url(value) - #: for value in values) - #: - #: app = Flask(__name__) - #: app.url_map.converters['list'] = ListConverter - self.url_map = Map() - - self.url_map.host_matching = host_matching - self.subdomain_matching = subdomain_matching - - # tracks internally if the application already handled at least one - # request. - self._got_first_request = False - self._before_request_lock = Lock() - - # Add a static route using the provided static_url_path, static_host, - # and static_folder if there is a configured static_folder. - # Note we do this without checking if static_folder exists. - # For one, it might be created while the server is running (e.g. during - # development). Also, Google App Engine stores static files somewhere - if self.has_static_folder: - assert bool(static_host) == host_matching, 'Invalid static_host/host_matching combination' - self.add_url_rule( - self.static_url_path + '/<path:filename>', - endpoint='static', - host=static_host, - view_func=self.send_static_file - ) - - #: The click command line context for this application. Commands - #: registered here show up in the :command:`flask` command once the - #: application has been discovered. The default commands are - #: provided by Flask itself and can be overridden. - #: - #: This is an instance of a :class:`click.Group` object. - self.cli = cli.AppGroup(self.name) - - @locked_cached_property - def name(self): - """The name of the application. This is usually the import name - with the difference that it's guessed from the run file if the - import name is main. This name is used as a display name when - Flask needs the name of the application. It can be set and overridden - to change the value. - - .. versionadded:: 0.8 - """ - if self.import_name == '__main__': - fn = getattr(sys.modules['__main__'], '__file__', None) - if fn is None: - return '__main__' - return os.path.splitext(os.path.basename(fn))[0] - return self.import_name - - @property - def propagate_exceptions(self): - """Returns the value of the ``PROPAGATE_EXCEPTIONS`` configuration - value in case it's set, otherwise a sensible default is returned. - - .. versionadded:: 0.7 - """ - rv = self.config['PROPAGATE_EXCEPTIONS'] - if rv is not None: - return rv - return self.testing or self.debug - - @property - def preserve_context_on_exception(self): - """Returns the value of the ``PRESERVE_CONTEXT_ON_EXCEPTION`` - configuration value in case it's set, otherwise a sensible default - is returned. - - .. versionadded:: 0.7 - """ - rv = self.config['PRESERVE_CONTEXT_ON_EXCEPTION'] - if rv is not None: - return rv - return self.debug - - @locked_cached_property - def logger(self): - """The ``'flask.app'`` logger, a standard Python - :class:`~logging.Logger`. - - In debug mode, the logger's :attr:`~logging.Logger.level` will be set - to :data:`~logging.DEBUG`. - - If there are no handlers configured, a default handler will be added. - See :ref:`logging` for more information. - - .. versionchanged:: 1.0 - Behavior was simplified. The logger is always named - ``flask.app``. The level is only set during configuration, it - doesn't check ``app.debug`` each time. Only one format is used, - not different ones depending on ``app.debug``. No handlers are - removed, and a handler is only added if no handlers are already - configured. - - .. versionadded:: 0.3 - """ - return create_logger(self) - - @locked_cached_property - def jinja_env(self): - """The Jinja2 environment used to load templates.""" - return self.create_jinja_environment() - - @property - def got_first_request(self): - """This attribute is set to ``True`` if the application started - handling the first request. - - .. versionadded:: 0.8 - """ - return self._got_first_request - - def make_config(self, instance_relative=False): - """Used to create the config attribute by the Flask constructor. - The `instance_relative` parameter is passed in from the constructor - of Flask (there named `instance_relative_config`) and indicates if - the config should be relative to the instance path or the root path - of the application. - - .. versionadded:: 0.8 - """ - root_path = self.root_path - if instance_relative: - root_path = self.instance_path - defaults = dict(self.default_config) - defaults['ENV'] = get_env() - defaults['DEBUG'] = get_debug_flag() - return self.config_class(root_path, defaults) - - def auto_find_instance_path(self): - """Tries to locate the instance path if it was not provided to the - constructor of the application class. It will basically calculate - the path to a folder named ``instance`` next to your main file or - the package. - - .. versionadded:: 0.8 - """ - prefix, package_path = find_package(self.import_name) - if prefix is None: - return os.path.join(package_path, 'instance') - return os.path.join(prefix, 'var', self.name + '-instance') - - def open_instance_resource(self, resource, mode='rb'): - """Opens a resource from the application's instance folder - (:attr:`instance_path`). Otherwise works like - :meth:`open_resource`. Instance resources can also be opened for - writing. - - :param resource: the name of the resource. To access resources within - subfolders use forward slashes as separator. - :param mode: resource file opening mode, default is 'rb'. - """ - return open(os.path.join(self.instance_path, resource), mode) - - def _get_templates_auto_reload(self): - """Reload templates when they are changed. Used by - :meth:`create_jinja_environment`. - - This attribute can be configured with :data:`TEMPLATES_AUTO_RELOAD`. If - not set, it will be enabled in debug mode. - - .. versionadded:: 1.0 - This property was added but the underlying config and behavior - already existed. - """ - rv = self.config['TEMPLATES_AUTO_RELOAD'] - return rv if rv is not None else self.debug - - def _set_templates_auto_reload(self, value): - self.config['TEMPLATES_AUTO_RELOAD'] = value - - templates_auto_reload = property( - _get_templates_auto_reload, _set_templates_auto_reload - ) - del _get_templates_auto_reload, _set_templates_auto_reload - - def create_jinja_environment(self): - """Creates the Jinja2 environment based on :attr:`jinja_options` - and :meth:`select_jinja_autoescape`. Since 0.7 this also adds - the Jinja2 globals and filters after initialization. Override - this function to customize the behavior. - - .. versionadded:: 0.5 - .. versionchanged:: 0.11 - ``Environment.auto_reload`` set in accordance with - ``TEMPLATES_AUTO_RELOAD`` configuration option. - """ - options = dict(self.jinja_options) - - if 'autoescape' not in options: - options['autoescape'] = self.select_jinja_autoescape - - if 'auto_reload' not in options: - options['auto_reload'] = self.templates_auto_reload - - rv = self.jinja_environment(self, **options) - rv.globals.update( - url_for=url_for, - get_flashed_messages=get_flashed_messages, - config=self.config, - # request, session and g are normally added with the - # context processor for efficiency reasons but for imported - # templates we also want the proxies in there. - request=request, - session=session, - g=g - ) - rv.filters['tojson'] = json.tojson_filter - return rv - - def create_global_jinja_loader(self): - """Creates the loader for the Jinja2 environment. Can be used to - override just the loader and keeping the rest unchanged. It's - discouraged to override this function. Instead one should override - the :meth:`jinja_loader` function instead. - - The global loader dispatches between the loaders of the application - and the individual blueprints. - - .. versionadded:: 0.7 - """ - return DispatchingJinjaLoader(self) - - def select_jinja_autoescape(self, filename): - """Returns ``True`` if autoescaping should be active for the given - template name. If no template name is given, returns `True`. - - .. versionadded:: 0.5 - """ - if filename is None: - return True - return filename.endswith(('.html', '.htm', '.xml', '.xhtml')) - - def update_template_context(self, context): - """Update the template context with some commonly used variables. - This injects request, session, config and g into the template - context as well as everything template context processors want - to inject. Note that the as of Flask 0.6, the original values - in the context will not be overridden if a context processor - decides to return a value with the same key. - - :param context: the context as a dictionary that is updated in place - to add extra variables. - """ - funcs = self.template_context_processors[None] - reqctx = _request_ctx_stack.top - if reqctx is not None: - bp = reqctx.request.blueprint - if bp is not None and bp in self.template_context_processors: - funcs = chain(funcs, self.template_context_processors[bp]) - orig_ctx = context.copy() - for func in funcs: - context.update(func()) - # make sure the original values win. This makes it possible to - # easier add new variables in context processors without breaking - # existing views. - context.update(orig_ctx) - - def make_shell_context(self): - """Returns the shell context for an interactive shell for this - application. This runs all the registered shell context - processors. - - .. versionadded:: 0.11 - """ - rv = {'app': self, 'g': g} - for processor in self.shell_context_processors: - rv.update(processor()) - return rv - - #: What environment the app is running in. Flask and extensions may - #: enable behaviors based on the environment, such as enabling debug - #: mode. This maps to the :data:`ENV` config key. This is set by the - #: :envvar:`FLASK_ENV` environment variable and may not behave as - #: expected if set in code. - #: - #: **Do not enable development when deploying in production.** - #: - #: Default: ``'production'`` - env = ConfigAttribute('ENV') - - def _get_debug(self): - return self.config['DEBUG'] - - def _set_debug(self, value): - self.config['DEBUG'] = value - self.jinja_env.auto_reload = self.templates_auto_reload - - #: Whether debug mode is enabled. When using ``flask run`` to start - #: the development server, an interactive debugger will be shown for - #: unhandled exceptions, and the server will be reloaded when code - #: changes. This maps to the :data:`DEBUG` config key. This is - #: enabled when :attr:`env` is ``'development'`` and is overridden - #: by the ``FLASK_DEBUG`` environment variable. It may not behave as - #: expected if set in code. - #: - #: **Do not enable debug mode when deploying in production.** - #: - #: Default: ``True`` if :attr:`env` is ``'development'``, or - #: ``False`` otherwise. - debug = property(_get_debug, _set_debug) - del _get_debug, _set_debug - - def run(self, host=None, port=None, debug=None, - load_dotenv=True, **options): - """Runs the application on a local development server. - - Do not use ``run()`` in a production setting. It is not intended to - meet security and performance requirements for a production server. - Instead, see :ref:`deployment` for WSGI server recommendations. - - If the :attr:`debug` flag is set the server will automatically reload - for code changes and show a debugger in case an exception happened. - - If you want to run the application in debug mode, but disable the - code execution on the interactive debugger, you can pass - ``use_evalex=False`` as parameter. This will keep the debugger's - traceback screen active, but disable code execution. - - It is not recommended to use this function for development with - automatic reloading as this is badly supported. Instead you should - be using the :command:`flask` command line script's ``run`` support. - - .. admonition:: Keep in Mind - - Flask will suppress any server error with a generic error page - unless it is in debug mode. As such to enable just the - interactive debugger without the code reloading, you have to - invoke :meth:`run` with ``debug=True`` and ``use_reloader=False``. - Setting ``use_debugger`` to ``True`` without being in debug mode - won't catch any exceptions because there won't be any to - catch. - - :param host: the hostname to listen on. Set this to ``'0.0.0.0'`` to - have the server available externally as well. Defaults to - ``'127.0.0.1'`` or the host in the ``SERVER_NAME`` config variable - if present. - :param port: the port of the webserver. Defaults to ``5000`` or the - port defined in the ``SERVER_NAME`` config variable if present. - :param debug: if given, enable or disable debug mode. See - :attr:`debug`. - :param load_dotenv: Load the nearest :file:`.env` and :file:`.flaskenv` - files to set environment variables. Will also change the working - directory to the directory containing the first file found. - :param options: the options to be forwarded to the underlying Werkzeug - server. See :func:`werkzeug.serving.run_simple` for more - information. - - .. versionchanged:: 1.0 - If installed, python-dotenv will be used to load environment - variables from :file:`.env` and :file:`.flaskenv` files. - - If set, the :envvar:`FLASK_ENV` and :envvar:`FLASK_DEBUG` - environment variables will override :attr:`env` and - :attr:`debug`. - - Threaded mode is enabled by default. - - .. versionchanged:: 0.10 - The default port is now picked from the ``SERVER_NAME`` - variable. - """ - # Change this into a no-op if the server is invoked from the - # command line. Have a look at cli.py for more information. - if os.environ.get('FLASK_RUN_FROM_CLI') == 'true': - from .debughelpers import explain_ignored_app_run - explain_ignored_app_run() - return - - if get_load_dotenv(load_dotenv): - cli.load_dotenv() - - # if set, let env vars override previous values - if 'FLASK_ENV' in os.environ: - self.env = get_env() - self.debug = get_debug_flag() - elif 'FLASK_DEBUG' in os.environ: - self.debug = get_debug_flag() - - # debug passed to method overrides all other sources - if debug is not None: - self.debug = bool(debug) - - _host = '127.0.0.1' - _port = 5000 - server_name = self.config.get('SERVER_NAME') - sn_host, sn_port = None, None - - if server_name: - sn_host, _, sn_port = server_name.partition(':') - - host = host or sn_host or _host - port = int(port or sn_port or _port) - - options.setdefault('use_reloader', self.debug) - options.setdefault('use_debugger', self.debug) - options.setdefault('threaded', True) - - cli.show_server_banner(self.env, self.debug, self.name, False) - - from werkzeug.serving import run_simple - - try: - run_simple(host, port, self, **options) - finally: - # reset the first request information if the development server - # reset normally. This makes it possible to restart the server - # without reloader and that stuff from an interactive shell. - self._got_first_request = False - - def test_client(self, use_cookies=True, **kwargs): - """Creates a test client for this application. For information - about unit testing head over to :ref:`testing`. - - Note that if you are testing for assertions or exceptions in your - application code, you must set ``app.testing = True`` in order for the - exceptions to propagate to the test client. Otherwise, the exception - will be handled by the application (not visible to the test client) and - the only indication of an AssertionError or other exception will be a - 500 status code response to the test client. See the :attr:`testing` - attribute. For example:: - - app.testing = True - client = app.test_client() - - The test client can be used in a ``with`` block to defer the closing down - of the context until the end of the ``with`` block. This is useful if - you want to access the context locals for testing:: - - with app.test_client() as c: - rv = c.get('/?vodka=42') - assert request.args['vodka'] == '42' - - Additionally, you may pass optional keyword arguments that will then - be passed to the application's :attr:`test_client_class` constructor. - For example:: - - from flask.testing import FlaskClient - - class CustomClient(FlaskClient): - def __init__(self, *args, **kwargs): - self._authentication = kwargs.pop("authentication") - super(CustomClient,self).__init__( *args, **kwargs) - - app.test_client_class = CustomClient - client = app.test_client(authentication='Basic ....') - - See :class:`~flask.testing.FlaskClient` for more information. - - .. versionchanged:: 0.4 - added support for ``with`` block usage for the client. - - .. versionadded:: 0.7 - The `use_cookies` parameter was added as well as the ability - to override the client to be used by setting the - :attr:`test_client_class` attribute. - - .. versionchanged:: 0.11 - Added `**kwargs` to support passing additional keyword arguments to - the constructor of :attr:`test_client_class`. - """ - cls = self.test_client_class - if cls is None: - from flask.testing import FlaskClient as cls - return cls(self, self.response_class, use_cookies=use_cookies, **kwargs) - - def test_cli_runner(self, **kwargs): - """Create a CLI runner for testing CLI commands. - See :ref:`testing-cli`. - - Returns an instance of :attr:`test_cli_runner_class`, by default - :class:`~flask.testing.FlaskCliRunner`. The Flask app object is - passed as the first argument. - - .. versionadded:: 1.0 - """ - cls = self.test_cli_runner_class - - if cls is None: - from flask.testing import FlaskCliRunner as cls - - return cls(self, **kwargs) - - def open_session(self, request): - """Creates or opens a new session. Default implementation stores all - session data in a signed cookie. This requires that the - :attr:`secret_key` is set. Instead of overriding this method - we recommend replacing the :class:`session_interface`. - - .. deprecated: 1.0 - Will be removed in 1.1. Use ``session_interface.open_session`` - instead. - - :param request: an instance of :attr:`request_class`. - """ - - warnings.warn(DeprecationWarning( - '"open_session" is deprecated and will be removed in 1.1. Use' - ' "session_interface.open_session" instead.' - )) - return self.session_interface.open_session(self, request) - - def save_session(self, session, response): - """Saves the session if it needs updates. For the default - implementation, check :meth:`open_session`. Instead of overriding this - method we recommend replacing the :class:`session_interface`. - - .. deprecated: 1.0 - Will be removed in 1.1. Use ``session_interface.save_session`` - instead. - - :param session: the session to be saved (a - :class:`~werkzeug.contrib.securecookie.SecureCookie` - object) - :param response: an instance of :attr:`response_class` - """ - - warnings.warn(DeprecationWarning( - '"save_session" is deprecated and will be removed in 1.1. Use' - ' "session_interface.save_session" instead.' - )) - return self.session_interface.save_session(self, session, response) - - def make_null_session(self): - """Creates a new instance of a missing session. Instead of overriding - this method we recommend replacing the :class:`session_interface`. - - .. deprecated: 1.0 - Will be removed in 1.1. Use ``session_interface.make_null_session`` - instead. - - .. versionadded:: 0.7 - """ - - warnings.warn(DeprecationWarning( - '"make_null_session" is deprecated and will be removed in 1.1. Use' - ' "session_interface.make_null_session" instead.' - )) - return self.session_interface.make_null_session(self) - - @setupmethod - def register_blueprint(self, blueprint, **options): - """Register a :class:`~flask.Blueprint` on the application. Keyword - arguments passed to this method will override the defaults set on the - blueprint. - - Calls the blueprint's :meth:`~flask.Blueprint.register` method after - recording the blueprint in the application's :attr:`blueprints`. - - :param blueprint: The blueprint to register. - :param url_prefix: Blueprint routes will be prefixed with this. - :param subdomain: Blueprint routes will match on this subdomain. - :param url_defaults: Blueprint routes will use these default values for - view arguments. - :param options: Additional keyword arguments are passed to - :class:`~flask.blueprints.BlueprintSetupState`. They can be - accessed in :meth:`~flask.Blueprint.record` callbacks. - - .. versionadded:: 0.7 - """ - first_registration = False - - if blueprint.name in self.blueprints: - assert self.blueprints[blueprint.name] is blueprint, ( - 'A name collision occurred between blueprints %r and %r. Both' - ' share the same name "%s". Blueprints that are created on the' - ' fly need unique names.' % ( - blueprint, self.blueprints[blueprint.name], blueprint.name - ) - ) - else: - self.blueprints[blueprint.name] = blueprint - self._blueprint_order.append(blueprint) - first_registration = True - - blueprint.register(self, options, first_registration) - - def iter_blueprints(self): - """Iterates over all blueprints by the order they were registered. - - .. versionadded:: 0.11 - """ - return iter(self._blueprint_order) - - @setupmethod - def add_url_rule(self, rule, endpoint=None, view_func=None, - provide_automatic_options=None, **options): - """Connects a URL rule. Works exactly like the :meth:`route` - decorator. If a view_func is provided it will be registered with the - endpoint. - - Basically this example:: - - @app.route('/') - def index(): - pass - - Is equivalent to the following:: - - def index(): - pass - app.add_url_rule('/', 'index', index) - - If the view_func is not provided you will need to connect the endpoint - to a view function like so:: - - app.view_functions['index'] = index - - Internally :meth:`route` invokes :meth:`add_url_rule` so if you want - to customize the behavior via subclassing you only need to change - this method. - - For more information refer to :ref:`url-route-registrations`. - - .. versionchanged:: 0.2 - `view_func` parameter added. - - .. versionchanged:: 0.6 - ``OPTIONS`` is added automatically as method. - - :param rule: the URL rule as string - :param endpoint: the endpoint for the registered URL rule. Flask - itself assumes the name of the view function as - endpoint - :param view_func: the function to call when serving a request to the - provided endpoint - :param provide_automatic_options: controls whether the ``OPTIONS`` - method should be added automatically. This can also be controlled - by setting the ``view_func.provide_automatic_options = False`` - before adding the rule. - :param options: the options to be forwarded to the underlying - :class:`~werkzeug.routing.Rule` object. A change - to Werkzeug is handling of method options. methods - is a list of methods this rule should be limited - to (``GET``, ``POST`` etc.). By default a rule - just listens for ``GET`` (and implicitly ``HEAD``). - Starting with Flask 0.6, ``OPTIONS`` is implicitly - added and handled by the standard request handling. - """ - if endpoint is None: - endpoint = _endpoint_from_view_func(view_func) - options['endpoint'] = endpoint - methods = options.pop('methods', None) - - # if the methods are not given and the view_func object knows its - # methods we can use that instead. If neither exists, we go with - # a tuple of only ``GET`` as default. - if methods is None: - methods = getattr(view_func, 'methods', None) or ('GET',) - if isinstance(methods, string_types): - raise TypeError('Allowed methods have to be iterables of strings, ' - 'for example: @app.route(..., methods=["POST"])') - methods = set(item.upper() for item in methods) - - # Methods that should always be added - required_methods = set(getattr(view_func, 'required_methods', ())) - - # starting with Flask 0.8 the view_func object can disable and - # force-enable the automatic options handling. - if provide_automatic_options is None: - provide_automatic_options = getattr(view_func, - 'provide_automatic_options', None) - - if provide_automatic_options is None: - if 'OPTIONS' not in methods: - provide_automatic_options = True - required_methods.add('OPTIONS') - else: - provide_automatic_options = False - - # Add the required methods now. - methods |= required_methods - - rule = self.url_rule_class(rule, methods=methods, **options) - rule.provide_automatic_options = provide_automatic_options - - self.url_map.add(rule) - if view_func is not None: - old_func = self.view_functions.get(endpoint) - if old_func is not None and old_func != view_func: - raise AssertionError('View function mapping is overwriting an ' - 'existing endpoint function: %s' % endpoint) - self.view_functions[endpoint] = view_func - - def route(self, rule, **options): - """A decorator that is used to register a view function for a - given URL rule. This does the same thing as :meth:`add_url_rule` - but is intended for decorator usage:: - - @app.route('/') - def index(): - return 'Hello World' - - For more information refer to :ref:`url-route-registrations`. - - :param rule: the URL rule as string - :param endpoint: the endpoint for the registered URL rule. Flask - itself assumes the name of the view function as - endpoint - :param options: the options to be forwarded to the underlying - :class:`~werkzeug.routing.Rule` object. A change - to Werkzeug is handling of method options. methods - is a list of methods this rule should be limited - to (``GET``, ``POST`` etc.). By default a rule - just listens for ``GET`` (and implicitly ``HEAD``). - Starting with Flask 0.6, ``OPTIONS`` is implicitly - added and handled by the standard request handling. - """ - def decorator(f): - endpoint = options.pop('endpoint', None) - self.add_url_rule(rule, endpoint, f, **options) - return f - return decorator - - @setupmethod - def endpoint(self, endpoint): - """A decorator to register a function as an endpoint. - Example:: - - @app.endpoint('example.endpoint') - def example(): - return "example" - - :param endpoint: the name of the endpoint - """ - def decorator(f): - self.view_functions[endpoint] = f - return f - return decorator - - @staticmethod - def _get_exc_class_and_code(exc_class_or_code): - """Ensure that we register only exceptions as handler keys""" - if isinstance(exc_class_or_code, integer_types): - exc_class = default_exceptions[exc_class_or_code] - else: - exc_class = exc_class_or_code - - assert issubclass(exc_class, Exception) - - if issubclass(exc_class, HTTPException): - return exc_class, exc_class.code - else: - return exc_class, None - - @setupmethod - def errorhandler(self, code_or_exception): - """Register a function to handle errors by code or exception class. - - A decorator that is used to register a function given an - error code. Example:: - - @app.errorhandler(404) - def page_not_found(error): - return 'This page does not exist', 404 - - You can also register handlers for arbitrary exceptions:: - - @app.errorhandler(DatabaseError) - def special_exception_handler(error): - return 'Database connection failed', 500 - - .. versionadded:: 0.7 - Use :meth:`register_error_handler` instead of modifying - :attr:`error_handler_spec` directly, for application wide error - handlers. - - .. versionadded:: 0.7 - One can now additionally also register custom exception types - that do not necessarily have to be a subclass of the - :class:`~werkzeug.exceptions.HTTPException` class. - - :param code_or_exception: the code as integer for the handler, or - an arbitrary exception - """ - def decorator(f): - self._register_error_handler(None, code_or_exception, f) - return f - return decorator - - @setupmethod - def register_error_handler(self, code_or_exception, f): - """Alternative error attach function to the :meth:`errorhandler` - decorator that is more straightforward to use for non decorator - usage. - - .. versionadded:: 0.7 - """ - self._register_error_handler(None, code_or_exception, f) - - @setupmethod - def _register_error_handler(self, key, code_or_exception, f): - """ - :type key: None|str - :type code_or_exception: int|T<=Exception - :type f: callable - """ - if isinstance(code_or_exception, HTTPException): # old broken behavior - raise ValueError( - 'Tried to register a handler for an exception instance {0!r}.' - ' Handlers can only be registered for exception classes or' - ' HTTP error codes.'.format(code_or_exception) - ) - - try: - exc_class, code = self._get_exc_class_and_code(code_or_exception) - except KeyError: - raise KeyError( - "'{0}' is not a recognized HTTP error code. Use a subclass of" - " HTTPException with that code instead.".format(code_or_exception) - ) - - handlers = self.error_handler_spec.setdefault(key, {}).setdefault(code, {}) - handlers[exc_class] = f - - @setupmethod - def template_filter(self, name=None): - """A decorator that is used to register custom template filter. - You can specify a name for the filter, otherwise the function - name will be used. Example:: - - @app.template_filter() - def reverse(s): - return s[::-1] - - :param name: the optional name of the filter, otherwise the - function name will be used. - """ - def decorator(f): - self.add_template_filter(f, name=name) - return f - return decorator - - @setupmethod - def add_template_filter(self, f, name=None): - """Register a custom template filter. Works exactly like the - :meth:`template_filter` decorator. - - :param name: the optional name of the filter, otherwise the - function name will be used. - """ - self.jinja_env.filters[name or f.__name__] = f - - @setupmethod - def template_test(self, name=None): - """A decorator that is used to register custom template test. - You can specify a name for the test, otherwise the function - name will be used. Example:: - - @app.template_test() - def is_prime(n): - if n == 2: - return True - for i in range(2, int(math.ceil(math.sqrt(n))) + 1): - if n % i == 0: - return False - return True - - .. versionadded:: 0.10 - - :param name: the optional name of the test, otherwise the - function name will be used. - """ - def decorator(f): - self.add_template_test(f, name=name) - return f - return decorator - - @setupmethod - def add_template_test(self, f, name=None): - """Register a custom template test. Works exactly like the - :meth:`template_test` decorator. - - .. versionadded:: 0.10 - - :param name: the optional name of the test, otherwise the - function name will be used. - """ - self.jinja_env.tests[name or f.__name__] = f - - @setupmethod - def template_global(self, name=None): - """A decorator that is used to register a custom template global function. - You can specify a name for the global function, otherwise the function - name will be used. Example:: - - @app.template_global() - def double(n): - return 2 * n - - .. versionadded:: 0.10 - - :param name: the optional name of the global function, otherwise the - function name will be used. - """ - def decorator(f): - self.add_template_global(f, name=name) - return f - return decorator - - @setupmethod - def add_template_global(self, f, name=None): - """Register a custom template global function. Works exactly like the - :meth:`template_global` decorator. - - .. versionadded:: 0.10 - - :param name: the optional name of the global function, otherwise the - function name will be used. - """ - self.jinja_env.globals[name or f.__name__] = f - - @setupmethod - def before_request(self, f): - """Registers a function to run before each request. - - For example, this can be used to open a database connection, or to load - the logged in user from the session. - - The function will be called without any arguments. If it returns a - non-None value, the value is handled as if it was the return value from - the view, and further request handling is stopped. - """ - self.before_request_funcs.setdefault(None, []).append(f) - return f - - @setupmethod - def before_first_request(self, f): - """Registers a function to be run before the first request to this - instance of the application. - - The function will be called without any arguments and its return - value is ignored. - - .. versionadded:: 0.8 - """ - self.before_first_request_funcs.append(f) - return f - - @setupmethod - def after_request(self, f): - """Register a function to be run after each request. - - Your function must take one parameter, an instance of - :attr:`response_class` and return a new response object or the - same (see :meth:`process_response`). - - As of Flask 0.7 this function might not be executed at the end of the - request in case an unhandled exception occurred. - """ - self.after_request_funcs.setdefault(None, []).append(f) - return f - - @setupmethod - def teardown_request(self, f): - """Register a function to be run at the end of each request, - regardless of whether there was an exception or not. These functions - are executed when the request context is popped, even if not an - actual request was performed. - - Example:: - - ctx = app.test_request_context() - ctx.push() - ... - ctx.pop() - - When ``ctx.pop()`` is executed in the above example, the teardown - functions are called just before the request context moves from the - stack of active contexts. This becomes relevant if you are using - such constructs in tests. - - Generally teardown functions must take every necessary step to avoid - that they will fail. If they do execute code that might fail they - will have to surround the execution of these code by try/except - statements and log occurring errors. - - When a teardown function was called because of an exception it will - be passed an error object. - - The return values of teardown functions are ignored. - - .. admonition:: Debug Note - - In debug mode Flask will not tear down a request on an exception - immediately. Instead it will keep it alive so that the interactive - debugger can still access it. This behavior can be controlled - by the ``PRESERVE_CONTEXT_ON_EXCEPTION`` configuration variable. - """ - self.teardown_request_funcs.setdefault(None, []).append(f) - return f - - @setupmethod - def teardown_appcontext(self, f): - """Registers a function to be called when the application context - ends. These functions are typically also called when the request - context is popped. - - Example:: - - ctx = app.app_context() - ctx.push() - ... - ctx.pop() - - When ``ctx.pop()`` is executed in the above example, the teardown - functions are called just before the app context moves from the - stack of active contexts. This becomes relevant if you are using - such constructs in tests. - - Since a request context typically also manages an application - context it would also be called when you pop a request context. - - When a teardown function was called because of an unhandled exception - it will be passed an error object. If an :meth:`errorhandler` is - registered, it will handle the exception and the teardown will not - receive it. - - The return values of teardown functions are ignored. - - .. versionadded:: 0.9 - """ - self.teardown_appcontext_funcs.append(f) - return f - - @setupmethod - def context_processor(self, f): - """Registers a template context processor function.""" - self.template_context_processors[None].append(f) - return f - - @setupmethod - def shell_context_processor(self, f): - """Registers a shell context processor function. - - .. versionadded:: 0.11 - """ - self.shell_context_processors.append(f) - return f - - @setupmethod - def url_value_preprocessor(self, f): - """Register a URL value preprocessor function for all view - functions in the application. These functions will be called before the - :meth:`before_request` functions. - - The function can modify the values captured from the matched url before - they are passed to the view. For example, this can be used to pop a - common language code value and place it in ``g`` rather than pass it to - every view. - - The function is passed the endpoint name and values dict. The return - value is ignored. - """ - self.url_value_preprocessors.setdefault(None, []).append(f) - return f - - @setupmethod - def url_defaults(self, f): - """Callback function for URL defaults for all view functions of the - application. It's called with the endpoint and values and should - update the values passed in place. - """ - self.url_default_functions.setdefault(None, []).append(f) - return f - - def _find_error_handler(self, e): - """Return a registered error handler for an exception in this order: - blueprint handler for a specific code, app handler for a specific code, - blueprint handler for an exception class, app handler for an exception - class, or ``None`` if a suitable handler is not found. - """ - exc_class, code = self._get_exc_class_and_code(type(e)) - - for name, c in ( - (request.blueprint, code), (None, code), - (request.blueprint, None), (None, None) - ): - handler_map = self.error_handler_spec.setdefault(name, {}).get(c) - - if not handler_map: - continue - - for cls in exc_class.__mro__: - handler = handler_map.get(cls) - - if handler is not None: - return handler - - def handle_http_exception(self, e): - """Handles an HTTP exception. By default this will invoke the - registered error handlers and fall back to returning the - exception as response. - - .. versionchanged:: 1.0.3 - ``RoutingException``, used internally for actions such as - slash redirects during routing, is not passed to error - handlers. - - .. versionchanged:: 1.0 - Exceptions are looked up by code *and* by MRO, so - ``HTTPExcpetion`` subclasses can be handled with a catch-all - handler for the base ``HTTPException``. - - .. versionadded:: 0.3 - """ - # Proxy exceptions don't have error codes. We want to always return - # those unchanged as errors - if e.code is None: - return e - - # RoutingExceptions are used internally to trigger routing - # actions, such as slash redirects raising RequestRedirect. They - # are not raised or handled in user code. - if isinstance(e, RoutingException): - return e - - handler = self._find_error_handler(e) - if handler is None: - return e - return handler(e) - - def trap_http_exception(self, e): - """Checks if an HTTP exception should be trapped or not. By default - this will return ``False`` for all exceptions except for a bad request - key error if ``TRAP_BAD_REQUEST_ERRORS`` is set to ``True``. It - also returns ``True`` if ``TRAP_HTTP_EXCEPTIONS`` is set to ``True``. - - This is called for all HTTP exceptions raised by a view function. - If it returns ``True`` for any exception the error handler for this - exception is not called and it shows up as regular exception in the - traceback. This is helpful for debugging implicitly raised HTTP - exceptions. - - .. versionchanged:: 1.0 - Bad request errors are not trapped by default in debug mode. - - .. versionadded:: 0.8 - """ - if self.config['TRAP_HTTP_EXCEPTIONS']: - return True - - trap_bad_request = self.config['TRAP_BAD_REQUEST_ERRORS'] - - # if unset, trap key errors in debug mode - if ( - trap_bad_request is None and self.debug - and isinstance(e, BadRequestKeyError) - ): - return True - - if trap_bad_request: - return isinstance(e, BadRequest) - - return False - - def handle_user_exception(self, e): - """This method is called whenever an exception occurs that - should be handled. A special case is :class:`~werkzeug - .exceptions.HTTPException` which is forwarded to the - :meth:`handle_http_exception` method. This function will either - return a response value or reraise the exception with the same - traceback. - - .. versionchanged:: 1.0 - Key errors raised from request data like ``form`` show the - bad key in debug mode rather than a generic bad request - message. - - .. versionadded:: 0.7 - """ - exc_type, exc_value, tb = sys.exc_info() - assert exc_value is e - # ensure not to trash sys.exc_info() at that point in case someone - # wants the traceback preserved in handle_http_exception. Of course - # we cannot prevent users from trashing it themselves in a custom - # trap_http_exception method so that's their fault then. - - if isinstance(e, BadRequestKeyError): - if self.debug or self.config["TRAP_BAD_REQUEST_ERRORS"]: - # Werkzeug < 0.15 doesn't add the KeyError to the 400 - # message, add it in manually. - description = e.get_description() - - if e.args[0] not in description: - e.description = "KeyError: '{}'".format(*e.args) - else: - # Werkzeug >= 0.15 does add it, remove it in production - e.args = () - - if isinstance(e, HTTPException) and not self.trap_http_exception(e): - return self.handle_http_exception(e) - - handler = self._find_error_handler(e) - - if handler is None: - reraise(exc_type, exc_value, tb) - return handler(e) - - def handle_exception(self, e): - """Default exception handling that kicks in when an exception - occurs that is not caught. In debug mode the exception will - be re-raised immediately, otherwise it is logged and the handler - for a 500 internal server error is used. If no such handler - exists, a default 500 internal server error message is displayed. - - .. versionadded:: 0.3 - """ - exc_type, exc_value, tb = sys.exc_info() - - got_request_exception.send(self, exception=e) - handler = self._find_error_handler(InternalServerError()) - - if self.propagate_exceptions: - # if we want to repropagate the exception, we can attempt to - # raise it with the whole traceback in case we can do that - # (the function was actually called from the except part) - # otherwise, we just raise the error again - if exc_value is e: - reraise(exc_type, exc_value, tb) - else: - raise e - - self.log_exception((exc_type, exc_value, tb)) - if handler is None: - return InternalServerError() - return self.finalize_request(handler(e), from_error_handler=True) - - def log_exception(self, exc_info): - """Logs an exception. This is called by :meth:`handle_exception` - if debugging is disabled and right before the handler is called. - The default implementation logs the exception as error on the - :attr:`logger`. - - .. versionadded:: 0.8 - """ - self.logger.error('Exception on %s [%s]' % ( - request.path, - request.method - ), exc_info=exc_info) - - def raise_routing_exception(self, request): - """Exceptions that are recording during routing are reraised with - this method. During debug we are not reraising redirect requests - for non ``GET``, ``HEAD``, or ``OPTIONS`` requests and we're raising - a different error instead to help debug situations. - - :internal: - """ - if not self.debug \ - or not isinstance(request.routing_exception, RequestRedirect) \ - or request.method in ('GET', 'HEAD', 'OPTIONS'): - raise request.routing_exception - - from .debughelpers import FormDataRoutingRedirect - raise FormDataRoutingRedirect(request) - - def dispatch_request(self): - """Does the request dispatching. Matches the URL and returns the - return value of the view or error handler. This does not have to - be a response object. In order to convert the return value to a - proper response object, call :func:`make_response`. - - .. versionchanged:: 0.7 - This no longer does the exception handling, this code was - moved to the new :meth:`full_dispatch_request`. - """ - req = _request_ctx_stack.top.request - if req.routing_exception is not None: - self.raise_routing_exception(req) - rule = req.url_rule - # if we provide automatic options for this URL and the - # request came with the OPTIONS method, reply automatically - if getattr(rule, 'provide_automatic_options', False) \ - and req.method == 'OPTIONS': - return self.make_default_options_response() - # otherwise dispatch to the handler for that endpoint - return self.view_functions[rule.endpoint](**req.view_args) - - def full_dispatch_request(self): - """Dispatches the request and on top of that performs request - pre and postprocessing as well as HTTP exception catching and - error handling. - - .. versionadded:: 0.7 - """ - self.try_trigger_before_first_request_functions() - try: - request_started.send(self) - rv = self.preprocess_request() - if rv is None: - rv = self.dispatch_request() - except Exception as e: - rv = self.handle_user_exception(e) - return self.finalize_request(rv) - - def finalize_request(self, rv, from_error_handler=False): - """Given the return value from a view function this finalizes - the request by converting it into a response and invoking the - postprocessing functions. This is invoked for both normal - request dispatching as well as error handlers. - - Because this means that it might be called as a result of a - failure a special safe mode is available which can be enabled - with the `from_error_handler` flag. If enabled, failures in - response processing will be logged and otherwise ignored. - - :internal: - """ - response = self.make_response(rv) - try: - response = self.process_response(response) - request_finished.send(self, response=response) - except Exception: - if not from_error_handler: - raise - self.logger.exception('Request finalizing failed with an ' - 'error while handling an error') - return response - - def try_trigger_before_first_request_functions(self): - """Called before each request and will ensure that it triggers - the :attr:`before_first_request_funcs` and only exactly once per - application instance (which means process usually). - - :internal: - """ - if self._got_first_request: - return - with self._before_request_lock: - if self._got_first_request: - return - for func in self.before_first_request_funcs: - func() - self._got_first_request = True - - def make_default_options_response(self): - """This method is called to create the default ``OPTIONS`` response. - This can be changed through subclassing to change the default - behavior of ``OPTIONS`` responses. - - .. versionadded:: 0.7 - """ - adapter = _request_ctx_stack.top.url_adapter - if hasattr(adapter, 'allowed_methods'): - methods = adapter.allowed_methods() - else: - # fallback for Werkzeug < 0.7 - methods = [] - try: - adapter.match(method='--') - except MethodNotAllowed as e: - methods = e.valid_methods - except HTTPException as e: - pass - rv = self.response_class() - rv.allow.update(methods) - return rv - - def should_ignore_error(self, error): - """This is called to figure out if an error should be ignored - or not as far as the teardown system is concerned. If this - function returns ``True`` then the teardown handlers will not be - passed the error. - - .. versionadded:: 0.10 - """ - return False - - def make_response(self, rv): - """Convert the return value from a view function to an instance of - :attr:`response_class`. - - :param rv: the return value from the view function. The view function - must return a response. Returning ``None``, or the view ending - without returning, is not allowed. The following types are allowed - for ``view_rv``: - - ``str`` (``unicode`` in Python 2) - A response object is created with the string encoded to UTF-8 - as the body. - - ``bytes`` (``str`` in Python 2) - A response object is created with the bytes as the body. - - ``tuple`` - Either ``(body, status, headers)``, ``(body, status)``, or - ``(body, headers)``, where ``body`` is any of the other types - allowed here, ``status`` is a string or an integer, and - ``headers`` is a dictionary or a list of ``(key, value)`` - tuples. If ``body`` is a :attr:`response_class` instance, - ``status`` overwrites the exiting value and ``headers`` are - extended. - - :attr:`response_class` - The object is returned unchanged. - - other :class:`~werkzeug.wrappers.Response` class - The object is coerced to :attr:`response_class`. - - :func:`callable` - The function is called as a WSGI application. The result is - used to create a response object. - - .. versionchanged:: 0.9 - Previously a tuple was interpreted as the arguments for the - response object. - """ - - status = headers = None - - # unpack tuple returns - if isinstance(rv, tuple): - len_rv = len(rv) - - # a 3-tuple is unpacked directly - if len_rv == 3: - rv, status, headers = rv - # decide if a 2-tuple has status or headers - elif len_rv == 2: - if isinstance(rv[1], (Headers, dict, tuple, list)): - rv, headers = rv - else: - rv, status = rv - # other sized tuples are not allowed - else: - raise TypeError( - 'The view function did not return a valid response tuple.' - ' The tuple must have the form (body, status, headers),' - ' (body, status), or (body, headers).' - ) - - # the body must not be None - if rv is None: - raise TypeError( - 'The view function did not return a valid response. The' - ' function either returned None or ended without a return' - ' statement.' - ) - - # make sure the body is an instance of the response class - if not isinstance(rv, self.response_class): - if isinstance(rv, (text_type, bytes, bytearray)): - # let the response class set the status and headers instead of - # waiting to do it manually, so that the class can handle any - # special logic - rv = self.response_class(rv, status=status, headers=headers) - status = headers = None - else: - # evaluate a WSGI callable, or coerce a different response - # class to the correct type - try: - rv = self.response_class.force_type(rv, request.environ) - except TypeError as e: - new_error = TypeError( - '{e}\nThe view function did not return a valid' - ' response. The return type must be a string, tuple,' - ' Response instance, or WSGI callable, but it was a' - ' {rv.__class__.__name__}.'.format(e=e, rv=rv) - ) - reraise(TypeError, new_error, sys.exc_info()[2]) - - # prefer the status if it was provided - if status is not None: - if isinstance(status, (text_type, bytes, bytearray)): - rv.status = status - else: - rv.status_code = status - - # extend existing headers with provided headers - if headers: - rv.headers.extend(headers) - - return rv - - def create_url_adapter(self, request): - """Creates a URL adapter for the given request. The URL adapter - is created at a point where the request context is not yet set - up so the request is passed explicitly. - - .. versionadded:: 0.6 - - .. versionchanged:: 0.9 - This can now also be called without a request object when the - URL adapter is created for the application context. - - .. versionchanged:: 1.0 - :data:`SERVER_NAME` no longer implicitly enables subdomain - matching. Use :attr:`subdomain_matching` instead. - """ - if request is not None: - # If subdomain matching is disabled (the default), use the - # default subdomain in all cases. This should be the default - # in Werkzeug but it currently does not have that feature. - subdomain = ((self.url_map.default_subdomain or None) - if not self.subdomain_matching else None) - return self.url_map.bind_to_environ( - request.environ, - server_name=self.config['SERVER_NAME'], - subdomain=subdomain) - # We need at the very least the server name to be set for this - # to work. - if self.config['SERVER_NAME'] is not None: - return self.url_map.bind( - self.config['SERVER_NAME'], - script_name=self.config['APPLICATION_ROOT'], - url_scheme=self.config['PREFERRED_URL_SCHEME']) - - def inject_url_defaults(self, endpoint, values): - """Injects the URL defaults for the given endpoint directly into - the values dictionary passed. This is used internally and - automatically called on URL building. - - .. versionadded:: 0.7 - """ - funcs = self.url_default_functions.get(None, ()) - if '.' in endpoint: - bp = endpoint.rsplit('.', 1)[0] - funcs = chain(funcs, self.url_default_functions.get(bp, ())) - for func in funcs: - func(endpoint, values) - - def handle_url_build_error(self, error, endpoint, values): - """Handle :class:`~werkzeug.routing.BuildError` on :meth:`url_for`. - """ - exc_type, exc_value, tb = sys.exc_info() - for handler in self.url_build_error_handlers: - try: - rv = handler(error, endpoint, values) - if rv is not None: - return rv - except BuildError as e: - # make error available outside except block (py3) - error = e - - # At this point we want to reraise the exception. If the error is - # still the same one we can reraise it with the original traceback, - # otherwise we raise it from here. - if error is exc_value: - reraise(exc_type, exc_value, tb) - raise error - - def preprocess_request(self): - """Called before the request is dispatched. Calls - :attr:`url_value_preprocessors` registered with the app and the - current blueprint (if any). Then calls :attr:`before_request_funcs` - registered with the app and the blueprint. - - If any :meth:`before_request` handler returns a non-None value, the - value is handled as if it was the return value from the view, and - further request handling is stopped. - """ - - bp = _request_ctx_stack.top.request.blueprint - - funcs = self.url_value_preprocessors.get(None, ()) - if bp is not None and bp in self.url_value_preprocessors: - funcs = chain(funcs, self.url_value_preprocessors[bp]) - for func in funcs: - func(request.endpoint, request.view_args) - - funcs = self.before_request_funcs.get(None, ()) - if bp is not None and bp in self.before_request_funcs: - funcs = chain(funcs, self.before_request_funcs[bp]) - for func in funcs: - rv = func() - if rv is not None: - return rv - - def process_response(self, response): - """Can be overridden in order to modify the response object - before it's sent to the WSGI server. By default this will - call all the :meth:`after_request` decorated functions. - - .. versionchanged:: 0.5 - As of Flask 0.5 the functions registered for after request - execution are called in reverse order of registration. - - :param response: a :attr:`response_class` object. - :return: a new response object or the same, has to be an - instance of :attr:`response_class`. - """ - ctx = _request_ctx_stack.top - bp = ctx.request.blueprint - funcs = ctx._after_request_functions - if bp is not None and bp in self.after_request_funcs: - funcs = chain(funcs, reversed(self.after_request_funcs[bp])) - if None in self.after_request_funcs: - funcs = chain(funcs, reversed(self.after_request_funcs[None])) - for handler in funcs: - response = handler(response) - if not self.session_interface.is_null_session(ctx.session): - self.session_interface.save_session(self, ctx.session, response) - return response - - def do_teardown_request(self, exc=_sentinel): - """Called after the request is dispatched and the response is - returned, right before the request context is popped. - - This calls all functions decorated with - :meth:`teardown_request`, and :meth:`Blueprint.teardown_request` - if a blueprint handled the request. Finally, the - :data:`request_tearing_down` signal is sent. - - This is called by - :meth:`RequestContext.pop() <flask.ctx.RequestContext.pop>`, - which may be delayed during testing to maintain access to - resources. - - :param exc: An unhandled exception raised while dispatching the - request. Detected from the current exception information if - not passed. Passed to each teardown function. - - .. versionchanged:: 0.9 - Added the ``exc`` argument. - """ - if exc is _sentinel: - exc = sys.exc_info()[1] - funcs = reversed(self.teardown_request_funcs.get(None, ())) - bp = _request_ctx_stack.top.request.blueprint - if bp is not None and bp in self.teardown_request_funcs: - funcs = chain(funcs, reversed(self.teardown_request_funcs[bp])) - for func in funcs: - func(exc) - request_tearing_down.send(self, exc=exc) - - def do_teardown_appcontext(self, exc=_sentinel): - """Called right before the application context is popped. - - When handling a request, the application context is popped - after the request context. See :meth:`do_teardown_request`. - - This calls all functions decorated with - :meth:`teardown_appcontext`. Then the - :data:`appcontext_tearing_down` signal is sent. - - This is called by - :meth:`AppContext.pop() <flask.ctx.AppContext.pop>`. - - .. versionadded:: 0.9 - """ - if exc is _sentinel: - exc = sys.exc_info()[1] - for func in reversed(self.teardown_appcontext_funcs): - func(exc) - appcontext_tearing_down.send(self, exc=exc) - - def app_context(self): - """Create an :class:`~flask.ctx.AppContext`. Use as a ``with`` - block to push the context, which will make :data:`current_app` - point at this application. - - An application context is automatically pushed by - :meth:`RequestContext.push() <flask.ctx.RequestContext.push>` - when handling a request, and when running a CLI command. Use - this to manually create a context outside of these situations. - - :: - - with app.app_context(): - init_db() - - See :doc:`/appcontext`. - - .. versionadded:: 0.9 - """ - return AppContext(self) - - def request_context(self, environ): - """Create a :class:`~flask.ctx.RequestContext` representing a - WSGI environment. Use a ``with`` block to push the context, - which will make :data:`request` point at this request. - - See :doc:`/reqcontext`. - - Typically you should not call this from your own code. A request - context is automatically pushed by the :meth:`wsgi_app` when - handling a request. Use :meth:`test_request_context` to create - an environment and context instead of this method. - - :param environ: a WSGI environment - """ - return RequestContext(self, environ) - - def test_request_context(self, *args, **kwargs): - """Create a :class:`~flask.ctx.RequestContext` for a WSGI - environment created from the given values. This is mostly useful - during testing, where you may want to run a function that uses - request data without dispatching a full request. - - See :doc:`/reqcontext`. - - Use a ``with`` block to push the context, which will make - :data:`request` point at the request for the created - environment. :: - - with test_request_context(...): - generate_report() - - When using the shell, it may be easier to push and pop the - context manually to avoid indentation. :: - - ctx = app.test_request_context(...) - ctx.push() - ... - ctx.pop() - - Takes the same arguments as Werkzeug's - :class:`~werkzeug.test.EnvironBuilder`, with some defaults from - the application. See the linked Werkzeug docs for most of the - available arguments. Flask-specific behavior is listed here. - - :param path: URL path being requested. - :param base_url: Base URL where the app is being served, which - ``path`` is relative to. If not given, built from - :data:`PREFERRED_URL_SCHEME`, ``subdomain``, - :data:`SERVER_NAME`, and :data:`APPLICATION_ROOT`. - :param subdomain: Subdomain name to append to - :data:`SERVER_NAME`. - :param url_scheme: Scheme to use instead of - :data:`PREFERRED_URL_SCHEME`. - :param data: The request body, either as a string or a dict of - form keys and values. - :param json: If given, this is serialized as JSON and passed as - ``data``. Also defaults ``content_type`` to - ``application/json``. - :param args: other positional arguments passed to - :class:`~werkzeug.test.EnvironBuilder`. - :param kwargs: other keyword arguments passed to - :class:`~werkzeug.test.EnvironBuilder`. - """ - from flask.testing import make_test_environ_builder - - builder = make_test_environ_builder(self, *args, **kwargs) - - try: - return self.request_context(builder.get_environ()) - finally: - builder.close() - - def wsgi_app(self, environ, start_response): - """The actual WSGI application. This is not implemented in - :meth:`__call__` so that middlewares can be applied without - losing a reference to the app object. Instead of doing this:: - - app = MyMiddleware(app) - - It's a better idea to do this instead:: - - app.wsgi_app = MyMiddleware(app.wsgi_app) - - Then you still have the original application object around and - can continue to call methods on it. - - .. versionchanged:: 0.7 - Teardown events for the request and app contexts are called - even if an unhandled error occurs. Other events may not be - called depending on when an error occurs during dispatch. - See :ref:`callbacks-and-errors`. - - :param environ: A WSGI environment. - :param start_response: A callable accepting a status code, - a list of headers, and an optional exception context to - start the response. - """ - ctx = self.request_context(environ) - error = None - try: - try: - ctx.push() - response = self.full_dispatch_request() - except Exception as e: - error = e - response = self.handle_exception(e) - except: - error = sys.exc_info()[1] - raise - return response(environ, start_response) - finally: - if self.should_ignore_error(error): - error = None - ctx.auto_pop(error) - - def __call__(self, environ, start_response): - """The WSGI server calls the Flask application object as the - WSGI application. This calls :meth:`wsgi_app` which can be - wrapped to applying middleware.""" - return self.wsgi_app(environ, start_response) - - def __repr__(self): - return '<%s %r>' % ( - self.__class__.__name__, - self.name, - ) diff --git a/python/flask/blueprints.py b/python/flask/blueprints.py deleted file mode 100644 index c2158fe..0000000 --- a/python/flask/blueprints.py +++ /dev/null @@ -1,447 +0,0 @@ -# -*- coding: utf-8 -*- -""" - flask.blueprints - ~~~~~~~~~~~~~~~~ - - Blueprints are the recommended way to implement larger or more - pluggable applications in Flask 0.7 and later. - - :copyright: © 2010 by the Pallets team. - :license: BSD, see LICENSE for more details. -""" -from functools import update_wrapper - -from .helpers import _PackageBoundObject, _endpoint_from_view_func - - -class BlueprintSetupState(object): - """Temporary holder object for registering a blueprint with the - application. An instance of this class is created by the - :meth:`~flask.Blueprint.make_setup_state` method and later passed - to all register callback functions. - """ - - def __init__(self, blueprint, app, options, first_registration): - #: a reference to the current application - self.app = app - - #: a reference to the blueprint that created this setup state. - self.blueprint = blueprint - - #: a dictionary with all options that were passed to the - #: :meth:`~flask.Flask.register_blueprint` method. - self.options = options - - #: as blueprints can be registered multiple times with the - #: application and not everything wants to be registered - #: multiple times on it, this attribute can be used to figure - #: out if the blueprint was registered in the past already. - self.first_registration = first_registration - - subdomain = self.options.get('subdomain') - if subdomain is None: - subdomain = self.blueprint.subdomain - - #: The subdomain that the blueprint should be active for, ``None`` - #: otherwise. - self.subdomain = subdomain - - url_prefix = self.options.get('url_prefix') - if url_prefix is None: - url_prefix = self.blueprint.url_prefix - #: The prefix that should be used for all URLs defined on the - #: blueprint. - self.url_prefix = url_prefix - - #: A dictionary with URL defaults that is added to each and every - #: URL that was defined with the blueprint. - self.url_defaults = dict(self.blueprint.url_values_defaults) - self.url_defaults.update(self.options.get('url_defaults', ())) - - def add_url_rule(self, rule, endpoint=None, view_func=None, **options): - """A helper method to register a rule (and optionally a view function) - to the application. The endpoint is automatically prefixed with the - blueprint's name. - """ - if self.url_prefix is not None: - if rule: - rule = '/'.join(( - self.url_prefix.rstrip('/'), rule.lstrip('/'))) - else: - rule = self.url_prefix - options.setdefault('subdomain', self.subdomain) - if endpoint is None: - endpoint = _endpoint_from_view_func(view_func) - defaults = self.url_defaults - if 'defaults' in options: - defaults = dict(defaults, **options.pop('defaults')) - self.app.add_url_rule(rule, '%s.%s' % (self.blueprint.name, endpoint), - view_func, defaults=defaults, **options) - - -class Blueprint(_PackageBoundObject): - """Represents a blueprint. A blueprint is an object that records - functions that will be called with the - :class:`~flask.blueprints.BlueprintSetupState` later to register functions - or other things on the main application. See :ref:`blueprints` for more - information. - - .. versionadded:: 0.7 - """ - - warn_on_modifications = False - _got_registered_once = False - - #: Blueprint local JSON decoder class to use. - #: Set to ``None`` to use the app's :class:`~flask.app.Flask.json_encoder`. - json_encoder = None - #: Blueprint local JSON decoder class to use. - #: Set to ``None`` to use the app's :class:`~flask.app.Flask.json_decoder`. - json_decoder = None - - # TODO remove the next three attrs when Sphinx :inherited-members: works - # https://github.com/sphinx-doc/sphinx/issues/741 - - #: The name of the package or module that this app belongs to. Do not - #: change this once it is set by the constructor. - import_name = None - - #: Location of the template files to be added to the template lookup. - #: ``None`` if templates should not be added. - template_folder = None - - #: Absolute path to the package on the filesystem. Used to look up - #: resources contained in the package. - root_path = None - - def __init__(self, name, import_name, static_folder=None, - static_url_path=None, template_folder=None, - url_prefix=None, subdomain=None, url_defaults=None, - root_path=None): - _PackageBoundObject.__init__(self, import_name, template_folder, - root_path=root_path) - self.name = name - self.url_prefix = url_prefix - self.subdomain = subdomain - self.static_folder = static_folder - self.static_url_path = static_url_path - self.deferred_functions = [] - if url_defaults is None: - url_defaults = {} - self.url_values_defaults = url_defaults - - def record(self, func): - """Registers a function that is called when the blueprint is - registered on the application. This function is called with the - state as argument as returned by the :meth:`make_setup_state` - method. - """ - if self._got_registered_once and self.warn_on_modifications: - from warnings import warn - warn(Warning('The blueprint was already registered once ' - 'but is getting modified now. These changes ' - 'will not show up.')) - self.deferred_functions.append(func) - - def record_once(self, func): - """Works like :meth:`record` but wraps the function in another - function that will ensure the function is only called once. If the - blueprint is registered a second time on the application, the - function passed is not called. - """ - def wrapper(state): - if state.first_registration: - func(state) - return self.record(update_wrapper(wrapper, func)) - - def make_setup_state(self, app, options, first_registration=False): - """Creates an instance of :meth:`~flask.blueprints.BlueprintSetupState` - object that is later passed to the register callback functions. - Subclasses can override this to return a subclass of the setup state. - """ - return BlueprintSetupState(self, app, options, first_registration) - - def register(self, app, options, first_registration=False): - """Called by :meth:`Flask.register_blueprint` to register all views - and callbacks registered on the blueprint with the application. Creates - a :class:`.BlueprintSetupState` and calls each :meth:`record` callback - with it. - - :param app: The application this blueprint is being registered with. - :param options: Keyword arguments forwarded from - :meth:`~Flask.register_blueprint`. - :param first_registration: Whether this is the first time this - blueprint has been registered on the application. - """ - self._got_registered_once = True - state = self.make_setup_state(app, options, first_registration) - - if self.has_static_folder: - state.add_url_rule( - self.static_url_path + '/<path:filename>', - view_func=self.send_static_file, endpoint='static' - ) - - for deferred in self.deferred_functions: - deferred(state) - - def route(self, rule, **options): - """Like :meth:`Flask.route` but for a blueprint. The endpoint for the - :func:`url_for` function is prefixed with the name of the blueprint. - """ - def decorator(f): - endpoint = options.pop("endpoint", f.__name__) - self.add_url_rule(rule, endpoint, f, **options) - return f - return decorator - - def add_url_rule(self, rule, endpoint=None, view_func=None, **options): - """Like :meth:`Flask.add_url_rule` but for a blueprint. The endpoint for - the :func:`url_for` function is prefixed with the name of the blueprint. - """ - if endpoint: - assert '.' not in endpoint, "Blueprint endpoints should not contain dots" - if view_func and hasattr(view_func, '__name__'): - assert '.' not in view_func.__name__, "Blueprint view function name should not contain dots" - self.record(lambda s: - s.add_url_rule(rule, endpoint, view_func, **options)) - - def endpoint(self, endpoint): - """Like :meth:`Flask.endpoint` but for a blueprint. This does not - prefix the endpoint with the blueprint name, this has to be done - explicitly by the user of this method. If the endpoint is prefixed - with a `.` it will be registered to the current blueprint, otherwise - it's an application independent endpoint. - """ - def decorator(f): - def register_endpoint(state): - state.app.view_functions[endpoint] = f - self.record_once(register_endpoint) - return f - return decorator - - def app_template_filter(self, name=None): - """Register a custom template filter, available application wide. Like - :meth:`Flask.template_filter` but for a blueprint. - - :param name: the optional name of the filter, otherwise the - function name will be used. - """ - def decorator(f): - self.add_app_template_filter(f, name=name) - return f - return decorator - - def add_app_template_filter(self, f, name=None): - """Register a custom template filter, available application wide. Like - :meth:`Flask.add_template_filter` but for a blueprint. Works exactly - like the :meth:`app_template_filter` decorator. - - :param name: the optional name of the filter, otherwise the - function name will be used. - """ - def register_template(state): - state.app.jinja_env.filters[name or f.__name__] = f - self.record_once(register_template) - - def app_template_test(self, name=None): - """Register a custom template test, available application wide. Like - :meth:`Flask.template_test` but for a blueprint. - - .. versionadded:: 0.10 - - :param name: the optional name of the test, otherwise the - function name will be used. - """ - def decorator(f): - self.add_app_template_test(f, name=name) - return f - return decorator - - def add_app_template_test(self, f, name=None): - """Register a custom template test, available application wide. Like - :meth:`Flask.add_template_test` but for a blueprint. Works exactly - like the :meth:`app_template_test` decorator. - - .. versionadded:: 0.10 - - :param name: the optional name of the test, otherwise the - function name will be used. - """ - def register_template(state): - state.app.jinja_env.tests[name or f.__name__] = f - self.record_once(register_template) - - def app_template_global(self, name=None): - """Register a custom template global, available application wide. Like - :meth:`Flask.template_global` but for a blueprint. - - .. versionadded:: 0.10 - - :param name: the optional name of the global, otherwise the - function name will be used. - """ - def decorator(f): - self.add_app_template_global(f, name=name) - return f - return decorator - - def add_app_template_global(self, f, name=None): - """Register a custom template global, available application wide. Like - :meth:`Flask.add_template_global` but for a blueprint. Works exactly - like the :meth:`app_template_global` decorator. - - .. versionadded:: 0.10 - - :param name: the optional name of the global, otherwise the - function name will be used. - """ - def register_template(state): - state.app.jinja_env.globals[name or f.__name__] = f - self.record_once(register_template) - - def before_request(self, f): - """Like :meth:`Flask.before_request` but for a blueprint. This function - is only executed before each request that is handled by a function of - that blueprint. - """ - self.record_once(lambda s: s.app.before_request_funcs - .setdefault(self.name, []).append(f)) - return f - - def before_app_request(self, f): - """Like :meth:`Flask.before_request`. Such a function is executed - before each request, even if outside of a blueprint. - """ - self.record_once(lambda s: s.app.before_request_funcs - .setdefault(None, []).append(f)) - return f - - def before_app_first_request(self, f): - """Like :meth:`Flask.before_first_request`. Such a function is - executed before the first request to the application. - """ - self.record_once(lambda s: s.app.before_first_request_funcs.append(f)) - return f - - def after_request(self, f): - """Like :meth:`Flask.after_request` but for a blueprint. This function - is only executed after each request that is handled by a function of - that blueprint. - """ - self.record_once(lambda s: s.app.after_request_funcs - .setdefault(self.name, []).append(f)) - return f - - def after_app_request(self, f): - """Like :meth:`Flask.after_request` but for a blueprint. Such a function - is executed after each request, even if outside of the blueprint. - """ - self.record_once(lambda s: s.app.after_request_funcs - .setdefault(None, []).append(f)) - return f - - def teardown_request(self, f): - """Like :meth:`Flask.teardown_request` but for a blueprint. This - function is only executed when tearing down requests handled by a - function of that blueprint. Teardown request functions are executed - when the request context is popped, even when no actual request was - performed. - """ - self.record_once(lambda s: s.app.teardown_request_funcs - .setdefault(self.name, []).append(f)) - return f - - def teardown_app_request(self, f): - """Like :meth:`Flask.teardown_request` but for a blueprint. Such a - function is executed when tearing down each request, even if outside of - the blueprint. - """ - self.record_once(lambda s: s.app.teardown_request_funcs - .setdefault(None, []).append(f)) - return f - - def context_processor(self, f): - """Like :meth:`Flask.context_processor` but for a blueprint. This - function is only executed for requests handled by a blueprint. - """ - self.record_once(lambda s: s.app.template_context_processors - .setdefault(self.name, []).append(f)) - return f - - def app_context_processor(self, f): - """Like :meth:`Flask.context_processor` but for a blueprint. Such a - function is executed each request, even if outside of the blueprint. - """ - self.record_once(lambda s: s.app.template_context_processors - .setdefault(None, []).append(f)) - return f - - def app_errorhandler(self, code): - """Like :meth:`Flask.errorhandler` but for a blueprint. This - handler is used for all requests, even if outside of the blueprint. - """ - def decorator(f): - self.record_once(lambda s: s.app.errorhandler(code)(f)) - return f - return decorator - - def url_value_preprocessor(self, f): - """Registers a function as URL value preprocessor for this - blueprint. It's called before the view functions are called and - can modify the url values provided. - """ - self.record_once(lambda s: s.app.url_value_preprocessors - .setdefault(self.name, []).append(f)) - return f - - def url_defaults(self, f): - """Callback function for URL defaults for this blueprint. It's called - with the endpoint and values and should update the values passed - in place. - """ - self.record_once(lambda s: s.app.url_default_functions - .setdefault(self.name, []).append(f)) - return f - - def app_url_value_preprocessor(self, f): - """Same as :meth:`url_value_preprocessor` but application wide. - """ - self.record_once(lambda s: s.app.url_value_preprocessors - .setdefault(None, []).append(f)) - return f - - def app_url_defaults(self, f): - """Same as :meth:`url_defaults` but application wide. - """ - self.record_once(lambda s: s.app.url_default_functions - .setdefault(None, []).append(f)) - return f - - def errorhandler(self, code_or_exception): - """Registers an error handler that becomes active for this blueprint - only. Please be aware that routing does not happen local to a - blueprint so an error handler for 404 usually is not handled by - a blueprint unless it is caused inside a view function. Another - special case is the 500 internal server error which is always looked - up from the application. - - Otherwise works as the :meth:`~flask.Flask.errorhandler` decorator - of the :class:`~flask.Flask` object. - """ - def decorator(f): - self.record_once(lambda s: s.app._register_error_handler( - self.name, code_or_exception, f)) - return f - return decorator - - def register_error_handler(self, code_or_exception, f): - """Non-decorator version of the :meth:`errorhandler` error attach - function, akin to the :meth:`~flask.Flask.register_error_handler` - application-wide function of the :class:`~flask.Flask` object but - for error handlers limited to this blueprint. - - .. versionadded:: 0.11 - """ - self.record_once(lambda s: s.app._register_error_handler( - self.name, code_or_exception, f)) diff --git a/python/flask/cli.py b/python/flask/cli.py deleted file mode 100644 index 3eb93b3..0000000 --- a/python/flask/cli.py +++ /dev/null @@ -1,910 +0,0 @@ -# -*- coding: utf-8 -*- -""" - flask.cli - ~~~~~~~~~ - - A simple command line application to run flask apps. - - :copyright: © 2010 by the Pallets team. - :license: BSD, see LICENSE for more details. -""" - -from __future__ import print_function - -import ast -import inspect -import os -import platform -import re -import ssl -import sys -import traceback -from functools import update_wrapper -from operator import attrgetter -from threading import Lock, Thread - -import click -from werkzeug.utils import import_string - -from . import __version__ -from ._compat import getargspec, iteritems, reraise, text_type -from .globals import current_app -from .helpers import get_debug_flag, get_env, get_load_dotenv - -try: - import dotenv -except ImportError: - dotenv = None - - -class NoAppException(click.UsageError): - """Raised if an application cannot be found or loaded.""" - - -def find_best_app(script_info, module): - """Given a module instance this tries to find the best possible - application in the module or raises an exception. - """ - from . import Flask - - # Search for the most common names first. - for attr_name in ('app', 'application'): - app = getattr(module, attr_name, None) - - if isinstance(app, Flask): - return app - - # Otherwise find the only object that is a Flask instance. - matches = [ - v for k, v in iteritems(module.__dict__) if isinstance(v, Flask) - ] - - if len(matches) == 1: - return matches[0] - elif len(matches) > 1: - raise NoAppException( - 'Detected multiple Flask applications in module "{module}". Use ' - '"FLASK_APP={module}:name" to specify the correct ' - 'one.'.format(module=module.__name__) - ) - - # Search for app factory functions. - for attr_name in ('create_app', 'make_app'): - app_factory = getattr(module, attr_name, None) - - if inspect.isfunction(app_factory): - try: - app = call_factory(script_info, app_factory) - - if isinstance(app, Flask): - return app - except TypeError: - if not _called_with_wrong_args(app_factory): - raise - raise NoAppException( - 'Detected factory "{factory}" in module "{module}", but ' - 'could not call it without arguments. Use ' - '"FLASK_APP=\'{module}:{factory}(args)\'" to specify ' - 'arguments.'.format( - factory=attr_name, module=module.__name__ - ) - ) - - raise NoAppException( - 'Failed to find Flask application or factory in module "{module}". ' - 'Use "FLASK_APP={module}:name to specify one.'.format( - module=module.__name__ - ) - ) - - -def call_factory(script_info, app_factory, arguments=()): - """Takes an app factory, a ``script_info` object and optionally a tuple - of arguments. Checks for the existence of a script_info argument and calls - the app_factory depending on that and the arguments provided. - """ - args_spec = getargspec(app_factory) - arg_names = args_spec.args - arg_defaults = args_spec.defaults - - if 'script_info' in arg_names: - return app_factory(*arguments, script_info=script_info) - elif arguments: - return app_factory(*arguments) - elif not arguments and len(arg_names) == 1 and arg_defaults is None: - return app_factory(script_info) - - return app_factory() - - -def _called_with_wrong_args(factory): - """Check whether calling a function raised a ``TypeError`` because - the call failed or because something in the factory raised the - error. - - :param factory: the factory function that was called - :return: true if the call failed - """ - tb = sys.exc_info()[2] - - try: - while tb is not None: - if tb.tb_frame.f_code is factory.__code__: - # in the factory, it was called successfully - return False - - tb = tb.tb_next - - # didn't reach the factory - return True - finally: - del tb - - -def find_app_by_string(script_info, module, app_name): - """Checks if the given string is a variable name or a function. If it is a - function, it checks for specified arguments and whether it takes a - ``script_info`` argument and calls the function with the appropriate - arguments. - """ - from flask import Flask - match = re.match(r'^ *([^ ()]+) *(?:\((.*?) *,? *\))? *$', app_name) - - if not match: - raise NoAppException( - '"{name}" is not a valid variable name or function ' - 'expression.'.format(name=app_name) - ) - - name, args = match.groups() - - try: - attr = getattr(module, name) - except AttributeError as e: - raise NoAppException(e.args[0]) - - if inspect.isfunction(attr): - if args: - try: - args = ast.literal_eval('({args},)'.format(args=args)) - except (ValueError, SyntaxError)as e: - raise NoAppException( - 'Could not parse the arguments in ' - '"{app_name}".'.format(e=e, app_name=app_name) - ) - else: - args = () - - try: - app = call_factory(script_info, attr, args) - except TypeError as e: - if not _called_with_wrong_args(attr): - raise - - raise NoAppException( - '{e}\nThe factory "{app_name}" in module "{module}" could not ' - 'be called with the specified arguments.'.format( - e=e, app_name=app_name, module=module.__name__ - ) - ) - else: - app = attr - - if isinstance(app, Flask): - return app - - raise NoAppException( - 'A valid Flask application was not obtained from ' - '"{module}:{app_name}".'.format( - module=module.__name__, app_name=app_name - ) - ) - - -def prepare_import(path): - """Given a filename this will try to calculate the python path, add it - to the search path and return the actual module name that is expected. - """ - path = os.path.realpath(path) - - if os.path.splitext(path)[1] == '.py': - path = os.path.splitext(path)[0] - - if os.path.basename(path) == '__init__': - path = os.path.dirname(path) - - module_name = [] - - # move up until outside package structure (no __init__.py) - while True: - path, name = os.path.split(path) - module_name.append(name) - - if not os.path.exists(os.path.join(path, '__init__.py')): - break - - if sys.path[0] != path: - sys.path.insert(0, path) - - return '.'.join(module_name[::-1]) - - -def locate_app(script_info, module_name, app_name, raise_if_not_found=True): - __traceback_hide__ = True - - try: - __import__(module_name) - except ImportError: - # Reraise the ImportError if it occurred within the imported module. - # Determine this by checking whether the trace has a depth > 1. - if sys.exc_info()[-1].tb_next: - raise NoAppException( - 'While importing "{name}", an ImportError was raised:' - '\n\n{tb}'.format(name=module_name, tb=traceback.format_exc()) - ) - elif raise_if_not_found: - raise NoAppException( - 'Could not import "{name}".'.format(name=module_name) - ) - else: - return - - module = sys.modules[module_name] - - if app_name is None: - return find_best_app(script_info, module) - else: - return find_app_by_string(script_info, module, app_name) - - -def get_version(ctx, param, value): - if not value or ctx.resilient_parsing: - return - import werkzeug - message = ( - 'Python %(python)s\n' - 'Flask %(flask)s\n' - 'Werkzeug %(werkzeug)s' - ) - click.echo(message % { - 'python': platform.python_version(), - 'flask': __version__, - 'werkzeug': werkzeug.__version__, - }, color=ctx.color) - ctx.exit() - - -version_option = click.Option( - ['--version'], - help='Show the flask version', - expose_value=False, - callback=get_version, - is_flag=True, - is_eager=True -) - - -class DispatchingApp(object): - """Special application that dispatches to a Flask application which - is imported by name in a background thread. If an error happens - it is recorded and shown as part of the WSGI handling which in case - of the Werkzeug debugger means that it shows up in the browser. - """ - - def __init__(self, loader, use_eager_loading=False): - self.loader = loader - self._app = None - self._lock = Lock() - self._bg_loading_exc_info = None - if use_eager_loading: - self._load_unlocked() - else: - self._load_in_background() - - def _load_in_background(self): - def _load_app(): - __traceback_hide__ = True - with self._lock: - try: - self._load_unlocked() - except Exception: - self._bg_loading_exc_info = sys.exc_info() - t = Thread(target=_load_app, args=()) - t.start() - - def _flush_bg_loading_exception(self): - __traceback_hide__ = True - exc_info = self._bg_loading_exc_info - if exc_info is not None: - self._bg_loading_exc_info = None - reraise(*exc_info) - - def _load_unlocked(self): - __traceback_hide__ = True - self._app = rv = self.loader() - self._bg_loading_exc_info = None - return rv - - def __call__(self, environ, start_response): - __traceback_hide__ = True - if self._app is not None: - return self._app(environ, start_response) - self._flush_bg_loading_exception() - with self._lock: - if self._app is not None: - rv = self._app - else: - rv = self._load_unlocked() - return rv(environ, start_response) - - -class ScriptInfo(object): - """Helper object to deal with Flask applications. This is usually not - necessary to interface with as it's used internally in the dispatching - to click. In future versions of Flask this object will most likely play - a bigger role. Typically it's created automatically by the - :class:`FlaskGroup` but you can also manually create it and pass it - onwards as click object. - """ - - def __init__(self, app_import_path=None, create_app=None, - set_debug_flag=True): - #: Optionally the import path for the Flask application. - self.app_import_path = app_import_path or os.environ.get('FLASK_APP') - #: Optionally a function that is passed the script info to create - #: the instance of the application. - self.create_app = create_app - #: A dictionary with arbitrary data that can be associated with - #: this script info. - self.data = {} - self.set_debug_flag = set_debug_flag - self._loaded_app = None - - def load_app(self): - """Loads the Flask app (if not yet loaded) and returns it. Calling - this multiple times will just result in the already loaded app to - be returned. - """ - __traceback_hide__ = True - - if self._loaded_app is not None: - return self._loaded_app - - app = None - - if self.create_app is not None: - app = call_factory(self, self.create_app) - else: - if self.app_import_path: - path, name = (re.split(r':(?![\\/])', self.app_import_path, 1) + [None])[:2] - import_name = prepare_import(path) - app = locate_app(self, import_name, name) - else: - for path in ('wsgi.py', 'app.py'): - import_name = prepare_import(path) - app = locate_app(self, import_name, None, - raise_if_not_found=False) - - if app: - break - - if not app: - raise NoAppException( - 'Could not locate a Flask application. You did not provide ' - 'the "FLASK_APP" environment variable, and a "wsgi.py" or ' - '"app.py" module was not found in the current directory.' - ) - - if self.set_debug_flag: - # Update the app's debug flag through the descriptor so that - # other values repopulate as well. - app.debug = get_debug_flag() - - self._loaded_app = app - return app - - -pass_script_info = click.make_pass_decorator(ScriptInfo, ensure=True) - - -def with_appcontext(f): - """Wraps a callback so that it's guaranteed to be executed with the - script's application context. If callbacks are registered directly - to the ``app.cli`` object then they are wrapped with this function - by default unless it's disabled. - """ - @click.pass_context - def decorator(__ctx, *args, **kwargs): - with __ctx.ensure_object(ScriptInfo).load_app().app_context(): - return __ctx.invoke(f, *args, **kwargs) - return update_wrapper(decorator, f) - - -class AppGroup(click.Group): - """This works similar to a regular click :class:`~click.Group` but it - changes the behavior of the :meth:`command` decorator so that it - automatically wraps the functions in :func:`with_appcontext`. - - Not to be confused with :class:`FlaskGroup`. - """ - - def command(self, *args, **kwargs): - """This works exactly like the method of the same name on a regular - :class:`click.Group` but it wraps callbacks in :func:`with_appcontext` - unless it's disabled by passing ``with_appcontext=False``. - """ - wrap_for_ctx = kwargs.pop('with_appcontext', True) - def decorator(f): - if wrap_for_ctx: - f = with_appcontext(f) - return click.Group.command(self, *args, **kwargs)(f) - return decorator - - def group(self, *args, **kwargs): - """This works exactly like the method of the same name on a regular - :class:`click.Group` but it defaults the group class to - :class:`AppGroup`. - """ - kwargs.setdefault('cls', AppGroup) - return click.Group.group(self, *args, **kwargs) - - -class FlaskGroup(AppGroup): - """Special subclass of the :class:`AppGroup` group that supports - loading more commands from the configured Flask app. Normally a - developer does not have to interface with this class but there are - some very advanced use cases for which it makes sense to create an - instance of this. - - For information as of why this is useful see :ref:`custom-scripts`. - - :param add_default_commands: if this is True then the default run and - shell commands wil be added. - :param add_version_option: adds the ``--version`` option. - :param create_app: an optional callback that is passed the script info and - returns the loaded app. - :param load_dotenv: Load the nearest :file:`.env` and :file:`.flaskenv` - files to set environment variables. Will also change the working - directory to the directory containing the first file found. - :param set_debug_flag: Set the app's debug flag based on the active - environment - - .. versionchanged:: 1.0 - If installed, python-dotenv will be used to load environment variables - from :file:`.env` and :file:`.flaskenv` files. - """ - - def __init__(self, add_default_commands=True, create_app=None, - add_version_option=True, load_dotenv=True, - set_debug_flag=True, **extra): - params = list(extra.pop('params', None) or ()) - - if add_version_option: - params.append(version_option) - - AppGroup.__init__(self, params=params, **extra) - self.create_app = create_app - self.load_dotenv = load_dotenv - self.set_debug_flag = set_debug_flag - - if add_default_commands: - self.add_command(run_command) - self.add_command(shell_command) - self.add_command(routes_command) - - self._loaded_plugin_commands = False - - def _load_plugin_commands(self): - if self._loaded_plugin_commands: - return - try: - import pkg_resources - except ImportError: - self._loaded_plugin_commands = True - return - - for ep in pkg_resources.iter_entry_points('flask.commands'): - self.add_command(ep.load(), ep.name) - self._loaded_plugin_commands = True - - def get_command(self, ctx, name): - self._load_plugin_commands() - - # We load built-in commands first as these should always be the - # same no matter what the app does. If the app does want to - # override this it needs to make a custom instance of this group - # and not attach the default commands. - # - # This also means that the script stays functional in case the - # application completely fails. - rv = AppGroup.get_command(self, ctx, name) - if rv is not None: - return rv - - info = ctx.ensure_object(ScriptInfo) - try: - rv = info.load_app().cli.get_command(ctx, name) - if rv is not None: - return rv - except NoAppException: - pass - - def list_commands(self, ctx): - self._load_plugin_commands() - - # The commands available is the list of both the application (if - # available) plus the builtin commands. - rv = set(click.Group.list_commands(self, ctx)) - info = ctx.ensure_object(ScriptInfo) - try: - rv.update(info.load_app().cli.list_commands(ctx)) - except Exception: - # Here we intentionally swallow all exceptions as we don't - # want the help page to break if the app does not exist. - # If someone attempts to use the command we try to create - # the app again and this will give us the error. - # However, we will not do so silently because that would confuse - # users. - traceback.print_exc() - return sorted(rv) - - def main(self, *args, **kwargs): - # Set a global flag that indicates that we were invoked from the - # command line interface. This is detected by Flask.run to make the - # call into a no-op. This is necessary to avoid ugly errors when the - # script that is loaded here also attempts to start a server. - os.environ['FLASK_RUN_FROM_CLI'] = 'true' - - if get_load_dotenv(self.load_dotenv): - load_dotenv() - - obj = kwargs.get('obj') - - if obj is None: - obj = ScriptInfo(create_app=self.create_app, - set_debug_flag=self.set_debug_flag) - - kwargs['obj'] = obj - kwargs.setdefault('auto_envvar_prefix', 'FLASK') - return super(FlaskGroup, self).main(*args, **kwargs) - - -def _path_is_ancestor(path, other): - """Take ``other`` and remove the length of ``path`` from it. Then join it - to ``path``. If it is the original value, ``path`` is an ancestor of - ``other``.""" - return os.path.join(path, other[len(path):].lstrip(os.sep)) == other - - -def load_dotenv(path=None): - """Load "dotenv" files in order of precedence to set environment variables. - - If an env var is already set it is not overwritten, so earlier files in the - list are preferred over later files. - - Changes the current working directory to the location of the first file - found, with the assumption that it is in the top level project directory - and will be where the Python path should import local packages from. - - This is a no-op if `python-dotenv`_ is not installed. - - .. _python-dotenv: https://github.com/theskumar/python-dotenv#readme - - :param path: Load the file at this location instead of searching. - :return: ``True`` if a file was loaded. - - .. versionadded:: 1.0 - """ - if dotenv is None: - if path or os.path.exists('.env') or os.path.exists('.flaskenv'): - click.secho( - ' * Tip: There are .env files present.' - ' Do "pip install python-dotenv" to use them.', - fg='yellow') - return - - if path is not None: - return dotenv.load_dotenv(path) - - new_dir = None - - for name in ('.env', '.flaskenv'): - path = dotenv.find_dotenv(name, usecwd=True) - - if not path: - continue - - if new_dir is None: - new_dir = os.path.dirname(path) - - dotenv.load_dotenv(path) - - if new_dir and os.getcwd() != new_dir: - os.chdir(new_dir) - - return new_dir is not None # at least one file was located and loaded - - -def show_server_banner(env, debug, app_import_path, eager_loading): - """Show extra startup messages the first time the server is run, - ignoring the reloader. - """ - if os.environ.get('WERKZEUG_RUN_MAIN') == 'true': - return - - if app_import_path is not None: - message = ' * Serving Flask app "{0}"'.format(app_import_path) - - if not eager_loading: - message += ' (lazy loading)' - - click.echo(message) - - click.echo(' * Environment: {0}'.format(env)) - - if env == 'production': - click.secho( - ' WARNING: This is a development server. ' - 'Do not use it in a production deployment.', fg='red') - click.secho(' Use a production WSGI server instead.', dim=True) - - if debug is not None: - click.echo(' * Debug mode: {0}'.format('on' if debug else 'off')) - - -class CertParamType(click.ParamType): - """Click option type for the ``--cert`` option. Allows either an - existing file, the string ``'adhoc'``, or an import for a - :class:`~ssl.SSLContext` object. - """ - - name = 'path' - - def __init__(self): - self.path_type = click.Path( - exists=True, dir_okay=False, resolve_path=True) - - def convert(self, value, param, ctx): - try: - return self.path_type(value, param, ctx) - except click.BadParameter: - value = click.STRING(value, param, ctx).lower() - - if value == 'adhoc': - try: - import OpenSSL - except ImportError: - raise click.BadParameter( - 'Using ad-hoc certificates requires pyOpenSSL.', - ctx, param) - - return value - - obj = import_string(value, silent=True) - - if sys.version_info < (2, 7, 9): - if obj: - return obj - else: - if isinstance(obj, ssl.SSLContext): - return obj - - raise - - -def _validate_key(ctx, param, value): - """The ``--key`` option must be specified when ``--cert`` is a file. - Modifies the ``cert`` param to be a ``(cert, key)`` pair if needed. - """ - cert = ctx.params.get('cert') - is_adhoc = cert == 'adhoc' - - if sys.version_info < (2, 7, 9): - is_context = cert and not isinstance(cert, (text_type, bytes)) - else: - is_context = isinstance(cert, ssl.SSLContext) - - if value is not None: - if is_adhoc: - raise click.BadParameter( - 'When "--cert" is "adhoc", "--key" is not used.', - ctx, param) - - if is_context: - raise click.BadParameter( - 'When "--cert" is an SSLContext object, "--key is not used.', - ctx, param) - - if not cert: - raise click.BadParameter( - '"--cert" must also be specified.', - ctx, param) - - ctx.params['cert'] = cert, value - - else: - if cert and not (is_adhoc or is_context): - raise click.BadParameter( - 'Required when using "--cert".', - ctx, param) - - return value - - -@click.command('run', short_help='Run a development server.') -@click.option('--host', '-h', default='127.0.0.1', - help='The interface to bind to.') -@click.option('--port', '-p', default=5000, - help='The port to bind to.') -@click.option('--cert', type=CertParamType(), - help='Specify a certificate file to use HTTPS.') -@click.option('--key', - type=click.Path(exists=True, dir_okay=False, resolve_path=True), - callback=_validate_key, expose_value=False, - help='The key file to use when specifying a certificate.') -@click.option('--reload/--no-reload', default=None, - help='Enable or disable the reloader. By default the reloader ' - 'is active if debug is enabled.') -@click.option('--debugger/--no-debugger', default=None, - help='Enable or disable the debugger. By default the debugger ' - 'is active if debug is enabled.') -@click.option('--eager-loading/--lazy-loader', default=None, - help='Enable or disable eager loading. By default eager ' - 'loading is enabled if the reloader is disabled.') -@click.option('--with-threads/--without-threads', default=True, - help='Enable or disable multithreading.') -@pass_script_info -def run_command(info, host, port, reload, debugger, eager_loading, - with_threads, cert): - """Run a local development server. - - This server is for development purposes only. It does not provide - the stability, security, or performance of production WSGI servers. - - The reloader and debugger are enabled by default if - FLASK_ENV=development or FLASK_DEBUG=1. - """ - debug = get_debug_flag() - - if reload is None: - reload = debug - - if debugger is None: - debugger = debug - - if eager_loading is None: - eager_loading = not reload - - show_server_banner(get_env(), debug, info.app_import_path, eager_loading) - app = DispatchingApp(info.load_app, use_eager_loading=eager_loading) - - from werkzeug.serving import run_simple - run_simple(host, port, app, use_reloader=reload, use_debugger=debugger, - threaded=with_threads, ssl_context=cert) - - -@click.command('shell', short_help='Run a shell in the app context.') -@with_appcontext -def shell_command(): - """Run an interactive Python shell in the context of a given - Flask application. The application will populate the default - namespace of this shell according to it's configuration. - - This is useful for executing small snippets of management code - without having to manually configure the application. - """ - import code - from flask.globals import _app_ctx_stack - app = _app_ctx_stack.top.app - banner = 'Python %s on %s\nApp: %s [%s]\nInstance: %s' % ( - sys.version, - sys.platform, - app.import_name, - app.env, - app.instance_path, - ) - ctx = {} - - # Support the regular Python interpreter startup script if someone - # is using it. - startup = os.environ.get('PYTHONSTARTUP') - if startup and os.path.isfile(startup): - with open(startup, 'r') as f: - eval(compile(f.read(), startup, 'exec'), ctx) - - ctx.update(app.make_shell_context()) - - code.interact(banner=banner, local=ctx) - - -@click.command('routes', short_help='Show the routes for the app.') -@click.option( - '--sort', '-s', - type=click.Choice(('endpoint', 'methods', 'rule', 'match')), - default='endpoint', - help=( - 'Method to sort routes by. "match" is the order that Flask will match ' - 'routes when dispatching a request.' - ) -) -@click.option( - '--all-methods', - is_flag=True, - help="Show HEAD and OPTIONS methods." -) -@with_appcontext -def routes_command(sort, all_methods): - """Show all registered routes with endpoints and methods.""" - - rules = list(current_app.url_map.iter_rules()) - if not rules: - click.echo('No routes were registered.') - return - - ignored_methods = set(() if all_methods else ('HEAD', 'OPTIONS')) - - if sort in ('endpoint', 'rule'): - rules = sorted(rules, key=attrgetter(sort)) - elif sort == 'methods': - rules = sorted(rules, key=lambda rule: sorted(rule.methods)) - - rule_methods = [ - ', '.join(sorted(rule.methods - ignored_methods)) for rule in rules - ] - - headers = ('Endpoint', 'Methods', 'Rule') - widths = ( - max(len(rule.endpoint) for rule in rules), - max(len(methods) for methods in rule_methods), - max(len(rule.rule) for rule in rules), - ) - widths = [max(len(h), w) for h, w in zip(headers, widths)] - row = '{{0:<{0}}} {{1:<{1}}} {{2:<{2}}}'.format(*widths) - - click.echo(row.format(*headers).strip()) - click.echo(row.format(*('-' * width for width in widths))) - - for rule, methods in zip(rules, rule_methods): - click.echo(row.format(rule.endpoint, methods, rule.rule).rstrip()) - - -cli = FlaskGroup(help="""\ -A general utility script for Flask applications. - -Provides commands from Flask, extensions, and the application. Loads the -application defined in the FLASK_APP environment variable, or from a wsgi.py -file. Setting the FLASK_ENV environment variable to 'development' will enable -debug mode. - -\b - {prefix}{cmd} FLASK_APP=hello.py - {prefix}{cmd} FLASK_ENV=development - {prefix}flask run -""".format( - cmd='export' if os.name == 'posix' else 'set', - prefix='$ ' if os.name == 'posix' else '> ' -)) - - -def main(as_module=False): - args = sys.argv[1:] - - if as_module: - this_module = 'flask' - - if sys.version_info < (2, 7): - this_module += '.cli' - - name = 'python -m ' + this_module - - # Python rewrites "python -m flask" to the path to the file in argv. - # Restore the original command so that the reloader works. - sys.argv = ['-m', this_module] + args - else: - name = None - - cli.main(args=args, prog_name=name) - - -if __name__ == '__main__': - main(as_module=True) diff --git a/python/flask/config.py b/python/flask/config.py deleted file mode 100644 index a5475ed..0000000 --- a/python/flask/config.py +++ /dev/null @@ -1,269 +0,0 @@ -# -*- coding: utf-8 -*- -""" - flask.config - ~~~~~~~~~~~~ - - Implements the configuration related objects. - - :copyright: © 2010 by the Pallets team. - :license: BSD, see LICENSE for more details. -""" - -import os -import types -import errno - -from werkzeug.utils import import_string -from ._compat import string_types, iteritems -from . import json - - -class ConfigAttribute(object): - """Makes an attribute forward to the config""" - - def __init__(self, name, get_converter=None): - self.__name__ = name - self.get_converter = get_converter - - def __get__(self, obj, type=None): - if obj is None: - return self - rv = obj.config[self.__name__] - if self.get_converter is not None: - rv = self.get_converter(rv) - return rv - - def __set__(self, obj, value): - obj.config[self.__name__] = value - - -class Config(dict): - """Works exactly like a dict but provides ways to fill it from files - or special dictionaries. There are two common patterns to populate the - config. - - Either you can fill the config from a config file:: - - app.config.from_pyfile('yourconfig.cfg') - - Or alternatively you can define the configuration options in the - module that calls :meth:`from_object` or provide an import path to - a module that should be loaded. It is also possible to tell it to - use the same module and with that provide the configuration values - just before the call:: - - DEBUG = True - SECRET_KEY = 'development key' - app.config.from_object(__name__) - - In both cases (loading from any Python file or loading from modules), - only uppercase keys are added to the config. This makes it possible to use - lowercase values in the config file for temporary values that are not added - to the config or to define the config keys in the same file that implements - the application. - - Probably the most interesting way to load configurations is from an - environment variable pointing to a file:: - - app.config.from_envvar('YOURAPPLICATION_SETTINGS') - - In this case before launching the application you have to set this - environment variable to the file you want to use. On Linux and OS X - use the export statement:: - - export YOURAPPLICATION_SETTINGS='/path/to/config/file' - - On windows use `set` instead. - - :param root_path: path to which files are read relative from. When the - config object is created by the application, this is - the application's :attr:`~flask.Flask.root_path`. - :param defaults: an optional dictionary of default values - """ - - def __init__(self, root_path, defaults=None): - dict.__init__(self, defaults or {}) - self.root_path = root_path - - def from_envvar(self, variable_name, silent=False): - """Loads a configuration from an environment variable pointing to - a configuration file. This is basically just a shortcut with nicer - error messages for this line of code:: - - app.config.from_pyfile(os.environ['YOURAPPLICATION_SETTINGS']) - - :param variable_name: name of the environment variable - :param silent: set to ``True`` if you want silent failure for missing - files. - :return: bool. ``True`` if able to load config, ``False`` otherwise. - """ - rv = os.environ.get(variable_name) - if not rv: - if silent: - return False - raise RuntimeError('The environment variable %r is not set ' - 'and as such configuration could not be ' - 'loaded. Set this variable and make it ' - 'point to a configuration file' % - variable_name) - return self.from_pyfile(rv, silent=silent) - - def from_pyfile(self, filename, silent=False): - """Updates the values in the config from a Python file. This function - behaves as if the file was imported as module with the - :meth:`from_object` function. - - :param filename: the filename of the config. This can either be an - absolute filename or a filename relative to the - root path. - :param silent: set to ``True`` if you want silent failure for missing - files. - - .. versionadded:: 0.7 - `silent` parameter. - """ - filename = os.path.join(self.root_path, filename) - d = types.ModuleType('config') - d.__file__ = filename - try: - with open(filename, mode='rb') as config_file: - exec(compile(config_file.read(), filename, 'exec'), d.__dict__) - except IOError as e: - if silent and e.errno in ( - errno.ENOENT, errno.EISDIR, errno.ENOTDIR - ): - return False - e.strerror = 'Unable to load configuration file (%s)' % e.strerror - raise - self.from_object(d) - return True - - def from_object(self, obj): - """Updates the values from the given object. An object can be of one - of the following two types: - - - a string: in this case the object with that name will be imported - - an actual object reference: that object is used directly - - Objects are usually either modules or classes. :meth:`from_object` - loads only the uppercase attributes of the module/class. A ``dict`` - object will not work with :meth:`from_object` because the keys of a - ``dict`` are not attributes of the ``dict`` class. - - Example of module-based configuration:: - - app.config.from_object('yourapplication.default_config') - from yourapplication import default_config - app.config.from_object(default_config) - - Nothing is done to the object before loading. If the object is a - class and has ``@property`` attributes, it needs to be - instantiated before being passed to this method. - - You should not use this function to load the actual configuration but - rather configuration defaults. The actual config should be loaded - with :meth:`from_pyfile` and ideally from a location not within the - package because the package might be installed system wide. - - See :ref:`config-dev-prod` for an example of class-based configuration - using :meth:`from_object`. - - :param obj: an import name or object - """ - if isinstance(obj, string_types): - obj = import_string(obj) - for key in dir(obj): - if key.isupper(): - self[key] = getattr(obj, key) - - def from_json(self, filename, silent=False): - """Updates the values in the config from a JSON file. This function - behaves as if the JSON object was a dictionary and passed to the - :meth:`from_mapping` function. - - :param filename: the filename of the JSON file. This can either be an - absolute filename or a filename relative to the - root path. - :param silent: set to ``True`` if you want silent failure for missing - files. - - .. versionadded:: 0.11 - """ - filename = os.path.join(self.root_path, filename) - - try: - with open(filename) as json_file: - obj = json.loads(json_file.read()) - except IOError as e: - if silent and e.errno in (errno.ENOENT, errno.EISDIR): - return False - e.strerror = 'Unable to load configuration file (%s)' % e.strerror - raise - return self.from_mapping(obj) - - def from_mapping(self, *mapping, **kwargs): - """Updates the config like :meth:`update` ignoring items with non-upper - keys. - - .. versionadded:: 0.11 - """ - mappings = [] - if len(mapping) == 1: - if hasattr(mapping[0], 'items'): - mappings.append(mapping[0].items()) - else: - mappings.append(mapping[0]) - elif len(mapping) > 1: - raise TypeError( - 'expected at most 1 positional argument, got %d' % len(mapping) - ) - mappings.append(kwargs.items()) - for mapping in mappings: - for (key, value) in mapping: - if key.isupper(): - self[key] = value - return True - - def get_namespace(self, namespace, lowercase=True, trim_namespace=True): - """Returns a dictionary containing a subset of configuration options - that match the specified namespace/prefix. Example usage:: - - app.config['IMAGE_STORE_TYPE'] = 'fs' - app.config['IMAGE_STORE_PATH'] = '/var/app/images' - app.config['IMAGE_STORE_BASE_URL'] = 'http://img.website.com' - image_store_config = app.config.get_namespace('IMAGE_STORE_') - - The resulting dictionary `image_store_config` would look like:: - - { - 'type': 'fs', - 'path': '/var/app/images', - 'base_url': 'http://img.website.com' - } - - This is often useful when configuration options map directly to - keyword arguments in functions or class constructors. - - :param namespace: a configuration namespace - :param lowercase: a flag indicating if the keys of the resulting - dictionary should be lowercase - :param trim_namespace: a flag indicating if the keys of the resulting - dictionary should not include the namespace - - .. versionadded:: 0.11 - """ - rv = {} - for k, v in iteritems(self): - if not k.startswith(namespace): - continue - if trim_namespace: - key = k[len(namespace):] - else: - key = k - if lowercase: - key = key.lower() - rv[key] = v - return rv - - def __repr__(self): - return '<%s %s>' % (self.__class__.__name__, dict.__repr__(self)) diff --git a/python/flask/ctx.py b/python/flask/ctx.py deleted file mode 100644 index ec8e787..0000000 --- a/python/flask/ctx.py +++ /dev/null @@ -1,457 +0,0 @@ -# -*- coding: utf-8 -*- -""" - flask.ctx - ~~~~~~~~~ - - Implements the objects required to keep the context. - - :copyright: © 2010 by the Pallets team. - :license: BSD, see LICENSE for more details. -""" - -import sys -from functools import update_wrapper - -from werkzeug.exceptions import HTTPException - -from .globals import _request_ctx_stack, _app_ctx_stack -from .signals import appcontext_pushed, appcontext_popped -from ._compat import BROKEN_PYPY_CTXMGR_EXIT, reraise - - -# a singleton sentinel value for parameter defaults -_sentinel = object() - - -class _AppCtxGlobals(object): - """A plain object. Used as a namespace for storing data during an - application context. - - Creating an app context automatically creates this object, which is - made available as the :data:`g` proxy. - - .. describe:: 'key' in g - - Check whether an attribute is present. - - .. versionadded:: 0.10 - - .. describe:: iter(g) - - Return an iterator over the attribute names. - - .. versionadded:: 0.10 - """ - - def get(self, name, default=None): - """Get an attribute by name, or a default value. Like - :meth:`dict.get`. - - :param name: Name of attribute to get. - :param default: Value to return if the attribute is not present. - - .. versionadded:: 0.10 - """ - return self.__dict__.get(name, default) - - def pop(self, name, default=_sentinel): - """Get and remove an attribute by name. Like :meth:`dict.pop`. - - :param name: Name of attribute to pop. - :param default: Value to return if the attribute is not present, - instead of raise a ``KeyError``. - - .. versionadded:: 0.11 - """ - if default is _sentinel: - return self.__dict__.pop(name) - else: - return self.__dict__.pop(name, default) - - def setdefault(self, name, default=None): - """Get the value of an attribute if it is present, otherwise - set and return a default value. Like :meth:`dict.setdefault`. - - :param name: Name of attribute to get. - :param: default: Value to set and return if the attribute is not - present. - - .. versionadded:: 0.11 - """ - return self.__dict__.setdefault(name, default) - - def __contains__(self, item): - return item in self.__dict__ - - def __iter__(self): - return iter(self.__dict__) - - def __repr__(self): - top = _app_ctx_stack.top - if top is not None: - return '<flask.g of %r>' % top.app.name - return object.__repr__(self) - - -def after_this_request(f): - """Executes a function after this request. This is useful to modify - response objects. The function is passed the response object and has - to return the same or a new one. - - Example:: - - @app.route('/') - def index(): - @after_this_request - def add_header(response): - response.headers['X-Foo'] = 'Parachute' - return response - return 'Hello World!' - - This is more useful if a function other than the view function wants to - modify a response. For instance think of a decorator that wants to add - some headers without converting the return value into a response object. - - .. versionadded:: 0.9 - """ - _request_ctx_stack.top._after_request_functions.append(f) - return f - - -def copy_current_request_context(f): - """A helper function that decorates a function to retain the current - request context. This is useful when working with greenlets. The moment - the function is decorated a copy of the request context is created and - then pushed when the function is called. - - Example:: - - import gevent - from flask import copy_current_request_context - - @app.route('/') - def index(): - @copy_current_request_context - def do_some_work(): - # do some work here, it can access flask.request like you - # would otherwise in the view function. - ... - gevent.spawn(do_some_work) - return 'Regular response' - - .. versionadded:: 0.10 - """ - top = _request_ctx_stack.top - if top is None: - raise RuntimeError('This decorator can only be used at local scopes ' - 'when a request context is on the stack. For instance within ' - 'view functions.') - reqctx = top.copy() - def wrapper(*args, **kwargs): - with reqctx: - return f(*args, **kwargs) - return update_wrapper(wrapper, f) - - -def has_request_context(): - """If you have code that wants to test if a request context is there or - not this function can be used. For instance, you may want to take advantage - of request information if the request object is available, but fail - silently if it is unavailable. - - :: - - class User(db.Model): - - def __init__(self, username, remote_addr=None): - self.username = username - if remote_addr is None and has_request_context(): - remote_addr = request.remote_addr - self.remote_addr = remote_addr - - Alternatively you can also just test any of the context bound objects - (such as :class:`request` or :class:`g`) for truthness:: - - class User(db.Model): - - def __init__(self, username, remote_addr=None): - self.username = username - if remote_addr is None and request: - remote_addr = request.remote_addr - self.remote_addr = remote_addr - - .. versionadded:: 0.7 - """ - return _request_ctx_stack.top is not None - - -def has_app_context(): - """Works like :func:`has_request_context` but for the application - context. You can also just do a boolean check on the - :data:`current_app` object instead. - - .. versionadded:: 0.9 - """ - return _app_ctx_stack.top is not None - - -class AppContext(object): - """The application context binds an application object implicitly - to the current thread or greenlet, similar to how the - :class:`RequestContext` binds request information. The application - context is also implicitly created if a request context is created - but the application is not on top of the individual application - context. - """ - - def __init__(self, app): - self.app = app - self.url_adapter = app.create_url_adapter(None) - self.g = app.app_ctx_globals_class() - - # Like request context, app contexts can be pushed multiple times - # but there a basic "refcount" is enough to track them. - self._refcnt = 0 - - def push(self): - """Binds the app context to the current context.""" - self._refcnt += 1 - if hasattr(sys, 'exc_clear'): - sys.exc_clear() - _app_ctx_stack.push(self) - appcontext_pushed.send(self.app) - - def pop(self, exc=_sentinel): - """Pops the app context.""" - try: - self._refcnt -= 1 - if self._refcnt <= 0: - if exc is _sentinel: - exc = sys.exc_info()[1] - self.app.do_teardown_appcontext(exc) - finally: - rv = _app_ctx_stack.pop() - assert rv is self, 'Popped wrong app context. (%r instead of %r)' \ - % (rv, self) - appcontext_popped.send(self.app) - - def __enter__(self): - self.push() - return self - - def __exit__(self, exc_type, exc_value, tb): - self.pop(exc_value) - - if BROKEN_PYPY_CTXMGR_EXIT and exc_type is not None: - reraise(exc_type, exc_value, tb) - - -class RequestContext(object): - """The request context contains all request relevant information. It is - created at the beginning of the request and pushed to the - `_request_ctx_stack` and removed at the end of it. It will create the - URL adapter and request object for the WSGI environment provided. - - Do not attempt to use this class directly, instead use - :meth:`~flask.Flask.test_request_context` and - :meth:`~flask.Flask.request_context` to create this object. - - When the request context is popped, it will evaluate all the - functions registered on the application for teardown execution - (:meth:`~flask.Flask.teardown_request`). - - The request context is automatically popped at the end of the request - for you. In debug mode the request context is kept around if - exceptions happen so that interactive debuggers have a chance to - introspect the data. With 0.4 this can also be forced for requests - that did not fail and outside of ``DEBUG`` mode. By setting - ``'flask._preserve_context'`` to ``True`` on the WSGI environment the - context will not pop itself at the end of the request. This is used by - the :meth:`~flask.Flask.test_client` for example to implement the - deferred cleanup functionality. - - You might find this helpful for unittests where you need the - information from the context local around for a little longer. Make - sure to properly :meth:`~werkzeug.LocalStack.pop` the stack yourself in - that situation, otherwise your unittests will leak memory. - """ - - def __init__(self, app, environ, request=None): - self.app = app - if request is None: - request = app.request_class(environ) - self.request = request - self.url_adapter = app.create_url_adapter(self.request) - self.flashes = None - self.session = None - - # Request contexts can be pushed multiple times and interleaved with - # other request contexts. Now only if the last level is popped we - # get rid of them. Additionally if an application context is missing - # one is created implicitly so for each level we add this information - self._implicit_app_ctx_stack = [] - - # indicator if the context was preserved. Next time another context - # is pushed the preserved context is popped. - self.preserved = False - - # remembers the exception for pop if there is one in case the context - # preservation kicks in. - self._preserved_exc = None - - # Functions that should be executed after the request on the response - # object. These will be called before the regular "after_request" - # functions. - self._after_request_functions = [] - - self.match_request() - - def _get_g(self): - return _app_ctx_stack.top.g - def _set_g(self, value): - _app_ctx_stack.top.g = value - g = property(_get_g, _set_g) - del _get_g, _set_g - - def copy(self): - """Creates a copy of this request context with the same request object. - This can be used to move a request context to a different greenlet. - Because the actual request object is the same this cannot be used to - move a request context to a different thread unless access to the - request object is locked. - - .. versionadded:: 0.10 - """ - return self.__class__(self.app, - environ=self.request.environ, - request=self.request - ) - - def match_request(self): - """Can be overridden by a subclass to hook into the matching - of the request. - """ - try: - url_rule, self.request.view_args = \ - self.url_adapter.match(return_rule=True) - self.request.url_rule = url_rule - except HTTPException as e: - self.request.routing_exception = e - - def push(self): - """Binds the request context to the current context.""" - # If an exception occurs in debug mode or if context preservation is - # activated under exception situations exactly one context stays - # on the stack. The rationale is that you want to access that - # information under debug situations. However if someone forgets to - # pop that context again we want to make sure that on the next push - # it's invalidated, otherwise we run at risk that something leaks - # memory. This is usually only a problem in test suite since this - # functionality is not active in production environments. - top = _request_ctx_stack.top - if top is not None and top.preserved: - top.pop(top._preserved_exc) - - # Before we push the request context we have to ensure that there - # is an application context. - app_ctx = _app_ctx_stack.top - if app_ctx is None or app_ctx.app != self.app: - app_ctx = self.app.app_context() - app_ctx.push() - self._implicit_app_ctx_stack.append(app_ctx) - else: - self._implicit_app_ctx_stack.append(None) - - if hasattr(sys, 'exc_clear'): - sys.exc_clear() - - _request_ctx_stack.push(self) - - # Open the session at the moment that the request context is available. - # This allows a custom open_session method to use the request context. - # Only open a new session if this is the first time the request was - # pushed, otherwise stream_with_context loses the session. - if self.session is None: - session_interface = self.app.session_interface - self.session = session_interface.open_session( - self.app, self.request - ) - - if self.session is None: - self.session = session_interface.make_null_session(self.app) - - def pop(self, exc=_sentinel): - """Pops the request context and unbinds it by doing that. This will - also trigger the execution of functions registered by the - :meth:`~flask.Flask.teardown_request` decorator. - - .. versionchanged:: 0.9 - Added the `exc` argument. - """ - app_ctx = self._implicit_app_ctx_stack.pop() - - try: - clear_request = False - if not self._implicit_app_ctx_stack: - self.preserved = False - self._preserved_exc = None - if exc is _sentinel: - exc = sys.exc_info()[1] - self.app.do_teardown_request(exc) - - # If this interpreter supports clearing the exception information - # we do that now. This will only go into effect on Python 2.x, - # on 3.x it disappears automatically at the end of the exception - # stack. - if hasattr(sys, 'exc_clear'): - sys.exc_clear() - - request_close = getattr(self.request, 'close', None) - if request_close is not None: - request_close() - clear_request = True - finally: - rv = _request_ctx_stack.pop() - - # get rid of circular dependencies at the end of the request - # so that we don't require the GC to be active. - if clear_request: - rv.request.environ['werkzeug.request'] = None - - # Get rid of the app as well if necessary. - if app_ctx is not None: - app_ctx.pop(exc) - - assert rv is self, 'Popped wrong request context. ' \ - '(%r instead of %r)' % (rv, self) - - def auto_pop(self, exc): - if self.request.environ.get('flask._preserve_context') or \ - (exc is not None and self.app.preserve_context_on_exception): - self.preserved = True - self._preserved_exc = exc - else: - self.pop(exc) - - def __enter__(self): - self.push() - return self - - def __exit__(self, exc_type, exc_value, tb): - # do not pop the request stack if we are in debug mode and an - # exception happened. This will allow the debugger to still - # access the request object in the interactive shell. Furthermore - # the context can be force kept alive for the test client. - # See flask.testing for how this works. - self.auto_pop(exc_value) - - if BROKEN_PYPY_CTXMGR_EXIT and exc_type is not None: - reraise(exc_type, exc_value, tb) - - def __repr__(self): - return '<%s \'%s\' [%s] of %s>' % ( - self.__class__.__name__, - self.request.url, - self.request.method, - self.app.name, - ) diff --git a/python/flask/debughelpers.py b/python/flask/debughelpers.py deleted file mode 100644 index e9765f2..0000000 --- a/python/flask/debughelpers.py +++ /dev/null @@ -1,168 +0,0 @@ -# -*- coding: utf-8 -*- -""" - flask.debughelpers - ~~~~~~~~~~~~~~~~~~ - - Various helpers to make the development experience better. - - :copyright: © 2010 by the Pallets team. - :license: BSD, see LICENSE for more details. -""" - -import os -from warnings import warn - -from ._compat import implements_to_string, text_type -from .app import Flask -from .blueprints import Blueprint -from .globals import _request_ctx_stack - - -class UnexpectedUnicodeError(AssertionError, UnicodeError): - """Raised in places where we want some better error reporting for - unexpected unicode or binary data. - """ - - -@implements_to_string -class DebugFilesKeyError(KeyError, AssertionError): - """Raised from request.files during debugging. The idea is that it can - provide a better error message than just a generic KeyError/BadRequest. - """ - - def __init__(self, request, key): - form_matches = request.form.getlist(key) - buf = ['You tried to access the file "%s" in the request.files ' - 'dictionary but it does not exist. The mimetype for the request ' - 'is "%s" instead of "multipart/form-data" which means that no ' - 'file contents were transmitted. To fix this error you should ' - 'provide enctype="multipart/form-data" in your form.' % - (key, request.mimetype)] - if form_matches: - buf.append('\n\nThe browser instead transmitted some file names. ' - 'This was submitted: %s' % ', '.join('"%s"' % x - for x in form_matches)) - self.msg = ''.join(buf) - - def __str__(self): - return self.msg - - -class FormDataRoutingRedirect(AssertionError): - """This exception is raised by Flask in debug mode if it detects a - redirect caused by the routing system when the request method is not - GET, HEAD or OPTIONS. Reasoning: form data will be dropped. - """ - - def __init__(self, request): - exc = request.routing_exception - buf = ['A request was sent to this URL (%s) but a redirect was ' - 'issued automatically by the routing system to "%s".' - % (request.url, exc.new_url)] - - # In case just a slash was appended we can be extra helpful - if request.base_url + '/' == exc.new_url.split('?')[0]: - buf.append(' The URL was defined with a trailing slash so ' - 'Flask will automatically redirect to the URL ' - 'with the trailing slash if it was accessed ' - 'without one.') - - buf.append(' Make sure to directly send your %s-request to this URL ' - 'since we can\'t make browsers or HTTP clients redirect ' - 'with form data reliably or without user interaction.' % - request.method) - buf.append('\n\nNote: this exception is only raised in debug mode') - AssertionError.__init__(self, ''.join(buf).encode('utf-8')) - - -def attach_enctype_error_multidict(request): - """Since Flask 0.8 we're monkeypatching the files object in case a - request is detected that does not use multipart form data but the files - object is accessed. - """ - oldcls = request.files.__class__ - class newcls(oldcls): - def __getitem__(self, key): - try: - return oldcls.__getitem__(self, key) - except KeyError: - if key not in request.form: - raise - raise DebugFilesKeyError(request, key) - newcls.__name__ = oldcls.__name__ - newcls.__module__ = oldcls.__module__ - request.files.__class__ = newcls - - -def _dump_loader_info(loader): - yield 'class: %s.%s' % (type(loader).__module__, type(loader).__name__) - for key, value in sorted(loader.__dict__.items()): - if key.startswith('_'): - continue - if isinstance(value, (tuple, list)): - if not all(isinstance(x, (str, text_type)) for x in value): - continue - yield '%s:' % key - for item in value: - yield ' - %s' % item - continue - elif not isinstance(value, (str, text_type, int, float, bool)): - continue - yield '%s: %r' % (key, value) - - -def explain_template_loading_attempts(app, template, attempts): - """This should help developers understand what failed""" - info = ['Locating template "%s":' % template] - total_found = 0 - blueprint = None - reqctx = _request_ctx_stack.top - if reqctx is not None and reqctx.request.blueprint is not None: - blueprint = reqctx.request.blueprint - - for idx, (loader, srcobj, triple) in enumerate(attempts): - if isinstance(srcobj, Flask): - src_info = 'application "%s"' % srcobj.import_name - elif isinstance(srcobj, Blueprint): - src_info = 'blueprint "%s" (%s)' % (srcobj.name, - srcobj.import_name) - else: - src_info = repr(srcobj) - - info.append('% 5d: trying loader of %s' % ( - idx + 1, src_info)) - - for line in _dump_loader_info(loader): - info.append(' %s' % line) - - if triple is None: - detail = 'no match' - else: - detail = 'found (%r)' % (triple[1] or '<string>') - total_found += 1 - info.append(' -> %s' % detail) - - seems_fishy = False - if total_found == 0: - info.append('Error: the template could not be found.') - seems_fishy = True - elif total_found > 1: - info.append('Warning: multiple loaders returned a match for the template.') - seems_fishy = True - - if blueprint is not None and seems_fishy: - info.append(' The template was looked up from an endpoint that ' - 'belongs to the blueprint "%s".' % blueprint) - info.append(' Maybe you did not place a template in the right folder?') - info.append(' See http://flask.pocoo.org/docs/blueprints/#templates') - - app.logger.info('\n'.join(info)) - - -def explain_ignored_app_run(): - if os.environ.get('WERKZEUG_RUN_MAIN') != 'true': - warn(Warning('Silently ignoring app.run() because the ' - 'application is run from the flask command line ' - 'executable. Consider putting app.run() behind an ' - 'if __name__ == "__main__" guard to silence this ' - 'warning.'), stacklevel=3) diff --git a/python/flask/globals.py b/python/flask/globals.py deleted file mode 100644 index 7d50a6f..0000000 --- a/python/flask/globals.py +++ /dev/null @@ -1,61 +0,0 @@ -# -*- coding: utf-8 -*- -""" - flask.globals - ~~~~~~~~~~~~~ - - Defines all the global objects that are proxies to the current - active context. - - :copyright: © 2010 by the Pallets team. - :license: BSD, see LICENSE for more details. -""" - -from functools import partial -from werkzeug.local import LocalStack, LocalProxy - - -_request_ctx_err_msg = '''\ -Working outside of request context. - -This typically means that you attempted to use functionality that needed -an active HTTP request. Consult the documentation on testing for -information about how to avoid this problem.\ -''' -_app_ctx_err_msg = '''\ -Working outside of application context. - -This typically means that you attempted to use functionality that needed -to interface with the current application object in some way. To solve -this, set up an application context with app.app_context(). See the -documentation for more information.\ -''' - - -def _lookup_req_object(name): - top = _request_ctx_stack.top - if top is None: - raise RuntimeError(_request_ctx_err_msg) - return getattr(top, name) - - -def _lookup_app_object(name): - top = _app_ctx_stack.top - if top is None: - raise RuntimeError(_app_ctx_err_msg) - return getattr(top, name) - - -def _find_app(): - top = _app_ctx_stack.top - if top is None: - raise RuntimeError(_app_ctx_err_msg) - return top.app - - -# context locals -_request_ctx_stack = LocalStack() -_app_ctx_stack = LocalStack() -current_app = LocalProxy(_find_app) -request = LocalProxy(partial(_lookup_req_object, 'request')) -session = LocalProxy(partial(_lookup_req_object, 'session')) -g = LocalProxy(partial(_lookup_app_object, 'g')) diff --git a/python/flask/helpers.py b/python/flask/helpers.py deleted file mode 100644 index 158edc5..0000000 --- a/python/flask/helpers.py +++ /dev/null @@ -1,1051 +0,0 @@ -# -*- coding: utf-8 -*- -""" - flask.helpers - ~~~~~~~~~~~~~ - - Implements various helpers. - - :copyright: © 2010 by the Pallets team. - :license: BSD, see LICENSE for more details. -""" - -import os -import socket -import sys -import pkgutil -import posixpath -import mimetypes -from time import time -from zlib import adler32 -from threading import RLock -import unicodedata -from werkzeug.routing import BuildError -from functools import update_wrapper - -from werkzeug.urls import url_quote -from werkzeug.datastructures import Headers, Range -from werkzeug.exceptions import BadRequest, NotFound, \ - RequestedRangeNotSatisfiable - -from werkzeug.wsgi import wrap_file -from jinja2 import FileSystemLoader - -from .signals import message_flashed -from .globals import session, _request_ctx_stack, _app_ctx_stack, \ - current_app, request -from ._compat import string_types, text_type, PY2 - -# sentinel -_missing = object() - - -# what separators does this operating system provide that are not a slash? -# this is used by the send_from_directory function to ensure that nobody is -# able to access files from outside the filesystem. -_os_alt_seps = list(sep for sep in [os.path.sep, os.path.altsep] - if sep not in (None, '/')) - - -def get_env(): - """Get the environment the app is running in, indicated by the - :envvar:`FLASK_ENV` environment variable. The default is - ``'production'``. - """ - return os.environ.get('FLASK_ENV') or 'production' - - -def get_debug_flag(): - """Get whether debug mode should be enabled for the app, indicated - by the :envvar:`FLASK_DEBUG` environment variable. The default is - ``True`` if :func:`.get_env` returns ``'development'``, or ``False`` - otherwise. - """ - val = os.environ.get('FLASK_DEBUG') - - if not val: - return get_env() == 'development' - - return val.lower() not in ('0', 'false', 'no') - - -def get_load_dotenv(default=True): - """Get whether the user has disabled loading dotenv files by setting - :envvar:`FLASK_SKIP_DOTENV`. The default is ``True``, load the - files. - - :param default: What to return if the env var isn't set. - """ - val = os.environ.get('FLASK_SKIP_DOTENV') - - if not val: - return default - - return val.lower() in ('0', 'false', 'no') - - -def _endpoint_from_view_func(view_func): - """Internal helper that returns the default endpoint for a given - function. This always is the function name. - """ - assert view_func is not None, 'expected view func if endpoint ' \ - 'is not provided.' - return view_func.__name__ - - -def stream_with_context(generator_or_function): - """Request contexts disappear when the response is started on the server. - This is done for efficiency reasons and to make it less likely to encounter - memory leaks with badly written WSGI middlewares. The downside is that if - you are using streamed responses, the generator cannot access request bound - information any more. - - This function however can help you keep the context around for longer:: - - from flask import stream_with_context, request, Response - - @app.route('/stream') - def streamed_response(): - @stream_with_context - def generate(): - yield 'Hello ' - yield request.args['name'] - yield '!' - return Response(generate()) - - Alternatively it can also be used around a specific generator:: - - from flask import stream_with_context, request, Response - - @app.route('/stream') - def streamed_response(): - def generate(): - yield 'Hello ' - yield request.args['name'] - yield '!' - return Response(stream_with_context(generate())) - - .. versionadded:: 0.9 - """ - try: - gen = iter(generator_or_function) - except TypeError: - def decorator(*args, **kwargs): - gen = generator_or_function(*args, **kwargs) - return stream_with_context(gen) - return update_wrapper(decorator, generator_or_function) - - def generator(): - ctx = _request_ctx_stack.top - if ctx is None: - raise RuntimeError('Attempted to stream with context but ' - 'there was no context in the first place to keep around.') - with ctx: - # Dummy sentinel. Has to be inside the context block or we're - # not actually keeping the context around. - yield None - - # The try/finally is here so that if someone passes a WSGI level - # iterator in we're still running the cleanup logic. Generators - # don't need that because they are closed on their destruction - # automatically. - try: - for item in gen: - yield item - finally: - if hasattr(gen, 'close'): - gen.close() - - # The trick is to start the generator. Then the code execution runs until - # the first dummy None is yielded at which point the context was already - # pushed. This item is discarded. Then when the iteration continues the - # real generator is executed. - wrapped_g = generator() - next(wrapped_g) - return wrapped_g - - -def make_response(*args): - """Sometimes it is necessary to set additional headers in a view. Because - views do not have to return response objects but can return a value that - is converted into a response object by Flask itself, it becomes tricky to - add headers to it. This function can be called instead of using a return - and you will get a response object which you can use to attach headers. - - If view looked like this and you want to add a new header:: - - def index(): - return render_template('index.html', foo=42) - - You can now do something like this:: - - def index(): - response = make_response(render_template('index.html', foo=42)) - response.headers['X-Parachutes'] = 'parachutes are cool' - return response - - This function accepts the very same arguments you can return from a - view function. This for example creates a response with a 404 error - code:: - - response = make_response(render_template('not_found.html'), 404) - - The other use case of this function is to force the return value of a - view function into a response which is helpful with view - decorators:: - - response = make_response(view_function()) - response.headers['X-Parachutes'] = 'parachutes are cool' - - Internally this function does the following things: - - - if no arguments are passed, it creates a new response argument - - if one argument is passed, :meth:`flask.Flask.make_response` - is invoked with it. - - if more than one argument is passed, the arguments are passed - to the :meth:`flask.Flask.make_response` function as tuple. - - .. versionadded:: 0.6 - """ - if not args: - return current_app.response_class() - if len(args) == 1: - args = args[0] - return current_app.make_response(args) - - -def url_for(endpoint, **values): - """Generates a URL to the given endpoint with the method provided. - - Variable arguments that are unknown to the target endpoint are appended - to the generated URL as query arguments. If the value of a query argument - is ``None``, the whole pair is skipped. In case blueprints are active - you can shortcut references to the same blueprint by prefixing the - local endpoint with a dot (``.``). - - This will reference the index function local to the current blueprint:: - - url_for('.index') - - For more information, head over to the :ref:`Quickstart <url-building>`. - - To integrate applications, :class:`Flask` has a hook to intercept URL build - errors through :attr:`Flask.url_build_error_handlers`. The `url_for` - function results in a :exc:`~werkzeug.routing.BuildError` when the current - app does not have a URL for the given endpoint and values. When it does, the - :data:`~flask.current_app` calls its :attr:`~Flask.url_build_error_handlers` if - it is not ``None``, which can return a string to use as the result of - `url_for` (instead of `url_for`'s default to raise the - :exc:`~werkzeug.routing.BuildError` exception) or re-raise the exception. - An example:: - - def external_url_handler(error, endpoint, values): - "Looks up an external URL when `url_for` cannot build a URL." - # This is an example of hooking the build_error_handler. - # Here, lookup_url is some utility function you've built - # which looks up the endpoint in some external URL registry. - url = lookup_url(endpoint, **values) - if url is None: - # External lookup did not have a URL. - # Re-raise the BuildError, in context of original traceback. - exc_type, exc_value, tb = sys.exc_info() - if exc_value is error: - raise exc_type, exc_value, tb - else: - raise error - # url_for will use this result, instead of raising BuildError. - return url - - app.url_build_error_handlers.append(external_url_handler) - - Here, `error` is the instance of :exc:`~werkzeug.routing.BuildError`, and - `endpoint` and `values` are the arguments passed into `url_for`. Note - that this is for building URLs outside the current application, and not for - handling 404 NotFound errors. - - .. versionadded:: 0.10 - The `_scheme` parameter was added. - - .. versionadded:: 0.9 - The `_anchor` and `_method` parameters were added. - - .. versionadded:: 0.9 - Calls :meth:`Flask.handle_build_error` on - :exc:`~werkzeug.routing.BuildError`. - - :param endpoint: the endpoint of the URL (name of the function) - :param values: the variable arguments of the URL rule - :param _external: if set to ``True``, an absolute URL is generated. Server - address can be changed via ``SERVER_NAME`` configuration variable which - falls back to the `Host` header, then to the IP and port of the request. - :param _scheme: a string specifying the desired URL scheme. The `_external` - parameter must be set to ``True`` or a :exc:`ValueError` is raised. The default - behavior uses the same scheme as the current request, or - ``PREFERRED_URL_SCHEME`` from the :ref:`app configuration <config>` if no - request context is available. As of Werkzeug 0.10, this also can be set - to an empty string to build protocol-relative URLs. - :param _anchor: if provided this is added as anchor to the URL. - :param _method: if provided this explicitly specifies an HTTP method. - """ - appctx = _app_ctx_stack.top - reqctx = _request_ctx_stack.top - - if appctx is None: - raise RuntimeError( - 'Attempted to generate a URL without the application context being' - ' pushed. This has to be executed when application context is' - ' available.' - ) - - # If request specific information is available we have some extra - # features that support "relative" URLs. - if reqctx is not None: - url_adapter = reqctx.url_adapter - blueprint_name = request.blueprint - - if endpoint[:1] == '.': - if blueprint_name is not None: - endpoint = blueprint_name + endpoint - else: - endpoint = endpoint[1:] - - external = values.pop('_external', False) - - # Otherwise go with the url adapter from the appctx and make - # the URLs external by default. - else: - url_adapter = appctx.url_adapter - - if url_adapter is None: - raise RuntimeError( - 'Application was not able to create a URL adapter for request' - ' independent URL generation. You might be able to fix this by' - ' setting the SERVER_NAME config variable.' - ) - - external = values.pop('_external', True) - - anchor = values.pop('_anchor', None) - method = values.pop('_method', None) - scheme = values.pop('_scheme', None) - appctx.app.inject_url_defaults(endpoint, values) - - # This is not the best way to deal with this but currently the - # underlying Werkzeug router does not support overriding the scheme on - # a per build call basis. - old_scheme = None - if scheme is not None: - if not external: - raise ValueError('When specifying _scheme, _external must be True') - old_scheme = url_adapter.url_scheme - url_adapter.url_scheme = scheme - - try: - try: - rv = url_adapter.build(endpoint, values, method=method, - force_external=external) - finally: - if old_scheme is not None: - url_adapter.url_scheme = old_scheme - except BuildError as error: - # We need to inject the values again so that the app callback can - # deal with that sort of stuff. - values['_external'] = external - values['_anchor'] = anchor - values['_method'] = method - values['_scheme'] = scheme - return appctx.app.handle_url_build_error(error, endpoint, values) - - if anchor is not None: - rv += '#' + url_quote(anchor) - return rv - - -def get_template_attribute(template_name, attribute): - """Loads a macro (or variable) a template exports. This can be used to - invoke a macro from within Python code. If you for example have a - template named :file:`_cider.html` with the following contents: - - .. sourcecode:: html+jinja - - {% macro hello(name) %}Hello {{ name }}!{% endmacro %} - - You can access this from Python code like this:: - - hello = get_template_attribute('_cider.html', 'hello') - return hello('World') - - .. versionadded:: 0.2 - - :param template_name: the name of the template - :param attribute: the name of the variable of macro to access - """ - return getattr(current_app.jinja_env.get_template(template_name).module, - attribute) - - -def flash(message, category='message'): - """Flashes a message to the next request. In order to remove the - flashed message from the session and to display it to the user, - the template has to call :func:`get_flashed_messages`. - - .. versionchanged:: 0.3 - `category` parameter added. - - :param message: the message to be flashed. - :param category: the category for the message. The following values - are recommended: ``'message'`` for any kind of message, - ``'error'`` for errors, ``'info'`` for information - messages and ``'warning'`` for warnings. However any - kind of string can be used as category. - """ - # Original implementation: - # - # session.setdefault('_flashes', []).append((category, message)) - # - # This assumed that changes made to mutable structures in the session are - # always in sync with the session object, which is not true for session - # implementations that use external storage for keeping their keys/values. - flashes = session.get('_flashes', []) - flashes.append((category, message)) - session['_flashes'] = flashes - message_flashed.send(current_app._get_current_object(), - message=message, category=category) - - -def get_flashed_messages(with_categories=False, category_filter=[]): - """Pulls all flashed messages from the session and returns them. - Further calls in the same request to the function will return - the same messages. By default just the messages are returned, - but when `with_categories` is set to ``True``, the return value will - be a list of tuples in the form ``(category, message)`` instead. - - Filter the flashed messages to one or more categories by providing those - categories in `category_filter`. This allows rendering categories in - separate html blocks. The `with_categories` and `category_filter` - arguments are distinct: - - * `with_categories` controls whether categories are returned with message - text (``True`` gives a tuple, where ``False`` gives just the message text). - * `category_filter` filters the messages down to only those matching the - provided categories. - - See :ref:`message-flashing-pattern` for examples. - - .. versionchanged:: 0.3 - `with_categories` parameter added. - - .. versionchanged:: 0.9 - `category_filter` parameter added. - - :param with_categories: set to ``True`` to also receive categories. - :param category_filter: whitelist of categories to limit return values - """ - flashes = _request_ctx_stack.top.flashes - if flashes is None: - _request_ctx_stack.top.flashes = flashes = session.pop('_flashes') \ - if '_flashes' in session else [] - if category_filter: - flashes = list(filter(lambda f: f[0] in category_filter, flashes)) - if not with_categories: - return [x[1] for x in flashes] - return flashes - - -def send_file(filename_or_fp, mimetype=None, as_attachment=False, - attachment_filename=None, add_etags=True, - cache_timeout=None, conditional=False, last_modified=None): - """Sends the contents of a file to the client. This will use the - most efficient method available and configured. By default it will - try to use the WSGI server's file_wrapper support. Alternatively - you can set the application's :attr:`~Flask.use_x_sendfile` attribute - to ``True`` to directly emit an ``X-Sendfile`` header. This however - requires support of the underlying webserver for ``X-Sendfile``. - - By default it will try to guess the mimetype for you, but you can - also explicitly provide one. For extra security you probably want - to send certain files as attachment (HTML for instance). The mimetype - guessing requires a `filename` or an `attachment_filename` to be - provided. - - ETags will also be attached automatically if a `filename` is provided. You - can turn this off by setting `add_etags=False`. - - If `conditional=True` and `filename` is provided, this method will try to - upgrade the response stream to support range requests. This will allow - the request to be answered with partial content response. - - Please never pass filenames to this function from user sources; - you should use :func:`send_from_directory` instead. - - .. versionadded:: 0.2 - - .. versionadded:: 0.5 - The `add_etags`, `cache_timeout` and `conditional` parameters were - added. The default behavior is now to attach etags. - - .. versionchanged:: 0.7 - mimetype guessing and etag support for file objects was - deprecated because it was unreliable. Pass a filename if you are - able to, otherwise attach an etag yourself. This functionality - will be removed in Flask 1.0 - - .. versionchanged:: 0.9 - cache_timeout pulls its default from application config, when None. - - .. versionchanged:: 0.12 - The filename is no longer automatically inferred from file objects. If - you want to use automatic mimetype and etag support, pass a filepath via - `filename_or_fp` or `attachment_filename`. - - .. versionchanged:: 0.12 - The `attachment_filename` is preferred over `filename` for MIME-type - detection. - - .. versionchanged:: 1.0 - UTF-8 filenames, as specified in `RFC 2231`_, are supported. - - .. _RFC 2231: https://tools.ietf.org/html/rfc2231#section-4 - - .. versionchanged:: 1.0.3 - Filenames are encoded with ASCII instead of Latin-1 for broader - compatibility with WSGI servers. - - :param filename_or_fp: the filename of the file to send. - This is relative to the :attr:`~Flask.root_path` - if a relative path is specified. - Alternatively a file object might be provided in - which case ``X-Sendfile`` might not work and fall - back to the traditional method. Make sure that the - file pointer is positioned at the start of data to - send before calling :func:`send_file`. - :param mimetype: the mimetype of the file if provided. If a file path is - given, auto detection happens as fallback, otherwise an - error will be raised. - :param as_attachment: set to ``True`` if you want to send this file with - a ``Content-Disposition: attachment`` header. - :param attachment_filename: the filename for the attachment if it - differs from the file's filename. - :param add_etags: set to ``False`` to disable attaching of etags. - :param conditional: set to ``True`` to enable conditional responses. - - :param cache_timeout: the timeout in seconds for the headers. When ``None`` - (default), this value is set by - :meth:`~Flask.get_send_file_max_age` of - :data:`~flask.current_app`. - :param last_modified: set the ``Last-Modified`` header to this value, - a :class:`~datetime.datetime` or timestamp. - If a file was passed, this overrides its mtime. - """ - mtime = None - fsize = None - if isinstance(filename_or_fp, string_types): - filename = filename_or_fp - if not os.path.isabs(filename): - filename = os.path.join(current_app.root_path, filename) - file = None - if attachment_filename is None: - attachment_filename = os.path.basename(filename) - else: - file = filename_or_fp - filename = None - - if mimetype is None: - if attachment_filename is not None: - mimetype = mimetypes.guess_type(attachment_filename)[0] \ - or 'application/octet-stream' - - if mimetype is None: - raise ValueError( - 'Unable to infer MIME-type because no filename is available. ' - 'Please set either `attachment_filename`, pass a filepath to ' - '`filename_or_fp` or set your own MIME-type via `mimetype`.' - ) - - headers = Headers() - if as_attachment: - if attachment_filename is None: - raise TypeError('filename unavailable, required for ' - 'sending as attachment') - - if not isinstance(attachment_filename, text_type): - attachment_filename = attachment_filename.decode('utf-8') - - try: - attachment_filename = attachment_filename.encode('ascii') - except UnicodeEncodeError: - filenames = { - 'filename': unicodedata.normalize( - 'NFKD', attachment_filename).encode('ascii', 'ignore'), - 'filename*': "UTF-8''%s" % url_quote(attachment_filename), - } - else: - filenames = {'filename': attachment_filename} - - headers.add('Content-Disposition', 'attachment', **filenames) - - if current_app.use_x_sendfile and filename: - if file is not None: - file.close() - headers['X-Sendfile'] = filename - fsize = os.path.getsize(filename) - headers['Content-Length'] = fsize - data = None - else: - if file is None: - file = open(filename, 'rb') - mtime = os.path.getmtime(filename) - fsize = os.path.getsize(filename) - headers['Content-Length'] = fsize - data = wrap_file(request.environ, file) - - rv = current_app.response_class(data, mimetype=mimetype, headers=headers, - direct_passthrough=True) - - if last_modified is not None: - rv.last_modified = last_modified - elif mtime is not None: - rv.last_modified = mtime - - rv.cache_control.public = True - if cache_timeout is None: - cache_timeout = current_app.get_send_file_max_age(filename) - if cache_timeout is not None: - rv.cache_control.max_age = cache_timeout - rv.expires = int(time() + cache_timeout) - - if add_etags and filename is not None: - from warnings import warn - - try: - rv.set_etag('%s-%s-%s' % ( - os.path.getmtime(filename), - os.path.getsize(filename), - adler32( - filename.encode('utf-8') if isinstance(filename, text_type) - else filename - ) & 0xffffffff - )) - except OSError: - warn('Access %s failed, maybe it does not exist, so ignore etags in ' - 'headers' % filename, stacklevel=2) - - if conditional: - try: - rv = rv.make_conditional(request, accept_ranges=True, - complete_length=fsize) - except RequestedRangeNotSatisfiable: - if file is not None: - file.close() - raise - # make sure we don't send x-sendfile for servers that - # ignore the 304 status code for x-sendfile. - if rv.status_code == 304: - rv.headers.pop('x-sendfile', None) - return rv - - -def safe_join(directory, *pathnames): - """Safely join `directory` and zero or more untrusted `pathnames` - components. - - Example usage:: - - @app.route('/wiki/<path:filename>') - def wiki_page(filename): - filename = safe_join(app.config['WIKI_FOLDER'], filename) - with open(filename, 'rb') as fd: - content = fd.read() # Read and process the file content... - - :param directory: the trusted base directory. - :param pathnames: the untrusted pathnames relative to that directory. - :raises: :class:`~werkzeug.exceptions.NotFound` if one or more passed - paths fall out of its boundaries. - """ - - parts = [directory] - - for filename in pathnames: - if filename != '': - filename = posixpath.normpath(filename) - - if ( - any(sep in filename for sep in _os_alt_seps) - or os.path.isabs(filename) - or filename == '..' - or filename.startswith('../') - ): - raise NotFound() - - parts.append(filename) - - return posixpath.join(*parts) - - -def send_from_directory(directory, filename, **options): - """Send a file from a given directory with :func:`send_file`. This - is a secure way to quickly expose static files from an upload folder - or something similar. - - Example usage:: - - @app.route('/uploads/<path:filename>') - def download_file(filename): - return send_from_directory(app.config['UPLOAD_FOLDER'], - filename, as_attachment=True) - - .. admonition:: Sending files and Performance - - It is strongly recommended to activate either ``X-Sendfile`` support in - your webserver or (if no authentication happens) to tell the webserver - to serve files for the given path on its own without calling into the - web application for improved performance. - - .. versionadded:: 0.5 - - :param directory: the directory where all the files are stored. - :param filename: the filename relative to that directory to - download. - :param options: optional keyword arguments that are directly - forwarded to :func:`send_file`. - """ - filename = safe_join(directory, filename) - if not os.path.isabs(filename): - filename = os.path.join(current_app.root_path, filename) - try: - if not os.path.isfile(filename): - raise NotFound() - except (TypeError, ValueError): - raise BadRequest() - options.setdefault('conditional', True) - return send_file(filename, **options) - - -def get_root_path(import_name): - """Returns the path to a package or cwd if that cannot be found. This - returns the path of a package or the folder that contains a module. - - Not to be confused with the package path returned by :func:`find_package`. - """ - # Module already imported and has a file attribute. Use that first. - mod = sys.modules.get(import_name) - if mod is not None and hasattr(mod, '__file__'): - return os.path.dirname(os.path.abspath(mod.__file__)) - - # Next attempt: check the loader. - loader = pkgutil.get_loader(import_name) - - # Loader does not exist or we're referring to an unloaded main module - # or a main module without path (interactive sessions), go with the - # current working directory. - if loader is None or import_name == '__main__': - return os.getcwd() - - # For .egg, zipimporter does not have get_filename until Python 2.7. - # Some other loaders might exhibit the same behavior. - if hasattr(loader, 'get_filename'): - filepath = loader.get_filename(import_name) - else: - # Fall back to imports. - __import__(import_name) - mod = sys.modules[import_name] - filepath = getattr(mod, '__file__', None) - - # If we don't have a filepath it might be because we are a - # namespace package. In this case we pick the root path from the - # first module that is contained in our package. - if filepath is None: - raise RuntimeError('No root path can be found for the provided ' - 'module "%s". This can happen because the ' - 'module came from an import hook that does ' - 'not provide file name information or because ' - 'it\'s a namespace package. In this case ' - 'the root path needs to be explicitly ' - 'provided.' % import_name) - - # filepath is import_name.py for a module, or __init__.py for a package. - return os.path.dirname(os.path.abspath(filepath)) - - -def _matching_loader_thinks_module_is_package(loader, mod_name): - """Given the loader that loaded a module and the module this function - attempts to figure out if the given module is actually a package. - """ - # If the loader can tell us if something is a package, we can - # directly ask the loader. - if hasattr(loader, 'is_package'): - return loader.is_package(mod_name) - # importlib's namespace loaders do not have this functionality but - # all the modules it loads are packages, so we can take advantage of - # this information. - elif (loader.__class__.__module__ == '_frozen_importlib' and - loader.__class__.__name__ == 'NamespaceLoader'): - return True - # Otherwise we need to fail with an error that explains what went - # wrong. - raise AttributeError( - ('%s.is_package() method is missing but is required by Flask of ' - 'PEP 302 import hooks. If you do not use import hooks and ' - 'you encounter this error please file a bug against Flask.') % - loader.__class__.__name__) - - -def find_package(import_name): - """Finds a package and returns the prefix (or None if the package is - not installed) as well as the folder that contains the package or - module as a tuple. The package path returned is the module that would - have to be added to the pythonpath in order to make it possible to - import the module. The prefix is the path below which a UNIX like - folder structure exists (lib, share etc.). - """ - root_mod_name = import_name.split('.')[0] - loader = pkgutil.get_loader(root_mod_name) - if loader is None or import_name == '__main__': - # import name is not found, or interactive/main module - package_path = os.getcwd() - else: - # For .egg, zipimporter does not have get_filename until Python 2.7. - if hasattr(loader, 'get_filename'): - filename = loader.get_filename(root_mod_name) - elif hasattr(loader, 'archive'): - # zipimporter's loader.archive points to the .egg or .zip - # archive filename is dropped in call to dirname below. - filename = loader.archive - else: - # At least one loader is missing both get_filename and archive: - # Google App Engine's HardenedModulesHook - # - # Fall back to imports. - __import__(import_name) - filename = sys.modules[import_name].__file__ - package_path = os.path.abspath(os.path.dirname(filename)) - - # In case the root module is a package we need to chop of the - # rightmost part. This needs to go through a helper function - # because of python 3.3 namespace packages. - if _matching_loader_thinks_module_is_package( - loader, root_mod_name): - package_path = os.path.dirname(package_path) - - site_parent, site_folder = os.path.split(package_path) - py_prefix = os.path.abspath(sys.prefix) - if package_path.startswith(py_prefix): - return py_prefix, package_path - elif site_folder.lower() == 'site-packages': - parent, folder = os.path.split(site_parent) - # Windows like installations - if folder.lower() == 'lib': - base_dir = parent - # UNIX like installations - elif os.path.basename(parent).lower() == 'lib': - base_dir = os.path.dirname(parent) - else: - base_dir = site_parent - return base_dir, package_path - return None, package_path - - -class locked_cached_property(object): - """A decorator that converts a function into a lazy property. The - function wrapped is called the first time to retrieve the result - and then that calculated result is used the next time you access - the value. Works like the one in Werkzeug but has a lock for - thread safety. - """ - - def __init__(self, func, name=None, doc=None): - self.__name__ = name or func.__name__ - self.__module__ = func.__module__ - self.__doc__ = doc or func.__doc__ - self.func = func - self.lock = RLock() - - def __get__(self, obj, type=None): - if obj is None: - return self - with self.lock: - value = obj.__dict__.get(self.__name__, _missing) - if value is _missing: - value = self.func(obj) - obj.__dict__[self.__name__] = value - return value - - -class _PackageBoundObject(object): - #: The name of the package or module that this app belongs to. Do not - #: change this once it is set by the constructor. - import_name = None - - #: Location of the template files to be added to the template lookup. - #: ``None`` if templates should not be added. - template_folder = None - - #: Absolute path to the package on the filesystem. Used to look up - #: resources contained in the package. - root_path = None - - def __init__(self, import_name, template_folder=None, root_path=None): - self.import_name = import_name - self.template_folder = template_folder - - if root_path is None: - root_path = get_root_path(self.import_name) - - self.root_path = root_path - self._static_folder = None - self._static_url_path = None - - def _get_static_folder(self): - if self._static_folder is not None: - return os.path.join(self.root_path, self._static_folder) - - def _set_static_folder(self, value): - self._static_folder = value - - static_folder = property( - _get_static_folder, _set_static_folder, - doc='The absolute path to the configured static folder.' - ) - del _get_static_folder, _set_static_folder - - def _get_static_url_path(self): - if self._static_url_path is not None: - return self._static_url_path - - if self.static_folder is not None: - return '/' + os.path.basename(self.static_folder) - - def _set_static_url_path(self, value): - self._static_url_path = value - - static_url_path = property( - _get_static_url_path, _set_static_url_path, - doc='The URL prefix that the static route will be registered for.' - ) - del _get_static_url_path, _set_static_url_path - - @property - def has_static_folder(self): - """This is ``True`` if the package bound object's container has a - folder for static files. - - .. versionadded:: 0.5 - """ - return self.static_folder is not None - - @locked_cached_property - def jinja_loader(self): - """The Jinja loader for this package bound object. - - .. versionadded:: 0.5 - """ - if self.template_folder is not None: - return FileSystemLoader(os.path.join(self.root_path, - self.template_folder)) - - def get_send_file_max_age(self, filename): - """Provides default cache_timeout for the :func:`send_file` functions. - - By default, this function returns ``SEND_FILE_MAX_AGE_DEFAULT`` from - the configuration of :data:`~flask.current_app`. - - Static file functions such as :func:`send_from_directory` use this - function, and :func:`send_file` calls this function on - :data:`~flask.current_app` when the given cache_timeout is ``None``. If a - cache_timeout is given in :func:`send_file`, that timeout is used; - otherwise, this method is called. - - This allows subclasses to change the behavior when sending files based - on the filename. For example, to set the cache timeout for .js files - to 60 seconds:: - - class MyFlask(flask.Flask): - def get_send_file_max_age(self, name): - if name.lower().endswith('.js'): - return 60 - return flask.Flask.get_send_file_max_age(self, name) - - .. versionadded:: 0.9 - """ - return total_seconds(current_app.send_file_max_age_default) - - def send_static_file(self, filename): - """Function used internally to send static files from the static - folder to the browser. - - .. versionadded:: 0.5 - """ - if not self.has_static_folder: - raise RuntimeError('No static folder for this object') - # Ensure get_send_file_max_age is called in all cases. - # Here, we ensure get_send_file_max_age is called for Blueprints. - cache_timeout = self.get_send_file_max_age(filename) - return send_from_directory(self.static_folder, filename, - cache_timeout=cache_timeout) - - def open_resource(self, resource, mode='rb'): - """Opens a resource from the application's resource folder. To see - how this works, consider the following folder structure:: - - /myapplication.py - /schema.sql - /static - /style.css - /templates - /layout.html - /index.html - - If you want to open the :file:`schema.sql` file you would do the - following:: - - with app.open_resource('schema.sql') as f: - contents = f.read() - do_something_with(contents) - - :param resource: the name of the resource. To access resources within - subfolders use forward slashes as separator. - :param mode: resource file opening mode, default is 'rb'. - """ - if mode not in ('r', 'rb'): - raise ValueError('Resources can only be opened for reading') - return open(os.path.join(self.root_path, resource), mode) - - -def total_seconds(td): - """Returns the total seconds from a timedelta object. - - :param timedelta td: the timedelta to be converted in seconds - - :returns: number of seconds - :rtype: int - """ - return td.days * 60 * 60 * 24 + td.seconds - - -def is_ip(value): - """Determine if the given string is an IP address. - - Python 2 on Windows doesn't provide ``inet_pton``, so this only - checks IPv4 addresses in that environment. - - :param value: value to check - :type value: str - - :return: True if string is an IP address - :rtype: bool - """ - if PY2 and os.name == 'nt': - try: - socket.inet_aton(value) - return True - except socket.error: - return False - - for family in (socket.AF_INET, socket.AF_INET6): - try: - socket.inet_pton(family, value) - except socket.error: - pass - else: - return True - - return False diff --git a/python/flask/json/__init__.py b/python/flask/json/__init__.py deleted file mode 100644 index c24286c..0000000 --- a/python/flask/json/__init__.py +++ /dev/null @@ -1,357 +0,0 @@ -# -*- coding: utf-8 -*- -""" -flask.json -~~~~~~~~~~ - -:copyright: © 2010 by the Pallets team. -:license: BSD, see LICENSE for more details. -""" -import codecs -import io -import uuid -from datetime import date, datetime -from flask.globals import current_app, request -from flask._compat import text_type, PY2 - -from werkzeug.http import http_date -from jinja2 import Markup - -# Use the same json implementation as itsdangerous on which we -# depend anyways. -from itsdangerous import json as _json - - -# Figure out if simplejson escapes slashes. This behavior was changed -# from one version to another without reason. -_slash_escape = '\\/' not in _json.dumps('/') - - -__all__ = ['dump', 'dumps', 'load', 'loads', 'htmlsafe_dump', - 'htmlsafe_dumps', 'JSONDecoder', 'JSONEncoder', - 'jsonify'] - - -def _wrap_reader_for_text(fp, encoding): - if isinstance(fp.read(0), bytes): - fp = io.TextIOWrapper(io.BufferedReader(fp), encoding) - return fp - - -def _wrap_writer_for_text(fp, encoding): - try: - fp.write('') - except TypeError: - fp = io.TextIOWrapper(fp, encoding) - return fp - - -class JSONEncoder(_json.JSONEncoder): - """The default Flask JSON encoder. This one extends the default simplejson - encoder by also supporting ``datetime`` objects, ``UUID`` as well as - ``Markup`` objects which are serialized as RFC 822 datetime strings (same - as the HTTP date format). In order to support more data types override the - :meth:`default` method. - """ - - def default(self, o): - """Implement this method in a subclass such that it returns a - serializable object for ``o``, or calls the base implementation (to - raise a :exc:`TypeError`). - - For example, to support arbitrary iterators, you could implement - default like this:: - - def default(self, o): - try: - iterable = iter(o) - except TypeError: - pass - else: - return list(iterable) - return JSONEncoder.default(self, o) - """ - if isinstance(o, datetime): - return http_date(o.utctimetuple()) - if isinstance(o, date): - return http_date(o.timetuple()) - if isinstance(o, uuid.UUID): - return str(o) - if hasattr(o, '__html__'): - return text_type(o.__html__()) - return _json.JSONEncoder.default(self, o) - - -class JSONDecoder(_json.JSONDecoder): - """The default JSON decoder. This one does not change the behavior from - the default simplejson decoder. Consult the :mod:`json` documentation - for more information. This decoder is not only used for the load - functions of this module but also :attr:`~flask.Request`. - """ - - -def _dump_arg_defaults(kwargs, app=None): - """Inject default arguments for dump functions.""" - if app is None: - app = current_app - - if app: - bp = app.blueprints.get(request.blueprint) if request else None - kwargs.setdefault( - 'cls', bp.json_encoder if bp and bp.json_encoder else app.json_encoder - ) - - if not app.config['JSON_AS_ASCII']: - kwargs.setdefault('ensure_ascii', False) - - kwargs.setdefault('sort_keys', app.config['JSON_SORT_KEYS']) - else: - kwargs.setdefault('sort_keys', True) - kwargs.setdefault('cls', JSONEncoder) - - -def _load_arg_defaults(kwargs, app=None): - """Inject default arguments for load functions.""" - if app is None: - app = current_app - - if app: - bp = app.blueprints.get(request.blueprint) if request else None - kwargs.setdefault( - 'cls', - bp.json_decoder if bp and bp.json_decoder - else app.json_decoder - ) - else: - kwargs.setdefault('cls', JSONDecoder) - - -def detect_encoding(data): - """Detect which UTF codec was used to encode the given bytes. - - The latest JSON standard (:rfc:`8259`) suggests that only UTF-8 is - accepted. Older documents allowed 8, 16, or 32. 16 and 32 can be big - or little endian. Some editors or libraries may prepend a BOM. - - :param data: Bytes in unknown UTF encoding. - :return: UTF encoding name - """ - head = data[:4] - - if head[:3] == codecs.BOM_UTF8: - return 'utf-8-sig' - - if b'\x00' not in head: - return 'utf-8' - - if head in (codecs.BOM_UTF32_BE, codecs.BOM_UTF32_LE): - return 'utf-32' - - if head[:2] in (codecs.BOM_UTF16_BE, codecs.BOM_UTF16_LE): - return 'utf-16' - - if len(head) == 4: - if head[:3] == b'\x00\x00\x00': - return 'utf-32-be' - - if head[::2] == b'\x00\x00': - return 'utf-16-be' - - if head[1:] == b'\x00\x00\x00': - return 'utf-32-le' - - if head[1::2] == b'\x00\x00': - return 'utf-16-le' - - if len(head) == 2: - return 'utf-16-be' if head.startswith(b'\x00') else 'utf-16-le' - - return 'utf-8' - - -def dumps(obj, app=None, **kwargs): - """Serialize ``obj`` to a JSON-formatted string. If there is an - app context pushed, use the current app's configured encoder - (:attr:`~flask.Flask.json_encoder`), or fall back to the default - :class:`JSONEncoder`. - - Takes the same arguments as the built-in :func:`json.dumps`, and - does some extra configuration based on the application. If the - simplejson package is installed, it is preferred. - - :param obj: Object to serialize to JSON. - :param app: App instance to use to configure the JSON encoder. - Uses ``current_app`` if not given, and falls back to the default - encoder when not in an app context. - :param kwargs: Extra arguments passed to :func:`json.dumps`. - - .. versionchanged:: 1.0.3 - - ``app`` can be passed directly, rather than requiring an app - context for configuration. - """ - _dump_arg_defaults(kwargs, app=app) - encoding = kwargs.pop('encoding', None) - rv = _json.dumps(obj, **kwargs) - if encoding is not None and isinstance(rv, text_type): - rv = rv.encode(encoding) - return rv - - -def dump(obj, fp, app=None, **kwargs): - """Like :func:`dumps` but writes into a file object.""" - _dump_arg_defaults(kwargs, app=app) - encoding = kwargs.pop('encoding', None) - if encoding is not None: - fp = _wrap_writer_for_text(fp, encoding) - _json.dump(obj, fp, **kwargs) - - -def loads(s, app=None, **kwargs): - """Deserialize an object from a JSON-formatted string ``s``. If - there is an app context pushed, use the current app's configured - decoder (:attr:`~flask.Flask.json_decoder`), or fall back to the - default :class:`JSONDecoder`. - - Takes the same arguments as the built-in :func:`json.loads`, and - does some extra configuration based on the application. If the - simplejson package is installed, it is preferred. - - :param s: JSON string to deserialize. - :param app: App instance to use to configure the JSON decoder. - Uses ``current_app`` if not given, and falls back to the default - encoder when not in an app context. - :param kwargs: Extra arguments passed to :func:`json.dumps`. - - .. versionchanged:: 1.0.3 - - ``app`` can be passed directly, rather than requiring an app - context for configuration. - """ - _load_arg_defaults(kwargs, app=app) - if isinstance(s, bytes): - encoding = kwargs.pop('encoding', None) - if encoding is None: - encoding = detect_encoding(s) - s = s.decode(encoding) - return _json.loads(s, **kwargs) - - -def load(fp, app=None, **kwargs): - """Like :func:`loads` but reads from a file object.""" - _load_arg_defaults(kwargs, app=app) - if not PY2: - fp = _wrap_reader_for_text(fp, kwargs.pop('encoding', None) or 'utf-8') - return _json.load(fp, **kwargs) - - -def htmlsafe_dumps(obj, **kwargs): - """Works exactly like :func:`dumps` but is safe for use in ``<script>`` - tags. It accepts the same arguments and returns a JSON string. Note that - this is available in templates through the ``|tojson`` filter which will - also mark the result as safe. Due to how this function escapes certain - characters this is safe even if used outside of ``<script>`` tags. - - The following characters are escaped in strings: - - - ``<`` - - ``>`` - - ``&`` - - ``'`` - - This makes it safe to embed such strings in any place in HTML with the - notable exception of double quoted attributes. In that case single - quote your attributes or HTML escape it in addition. - - .. versionchanged:: 0.10 - This function's return value is now always safe for HTML usage, even - if outside of script tags or if used in XHTML. This rule does not - hold true when using this function in HTML attributes that are double - quoted. Always single quote attributes if you use the ``|tojson`` - filter. Alternatively use ``|tojson|forceescape``. - """ - rv = dumps(obj, **kwargs) \ - .replace(u'<', u'\\u003c') \ - .replace(u'>', u'\\u003e') \ - .replace(u'&', u'\\u0026') \ - .replace(u"'", u'\\u0027') - if not _slash_escape: - rv = rv.replace('\\/', '/') - return rv - - -def htmlsafe_dump(obj, fp, **kwargs): - """Like :func:`htmlsafe_dumps` but writes into a file object.""" - fp.write(text_type(htmlsafe_dumps(obj, **kwargs))) - - -def jsonify(*args, **kwargs): - """This function wraps :func:`dumps` to add a few enhancements that make - life easier. It turns the JSON output into a :class:`~flask.Response` - object with the :mimetype:`application/json` mimetype. For convenience, it - also converts multiple arguments into an array or multiple keyword arguments - into a dict. This means that both ``jsonify(1,2,3)`` and - ``jsonify([1,2,3])`` serialize to ``[1,2,3]``. - - For clarity, the JSON serialization behavior has the following differences - from :func:`dumps`: - - 1. Single argument: Passed straight through to :func:`dumps`. - 2. Multiple arguments: Converted to an array before being passed to - :func:`dumps`. - 3. Multiple keyword arguments: Converted to a dict before being passed to - :func:`dumps`. - 4. Both args and kwargs: Behavior undefined and will throw an exception. - - Example usage:: - - from flask import jsonify - - @app.route('/_get_current_user') - def get_current_user(): - return jsonify(username=g.user.username, - email=g.user.email, - id=g.user.id) - - This will send a JSON response like this to the browser:: - - { - "username": "admin", - "email": "admin@localhost", - "id": 42 - } - - - .. versionchanged:: 0.11 - Added support for serializing top-level arrays. This introduces a - security risk in ancient browsers. See :ref:`json-security` for details. - - This function's response will be pretty printed if the - ``JSONIFY_PRETTYPRINT_REGULAR`` config parameter is set to True or the - Flask app is running in debug mode. Compressed (not pretty) formatting - currently means no indents and no spaces after separators. - - .. versionadded:: 0.2 - """ - - indent = None - separators = (',', ':') - - if current_app.config['JSONIFY_PRETTYPRINT_REGULAR'] or current_app.debug: - indent = 2 - separators = (', ', ': ') - - if args and kwargs: - raise TypeError('jsonify() behavior undefined when passed both args and kwargs') - elif len(args) == 1: # single args are passed directly to dumps() - data = args[0] - else: - data = args or kwargs - - return current_app.response_class( - dumps(data, indent=indent, separators=separators) + '\n', - mimetype=current_app.config['JSONIFY_MIMETYPE'] - ) - - -def tojson_filter(obj, **kwargs): - return Markup(htmlsafe_dumps(obj, **kwargs)) diff --git a/python/flask/json/tag.py b/python/flask/json/tag.py deleted file mode 100644 index 11c966c..0000000 --- a/python/flask/json/tag.py +++ /dev/null @@ -1,300 +0,0 @@ -# -*- coding: utf-8 -*- -""" -Tagged JSON -~~~~~~~~~~~ - -A compact representation for lossless serialization of non-standard JSON types. -:class:`~flask.sessions.SecureCookieSessionInterface` uses this to serialize -the session data, but it may be useful in other places. It can be extended to -support other types. - -.. autoclass:: TaggedJSONSerializer - :members: - -.. autoclass:: JSONTag - :members: - -Let's seen an example that adds support for :class:`~collections.OrderedDict`. -Dicts don't have an order in Python or JSON, so to handle this we will dump -the items as a list of ``[key, value]`` pairs. Subclass :class:`JSONTag` and -give it the new key ``' od'`` to identify the type. The session serializer -processes dicts first, so insert the new tag at the front of the order since -``OrderedDict`` must be processed before ``dict``. :: - - from flask.json.tag import JSONTag - - class TagOrderedDict(JSONTag): - __slots__ = ('serializer',) - key = ' od' - - def check(self, value): - return isinstance(value, OrderedDict) - - def to_json(self, value): - return [[k, self.serializer.tag(v)] for k, v in iteritems(value)] - - def to_python(self, value): - return OrderedDict(value) - - app.session_interface.serializer.register(TagOrderedDict, index=0) - -:copyright: © 2010 by the Pallets team. -:license: BSD, see LICENSE for more details. -""" - -from base64 import b64decode, b64encode -from datetime import datetime -from uuid import UUID - -from jinja2 import Markup -from werkzeug.http import http_date, parse_date - -from flask._compat import iteritems, text_type -from flask.json import dumps, loads - - -class JSONTag(object): - """Base class for defining type tags for :class:`TaggedJSONSerializer`.""" - - __slots__ = ('serializer',) - - #: The tag to mark the serialized object with. If ``None``, this tag is - #: only used as an intermediate step during tagging. - key = None - - def __init__(self, serializer): - """Create a tagger for the given serializer.""" - self.serializer = serializer - - def check(self, value): - """Check if the given value should be tagged by this tag.""" - raise NotImplementedError - - def to_json(self, value): - """Convert the Python object to an object that is a valid JSON type. - The tag will be added later.""" - raise NotImplementedError - - def to_python(self, value): - """Convert the JSON representation back to the correct type. The tag - will already be removed.""" - raise NotImplementedError - - def tag(self, value): - """Convert the value to a valid JSON type and add the tag structure - around it.""" - return {self.key: self.to_json(value)} - - -class TagDict(JSONTag): - """Tag for 1-item dicts whose only key matches a registered tag. - - Internally, the dict key is suffixed with `__`, and the suffix is removed - when deserializing. - """ - - __slots__ = () - key = ' di' - - def check(self, value): - return ( - isinstance(value, dict) - and len(value) == 1 - and next(iter(value)) in self.serializer.tags - ) - - def to_json(self, value): - key = next(iter(value)) - return {key + '__': self.serializer.tag(value[key])} - - def to_python(self, value): - key = next(iter(value)) - return {key[:-2]: value[key]} - - -class PassDict(JSONTag): - __slots__ = () - - def check(self, value): - return isinstance(value, dict) - - def to_json(self, value): - # JSON objects may only have string keys, so don't bother tagging the - # key here. - return dict((k, self.serializer.tag(v)) for k, v in iteritems(value)) - - tag = to_json - - -class TagTuple(JSONTag): - __slots__ = () - key = ' t' - - def check(self, value): - return isinstance(value, tuple) - - def to_json(self, value): - return [self.serializer.tag(item) for item in value] - - def to_python(self, value): - return tuple(value) - - -class PassList(JSONTag): - __slots__ = () - - def check(self, value): - return isinstance(value, list) - - def to_json(self, value): - return [self.serializer.tag(item) for item in value] - - tag = to_json - - -class TagBytes(JSONTag): - __slots__ = () - key = ' b' - - def check(self, value): - return isinstance(value, bytes) - - def to_json(self, value): - return b64encode(value).decode('ascii') - - def to_python(self, value): - return b64decode(value) - - -class TagMarkup(JSONTag): - """Serialize anything matching the :class:`~flask.Markup` API by - having a ``__html__`` method to the result of that method. Always - deserializes to an instance of :class:`~flask.Markup`.""" - - __slots__ = () - key = ' m' - - def check(self, value): - return callable(getattr(value, '__html__', None)) - - def to_json(self, value): - return text_type(value.__html__()) - - def to_python(self, value): - return Markup(value) - - -class TagUUID(JSONTag): - __slots__ = () - key = ' u' - - def check(self, value): - return isinstance(value, UUID) - - def to_json(self, value): - return value.hex - - def to_python(self, value): - return UUID(value) - - -class TagDateTime(JSONTag): - __slots__ = () - key = ' d' - - def check(self, value): - return isinstance(value, datetime) - - def to_json(self, value): - return http_date(value) - - def to_python(self, value): - return parse_date(value) - - -class TaggedJSONSerializer(object): - """Serializer that uses a tag system to compactly represent objects that - are not JSON types. Passed as the intermediate serializer to - :class:`itsdangerous.Serializer`. - - The following extra types are supported: - - * :class:`dict` - * :class:`tuple` - * :class:`bytes` - * :class:`~flask.Markup` - * :class:`~uuid.UUID` - * :class:`~datetime.datetime` - """ - - __slots__ = ('tags', 'order') - - #: Tag classes to bind when creating the serializer. Other tags can be - #: added later using :meth:`~register`. - default_tags = [ - TagDict, PassDict, TagTuple, PassList, TagBytes, TagMarkup, TagUUID, - TagDateTime, - ] - - def __init__(self): - self.tags = {} - self.order = [] - - for cls in self.default_tags: - self.register(cls) - - def register(self, tag_class, force=False, index=None): - """Register a new tag with this serializer. - - :param tag_class: tag class to register. Will be instantiated with this - serializer instance. - :param force: overwrite an existing tag. If false (default), a - :exc:`KeyError` is raised. - :param index: index to insert the new tag in the tag order. Useful when - the new tag is a special case of an existing tag. If ``None`` - (default), the tag is appended to the end of the order. - - :raise KeyError: if the tag key is already registered and ``force`` is - not true. - """ - tag = tag_class(self) - key = tag.key - - if key is not None: - if not force and key in self.tags: - raise KeyError("Tag '{0}' is already registered.".format(key)) - - self.tags[key] = tag - - if index is None: - self.order.append(tag) - else: - self.order.insert(index, tag) - - def tag(self, value): - """Convert a value to a tagged representation if necessary.""" - for tag in self.order: - if tag.check(value): - return tag.tag(value) - - return value - - def untag(self, value): - """Convert a tagged representation back to the original type.""" - if len(value) != 1: - return value - - key = next(iter(value)) - - if key not in self.tags: - return value - - return self.tags[key].to_python(value[key]) - - def dumps(self, value): - """Tag the value and dump it to a compact JSON string.""" - return dumps(self.tag(value), separators=(',', ':')) - - def loads(self, value): - """Load data from a JSON string and deserialized any tagged objects.""" - return loads(value, object_hook=self.untag) diff --git a/python/flask/logging.py b/python/flask/logging.py deleted file mode 100644 index 389c2c2..0000000 --- a/python/flask/logging.py +++ /dev/null @@ -1,78 +0,0 @@ -# -*- coding: utf-8 -*- -""" -flask.logging -~~~~~~~~~~~~~ - -:copyright: © 2010 by the Pallets team. -:license: BSD, see LICENSE for more details. -""" - -from __future__ import absolute_import - -import logging -import sys - -from werkzeug.local import LocalProxy - -from .globals import request - - -@LocalProxy -def wsgi_errors_stream(): - """Find the most appropriate error stream for the application. If a request - is active, log to ``wsgi.errors``, otherwise use ``sys.stderr``. - - If you configure your own :class:`logging.StreamHandler`, you may want to - use this for the stream. If you are using file or dict configuration and - can't import this directly, you can refer to it as - ``ext://flask.logging.wsgi_errors_stream``. - """ - return request.environ['wsgi.errors'] if request else sys.stderr - - -def has_level_handler(logger): - """Check if there is a handler in the logging chain that will handle the - given logger's :meth:`effective level <~logging.Logger.getEffectiveLevel>`. - """ - level = logger.getEffectiveLevel() - current = logger - - while current: - if any(handler.level <= level for handler in current.handlers): - return True - - if not current.propagate: - break - - current = current.parent - - return False - - -#: Log messages to :func:`~flask.logging.wsgi_errors_stream` with the format -#: ``[%(asctime)s] %(levelname)s in %(module)s: %(message)s``. -default_handler = logging.StreamHandler(wsgi_errors_stream) -default_handler.setFormatter(logging.Formatter( - '[%(asctime)s] %(levelname)s in %(module)s: %(message)s' -)) - - -def create_logger(app): - """Get the ``'flask.app'`` logger and configure it if needed. - - When :attr:`~flask.Flask.debug` is enabled, set the logger level to - :data:`logging.DEBUG` if it is not set. - - If there is no handler for the logger's effective level, add a - :class:`~logging.StreamHandler` for - :func:`~flask.logging.wsgi_errors_stream` with a basic format. - """ - logger = logging.getLogger('flask.app') - - if app.debug and logger.level == logging.NOTSET: - logger.setLevel(logging.DEBUG) - - if not has_level_handler(logger): - logger.addHandler(default_handler) - - return logger diff --git a/python/flask/sessions.py b/python/flask/sessions.py deleted file mode 100644 index c8b7d4e..0000000 --- a/python/flask/sessions.py +++ /dev/null @@ -1,385 +0,0 @@ -# -*- coding: utf-8 -*- -""" - flask.sessions - ~~~~~~~~~~~~~~ - - Implements cookie based sessions based on itsdangerous. - - :copyright: © 2010 by the Pallets team. - :license: BSD, see LICENSE for more details. -""" - -import hashlib -import warnings -from datetime import datetime - -from itsdangerous import BadSignature, URLSafeTimedSerializer -from werkzeug.datastructures import CallbackDict - -from flask._compat import collections_abc -from flask.helpers import is_ip, total_seconds -from flask.json.tag import TaggedJSONSerializer - - -class SessionMixin(collections_abc.MutableMapping): - """Expands a basic dictionary with session attributes.""" - - @property - def permanent(self): - """This reflects the ``'_permanent'`` key in the dict.""" - return self.get('_permanent', False) - - @permanent.setter - def permanent(self, value): - self['_permanent'] = bool(value) - - #: Some implementations can detect whether a session is newly - #: created, but that is not guaranteed. Use with caution. The mixin - # default is hard-coded ``False``. - new = False - - #: Some implementations can detect changes to the session and set - #: this when that happens. The mixin default is hard coded to - #: ``True``. - modified = True - - #: Some implementations can detect when session data is read or - #: written and set this when that happens. The mixin default is hard - #: coded to ``True``. - accessed = True - - -class SecureCookieSession(CallbackDict, SessionMixin): - """Base class for sessions based on signed cookies. - - This session backend will set the :attr:`modified` and - :attr:`accessed` attributes. It cannot reliably track whether a - session is new (vs. empty), so :attr:`new` remains hard coded to - ``False``. - """ - - #: When data is changed, this is set to ``True``. Only the session - #: dictionary itself is tracked; if the session contains mutable - #: data (for example a nested dict) then this must be set to - #: ``True`` manually when modifying that data. The session cookie - #: will only be written to the response if this is ``True``. - modified = False - - #: When data is read or written, this is set to ``True``. Used by - # :class:`.SecureCookieSessionInterface` to add a ``Vary: Cookie`` - #: header, which allows caching proxies to cache different pages for - #: different users. - accessed = False - - def __init__(self, initial=None): - def on_update(self): - self.modified = True - self.accessed = True - - super(SecureCookieSession, self).__init__(initial, on_update) - - def __getitem__(self, key): - self.accessed = True - return super(SecureCookieSession, self).__getitem__(key) - - def get(self, key, default=None): - self.accessed = True - return super(SecureCookieSession, self).get(key, default) - - def setdefault(self, key, default=None): - self.accessed = True - return super(SecureCookieSession, self).setdefault(key, default) - - -class NullSession(SecureCookieSession): - """Class used to generate nicer error messages if sessions are not - available. Will still allow read-only access to the empty session - but fail on setting. - """ - - def _fail(self, *args, **kwargs): - raise RuntimeError('The session is unavailable because no secret ' - 'key was set. Set the secret_key on the ' - 'application to something unique and secret.') - __setitem__ = __delitem__ = clear = pop = popitem = \ - update = setdefault = _fail - del _fail - - -class SessionInterface(object): - """The basic interface you have to implement in order to replace the - default session interface which uses werkzeug's securecookie - implementation. The only methods you have to implement are - :meth:`open_session` and :meth:`save_session`, the others have - useful defaults which you don't need to change. - - The session object returned by the :meth:`open_session` method has to - provide a dictionary like interface plus the properties and methods - from the :class:`SessionMixin`. We recommend just subclassing a dict - and adding that mixin:: - - class Session(dict, SessionMixin): - pass - - If :meth:`open_session` returns ``None`` Flask will call into - :meth:`make_null_session` to create a session that acts as replacement - if the session support cannot work because some requirement is not - fulfilled. The default :class:`NullSession` class that is created - will complain that the secret key was not set. - - To replace the session interface on an application all you have to do - is to assign :attr:`flask.Flask.session_interface`:: - - app = Flask(__name__) - app.session_interface = MySessionInterface() - - .. versionadded:: 0.8 - """ - - #: :meth:`make_null_session` will look here for the class that should - #: be created when a null session is requested. Likewise the - #: :meth:`is_null_session` method will perform a typecheck against - #: this type. - null_session_class = NullSession - - #: A flag that indicates if the session interface is pickle based. - #: This can be used by Flask extensions to make a decision in regards - #: to how to deal with the session object. - #: - #: .. versionadded:: 0.10 - pickle_based = False - - def make_null_session(self, app): - """Creates a null session which acts as a replacement object if the - real session support could not be loaded due to a configuration - error. This mainly aids the user experience because the job of the - null session is to still support lookup without complaining but - modifications are answered with a helpful error message of what - failed. - - This creates an instance of :attr:`null_session_class` by default. - """ - return self.null_session_class() - - def is_null_session(self, obj): - """Checks if a given object is a null session. Null sessions are - not asked to be saved. - - This checks if the object is an instance of :attr:`null_session_class` - by default. - """ - return isinstance(obj, self.null_session_class) - - def get_cookie_domain(self, app): - """Returns the domain that should be set for the session cookie. - - Uses ``SESSION_COOKIE_DOMAIN`` if it is configured, otherwise - falls back to detecting the domain based on ``SERVER_NAME``. - - Once detected (or if not set at all), ``SESSION_COOKIE_DOMAIN`` is - updated to avoid re-running the logic. - """ - - rv = app.config['SESSION_COOKIE_DOMAIN'] - - # set explicitly, or cached from SERVER_NAME detection - # if False, return None - if rv is not None: - return rv if rv else None - - rv = app.config['SERVER_NAME'] - - # server name not set, cache False to return none next time - if not rv: - app.config['SESSION_COOKIE_DOMAIN'] = False - return None - - # chop off the port which is usually not supported by browsers - # remove any leading '.' since we'll add that later - rv = rv.rsplit(':', 1)[0].lstrip('.') - - if '.' not in rv: - # Chrome doesn't allow names without a '.' - # this should only come up with localhost - # hack around this by not setting the name, and show a warning - warnings.warn( - '"{rv}" is not a valid cookie domain, it must contain a ".".' - ' Add an entry to your hosts file, for example' - ' "{rv}.localdomain", and use that instead.'.format(rv=rv) - ) - app.config['SESSION_COOKIE_DOMAIN'] = False - return None - - ip = is_ip(rv) - - if ip: - warnings.warn( - 'The session cookie domain is an IP address. This may not work' - ' as intended in some browsers. Add an entry to your hosts' - ' file, for example "localhost.localdomain", and use that' - ' instead.' - ) - - # if this is not an ip and app is mounted at the root, allow subdomain - # matching by adding a '.' prefix - if self.get_cookie_path(app) == '/' and not ip: - rv = '.' + rv - - app.config['SESSION_COOKIE_DOMAIN'] = rv - return rv - - def get_cookie_path(self, app): - """Returns the path for which the cookie should be valid. The - default implementation uses the value from the ``SESSION_COOKIE_PATH`` - config var if it's set, and falls back to ``APPLICATION_ROOT`` or - uses ``/`` if it's ``None``. - """ - return app.config['SESSION_COOKIE_PATH'] \ - or app.config['APPLICATION_ROOT'] - - def get_cookie_httponly(self, app): - """Returns True if the session cookie should be httponly. This - currently just returns the value of the ``SESSION_COOKIE_HTTPONLY`` - config var. - """ - return app.config['SESSION_COOKIE_HTTPONLY'] - - def get_cookie_secure(self, app): - """Returns True if the cookie should be secure. This currently - just returns the value of the ``SESSION_COOKIE_SECURE`` setting. - """ - return app.config['SESSION_COOKIE_SECURE'] - - def get_cookie_samesite(self, app): - """Return ``'Strict'`` or ``'Lax'`` if the cookie should use the - ``SameSite`` attribute. This currently just returns the value of - the :data:`SESSION_COOKIE_SAMESITE` setting. - """ - return app.config['SESSION_COOKIE_SAMESITE'] - - def get_expiration_time(self, app, session): - """A helper method that returns an expiration date for the session - or ``None`` if the session is linked to the browser session. The - default implementation returns now + the permanent session - lifetime configured on the application. - """ - if session.permanent: - return datetime.utcnow() + app.permanent_session_lifetime - - def should_set_cookie(self, app, session): - """Used by session backends to determine if a ``Set-Cookie`` header - should be set for this session cookie for this response. If the session - has been modified, the cookie is set. If the session is permanent and - the ``SESSION_REFRESH_EACH_REQUEST`` config is true, the cookie is - always set. - - This check is usually skipped if the session was deleted. - - .. versionadded:: 0.11 - """ - - return session.modified or ( - session.permanent and app.config['SESSION_REFRESH_EACH_REQUEST'] - ) - - def open_session(self, app, request): - """This method has to be implemented and must either return ``None`` - in case the loading failed because of a configuration error or an - instance of a session object which implements a dictionary like - interface + the methods and attributes on :class:`SessionMixin`. - """ - raise NotImplementedError() - - def save_session(self, app, session, response): - """This is called for actual sessions returned by :meth:`open_session` - at the end of the request. This is still called during a request - context so if you absolutely need access to the request you can do - that. - """ - raise NotImplementedError() - - -session_json_serializer = TaggedJSONSerializer() - - -class SecureCookieSessionInterface(SessionInterface): - """The default session interface that stores sessions in signed cookies - through the :mod:`itsdangerous` module. - """ - #: the salt that should be applied on top of the secret key for the - #: signing of cookie based sessions. - salt = 'cookie-session' - #: the hash function to use for the signature. The default is sha1 - digest_method = staticmethod(hashlib.sha1) - #: the name of the itsdangerous supported key derivation. The default - #: is hmac. - key_derivation = 'hmac' - #: A python serializer for the payload. The default is a compact - #: JSON derived serializer with support for some extra Python types - #: such as datetime objects or tuples. - serializer = session_json_serializer - session_class = SecureCookieSession - - def get_signing_serializer(self, app): - if not app.secret_key: - return None - signer_kwargs = dict( - key_derivation=self.key_derivation, - digest_method=self.digest_method - ) - return URLSafeTimedSerializer(app.secret_key, salt=self.salt, - serializer=self.serializer, - signer_kwargs=signer_kwargs) - - def open_session(self, app, request): - s = self.get_signing_serializer(app) - if s is None: - return None - val = request.cookies.get(app.session_cookie_name) - if not val: - return self.session_class() - max_age = total_seconds(app.permanent_session_lifetime) - try: - data = s.loads(val, max_age=max_age) - return self.session_class(data) - except BadSignature: - return self.session_class() - - def save_session(self, app, session, response): - domain = self.get_cookie_domain(app) - path = self.get_cookie_path(app) - - # If the session is modified to be empty, remove the cookie. - # If the session is empty, return without setting the cookie. - if not session: - if session.modified: - response.delete_cookie( - app.session_cookie_name, - domain=domain, - path=path - ) - - return - - # Add a "Vary: Cookie" header if the session was accessed at all. - if session.accessed: - response.vary.add('Cookie') - - if not self.should_set_cookie(app, session): - return - - httponly = self.get_cookie_httponly(app) - secure = self.get_cookie_secure(app) - samesite = self.get_cookie_samesite(app) - expires = self.get_expiration_time(app, session) - val = self.get_signing_serializer(app).dumps(dict(session)) - response.set_cookie( - app.session_cookie_name, - val, - expires=expires, - httponly=httponly, - domain=domain, - path=path, - secure=secure, - samesite=samesite - ) diff --git a/python/flask/signals.py b/python/flask/signals.py deleted file mode 100644 index 18f2630..0000000 --- a/python/flask/signals.py +++ /dev/null @@ -1,57 +0,0 @@ -# -*- coding: utf-8 -*- -""" - flask.signals - ~~~~~~~~~~~~~ - - Implements signals based on blinker if available, otherwise - falls silently back to a noop. - - :copyright: © 2010 by the Pallets team. - :license: BSD, see LICENSE for more details. -""" - -signals_available = False -try: - from blinker import Namespace - signals_available = True -except ImportError: - class Namespace(object): - def signal(self, name, doc=None): - return _FakeSignal(name, doc) - - class _FakeSignal(object): - """If blinker is unavailable, create a fake class with the same - interface that allows sending of signals but will fail with an - error on anything else. Instead of doing anything on send, it - will just ignore the arguments and do nothing instead. - """ - - def __init__(self, name, doc=None): - self.name = name - self.__doc__ = doc - def _fail(self, *args, **kwargs): - raise RuntimeError('signalling support is unavailable ' - 'because the blinker library is ' - 'not installed.') - send = lambda *a, **kw: None - connect = disconnect = has_receivers_for = receivers_for = \ - temporarily_connected_to = connected_to = _fail - del _fail - -# The namespace for code signals. If you are not Flask code, do -# not put signals in here. Create your own namespace instead. -_signals = Namespace() - - -# Core signals. For usage examples grep the source code or consult -# the API documentation in docs/api.rst as well as docs/signals.rst -template_rendered = _signals.signal('template-rendered') -before_render_template = _signals.signal('before-render-template') -request_started = _signals.signal('request-started') -request_finished = _signals.signal('request-finished') -request_tearing_down = _signals.signal('request-tearing-down') -got_request_exception = _signals.signal('got-request-exception') -appcontext_tearing_down = _signals.signal('appcontext-tearing-down') -appcontext_pushed = _signals.signal('appcontext-pushed') -appcontext_popped = _signals.signal('appcontext-popped') -message_flashed = _signals.signal('message-flashed') diff --git a/python/flask/templating.py b/python/flask/templating.py deleted file mode 100644 index 0240200..0000000 --- a/python/flask/templating.py +++ /dev/null @@ -1,150 +0,0 @@ -# -*- coding: utf-8 -*- -""" - flask.templating - ~~~~~~~~~~~~~~~~ - - Implements the bridge to Jinja2. - - :copyright: © 2010 by the Pallets team. - :license: BSD, see LICENSE for more details. -""" - -from jinja2 import BaseLoader, Environment as BaseEnvironment, \ - TemplateNotFound - -from .globals import _request_ctx_stack, _app_ctx_stack -from .signals import template_rendered, before_render_template - - -def _default_template_ctx_processor(): - """Default template context processor. Injects `request`, - `session` and `g`. - """ - reqctx = _request_ctx_stack.top - appctx = _app_ctx_stack.top - rv = {} - if appctx is not None: - rv['g'] = appctx.g - if reqctx is not None: - rv['request'] = reqctx.request - rv['session'] = reqctx.session - return rv - - -class Environment(BaseEnvironment): - """Works like a regular Jinja2 environment but has some additional - knowledge of how Flask's blueprint works so that it can prepend the - name of the blueprint to referenced templates if necessary. - """ - - def __init__(self, app, **options): - if 'loader' not in options: - options['loader'] = app.create_global_jinja_loader() - BaseEnvironment.__init__(self, **options) - self.app = app - - -class DispatchingJinjaLoader(BaseLoader): - """A loader that looks for templates in the application and all - the blueprint folders. - """ - - def __init__(self, app): - self.app = app - - def get_source(self, environment, template): - if self.app.config['EXPLAIN_TEMPLATE_LOADING']: - return self._get_source_explained(environment, template) - return self._get_source_fast(environment, template) - - def _get_source_explained(self, environment, template): - attempts = [] - trv = None - - for srcobj, loader in self._iter_loaders(template): - try: - rv = loader.get_source(environment, template) - if trv is None: - trv = rv - except TemplateNotFound: - rv = None - attempts.append((loader, srcobj, rv)) - - from .debughelpers import explain_template_loading_attempts - explain_template_loading_attempts(self.app, template, attempts) - - if trv is not None: - return trv - raise TemplateNotFound(template) - - def _get_source_fast(self, environment, template): - for srcobj, loader in self._iter_loaders(template): - try: - return loader.get_source(environment, template) - except TemplateNotFound: - continue - raise TemplateNotFound(template) - - def _iter_loaders(self, template): - loader = self.app.jinja_loader - if loader is not None: - yield self.app, loader - - for blueprint in self.app.iter_blueprints(): - loader = blueprint.jinja_loader - if loader is not None: - yield blueprint, loader - - def list_templates(self): - result = set() - loader = self.app.jinja_loader - if loader is not None: - result.update(loader.list_templates()) - - for blueprint in self.app.iter_blueprints(): - loader = blueprint.jinja_loader - if loader is not None: - for template in loader.list_templates(): - result.add(template) - - return list(result) - - -def _render(template, context, app): - """Renders the template and fires the signal""" - - before_render_template.send(app, template=template, context=context) - rv = template.render(context) - template_rendered.send(app, template=template, context=context) - return rv - - -def render_template(template_name_or_list, **context): - """Renders a template from the template folder with the given - context. - - :param template_name_or_list: the name of the template to be - rendered, or an iterable with template names - the first one existing will be rendered - :param context: the variables that should be available in the - context of the template. - """ - ctx = _app_ctx_stack.top - ctx.app.update_template_context(context) - return _render(ctx.app.jinja_env.get_or_select_template(template_name_or_list), - context, ctx.app) - - -def render_template_string(source, **context): - """Renders a template from the given template source string - with the given context. Template variables will be autoescaped. - - :param source: the source code of the template to be - rendered - :param context: the variables that should be available in the - context of the template. - """ - ctx = _app_ctx_stack.top - ctx.app.update_template_context(context) - return _render(ctx.app.jinja_env.from_string(source), - context, ctx.app) diff --git a/python/flask/testing.py b/python/flask/testing.py deleted file mode 100644 index 114c5cc..0000000 --- a/python/flask/testing.py +++ /dev/null @@ -1,246 +0,0 @@ -# -*- coding: utf-8 -*- -""" - flask.testing - ~~~~~~~~~~~~~ - - Implements test support helpers. This module is lazily imported - and usually not used in production environments. - - :copyright: © 2010 by the Pallets team. - :license: BSD, see LICENSE for more details. -""" - -import werkzeug -from contextlib import contextmanager - -from click.testing import CliRunner -from flask.cli import ScriptInfo -from werkzeug.test import Client, EnvironBuilder -from flask import _request_ctx_stack -from flask.json import dumps as json_dumps -from werkzeug.urls import url_parse - - -def make_test_environ_builder( - app, path='/', base_url=None, subdomain=None, url_scheme=None, - *args, **kwargs -): - """Create a :class:`~werkzeug.test.EnvironBuilder`, taking some - defaults from the application. - - :param app: The Flask application to configure the environment from. - :param path: URL path being requested. - :param base_url: Base URL where the app is being served, which - ``path`` is relative to. If not given, built from - :data:`PREFERRED_URL_SCHEME`, ``subdomain``, - :data:`SERVER_NAME`, and :data:`APPLICATION_ROOT`. - :param subdomain: Subdomain name to append to :data:`SERVER_NAME`. - :param url_scheme: Scheme to use instead of - :data:`PREFERRED_URL_SCHEME`. - :param json: If given, this is serialized as JSON and passed as - ``data``. Also defaults ``content_type`` to - ``application/json``. - :param args: other positional arguments passed to - :class:`~werkzeug.test.EnvironBuilder`. - :param kwargs: other keyword arguments passed to - :class:`~werkzeug.test.EnvironBuilder`. - """ - - assert ( - not (base_url or subdomain or url_scheme) - or (base_url is not None) != bool(subdomain or url_scheme) - ), 'Cannot pass "subdomain" or "url_scheme" with "base_url".' - - if base_url is None: - http_host = app.config.get('SERVER_NAME') or 'localhost' - app_root = app.config['APPLICATION_ROOT'] - - if subdomain: - http_host = '{0}.{1}'.format(subdomain, http_host) - - if url_scheme is None: - url_scheme = app.config['PREFERRED_URL_SCHEME'] - - url = url_parse(path) - base_url = '{scheme}://{netloc}/{path}'.format( - scheme=url.scheme or url_scheme, - netloc=url.netloc or http_host, - path=app_root.lstrip('/') - ) - path = url.path - - if url.query: - sep = b'?' if isinstance(url.query, bytes) else '?' - path += sep + url.query - - # TODO use EnvironBuilder.json_dumps once we require Werkzeug 0.15 - if 'json' in kwargs: - assert 'data' not in kwargs, "Client cannot provide both 'json' and 'data'." - kwargs['data'] = json_dumps(kwargs.pop('json'), app=app) - - if 'content_type' not in kwargs: - kwargs['content_type'] = 'application/json' - - return EnvironBuilder(path, base_url, *args, **kwargs) - - -class FlaskClient(Client): - """Works like a regular Werkzeug test client but has some knowledge about - how Flask works to defer the cleanup of the request context stack to the - end of a ``with`` body when used in a ``with`` statement. For general - information about how to use this class refer to - :class:`werkzeug.test.Client`. - - .. versionchanged:: 0.12 - `app.test_client()` includes preset default environment, which can be - set after instantiation of the `app.test_client()` object in - `client.environ_base`. - - Basic usage is outlined in the :ref:`testing` chapter. - """ - - preserve_context = False - - def __init__(self, *args, **kwargs): - super(FlaskClient, self).__init__(*args, **kwargs) - self.environ_base = { - "REMOTE_ADDR": "127.0.0.1", - "HTTP_USER_AGENT": "werkzeug/" + werkzeug.__version__ - } - - @contextmanager - def session_transaction(self, *args, **kwargs): - """When used in combination with a ``with`` statement this opens a - session transaction. This can be used to modify the session that - the test client uses. Once the ``with`` block is left the session is - stored back. - - :: - - with client.session_transaction() as session: - session['value'] = 42 - - Internally this is implemented by going through a temporary test - request context and since session handling could depend on - request variables this function accepts the same arguments as - :meth:`~flask.Flask.test_request_context` which are directly - passed through. - """ - if self.cookie_jar is None: - raise RuntimeError('Session transactions only make sense ' - 'with cookies enabled.') - app = self.application - environ_overrides = kwargs.setdefault('environ_overrides', {}) - self.cookie_jar.inject_wsgi(environ_overrides) - outer_reqctx = _request_ctx_stack.top - with app.test_request_context(*args, **kwargs) as c: - session_interface = app.session_interface - sess = session_interface.open_session(app, c.request) - if sess is None: - raise RuntimeError('Session backend did not open a session. ' - 'Check the configuration') - - # Since we have to open a new request context for the session - # handling we want to make sure that we hide out own context - # from the caller. By pushing the original request context - # (or None) on top of this and popping it we get exactly that - # behavior. It's important to not use the push and pop - # methods of the actual request context object since that would - # mean that cleanup handlers are called - _request_ctx_stack.push(outer_reqctx) - try: - yield sess - finally: - _request_ctx_stack.pop() - - resp = app.response_class() - if not session_interface.is_null_session(sess): - session_interface.save_session(app, sess, resp) - headers = resp.get_wsgi_headers(c.request.environ) - self.cookie_jar.extract_wsgi(c.request.environ, headers) - - def open(self, *args, **kwargs): - as_tuple = kwargs.pop('as_tuple', False) - buffered = kwargs.pop('buffered', False) - follow_redirects = kwargs.pop('follow_redirects', False) - - if ( - not kwargs and len(args) == 1 - and isinstance(args[0], (EnvironBuilder, dict)) - ): - environ = self.environ_base.copy() - - if isinstance(args[0], EnvironBuilder): - environ.update(args[0].get_environ()) - else: - environ.update(args[0]) - - environ['flask._preserve_context'] = self.preserve_context - else: - kwargs.setdefault('environ_overrides', {}) \ - ['flask._preserve_context'] = self.preserve_context - kwargs.setdefault('environ_base', self.environ_base) - builder = make_test_environ_builder( - self.application, *args, **kwargs - ) - - try: - environ = builder.get_environ() - finally: - builder.close() - - return Client.open( - self, environ, - as_tuple=as_tuple, - buffered=buffered, - follow_redirects=follow_redirects - ) - - def __enter__(self): - if self.preserve_context: - raise RuntimeError('Cannot nest client invocations') - self.preserve_context = True - return self - - def __exit__(self, exc_type, exc_value, tb): - self.preserve_context = False - - # on exit we want to clean up earlier. Normally the request context - # stays preserved until the next request in the same thread comes - # in. See RequestGlobals.push() for the general behavior. - top = _request_ctx_stack.top - if top is not None and top.preserved: - top.pop() - - -class FlaskCliRunner(CliRunner): - """A :class:`~click.testing.CliRunner` for testing a Flask app's - CLI commands. Typically created using - :meth:`~flask.Flask.test_cli_runner`. See :ref:`testing-cli`. - """ - def __init__(self, app, **kwargs): - self.app = app - super(FlaskCliRunner, self).__init__(**kwargs) - - def invoke(self, cli=None, args=None, **kwargs): - """Invokes a CLI command in an isolated environment. See - :meth:`CliRunner.invoke <click.testing.CliRunner.invoke>` for - full method documentation. See :ref:`testing-cli` for examples. - - If the ``obj`` argument is not given, passes an instance of - :class:`~flask.cli.ScriptInfo` that knows how to load the Flask - app being tested. - - :param cli: Command object to invoke. Default is the app's - :attr:`~flask.app.Flask.cli` group. - :param args: List of strings to invoke the command with. - - :return: a :class:`~click.testing.Result` object. - """ - if cli is None: - cli = self.app.cli - - if 'obj' not in kwargs: - kwargs['obj'] = ScriptInfo(create_app=lambda: self.app) - - return super(FlaskCliRunner, self).invoke(cli, args, **kwargs) diff --git a/python/flask/views.py b/python/flask/views.py deleted file mode 100644 index 1f2c997..0000000 --- a/python/flask/views.py +++ /dev/null @@ -1,158 +0,0 @@ -# -*- coding: utf-8 -*- -""" - flask.views - ~~~~~~~~~~~ - - This module provides class-based views inspired by the ones in Django. - - :copyright: © 2010 by the Pallets team. - :license: BSD, see LICENSE for more details. -""" - -from .globals import request -from ._compat import with_metaclass - - -http_method_funcs = frozenset(['get', 'post', 'head', 'options', - 'delete', 'put', 'trace', 'patch']) - - -class View(object): - """Alternative way to use view functions. A subclass has to implement - :meth:`dispatch_request` which is called with the view arguments from - the URL routing system. If :attr:`methods` is provided the methods - do not have to be passed to the :meth:`~flask.Flask.add_url_rule` - method explicitly:: - - class MyView(View): - methods = ['GET'] - - def dispatch_request(self, name): - return 'Hello %s!' % name - - app.add_url_rule('/hello/<name>', view_func=MyView.as_view('myview')) - - When you want to decorate a pluggable view you will have to either do that - when the view function is created (by wrapping the return value of - :meth:`as_view`) or you can use the :attr:`decorators` attribute:: - - class SecretView(View): - methods = ['GET'] - decorators = [superuser_required] - - def dispatch_request(self): - ... - - The decorators stored in the decorators list are applied one after another - when the view function is created. Note that you can *not* use the class - based decorators since those would decorate the view class and not the - generated view function! - """ - - #: A list of methods this view can handle. - methods = None - - #: Setting this disables or force-enables the automatic options handling. - provide_automatic_options = None - - #: The canonical way to decorate class-based views is to decorate the - #: return value of as_view(). However since this moves parts of the - #: logic from the class declaration to the place where it's hooked - #: into the routing system. - #: - #: You can place one or more decorators in this list and whenever the - #: view function is created the result is automatically decorated. - #: - #: .. versionadded:: 0.8 - decorators = () - - def dispatch_request(self): - """Subclasses have to override this method to implement the - actual view function code. This method is called with all - the arguments from the URL rule. - """ - raise NotImplementedError() - - @classmethod - def as_view(cls, name, *class_args, **class_kwargs): - """Converts the class into an actual view function that can be used - with the routing system. Internally this generates a function on the - fly which will instantiate the :class:`View` on each request and call - the :meth:`dispatch_request` method on it. - - The arguments passed to :meth:`as_view` are forwarded to the - constructor of the class. - """ - def view(*args, **kwargs): - self = view.view_class(*class_args, **class_kwargs) - return self.dispatch_request(*args, **kwargs) - - if cls.decorators: - view.__name__ = name - view.__module__ = cls.__module__ - for decorator in cls.decorators: - view = decorator(view) - - # We attach the view class to the view function for two reasons: - # first of all it allows us to easily figure out what class-based - # view this thing came from, secondly it's also used for instantiating - # the view class so you can actually replace it with something else - # for testing purposes and debugging. - view.view_class = cls - view.__name__ = name - view.__doc__ = cls.__doc__ - view.__module__ = cls.__module__ - view.methods = cls.methods - view.provide_automatic_options = cls.provide_automatic_options - return view - - -class MethodViewType(type): - """Metaclass for :class:`MethodView` that determines what methods the view - defines. - """ - - def __init__(cls, name, bases, d): - super(MethodViewType, cls).__init__(name, bases, d) - - if 'methods' not in d: - methods = set() - - for key in http_method_funcs: - if hasattr(cls, key): - methods.add(key.upper()) - - # If we have no method at all in there we don't want to add a - # method list. This is for instance the case for the base class - # or another subclass of a base method view that does not introduce - # new methods. - if methods: - cls.methods = methods - - -class MethodView(with_metaclass(MethodViewType, View)): - """A class-based view that dispatches request methods to the corresponding - class methods. For example, if you implement a ``get`` method, it will be - used to handle ``GET`` requests. :: - - class CounterAPI(MethodView): - def get(self): - return session.get('counter', 0) - - def post(self): - session['counter'] = session.get('counter', 0) + 1 - return 'OK' - - app.add_url_rule('/counter', view_func=CounterAPI.as_view('counter')) - """ - - def dispatch_request(self, *args, **kwargs): - meth = getattr(self, request.method.lower(), None) - - # If the request method is HEAD and we don't have a handler for it - # retry with GET. - if meth is None and request.method == 'HEAD': - meth = getattr(self, 'get', None) - - assert meth is not None, 'Unimplemented method %r' % request.method - return meth(*args, **kwargs) diff --git a/python/flask/wrappers.py b/python/flask/wrappers.py deleted file mode 100644 index 12eff2c..0000000 --- a/python/flask/wrappers.py +++ /dev/null @@ -1,216 +0,0 @@ -# -*- coding: utf-8 -*- -""" - flask.wrappers - ~~~~~~~~~~~~~~ - - Implements the WSGI wrappers (request and response). - - :copyright: © 2010 by the Pallets team. - :license: BSD, see LICENSE for more details. -""" - -from werkzeug.exceptions import BadRequest -from werkzeug.wrappers import Request as RequestBase, Response as ResponseBase - -from flask import json -from flask.globals import current_app - - -class JSONMixin(object): - """Common mixin for both request and response objects to provide JSON - parsing capabilities. - - .. versionadded:: 1.0 - """ - - _cached_json = (Ellipsis, Ellipsis) - - @property - def is_json(self): - """Check if the mimetype indicates JSON data, either - :mimetype:`application/json` or :mimetype:`application/*+json`. - - .. versionadded:: 0.11 - """ - mt = self.mimetype - return ( - mt == 'application/json' - or (mt.startswith('application/')) and mt.endswith('+json') - ) - - @property - def json(self): - """This will contain the parsed JSON data if the mimetype indicates - JSON (:mimetype:`application/json`, see :meth:`is_json`), otherwise it - will be ``None``. - """ - return self.get_json() - - def _get_data_for_json(self, cache): - return self.get_data(cache=cache) - - def get_json(self, force=False, silent=False, cache=True): - """Parse and return the data as JSON. If the mimetype does not - indicate JSON (:mimetype:`application/json`, see - :meth:`is_json`), this returns ``None`` unless ``force`` is - true. If parsing fails, :meth:`on_json_loading_failed` is called - and its return value is used as the return value. - - :param force: Ignore the mimetype and always try to parse JSON. - :param silent: Silence parsing errors and return ``None`` - instead. - :param cache: Store the parsed JSON to return for subsequent - calls. - """ - if cache and self._cached_json[silent] is not Ellipsis: - return self._cached_json[silent] - - if not (force or self.is_json): - return None - - data = self._get_data_for_json(cache=cache) - - try: - rv = json.loads(data) - except ValueError as e: - if silent: - rv = None - if cache: - normal_rv, _ = self._cached_json - self._cached_json = (normal_rv, rv) - else: - rv = self.on_json_loading_failed(e) - if cache: - _, silent_rv = self._cached_json - self._cached_json = (rv, silent_rv) - else: - if cache: - self._cached_json = (rv, rv) - - return rv - - def on_json_loading_failed(self, e): - """Called if :meth:`get_json` parsing fails and isn't silenced. If - this method returns a value, it is used as the return value for - :meth:`get_json`. The default implementation raises a - :class:`BadRequest` exception. - - .. versionchanged:: 0.10 - Raise a :exc:`BadRequest` error instead of returning an error - message as JSON. If you want that behavior you can add it by - subclassing. - - .. versionadded:: 0.8 - """ - if current_app is not None and current_app.debug: - raise BadRequest('Failed to decode JSON object: {0}'.format(e)) - - raise BadRequest() - - -class Request(RequestBase, JSONMixin): - """The request object used by default in Flask. Remembers the - matched endpoint and view arguments. - - It is what ends up as :class:`~flask.request`. If you want to replace - the request object used you can subclass this and set - :attr:`~flask.Flask.request_class` to your subclass. - - The request object is a :class:`~werkzeug.wrappers.Request` subclass and - provides all of the attributes Werkzeug defines plus a few Flask - specific ones. - """ - - #: The internal URL rule that matched the request. This can be - #: useful to inspect which methods are allowed for the URL from - #: a before/after handler (``request.url_rule.methods``) etc. - #: Though if the request's method was invalid for the URL rule, - #: the valid list is available in ``routing_exception.valid_methods`` - #: instead (an attribute of the Werkzeug exception :exc:`~werkzeug.exceptions.MethodNotAllowed`) - #: because the request was never internally bound. - #: - #: .. versionadded:: 0.6 - url_rule = None - - #: A dict of view arguments that matched the request. If an exception - #: happened when matching, this will be ``None``. - view_args = None - - #: If matching the URL failed, this is the exception that will be - #: raised / was raised as part of the request handling. This is - #: usually a :exc:`~werkzeug.exceptions.NotFound` exception or - #: something similar. - routing_exception = None - - @property - def max_content_length(self): - """Read-only view of the ``MAX_CONTENT_LENGTH`` config key.""" - if current_app: - return current_app.config['MAX_CONTENT_LENGTH'] - - @property - def endpoint(self): - """The endpoint that matched the request. This in combination with - :attr:`view_args` can be used to reconstruct the same or a - modified URL. If an exception happened when matching, this will - be ``None``. - """ - if self.url_rule is not None: - return self.url_rule.endpoint - - @property - def blueprint(self): - """The name of the current blueprint""" - if self.url_rule and '.' in self.url_rule.endpoint: - return self.url_rule.endpoint.rsplit('.', 1)[0] - - def _load_form_data(self): - RequestBase._load_form_data(self) - - # In debug mode we're replacing the files multidict with an ad-hoc - # subclass that raises a different error for key errors. - if ( - current_app - and current_app.debug - and self.mimetype != 'multipart/form-data' - and not self.files - ): - from .debughelpers import attach_enctype_error_multidict - attach_enctype_error_multidict(self) - - -class Response(ResponseBase, JSONMixin): - """The response object that is used by default in Flask. Works like the - response object from Werkzeug but is set to have an HTML mimetype by - default. Quite often you don't have to create this object yourself because - :meth:`~flask.Flask.make_response` will take care of that for you. - - If you want to replace the response object used you can subclass this and - set :attr:`~flask.Flask.response_class` to your subclass. - - .. versionchanged:: 1.0 - JSON support is added to the response, like the request. This is useful - when testing to get the test client response data as JSON. - - .. versionchanged:: 1.0 - - Added :attr:`max_cookie_size`. - """ - - default_mimetype = 'text/html' - - def _get_data_for_json(self, cache): - return self.get_data() - - @property - def max_cookie_size(self): - """Read-only view of the :data:`MAX_COOKIE_SIZE` config key. - - See :attr:`~werkzeug.wrappers.BaseResponse.max_cookie_size` in - Werkzeug's docs. - """ - if current_app: - return current_app.config['MAX_COOKIE_SIZE'] - - # return Werkzeug's default when not in an app context - return super(Response, self).max_cookie_size diff --git a/python/gevent/__greenlet_primitives.cp36-win32.pyd b/python/gevent/__greenlet_primitives.cp36-win32.pyd deleted file mode 100644 index 1f446b2b59250685bb8834661a1d4664e261c50d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41984 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 PrIsp7BTa?>$Nl{u@BUeC diff --git a/python/gevent/__greenlet_primitives.pxd b/python/gevent/__greenlet_primitives.pxd deleted file mode 100644 index 18381f1..0000000 --- a/python/gevent/__greenlet_primitives.pxd +++ /dev/null @@ -1,44 +0,0 @@ -cimport cython - -# This file must not cimport anything from gevent. - -cdef wref - -cdef BlockingSwitchOutError - - -cdef extern from "greenlet/greenlet.h": - - ctypedef class greenlet.greenlet [object PyGreenlet]: - pass - - # These are actually macros and so much be included - # (defined) in each .pxd, as are the two functions - # that call them. - greenlet PyGreenlet_GetCurrent() - object PyGreenlet_Switch(greenlet self, void* args, void* kwargs) - void PyGreenlet_Import() - -@cython.final -cdef inline greenlet getcurrent(): - return PyGreenlet_GetCurrent() - -cdef bint _greenlet_imported - -cdef inline void greenlet_init(): - global _greenlet_imported - if not _greenlet_imported: - PyGreenlet_Import() - _greenlet_imported = True - -cdef inline object _greenlet_switch(greenlet self): - return PyGreenlet_Switch(self, NULL, NULL) - -cdef class TrackedRawGreenlet(greenlet): - pass - -cdef class SwitchOutGreenletWithLoop(TrackedRawGreenlet): - cdef public loop - - cpdef switch(self) - cpdef switch_out(self) diff --git a/python/gevent/__hub_local.cp36-win32.pyd b/python/gevent/__hub_local.cp36-win32.pyd deleted file mode 100644 index f75bd3d9f0218affd2c050a49404e8d5433d964c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40960 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 UJz?8rJAhGp2;K$U{9pU~e<kq*kpKVy diff --git a/python/gevent/__hub_local.pxd b/python/gevent/__hub_local.pxd deleted file mode 100644 index e7df56f..0000000 --- a/python/gevent/__hub_local.pxd +++ /dev/null @@ -1,17 +0,0 @@ -from gevent.__greenlet_primitives cimport SwitchOutGreenletWithLoop - -cdef _threadlocal - -cpdef get_hub_class() -cpdef SwitchOutGreenletWithLoop get_hub_if_exists() -cpdef set_hub(SwitchOutGreenletWithLoop hub) -cpdef get_loop() -cpdef set_loop(loop) - -# We can't cdef this, it won't do varargs. -# cpdef WaitOperationsGreenlet get_hub(*args, **kwargs) - -# XXX: TODO: Move the definition of TrackedRawGreenlet -# into a file that can be cython compiled so get_hub can -# return that. -cpdef SwitchOutGreenletWithLoop get_hub_noargs() diff --git a/python/gevent/__hub_primitives.cp36-win32.pyd b/python/gevent/__hub_primitives.cp36-win32.pyd deleted file mode 100644 index 649fff9a45bb90c0c4586ffdd76849304e0535cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96256 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 diff --git a/python/gevent/__hub_primitives.pxd b/python/gevent/__hub_primitives.pxd deleted file mode 100644 index 6d8a115..0000000 --- a/python/gevent/__hub_primitives.pxd +++ /dev/null @@ -1,69 +0,0 @@ -cimport cython - -from gevent.__greenlet_primitives cimport SwitchOutGreenletWithLoop -from gevent.__hub_local cimport get_hub_noargs as get_hub - -from gevent.__waiter cimport Waiter -from gevent.__waiter cimport MultipleWaiter - -cdef InvalidSwitchError -cdef _waiter -cdef _greenlet_primitives -cdef traceback -cdef _timeout_error -cdef Timeout - - -cdef extern from "greenlet/greenlet.h": - - ctypedef class greenlet.greenlet [object PyGreenlet]: - pass - - # These are actually macros and so much be included - # (defined) in each .pxd, as are the two functions - # that call them. - greenlet PyGreenlet_GetCurrent() - void PyGreenlet_Import() - -@cython.final -cdef inline greenlet getcurrent(): - return PyGreenlet_GetCurrent() - -cdef bint _greenlet_imported - -cdef inline void greenlet_init(): - global _greenlet_imported - if not _greenlet_imported: - PyGreenlet_Import() - _greenlet_imported = True - - -cdef class WaitOperationsGreenlet(SwitchOutGreenletWithLoop): - - cpdef wait(self, watcher) - cpdef cancel_wait(self, watcher, error, close_watcher=*) - cpdef _cancel_wait(self, watcher, error, close_watcher) - -cdef class _WaitIterator: - cdef SwitchOutGreenletWithLoop _hub - cdef MultipleWaiter _waiter - cdef _switch - cdef _timeout - cdef _objects - cdef _timer - cdef Py_ssize_t _count - cdef bint _begun - - - - cdef _cleanup(self) - -cpdef iwait_on_objects(objects, timeout=*, count=*) -cpdef wait_on_objects(objects=*, timeout=*, count=*) - -cdef _primitive_wait(watcher, timeout, timeout_exc, WaitOperationsGreenlet hub) -cpdef wait_on_watcher(watcher, timeout=*, timeout_exc=*, WaitOperationsGreenlet hub=*) -cpdef wait_read(fileno, timeout=*, timeout_exc=*) -cpdef wait_write(fileno, timeout=*, timeout_exc=*, event=*) -cpdef wait_readwrite(fileno, timeout=*, timeout_exc=*, event=*) -cpdef wait_on_socket(socket, watcher, timeout_exc=*) diff --git a/python/gevent/__ident.cp36-win32.pyd b/python/gevent/__ident.cp36-win32.pyd deleted file mode 100644 index 4e219f23a263fbba16b059e1a13a9c59ece4ae01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37888 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 diff --git a/python/gevent/__ident.pxd b/python/gevent/__ident.pxd deleted file mode 100644 index 55e4307..0000000 --- a/python/gevent/__ident.pxd +++ /dev/null @@ -1,26 +0,0 @@ -cimport cython - -cdef extern from "Python.h": - - ctypedef class weakref.ref [object PyWeakReference]: - pass - -cdef heappop -cdef heappush -cdef object WeakKeyDictionary -cdef type ref - -@cython.internal -@cython.final -cdef class ValuedWeakRef(ref): - cdef object value - -@cython.final -cdef class IdentRegistry: - cdef object _registry - cdef list _available_idents - - @cython.final - cpdef object get_ident(self, obj) - @cython.final - cpdef _return_ident(self, ValuedWeakRef ref) diff --git a/python/gevent/__imap.cp36-win32.pyd b/python/gevent/__imap.cp36-win32.pyd deleted file mode 100644 index 28ecbece35153865b4c02381f7777e3248c4af46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69120 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 VPHJuRWWAHl=-~SQU;j%u@b4Q@Ew2Co diff --git a/python/gevent/__imap.pxd b/python/gevent/__imap.pxd deleted file mode 100644 index 5e3e930..0000000 --- a/python/gevent/__imap.pxd +++ /dev/null @@ -1,45 +0,0 @@ -cimport cython -from gevent._greenlet cimport Greenlet -from gevent.__semaphore cimport Semaphore -from gevent._queue cimport UnboundQueue - -@cython.freelist(100) -@cython.internal -@cython.final -cdef class Failure: - cdef readonly exc - cdef raise_exception - -cdef inline _raise_exc(Failure failure) - -cdef class IMapUnordered(Greenlet): - cdef bint _zipped - cdef func - cdef iterable - cdef spawn - cdef Semaphore _result_semaphore - cdef int _outstanding_tasks - cdef int _max_index - - cdef readonly UnboundQueue queue - cdef readonly bint finished - - cdef _inext(self) - cdef _ispawn(self, func, item, int item_index) - - # Passed to greenlet.link - cpdef _on_result(self, greenlet) - # Called directly - cdef _on_finish(self, exception) - - cdef _iqueue_value_for_success(self, greenlet) - cdef _iqueue_value_for_failure(self, greenlet) - cdef _iqueue_value_for_self_finished(self) - cdef _iqueue_value_for_self_failure(self, exception) - -cdef class IMap(IMapUnordered): - cdef int index - cdef dict _results - - @cython.locals(index=int) - cdef _inext(self) diff --git a/python/gevent/__init__.py b/python/gevent/__init__.py deleted file mode 100644 index c9feb9a..0000000 --- a/python/gevent/__init__.py +++ /dev/null @@ -1,178 +0,0 @@ -# Copyright (c) 2009-2012 Denis Bilenko. See LICENSE for details. -""" -gevent is a coroutine-based Python networking library that uses greenlet -to provide a high-level synchronous API on top of libev event loop. - -See http://www.gevent.org/ for the documentation. - -.. versionchanged:: 1.3a2 - Add the `config` object. -""" - -from __future__ import absolute_import - -from collections import namedtuple - -_version_info = namedtuple('version_info', - ('major', 'minor', 'micro', 'releaselevel', 'serial')) - -#: The programatic version identifier. The fields have (roughly) the -#: same meaning as :data:`sys.version_info` -#: .. deprecated:: 1.2 -#: Use ``pkg_resources.parse_version(__version__)`` (or the equivalent -#: ``packaging.version.Version(__version__)``). -version_info = _version_info(1, 3, 0, 'dev', 0) - -#: The human-readable PEP 440 version identifier. -#: Use ``pkg_resources.parse_version(__version__)`` or -#: ``packaging.version.Version(__version__)`` to get a machine-usable -#: value. -__version__ = '1.3.6' - - -__all__ = [ - 'get_hub', - 'Greenlet', - 'GreenletExit', - 'spawn', - 'spawn_later', - 'spawn_raw', - 'iwait', - 'wait', - 'killall', - 'Timeout', - 'with_timeout', - 'getcurrent', - 'sleep', - 'idle', - 'kill', - 'signal', # deprecated - 'signal_handler', - 'fork', - 'reinit', - 'getswitchinterval', - 'setswitchinterval', - # Added in 1.3a2 - 'config', -] - - -import sys -if sys.platform == 'win32': - # trigger WSAStartup call - import socket # pylint:disable=unused-import,useless-suppression - del socket - -try: - # Floating point number, in number of seconds, - # like time.time - getswitchinterval = sys.getswitchinterval - setswitchinterval = sys.setswitchinterval -except AttributeError: - # Running on Python 2 - _switchinterval = 0.005 - - def getswitchinterval(): - return _switchinterval - - def setswitchinterval(interval): - # Weed out None and non-numbers. This is not - # exactly exception compatible with the Python 3 - # versions. - if interval > 0: - global _switchinterval - _switchinterval = interval - -from gevent._config import config -from gevent._hub_local import get_hub -from gevent._hub_primitives import iwait_on_objects as iwait -from gevent._hub_primitives import wait_on_objects as wait - -from gevent.greenlet import Greenlet, joinall, killall -joinall = joinall # export for pylint -spawn = Greenlet.spawn -spawn_later = Greenlet.spawn_later -#: The singleton configuration object for gevent. -config = config - -from gevent.timeout import Timeout, with_timeout -from gevent.hub import getcurrent, GreenletExit, spawn_raw, sleep, idle, kill, reinit -try: - from gevent.os import fork -except ImportError: - __all__.remove('fork') - -# See https://github.com/gevent/gevent/issues/648 -# A temporary backwards compatibility shim to enable users to continue -# to treat 'from gevent import signal' as a callable, to matter whether -# the 'gevent.signal' module has been imported first -from gevent.hub import signal as _signal_class -signal_handler = _signal_class -from gevent import signal as _signal_module - -# The object 'gevent.signal' must: -# - be callable, returning a gevent.hub.signal; -# - answer True to isinstance(gevent.signal(...), gevent.signal); -# - answer True to isinstance(gevent.signal(...), gevent.hub.signal) -# - have all the attributes of the module 'gevent.signal'; -# - answer True to isinstance(gevent.signal, types.ModuleType) (optional) - -# The only way to do this is to use a metaclass, an instance of which (a class) -# is put in sys.modules and is substituted for gevent.hub.signal. -# This handles everything except the last one. - - -class _signal_metaclass(type): - - def __getattr__(cls, name): - return getattr(_signal_module, name) - - def __setattr__(cls, name, value): - setattr(_signal_module, name, value) - - def __instancecheck__(cls, instance): - return isinstance(instance, _signal_class) - - def __dir__(cls): - return dir(_signal_module) - - -class signal(object): - - __doc__ = _signal_module.__doc__ - - def __new__(cls, *args, **kwargs): - return _signal_class(*args, **kwargs) - - -# The metaclass is applied after the class declaration -# for Python 2/3 compatibility -signal = _signal_metaclass(str("signal"), - (), - dict(signal.__dict__)) - -sys.modules['gevent.signal'] = signal -sys.modules['gevent.hub'].signal = signal - -del sys - - -# the following makes hidden imports visible to freezing tools like -# py2exe. see https://github.com/gevent/gevent/issues/181 - -def __dependencies_for_freezing(): - # pylint:disable=unused-variable - from gevent import core - from gevent import resolver_thread - from gevent import resolver_ares - from gevent import socket as _socket - from gevent import threadpool - from gevent import thread - from gevent import threading - from gevent import select - from gevent import subprocess - import pprint - import traceback - import signal as _signal - -del __dependencies_for_freezing diff --git a/python/gevent/__semaphore.cp36-win32.pyd b/python/gevent/__semaphore.cp36-win32.pyd deleted file mode 100644 index 5458372bb6a7cda2b68d7d4d90d3f619895b8f04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76800 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 X@nwj>i_kk*g?x1lzn*B_zxDB7mT*yH diff --git a/python/gevent/__semaphore.pxd b/python/gevent/__semaphore.pxd deleted file mode 100644 index 5c8ecf1..0000000 --- a/python/gevent/__semaphore.pxd +++ /dev/null @@ -1,54 +0,0 @@ -cimport cython - -from gevent.__hub_local cimport get_hub_noargs as get_hub -cdef Timeout - -cdef bint _greenlet_imported - -cdef extern from "greenlet/greenlet.h": - - ctypedef class greenlet.greenlet [object PyGreenlet]: - pass - - # These are actually macros and so much be included - # (defined) in each .pxd, as are the two functions - # that call them. - greenlet PyGreenlet_GetCurrent() - void PyGreenlet_Import() - -cdef inline greenlet getcurrent(): - return PyGreenlet_GetCurrent() - -cdef inline void greenlet_init(): - global _greenlet_imported - if not _greenlet_imported: - PyGreenlet_Import() - _greenlet_imported = True - - -cdef void _init() - - -cdef class Semaphore: - cdef public int counter - cdef readonly list _links - cdef readonly object _notifier - cdef public int _dirty - cdef object __weakref__ - - cpdef bint locked(self) - cpdef int release(self) except -1000 - cpdef rawlink(self, object callback) - cpdef unlink(self, object callback) - cpdef _start_notify(self) - cpdef _notify_links(self) - cdef _do_wait(self, object timeout) - cpdef int wait(self, object timeout=*) except -1000 - cpdef bint acquire(self, int blocking=*, object timeout=*) except -1000 - cpdef __enter__(self) - cpdef __exit__(self, object t, object v, object tb) - -cdef class BoundedSemaphore(Semaphore): - cdef readonly int _initial_value - - cpdef int release(self) except -1000 diff --git a/python/gevent/__tracer.cp36-win32.pyd b/python/gevent/__tracer.cp36-win32.pyd deleted file mode 100644 index a194af61650c5e5eaf579c5357ba282e5d6fa9e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71680 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 diff --git a/python/gevent/__tracer.pxd b/python/gevent/__tracer.pxd deleted file mode 100644 index 454147e..0000000 --- a/python/gevent/__tracer.pxd +++ /dev/null @@ -1,43 +0,0 @@ -cimport cython - -cdef sys -cdef traceback - -cdef settrace -cdef getcurrent - -cdef format_run_info - -cdef perf_counter -cdef gmctime - - -cdef class GreenletTracer: - cpdef readonly object active_greenlet - cpdef readonly object previous_trace_function - cpdef readonly Py_ssize_t greenlet_switch_counter - - cdef bint _killed - - cpdef _trace(self, str event, tuple args) - - @cython.locals(did_switch=bint) - cpdef did_block_hub(self, hub) - - cpdef kill(self) - -@cython.internal -cdef class _HubTracer(GreenletTracer): - cpdef readonly object hub - cpdef readonly double max_blocking_time - - -cdef class HubSwitchTracer(_HubTracer): - cpdef readonly double last_entered_hub - -cdef class MaxSwitchTracer(_HubTracer): - cpdef readonly double max_blocking - cpdef readonly double last_switch - - @cython.locals(switched_at=double) - cpdef _trace(self, str event, tuple args) diff --git a/python/gevent/__waiter.cp36-win32.pyd b/python/gevent/__waiter.cp36-win32.pyd deleted file mode 100644 index f880a612305f73cb1d19314ae4cd7c994a2ea83d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62976 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 diff --git a/python/gevent/__waiter.pxd b/python/gevent/__waiter.pxd deleted file mode 100644 index 0763bae..0000000 --- a/python/gevent/__waiter.pxd +++ /dev/null @@ -1,48 +0,0 @@ -cimport cython - -from gevent.__greenlet_primitives cimport SwitchOutGreenletWithLoop -from gevent.__hub_local cimport get_hub_noargs as get_hub - -cdef sys -cdef ConcurrentObjectUseError - - -cdef bint _greenlet_imported -cdef _NONE - -cdef extern from "greenlet/greenlet.h": - - ctypedef class greenlet.greenlet [object PyGreenlet]: - pass - - # These are actually macros and so much be included - # (defined) in each .pxd, as are the two functions - # that call them. - greenlet PyGreenlet_GetCurrent() - void PyGreenlet_Import() - -cdef inline greenlet getcurrent(): - return PyGreenlet_GetCurrent() - -cdef inline void greenlet_init(): - global _greenlet_imported - if not _greenlet_imported: - PyGreenlet_Import() - _greenlet_imported = True - -cdef class Waiter: - cdef readonly SwitchOutGreenletWithLoop hub - cdef readonly greenlet greenlet - cdef readonly value - cdef _exception - - cpdef get(self) - cpdef clear(self) - - # cpdef of switch leads to parameter errors... - #cpdef switch(self, value) - -@cython.final -@cython.internal -cdef class MultipleWaiter(Waiter): - cdef list _values diff --git a/python/gevent/_compat.py b/python/gevent/_compat.py deleted file mode 100644 index 22bad70..0000000 --- a/python/gevent/_compat.py +++ /dev/null @@ -1,160 +0,0 @@ -# -*- coding: utf-8 -*- -""" -internal gevent python 2/python 3 bridges. Not for external use. -""" - -from __future__ import print_function, absolute_import, division - -import sys -import os - - -PY2 = sys.version_info[0] == 2 -PY3 = sys.version_info[0] >= 3 -PYPY = hasattr(sys, 'pypy_version_info') -WIN = sys.platform.startswith("win") -LINUX = sys.platform.startswith('linux') -OSX = sys.platform == 'darwin' - - -PURE_PYTHON = PYPY or os.getenv('PURE_PYTHON') - -## Types - -if PY3: - string_types = (str,) - integer_types = (int,) - text_type = str - native_path_types = (str, bytes) - thread_mod_name = '_thread' - -else: - import __builtin__ # pylint:disable=import-error - string_types = (__builtin__.basestring,) - text_type = __builtin__.unicode - integer_types = (int, __builtin__.long) - native_path_types = string_types - thread_mod_name = 'thread' - -def NativeStrIO(): - import io - return io.BytesIO() if str is bytes else io.StringIO() - -## Exceptions -if PY3: - def reraise(t, value, tb=None): # pylint:disable=unused-argument - if value.__traceback__ is not tb and tb is not None: - raise value.with_traceback(tb) - raise value - def exc_clear(): - pass - -else: - from gevent._util_py2 import reraise # pylint:disable=import-error,no-name-in-module - reraise = reraise # export - exc_clear = sys.exc_clear - -## import locks -try: - # In Python 3.4 and newer in CPython and PyPy3, - # imp.acquire_lock and imp.release_lock are delegated to - # '_imp'. (Which is also used by importlib.) 'imp' itself is - # deprecated. Avoid that warning. - import _imp as imp -except ImportError: - import imp -imp_acquire_lock = imp.acquire_lock -imp_release_lock = imp.release_lock - -## Functions -if PY3: - iteritems = dict.items - itervalues = dict.values - xrange = range - izip = zip - -else: - iteritems = dict.iteritems # python 3: pylint:disable=no-member - itervalues = dict.itervalues # python 3: pylint:disable=no-member - xrange = __builtin__.xrange - from itertools import izip # python 3: pylint:disable=no-member,no-name-in-module - izip = izip - -# fspath from 3.6 os.py, but modified to raise the same exceptions as the -# real native implementation. -# Define for testing -def _fspath(path): - """ - Return the path representation of a path-like object. - - If str or bytes is passed in, it is returned unchanged. Otherwise the - os.PathLike interface is used to get the path representation. If the - path representation is not str or bytes, TypeError is raised. If the - provided path is not str, bytes, or os.PathLike, TypeError is raised. - """ - if isinstance(path, native_path_types): - return path - - # Work from the object's type to match method resolution of other magic - # methods. - path_type = type(path) - try: - path_type_fspath = path_type.__fspath__ - except AttributeError: - raise TypeError("expected str, bytes or os.PathLike object, " - "not " + path_type.__name__) - - path_repr = path_type_fspath(path) - if isinstance(path_repr, native_path_types): - return path_repr - - raise TypeError("expected {}.__fspath__() to return str or bytes, " - "not {}".format(path_type.__name__, - type(path_repr).__name__)) -try: - from os import fspath # pylint: disable=unused-import,no-name-in-module -except ImportError: - # if not available, use the Python version as transparently as - # possible - fspath = _fspath - fspath.__name__ = 'fspath' - -try: - from os import fsencode # pylint: disable=unused-import,no-name-in-module -except ImportError: - encoding = sys.getfilesystemencoding() or ('utf-8' if not WIN else 'mbcs') - errors = 'strict' if WIN and encoding == 'mbcs' else 'surrogateescape' - - # Added in 3.2, so this is for Python 2.7. Note that it doesn't have - # sys.getfilesystemencodeerrors(), which was added in 3.6 - def fsencode(filename): - """Encode filename (an os.PathLike, bytes, or str) to the filesystem - encoding with 'surrogateescape' error handler, return bytes unchanged. - On Windows, use 'strict' error handler if the file system encoding is - 'mbcs' (which is the default encoding). - """ - filename = fspath(filename) # Does type-checking of `filename`. - if isinstance(filename, bytes): - return filename - - try: - return filename.encode(encoding, errors) - except LookupError: - # Can't encode it, and the error handler doesn't - # exist. Probably on Python 2 with an astral character. - # Not sure how to handle this. - raise UnicodeEncodeError("Can't encode path to filesystem encoding") - - -## Clocks -try: - # Python 3.3+ (PEP 418) - from time import perf_counter - perf_counter = perf_counter -except ImportError: - import time - - if sys.platform == "win32": - perf_counter = time.clock - else: - perf_counter = time.time diff --git a/python/gevent/_config.py b/python/gevent/_config.py deleted file mode 100644 index aaf74e6..0000000 --- a/python/gevent/_config.py +++ /dev/null @@ -1,709 +0,0 @@ -# Copyright (c) 2018 gevent. See LICENSE for details. -""" -gevent tunables. - -This should be used as ``from gevent import config``. That variable -is an object of :class:`Config`. - -.. versionadded:: 1.3a2 -""" - -from __future__ import print_function, absolute_import, division - -import importlib -import os -import sys -import textwrap - -from gevent._compat import string_types -from gevent._compat import WIN - -__all__ = [ - 'config', -] - -ALL_SETTINGS = [] - -class SettingType(type): - # pylint:disable=bad-mcs-classmethod-argument - - def __new__(cls, name, bases, cls_dict): - if name == 'Setting': - return type.__new__(cls, name, bases, cls_dict) - - cls_dict["order"] = len(ALL_SETTINGS) - if 'name' not in cls_dict: - cls_dict['name'] = name.lower() - - if 'environment_key' not in cls_dict: - cls_dict['environment_key'] = 'GEVENT_' + cls_dict['name'].upper() - - - new_class = type.__new__(cls, name, bases, cls_dict) - new_class.fmt_desc(cls_dict.get("desc", "")) - new_class.__doc__ = new_class.desc - ALL_SETTINGS.append(new_class) - - if new_class.document: - setting_name = cls_dict['name'] - - def getter(self): - return self.settings[setting_name].get() - - def setter(self, value): # pragma: no cover - # The setter should never be hit, Config has a - # __setattr__ that would override. But for the sake - # of consistency we provide one. - self.settings[setting_name].set(value) - - prop = property(getter, setter, doc=new_class.__doc__) - - setattr(Config, cls_dict['name'], prop) - return new_class - - def fmt_desc(cls, desc): - desc = textwrap.dedent(desc).strip() - if hasattr(cls, 'shortname_map'): - desc += ( - "\n\nThis is an importable value. It can be " - "given as a string naming an importable object, " - "or a list of strings in preference order and the first " - "successfully importable object will be used. (Separate values " - "in the environment variable with commas.) " - "It can also be given as the callable object itself (in code). " - ) - if cls.shortname_map: - desc += "Shorthand names for default objects are %r" % (list(cls.shortname_map),) - if getattr(cls.validate, '__doc__'): - desc += '\n\n' + textwrap.dedent(cls.validate.__doc__).strip() - if isinstance(cls.default, str) and hasattr(cls, 'shortname_map'): - default = "`%s`" % (cls.default,) - else: - default = "`%r`" % (cls.default,) - desc += "\n\nThe default value is %s" % (default,) - desc += ("\n\nThe environment variable ``%s`` " - "can be used to control this." % (cls.environment_key,)) - setattr(cls, "desc", desc) - return desc - -def validate_invalid(value): - raise ValueError("Not a valid value: %r" % (value,)) - -def validate_bool(value): - """ - This is a boolean value. - - In the environment variable, it may be given as ``1``, ``true``, - ``on`` or ``yes`` for `True`, or ``0``, ``false``, ``off``, or - ``no`` for `False`. - """ - if isinstance(value, string_types): - value = value.lower().strip() - if value in ('1', 'true', 'on', 'yes'): - value = True - elif value in ('0', 'false', 'off', 'no') or not value: - value = False - else: - raise ValueError("Invalid boolean string: %r" % (value,)) - return bool(value) - -def validate_anything(value): - return value - -convert_str_value_as_is = validate_anything - -class Setting(object): - name = None - value = None - validate = staticmethod(validate_invalid) - default = None - environment_key = None - document = True - - desc = """\ - - A long ReST description. - - The first line should be a single sentence. - - """ - - def _convert(self, value): - if isinstance(value, string_types): - return value.split(',') - return value - - def _default(self): - result = os.environ.get(self.environment_key, self.default) - result = self._convert(result) - return result - - def get(self): - # If we've been specifically set, return it - if 'value' in self.__dict__: - return self.value - # Otherwise, read from the environment and reify - # so we return consistent results. - self.value = self.validate(self._default()) - return self.value - - def set(self, val): - self.value = self.validate(self._convert(val)) - - -Setting = SettingType('Setting', (Setting,), dict(Setting.__dict__)) - -def make_settings(): - """ - Return fresh instances of all classes defined in `ALL_SETTINGS`. - """ - settings = {} - for setting_kind in ALL_SETTINGS: - setting = setting_kind() - assert setting.name not in settings - settings[setting.name] = setting - return settings - - -class Config(object): - """ - Global configuration for gevent. - - There is one instance of this object at ``gevent.config``. If you - are going to make changes in code, instead of using the documented - environment variables, you need to make the changes before using - any parts of gevent that might need those settings. For example:: - - >>> from gevent import config - >>> config.fileobject = 'thread' - - >>> from gevent import fileobject - >>> fileobject.FileObject.__name__ - 'FileObjectThread' - - .. versionadded:: 1.3a2 - - """ - - def __init__(self): - self.settings = make_settings() - - def __getattr__(self, name): - if name not in self.settings: - raise AttributeError("No configuration setting for: %r" % name) - return self.settings[name].get() - - def __setattr__(self, name, value): - if name != "settings" and name in self.settings: - self.set(name, value) - else: - super(Config, self).__setattr__(name, value) - - def set(self, name, value): - if name not in self.settings: - raise AttributeError("No configuration setting for: %r" % name) - self.settings[name].set(value) - - def __dir__(self): - return list(self.settings) - - -class ImportableSetting(object): - - def _import(self, path, _NONE=object): - # pylint:disable=too-many-branches - if isinstance(path, list): - if not path: - raise ImportError('Cannot import from empty list: %r' % (path, )) - - for item in path[:-1]: - try: - return self._import(item) - except ImportError: - pass - - return self._import(path[-1]) - - if not isinstance(path, string_types): - return path - - if '.' not in path: - raise ImportError("Cannot import %r. " - "Required format: [path/][package.]module.class. " - "Or choose from %r" - % (path, list(self.shortname_map))) - - if '/' in path: - # This is dangerous, subject to race conditions, and - # may not work properly for things like namespace packages - import warnings - warnings.warn("Absolute paths are deprecated and will be removed in 1.4." - "Please put the package on sys.path first", - DeprecationWarning) - package_path, path = path.rsplit('/', 1) - sys.path = [package_path] + sys.path - else: - package_path = None - - try: - module, item = path.rsplit('.', 1) - module = importlib.import_module(module) - x = getattr(module, item, _NONE) - if x is _NONE: - raise ImportError('Cannot import %r from %r' % (item, module)) - return x - finally: - if package_path: - try: - sys.path.remove(package_path) - except ValueError: # pragma: no cover - pass - - shortname_map = {} - - def validate(self, value): - if isinstance(value, type): - return value - return self._import([self.shortname_map.get(x, x) for x in value]) - -class BoolSettingMixin(object): - validate = staticmethod(validate_bool) - # Don't do string-to-list conversion. - _convert = staticmethod(convert_str_value_as_is) - -class IntSettingMixin(object): - # Don't do string-to-list conversion. - def _convert(self, value): - if value: - return int(value) - - validate = staticmethod(validate_anything) - - -class _PositiveValueMixin(object): - - def validate(self, value): - if value is not None and value <= 0: - raise ValueError("Must be positive") - return value - - -class FloatSettingMixin(_PositiveValueMixin): - def _convert(self, value): - if value: - return float(value) - - -class ByteCountSettingMixin(_PositiveValueMixin): - - _MULTIPLES = { - # All keys must be the same size. - 'kb': 1024, - 'mb': 1024 * 1024, - 'gb': 1024 * 1024 * 1024, - } - - _SUFFIX_SIZE = 2 - - def _convert(self, value): - if not value or not isinstance(value, str): - return value - value = value.lower() - for s, m in self._MULTIPLES.items(): - if value[-self._SUFFIX_SIZE:] == s: - return int(value[:-self._SUFFIX_SIZE]) * m - return int(value) - - -class Resolver(ImportableSetting, Setting): - - desc = """\ - The callable that will be used to create - :attr:`gevent.hub.Hub.resolver`. - - See :doc:`dns` for more information. - """ - - default = [ - 'thread', - 'dnspython', - 'ares', - 'block', - ] - - shortname_map = { - 'ares': 'gevent.resolver.ares.Resolver', - 'thread': 'gevent.resolver.thread.Resolver', - 'block': 'gevent.resolver.blocking.Resolver', - 'dnspython': 'gevent.resolver.dnspython.Resolver', - } - - - -class Threadpool(ImportableSetting, Setting): - - desc = """\ - The kind of threadpool we use. - """ - - default = 'gevent.threadpool.ThreadPool' - - -class Loop(ImportableSetting, Setting): - - desc = """\ - The kind of the loop we use. - - On Windows, this defaults to libuv, while on - other platforms it defaults to libev. - - """ - - default = [ - 'libev-cext', - 'libev-cffi', - 'libuv-cffi', - ] if not WIN else [ - 'libuv-cffi', - 'libev-cext', - 'libev-cffi', - ] - - shortname_map = { - 'libev-cext': 'gevent.libev.corecext.loop', - 'libev-cffi': 'gevent.libev.corecffi.loop', - 'libuv-cffi': 'gevent.libuv.loop.loop', - } - - shortname_map['libuv'] = shortname_map['libuv-cffi'] - - -class FormatContext(ImportableSetting, Setting): - name = 'format_context' - - # using pprint.pformat can override custom __repr__ methods on dict/list - # subclasses, which can be a security concern - default = 'pprint.saferepr' - - -class LibevBackend(Setting): - name = 'libev_backend' - environment_key = 'GEVENT_BACKEND' - - desc = """\ - The backend for libev, such as 'select' - """ - - default = None - - validate = staticmethod(validate_anything) - - -class FileObject(ImportableSetting, Setting): - desc = """\ - The kind of ``FileObject`` we will use. - - See :mod:`gevent.fileobject` for a detailed description. - - """ - environment_key = 'GEVENT_FILE' - - default = [ - 'posix', - 'thread', - ] - - shortname_map = { - 'thread': 'gevent._fileobjectcommon.FileObjectThread', - 'posix': 'gevent._fileobjectposix.FileObjectPosix', - 'block': 'gevent._fileobjectcommon.FileObjectBlock' - } - - -class WatchChildren(BoolSettingMixin, Setting): - desc = """\ - Should we *not* watch children with the event loop watchers? - - This is an advanced setting. - - See :mod:`gevent.os` for a detailed description. - """ - name = 'disable_watch_children' - environment_key = 'GEVENT_NOWAITPID' - default = False - - -class TraceMalloc(IntSettingMixin, Setting): - name = 'trace_malloc' - environment_key = 'PYTHONTRACEMALLOC' - default = False - - desc = """\ - Should FFI objects track their allocation? - - This is only useful for low-level debugging. - - On Python 3, this environment variable is built in to the - interpreter, and it may also be set with the ``-X - tracemalloc`` command line argument. - - On Python 2, gevent interprets this argument and adds extra - tracking information for FFI objects. - """ - - -class TrackGreenletTree(BoolSettingMixin, Setting): - name = 'track_greenlet_tree' - environment_key = 'GEVENT_TRACK_GREENLET_TREE' - default = True - - desc = """\ - Should `Greenlet` objects track their spawning tree? - - Setting this to a false value will make spawning `Greenlet` - objects and using `spawn_raw` faster, but the - ``spawning_greenlet``, ``spawn_tree_locals`` and ``spawning_stack`` - will not be captured. - - .. versionadded:: 1.3b1 - """ - - -## Monitoring settings -# All env keys should begin with GEVENT_MONITOR - -class MonitorThread(BoolSettingMixin, Setting): - name = 'monitor_thread' - environment_key = 'GEVENT_MONITOR_THREAD_ENABLE' - default = False - - desc = """\ - Should each hub start a native OS thread to monitor - for problems? - - Such a thread will periodically check to see if the event loop - is blocked for longer than `max_blocking_time`, producing output on - the hub's exception stream (stderr by default) if it detects this condition. - - If this setting is true, then this thread will be created - the first time the hub is switched to, - or you can call :meth:`gevent.hub.Hub.start_periodic_monitoring_thread` at any - time to create it (from the same thread that will run the hub). That function - will return an instance of :class:`gevent.events.IPeriodicMonitorThread` - to which you can add your own monitoring functions. That function - also emits an event of :class:`gevent.events.PeriodicMonitorThreadStartedEvent`. - - .. seealso:: `max_blocking_time` - - .. versionadded:: 1.3b1 - """ - -class MaxBlockingTime(FloatSettingMixin, Setting): - name = 'max_blocking_time' - # This environment key doesn't follow the convention because it's - # meant to match a key used by existing projects - environment_key = 'GEVENT_MAX_BLOCKING_TIME' - default = 0.1 - - desc = """\ - If the `monitor_thread` is enabled, this is - approximately how long (in seconds) - the event loop will be allowed to block before a warning is issued. - - This function depends on using `greenlet.settrace`, so installing - your own trace function after starting the monitoring thread will - cause this feature to misbehave unless you call the function - returned by `greenlet.settrace`. If you install a tracing function *before* - the monitoring thread is started, it will still be called. - - .. note:: In the unlikely event of creating and using multiple different - gevent hubs in the same native thread in a short period of time, - especially without destroying the hubs, false positives may be reported. - - .. versionadded:: 1.3b1 - """ - -class MonitorMemoryPeriod(FloatSettingMixin, Setting): - name = 'memory_monitor_period' - - environment_key = 'GEVENT_MONITOR_MEMORY_PERIOD' - default = 5 - - desc = """\ - If `monitor_thread` is enabled, this is approximately how long - (in seconds) we will go between checking the processes memory usage. - - Checking the memory usage is relatively expensive on some operating - systems, so this should not be too low. gevent will place a floor - value on it. - """ - -class MonitorMemoryMaxUsage(ByteCountSettingMixin, Setting): - name = 'max_memory_usage' - - environment_key = 'GEVENT_MONITOR_MEMORY_MAX' - default = None - - desc = """\ - If `monitor_thread` is enabled, - then if memory usage exceeds this amount (in bytes), events will - be emitted. See `gevent.events`. In the environment variable, you can use - a suffix of 'kb', 'mb' or 'gb' to specify the value in kilobytes, megabytes - or gigibytes. - - There is no default value for this setting. If you wish to - cap memory usage, you must choose a value. - """ - -# The ares settings are all interpreted by -# gevent/resolver/ares.pyx, so we don't do -# any validation here. - -class AresSettingMixin(object): - - document = False - - @property - def kwarg_name(self): - return self.name[5:] - - validate = staticmethod(validate_anything) - - _convert = staticmethod(convert_str_value_as_is) - -class AresFlags(AresSettingMixin, Setting): - name = 'ares_flags' - default = None - environment_key = 'GEVENTARES_FLAGS' - -class AresTimeout(AresSettingMixin, Setting): - document = True - name = 'ares_timeout' - default = None - environment_key = 'GEVENTARES_TIMEOUT' - desc = """\ - - .. deprecated:: 1.3a2 - Prefer the :attr:`resolver_timeout` setting. If both are set, - the results are not defined. - """ - -class AresTries(AresSettingMixin, Setting): - name = 'ares_tries' - default = None - environment_key = 'GEVENTARES_TRIES' - -class AresNdots(AresSettingMixin, Setting): - name = 'ares_ndots' - default = None - environment_key = 'GEVENTARES_NDOTS' - -class AresUDPPort(AresSettingMixin, Setting): - name = 'ares_udp_port' - default = None - environment_key = 'GEVENTARES_UDP_PORT' - -class AresTCPPort(AresSettingMixin, Setting): - name = 'ares_tcp_port' - default = None - environment_key = 'GEVENTARES_TCP_PORT' - -class AresServers(AresSettingMixin, Setting): - document = True - name = 'ares_servers' - default = None - environment_key = 'GEVENTARES_SERVERS' - desc = """\ - A list of strings giving the IP addresses of nameservers for the ares resolver. - - In the environment variable, these strings are separated by commas. - - .. deprecated:: 1.3a2 - Prefer the :attr:`resolver_nameservers` setting. If both are set, - the results are not defined. - """ - -# Generic nameservers, works for dnspython and ares. -class ResolverNameservers(AresSettingMixin, Setting): - document = True - name = 'resolver_nameservers' - default = None - environment_key = 'GEVENT_RESOLVER_NAMESERVERS' - desc = """\ - A list of strings giving the IP addresses of nameservers for the (non-system) resolver. - - In the environment variable, these strings are separated by commas. - - .. rubric:: Resolver Behaviour - - * blocking - - Ignored - - * Threaded - - Ignored - - * dnspython - - If this setting is not given, the dnspython resolver will - load nameservers to use from ``/etc/resolv.conf`` - or the Windows registry. This setting replaces any nameservers read - from those means. Note that the file and registry are still read - for other settings. - - .. caution:: dnspython does not validate the members of the list. - An improper address (such as a hostname instead of IP) has - undefined results, including hanging the process. - - * ares - - Similar to dnspython, but with more platform and compile-time - options. ares validates that the members of the list are valid - addresses. - """ - - # Normal string-to-list rules. But still validate_anything. - _convert = Setting._convert - - # TODO: In the future, support reading a resolv.conf file - # *other* than /etc/resolv.conf, and do that both on Windows - # and other platforms. Also offer the option to disable the system - # configuration entirely. - - @property - def kwarg_name(self): - return 'servers' - -# Generic timeout, works for dnspython and ares -class ResolverTimeout(FloatSettingMixin, AresSettingMixin, Setting): - document = True - name = 'resolver_timeout' - environment_key = 'GEVENT_RESOLVER_TIMEOUT' - desc = """\ - The total amount of time that the DNS resolver will spend making queries. - - Only the ares and dnspython resolvers support this. - - .. versionadded:: 1.3a2 - """ - - @property - def kwarg_name(self): - return 'timeout' - -config = Config() - -# Go ahead and attempt to import the loop when this class is -# instantiated. The hub won't work if the loop can't be found. This -# can solve problems with the class being imported from multiple -# threads at once, leading to one of the imports failing. -# factories are themselves handled lazily. See #687. - -# Don't cache it though, in case the user re-configures through the -# API. - -try: - Loop().get() -except ImportError: # pragma: no cover - pass diff --git a/python/gevent/_event.cp36-win32.pyd b/python/gevent/_event.cp36-win32.pyd deleted file mode 100644 index e594296913bff44351060c7fcbbc2867ddd40bd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 105984 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 Q(8X$K0~=|+|HJ<N7XbcGZvX%Q diff --git a/python/gevent/_event.pxd b/python/gevent/_event.pxd deleted file mode 100644 index e92e05e..0000000 --- a/python/gevent/_event.pxd +++ /dev/null @@ -1,77 +0,0 @@ -cimport cython - -from gevent.__greenlet_primitives cimport SwitchOutGreenletWithLoop -from gevent.__hub_local cimport get_hub_noargs as get_hub - -cdef _None -cdef reraise -cdef dump_traceback -cdef load_traceback - - -cdef InvalidSwitchError -cdef Timeout -cdef bint _greenlet_imported - -cdef extern from "greenlet/greenlet.h": - - ctypedef class greenlet.greenlet [object PyGreenlet]: - pass - - # These are actually macros and so much be included - # (defined) in each .pxd, as are the two functions - # that call them. - greenlet PyGreenlet_GetCurrent() - void PyGreenlet_Import() - -cdef inline greenlet getcurrent(): - return PyGreenlet_GetCurrent() - -cdef inline void greenlet_init(): - global _greenlet_imported - if not _greenlet_imported: - PyGreenlet_Import() - _greenlet_imported = True - -cdef void _init() - -cdef class _AbstractLinkable: - # We declare the __weakref__ here in the base (even though - # that's not really what we want) as a workaround for a Cython - # issue we see reliably on 3.7b4 and sometimes on 3.6. See - # https://github.com/cython/cython/issues/2270 - cdef object __weakref__ - cdef _notifier - cdef set _links - cdef readonly SwitchOutGreenletWithLoop hub - - cpdef rawlink(self, callback) - cpdef bint ready(self) - cpdef unlink(self, callback) - - cdef _check_and_notify(self) - @cython.locals(todo=set) - cpdef _notify_links(self) - cdef _wait_core(self, timeout, catch=*) - cdef _wait_return_value(self, waited, wait_success) - cdef _wait(self, timeout=*) - - -cdef class Event(_AbstractLinkable): - cdef bint _flag - -cdef class AsyncResult(_AbstractLinkable): - cdef readonly _value - cdef readonly tuple _exc_info - - # For the use of _imap.py - cdef public int _imap_task_index - - cpdef get(self, block=*, timeout=*) - cpdef bint successful(self) - - cpdef wait(self, timeout=*) - cpdef bint done(self) - - cpdef bint cancel(self) - cpdef bint cancelled(self) diff --git a/python/gevent/_ffi/__init__.py b/python/gevent/_ffi/__init__.py deleted file mode 100644 index 56f1e96..0000000 --- a/python/gevent/_ffi/__init__.py +++ /dev/null @@ -1,27 +0,0 @@ -""" -Internal helpers for FFI implementations. -""" -from __future__ import print_function, absolute_import - -import os -import sys - -def _dbg(*args, **kwargs): - # pylint:disable=unused-argument - pass - -#_dbg = print - -def _pid_dbg(*args, **kwargs): - kwargs['file'] = sys.stderr - print(os.getpid(), *args, **kwargs) - -CRITICAL = 1 -ERROR = 3 -DEBUG = 5 -TRACE = 9 - -GEVENT_DEBUG_LEVEL = vars()[os.getenv("GEVENT_DEBUG", 'CRITICAL').upper()] - -if GEVENT_DEBUG_LEVEL >= TRACE: - _dbg = _pid_dbg diff --git a/python/gevent/_ffi/callback.py b/python/gevent/_ffi/callback.py deleted file mode 100644 index df59a9f..0000000 --- a/python/gevent/_ffi/callback.py +++ /dev/null @@ -1,58 +0,0 @@ -from __future__ import absolute_import, print_function - -__all__ = [ - 'callback', -] - - -# For times when *args is captured but often not passed (empty), -# we can avoid keeping the new tuple that was created for *args -# around by using a constant. -_NOARGS = () - - -class callback(object): - - __slots__ = ('callback', 'args') - - def __init__(self, cb, args): - self.callback = cb - self.args = args or _NOARGS - - def stop(self): - self.callback = None - self.args = None - - close = stop - - # Note that __nonzero__ and pending are different - # bool() is used in contexts where we need to know whether to schedule another callback, - # so it's true if it's pending or currently running - # 'pending' has the same meaning as libev watchers: it is cleared before actually - # running the callback - - def __nonzero__(self): - # it's nonzero if it's pending or currently executing - # NOTE: This depends on loop._run_callbacks setting the args property - # to None. - return self.args is not None - __bool__ = __nonzero__ - - @property - def pending(self): - return self.callback is not None - - def _format(self): - return '' - - def __repr__(self): - result = "<%s at 0x%x" % (self.__class__.__name__, id(self)) - if self.pending: - result += " pending" - if self.callback is not None: - result += " callback=%r" % (self.callback, ) - if self.args is not None: - result += " args=%r" % (self.args, ) - if self.callback is None and self.args is None: - result += " stopped" - return result + ">" diff --git a/python/gevent/_ffi/loop.py b/python/gevent/_ffi/loop.py deleted file mode 100644 index efe4462..0000000 --- a/python/gevent/_ffi/loop.py +++ /dev/null @@ -1,709 +0,0 @@ -""" -Basic loop implementation for ffi-based cores. -""" -# pylint: disable=too-many-lines, protected-access, redefined-outer-name, not-callable -from __future__ import absolute_import, print_function - -from collections import deque -import sys -import os -import traceback - -from gevent._ffi import _dbg -from gevent._ffi import GEVENT_DEBUG_LEVEL -from gevent._ffi import TRACE -from gevent._ffi.callback import callback -from gevent._compat import PYPY - -from gevent import getswitchinterval - -__all__ = [ - 'AbstractLoop', - 'assign_standard_callbacks', -] - - -class _EVENTSType(object): - def __repr__(self): - return 'gevent.core.EVENTS' - -EVENTS = GEVENT_CORE_EVENTS = _EVENTSType() - - -##### -## Note on CFFI objects, callbacks and the lifecycle of watcher objects -# -# Each subclass of `watcher` allocates a C structure of the -# appropriate type e.g., struct gevent_ev_io and holds this pointer in -# its `_gwatcher` attribute. When that watcher instance is garbage -# collected, then the C structure is also freed. The C structure is -# passed to libev from the watcher's start() method and then to the -# appropriate C callback function, e.g., _gevent_ev_io_callback, which -# passes it back to python's _python_callback where we need the -# watcher instance. Therefore, as long as that callback is active (the -# watcher is started), the watcher instance must not be allowed to get -# GC'd---any access at the C level or even the FFI level to the freed -# memory could crash the process. -# -# However, the typical idiom calls for writing something like this: -# loop.io(fd, python_cb).start() -# thus forgetting the newly created watcher subclass and allowing it to be immediately -# GC'd. To combat this, when the watcher is started, it places itself into the loop's -# `_keepaliveset`, and it only removes itself when the watcher's `stop()` method is called. -# Often, this is the *only* reference keeping the watcher object, and hence its C structure, -# alive. -# -# This is slightly complicated by the fact that the python-level -# callback, called from the C callback, could choose to manually stop -# the watcher. When we return to the C level callback, we now have an -# invalid pointer, and attempting to pass it back to Python (e.g., to -# handle an error) could crash. Hence, _python_callback, -# _gevent_io_callback, and _python_handle_error cooperate to make sure -# that the watcher instance stays in the loops `_keepaliveset` while -# the C code could be running---and if it gets removed, to not call back -# to Python again. -# See also https://github.com/gevent/gevent/issues/676 -#### -class AbstractCallbacks(object): - - - def __init__(self, ffi): - self.ffi = ffi - self.callbacks = [] - if GEVENT_DEBUG_LEVEL < TRACE: - self.from_handle = ffi.from_handle - - def from_handle(self, handle): # pylint:disable=method-hidden - x = self.ffi.from_handle(handle) - return x - - def python_callback(self, handle, revents): - """ - Returns an integer having one of three values: - - - -1 - An exception occurred during the callback and you must call - :func:`_python_handle_error` to deal with it. The Python watcher - object will have the exception tuple saved in ``_exc_info``. - - 1 - Everything went according to plan. You should check to see if the libev - watcher is still active, and call :func:`python_stop` if it is not. This will - clean up the memory. Finding the watcher still active at the event loop level, - but not having stopped itself at the gevent level is a buggy scenario and - shouldn't happen. - - 2 - Everything went according to plan, but the watcher has already - been stopped. Its memory may no longer be valid. - - This function should never return 0, as that's the default value that - Python exceptions will produce. - """ - #print("Running callback", handle) - orig_ffi_watcher = None - try: - # Even dereferencing the handle needs to be inside the try/except; - # if we don't return normally (e.g., a signal) then we wind up going - # to the 'onerror' handler (unhandled_onerror), which - # is not what we want; that can permanently wedge the loop depending - # on which callback was executing. - # XXX: See comments in that function. We may be able to restart and do better? - if not handle: - # Hmm, a NULL handle. That's not supposed to happen. - # We can easily get into a loop if we deref it and allow that - # to raise. - _dbg("python_callback got null handle") - return 1 - the_watcher = self.from_handle(handle) - orig_ffi_watcher = the_watcher._watcher - args = the_watcher.args - if args is None: - # Legacy behaviour from corecext: convert None into () - # See test__core_watcher.py - args = _NOARGS - if args and args[0] == GEVENT_CORE_EVENTS: - args = (revents, ) + args[1:] - #print("Calling function", the_watcher.callback, args) - the_watcher.callback(*args) - except: # pylint:disable=bare-except - _dbg("Got exception servicing watcher with handle", handle, sys.exc_info()) - # It's possible for ``the_watcher`` to be undefined (UnboundLocalError) - # if we threw an exception (signal) on the line that created that variable. - # This is typically the case with a signal under libuv - try: - the_watcher - except UnboundLocalError: - the_watcher = self.from_handle(handle) - the_watcher._exc_info = sys.exc_info() - # Depending on when the exception happened, the watcher - # may or may not have been stopped. We need to make sure its - # memory stays valid so we can stop it at the ev level if needed. - the_watcher.loop._keepaliveset.add(the_watcher) - return -1 - else: - if (the_watcher.loop is not None - and the_watcher in the_watcher.loop._keepaliveset - and the_watcher._watcher is orig_ffi_watcher): - # It didn't stop itself, *and* it didn't stop itself, reset - # its watcher, and start itself again. libuv's io watchers MAY - # do that. - # The normal, expected scenario when we find the watcher still - # in the keepaliveset is that it is still active at the event loop - # level, so we don't expect that python_stop gets called. - #_dbg("The watcher has not stopped itself, possibly still active", the_watcher) - return 1 - return 2 # it stopped itself - - def python_handle_error(self, handle, _revents): - _dbg("Handling error for handle", handle) - if not handle: - return - try: - watcher = self.from_handle(handle) - exc_info = watcher._exc_info - del watcher._exc_info - # In the past, we passed the ``watcher`` itself as the context, - # which typically meant that the Hub would just print - # the exception. This is a problem because sometimes we can't - # detect signals until late in ``python_callback``; specifically, - # test_selectors.py:DefaultSelectorTest.test_select_interrupt_exc - # installs a SIGALRM handler that raises an exception. That exception can happen - # before we enter ``python_callback`` or at any point within it because of the way - # libuv swallows signals. By passing None, we get the exception prapagated into - # the main greenlet (which is probably *also* not what we always want, but - # I see no way to distinguish the cases). - watcher.loop.handle_error(None, *exc_info) - finally: - # XXX Since we're here on an error condition, and we - # made sure that the watcher object was put in loop._keepaliveset, - # what about not stopping the watcher? Looks like a possible - # memory leak? - # XXX: This used to do "if revents & (libev.EV_READ | libev.EV_WRITE)" - # before stopping. Why? - try: - watcher.stop() - except: # pylint:disable=bare-except - watcher.loop.handle_error(watcher, *sys.exc_info()) - return # pylint:disable=lost-exception - - def unhandled_onerror(self, t, v, tb): - # This is supposed to be called for signals, etc. - # This is the onerror= value for CFFI. - # If we return None, C will get a value of 0/NULL; - # if we raise, CFFI will print the exception and then - # return 0/NULL; (unless error= was configured) - # If things go as planned, we return the value that asks - # C to call back and check on if the watcher needs to be closed or - # not. - - # XXX: TODO: Could this cause events to be lost? Maybe we need to return - # a value that causes the C loop to try the callback again? - # at least for signals under libuv, which are delivered at very odd times. - # Hopefully the event still shows up when we poll the next time. - watcher = None - handle = tb.tb_frame.f_locals['handle'] if tb is not None else None - if handle: # handle could be NULL - watcher = self.from_handle(handle) - if watcher is not None: - watcher.loop.handle_error(None, t, v, tb) - return 1 - - # Raising it causes a lot of noise from CFFI - print("WARNING: gevent: Unhandled error with no watcher", - file=sys.stderr) - traceback.print_exception(t, v, tb) - - def python_stop(self, handle): - if not handle: # pragma: no cover - print( - "WARNING: gevent: Unable to dereference handle; not stopping watcher. " - "Native resources may leak. This is most likely a bug in gevent.", - file=sys.stderr) - # The alternative is to crash with no helpful information - # NOTE: Raising exceptions here does nothing, they're swallowed by CFFI. - # Since the C level passed in a null pointer, even dereferencing the handle - # will just produce some exceptions. - return - watcher = self.from_handle(handle) - watcher.stop() - - if not PYPY: - def python_check_callback(self, watcher_ptr): # pylint:disable=unused-argument - # If we have the onerror callback, this is a no-op; all the real - # work to rethrow the exception is done by the onerror callback - - # NOTE: Unlike the rest of the functions, this is called with a pointer - # to the C level structure, *not* a pointer to the void* that represents a - # <cdata> for the Python Watcher object. - pass - else: # PyPy - # On PyPy, we need the function to have some sort of body, otherwise - # the signal exceptions don't always get caught, *especially* with - # libuv (however, there's no reason to expect this to only be a libuv - # issue; it's just that we don't depend on the periodic signal timer - # under libev, so the issue is much more pronounced under libuv) - # test_socket's test_sendall_interrupted can hang. - # See https://github.com/gevent/gevent/issues/1112 - - def python_check_callback(self, watcher_ptr): # pylint:disable=unused-argument - # Things we've tried that *don't* work: - # greenlet.getcurrent() - # 1 + 1 - try: - raise MemoryError() - except MemoryError: - pass - - def python_prepare_callback(self, watcher_ptr): - loop = self._find_loop_from_c_watcher(watcher_ptr) - if loop is None: # pragma: no cover - print("WARNING: gevent: running prepare callbacks from a destroyed handle: ", - watcher_ptr) - return - loop._run_callbacks() - - def check_callback_onerror(self, t, v, tb): - watcher_ptr = tb.tb_frame.f_locals['watcher_ptr'] if tb is not None else None - if watcher_ptr: - loop = self._find_loop_from_c_watcher(watcher_ptr) - if loop is not None: - # None as the context argument causes the exception to be raised - # in the main greenlet. - loop.handle_error(None, t, v, tb) - return None - raise v # Let CFFI print - - def _find_loop_from_c_watcher(self, watcher_ptr): - raise NotImplementedError() - - - -def assign_standard_callbacks(ffi, lib, callbacks_class, extras=()): # pylint:disable=unused-argument - # callbacks keeps these cdata objects alive at the python level - callbacks = callbacks_class(ffi) - extras = tuple([(getattr(callbacks, name), error) for name, error in extras]) - for (func, error_func) in ((callbacks.python_callback, None), - (callbacks.python_handle_error, None), - (callbacks.python_stop, None), - (callbacks.python_check_callback, - callbacks.check_callback_onerror), - (callbacks.python_prepare_callback, - callbacks.check_callback_onerror)) + extras: - # The name of the callback function matches the 'extern Python' declaration. - error_func = error_func or callbacks.unhandled_onerror - callback = ffi.def_extern(onerror=error_func)(func) - # keep alive the cdata - # (def_extern returns the original function, and it requests that - # the function be "global", so maybe it keeps a hard reference to it somewhere now - # unlike ffi.callback(), and we don't need to do this?) - callbacks.callbacks.append(callback) - - # At this point, the library C variable (static function, actually) - # is filled in. - - return callbacks - - -if sys.version_info[0] >= 3: - basestring = (bytes, str) - integer_types = (int,) -else: - import __builtin__ # pylint:disable=import-error - basestring = (__builtin__.basestring,) - integer_types = (int, __builtin__.long) - - - - -_NOARGS = () - -CALLBACK_CHECK_COUNT = 50 - -class AbstractLoop(object): - # pylint:disable=too-many-public-methods,too-many-instance-attributes - - error_handler = None - - _CHECK_POINTER = None - - _TIMER_POINTER = None - _TIMER_CALLBACK_SIG = None - - _PREPARE_POINTER = None - - starting_timer_may_update_loop_time = False - - # Subclasses should set this in __init__ to reflect - # whether they were the default loop. - _default = None - - def __init__(self, ffi, lib, watchers, flags=None, default=None): - self._ffi = ffi - self._lib = lib - self._ptr = None - self._handle_to_self = self._ffi.new_handle(self) # XXX: Reference cycle? - self._watchers = watchers - self._in_callback = False - self._callbacks = deque() - # Stores python watcher objects while they are started - self._keepaliveset = set() - self._init_loop_and_aux_watchers(flags, default) - - - def _init_loop_and_aux_watchers(self, flags=None, default=None): - - self._ptr = self._init_loop(flags, default) - - - # self._check is a watcher that runs in each iteration of the - # mainloop, just after the blocking call. It's point is to handle - # signals. It doesn't run watchers or callbacks, it just exists to give - # CFFI a chance to raise signal exceptions so we can handle them. - self._check = self._ffi.new(self._CHECK_POINTER) - self._check.data = self._handle_to_self - self._init_and_start_check() - - # self._prepare is a watcher that runs in each iteration of the mainloop, - # just before the blocking call. It's where we run deferred callbacks - # from self.run_callback. This cooperates with _setup_for_run_callback() - # to schedule self._timer0 if needed. - self._prepare = self._ffi.new(self._PREPARE_POINTER) - self._prepare.data = self._handle_to_self - self._init_and_start_prepare() - - # A timer we start and stop on demand. If we have callbacks, - # too many to run in one iteration of _run_callbacks, we turn this - # on so as to have the next iteration of the run loop return to us - # as quickly as possible. - # TODO: There may be a more efficient way to do this using ev_timer_again; - # see the "ev_timer" section of the ev manpage (http://linux.die.net/man/3/ev) - # Alternatively, setting the ev maximum block time may also work. - self._timer0 = self._ffi.new(self._TIMER_POINTER) - self._timer0.data = self._handle_to_self - self._init_callback_timer() - - # TODO: We may be able to do something nicer and use the existing python_callback - # combined with onerror and the class check/timer/prepare to simplify things - # and unify our handling - - def _init_loop(self, flags, default): - """ - Called by __init__ to create or find the loop. The return value - is assigned to self._ptr. - """ - raise NotImplementedError() - - def _init_and_start_check(self): - raise NotImplementedError() - - def _init_and_start_prepare(self): - raise NotImplementedError() - - def _init_callback_timer(self): - raise NotImplementedError() - - def _stop_callback_timer(self): - raise NotImplementedError() - - def _start_callback_timer(self): - raise NotImplementedError() - - def _check_callback_handle_error(self, t, v, tb): - self.handle_error(None, t, v, tb) - - def _run_callbacks(self): # pylint:disable=too-many-branches - # When we're running callbacks, its safe for timers to - # update the notion of the current time (because if we're here, - # we're not running in a timer callback that may let other timers - # run; this is mostly an issue for libuv). - - # That's actually a bit of a lie: on libev, self._timer0 really is - # a timer, and so sometimes this is running in a timer callback, not - # a prepare callback. But that's OK, libev doesn't suffer from cascading - # timer expiration and its safe to update the loop time at any - # moment there. - self.starting_timer_may_update_loop_time = True - try: - count = CALLBACK_CHECK_COUNT - now = self.now() - expiration = now + getswitchinterval() - self._stop_callback_timer() - while self._callbacks: - cb = self._callbacks.popleft() # pylint:disable=assignment-from-no-return - count -= 1 - self.unref() # XXX: libuv doesn't have a global ref count! - callback = cb.callback - cb.callback = None - args = cb.args - if callback is None or args is None: - # it's been stopped - continue - - try: - callback(*args) - except: # pylint:disable=bare-except - # If we allow an exception to escape this method (while we are running the ev callback), - # then CFFI will print the error and libev will continue executing. - # There are two problems with this. The first is that the code after - # the loop won't run. The second is that any remaining callbacks scheduled - # for this loop iteration will be silently dropped; they won't run, but they'll - # also not be *stopped* (which is not a huge deal unless you're looking for - # consistency or checking the boolean/pending status; the loop doesn't keep - # a reference to them like it does to watchers...*UNLESS* the callback itself had - # a reference to a watcher; then I don't know what would happen, it depends on - # the state of the watcher---a leak or crash is not totally inconceivable). - # The Cython implementation in core.ppyx uses gevent_call from callbacks.c - # to run the callback, which uses gevent_handle_error to handle any errors the - # Python callback raises...it unconditionally simply prints any error raised - # by loop.handle_error and clears it, so callback handling continues. - # We take a similar approach (but are extra careful about printing) - try: - self.handle_error(cb, *sys.exc_info()) - except: # pylint:disable=bare-except - try: - print("Exception while handling another error", file=sys.stderr) - traceback.print_exc() - except: # pylint:disable=bare-except - pass # Nothing we can do here - finally: - # NOTE: this must be reset here, because cb.args is used as a flag in - # the callback class so that bool(cb) of a callback that has been run - # becomes False - cb.args = None - - # We've finished running one group of callbacks - # but we may have more, so before looping check our - # switch interval. - if count == 0 and self._callbacks: - count = CALLBACK_CHECK_COUNT - self.update_now() - if self.now() >= expiration: - now = 0 - break - - # Update the time before we start going again, if we didn't - # just do so. - if now != 0: - self.update_now() - - if self._callbacks: - self._start_callback_timer() - finally: - self.starting_timer_may_update_loop_time = False - - def _stop_aux_watchers(self): - raise NotImplementedError() - - def destroy(self): - if self._ptr: - try: - if not self._can_destroy_loop(self._ptr): - return False - self._stop_aux_watchers() - self._destroy_loop(self._ptr) - finally: - # not ffi.NULL, we don't want something that can be - # passed to C and crash later. This will create nice friendly - # TypeError from CFFI. - self._ptr = None - del self._handle_to_self - del self._callbacks - del self._keepaliveset - - return True - - def _can_destroy_loop(self, ptr): - raise NotImplementedError() - - def _destroy_loop(self, ptr): - raise NotImplementedError() - - @property - def ptr(self): - return self._ptr - - @property - def WatcherType(self): - return self._watchers.watcher - - @property - def MAXPRI(self): - return 1 - - @property - def MINPRI(self): - return 1 - - def _handle_syserr(self, message, errno): - try: - errno = os.strerror(errno) - except: # pylint:disable=bare-except - traceback.print_exc() - try: - message = '%s: %s' % (message, errno) - except: # pylint:disable=bare-except - traceback.print_exc() - self.handle_error(None, SystemError, SystemError(message), None) - - def handle_error(self, context, type, value, tb): - handle_error = None - error_handler = self.error_handler - if error_handler is not None: - # we do want to do getattr every time so that setting Hub.handle_error property just works - handle_error = getattr(error_handler, 'handle_error', error_handler) - handle_error(context, type, value, tb) - else: - self._default_handle_error(context, type, value, tb) - - def _default_handle_error(self, context, type, value, tb): # pylint:disable=unused-argument - # note: Hub sets its own error handler so this is not used by gevent - # this is here to make core.loop usable without the rest of gevent - # Should cause the loop to stop running. - traceback.print_exception(type, value, tb) - - - def run(self, nowait=False, once=False): - raise NotImplementedError() - - def reinit(self): - raise NotImplementedError() - - def ref(self): - # XXX: libuv doesn't do it this way - raise NotImplementedError() - - def unref(self): - raise NotImplementedError() - - def break_(self, how=None): - raise NotImplementedError() - - def verify(self): - pass - - def now(self): - raise NotImplementedError() - - def update_now(self): - raise NotImplementedError() - - def update(self): - import warnings - warnings.warn("'update' is deprecated; use 'update_now'", - DeprecationWarning, - stacklevel=2) - self.update_now() - - def __repr__(self): - return '<%s at 0x%x %s>' % (self.__class__.__name__, id(self), self._format()) - - @property - def default(self): - return self._default if self._ptr else False - - @property - def iteration(self): - return -1 - - @property - def depth(self): - return -1 - - @property - def backend_int(self): - return 0 - - @property - def backend(self): - return "default" - - @property - def pendingcnt(self): - return 0 - - def io(self, fd, events, ref=True, priority=None): - return self._watchers.io(self, fd, events, ref, priority) - - def timer(self, after, repeat=0.0, ref=True, priority=None): - return self._watchers.timer(self, after, repeat, ref, priority) - - def signal(self, signum, ref=True, priority=None): - return self._watchers.signal(self, signum, ref, priority) - - def idle(self, ref=True, priority=None): - return self._watchers.idle(self, ref, priority) - - def prepare(self, ref=True, priority=None): - return self._watchers.prepare(self, ref, priority) - - def check(self, ref=True, priority=None): - return self._watchers.check(self, ref, priority) - - def fork(self, ref=True, priority=None): - return self._watchers.fork(self, ref, priority) - - def async_(self, ref=True, priority=None): - return self._watchers.async_(self, ref, priority) - - # Provide BWC for those that can use 'async' as is - locals()['async'] = async_ - - if sys.platform != "win32": - - def child(self, pid, trace=0, ref=True): - return self._watchers.child(self, pid, trace, ref) - - def install_sigchld(self): - pass - - def stat(self, path, interval=0.0, ref=True, priority=None): - return self._watchers.stat(self, path, interval, ref, priority) - - def callback(self, priority=None): - return callback(self, priority) - - def _setup_for_run_callback(self): - raise NotImplementedError() - - def run_callback(self, func, *args): - # If we happen to already be running callbacks (inside - # _run_callbacks), this could happen almost immediately, - # without the loop cycling. - cb = callback(func, args) - self._callbacks.append(cb) - self._setup_for_run_callback() - - return cb - - def _format(self): - if not self._ptr: - return 'destroyed' - msg = self.backend - if self.default: - msg += ' default' - msg += ' pending=%s' % self.pendingcnt - msg += self._format_details() - return msg - - def _format_details(self): - msg = '' - fileno = self.fileno() # pylint:disable=assignment-from-none - try: - activecnt = self.activecnt - except AttributeError: - activecnt = None - if activecnt is not None: - msg += ' ref=' + repr(activecnt) - if fileno is not None: - msg += ' fileno=' + repr(fileno) - #if sigfd is not None and sigfd != -1: - # msg += ' sigfd=' + repr(sigfd) - return msg - - def fileno(self): - return None - - @property - def activecnt(self): - if not self._ptr: - raise ValueError('operation on destroyed loop') - return 0 diff --git a/python/gevent/_ffi/watcher.py b/python/gevent/_ffi/watcher.py deleted file mode 100644 index 3f880ce..0000000 --- a/python/gevent/_ffi/watcher.py +++ /dev/null @@ -1,641 +0,0 @@ -""" -Useful base classes for watchers. The available -watchers will depend on the specific event loop. -""" -# pylint:disable=not-callable -from __future__ import absolute_import, print_function - -import signal as signalmodule -import functools -import warnings - -from gevent._config import config - -try: - from tracemalloc import get_object_traceback - - def tracemalloc(init): - # PYTHONTRACEMALLOC env var controls this on Python 3. - return init -except ImportError: # Python < 3.4 - - if config.trace_malloc: - # Use the same env var to turn this on for Python 2 - import traceback - - class _TB(object): - __slots__ = ('lines',) - - def __init__(self, lines): - # These end in newlines, which we don't want for consistency - self.lines = [x.rstrip() for x in lines] - - def format(self): - return self.lines - - def tracemalloc(init): - @functools.wraps(init) - def traces(self, *args, **kwargs): - init(self, *args, **kwargs) - self._captured_malloc = _TB(traceback.format_stack()) - return traces - - def get_object_traceback(obj): - return obj._captured_malloc - - else: - def get_object_traceback(_obj): - return None - - def tracemalloc(init): - return init - -from gevent._compat import fsencode - -from gevent._ffi import _dbg # pylint:disable=unused-import -from gevent._ffi import GEVENT_DEBUG_LEVEL -from gevent._ffi import DEBUG -from gevent._ffi.loop import GEVENT_CORE_EVENTS -from gevent._ffi.loop import _NOARGS - -ALLOW_WATCHER_DEL = GEVENT_DEBUG_LEVEL >= DEBUG - -__all__ = [ - -] - -try: - ResourceWarning -except NameError: - class ResourceWarning(Warning): - "Python 2 fallback" - -class _NoWatcherResult(int): - - def __repr__(self): - return "<NoWatcher>" - -_NoWatcherResult = _NoWatcherResult(0) - -def events_to_str(event_field, all_events): - result = [] - for (flag, string) in all_events: - c_flag = flag - if event_field & c_flag: - result.append(string) - event_field = event_field & (~c_flag) - if not event_field: - break - if event_field: - result.append(hex(event_field)) - return '|'.join(result) - - -def not_while_active(func): - @functools.wraps(func) - def nw(self, *args, **kwargs): - if self.active: - raise ValueError("not while active") - func(self, *args, **kwargs) - return nw - -def only_if_watcher(func): - @functools.wraps(func) - def if_w(self): - if self._watcher: - return func(self) - return _NoWatcherResult - return if_w - - -class LazyOnClass(object): - - @classmethod - def lazy(cls, cls_dict, func): - "Put a LazyOnClass object in *cls_dict* with the same name as *func*" - cls_dict[func.__name__] = cls(func) - - def __init__(self, func, name=None): - self.name = name or func.__name__ - self.func = func - - def __get__(self, inst, klass): - if inst is None: # pragma: no cover - return self - - val = self.func(inst) - setattr(klass, self.name, val) - return val - - -class AbstractWatcherType(type): - """ - Base metaclass for watchers. - - To use, you will: - - - subclass the watcher class defined from this type. - - optionally subclass this type - """ - # pylint:disable=bad-mcs-classmethod-argument - - _FFI = None - _LIB = None - - def __new__(cls, name, bases, cls_dict): - if name != 'watcher' and not cls_dict.get('_watcher_skip_ffi'): - cls._fill_watcher(name, bases, cls_dict) - if '__del__' in cls_dict and not ALLOW_WATCHER_DEL: # pragma: no cover - raise TypeError("CFFI watchers are not allowed to have __del__") - return type.__new__(cls, name, bases, cls_dict) - - @classmethod - def _fill_watcher(cls, name, bases, cls_dict): - # TODO: refactor smaller - # pylint:disable=too-many-locals - if name.endswith('_'): - # Strip trailing _ added to avoid keyword duplications - # e.g., async_ - name = name[:-1] - - def _mro_get(attr, bases, error=True): - for b in bases: - try: - return getattr(b, attr) - except AttributeError: - continue - if error: # pragma: no cover - raise AttributeError(attr) - _watcher_prefix = cls_dict.get('_watcher_prefix') or _mro_get('_watcher_prefix', bases) - - if '_watcher_type' not in cls_dict: - watcher_type = _watcher_prefix + '_' + name - cls_dict['_watcher_type'] = watcher_type - elif not cls_dict['_watcher_type'].startswith(_watcher_prefix): - watcher_type = _watcher_prefix + '_' + cls_dict['_watcher_type'] - cls_dict['_watcher_type'] = watcher_type - - active_name = _watcher_prefix + '_is_active' - - def _watcher_is_active(self): - return getattr(self._LIB, active_name) - - LazyOnClass.lazy(cls_dict, _watcher_is_active) - - watcher_struct_name = cls_dict.get('_watcher_struct_name') - if not watcher_struct_name: - watcher_struct_pattern = (cls_dict.get('_watcher_struct_pattern') - or _mro_get('_watcher_struct_pattern', bases, False) - or 'struct %s') - watcher_struct_name = watcher_struct_pattern % (watcher_type,) - - def _watcher_struct_pointer_type(self): - return self._FFI.typeof(watcher_struct_name + ' *') - - LazyOnClass.lazy(cls_dict, _watcher_struct_pointer_type) - - callback_name = (cls_dict.get('_watcher_callback_name') - or _mro_get('_watcher_callback_name', bases, False) - or '_gevent_generic_callback') - - def _watcher_callback(self): - return self._FFI.addressof(self._LIB, callback_name) - - LazyOnClass.lazy(cls_dict, _watcher_callback) - - def _make_meth(name, watcher_name): - def meth(self): - lib_name = self._watcher_type + '_' + name - return getattr(self._LIB, lib_name) - meth.__name__ = watcher_name - return meth - - for meth_name in 'start', 'stop', 'init': - watcher_name = '_watcher' + '_' + meth_name - if watcher_name not in cls_dict: - LazyOnClass.lazy(cls_dict, _make_meth(meth_name, watcher_name)) - - def new_handle(cls, obj): - return cls._FFI.new_handle(obj) - - def new(cls, kind): - return cls._FFI.new(kind) - -class watcher(object): - - _callback = None - _args = None - _watcher = None - # self._handle has a reference to self, keeping it alive. - # We must keep self._handle alive for ffi.from_handle() to be - # able to work. We only fill this in when we are started, - # and when we are stopped we destroy it. - # NOTE: This is a GC cycle, so we keep it around for as short - # as possible. - _handle = None - - @tracemalloc - def __init__(self, _loop, ref=True, priority=None, args=_NOARGS): - self.loop = _loop - self.__init_priority = priority - self.__init_args = args - self.__init_ref = ref - self._watcher_full_init() - - - def _watcher_full_init(self): - priority = self.__init_priority - ref = self.__init_ref - args = self.__init_args - - self._watcher_create(ref) - - if priority is not None: - self._watcher_ffi_set_priority(priority) - - try: - self._watcher_ffi_init(args) - except: - # Let these be GC'd immediately. - # If we keep them around to when *we* are gc'd, - # they're probably invalid, meaning any native calls - # we do then to close() them are likely to fail - self._watcher = None - raise - self._watcher_ffi_set_init_ref(ref) - - @classmethod - def _watcher_ffi_close(cls, ffi_watcher): - pass - - def _watcher_create(self, ref): # pylint:disable=unused-argument - self._watcher = self._watcher_new() - - def _watcher_new(self): - return type(self).new(self._watcher_struct_pointer_type) # pylint:disable=no-member - - def _watcher_ffi_set_init_ref(self, ref): - pass - - def _watcher_ffi_set_priority(self, priority): - pass - - def _watcher_ffi_init(self, args): - raise NotImplementedError() - - def _watcher_ffi_start(self): - raise NotImplementedError() - - def _watcher_ffi_stop(self): - self._watcher_stop(self.loop._ptr, self._watcher) - - def _watcher_ffi_ref(self): - raise NotImplementedError() - - def _watcher_ffi_unref(self): - raise NotImplementedError() - - def _watcher_ffi_start_unref(self): - # While a watcher is active, we don't keep it - # referenced. This allows a timer, for example, to be started, - # and still allow the loop to end if there is nothing - # else to do. see test__order.TestSleep0 for one example. - self._watcher_ffi_unref() - - def _watcher_ffi_stop_ref(self): - self._watcher_ffi_ref() - - # A string identifying the type of libev object we watch, e.g., 'ev_io' - # This should be a class attribute. - _watcher_type = None - # A class attribute that is the callback on the libev object that init's the C struct, - # e.g., libev.ev_io_init. If None, will be set by _init_subclasses. - _watcher_init = None - # A class attribute that is the callback on the libev object that starts the C watcher, - # e.g., libev.ev_io_start. If None, will be set by _init_subclasses. - _watcher_start = None - # A class attribute that is the callback on the libev object that stops the C watcher, - # e.g., libev.ev_io_stop. If None, will be set by _init_subclasses. - _watcher_stop = None - # A cffi ctype object identifying the struct pointer we create. - # This is a class attribute set based on the _watcher_type - _watcher_struct_pointer_type = None - # The attribute of the libev object identifying the custom - # callback function for this type of watcher. This is a class - # attribute set based on the _watcher_type in _init_subclasses. - _watcher_callback = None - _watcher_is_active = None - - def close(self): - if self._watcher is None: - return - - self.stop() - _watcher = self._watcher - self._watcher = None - self._watcher_set_data(_watcher, self._FFI.NULL) # pylint: disable=no-member - self._watcher_ffi_close(_watcher) - self.loop = None - - def _watcher_set_data(self, the_watcher, data): - # This abstraction exists for the sole benefit of - # libuv.watcher.stat, which "subclasses" uv_handle_t. - # Can we do something to avoid this extra function call? - the_watcher.data = data - return data - - def __enter__(self): - return self - - def __exit__(self, t, v, tb): - self.close() - - if ALLOW_WATCHER_DEL: - def __del__(self): - if self._watcher: - tb = get_object_traceback(self) - tb_msg = '' - if tb is not None: - tb_msg = '\n'.join(tb.format()) - tb_msg = '\nTraceback:\n' + tb_msg - warnings.warn("Failed to close watcher %r%s" % (self, tb_msg), - ResourceWarning) - - # may fail if __init__ did; will be harmlessly printed - self.close() - - - def __repr__(self): - formats = self._format() - result = "<%s at 0x%x%s" % (self.__class__.__name__, id(self), formats) - if self.pending: - result += " pending" - if self.callback is not None: - fself = getattr(self.callback, '__self__', None) - if fself is self: - result += " callback=<bound method %s of self>" % (self.callback.__name__) - else: - result += " callback=%r" % (self.callback, ) - if self.args is not None: - result += " args=%r" % (self.args, ) - if self.callback is None and self.args is None: - result += " stopped" - result += " watcher=%s" % (self._watcher) - result += " handle=%s" % (self._watcher_handle) - result += " ref=%s" % (self.ref) - return result + ">" - - @property - def _watcher_handle(self): - if self._watcher: - return self._watcher.data - - def _format(self): - return '' - - @property - def ref(self): - raise NotImplementedError() - - def _get_callback(self): - return self._callback - - def _set_callback(self, cb): - if not callable(cb) and cb is not None: - raise TypeError("Expected callable, not %r" % (cb, )) - if cb is None: - if '_callback' in self.__dict__: - del self._callback - else: - self._callback = cb - callback = property(_get_callback, _set_callback) - - def _get_args(self): - return self._args - - def _set_args(self, args): - if not isinstance(args, tuple) and args is not None: - raise TypeError("args must be a tuple or None") - if args is None: - if '_args' in self.__dict__: - del self._args - else: - self._args = args - - args = property(_get_args, _set_args) - - def start(self, callback, *args): - if callback is None: - raise TypeError('callback must be callable, not None') - self.callback = callback - self.args = args or _NOARGS - self.loop._keepaliveset.add(self) - self._handle = self._watcher_set_data(self._watcher, type(self).new_handle(self)) # pylint:disable=no-member - self._watcher_ffi_start() - self._watcher_ffi_start_unref() - - def stop(self): - if self._callback is None: - assert self.loop is None or self not in self.loop._keepaliveset - return - self._watcher_ffi_stop_ref() - self._watcher_ffi_stop() - self.loop._keepaliveset.discard(self) - self._handle = None - self._watcher_set_data(self._watcher, self._FFI.NULL) # pylint:disable=no-member - self.callback = None - self.args = None - - def _get_priority(self): - return None - - @not_while_active - def _set_priority(self, priority): - pass - - priority = property(_get_priority, _set_priority) - - - @property - def active(self): - if self._watcher is not None and self._watcher_is_active(self._watcher): - return True - return False - - @property - def pending(self): - return False - -watcher = AbstractWatcherType('watcher', (object,), dict(watcher.__dict__)) - -class IoMixin(object): - - EVENT_MASK = 0 - - def __init__(self, loop, fd, events, ref=True, priority=None, _args=None): - # Win32 only works with sockets, and only when we use libuv, because - # we don't use _open_osfhandle. See libuv/watchers.py:io for a description. - if fd < 0: - raise ValueError('fd must be non-negative: %r' % fd) - if events & ~self.EVENT_MASK: - raise ValueError('illegal event mask: %r' % events) - self._fd = fd - super(IoMixin, self).__init__(loop, ref=ref, priority=priority, - args=_args or (fd, events)) - - def start(self, callback, *args, **kwargs): - args = args or _NOARGS - if kwargs.get('pass_events'): - args = (GEVENT_CORE_EVENTS, ) + args - super(IoMixin, self).start(callback, *args) - - def _format(self): - return ' fd=%d' % self._fd - -class TimerMixin(object): - _watcher_type = 'timer' - - def __init__(self, loop, after=0.0, repeat=0.0, ref=True, priority=None): - if repeat < 0.0: - raise ValueError("repeat must be positive or zero: %r" % repeat) - self._after = after - self._repeat = repeat - super(TimerMixin, self).__init__(loop, ref=ref, priority=priority, args=(after, repeat)) - - def start(self, callback, *args, **kw): - update = kw.get("update", self.loop.starting_timer_may_update_loop_time) - if update: - # Quoth the libev doc: "This is a costly operation and is - # usually done automatically within ev_run(). This - # function is rarely useful, but when some event callback - # runs for a very long time without entering the event - # loop, updating libev's idea of the current time is a - # good idea." - - # 1.3 changed the default for this to False *unless* the loop is - # running a callback; see libuv for details. Note that - # starting Timeout objects still sets this to true. - - self.loop.update_now() - super(TimerMixin, self).start(callback, *args) - - def again(self, callback, *args, **kw): - raise NotImplementedError() - - -class SignalMixin(object): - _watcher_type = 'signal' - - def __init__(self, loop, signalnum, ref=True, priority=None): - if signalnum < 1 or signalnum >= signalmodule.NSIG: - raise ValueError('illegal signal number: %r' % signalnum) - # still possible to crash on one of libev's asserts: - # 1) "libev: ev_signal_start called with illegal signal number" - # EV_NSIG might be different from signal.NSIG on some platforms - # 2) "libev: a signal must not be attached to two different loops" - # we probably could check that in LIBEV_EMBED mode, but not in general - self._signalnum = signalnum - super(SignalMixin, self).__init__(loop, ref=ref, priority=priority, args=(signalnum, )) - - -class IdleMixin(object): - _watcher_type = 'idle' - - -class PrepareMixin(object): - _watcher_type = 'prepare' - - -class CheckMixin(object): - _watcher_type = 'check' - - -class ForkMixin(object): - _watcher_type = 'fork' - - -class AsyncMixin(object): - _watcher_type = 'async' - - def send(self): - raise NotImplementedError() - - @property - def pending(self): - raise NotImplementedError() - - -class ChildMixin(object): - - # hack for libuv which doesn't extend watcher - _CALL_SUPER_INIT = True - - def __init__(self, loop, pid, trace=0, ref=True): - if not loop.default: - raise TypeError('child watchers are only available on the default loop') - loop.install_sigchld() - self._pid = pid - if self._CALL_SUPER_INIT: - super(ChildMixin, self).__init__(loop, ref=ref, args=(pid, trace)) - - def _format(self): - return ' pid=%r rstatus=%r' % (self.pid, self.rstatus) - - @property - def pid(self): - return self._pid - - @property - def rpid(self): - # The received pid, the result of the waitpid() call. - return self._rpid - - _rpid = None - _rstatus = 0 - - @property - def rstatus(self): - return self._rstatus - -class StatMixin(object): - - @staticmethod - def _encode_path(path): - return fsencode(path) - - def __init__(self, _loop, path, interval=0.0, ref=True, priority=None): - # Store the encoded path in the same attribute that corecext does - self._paths = self._encode_path(path) - - # Keep the original path to avoid re-encoding, especially on Python 3 - self._path = path - - # Although CFFI would automatically convert a bytes object into a char* when - # calling ev_stat_init(..., char*, ...), on PyPy the char* pointer is not - # guaranteed to live past the function call. On CPython, only with a constant/interned - # bytes object is the pointer guaranteed to last path the function call. (And since - # Python 3 is pretty much guaranteed to produce a newly-encoded bytes object above, thats - # rarely the case). Therefore, we must keep a reference to the produced cdata object - # so that the struct ev_stat_watcher's `path` pointer doesn't become invalid/deallocated - self._cpath = self._FFI.new('char[]', self._paths) - - self._interval = interval - super(StatMixin, self).__init__(_loop, ref=ref, priority=priority, - args=(self._cpath, - interval)) - - @property - def path(self): - return self._path - - @property - def attr(self): - raise NotImplementedError - - @property - def prev(self): - raise NotImplementedError - - @property - def interval(self): - return self._interval diff --git a/python/gevent/_fileobjectcommon.py b/python/gevent/_fileobjectcommon.py deleted file mode 100644 index 38b1da7..0000000 --- a/python/gevent/_fileobjectcommon.py +++ /dev/null @@ -1,275 +0,0 @@ -from __future__ import absolute_import, print_function, division - -try: - from errno import EBADF -except ImportError: - EBADF = 9 - -import os -from io import TextIOWrapper -import functools -import sys - - -from gevent.hub import _get_hub_noargs as get_hub -from gevent._compat import integer_types -from gevent._compat import reraise -from gevent.lock import Semaphore, DummySemaphore - -class cancel_wait_ex(IOError): - - def __init__(self): - super(cancel_wait_ex, self).__init__( - EBADF, 'File descriptor was closed in another greenlet') - - -class FileObjectClosed(IOError): - - def __init__(self): - super(FileObjectClosed, self).__init__( - EBADF, 'Bad file descriptor (FileObject was closed)') - -class FileObjectBase(object): - """ - Internal base class to ensure a level of consistency - between FileObjectPosix and FileObjectThread - """ - - # List of methods we delegate to the wrapping IO object, if they - # implement them and we do not. - _delegate_methods = ( - # General methods - 'flush', - 'fileno', - 'writable', - 'readable', - 'seek', - 'seekable', - 'tell', - - # Read - 'read', - 'readline', - 'readlines', - 'read1', - - # Write - 'write', - 'writelines', - 'truncate', - ) - - - # Whether we are translating universal newlines or not. - _translate = False - - _translate_encoding = None - _translate_errors = None - - def __init__(self, io, closefd): - """ - :param io: An io.IOBase-like object. - """ - self._io = io - # We don't actually use this property ourself, but we save it (and - # pass it along) for compatibility. - self._close = closefd - - if self._translate: - # This automatically handles delegation by assigning to - # self.io - self.translate_newlines(None, self._translate_encoding, self._translate_errors) - else: - self._do_delegate_methods() - - - io = property(lambda s: s._io, - # Historically we either hand-wrote all the delegation methods - # to use self.io, or we simply used __getattr__ to look them up at - # runtime. This meant people could change the io attribute on the fly - # and it would mostly work (subprocess.py used to do that). We don't recommend - # that, but we still support it. - lambda s, nv: setattr(s, '_io', nv) or s._do_delegate_methods()) - - def _do_delegate_methods(self): - for meth_name in self._delegate_methods: - meth = getattr(self._io, meth_name, None) - implemented_by_class = hasattr(type(self), meth_name) - if meth and not implemented_by_class: - setattr(self, meth_name, self._wrap_method(meth)) - elif hasattr(self, meth_name) and not implemented_by_class: - delattr(self, meth_name) - - def _wrap_method(self, method): - """ - Wrap a method we're copying into our dictionary from the underlying - io object to do something special or different, if necessary. - """ - return method - - def translate_newlines(self, mode, *text_args, **text_kwargs): - wrapper = TextIOWrapper(self._io, *text_args, **text_kwargs) - if mode: - wrapper.mode = mode - self.io = wrapper - self._translate = True - - @property - def closed(self): - """True if the file is closed""" - return self._io is None - - def close(self): - if self._io is None: - return - - io = self._io - self._io = None - self._do_close(io, self._close) - - def _do_close(self, fobj, closefd): - raise NotImplementedError() - - def __getattr__(self, name): - if self._io is None: - raise FileObjectClosed() - return getattr(self._io, name) - - def __repr__(self): - return '<%s _fobj=%r%s>' % (self.__class__.__name__, self.io, self._extra_repr()) - - def _extra_repr(self): - return '' - - def __enter__(self): - return self - - def __exit__(self, *args): - self.close() - -class FileObjectBlock(FileObjectBase): - - def __init__(self, fobj, *args, **kwargs): - closefd = kwargs.pop('close', True) - if kwargs: - raise TypeError('Unexpected arguments: %r' % kwargs.keys()) - if isinstance(fobj, integer_types): - if not closefd: - # we cannot do this, since fdopen object will close the descriptor - raise TypeError('FileObjectBlock does not support close=False on an fd.') - fobj = os.fdopen(fobj, *args) - super(FileObjectBlock, self).__init__(fobj, closefd) - - def _do_close(self, fobj, closefd): - fobj.close() - -class FileObjectThread(FileObjectBase): - """ - A file-like object wrapping another file-like object, performing all blocking - operations on that object in a background thread. - - .. caution:: - Attempting to change the threadpool or lock of an existing FileObjectThread - has undefined consequences. - - .. versionchanged:: 1.1b1 - The file object is closed using the threadpool. Note that whether or - not this action is synchronous or asynchronous is not documented. - - """ - - def __init__(self, fobj, mode=None, bufsize=-1, close=True, threadpool=None, lock=True): - """ - :param fobj: The underlying file-like object to wrap, or an integer fileno - that will be pass to :func:`os.fdopen` along with *mode* and *bufsize*. - :keyword bool lock: If True (the default) then all operations will - be performed one-by-one. Note that this does not guarantee that, if using - this file object from multiple threads/greenlets, operations will be performed - in any particular order, only that no two operations will be attempted at the - same time. You can also pass your own :class:`gevent.lock.Semaphore` to synchronize - file operations with an external resource. - :keyword bool close: If True (the default) then when this object is closed, - the underlying object is closed as well. - """ - closefd = close - self.threadpool = threadpool or get_hub().threadpool - self.lock = lock - if self.lock is True: - self.lock = Semaphore() - elif not self.lock: - self.lock = DummySemaphore() - if not hasattr(self.lock, '__enter__'): - raise TypeError('Expected a Semaphore or boolean, got %r' % type(self.lock)) - if isinstance(fobj, integer_types): - if not closefd: - # we cannot do this, since fdopen object will close the descriptor - raise TypeError('FileObjectThread does not support close=False on an fd.') - if mode is None: - assert bufsize == -1, "If you use the default mode, you can't choose a bufsize" - fobj = os.fdopen(fobj) - else: - fobj = os.fdopen(fobj, mode, bufsize) - - self.__io_holder = [fobj] # signal for _wrap_method - super(FileObjectThread, self).__init__(fobj, closefd) - - def _do_close(self, fobj, closefd): - self.__io_holder[0] = None # for _wrap_method - try: - with self.lock: - self.threadpool.apply(fobj.flush) - finally: - if closefd: - # Note that we're not taking the lock; older code - # did fobj.close() without going through the threadpool at all, - # so acquiring the lock could potentially introduce deadlocks - # that weren't present before. Avoiding the lock doesn't make - # the existing race condition any worse. - # We wrap the close in an exception handler and re-raise directly - # to avoid the (common, expected) IOError from being logged by the pool - def close(): - try: - fobj.close() - except: # pylint:disable=bare-except - return sys.exc_info() - exc_info = self.threadpool.apply(close) - if exc_info: - reraise(*exc_info) - - def _do_delegate_methods(self): - super(FileObjectThread, self)._do_delegate_methods() - if not hasattr(self, 'read1') and 'r' in getattr(self._io, 'mode', ''): - self.read1 = self.read - self.__io_holder[0] = self._io - - def _extra_repr(self): - return ' threadpool=%r' % (self.threadpool,) - - def __iter__(self): - return self - - def next(self): - line = self.readline() - if line: - return line - raise StopIteration - __next__ = next - - def _wrap_method(self, method): - # NOTE: We are careful to avoid introducing a refcycle - # within self. Our wrapper cannot refer to self. - io_holder = self.__io_holder - lock = self.lock - threadpool = self.threadpool - - @functools.wraps(method) - def thread_method(*args, **kwargs): - if io_holder[0] is None: - # This is different than FileObjectPosix, etc, - # because we want to save the expensive trip through - # the threadpool. - raise FileObjectClosed() - with lock: - return threadpool.apply(method, args, kwargs) - - return thread_method diff --git a/python/gevent/_fileobjectposix.py b/python/gevent/_fileobjectposix.py deleted file mode 100644 index 93dd65f..0000000 --- a/python/gevent/_fileobjectposix.py +++ /dev/null @@ -1,320 +0,0 @@ -from __future__ import absolute_import -import os -import io -from io import BufferedReader -from io import BufferedWriter -from io import BytesIO -from io import DEFAULT_BUFFER_SIZE -from io import RawIOBase -from io import UnsupportedOperation - -from gevent._fileobjectcommon import cancel_wait_ex -from gevent._fileobjectcommon import FileObjectBase -from gevent.hub import get_hub -from gevent.os import _read -from gevent.os import _write -from gevent.os import ignored_errors -from gevent.os import make_nonblocking - - -class GreenFileDescriptorIO(RawIOBase): - - # Note that RawIOBase has a __del__ method that calls - # self.close(). (In C implementations like CPython, this is - # the type's tp_dealloc slot; prior to Python 3, the object doesn't - # appear to have a __del__ method, even though it functionally does) - - _read_event = None - _write_event = None - _closed = False - _seekable = None - - def __init__(self, fileno, mode='r', closefd=True): - RawIOBase.__init__(self) # Python 2: pylint:disable=no-member,non-parent-init-called - self._closefd = closefd - self._fileno = fileno - make_nonblocking(fileno) - readable = 'r' in mode - writable = 'w' in mode - self.hub = get_hub() - - io_watcher = self.hub.loop.io - if readable: - self._read_event = io_watcher(fileno, 1) - - if writable: - self._write_event = io_watcher(fileno, 2) - - def readable(self): - return self._read_event is not None - - def writable(self): - return self._write_event is not None - - def seekable(self): - if self._seekable is None: - try: - os.lseek(self._fileno, 0, os.SEEK_CUR) - except OSError: - self._seekable = False - else: - self._seekable = True - return self._seekable - - def fileno(self): - return self._fileno - - @property - def closed(self): - return self._closed - - def close(self): - if self._closed: - return - self.flush() - # TODO: Can we use 'read_event is not None and write_event is - # not None' to mean _closed? - self._closed = True - read_event = self._read_event - write_event = self._write_event - self._read_event = self._write_event = None - - if read_event is not None: - self.hub.cancel_wait(read_event, cancel_wait_ex, True) - if write_event is not None: - self.hub.cancel_wait(write_event, cancel_wait_ex, True) - - fileno = self._fileno - if self._closefd: - self._fileno = None - os.close(fileno) - - # RawIOBase provides a 'read' method that will call readall() if - # the `size` was missing or -1 and otherwise call readinto(). We - # want to take advantage of this to avoid single byte reads when - # possible. This is highlighted by a bug in BufferedIOReader that - # calls read() in a loop when its readall() method is invoked; - # this was fixed in Python 3.3, but we still need our workaround for 2.7. See - # https://github.com/gevent/gevent/issues/675) - def __read(self, n): - if self._read_event is None: - raise UnsupportedOperation('read') - while True: - try: - return _read(self._fileno, n) - except (IOError, OSError) as ex: - if ex.args[0] not in ignored_errors: - raise - self.hub.wait(self._read_event) - - def readall(self): - ret = BytesIO() - while True: - data = self.__read(DEFAULT_BUFFER_SIZE) - if not data: - break - ret.write(data) - return ret.getvalue() - - def readinto(self, b): - data = self.__read(len(b)) - n = len(data) - try: - b[:n] = data - except TypeError as err: - import array - if not isinstance(b, array.array): - raise err - b[:n] = array.array(b'b', data) - return n - - def write(self, b): - if self._write_event is None: - raise UnsupportedOperation('write') - while True: - try: - return _write(self._fileno, b) - except (IOError, OSError) as ex: - if ex.args[0] not in ignored_errors: - raise - self.hub.wait(self._write_event) - - def seek(self, offset, whence=0): - return os.lseek(self._fileno, offset, whence) - -class FlushingBufferedWriter(BufferedWriter): - - def write(self, b): - ret = BufferedWriter.write(self, b) - self.flush() - return ret - -class FileObjectPosix(FileObjectBase): - """ - A file-like object that operates on non-blocking files but - provides a synchronous, cooperative interface. - - .. caution:: - This object is only effective wrapping files that can be used meaningfully - with :func:`select.select` such as sockets and pipes. - - In general, on most platforms, operations on regular files - (e.g., ``open('a_file.txt')``) are considered non-blocking - already, even though they can take some time to complete as - data is copied to the kernel and flushed to disk: this time - is relatively bounded compared to sockets or pipes, though. - A :func:`~os.read` or :func:`~os.write` call on such a file - will still effectively block for some small period of time. - Therefore, wrapping this class around a regular file is - unlikely to make IO gevent-friendly: reading or writing large - amounts of data could still block the event loop. - - If you'll be working with regular files and doing IO in large - chunks, you may consider using - :class:`~gevent.fileobject.FileObjectThread` or - :func:`~gevent.os.tp_read` and :func:`~gevent.os.tp_write` to bypass this - concern. - - .. note:: - Random read/write (e.g., ``mode='rwb'``) is not supported. - For that, use :class:`io.BufferedRWPair` around two instance of this - class. - - .. tip:: - Although this object provides a :meth:`fileno` method and so - can itself be passed to :func:`fcntl.fcntl`, setting the - :data:`os.O_NONBLOCK` flag will have no effect (reads will - still block the greenlet, although other greenlets can run). - However, removing that flag *will cause this object to no - longer be cooperative* (other greenlets will no longer run). - - You can use the internal ``fileio`` attribute of this object - (a :class:`io.RawIOBase`) to perform non-blocking byte reads. - Note, however, that once you begin directly using this - attribute, the results from using methods of *this* object - are undefined, especially in text mode. (See :issue:`222`.) - - .. versionchanged:: 1.1 - Now uses the :mod:`io` package internally. Under Python 2, previously - used the undocumented class :class:`socket._fileobject`. This provides - better file-like semantics (and portability to Python 3). - .. versionchanged:: 1.2a1 - Document the ``fileio`` attribute for non-blocking reads. - """ - - #: platform specific default for the *bufsize* parameter - default_bufsize = io.DEFAULT_BUFFER_SIZE - - def __init__(self, fobj, mode='rb', bufsize=-1, close=True): - """ - :param fobj: Either an integer fileno, or an object supporting the - usual :meth:`socket.fileno` method. The file *will* be - put in non-blocking mode using :func:`gevent.os.make_nonblocking`. - :keyword str mode: The manner of access to the file, one of "rb", "rU" or "wb" - (where the "b" or "U" can be omitted). - If "U" is part of the mode, universal newlines will be used. On Python 2, - if 't' is not in the mode, this will result in returning byte (native) strings; - putting 't' in the mode will return text strings. This may cause - :exc:`UnicodeDecodeError` to be raised. - :keyword int bufsize: If given, the size of the buffer to use. The default - value means to use a platform-specific default - Other values are interpreted as for the :mod:`io` package. - Buffering is ignored in text mode. - - .. versionchanged:: 1.3a1 - - On Python 2, enabling universal newlines no longer forces unicode - IO. - - .. versionchanged:: 1.2a1 - - A bufsize of 0 in write mode is no longer forced to be 1. - Instead, the underlying buffer is flushed after every write - operation to simulate a bufsize of 0. In gevent 1.0, a - bufsize of 0 was flushed when a newline was written, while - in gevent 1.1 it was flushed when more than one byte was - written. Note that this may have performance impacts. - """ - - if isinstance(fobj, int): - fileno = fobj - fobj = None - else: - fileno = fobj.fileno() - if not isinstance(fileno, int): - raise TypeError('fileno must be int: %r' % fileno) - - orig_mode = mode - mode = (mode or 'rb').replace('b', '') - if 'U' in mode: - self._translate = True - if bytes is str and 't' not in mode: - # We're going to be producing unicode objects, but - # universal newlines doesn't do that in the stdlib, - # so fix that to return str objects. The fix is two parts: - # first, set an encoding on the stream that can round-trip - # all bytes, and second, decode all bytes once they've been read. - self._translate_encoding = 'latin-1' - import functools - - def wrap_method(m): - if m.__name__.startswith("read"): - @functools.wraps(m) - def wrapped(*args, **kwargs): - result = m(*args, **kwargs) - assert isinstance(result, unicode) # pylint:disable=undefined-variable - return result.encode('latin-1') - return wrapped - return m - self._wrap_method = wrap_method - mode = mode.replace('U', '') - else: - self._translate = False - - mode = mode.replace('t', '') - - if len(mode) != 1 and mode not in 'rw': # pragma: no cover - # Python 3 builtin `open` raises a ValueError for invalid modes; - # Python 2 ignores it. In the past, we raised an AssertionError, if __debug__ was - # enabled (which it usually was). Match Python 3 because it makes more sense - # and because __debug__ may not be enabled. - # NOTE: This is preventing a mode like 'rwb' for binary random access; - # that code was never tested and was explicitly marked as "not used" - raise ValueError('mode can only be [rb, rU, wb], not %r' % (orig_mode,)) - - self._fobj = fobj - - # This attribute is documented as available for non-blocking reads. - self.fileio = GreenFileDescriptorIO(fileno, mode, closefd=close) - - self._orig_bufsize = bufsize - if bufsize < 0 or bufsize == 1: - bufsize = self.default_bufsize - elif bufsize == 0: - bufsize = 1 - - if mode == 'r': - IOFamily = BufferedReader - else: - assert mode == 'w' - IOFamily = BufferedWriter - if self._orig_bufsize == 0: - # We could also simply pass self.fileio as *io*, but this way - # we at least consistently expose a BufferedWriter in our *io* - # attribute. - IOFamily = FlushingBufferedWriter - - super(FileObjectPosix, self).__init__(IOFamily(self.fileio, bufsize), close) - - def _do_close(self, fobj, closefd): - try: - fobj.close() - # self.fileio already knows whether or not to close the - # file descriptor - self.fileio.close() - finally: - self._fobj = None - self.fileio = None - - def __iter__(self): - return self._io diff --git a/python/gevent/_greenlet.cp36-win32.pyd b/python/gevent/_greenlet.cp36-win32.pyd deleted file mode 100644 index bad32d63dab6b325d2e99f247ad6a2d7d57772e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 194048 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 R$1*uz*~~Fs-T(Xl{s&y4l9&Jh diff --git a/python/gevent/_greenlet.pxd b/python/gevent/_greenlet.pxd deleted file mode 100644 index 230b049..0000000 --- a/python/gevent/_greenlet.pxd +++ /dev/null @@ -1,174 +0,0 @@ -# cython: auto_pickle=False - -cimport cython -from gevent.__ident cimport IdentRegistry -from gevent.__hub_local cimport get_hub_noargs as get_hub -from gevent.__waiter cimport Waiter - -cdef bint _PYPY -cdef sys_getframe -cdef sys_exc_info -cdef Timeout -cdef GreenletExit -cdef InvalidSwitchError - -cdef extern from "greenlet/greenlet.h": - - ctypedef class greenlet.greenlet [object PyGreenlet]: - pass - - # These are actually macros and so much be included - # (defined) in each .pxd, as are the two functions - # that call them. - greenlet PyGreenlet_GetCurrent() - void PyGreenlet_Import() - -@cython.final -cdef inline greenlet getcurrent(): - return PyGreenlet_GetCurrent() - -cdef bint _greenlet_imported - -cdef inline void greenlet_init(): - global _greenlet_imported - if not _greenlet_imported: - PyGreenlet_Import() - _greenlet_imported = True - -cdef extern from "Python.h": - - ctypedef class types.CodeType [object PyCodeObject]: - pass - -cdef extern from "frameobject.h": - - ctypedef class types.FrameType [object PyFrameObject]: - cdef CodeType f_code - cdef int f_lineno - # We can't declare this in the object, because it's - # allowed to be NULL, and Cython can't handle that. - # We have to go through the python machinery to get a - # proper None instead. - # cdef FrameType f_back - -cdef void _init() - -cdef class SpawnedLink: - cdef public object callback - - -@cython.final -cdef class SuccessSpawnedLink(SpawnedLink): - pass - -@cython.final -cdef class FailureSpawnedLink(SpawnedLink): - pass - -@cython.final -@cython.internal -@cython.freelist(1000) -cdef class _Frame: - cdef readonly CodeType f_code - cdef readonly int f_lineno - cdef readonly _Frame f_back - - -@cython.final -@cython.locals(frames=list,frame=FrameType) -cdef inline list _extract_stack(int limit) - -@cython.final -@cython.locals(previous=_Frame, frame=tuple, f=_Frame) -cdef _Frame _Frame_from_list(list frames) - - -cdef class Greenlet(greenlet): - cdef readonly object value - cdef readonly tuple args - cdef readonly dict kwargs - cdef readonly object spawning_greenlet - cdef public dict spawn_tree_locals - - # This is accessed with getattr() dynamically so it - # must be visible to Python - cdef readonly list _spawning_stack_frames - - cdef list _links - cdef tuple _exc_info - cdef object _notifier - cdef object _start_event - cdef str _formatted_info - cdef object _ident - - cpdef bint has_links(self) - cpdef join(self, timeout=*) - cpdef bint ready(self) - cpdef bint successful(self) - cpdef rawlink(self, object callback) - cpdef str _formatinfo(self) - - @cython.locals(reg=IdentRegistry) - cdef _get_minimal_ident(self) - - - cdef bint __started_but_aborted(self) - cdef bint __start_cancelled_by_kill(self) - cdef bint __start_pending(self) - cdef bint __never_started_or_killed(self) - cdef bint __start_completed(self) - cdef __handle_death_before_start(self, tuple args) - - cdef __cancel_start(self) - - cdef _report_result(self, object result) - cdef _report_error(self, tuple exc_info) - # This is used as the target of a callback - # from the loop, and so needs to be a cpdef - cpdef _notify_links(self) - - # Hmm, declaring _raise_exception causes issues when _imap - # is also compiled. - # TypeError: wrap() takes exactly one argument (0 given) - # cpdef _raise_exception(self) - - - -# Declare a bunch of imports as cdefs so they can -# be accessed directly as static vars without -# doing a module global lookup. This is especially important -# for spawning greenlets. -cdef _greenlet__init__ -cdef _threadlocal -cdef get_hub_class -cdef wref - -cdef dump_traceback -cdef load_traceback -cdef Waiter -cdef wait -cdef iwait -cdef reraise -cpdef GEVENT_CONFIG - - -@cython.final -@cython.internal -cdef class _dummy_event: - cdef readonly bint pending - cdef readonly bint active - - cpdef stop(self) - cpdef start(self, cb) - cpdef close(self) - -cdef _dummy_event _cancelled_start_event -cdef _dummy_event _start_completed_event - - -@cython.locals(diehards=list) -cdef _killall3(list greenlets, object exception, object waiter) -cdef _killall(list greenlets, object exception) - -@cython.locals(done=list) -cpdef joinall(greenlets, timeout=*, raise_error=*, count=*) diff --git a/python/gevent/_greenlet_primitives.c b/python/gevent/_greenlet_primitives.c deleted file mode 100644 index 4ea63cc..0000000 --- a/python/gevent/_greenlet_primitives.c +++ /dev/null @@ -1,6042 +0,0 @@ -/* Generated by Cython 0.28.5 */ - -/* BEGIN: Cython Metadata -{ - "distutils": { - "depends": [ - "src/gevent/__greenlet_primitives.pxd", - "src\\gevent\\__greenlet_primitives.pxd" - ], - "include_dirs": [ - "C:\\Python36\\Include", - "deps" - ], - "name": "gevent.__greenlet_primitives", - "sources": [ - "src/gevent/_greenlet_primitives.py" - ] - }, - "module_name": "gevent.__greenlet_primitives" -} -END: Cython Metadata */ - -#define PY_SSIZE_T_CLEAN -#include "Python.h" -#ifndef Py_PYTHON_H - #error Python headers needed to compile C extensions, please install development version of Python. -#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) - #error Cython requires Python 2.6+ or Python 3.3+. -#else -#define CYTHON_ABI "0_28_5" -#define CYTHON_FUTURE_DIVISION 1 -#include <stddef.h> -#ifndef offsetof - #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) -#endif -#if !defined(WIN32) && !defined(MS_WINDOWS) - #ifndef __stdcall - #define __stdcall - #endif - #ifndef __cdecl - #define __cdecl - #endif - #ifndef __fastcall - #define __fastcall - #endif -#endif -#ifndef DL_IMPORT - #define DL_IMPORT(t) t -#endif -#ifndef DL_EXPORT - #define DL_EXPORT(t) t -#endif -#define __PYX_COMMA , -#ifndef HAVE_LONG_LONG - #if PY_VERSION_HEX >= 0x02070000 - #define HAVE_LONG_LONG - #endif -#endif -#ifndef PY_LONG_LONG - #define PY_LONG_LONG LONG_LONG -#endif -#ifndef Py_HUGE_VAL - #define Py_HUGE_VAL HUGE_VAL -#endif -#ifdef PYPY_VERSION - #define CYTHON_COMPILING_IN_PYPY 1 - #define CYTHON_COMPILING_IN_PYSTON 0 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #undef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 0 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #if PY_VERSION_HEX < 0x03050000 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #undef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #undef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 1 - #undef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 0 - #undef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 0 - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 -#elif defined(PYSTON_VERSION) - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_PYSTON 1 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 -#else - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_PYSTON 0 - #define CYTHON_COMPILING_IN_CPYTHON 1 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #if PY_VERSION_HEX < 0x02070000 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #elif !defined(CYTHON_USE_PYTYPE_LOOKUP) - #define CYTHON_USE_PYTYPE_LOOKUP 1 - #endif - #if PY_MAJOR_VERSION < 3 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #if PY_VERSION_HEX < 0x02070000 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #elif !defined(CYTHON_USE_PYLONG_INTERNALS) - #define CYTHON_USE_PYLONG_INTERNALS 1 - #endif - #ifndef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 1 - #endif - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #if PY_VERSION_HEX < 0x030300F0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #elif !defined(CYTHON_USE_UNICODE_WRITER) - #define CYTHON_USE_UNICODE_WRITER 1 - #endif - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #ifndef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 1 - #endif - #ifndef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 1 - #endif - #ifndef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT (0 && PY_VERSION_HEX >= 0x03050000) - #endif - #ifndef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1) - #endif -#endif -#if !defined(CYTHON_FAST_PYCCALL) -#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) -#endif -#if CYTHON_USE_PYLONG_INTERNALS - #include "longintrepr.h" - #undef SHIFT - #undef BASE - #undef MASK -#endif -#ifndef __has_attribute - #define __has_attribute(x) 0 -#endif -#ifndef __has_cpp_attribute - #define __has_cpp_attribute(x) 0 -#endif -#ifndef CYTHON_RESTRICT - #if defined(__GNUC__) - #define CYTHON_RESTRICT __restrict__ - #elif defined(_MSC_VER) && _MSC_VER >= 1400 - #define CYTHON_RESTRICT __restrict - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_RESTRICT restrict - #else - #define CYTHON_RESTRICT - #endif -#endif -#ifndef CYTHON_UNUSED -# if defined(__GNUC__) -# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -#endif -#ifndef CYTHON_MAYBE_UNUSED_VAR -# if defined(__cplusplus) - template<class T> void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } -# else -# define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) -# endif -#endif -#ifndef CYTHON_NCP_UNUSED -# if CYTHON_COMPILING_IN_CPYTHON -# define CYTHON_NCP_UNUSED -# else -# define CYTHON_NCP_UNUSED CYTHON_UNUSED -# endif -#endif -#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) -#ifdef _MSC_VER - #ifndef _MSC_STDINT_H_ - #if _MSC_VER < 1300 - typedef unsigned char uint8_t; - typedef unsigned int uint32_t; - #else - typedef unsigned __int8 uint8_t; - typedef unsigned __int32 uint32_t; - #endif - #endif -#else - #include <stdint.h> -#endif -#ifndef CYTHON_FALLTHROUGH - #if defined(__cplusplus) && __cplusplus >= 201103L - #if __has_cpp_attribute(fallthrough) - #define CYTHON_FALLTHROUGH [[fallthrough]] - #elif __has_cpp_attribute(clang::fallthrough) - #define CYTHON_FALLTHROUGH [[clang::fallthrough]] - #elif __has_cpp_attribute(gnu::fallthrough) - #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] - #endif - #endif - #ifndef CYTHON_FALLTHROUGH - #if __has_attribute(fallthrough) - #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) - #else - #define CYTHON_FALLTHROUGH - #endif - #endif - #if defined(__clang__ ) && defined(__apple_build_version__) - #if __apple_build_version__ < 7000000 - #undef CYTHON_FALLTHROUGH - #define CYTHON_FALLTHROUGH - #endif - #endif -#endif - -#ifndef CYTHON_INLINE - #if defined(__clang__) - #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) - #elif defined(__GNUC__) - #define CYTHON_INLINE __inline__ - #elif defined(_MSC_VER) - #define CYTHON_INLINE __inline - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_INLINE inline - #else - #define CYTHON_INLINE - #endif -#endif - -#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) - #define Py_OptimizeFlag 0 -#endif -#define __PYX_BUILD_PY_SSIZE_T "n" -#define CYTHON_FORMAT_SSIZE_T "z" -#if PY_MAJOR_VERSION < 3 - #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) - #define __Pyx_DefaultClassType PyClass_Type -#else - #define __Pyx_BUILTIN_MODULE_NAME "builtins" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) - #define __Pyx_DefaultClassType PyType_Type -#endif -#ifndef Py_TPFLAGS_CHECKTYPES - #define Py_TPFLAGS_CHECKTYPES 0 -#endif -#ifndef Py_TPFLAGS_HAVE_INDEX - #define Py_TPFLAGS_HAVE_INDEX 0 -#endif -#ifndef Py_TPFLAGS_HAVE_NEWBUFFER - #define Py_TPFLAGS_HAVE_NEWBUFFER 0 -#endif -#ifndef Py_TPFLAGS_HAVE_FINALIZE - #define Py_TPFLAGS_HAVE_FINALIZE 0 -#endif -#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) - #ifndef METH_FASTCALL - #define METH_FASTCALL 0x80 - #endif - typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); - typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, - Py_ssize_t nargs, PyObject *kwnames); -#else - #define __Pyx_PyCFunctionFast _PyCFunctionFast - #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords -#endif -#if CYTHON_FAST_PYCCALL -#define __Pyx_PyFastCFunction_Check(func)\ - ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))))) -#else -#define __Pyx_PyFastCFunction_Check(func) 0 -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) - #define PyObject_Malloc(s) PyMem_Malloc(s) - #define PyObject_Free(p) PyMem_Free(p) - #define PyObject_Realloc(p) PyMem_Realloc(p) -#endif -#if CYTHON_COMPILING_IN_PYSTON - #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) -#else - #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) -#endif -#if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000 - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#elif PY_VERSION_HEX >= 0x03060000 - #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() -#elif PY_VERSION_HEX >= 0x03000000 - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#else - #define __Pyx_PyThreadState_Current _PyThreadState_Current -#endif -#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) -#include "pythread.h" -#define Py_tss_NEEDS_INIT 0 -typedef int Py_tss_t; -static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { - *key = PyThread_create_key(); - return 0; // PyThread_create_key reports success always -} -static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { - Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); - *key = Py_tss_NEEDS_INIT; - return key; -} -static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { - PyObject_Free(key); -} -static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { - return *key != Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { - PyThread_delete_key(*key); - *key = Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { - return PyThread_set_key_value(*key, value); -} -static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { - return PyThread_get_key_value(*key); -} -#endif // TSS (Thread Specific Storage) API -#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) -#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) -#else -#define __Pyx_PyDict_NewPresized(n) PyDict_New() -#endif -#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION - #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) -#else - #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) -#endif -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS -#define __Pyx_PyDict_GetItemStr(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) -#else -#define __Pyx_PyDict_GetItemStr(dict, name) PyDict_GetItem(dict, name) -#endif -#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) - #define CYTHON_PEP393_ENABLED 1 - #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ - 0 : _PyUnicode_Ready((PyObject *)(op))) - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) - #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) - #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) - #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) -#else - #define CYTHON_PEP393_ENABLED 0 - #define PyUnicode_1BYTE_KIND 1 - #define PyUnicode_2BYTE_KIND 2 - #define PyUnicode_4BYTE_KIND 4 - #define __Pyx_PyUnicode_READY(op) (0) - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) - #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) - #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) - #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) -#endif -#if CYTHON_COMPILING_IN_PYPY - #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) -#else - #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ - PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) - #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) - #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) - #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) -#endif -#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) -#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) -#else - #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) -#endif -#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) - #define PyObject_ASCII(o) PyObject_Repr(o) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBaseString_Type PyUnicode_Type - #define PyStringObject PyUnicodeObject - #define PyString_Type PyUnicode_Type - #define PyString_Check PyUnicode_Check - #define PyString_CheckExact PyUnicode_CheckExact - #define PyObject_Unicode PyObject_Str -#endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) - #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) -#else - #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) - #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) -#endif -#ifndef PySet_CheckExact - #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) -#endif -#if CYTHON_ASSUME_SAFE_MACROS - #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) -#else - #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyIntObject PyLongObject - #define PyInt_Type PyLong_Type - #define PyInt_Check(op) PyLong_Check(op) - #define PyInt_CheckExact(op) PyLong_CheckExact(op) - #define PyInt_FromString PyLong_FromString - #define PyInt_FromUnicode PyLong_FromUnicode - #define PyInt_FromLong PyLong_FromLong - #define PyInt_FromSize_t PyLong_FromSize_t - #define PyInt_FromSsize_t PyLong_FromSsize_t - #define PyInt_AsLong PyLong_AsLong - #define PyInt_AS_LONG PyLong_AS_LONG - #define PyInt_AsSsize_t PyLong_AsSsize_t - #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask - #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask - #define PyNumber_Int PyNumber_Long -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBoolObject PyLongObject -#endif -#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY - #ifndef PyUnicode_InternFromString - #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) - #endif -#endif -#if PY_VERSION_HEX < 0x030200A4 - typedef long Py_hash_t; - #define __Pyx_PyInt_FromHash_t PyInt_FromLong - #define __Pyx_PyInt_AsHash_t PyInt_AsLong -#else - #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t - #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t -#endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : (Py_INCREF(func), func)) -#else - #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) -#endif -#if CYTHON_USE_ASYNC_SLOTS - #if PY_VERSION_HEX >= 0x030500B1 - #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods - #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) - #else - #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) - #endif -#else - #define __Pyx_PyType_AsAsync(obj) NULL -#endif -#ifndef __Pyx_PyAsyncMethodsStruct - typedef struct { - unaryfunc am_await; - unaryfunc am_aiter; - unaryfunc am_anext; - } __Pyx_PyAsyncMethodsStruct; -#endif - -#if defined(WIN32) || defined(MS_WINDOWS) - #define _USE_MATH_DEFINES -#endif -#include <math.h> -#ifdef NAN -#define __PYX_NAN() ((float) NAN) -#else -static CYTHON_INLINE float __PYX_NAN() { - float value; - memset(&value, 0xFF, sizeof(value)); - return value; -} -#endif -#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) -#define __Pyx_truncl trunc -#else -#define __Pyx_truncl truncl -#endif - - -#define __PYX_ERR(f_index, lineno, Ln_error) \ -{ \ - __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \ -} - -#ifndef __PYX_EXTERN_C - #ifdef __cplusplus - #define __PYX_EXTERN_C extern "C" - #else - #define __PYX_EXTERN_C extern - #endif -#endif - -#define __PYX_HAVE__gevent____greenlet_primitives -#define __PYX_HAVE_API__gevent____greenlet_primitives -/* Early includes */ -#include "greenlet/greenlet.h" -#ifdef _OPENMP -#include <omp.h> -#endif /* _OPENMP */ - -#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) -#define CYTHON_WITHOUT_ASSERTIONS -#endif - -typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; - const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; - -#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 -#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0 -#define __PYX_DEFAULT_STRING_ENCODING "" -#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString -#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#define __Pyx_uchar_cast(c) ((unsigned char)c) -#define __Pyx_long_cast(x) ((long)x) -#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ - (sizeof(type) < sizeof(Py_ssize_t)) ||\ - (sizeof(type) > sizeof(Py_ssize_t) &&\ - likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX) &&\ - (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ - v == (type)PY_SSIZE_T_MIN))) ||\ - (sizeof(type) == sizeof(Py_ssize_t) &&\ - (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX))) ) -#if defined (__cplusplus) && __cplusplus >= 201103L - #include <cstdlib> - #define __Pyx_sst_abs(value) std::abs(value) -#elif SIZEOF_INT >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) abs(value) -#elif SIZEOF_LONG >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) labs(value) -#elif defined (_MSC_VER) - #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) -#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define __Pyx_sst_abs(value) llabs(value) -#elif defined (__GNUC__) - #define __Pyx_sst_abs(value) __builtin_llabs(value) -#else - #define __Pyx_sst_abs(value) ((value<0) ? -value : value) -#endif -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); -#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) -#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) -#define __Pyx_PyBytes_FromString PyBytes_FromString -#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); -#if PY_MAJOR_VERSION < 3 - #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#else - #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize -#endif -#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) -#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) -#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) -#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) -#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) -static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { - const Py_UNICODE *u_end = u; - while (*u_end++) ; - return (size_t)(u_end - u - 1); -} -#define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) -#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode -#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode -#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) -#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); -#define __Pyx_PySequence_Tuple(obj)\ - (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); -#if CYTHON_ASSUME_SAFE_MACROS -#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) -#else -#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) -#endif -#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) -#if PY_MAJOR_VERSION >= 3 -#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) -#else -#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) -#endif -#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x)) -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII -static int __Pyx_sys_getdefaultencoding_not_ascii; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - PyObject* ascii_chars_u = NULL; - PyObject* ascii_chars_b = NULL; - const char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - if (strcmp(default_encoding_c, "ascii") == 0) { - __Pyx_sys_getdefaultencoding_not_ascii = 0; - } else { - char ascii_chars[128]; - int c; - for (c = 0; c < 128; c++) { - ascii_chars[c] = c; - } - __Pyx_sys_getdefaultencoding_not_ascii = 1; - ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); - if (!ascii_chars_u) goto bad; - ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); - if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { - PyErr_Format( - PyExc_ValueError, - "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", - default_encoding_c); - goto bad; - } - Py_DECREF(ascii_chars_u); - Py_DECREF(ascii_chars_b); - } - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - Py_XDECREF(ascii_chars_u); - Py_XDECREF(ascii_chars_b); - return -1; -} -#endif -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) -#else -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -static char* __PYX_DEFAULT_STRING_ENCODING; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c)); - if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; - strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - return -1; -} -#endif -#endif - - -/* Test for GCC > 2.95 */ -#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) - #define likely(x) __builtin_expect(!!(x), 1) - #define unlikely(x) __builtin_expect(!!(x), 0) -#else /* !__GNUC__ or GCC < 2.95 */ - #define likely(x) (x) - #define unlikely(x) (x) -#endif /* __GNUC__ */ -static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } - -static PyObject *__pyx_m = NULL; -static PyObject *__pyx_d; -static PyObject *__pyx_b; -static PyObject *__pyx_cython_runtime = NULL; -static PyObject *__pyx_empty_tuple; -static PyObject *__pyx_empty_bytes; -static PyObject *__pyx_empty_unicode; -static int __pyx_lineno; -static int __pyx_clineno = 0; -static const char * __pyx_cfilenm= __FILE__; -static const char *__pyx_filename; - - -static const char *__pyx_f[] = { - "src\\gevent\\_greenlet_primitives.py", - "src\\gevent\\__greenlet_primitives.pxd", -}; - -/*--- Type declarations ---*/ -struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet; -struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop; - -/* "gevent/__greenlet_primitives.pxd":37 - * return PyGreenlet_Switch(self, NULL, NULL) - * - * cdef class TrackedRawGreenlet(greenlet): # <<<<<<<<<<<<<< - * pass - * - */ -struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet { - PyGreenlet __pyx_base; -}; - - -/* "gevent/__greenlet_primitives.pxd":40 - * pass - * - * cdef class SwitchOutGreenletWithLoop(TrackedRawGreenlet): # <<<<<<<<<<<<<< - * cdef public loop - * - */ -struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop { - struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet __pyx_base; - struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_vtab; - PyObject *loop; -}; - - - -/* "src/gevent/_greenlet_primitives.py":52 - * - * - * class SwitchOutGreenletWithLoop(TrackedRawGreenlet): # <<<<<<<<<<<<<< - * # Subclasses must define: - * # - self.loop - */ - -struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop { - PyObject *(*__pyx_switch)(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *, int __pyx_skip_dispatch); - PyObject *(*switch_out)(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *, int __pyx_skip_dispatch); -}; -static struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_vtabptr_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop; - -/* --- Runtime support code (head) --- */ -/* Refnanny.proto */ -#ifndef CYTHON_REFNANNY - #define CYTHON_REFNANNY 0 -#endif -#if CYTHON_REFNANNY - typedef struct { - void (*INCREF)(void*, PyObject*, int); - void (*DECREF)(void*, PyObject*, int); - void (*GOTREF)(void*, PyObject*, int); - void (*GIVEREF)(void*, PyObject*, int); - void* (*SetupContext)(const char*, int, const char*); - void (*FinishContext)(void**); - } __Pyx_RefNannyAPIStruct; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); - #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; -#ifdef WITH_THREAD - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - if (acquire_gil) {\ - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - PyGILState_Release(__pyx_gilstate_save);\ - } else {\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - } -#else - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) -#endif - #define __Pyx_RefNannyFinishContext()\ - __Pyx_RefNanny->FinishContext(&__pyx_refnanny) - #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) - #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) - #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) - #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0) -#else - #define __Pyx_RefNannyDeclarations - #define __Pyx_RefNannySetupContext(name, acquire_gil) - #define __Pyx_RefNannyFinishContext() - #define __Pyx_INCREF(r) Py_INCREF(r) - #define __Pyx_DECREF(r) Py_DECREF(r) - #define __Pyx_GOTREF(r) - #define __Pyx_GIVEREF(r) - #define __Pyx_XINCREF(r) Py_XINCREF(r) - #define __Pyx_XDECREF(r) Py_XDECREF(r) - #define __Pyx_XGOTREF(r) - #define __Pyx_XGIVEREF(r) -#endif -#define __Pyx_XDECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_XDECREF(tmp);\ - } while (0) -#define __Pyx_DECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_DECREF(tmp);\ - } while (0) -#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) -#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) - -/* PyObjectGetAttrStr.proto */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) -#endif - -/* GetBuiltinName.proto */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name); - -/* RaiseArgTupleInvalid.proto */ -static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, - Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); - -/* RaiseDoubleKeywords.proto */ -static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); - -/* ParseKeywords.proto */ -static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\ - PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\ - const char* function_name); - -/* PyFunctionFastCall.proto */ -#if CYTHON_FAST_PYCALL -#define __Pyx_PyFunction_FastCall(func, args, nargs)\ - __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs); -#else -#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) -#endif -#endif - -/* PyCFunctionFastCall.proto */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); -#else -#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) -#endif - -/* PyObjectCall.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); -#else -#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) -#endif - -/* PyObjectCallMethO.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); -#endif - -/* PyObjectCallOneArg.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); - -/* PyObjectSetAttrStr.proto */ -#if CYTHON_USE_TYPE_SLOTS -#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o, n, NULL) -static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value); -#else -#define __Pyx_PyObject_DelAttrStr(o,n) PyObject_DelAttr(o,n) -#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v) -#endif - -/* PyThreadStateGet.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; -#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; -#define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type -#else -#define __Pyx_PyThreadState_declare -#define __Pyx_PyThreadState_assign -#define __Pyx_PyErr_Occurred() PyErr_Occurred() -#endif - -/* SaveResetException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -#else -#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) -#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) -#endif - -/* PyErrExceptionMatches.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) -static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); -#else -#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) -#endif - -/* GetException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) -static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#else -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); -#endif - -/* PyObjectCallNoArg.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); -#else -#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL) -#endif - -/* PyErrFetchRestore.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) -#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) -#else -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#endif -#else -#define __Pyx_PyErr_Clear() PyErr_Clear() -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) -#endif - -/* GetAttr.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *); - -/* GetAttr3.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *); - -/* RaiseException.proto */ -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); - -/* CallNextTpDealloc.proto */ -static void __Pyx_call_next_tp_dealloc(PyObject* obj, destructor current_tp_dealloc); - -/* CallNextTpTraverse.proto */ -static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse); - -/* CallNextTpClear.proto */ -static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_dealloc); - -/* PyObject_GenericGetAttrNoDict.proto */ -#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr -#endif - -/* PyObject_GenericGetAttr.proto */ -#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr -#endif - -/* SetVTable.proto */ -static int __Pyx_SetVtable(PyObject *dict, void *vtable); - -/* Import.proto */ -static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); - -/* ImportFrom.proto */ -static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); - -/* FetchCommonType.proto */ -static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); - -/* CythonFunction.proto */ -#define __Pyx_CyFunction_USED 1 -#define __Pyx_CYFUNCTION_STATICMETHOD 0x01 -#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 -#define __Pyx_CYFUNCTION_CCLASS 0x04 -#define __Pyx_CyFunction_GetClosure(f)\ - (((__pyx_CyFunctionObject *) (f))->func_closure) -#define __Pyx_CyFunction_GetClassObj(f)\ - (((__pyx_CyFunctionObject *) (f))->func_classobj) -#define __Pyx_CyFunction_Defaults(type, f)\ - ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) -#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ - ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) -typedef struct { - PyCFunctionObject func; -#if PY_VERSION_HEX < 0x030500A0 - PyObject *func_weakreflist; -#endif - PyObject *func_dict; - PyObject *func_name; - PyObject *func_qualname; - PyObject *func_doc; - PyObject *func_globals; - PyObject *func_code; - PyObject *func_closure; - PyObject *func_classobj; - void *defaults; - int defaults_pyobjects; - int flags; - PyObject *defaults_tuple; - PyObject *defaults_kwdict; - PyObject *(*defaults_getter)(PyObject *); - PyObject *func_annotations; -} __pyx_CyFunctionObject; -static PyTypeObject *__pyx_CyFunctionType = 0; -#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, globals, code)\ - __Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, globals, code) -static PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml, - int flags, PyObject* qualname, - PyObject *self, - PyObject *module, PyObject *globals, - PyObject* code); -static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, - size_t size, - int pyobjects); -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, - PyObject *tuple); -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, - PyObject *dict); -static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, - PyObject *dict); -static int __pyx_CyFunction_init(void); - -/* GetModuleGlobalName.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name); - -/* Globals.proto */ -static PyObject* __Pyx_Globals(void); - -/* CLineInTraceback.proto */ -#ifdef CYTHON_CLINE_IN_TRACEBACK -#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) -#else -static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); -#endif - -/* CodeObjectCache.proto */ -typedef struct { - PyCodeObject* code_object; - int code_line; -} __Pyx_CodeObjectCacheEntry; -struct __Pyx_CodeObjectCache { - int count; - int max_count; - __Pyx_CodeObjectCacheEntry* entries; -}; -static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; -static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); -static PyCodeObject *__pyx_find_code_object(int code_line); -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); - -/* AddTraceback.proto */ -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename); - -/* CIntToPy.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); - -/* CIntFromPy.proto */ -static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); - -/* CIntFromPy.proto */ -static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); - -/* FastTypeChecks.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); -#else -#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) -#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) -#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) -#endif -#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) - -/* CheckBinaryVersion.proto */ -static int __Pyx_check_binary_version(void); - -/* VoidPtrExport.proto */ -static int __Pyx_ExportVoidPtr(PyObject *name, void *p, const char *sig); - -/* PyIdentifierFromString.proto */ -#if !defined(__Pyx_PyIdentifier_FromString) -#if PY_MAJOR_VERSION < 3 - #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s) -#else - #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s) -#endif -#endif - -/* ModuleImport.proto */ -static PyObject *__Pyx_ImportModule(const char *name); - -/* TypeImport.proto */ -static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict); - -/* InitStrings.proto */ -static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); - -static PyObject *__pyx_f_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_switch(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_switch_out(CYTHON_UNUSED struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ - -/* Module declarations from 'cython' */ - -/* Module declarations from 'greenlet' */ - -/* Module declarations from 'gevent.__greenlet_primitives' */ -static PyTypeObject *__pyx_ptype_6gevent_21__greenlet_primitives_greenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop = 0; -static PyObject *__pyx_v_6gevent_21__greenlet_primitives_wref = 0; -static PyObject *__pyx_v_6gevent_21__greenlet_primitives_BlockingSwitchOutError = 0; -static int __pyx_v_6gevent_21__greenlet_primitives__greenlet_imported; -static CYTHON_INLINE PyGreenlet *__pyx_f_6gevent_21__greenlet_primitives_getcurrent(void); /*proto*/ -static CYTHON_INLINE void __pyx_f_6gevent_21__greenlet_primitives_greenlet_init(void); /*proto*/ -static CYTHON_INLINE PyObject *__pyx_f_6gevent_21__greenlet_primitives__greenlet_switch(PyGreenlet *); /*proto*/ -#define __Pyx_MODULE_NAME "gevent.__greenlet_primitives" -extern int __pyx_module_is_main_gevent____greenlet_primitives; -int __pyx_module_is_main_gevent____greenlet_primitives = 0; - -/* Implementation of 'gevent.__greenlet_primitives' */ -static PyObject *__pyx_builtin___import__; -static PyObject *__pyx_builtin_AttributeError; -static const char __pyx_k_all[] = "__all__"; -static const char __pyx_k_ref[] = "ref"; -static const char __pyx_k_init[] = "__init__"; -static const char __pyx_k_main[] = "__main__"; -static const char __pyx_k_self[] = "self"; -static const char __pyx_k_test[] = "__test__"; -static const char __pyx_k_wref[] = "wref"; -static const char __pyx_k_import[] = "__import__"; -static const char __pyx_k_init_2[] = "_init"; -static const char __pyx_k_lambda[] = "<lambda>"; -static const char __pyx_k_parent[] = "parent"; -static const char __pyx_k_switch[] = "switch"; -static const char __pyx_k_weakref[] = "weakref"; -static const char __pyx_k_function[] = "function"; -static const char __pyx_k_greenlet[] = "greenlet"; -static const char __pyx_k_pyx_capi[] = "__pyx_capi__"; -static const char __pyx_k_getcurrent[] = "getcurrent"; -static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__"; -static const char __pyx_k_switch_out[] = "switch_out"; -static const char __pyx_k_gevent__util[] = "gevent._util"; -static const char __pyx_k_greenlet_init[] = "greenlet_init"; -static const char __pyx_k_AttributeError[] = "AttributeError"; -static const char __pyx_k_import_c_accel[] = "import_c_accel"; -static const char __pyx_k_greenlet_switch[] = "_greenlet_switch"; -static const char __pyx_k_gevent_exceptions[] = "gevent.exceptions"; -static const char __pyx_k_greenlet_imported[] = "_greenlet_imported"; -static const char __pyx_k_spawn_tree_locals[] = "spawn_tree_locals"; -static const char __pyx_k_spawning_greenlet[] = "spawning_greenlet"; -static const char __pyx_k_TrackedRawGreenlet[] = "TrackedRawGreenlet"; -static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; -static const char __pyx_k_BlockingSwitchOutError[] = "BlockingSwitchOutError"; -static const char __pyx_k_SwitchOutGreenletWithLoop[] = "SwitchOutGreenletWithLoop"; -static const char __pyx_k_gevent___greenlet_primitives[] = "gevent.__greenlet_primitives"; -static const char __pyx_k_A_collection_of_primitives_used[] = "\nA collection of primitives used by the hub, and suitable for\ncompilation with Cython because of their frequency of use.\n\n"; -static const char __pyx_k_src_gevent__greenlet_primitives[] = "src\\gevent\\_greenlet_primitives.py"; -static const char __pyx_k_Impossible_to_call_blocking_func[] = "Impossible to call blocking function in the event loop callback"; -static const char __pyx_k_SwitchOutGreenletWithLoop_switch[] = "SwitchOutGreenletWithLoop.switch"; -static const char __pyx_k_SwitchOutGreenletWithLoop_switch_2[] = "SwitchOutGreenletWithLoop.switch_out"; -static PyObject *__pyx_n_s_AttributeError; -static PyObject *__pyx_n_s_BlockingSwitchOutError; -static PyObject *__pyx_kp_s_Impossible_to_call_blocking_func; -static PyObject *__pyx_n_s_SwitchOutGreenletWithLoop; -static PyObject *__pyx_n_s_SwitchOutGreenletWithLoop_switch; -static PyObject *__pyx_n_s_SwitchOutGreenletWithLoop_switch_2; -static PyObject *__pyx_n_s_TrackedRawGreenlet; -static PyObject *__pyx_n_s_all; -static PyObject *__pyx_n_s_cline_in_traceback; -static PyObject *__pyx_n_s_function; -static PyObject *__pyx_n_s_getcurrent; -static PyObject *__pyx_n_s_gevent___greenlet_primitives; -static PyObject *__pyx_n_s_gevent__util; -static PyObject *__pyx_n_s_gevent_exceptions; -static PyObject *__pyx_n_s_greenlet; -static PyObject *__pyx_n_s_greenlet_imported; -static PyObject *__pyx_n_s_greenlet_init; -static PyObject *__pyx_n_s_greenlet_switch; -static PyObject *__pyx_n_s_import; -static PyObject *__pyx_n_s_import_c_accel; -static PyObject *__pyx_n_s_init; -static PyObject *__pyx_n_s_init_2; -static PyObject *__pyx_n_s_lambda; -static PyObject *__pyx_n_s_main; -static PyObject *__pyx_n_s_parent; -static PyObject *__pyx_n_s_pyx_capi; -static PyObject *__pyx_n_s_pyx_vtable; -static PyObject *__pyx_n_s_ref; -static PyObject *__pyx_n_s_self; -static PyObject *__pyx_n_s_spawn_tree_locals; -static PyObject *__pyx_n_s_spawning_greenlet; -static PyObject *__pyx_kp_s_src_gevent__greenlet_primitives; -static PyObject *__pyx_n_s_switch; -static PyObject *__pyx_n_s_switch_out; -static PyObject *__pyx_n_s_test; -static PyObject *__pyx_n_s_weakref; -static PyObject *__pyx_n_s_wref; -static PyObject *__pyx_lambda_funcdef_6gevent_21__greenlet_primitives_lambda(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ -static int __pyx_pf_6gevent_21__greenlet_primitives_18TrackedRawGreenlet___init__(struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet *__pyx_v_self, PyObject *__pyx_v_function, PyObject *__pyx_v_parent); /* proto */ -static PyObject *__pyx_pf_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_switch(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_2switch_out(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_4loop___get__(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_4loop_2__set__(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static int __pyx_pf_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_4loop_4__del__(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_21__greenlet_primitives__init(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ -static PyObject *__pyx_tp_new_6gevent_21__greenlet_primitives_TrackedRawGreenlet(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tuple_; -static PyObject *__pyx_tuple__2; -static PyObject *__pyx_tuple__3; -static PyObject *__pyx_tuple__5; -static PyObject *__pyx_codeobj__4; -static PyObject *__pyx_codeobj__6; -static PyObject *__pyx_codeobj__7; -/* Late includes */ - -/* "src/gevent/_greenlet_primitives.py":25 - * # error. - * locals()['getcurrent'] = __import__('greenlet').getcurrent - * locals()['greenlet_init'] = lambda: None # <<<<<<<<<<<<<< - * locals()['_greenlet_switch'] = greenlet.switch - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_21__greenlet_primitives_2lambda(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyMethodDef __pyx_mdef_6gevent_21__greenlet_primitives_2lambda = {"lambda", (PyCFunction)__pyx_pw_6gevent_21__greenlet_primitives_2lambda, METH_NOARGS, 0}; -static PyObject *__pyx_pw_6gevent_21__greenlet_primitives_2lambda(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("lambda (wrapper)", 0); - __pyx_r = __pyx_lambda_funcdef_6gevent_21__greenlet_primitives_lambda(__pyx_self); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_lambda_funcdef_6gevent_21__greenlet_primitives_lambda(CYTHON_UNUSED PyObject *__pyx_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("lambda", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_greenlet_primitives.py":35 - * class TrackedRawGreenlet(greenlet): - * - * def __init__(self, function, parent): # <<<<<<<<<<<<<< - * greenlet.__init__(self, function, parent) - * # See greenlet.py's Greenlet class. We capture the cheap - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_21__greenlet_primitives_18TrackedRawGreenlet_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_21__greenlet_primitives_18TrackedRawGreenlet_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_function = 0; - PyObject *__pyx_v_parent = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_function,&__pyx_n_s_parent,0}; - PyObject* values[2] = {0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_function)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_parent)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 35, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 35, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - } - __pyx_v_function = values[0]; - __pyx_v_parent = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 35, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.__greenlet_primitives.TrackedRawGreenlet.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_21__greenlet_primitives_18TrackedRawGreenlet___init__(((struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet *)__pyx_v_self), __pyx_v_function, __pyx_v_parent); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_21__greenlet_primitives_18TrackedRawGreenlet___init__(struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet *__pyx_v_self, PyObject *__pyx_v_function, PyObject *__pyx_v_parent) { - PyGreenlet *__pyx_v_current = NULL; - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - int __pyx_t_9; - __Pyx_RefNannySetupContext("__init__", 0); - - /* "src/gevent/_greenlet_primitives.py":36 - * - * def __init__(self, function, parent): - * greenlet.__init__(self, function, parent) # <<<<<<<<<<<<<< - * # See greenlet.py's Greenlet class. We capture the cheap - * # parts to maintain the tree structure, but we do not capture - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_6gevent_21__greenlet_primitives_greenlet), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 36, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - __pyx_t_4 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_4 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[4] = {__pyx_t_3, ((PyObject *)__pyx_v_self), __pyx_v_function, __pyx_v_parent}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 36, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[4] = {__pyx_t_3, ((PyObject *)__pyx_v_self), __pyx_v_function, __pyx_v_parent}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 36, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_5 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 36, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (__pyx_t_3) { - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; - } - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, ((PyObject *)__pyx_v_self)); - __Pyx_INCREF(__pyx_v_function); - __Pyx_GIVEREF(__pyx_v_function); - PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_function); - __Pyx_INCREF(__pyx_v_parent); - __Pyx_GIVEREF(__pyx_v_parent); - PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_parent); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 36, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_greenlet_primitives.py":41 - * # the stack because that's too expensive for 'spawn_raw'. - * - * current = getcurrent() # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * self.spawning_greenlet = wref(current) - * # See Greenlet for how trees are maintained. - */ - __pyx_t_1 = ((PyObject *)__pyx_f_6gevent_21__greenlet_primitives_getcurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 41, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_current = ((PyGreenlet *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/_greenlet_primitives.py":42 - * - * current = getcurrent() # pylint:disable=undefined-variable - * self.spawning_greenlet = wref(current) # <<<<<<<<<<<<<< - * # See Greenlet for how trees are maintained. - * try: - */ - __Pyx_INCREF(__pyx_v_6gevent_21__greenlet_primitives_wref); - __pyx_t_2 = __pyx_v_6gevent_21__greenlet_primitives_wref; __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_5) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_current)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 42, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_5, ((PyObject *)__pyx_v_current)}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 42, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_5, ((PyObject *)__pyx_v_current)}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 42, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 42, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __pyx_t_5 = NULL; - __Pyx_INCREF(((PyObject *)__pyx_v_current)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_current)); - PyTuple_SET_ITEM(__pyx_t_3, 0+1, ((PyObject *)__pyx_v_current)); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 42, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_spawning_greenlet, __pyx_t_1) < 0) __PYX_ERR(0, 42, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_greenlet_primitives.py":44 - * self.spawning_greenlet = wref(current) - * # See Greenlet for how trees are maintained. - * try: # <<<<<<<<<<<<<< - * self.spawn_tree_locals = current.spawn_tree_locals - * except AttributeError: - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8); - __Pyx_XGOTREF(__pyx_t_6); - __Pyx_XGOTREF(__pyx_t_7); - __Pyx_XGOTREF(__pyx_t_8); - /*try:*/ { - - /* "src/gevent/_greenlet_primitives.py":45 - * # See Greenlet for how trees are maintained. - * try: - * self.spawn_tree_locals = current.spawn_tree_locals # <<<<<<<<<<<<<< - * except AttributeError: - * self.spawn_tree_locals = {} - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_current), __pyx_n_s_spawn_tree_locals); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 45, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_1); - if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_spawn_tree_locals, __pyx_t_1) < 0) __PYX_ERR(0, 45, __pyx_L3_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_greenlet_primitives.py":44 - * self.spawning_greenlet = wref(current) - * # See Greenlet for how trees are maintained. - * try: # <<<<<<<<<<<<<< - * self.spawn_tree_locals = current.spawn_tree_locals - * except AttributeError: - */ - } - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - goto __pyx_L8_try_end; - __pyx_L3_error:; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_greenlet_primitives.py":46 - * try: - * self.spawn_tree_locals = current.spawn_tree_locals - * except AttributeError: # <<<<<<<<<<<<<< - * self.spawn_tree_locals = {} - * if current.parent: - */ - __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError); - if (__pyx_t_4) { - __Pyx_AddTraceback("gevent.__greenlet_primitives.TrackedRawGreenlet.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(0, 46, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GOTREF(__pyx_t_3); - - /* "src/gevent/_greenlet_primitives.py":47 - * self.spawn_tree_locals = current.spawn_tree_locals - * except AttributeError: - * self.spawn_tree_locals = {} # <<<<<<<<<<<<<< - * if current.parent: - * current.spawn_tree_locals = self.spawn_tree_locals - */ - __pyx_t_5 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 47, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_5); - if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_spawn_tree_locals, __pyx_t_5) < 0) __PYX_ERR(0, 47, __pyx_L5_except_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - - /* "src/gevent/_greenlet_primitives.py":48 - * except AttributeError: - * self.spawn_tree_locals = {} - * if current.parent: # <<<<<<<<<<<<<< - * current.spawn_tree_locals = self.spawn_tree_locals - * - */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_current), __pyx_n_s_parent); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 48, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 48, __pyx_L5_except_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (__pyx_t_9) { - - /* "src/gevent/_greenlet_primitives.py":49 - * self.spawn_tree_locals = {} - * if current.parent: - * current.spawn_tree_locals = self.spawn_tree_locals # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_spawn_tree_locals); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 49, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_5); - if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_current), __pyx_n_s_spawn_tree_locals, __pyx_t_5) < 0) __PYX_ERR(0, 49, __pyx_L5_except_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - - /* "src/gevent/_greenlet_primitives.py":48 - * except AttributeError: - * self.spawn_tree_locals = {} - * if current.parent: # <<<<<<<<<<<<<< - * current.spawn_tree_locals = self.spawn_tree_locals - * - */ - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L4_exception_handled; - } - goto __pyx_L5_except_error; - __pyx_L5_except_error:; - - /* "src/gevent/_greenlet_primitives.py":44 - * self.spawning_greenlet = wref(current) - * # See Greenlet for how trees are maintained. - * try: # <<<<<<<<<<<<<< - * self.spawn_tree_locals = current.spawn_tree_locals - * except AttributeError: - */ - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); - goto __pyx_L1_error; - __pyx_L4_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); - __pyx_L8_try_end:; - } - - /* "src/gevent/_greenlet_primitives.py":35 - * class TrackedRawGreenlet(greenlet): - * - * def __init__(self, function, parent): # <<<<<<<<<<<<<< - * greenlet.__init__(self, function, parent) - * # See greenlet.py's Greenlet class. We capture the cheap - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent.__greenlet_primitives.TrackedRawGreenlet.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_current); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_greenlet_primitives.py":59 - * # circular dependencies with the hub. - * - * def switch(self): # <<<<<<<<<<<<<< - * switch_out = getattr(getcurrent(), 'switch_out', None) # pylint:disable=undefined-variable - * if switch_out is not None: - */ - -static PyObject *__pyx_pw_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_1switch(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_f_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_switch(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_v_self, int __pyx_skip_dispatch) { - PyObject *__pyx_v_switch_out = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - int __pyx_t_6; - __Pyx_RefNannySetupContext("switch", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_switch); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 59, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_1switch)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 59, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 59, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/_greenlet_primitives.py":60 - * - * def switch(self): - * switch_out = getattr(getcurrent(), 'switch_out', None) # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * if switch_out is not None: - * switch_out() - */ - __pyx_t_1 = ((PyObject *)__pyx_f_6gevent_21__greenlet_primitives_getcurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 60, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_GetAttr3(__pyx_t_1, __pyx_n_s_switch_out, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 60, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_switch_out = __pyx_t_2; - __pyx_t_2 = 0; - - /* "src/gevent/_greenlet_primitives.py":61 - * def switch(self): - * switch_out = getattr(getcurrent(), 'switch_out', None) # pylint:disable=undefined-variable - * if switch_out is not None: # <<<<<<<<<<<<<< - * switch_out() - * return _greenlet_switch(self) # pylint:disable=undefined-variable - */ - __pyx_t_5 = (__pyx_v_switch_out != Py_None); - __pyx_t_6 = (__pyx_t_5 != 0); - if (__pyx_t_6) { - - /* "src/gevent/_greenlet_primitives.py":62 - * switch_out = getattr(getcurrent(), 'switch_out', None) # pylint:disable=undefined-variable - * if switch_out is not None: - * switch_out() # <<<<<<<<<<<<<< - * return _greenlet_switch(self) # pylint:disable=undefined-variable - * - */ - __Pyx_INCREF(__pyx_v_switch_out); - __pyx_t_1 = __pyx_v_switch_out; __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - } - } - if (__pyx_t_3) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 62, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 62, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_greenlet_primitives.py":61 - * def switch(self): - * switch_out = getattr(getcurrent(), 'switch_out', None) # pylint:disable=undefined-variable - * if switch_out is not None: # <<<<<<<<<<<<<< - * switch_out() - * return _greenlet_switch(self) # pylint:disable=undefined-variable - */ - } - - /* "src/gevent/_greenlet_primitives.py":63 - * if switch_out is not None: - * switch_out() - * return _greenlet_switch(self) # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * - * def switch_out(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __pyx_f_6gevent_21__greenlet_primitives__greenlet_switch(((PyGreenlet *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 63, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "src/gevent/_greenlet_primitives.py":59 - * # circular dependencies with the hub. - * - * def switch(self): # <<<<<<<<<<<<<< - * switch_out = getattr(getcurrent(), 'switch_out', None) # pylint:disable=undefined-variable - * if switch_out is not None: - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent.__greenlet_primitives.SwitchOutGreenletWithLoop.switch", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_switch_out); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_1switch(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_switch[] = "SwitchOutGreenletWithLoop.switch(self)"; -static PyMethodDef __pyx_mdef_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_1switch = {"switch", (PyCFunction)__pyx_pw_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_1switch, METH_NOARGS, __pyx_doc_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_switch}; -static PyObject *__pyx_pw_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_1switch(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("switch (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_switch(((struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_switch(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("switch", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_switch(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 59, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__greenlet_primitives.SwitchOutGreenletWithLoop.switch", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_greenlet_primitives.py":65 - * return _greenlet_switch(self) # pylint:disable=undefined-variable - * - * def switch_out(self): # <<<<<<<<<<<<<< - * raise BlockingSwitchOutError('Impossible to call blocking function in the event loop callback') - * - */ - -static PyObject *__pyx_pw_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_3switch_out(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_f_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_switch_out(CYTHON_UNUSED struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_v_self, int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("switch_out", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_switch_out); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 65, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_3switch_out)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 65, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 65, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/_greenlet_primitives.py":66 - * - * def switch_out(self): - * raise BlockingSwitchOutError('Impossible to call blocking function in the event loop callback') # <<<<<<<<<<<<<< - * - * def _init(): - */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_v_6gevent_21__greenlet_primitives_BlockingSwitchOutError, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 66, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 66, __pyx_L1_error) - - /* "src/gevent/_greenlet_primitives.py":65 - * return _greenlet_switch(self) # pylint:disable=undefined-variable - * - * def switch_out(self): # <<<<<<<<<<<<<< - * raise BlockingSwitchOutError('Impossible to call blocking function in the event loop callback') - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent.__greenlet_primitives.SwitchOutGreenletWithLoop.switch_out", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_3switch_out(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_2switch_out[] = "SwitchOutGreenletWithLoop.switch_out(self)"; -static PyMethodDef __pyx_mdef_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_3switch_out = {"switch_out", (PyCFunction)__pyx_pw_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_3switch_out, METH_NOARGS, __pyx_doc_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_2switch_out}; -static PyObject *__pyx_pw_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_3switch_out(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("switch_out (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_2switch_out(((struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_2switch_out(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("switch_out", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_switch_out(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 65, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__greenlet_primitives.SwitchOutGreenletWithLoop.switch_out", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__greenlet_primitives.pxd":41 - * - * cdef class SwitchOutGreenletWithLoop(TrackedRawGreenlet): - * cdef public loop # <<<<<<<<<<<<<< - * - * cpdef switch(self) - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_4loop_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_4loop_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_4loop___get__(((struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_4loop___get__(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->loop); - __pyx_r = __pyx_v_self->loop; - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static int __pyx_pw_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_4loop_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_4loop_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_4loop_2__set__(((struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *)__pyx_v_self), ((PyObject *)__pyx_v_value)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_4loop_2__set__(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__", 0); - __Pyx_INCREF(__pyx_v_value); - __Pyx_GIVEREF(__pyx_v_value); - __Pyx_GOTREF(__pyx_v_self->loop); - __Pyx_DECREF(__pyx_v_self->loop); - __pyx_v_self->loop = __pyx_v_value; - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static int __pyx_pw_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_4loop_5__del__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_4loop_5__del__(PyObject *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_4loop_4__del__(((struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_4loop_4__del__(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__del__", 0); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->loop); - __Pyx_DECREF(__pyx_v_self->loop); - __pyx_v_self->loop = Py_None; - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_greenlet_primitives.py":68 - * raise BlockingSwitchOutError('Impossible to call blocking function in the event loop callback') - * - * def _init(): # <<<<<<<<<<<<<< - * greenlet_init() # pylint:disable=undefined-variable - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_21__greenlet_primitives_1_init(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_21__greenlet_primitives__init[] = "_init()"; -static PyMethodDef __pyx_mdef_6gevent_21__greenlet_primitives_1_init = {"_init", (PyCFunction)__pyx_pw_6gevent_21__greenlet_primitives_1_init, METH_NOARGS, __pyx_doc_6gevent_21__greenlet_primitives__init}; -static PyObject *__pyx_pw_6gevent_21__greenlet_primitives_1_init(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_init (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_21__greenlet_primitives__init(__pyx_self); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_21__greenlet_primitives__init(CYTHON_UNUSED PyObject *__pyx_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_init", 0); - - /* "src/gevent/_greenlet_primitives.py":69 - * - * def _init(): - * greenlet_init() # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * - * _init() - */ - __pyx_f_6gevent_21__greenlet_primitives_greenlet_init(); - - /* "src/gevent/_greenlet_primitives.py":68 - * raise BlockingSwitchOutError('Impossible to call blocking function in the event loop callback') - * - * def _init(): # <<<<<<<<<<<<<< - * greenlet_init() # pylint:disable=undefined-variable - * - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__greenlet_primitives.pxd":23 - * - * @cython.final - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - -static CYTHON_INLINE PyGreenlet *__pyx_f_6gevent_21__greenlet_primitives_getcurrent(void) { - PyGreenlet *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("getcurrent", 0); - - /* "gevent/__greenlet_primitives.pxd":24 - * @cython.final - * cdef inline greenlet getcurrent(): - * return PyGreenlet_GetCurrent() # <<<<<<<<<<<<<< - * - * cdef bint _greenlet_imported - */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __pyx_t_1 = ((PyObject *)PyGreenlet_GetCurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 24, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = ((PyGreenlet *)__pyx_t_1); - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "gevent/__greenlet_primitives.pxd":23 - * - * @cython.final - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__greenlet_primitives.getcurrent", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__greenlet_primitives.pxd":28 - * cdef bint _greenlet_imported - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - -static CYTHON_INLINE void __pyx_f_6gevent_21__greenlet_primitives_greenlet_init(void) { - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("greenlet_init", 0); - - /* "gevent/__greenlet_primitives.pxd":30 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - __pyx_t_1 = ((!(__pyx_v_6gevent_21__greenlet_primitives__greenlet_imported != 0)) != 0); - if (__pyx_t_1) { - - /* "gevent/__greenlet_primitives.pxd":31 - * global _greenlet_imported - * if not _greenlet_imported: - * PyGreenlet_Import() # <<<<<<<<<<<<<< - * _greenlet_imported = True - * - */ - PyGreenlet_Import(); - - /* "gevent/__greenlet_primitives.pxd":32 - * if not _greenlet_imported: - * PyGreenlet_Import() - * _greenlet_imported = True # <<<<<<<<<<<<<< - * - * cdef inline object _greenlet_switch(greenlet self): - */ - __pyx_v_6gevent_21__greenlet_primitives__greenlet_imported = 1; - - /* "gevent/__greenlet_primitives.pxd":30 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - } - - /* "gevent/__greenlet_primitives.pxd":28 - * cdef bint _greenlet_imported - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -/* "gevent/__greenlet_primitives.pxd":34 - * _greenlet_imported = True - * - * cdef inline object _greenlet_switch(greenlet self): # <<<<<<<<<<<<<< - * return PyGreenlet_Switch(self, NULL, NULL) - * - */ - -static CYTHON_INLINE PyObject *__pyx_f_6gevent_21__greenlet_primitives__greenlet_switch(PyGreenlet *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_greenlet_switch", 0); - - /* "gevent/__greenlet_primitives.pxd":35 - * - * cdef inline object _greenlet_switch(greenlet self): - * return PyGreenlet_Switch(self, NULL, NULL) # <<<<<<<<<<<<<< - * - * cdef class TrackedRawGreenlet(greenlet): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyGreenlet_Switch(__pyx_v_self, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 35, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "gevent/__greenlet_primitives.pxd":34 - * _greenlet_imported = True - * - * cdef inline object _greenlet_switch(greenlet self): # <<<<<<<<<<<<<< - * return PyGreenlet_Switch(self, NULL, NULL) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__greenlet_primitives._greenlet_switch", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_tp_new_6gevent_21__greenlet_primitives_TrackedRawGreenlet(PyTypeObject *t, PyObject *a, PyObject *k) { - PyObject *o = __pyx_ptype_6gevent_21__greenlet_primitives_greenlet->tp_new(t, a, k); - if (unlikely(!o)) return 0; - return o; -} - -static PyMethodDef __pyx_methods_6gevent_21__greenlet_primitives_TrackedRawGreenlet[] = { - {0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_21__greenlet_primitives_TrackedRawGreenlet = { - PyVarObject_HEAD_INIT(0, 0) - "gevent.__greenlet_primitives.TrackedRawGreenlet", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - 0, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ - "TrackedRawGreenlet(function, parent)", /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_21__greenlet_primitives_TrackedRawGreenlet, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_21__greenlet_primitives_18TrackedRawGreenlet_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_21__greenlet_primitives_TrackedRawGreenlet, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; -static struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop __pyx_vtable_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop; - -static PyObject *__pyx_tp_new_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *p; - PyObject *o = __pyx_tp_new_6gevent_21__greenlet_primitives_TrackedRawGreenlet(t, a, k); - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *)o); - p->__pyx_vtab = __pyx_vtabptr_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop; - p->loop = Py_None; Py_INCREF(Py_None); - return o; -} - -static void __pyx_tp_dealloc_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop(PyObject *o) { - struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *p = (struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - #endif - PyObject_GC_UnTrack(o); - Py_CLEAR(p->loop); - #if CYTHON_USE_TYPE_SLOTS - if (PyType_IS_GC(Py_TYPE(o)->tp_base)) - #endif - PyObject_GC_Track(o); - if (likely(__pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet)) __pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet->tp_dealloc(o); else __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop); -} - -static int __pyx_tp_traverse_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *p = (struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *)o; - e = ((likely(__pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet)) ? ((__pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet->tp_traverse) ? __pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop)); if (e) return e; - if (p->loop) { - e = (*v)(p->loop, a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *p = (struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *)o; - if (likely(__pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet)) { if (__pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet->tp_clear) __pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop); - tmp = ((PyObject*)p->loop); - p->loop = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyObject *__pyx_getprop_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_loop(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_4loop_1__get__(o); -} - -static int __pyx_setprop_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_loop(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { - if (v) { - return __pyx_pw_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_4loop_3__set__(o, v); - } - else { - return __pyx_pw_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_4loop_5__del__(o); - } -} - -static PyMethodDef __pyx_methods_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop[] = { - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop[] = { - {(char *)"loop", __pyx_getprop_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_loop, __pyx_setprop_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_loop, (char *)"loop: object", 0}, - {0, 0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop = { - PyVarObject_HEAD_INIT(0, 0) - "gevent.__greenlet_primitives.SwitchOutGreenletWithLoop", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - 0, /*tp_doc*/ - __pyx_tp_traverse_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop, /*tp_traverse*/ - __pyx_tp_clear_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_21__greenlet_primitives_18TrackedRawGreenlet_1__init__, /*tp_init*/ - #else - 0, /*tp_init*/ - #endif - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; - -static PyMethodDef __pyx_methods[] = { - {0, 0, 0, 0} -}; - -#if PY_MAJOR_VERSION >= 3 -#if CYTHON_PEP489_MULTI_PHASE_INIT -static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ -static int __pyx_pymod_exec___greenlet_primitives(PyObject* module); /*proto*/ -static PyModuleDef_Slot __pyx_moduledef_slots[] = { - {Py_mod_create, (void*)__pyx_pymod_create}, - {Py_mod_exec, (void*)__pyx_pymod_exec___greenlet_primitives}, - {0, NULL} -}; -#endif - -static struct PyModuleDef __pyx_moduledef = { - PyModuleDef_HEAD_INIT, - "__greenlet_primitives", - __pyx_k_A_collection_of_primitives_used, /* m_doc */ - #if CYTHON_PEP489_MULTI_PHASE_INIT - 0, /* m_size */ - #else - -1, /* m_size */ - #endif - __pyx_methods /* m_methods */, - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_moduledef_slots, /* m_slots */ - #else - NULL, /* m_reload */ - #endif - NULL, /* m_traverse */ - NULL, /* m_clear */ - NULL /* m_free */ -}; -#endif - -static __Pyx_StringTabEntry __pyx_string_tab[] = { - {&__pyx_n_s_AttributeError, __pyx_k_AttributeError, sizeof(__pyx_k_AttributeError), 0, 0, 1, 1}, - {&__pyx_n_s_BlockingSwitchOutError, __pyx_k_BlockingSwitchOutError, sizeof(__pyx_k_BlockingSwitchOutError), 0, 0, 1, 1}, - {&__pyx_kp_s_Impossible_to_call_blocking_func, __pyx_k_Impossible_to_call_blocking_func, sizeof(__pyx_k_Impossible_to_call_blocking_func), 0, 0, 1, 0}, - {&__pyx_n_s_SwitchOutGreenletWithLoop, __pyx_k_SwitchOutGreenletWithLoop, sizeof(__pyx_k_SwitchOutGreenletWithLoop), 0, 0, 1, 1}, - {&__pyx_n_s_SwitchOutGreenletWithLoop_switch, __pyx_k_SwitchOutGreenletWithLoop_switch, sizeof(__pyx_k_SwitchOutGreenletWithLoop_switch), 0, 0, 1, 1}, - {&__pyx_n_s_SwitchOutGreenletWithLoop_switch_2, __pyx_k_SwitchOutGreenletWithLoop_switch_2, sizeof(__pyx_k_SwitchOutGreenletWithLoop_switch_2), 0, 0, 1, 1}, - {&__pyx_n_s_TrackedRawGreenlet, __pyx_k_TrackedRawGreenlet, sizeof(__pyx_k_TrackedRawGreenlet), 0, 0, 1, 1}, - {&__pyx_n_s_all, __pyx_k_all, sizeof(__pyx_k_all), 0, 0, 1, 1}, - {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, - {&__pyx_n_s_function, __pyx_k_function, sizeof(__pyx_k_function), 0, 0, 1, 1}, - {&__pyx_n_s_getcurrent, __pyx_k_getcurrent, sizeof(__pyx_k_getcurrent), 0, 0, 1, 1}, - {&__pyx_n_s_gevent___greenlet_primitives, __pyx_k_gevent___greenlet_primitives, sizeof(__pyx_k_gevent___greenlet_primitives), 0, 0, 1, 1}, - {&__pyx_n_s_gevent__util, __pyx_k_gevent__util, sizeof(__pyx_k_gevent__util), 0, 0, 1, 1}, - {&__pyx_n_s_gevent_exceptions, __pyx_k_gevent_exceptions, sizeof(__pyx_k_gevent_exceptions), 0, 0, 1, 1}, - {&__pyx_n_s_greenlet, __pyx_k_greenlet, sizeof(__pyx_k_greenlet), 0, 0, 1, 1}, - {&__pyx_n_s_greenlet_imported, __pyx_k_greenlet_imported, sizeof(__pyx_k_greenlet_imported), 0, 0, 1, 1}, - {&__pyx_n_s_greenlet_init, __pyx_k_greenlet_init, sizeof(__pyx_k_greenlet_init), 0, 0, 1, 1}, - {&__pyx_n_s_greenlet_switch, __pyx_k_greenlet_switch, sizeof(__pyx_k_greenlet_switch), 0, 0, 1, 1}, - {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, - {&__pyx_n_s_import_c_accel, __pyx_k_import_c_accel, sizeof(__pyx_k_import_c_accel), 0, 0, 1, 1}, - {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1}, - {&__pyx_n_s_init_2, __pyx_k_init_2, sizeof(__pyx_k_init_2), 0, 0, 1, 1}, - {&__pyx_n_s_lambda, __pyx_k_lambda, sizeof(__pyx_k_lambda), 0, 0, 1, 1}, - {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, - {&__pyx_n_s_parent, __pyx_k_parent, sizeof(__pyx_k_parent), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_capi, __pyx_k_pyx_capi, sizeof(__pyx_k_pyx_capi), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1}, - {&__pyx_n_s_ref, __pyx_k_ref, sizeof(__pyx_k_ref), 0, 0, 1, 1}, - {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1}, - {&__pyx_n_s_spawn_tree_locals, __pyx_k_spawn_tree_locals, sizeof(__pyx_k_spawn_tree_locals), 0, 0, 1, 1}, - {&__pyx_n_s_spawning_greenlet, __pyx_k_spawning_greenlet, sizeof(__pyx_k_spawning_greenlet), 0, 0, 1, 1}, - {&__pyx_kp_s_src_gevent__greenlet_primitives, __pyx_k_src_gevent__greenlet_primitives, sizeof(__pyx_k_src_gevent__greenlet_primitives), 0, 0, 1, 0}, - {&__pyx_n_s_switch, __pyx_k_switch, sizeof(__pyx_k_switch), 0, 0, 1, 1}, - {&__pyx_n_s_switch_out, __pyx_k_switch_out, sizeof(__pyx_k_switch_out), 0, 0, 1, 1}, - {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, - {&__pyx_n_s_weakref, __pyx_k_weakref, sizeof(__pyx_k_weakref), 0, 0, 1, 1}, - {&__pyx_n_s_wref, __pyx_k_wref, sizeof(__pyx_k_wref), 0, 0, 1, 1}, - {0, 0, 0, 0, 0, 0, 0} -}; -static int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin___import__ = __Pyx_GetBuiltinName(__pyx_n_s_import); if (!__pyx_builtin___import__) __PYX_ERR(0, 24, __pyx_L1_error) - __pyx_builtin_AttributeError = __Pyx_GetBuiltinName(__pyx_n_s_AttributeError); if (!__pyx_builtin_AttributeError) __PYX_ERR(0, 46, __pyx_L1_error) - return 0; - __pyx_L1_error:; - return -1; -} - -static int __Pyx_InitCachedConstants(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - - /* "src/gevent/_greenlet_primitives.py":66 - * - * def switch_out(self): - * raise BlockingSwitchOutError('Impossible to call blocking function in the event loop callback') # <<<<<<<<<<<<<< - * - * def _init(): - */ - __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_s_Impossible_to_call_blocking_func); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 66, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple_); - __Pyx_GIVEREF(__pyx_tuple_); - - /* "src/gevent/_greenlet_primitives.py":24 - * # is assignment) without generating a 'lvalue is not valid target' - * # error. - * locals()['getcurrent'] = __import__('greenlet').getcurrent # <<<<<<<<<<<<<< - * locals()['greenlet_init'] = lambda: None - * locals()['_greenlet_switch'] = greenlet.switch - */ - __pyx_tuple__2 = PyTuple_Pack(1, __pyx_n_s_greenlet); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 24, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__2); - __Pyx_GIVEREF(__pyx_tuple__2); - - /* "src/gevent/_greenlet_primitives.py":59 - * # circular dependencies with the hub. - * - * def switch(self): # <<<<<<<<<<<<<< - * switch_out = getattr(getcurrent(), 'switch_out', None) # pylint:disable=undefined-variable - * if switch_out is not None: - */ - __pyx_tuple__3 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 59, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__3); - __Pyx_GIVEREF(__pyx_tuple__3); - __pyx_codeobj__4 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__3, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__greenlet_primitives, __pyx_n_s_switch, 59, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__4)) __PYX_ERR(0, 59, __pyx_L1_error) - - /* "src/gevent/_greenlet_primitives.py":65 - * return _greenlet_switch(self) # pylint:disable=undefined-variable - * - * def switch_out(self): # <<<<<<<<<<<<<< - * raise BlockingSwitchOutError('Impossible to call blocking function in the event loop callback') - * - */ - __pyx_tuple__5 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 65, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__5); - __Pyx_GIVEREF(__pyx_tuple__5); - __pyx_codeobj__6 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__5, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__greenlet_primitives, __pyx_n_s_switch_out, 65, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__6)) __PYX_ERR(0, 65, __pyx_L1_error) - - /* "src/gevent/_greenlet_primitives.py":68 - * raise BlockingSwitchOutError('Impossible to call blocking function in the event loop callback') - * - * def _init(): # <<<<<<<<<<<<<< - * greenlet_init() # pylint:disable=undefined-variable - * - */ - __pyx_codeobj__7 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__greenlet_primitives, __pyx_n_s_init_2, 68, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__7)) __PYX_ERR(0, 68, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_InitGlobals(void) { - if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - return 0; - __pyx_L1_error:; - return -1; -} - -static int __Pyx_modinit_global_init_code(void); /*proto*/ -static int __Pyx_modinit_variable_export_code(void); /*proto*/ -static int __Pyx_modinit_function_export_code(void); /*proto*/ -static int __Pyx_modinit_type_init_code(void); /*proto*/ -static int __Pyx_modinit_type_import_code(void); /*proto*/ -static int __Pyx_modinit_variable_import_code(void); /*proto*/ -static int __Pyx_modinit_function_import_code(void); /*proto*/ - -static int __Pyx_modinit_global_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); - /*--- Global init code ---*/ - __pyx_v_6gevent_21__greenlet_primitives_wref = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_21__greenlet_primitives_BlockingSwitchOutError = Py_None; Py_INCREF(Py_None); - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_variable_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); - /*--- Variable export code ---*/ - if (__Pyx_ExportVoidPtr(__pyx_n_s_wref, (void *)&__pyx_v_6gevent_21__greenlet_primitives_wref, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_BlockingSwitchOutError, (void *)&__pyx_v_6gevent_21__greenlet_primitives_BlockingSwitchOutError, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_greenlet_imported, (void *)&__pyx_v_6gevent_21__greenlet_primitives__greenlet_imported, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_function_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); - /*--- Function export code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_type_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); - /*--- Type init code ---*/ - __pyx_ptype_6gevent_21__greenlet_primitives_greenlet = __Pyx_ImportType("greenlet", "greenlet", sizeof(PyGreenlet), 0); if (unlikely(!__pyx_ptype_6gevent_21__greenlet_primitives_greenlet)) __PYX_ERR(1, 12, __pyx_L1_error) - __pyx_type_6gevent_21__greenlet_primitives_TrackedRawGreenlet.tp_base = __pyx_ptype_6gevent_21__greenlet_primitives_greenlet; - if (PyType_Ready(&__pyx_type_6gevent_21__greenlet_primitives_TrackedRawGreenlet) < 0) __PYX_ERR(0, 33, __pyx_L1_error) - __pyx_type_6gevent_21__greenlet_primitives_TrackedRawGreenlet.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_21__greenlet_primitives_TrackedRawGreenlet.tp_dictoffset && __pyx_type_6gevent_21__greenlet_primitives_TrackedRawGreenlet.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_21__greenlet_primitives_TrackedRawGreenlet.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - if (PyObject_SetAttrString(__pyx_m, "TrackedRawGreenlet", (PyObject *)&__pyx_type_6gevent_21__greenlet_primitives_TrackedRawGreenlet) < 0) __PYX_ERR(0, 33, __pyx_L1_error) - __pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet = &__pyx_type_6gevent_21__greenlet_primitives_TrackedRawGreenlet; - __pyx_vtabptr_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop = &__pyx_vtable_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop; - __pyx_vtable_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop.__pyx_switch = (PyObject *(*)(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *, int __pyx_skip_dispatch))__pyx_f_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_switch; - __pyx_vtable_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop.switch_out = (PyObject *(*)(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *, int __pyx_skip_dispatch))__pyx_f_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_switch_out; - __pyx_type_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop.tp_base = __pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet; - if (PyType_Ready(&__pyx_type_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop) < 0) __PYX_ERR(0, 52, __pyx_L1_error) - __pyx_type_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop.tp_dictoffset && __pyx_type_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - if (__Pyx_SetVtable(__pyx_type_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop.tp_dict, __pyx_vtabptr_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop) < 0) __PYX_ERR(0, 52, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "SwitchOutGreenletWithLoop", (PyObject *)&__pyx_type_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop) < 0) __PYX_ERR(0, 52, __pyx_L1_error) - __pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop = &__pyx_type_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop; - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_type_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); - /*--- Type import code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_variable_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); - /*--- Variable import code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_function_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); - /*--- Function import code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - - -#if PY_MAJOR_VERSION < 3 -#ifdef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC void -#else -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -#endif -#else -#ifdef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC PyObject * -#else -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -#endif -#endif -#ifndef CYTHON_SMALL_CODE -#if defined(__clang__) - #define CYTHON_SMALL_CODE -#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4))) - #define CYTHON_SMALL_CODE __attribute__((cold)) -#else - #define CYTHON_SMALL_CODE -#endif -#endif - - -#if PY_MAJOR_VERSION < 3 -__Pyx_PyMODINIT_FUNC init__greenlet_primitives(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC init__greenlet_primitives(void) -#else -__Pyx_PyMODINIT_FUNC PyInit___greenlet_primitives(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC PyInit___greenlet_primitives(void) -#if CYTHON_PEP489_MULTI_PHASE_INIT -{ - return PyModuleDef_Init(&__pyx_moduledef); -} -static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) { - PyObject *value = PyObject_GetAttrString(spec, from_name); - int result = 0; - if (likely(value)) { - result = PyDict_SetItemString(moddict, to_name, value); - Py_DECREF(value); - } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Clear(); - } else { - result = -1; - } - return result; -} -static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) { - PyObject *module = NULL, *moddict, *modname; - if (__pyx_m) - return __Pyx_NewRef(__pyx_m); - modname = PyObject_GetAttrString(spec, "name"); - if (unlikely(!modname)) goto bad; - module = PyModule_NewObject(modname); - Py_DECREF(modname); - if (unlikely(!module)) goto bad; - moddict = PyModule_GetDict(module); - if (unlikely(!moddict)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__") < 0)) goto bad; - return module; -bad: - Py_XDECREF(module); - return NULL; -} - - -static int __pyx_pymod_exec___greenlet_primitives(PyObject *__pyx_pyinit_module) -#endif -#endif -{ - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannyDeclarations - #if CYTHON_PEP489_MULTI_PHASE_INIT - if (__pyx_m && __pyx_m == __pyx_pyinit_module) return 0; - #elif PY_MAJOR_VERSION >= 3 - if (__pyx_m) return __Pyx_NewRef(__pyx_m); - #endif - #if CYTHON_REFNANNY -__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); -if (!__Pyx_RefNanny) { - PyErr_Clear(); - __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); - if (!__Pyx_RefNanny) - Py_FatalError("failed to import 'refnanny' module"); -} -#endif - __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit___greenlet_primitives(void)", 0); - if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) - #ifdef __Pyx_CyFunction_USED - if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_FusedFunction_USED - if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Coroutine_USED - if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Generator_USED - if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_AsyncGen_USED - if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_StopAsyncIteration_USED - if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - /*--- Library function declarations ---*/ - /*--- Threads initialization code ---*/ - #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS - #ifdef WITH_THREAD /* Python build with threading support? */ - PyEval_InitThreads(); - #endif - #endif - /*--- Module creation code ---*/ - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_m = __pyx_pyinit_module; - Py_INCREF(__pyx_m); - #else - #if PY_MAJOR_VERSION < 3 - __pyx_m = Py_InitModule4("__greenlet_primitives", __pyx_methods, __pyx_k_A_collection_of_primitives_used, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); - #else - __pyx_m = PyModule_Create(&__pyx_moduledef); - #endif - if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) - Py_INCREF(__pyx_d); - __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) - #if CYTHON_COMPILING_IN_PYPY - Py_INCREF(__pyx_b); - #endif - if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - /*--- Initialize various global constants etc. ---*/ - if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) - if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - if (__pyx_module_is_main_gevent____greenlet_primitives) { - if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - } - #if PY_MAJOR_VERSION >= 3 - { - PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) - if (!PyDict_GetItemString(modules, "gevent.__greenlet_primitives")) { - if (unlikely(PyDict_SetItemString(modules, "gevent.__greenlet_primitives", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) - } - } - #endif - /*--- Builtin init code ---*/ - if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Constants init code ---*/ - if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Global type/function init code ---*/ - (void)__Pyx_modinit_global_init_code(); - if (unlikely(__Pyx_modinit_variable_export_code() != 0)) goto __pyx_L1_error; - (void)__Pyx_modinit_function_export_code(); - if (unlikely(__Pyx_modinit_type_init_code() != 0)) goto __pyx_L1_error; - (void)__Pyx_modinit_type_import_code(); - (void)__Pyx_modinit_variable_import_code(); - (void)__Pyx_modinit_function_import_code(); - /*--- Execution code ---*/ - #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) - if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - - /* "src/gevent/_greenlet_primitives.py":13 - * from __future__ import print_function - * - * from weakref import ref as wref # <<<<<<<<<<<<<< - * - * from greenlet import greenlet - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_ref); - __Pyx_GIVEREF(__pyx_n_s_ref); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_ref); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_weakref, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_ref); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_v_6gevent_21__greenlet_primitives_wref); - __Pyx_DECREF_SET(__pyx_v_6gevent_21__greenlet_primitives_wref, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_greenlet_primitives.py":15 - * from weakref import ref as wref - * - * from greenlet import greenlet # <<<<<<<<<<<<<< - * - * from gevent.exceptions import BlockingSwitchOutError - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_greenlet); - __Pyx_GIVEREF(__pyx_n_s_greenlet); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_greenlet); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_greenlet, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_greenlet_primitives.py":17 - * from greenlet import greenlet - * - * from gevent.exceptions import BlockingSwitchOutError # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 17, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_BlockingSwitchOutError); - __Pyx_GIVEREF(__pyx_n_s_BlockingSwitchOutError); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_BlockingSwitchOutError); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_gevent_exceptions, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 17, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_BlockingSwitchOutError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 17, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_v_6gevent_21__greenlet_primitives_BlockingSwitchOutError); - __Pyx_DECREF_SET(__pyx_v_6gevent_21__greenlet_primitives_BlockingSwitchOutError, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_greenlet_primitives.py":24 - * # is assignment) without generating a 'lvalue is not valid target' - * # error. - * locals()['getcurrent'] = __import__('greenlet').getcurrent # <<<<<<<<<<<<<< - * locals()['greenlet_init'] = lambda: None - * locals()['_greenlet_switch'] = greenlet.switch - */ - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin___import__, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 24, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_getcurrent); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 24, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_Globals(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 24, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (unlikely(PyDict_SetItem(__pyx_t_2, __pyx_n_s_getcurrent, __pyx_t_1) < 0)) __PYX_ERR(0, 24, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_greenlet_primitives.py":25 - * # error. - * locals()['getcurrent'] = __import__('greenlet').getcurrent - * locals()['greenlet_init'] = lambda: None # <<<<<<<<<<<<<< - * locals()['_greenlet_switch'] = greenlet.switch - * - */ - __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_21__greenlet_primitives_2lambda, 0, __pyx_n_s_lambda, NULL, __pyx_n_s_gevent___greenlet_primitives, __pyx_d, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 25, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_Globals(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 25, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (unlikely(PyDict_SetItem(__pyx_t_2, __pyx_n_s_greenlet_init, __pyx_t_1) < 0)) __PYX_ERR(0, 25, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_greenlet_primitives.py":26 - * locals()['getcurrent'] = __import__('greenlet').getcurrent - * locals()['greenlet_init'] = lambda: None - * locals()['_greenlet_switch'] = greenlet.switch # <<<<<<<<<<<<<< - * - * __all__ = [ - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_6gevent_21__greenlet_primitives_greenlet), __pyx_n_s_switch); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 26, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_Globals(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 26, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (unlikely(PyDict_SetItem(__pyx_t_2, __pyx_n_s_greenlet_switch, __pyx_t_1) < 0)) __PYX_ERR(0, 26, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_greenlet_primitives.py":28 - * locals()['_greenlet_switch'] = greenlet.switch - * - * __all__ = [ # <<<<<<<<<<<<<< - * 'TrackedRawGreenlet', - * 'SwitchOutGreenletWithLoop', - */ - __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 28, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_TrackedRawGreenlet); - __Pyx_GIVEREF(__pyx_n_s_TrackedRawGreenlet); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_TrackedRawGreenlet); - __Pyx_INCREF(__pyx_n_s_SwitchOutGreenletWithLoop); - __Pyx_GIVEREF(__pyx_n_s_SwitchOutGreenletWithLoop); - PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_SwitchOutGreenletWithLoop); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_all, __pyx_t_1) < 0) __PYX_ERR(0, 28, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_greenlet_primitives.py":59 - * # circular dependencies with the hub. - * - * def switch(self): # <<<<<<<<<<<<<< - * switch_out = getattr(getcurrent(), 'switch_out', None) # pylint:disable=undefined-variable - * if switch_out is not None: - */ - __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_1switch, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SwitchOutGreenletWithLoop_switch, NULL, __pyx_n_s_gevent___greenlet_primitives, __pyx_d, ((PyObject *)__pyx_codeobj__4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 59, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop->tp_dict, __pyx_n_s_switch, __pyx_t_1) < 0) __PYX_ERR(0, 59, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - PyType_Modified(__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop); - - /* "src/gevent/_greenlet_primitives.py":65 - * return _greenlet_switch(self) # pylint:disable=undefined-variable - * - * def switch_out(self): # <<<<<<<<<<<<<< - * raise BlockingSwitchOutError('Impossible to call blocking function in the event loop callback') - * - */ - __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_21__greenlet_primitives_25SwitchOutGreenletWithLoop_3switch_out, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SwitchOutGreenletWithLoop_switch_2, NULL, __pyx_n_s_gevent___greenlet_primitives, __pyx_d, ((PyObject *)__pyx_codeobj__6)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 65, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop->tp_dict, __pyx_n_s_switch_out, __pyx_t_1) < 0) __PYX_ERR(0, 65, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - PyType_Modified(__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop); - - /* "src/gevent/_greenlet_primitives.py":68 - * raise BlockingSwitchOutError('Impossible to call blocking function in the event loop callback') - * - * def _init(): # <<<<<<<<<<<<<< - * greenlet_init() # pylint:disable=undefined-variable - * - */ - __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_21__greenlet_primitives_1_init, 0, __pyx_n_s_init_2, NULL, __pyx_n_s_gevent___greenlet_primitives, __pyx_d, ((PyObject *)__pyx_codeobj__7)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 68, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_init_2, __pyx_t_1) < 0) __PYX_ERR(0, 68, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_greenlet_primitives.py":71 - * greenlet_init() # pylint:disable=undefined-variable - * - * _init() # <<<<<<<<<<<<<< - * - * from gevent._util import import_c_accel - */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_init_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 71, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 71, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_greenlet_primitives.py":73 - * _init() - * - * from gevent._util import import_c_accel # <<<<<<<<<<<<<< - * import_c_accel(globals(), 'gevent.__greenlet_primitives') - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 73, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_import_c_accel); - __Pyx_GIVEREF(__pyx_n_s_import_c_accel); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_import_c_accel); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_gevent__util, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 73, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_import_c_accel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 73, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_import_c_accel, __pyx_t_2) < 0) __PYX_ERR(0, 73, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_greenlet_primitives.py":74 - * - * from gevent._util import import_c_accel - * import_c_accel(globals(), 'gevent.__greenlet_primitives') # <<<<<<<<<<<<<< - */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_import_c_accel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 74, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_Globals(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 74, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 74, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_gevent___greenlet_primitives); - __Pyx_GIVEREF(__pyx_n_s_gevent___greenlet_primitives); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_gevent___greenlet_primitives); - __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 74, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_greenlet_primitives.py":1 - * # -*- coding: utf-8 -*- # <<<<<<<<<<<<<< - * # copyright (c) 2018 gevent. See LICENSE. - * # cython: auto_pickle=False,embedsignature=True,always_allow_keywords=False - */ - __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/__greenlet_primitives.pxd":34 - * _greenlet_imported = True - * - * cdef inline object _greenlet_switch(greenlet self): # <<<<<<<<<<<<<< - * return PyGreenlet_Switch(self, NULL, NULL) - * - */ - - /*--- Wrapped vars code ---*/ - - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - if (__pyx_m) { - if (__pyx_d) { - __Pyx_AddTraceback("init gevent.__greenlet_primitives", 0, __pyx_lineno, __pyx_filename); - } - Py_DECREF(__pyx_m); __pyx_m = 0; - } else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_ImportError, "init gevent.__greenlet_primitives"); - } - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - #if CYTHON_PEP489_MULTI_PHASE_INIT - return (__pyx_m != NULL) ? 0 : -1; - #elif PY_MAJOR_VERSION >= 3 - return __pyx_m; - #else - return; - #endif -} - -/* --- Runtime support code --- */ -/* Refnanny */ -#if CYTHON_REFNANNY -static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { - PyObject *m = NULL, *p = NULL; - void *r = NULL; - m = PyImport_ImportModule((char *)modname); - if (!m) goto end; - p = PyObject_GetAttrString(m, (char *)"RefNannyAPI"); - if (!p) goto end; - r = PyLong_AsVoidPtr(p); -end: - Py_XDECREF(p); - Py_XDECREF(m); - return (__Pyx_RefNannyAPIStruct *)r; -} -#endif - -/* PyObjectGetAttrStr */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_getattro)) - return tp->tp_getattro(obj, attr_name); -#if PY_MAJOR_VERSION < 3 - if (likely(tp->tp_getattr)) - return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); -#endif - return PyObject_GetAttr(obj, attr_name); -} -#endif - -/* GetBuiltinName */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name) { - PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); - if (unlikely(!result)) { - PyErr_Format(PyExc_NameError, -#if PY_MAJOR_VERSION >= 3 - "name '%U' is not defined", name); -#else - "name '%.200s' is not defined", PyString_AS_STRING(name)); -#endif - } - return result; -} - -/* RaiseArgTupleInvalid */ -static void __Pyx_RaiseArgtupleInvalid( - const char* func_name, - int exact, - Py_ssize_t num_min, - Py_ssize_t num_max, - Py_ssize_t num_found) -{ - Py_ssize_t num_expected; - const char *more_or_less; - if (num_found < num_min) { - num_expected = num_min; - more_or_less = "at least"; - } else { - num_expected = num_max; - more_or_less = "at most"; - } - if (exact) { - more_or_less = "exactly"; - } - PyErr_Format(PyExc_TypeError, - "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", - func_name, more_or_less, num_expected, - (num_expected == 1) ? "" : "s", num_found); -} - -/* RaiseDoubleKeywords */ -static void __Pyx_RaiseDoubleKeywordsError( - const char* func_name, - PyObject* kw_name) -{ - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION >= 3 - "%s() got multiple values for keyword argument '%U'", func_name, kw_name); - #else - "%s() got multiple values for keyword argument '%s'", func_name, - PyString_AsString(kw_name)); - #endif -} - -/* ParseKeywords */ -static int __Pyx_ParseOptionalKeywords( - PyObject *kwds, - PyObject **argnames[], - PyObject *kwds2, - PyObject *values[], - Py_ssize_t num_pos_args, - const char* function_name) -{ - PyObject *key = 0, *value = 0; - Py_ssize_t pos = 0; - PyObject*** name; - PyObject*** first_kw_arg = argnames + num_pos_args; - while (PyDict_Next(kwds, &pos, &key, &value)) { - name = first_kw_arg; - while (*name && (**name != key)) name++; - if (*name) { - values[name-argnames] = value; - continue; - } - name = first_kw_arg; - #if PY_MAJOR_VERSION < 3 - if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) { - while (*name) { - if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) - && _PyString_Eq(**name, key)) { - values[name-argnames] = value; - break; - } - name++; - } - if (*name) continue; - else { - PyObject*** argname = argnames; - while (argname != first_kw_arg) { - if ((**argname == key) || ( - (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) - && _PyString_Eq(**argname, key))) { - goto arg_passed_twice; - } - argname++; - } - } - } else - #endif - if (likely(PyUnicode_Check(key))) { - while (*name) { - int cmp = (**name == key) ? 0 : - #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 : - #endif - PyUnicode_Compare(**name, key); - if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; - if (cmp == 0) { - values[name-argnames] = value; - break; - } - name++; - } - if (*name) continue; - else { - PyObject*** argname = argnames; - while (argname != first_kw_arg) { - int cmp = (**argname == key) ? 0 : - #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 : - #endif - PyUnicode_Compare(**argname, key); - if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; - if (cmp == 0) goto arg_passed_twice; - argname++; - } - } - } else - goto invalid_keyword_type; - if (kwds2) { - if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; - } else { - goto invalid_keyword; - } - } - return 0; -arg_passed_twice: - __Pyx_RaiseDoubleKeywordsError(function_name, key); - goto bad; -invalid_keyword_type: - PyErr_Format(PyExc_TypeError, - "%.200s() keywords must be strings", function_name); - goto bad; -invalid_keyword: - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION < 3 - "%.200s() got an unexpected keyword argument '%.200s'", - function_name, PyString_AsString(key)); - #else - "%s() got an unexpected keyword argument '%U'", - function_name, key); - #endif -bad: - return -1; -} - -/* PyFunctionFastCall */ -#if CYTHON_FAST_PYCALL -#include "frameobject.h" -static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, - PyObject *globals) { - PyFrameObject *f; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject **fastlocals; - Py_ssize_t i; - PyObject *result; - assert(globals != NULL); - /* XXX Perhaps we should create a specialized - PyFrame_New() that doesn't take locals, but does - take builtins without sanity checking them. - */ - assert(tstate != NULL); - f = PyFrame_New(tstate, co, globals, NULL); - if (f == NULL) { - return NULL; - } - fastlocals = f->f_localsplus; - for (i = 0; i < na; i++) { - Py_INCREF(*args); - fastlocals[i] = *args++; - } - result = PyEval_EvalFrameEx(f,0); - ++tstate->recursion_depth; - Py_DECREF(f); - --tstate->recursion_depth; - return result; -} -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs) { - PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); - PyObject *globals = PyFunction_GET_GLOBALS(func); - PyObject *argdefs = PyFunction_GET_DEFAULTS(func); - PyObject *closure; -#if PY_MAJOR_VERSION >= 3 - PyObject *kwdefs; -#endif - PyObject *kwtuple, **k; - PyObject **d; - Py_ssize_t nd; - Py_ssize_t nk; - PyObject *result; - assert(kwargs == NULL || PyDict_Check(kwargs)); - nk = kwargs ? PyDict_Size(kwargs) : 0; - if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { - return NULL; - } - if ( -#if PY_MAJOR_VERSION >= 3 - co->co_kwonlyargcount == 0 && -#endif - likely(kwargs == NULL || nk == 0) && - co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { - if (argdefs == NULL && co->co_argcount == nargs) { - result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); - goto done; - } - else if (nargs == 0 && argdefs != NULL - && co->co_argcount == Py_SIZE(argdefs)) { - /* function called with no arguments, but all parameters have - a default value: use default values as arguments .*/ - args = &PyTuple_GET_ITEM(argdefs, 0); - result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); - goto done; - } - } - if (kwargs != NULL) { - Py_ssize_t pos, i; - kwtuple = PyTuple_New(2 * nk); - if (kwtuple == NULL) { - result = NULL; - goto done; - } - k = &PyTuple_GET_ITEM(kwtuple, 0); - pos = i = 0; - while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { - Py_INCREF(k[i]); - Py_INCREF(k[i+1]); - i += 2; - } - nk = i / 2; - } - else { - kwtuple = NULL; - k = NULL; - } - closure = PyFunction_GET_CLOSURE(func); -#if PY_MAJOR_VERSION >= 3 - kwdefs = PyFunction_GET_KW_DEFAULTS(func); -#endif - if (argdefs != NULL) { - d = &PyTuple_GET_ITEM(argdefs, 0); - nd = Py_SIZE(argdefs); - } - else { - d = NULL; - nd = 0; - } -#if PY_MAJOR_VERSION >= 3 - result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, - args, nargs, - k, (int)nk, - d, (int)nd, kwdefs, closure); -#else - result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, - args, nargs, - k, (int)nk, - d, (int)nd, closure); -#endif - Py_XDECREF(kwtuple); -done: - Py_LeaveRecursiveCall(); - return result; -} -#endif -#endif - -/* PyCFunctionFastCall */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { - PyCFunctionObject *func = (PyCFunctionObject*)func_obj; - PyCFunction meth = PyCFunction_GET_FUNCTION(func); - PyObject *self = PyCFunction_GET_SELF(func); - int flags = PyCFunction_GET_FLAGS(func); - assert(PyCFunction_Check(func)); - assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))); - assert(nargs >= 0); - assert(nargs == 0 || args != NULL); - /* _PyCFunction_FastCallDict() must not be called with an exception set, - because it may clear it (directly or indirectly) and so the - caller loses its exception */ - assert(!PyErr_Occurred()); - if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { - return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL); - } else { - return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs); - } -} -#endif - -/* PyObjectCall */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { - PyObject *result; - ternaryfunc call = func->ob_type->tp_call; - if (unlikely(!call)) - return PyObject_Call(func, arg, kw); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = (*call)(func, arg, kw); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCallMethO */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { - PyObject *self, *result; - PyCFunction cfunc; - cfunc = PyCFunction_GET_FUNCTION(func); - self = PyCFunction_GET_SELF(func); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = cfunc(self, arg); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCallOneArg */ -#if CYTHON_COMPILING_IN_CPYTHON -static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_New(1); - if (unlikely(!args)) return NULL; - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 0, arg); - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, &arg, 1); - } -#endif - if (likely(PyCFunction_Check(func))) { - if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { - return __Pyx_PyObject_CallMethO(func, arg); -#if CYTHON_FAST_PYCCALL - } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { - return __Pyx_PyCFunction_FastCall(func, &arg, 1); -#endif - } - } - return __Pyx__PyObject_CallOneArg(func, arg); -} -#else -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_Pack(1, arg); - if (unlikely(!args)) return NULL; - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -#endif - -/* PyObjectSetAttrStr */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_setattro)) - return tp->tp_setattro(obj, attr_name, value); -#if PY_MAJOR_VERSION < 3 - if (likely(tp->tp_setattr)) - return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value); -#endif - return PyObject_SetAttr(obj, attr_name, value); -} -#endif - -/* SaveResetException */ -#if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - #if PY_VERSION_HEX >= 0x030700A3 - *type = tstate->exc_state.exc_type; - *value = tstate->exc_state.exc_value; - *tb = tstate->exc_state.exc_traceback; - #else - *type = tstate->exc_type; - *value = tstate->exc_value; - *tb = tstate->exc_traceback; - #endif - Py_XINCREF(*type); - Py_XINCREF(*value); - Py_XINCREF(*tb); -} -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - #if PY_VERSION_HEX >= 0x030700A3 - tmp_type = tstate->exc_state.exc_type; - tmp_value = tstate->exc_state.exc_value; - tmp_tb = tstate->exc_state.exc_traceback; - tstate->exc_state.exc_type = type; - tstate->exc_state.exc_value = value; - tstate->exc_state.exc_traceback = tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = type; - tstate->exc_value = value; - tstate->exc_traceback = tb; - #endif - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} -#endif - -/* PyErrExceptionMatches */ -#if CYTHON_FAST_THREAD_STATE -static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; i<n; i++) { - if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1; - } -#endif - for (i=0; i<n; i++) { - if (__Pyx_PyErr_GivenExceptionMatches(exc_type, PyTuple_GET_ITEM(tuple, i))) return 1; - } - return 0; -} -static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) { - PyObject *exc_type = tstate->curexc_type; - if (exc_type == err) return 1; - if (unlikely(!exc_type)) return 0; - if (unlikely(PyTuple_Check(err))) - return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); - return __Pyx_PyErr_GivenExceptionMatches(exc_type, err); -} -#endif - -/* GetException */ -#if CYTHON_FAST_THREAD_STATE -static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { -#else -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) { -#endif - PyObject *local_type, *local_value, *local_tb; -#if CYTHON_FAST_THREAD_STATE - PyObject *tmp_type, *tmp_value, *tmp_tb; - local_type = tstate->curexc_type; - local_value = tstate->curexc_value; - local_tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -#else - PyErr_Fetch(&local_type, &local_value, &local_tb); -#endif - PyErr_NormalizeException(&local_type, &local_value, &local_tb); -#if CYTHON_FAST_THREAD_STATE - if (unlikely(tstate->curexc_type)) -#else - if (unlikely(PyErr_Occurred())) -#endif - goto bad; - #if PY_MAJOR_VERSION >= 3 - if (local_tb) { - if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) - goto bad; - } - #endif - Py_XINCREF(local_tb); - Py_XINCREF(local_type); - Py_XINCREF(local_value); - *type = local_type; - *value = local_value; - *tb = local_tb; -#if CYTHON_FAST_THREAD_STATE - #if PY_VERSION_HEX >= 0x030700A3 - tmp_type = tstate->exc_state.exc_type; - tmp_value = tstate->exc_state.exc_value; - tmp_tb = tstate->exc_state.exc_traceback; - tstate->exc_state.exc_type = local_type; - tstate->exc_state.exc_value = local_value; - tstate->exc_state.exc_traceback = local_tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = local_type; - tstate->exc_value = local_value; - tstate->exc_traceback = local_tb; - #endif - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -#else - PyErr_SetExcInfo(local_type, local_value, local_tb); -#endif - return 0; -bad: - *type = 0; - *value = 0; - *tb = 0; - Py_XDECREF(local_type); - Py_XDECREF(local_value); - Py_XDECREF(local_tb); - return -1; -} - -/* PyObjectCallNoArg */ - #if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, NULL, 0); - } -#endif -#ifdef __Pyx_CyFunction_USED - if (likely(PyCFunction_Check(func) || __Pyx_TypeCheck(func, __pyx_CyFunctionType))) { -#else - if (likely(PyCFunction_Check(func))) { -#endif - if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { - return __Pyx_PyObject_CallMethO(func, NULL); - } - } - return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL); -} -#endif - -/* PyErrFetchRestore */ - #if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - tmp_type = tstate->curexc_type; - tmp_value = tstate->curexc_value; - tmp_tb = tstate->curexc_traceback; - tstate->curexc_type = type; - tstate->curexc_value = value; - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - *type = tstate->curexc_type; - *value = tstate->curexc_value; - *tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -} -#endif - -/* GetAttr */ - static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) { -#if CYTHON_USE_TYPE_SLOTS -#if PY_MAJOR_VERSION >= 3 - if (likely(PyUnicode_Check(n))) -#else - if (likely(PyString_Check(n))) -#endif - return __Pyx_PyObject_GetAttrStr(o, n); -#endif - return PyObject_GetAttr(o, n); -} - -/* GetAttr3 */ - static PyObject *__Pyx_GetAttr3Default(PyObject *d) { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) - return NULL; - __Pyx_PyErr_Clear(); - Py_INCREF(d); - return d; -} -static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) { - PyObject *r = __Pyx_GetAttr(o, n); - return (likely(r)) ? r : __Pyx_GetAttr3Default(d); -} - -/* RaiseException */ - #if PY_MAJOR_VERSION < 3 -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, - CYTHON_UNUSED PyObject *cause) { - __Pyx_PyThreadState_declare - Py_XINCREF(type); - if (!value || value == Py_None) - value = NULL; - else - Py_INCREF(value); - if (!tb || tb == Py_None) - tb = NULL; - else { - Py_INCREF(tb); - if (!PyTraceBack_Check(tb)) { - PyErr_SetString(PyExc_TypeError, - "raise: arg 3 must be a traceback or None"); - goto raise_error; - } - } - if (PyType_Check(type)) { -#if CYTHON_COMPILING_IN_PYPY - if (!value) { - Py_INCREF(Py_None); - value = Py_None; - } -#endif - PyErr_NormalizeException(&type, &value, &tb); - } else { - if (value) { - PyErr_SetString(PyExc_TypeError, - "instance exception may not have a separate value"); - goto raise_error; - } - value = type; - type = (PyObject*) Py_TYPE(type); - Py_INCREF(type); - if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { - PyErr_SetString(PyExc_TypeError, - "raise: exception class must be a subclass of BaseException"); - goto raise_error; - } - } - __Pyx_PyThreadState_assign - __Pyx_ErrRestore(type, value, tb); - return; -raise_error: - Py_XDECREF(value); - Py_XDECREF(type); - Py_XDECREF(tb); - return; -} -#else -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { - PyObject* owned_instance = NULL; - if (tb == Py_None) { - tb = 0; - } else if (tb && !PyTraceBack_Check(tb)) { - PyErr_SetString(PyExc_TypeError, - "raise: arg 3 must be a traceback or None"); - goto bad; - } - if (value == Py_None) - value = 0; - if (PyExceptionInstance_Check(type)) { - if (value) { - PyErr_SetString(PyExc_TypeError, - "instance exception may not have a separate value"); - goto bad; - } - value = type; - type = (PyObject*) Py_TYPE(value); - } else if (PyExceptionClass_Check(type)) { - PyObject *instance_class = NULL; - if (value && PyExceptionInstance_Check(value)) { - instance_class = (PyObject*) Py_TYPE(value); - if (instance_class != type) { - int is_subclass = PyObject_IsSubclass(instance_class, type); - if (!is_subclass) { - instance_class = NULL; - } else if (unlikely(is_subclass == -1)) { - goto bad; - } else { - type = instance_class; - } - } - } - if (!instance_class) { - PyObject *args; - if (!value) - args = PyTuple_New(0); - else if (PyTuple_Check(value)) { - Py_INCREF(value); - args = value; - } else - args = PyTuple_Pack(1, value); - if (!args) - goto bad; - owned_instance = PyObject_Call(type, args, NULL); - Py_DECREF(args); - if (!owned_instance) - goto bad; - value = owned_instance; - if (!PyExceptionInstance_Check(value)) { - PyErr_Format(PyExc_TypeError, - "calling %R should have returned an instance of " - "BaseException, not %R", - type, Py_TYPE(value)); - goto bad; - } - } - } else { - PyErr_SetString(PyExc_TypeError, - "raise: exception class must be a subclass of BaseException"); - goto bad; - } - if (cause) { - PyObject *fixed_cause; - if (cause == Py_None) { - fixed_cause = NULL; - } else if (PyExceptionClass_Check(cause)) { - fixed_cause = PyObject_CallObject(cause, NULL); - if (fixed_cause == NULL) - goto bad; - } else if (PyExceptionInstance_Check(cause)) { - fixed_cause = cause; - Py_INCREF(fixed_cause); - } else { - PyErr_SetString(PyExc_TypeError, - "exception causes must derive from " - "BaseException"); - goto bad; - } - PyException_SetCause(value, fixed_cause); - } - PyErr_SetObject(type, value); - if (tb) { -#if CYTHON_COMPILING_IN_PYPY - PyObject *tmp_type, *tmp_value, *tmp_tb; - PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); - Py_INCREF(tb); - PyErr_Restore(tmp_type, tmp_value, tb); - Py_XDECREF(tmp_tb); -#else - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject* tmp_tb = tstate->curexc_traceback; - if (tb != tmp_tb) { - Py_INCREF(tb); - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_tb); - } -#endif - } -bad: - Py_XDECREF(owned_instance); - return; -} -#endif - -/* CallNextTpDealloc */ - static void __Pyx_call_next_tp_dealloc(PyObject* obj, destructor current_tp_dealloc) { - PyTypeObject* type = Py_TYPE(obj); - while (type && type->tp_dealloc != current_tp_dealloc) - type = type->tp_base; - while (type && type->tp_dealloc == current_tp_dealloc) - type = type->tp_base; - if (type) - type->tp_dealloc(obj); -} - -/* CallNextTpTraverse */ - static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse) { - PyTypeObject* type = Py_TYPE(obj); - while (type && type->tp_traverse != current_tp_traverse) - type = type->tp_base; - while (type && type->tp_traverse == current_tp_traverse) - type = type->tp_base; - if (type && type->tp_traverse) - return type->tp_traverse(obj, v, a); - return 0; -} - -/* CallNextTpClear */ - static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_clear) { - PyTypeObject* type = Py_TYPE(obj); - while (type && type->tp_clear != current_tp_clear) - type = type->tp_base; - while (type && type->tp_clear == current_tp_clear) - type = type->tp_base; - if (type && type->tp_clear) - type->tp_clear(obj); -} - -/* PyObject_GenericGetAttrNoDict */ - #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { - PyErr_Format(PyExc_AttributeError, -#if PY_MAJOR_VERSION >= 3 - "'%.50s' object has no attribute '%U'", - tp->tp_name, attr_name); -#else - "'%.50s' object has no attribute '%.400s'", - tp->tp_name, PyString_AS_STRING(attr_name)); -#endif - return NULL; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { - PyObject *descr; - PyTypeObject *tp = Py_TYPE(obj); - if (unlikely(!PyString_Check(attr_name))) { - return PyObject_GenericGetAttr(obj, attr_name); - } - assert(!tp->tp_dictoffset); - descr = _PyType_Lookup(tp, attr_name); - if (unlikely(!descr)) { - return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); - } - Py_INCREF(descr); - #if PY_MAJOR_VERSION < 3 - if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) - #endif - { - descrgetfunc f = Py_TYPE(descr)->tp_descr_get; - if (unlikely(f)) { - PyObject *res = f(descr, obj, (PyObject *)tp); - Py_DECREF(descr); - return res; - } - } - return descr; -} -#endif - -/* PyObject_GenericGetAttr */ - #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) { - if (unlikely(Py_TYPE(obj)->tp_dictoffset)) { - return PyObject_GenericGetAttr(obj, attr_name); - } - return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name); -} -#endif - -/* SetVTable */ - static int __Pyx_SetVtable(PyObject *dict, void *vtable) { -#if PY_VERSION_HEX >= 0x02070000 - PyObject *ob = PyCapsule_New(vtable, 0, 0); -#else - PyObject *ob = PyCObject_FromVoidPtr(vtable, 0); -#endif - if (!ob) - goto bad; - if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0) - goto bad; - Py_DECREF(ob); - return 0; -bad: - Py_XDECREF(ob); - return -1; -} - -/* Import */ - static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { - PyObject *empty_list = 0; - PyObject *module = 0; - PyObject *global_dict = 0; - PyObject *empty_dict = 0; - PyObject *list; - #if PY_MAJOR_VERSION < 3 - PyObject *py_import; - py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); - if (!py_import) - goto bad; - #endif - if (from_list) - list = from_list; - else { - empty_list = PyList_New(0); - if (!empty_list) - goto bad; - list = empty_list; - } - global_dict = PyModule_GetDict(__pyx_m); - if (!global_dict) - goto bad; - empty_dict = PyDict_New(); - if (!empty_dict) - goto bad; - { - #if PY_MAJOR_VERSION >= 3 - if (level == -1) { - if (strchr(__Pyx_MODULE_NAME, '.')) { - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, 1); - if (!module) { - if (!PyErr_ExceptionMatches(PyExc_ImportError)) - goto bad; - PyErr_Clear(); - } - } - level = 0; - } - #endif - if (!module) { - #if PY_MAJOR_VERSION < 3 - PyObject *py_level = PyInt_FromLong(level); - if (!py_level) - goto bad; - module = PyObject_CallFunctionObjArgs(py_import, - name, global_dict, empty_dict, list, py_level, NULL); - Py_DECREF(py_level); - #else - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, level); - #endif - } - } -bad: - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(py_import); - #endif - Py_XDECREF(empty_list); - Py_XDECREF(empty_dict); - return module; -} - -/* ImportFrom */ - static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { - PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); - if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Format(PyExc_ImportError, - #if PY_MAJOR_VERSION < 3 - "cannot import name %.230s", PyString_AS_STRING(name)); - #else - "cannot import name %S", name); - #endif - } - return value; -} - -/* FetchCommonType */ - static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { - PyObject* fake_module; - PyTypeObject* cached_type = NULL; - fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI); - if (!fake_module) return NULL; - Py_INCREF(fake_module); - cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name); - if (cached_type) { - if (!PyType_Check((PyObject*)cached_type)) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s is not a type object", - type->tp_name); - goto bad; - } - if (cached_type->tp_basicsize != type->tp_basicsize) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s has the wrong size, try recompiling", - type->tp_name); - goto bad; - } - } else { - if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; - PyErr_Clear(); - if (PyType_Ready(type) < 0) goto bad; - if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0) - goto bad; - Py_INCREF(type); - cached_type = type; - } -done: - Py_DECREF(fake_module); - return cached_type; -bad: - Py_XDECREF(cached_type); - cached_type = NULL; - goto done; -} - -/* CythonFunction */ - #include <structmember.h> -static PyObject * -__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure) -{ - if (unlikely(op->func_doc == NULL)) { - if (op->func.m_ml->ml_doc) { -#if PY_MAJOR_VERSION >= 3 - op->func_doc = PyUnicode_FromString(op->func.m_ml->ml_doc); -#else - op->func_doc = PyString_FromString(op->func.m_ml->ml_doc); -#endif - if (unlikely(op->func_doc == NULL)) - return NULL; - } else { - Py_INCREF(Py_None); - return Py_None; - } - } - Py_INCREF(op->func_doc); - return op->func_doc; -} -static int -__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp = op->func_doc; - if (value == NULL) { - value = Py_None; - } - Py_INCREF(value); - op->func_doc = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op) -{ - if (unlikely(op->func_name == NULL)) { -#if PY_MAJOR_VERSION >= 3 - op->func_name = PyUnicode_InternFromString(op->func.m_ml->ml_name); -#else - op->func_name = PyString_InternFromString(op->func.m_ml->ml_name); -#endif - if (unlikely(op->func_name == NULL)) - return NULL; - } - Py_INCREF(op->func_name); - return op->func_name; -} -static int -__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; -#if PY_MAJOR_VERSION >= 3 - if (unlikely(value == NULL || !PyUnicode_Check(value))) { -#else - if (unlikely(value == NULL || !PyString_Check(value))) { -#endif - PyErr_SetString(PyExc_TypeError, - "__name__ must be set to a string object"); - return -1; - } - tmp = op->func_name; - Py_INCREF(value); - op->func_name = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op) -{ - Py_INCREF(op->func_qualname); - return op->func_qualname; -} -static int -__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; -#if PY_MAJOR_VERSION >= 3 - if (unlikely(value == NULL || !PyUnicode_Check(value))) { -#else - if (unlikely(value == NULL || !PyString_Check(value))) { -#endif - PyErr_SetString(PyExc_TypeError, - "__qualname__ must be set to a string object"); - return -1; - } - tmp = op->func_qualname; - Py_INCREF(value); - op->func_qualname = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure) -{ - PyObject *self; - self = m->func_closure; - if (self == NULL) - self = Py_None; - Py_INCREF(self); - return self; -} -static PyObject * -__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op) -{ - if (unlikely(op->func_dict == NULL)) { - op->func_dict = PyDict_New(); - if (unlikely(op->func_dict == NULL)) - return NULL; - } - Py_INCREF(op->func_dict); - return op->func_dict; -} -static int -__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; - if (unlikely(value == NULL)) { - PyErr_SetString(PyExc_TypeError, - "function's dictionary may not be deleted"); - return -1; - } - if (unlikely(!PyDict_Check(value))) { - PyErr_SetString(PyExc_TypeError, - "setting function's dictionary to a non-dict"); - return -1; - } - tmp = op->func_dict; - Py_INCREF(value); - op->func_dict = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op) -{ - Py_INCREF(op->func_globals); - return op->func_globals; -} -static PyObject * -__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op) -{ - Py_INCREF(Py_None); - return Py_None; -} -static PyObject * -__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op) -{ - PyObject* result = (op->func_code) ? op->func_code : Py_None; - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { - int result = 0; - PyObject *res = op->defaults_getter((PyObject *) op); - if (unlikely(!res)) - return -1; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - op->defaults_tuple = PyTuple_GET_ITEM(res, 0); - Py_INCREF(op->defaults_tuple); - op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); - Py_INCREF(op->defaults_kwdict); - #else - op->defaults_tuple = PySequence_ITEM(res, 0); - if (unlikely(!op->defaults_tuple)) result = -1; - else { - op->defaults_kwdict = PySequence_ITEM(res, 1); - if (unlikely(!op->defaults_kwdict)) result = -1; - } - #endif - Py_DECREF(res); - return result; -} -static int -__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value) { - value = Py_None; - } else if (value != Py_None && !PyTuple_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__defaults__ must be set to a tuple object"); - return -1; - } - Py_INCREF(value); - tmp = op->defaults_tuple; - op->defaults_tuple = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) { - PyObject* result = op->defaults_tuple; - if (unlikely(!result)) { - if (op->defaults_getter) { - if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; - result = op->defaults_tuple; - } else { - result = Py_None; - } - } - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value) { - value = Py_None; - } else if (value != Py_None && !PyDict_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__kwdefaults__ must be set to a dict object"); - return -1; - } - Py_INCREF(value); - tmp = op->defaults_kwdict; - op->defaults_kwdict = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) { - PyObject* result = op->defaults_kwdict; - if (unlikely(!result)) { - if (op->defaults_getter) { - if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; - result = op->defaults_kwdict; - } else { - result = Py_None; - } - } - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value || value == Py_None) { - value = NULL; - } else if (!PyDict_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__annotations__ must be set to a dict object"); - return -1; - } - Py_XINCREF(value); - tmp = op->func_annotations; - op->func_annotations = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op) { - PyObject* result = op->func_annotations; - if (unlikely(!result)) { - result = PyDict_New(); - if (unlikely(!result)) return NULL; - op->func_annotations = result; - } - Py_INCREF(result); - return result; -} -static PyGetSetDef __pyx_CyFunction_getsets[] = { - {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, - {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, - {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, - {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, - {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, - {(char *) "__self__", (getter)__Pyx_CyFunction_get_self, 0, 0, 0}, - {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, - {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, - {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, - {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, - {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, - {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, - {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, - {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, - {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, - {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, - {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, - {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, - {0, 0, 0, 0, 0} -}; -static PyMemberDef __pyx_CyFunction_members[] = { - {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), PY_WRITE_RESTRICTED, 0}, - {0, 0, 0, 0, 0} -}; -static PyObject * -__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args) -{ -#if PY_MAJOR_VERSION >= 3 - return PyUnicode_FromString(m->func.m_ml->ml_name); -#else - return PyString_FromString(m->func.m_ml->ml_name); -#endif -} -static PyMethodDef __pyx_CyFunction_methods[] = { - {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, - {0, 0, 0, 0} -}; -#if PY_VERSION_HEX < 0x030500A0 -#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) -#else -#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func.m_weakreflist) -#endif -static PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *ml, int flags, PyObject* qualname, - PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { - __pyx_CyFunctionObject *op = PyObject_GC_New(__pyx_CyFunctionObject, type); - if (op == NULL) - return NULL; - op->flags = flags; - __Pyx_CyFunction_weakreflist(op) = NULL; - op->func.m_ml = ml; - op->func.m_self = (PyObject *) op; - Py_XINCREF(closure); - op->func_closure = closure; - Py_XINCREF(module); - op->func.m_module = module; - op->func_dict = NULL; - op->func_name = NULL; - Py_INCREF(qualname); - op->func_qualname = qualname; - op->func_doc = NULL; - op->func_classobj = NULL; - op->func_globals = globals; - Py_INCREF(op->func_globals); - Py_XINCREF(code); - op->func_code = code; - op->defaults_pyobjects = 0; - op->defaults = NULL; - op->defaults_tuple = NULL; - op->defaults_kwdict = NULL; - op->defaults_getter = NULL; - op->func_annotations = NULL; - PyObject_GC_Track(op); - return (PyObject *) op; -} -static int -__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) -{ - Py_CLEAR(m->func_closure); - Py_CLEAR(m->func.m_module); - Py_CLEAR(m->func_dict); - Py_CLEAR(m->func_name); - Py_CLEAR(m->func_qualname); - Py_CLEAR(m->func_doc); - Py_CLEAR(m->func_globals); - Py_CLEAR(m->func_code); - Py_CLEAR(m->func_classobj); - Py_CLEAR(m->defaults_tuple); - Py_CLEAR(m->defaults_kwdict); - Py_CLEAR(m->func_annotations); - if (m->defaults) { - PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); - int i; - for (i = 0; i < m->defaults_pyobjects; i++) - Py_XDECREF(pydefaults[i]); - PyObject_Free(m->defaults); - m->defaults = NULL; - } - return 0; -} -static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) -{ - if (__Pyx_CyFunction_weakreflist(m) != NULL) - PyObject_ClearWeakRefs((PyObject *) m); - __Pyx_CyFunction_clear(m); - PyObject_GC_Del(m); -} -static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) -{ - PyObject_GC_UnTrack(m); - __Pyx__CyFunction_dealloc(m); -} -static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) -{ - Py_VISIT(m->func_closure); - Py_VISIT(m->func.m_module); - Py_VISIT(m->func_dict); - Py_VISIT(m->func_name); - Py_VISIT(m->func_qualname); - Py_VISIT(m->func_doc); - Py_VISIT(m->func_globals); - Py_VISIT(m->func_code); - Py_VISIT(m->func_classobj); - Py_VISIT(m->defaults_tuple); - Py_VISIT(m->defaults_kwdict); - if (m->defaults) { - PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); - int i; - for (i = 0; i < m->defaults_pyobjects; i++) - Py_VISIT(pydefaults[i]); - } - return 0; -} -static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type) -{ - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) { - Py_INCREF(func); - return func; - } - if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) { - if (type == NULL) - type = (PyObject *)(Py_TYPE(obj)); - return __Pyx_PyMethod_New(func, type, (PyObject *)(Py_TYPE(type))); - } - if (obj == Py_None) - obj = NULL; - return __Pyx_PyMethod_New(func, obj, type); -} -static PyObject* -__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) -{ -#if PY_MAJOR_VERSION >= 3 - return PyUnicode_FromFormat("<cyfunction %U at %p>", - op->func_qualname, (void *)op); -#else - return PyString_FromFormat("<cyfunction %s at %p>", - PyString_AsString(op->func_qualname), (void *)op); -#endif -} -static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { - PyCFunctionObject* f = (PyCFunctionObject*)func; - PyCFunction meth = f->m_ml->ml_meth; - Py_ssize_t size; - switch (f->m_ml->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { - case METH_VARARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) - return (*meth)(self, arg); - break; - case METH_VARARGS | METH_KEYWORDS: - return (*(PyCFunctionWithKeywords)meth)(self, arg, kw); - case METH_NOARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { - size = PyTuple_GET_SIZE(arg); - if (likely(size == 0)) - return (*meth)(self, NULL); - PyErr_Format(PyExc_TypeError, - "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", - f->m_ml->ml_name, size); - return NULL; - } - break; - case METH_O: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { - size = PyTuple_GET_SIZE(arg); - if (likely(size == 1)) { - PyObject *result, *arg0; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - arg0 = PyTuple_GET_ITEM(arg, 0); - #else - arg0 = PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; - #endif - result = (*meth)(self, arg0); - #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) - Py_DECREF(arg0); - #endif - return result; - } - PyErr_Format(PyExc_TypeError, - "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", - f->m_ml->ml_name, size); - return NULL; - } - break; - default: - PyErr_SetString(PyExc_SystemError, "Bad call flags in " - "__Pyx_CyFunction_Call. METH_OLDARGS is no " - "longer supported!"); - return NULL; - } - PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", - f->m_ml->ml_name); - return NULL; -} -static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { - return __Pyx_CyFunction_CallMethod(func, ((PyCFunctionObject*)func)->m_self, arg, kw); -} -static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { - PyObject *result; - __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; - if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { - Py_ssize_t argc; - PyObject *new_args; - PyObject *self; - argc = PyTuple_GET_SIZE(args); - new_args = PyTuple_GetSlice(args, 1, argc); - if (unlikely(!new_args)) - return NULL; - self = PyTuple_GetItem(args, 0); - if (unlikely(!self)) { - Py_DECREF(new_args); - return NULL; - } - result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); - Py_DECREF(new_args); - } else { - result = __Pyx_CyFunction_Call(func, args, kw); - } - return result; -} -static PyTypeObject __pyx_CyFunctionType_type = { - PyVarObject_HEAD_INIT(0, 0) - "cython_function_or_method", - sizeof(__pyx_CyFunctionObject), - 0, - (destructor) __Pyx_CyFunction_dealloc, - 0, - 0, - 0, -#if PY_MAJOR_VERSION < 3 - 0, -#else - 0, -#endif - (reprfunc) __Pyx_CyFunction_repr, - 0, - 0, - 0, - 0, - __Pyx_CyFunction_CallAsMethod, - 0, - 0, - 0, - 0, - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, - 0, - (traverseproc) __Pyx_CyFunction_traverse, - (inquiry) __Pyx_CyFunction_clear, - 0, -#if PY_VERSION_HEX < 0x030500A0 - offsetof(__pyx_CyFunctionObject, func_weakreflist), -#else - offsetof(PyCFunctionObject, m_weakreflist), -#endif - 0, - 0, - __pyx_CyFunction_methods, - __pyx_CyFunction_members, - __pyx_CyFunction_getsets, - 0, - 0, - __Pyx_CyFunction_descr_get, - 0, - offsetof(__pyx_CyFunctionObject, func_dict), - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, -#if PY_VERSION_HEX >= 0x030400a1 - 0, -#endif -}; -static int __pyx_CyFunction_init(void) { - __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); - if (unlikely(__pyx_CyFunctionType == NULL)) { - return -1; - } - return 0; -} -static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults = PyObject_Malloc(size); - if (unlikely(!m->defaults)) - return PyErr_NoMemory(); - memset(m->defaults, 0, size); - m->defaults_pyobjects = pyobjects; - return m->defaults; -} -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults_tuple = tuple; - Py_INCREF(tuple); -} -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults_kwdict = dict; - Py_INCREF(dict); -} -static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->func_annotations = dict; - Py_INCREF(dict); -} - -/* GetModuleGlobalName */ - static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { - PyObject *result; -#if !CYTHON_AVOID_BORROWED_REFS -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 - result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); - if (likely(result)) { - Py_INCREF(result); - } else if (unlikely(PyErr_Occurred())) { - result = NULL; - } else { -#else - result = PyDict_GetItem(__pyx_d, name); - if (likely(result)) { - Py_INCREF(result); - } else { -#endif -#else - result = PyObject_GetItem(__pyx_d, name); - if (!result) { - PyErr_Clear(); -#endif - result = __Pyx_GetBuiltinName(name); - } - return result; -} - -/* Globals */ - static PyObject* __Pyx_Globals(void) { - Py_ssize_t i; - PyObject *names; - PyObject *globals = __pyx_d; - Py_INCREF(globals); - names = PyObject_Dir(__pyx_m); - if (!names) - goto bad; - for (i = PyList_GET_SIZE(names)-1; i >= 0; i--) { -#if CYTHON_COMPILING_IN_PYPY - PyObject* name = PySequence_ITEM(names, i); - if (!name) - goto bad; -#else - PyObject* name = PyList_GET_ITEM(names, i); -#endif - if (!PyDict_Contains(globals, name)) { - PyObject* value = __Pyx_GetAttr(__pyx_m, name); - if (!value) { -#if CYTHON_COMPILING_IN_PYPY - Py_DECREF(name); -#endif - goto bad; - } - if (PyDict_SetItem(globals, name, value) < 0) { -#if CYTHON_COMPILING_IN_PYPY - Py_DECREF(name); -#endif - Py_DECREF(value); - goto bad; - } - } -#if CYTHON_COMPILING_IN_PYPY - Py_DECREF(name); -#endif - } - Py_DECREF(names); - return globals; -bad: - Py_XDECREF(names); - Py_XDECREF(globals); - return NULL; -} - -/* CLineInTraceback */ - #ifndef CYTHON_CLINE_IN_TRACEBACK -static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) { - PyObject *use_cline; - PyObject *ptype, *pvalue, *ptraceback; -#if CYTHON_COMPILING_IN_CPYTHON - PyObject **cython_runtime_dict; -#endif - if (unlikely(!__pyx_cython_runtime)) { - return c_line; - } - __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); -#if CYTHON_COMPILING_IN_CPYTHON - cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); - if (likely(cython_runtime_dict)) { - use_cline = __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback); - } else -#endif - { - PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); - if (use_cline_obj) { - use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; - Py_DECREF(use_cline_obj); - } else { - PyErr_Clear(); - use_cline = NULL; - } - } - if (!use_cline) { - c_line = 0; - PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); - } - else if (PyObject_Not(use_cline) != 0) { - c_line = 0; - } - __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); - return c_line; -} -#endif - -/* CodeObjectCache */ - static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { - int start = 0, mid = 0, end = count - 1; - if (end >= 0 && code_line > entries[end].code_line) { - return count; - } - while (start < end) { - mid = start + (end - start) / 2; - if (code_line < entries[mid].code_line) { - end = mid; - } else if (code_line > entries[mid].code_line) { - start = mid + 1; - } else { - return mid; - } - } - if (code_line <= entries[mid].code_line) { - return mid; - } else { - return mid + 1; - } -} -static PyCodeObject *__pyx_find_code_object(int code_line) { - PyCodeObject* code_object; - int pos; - if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { - return NULL; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { - return NULL; - } - code_object = __pyx_code_cache.entries[pos].code_object; - Py_INCREF(code_object); - return code_object; -} -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { - int pos, i; - __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; - if (unlikely(!code_line)) { - return; - } - if (unlikely(!entries)) { - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); - if (likely(entries)) { - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = 64; - __pyx_code_cache.count = 1; - entries[0].code_line = code_line; - entries[0].code_object = code_object; - Py_INCREF(code_object); - } - return; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { - PyCodeObject* tmp = entries[pos].code_object; - entries[pos].code_object = code_object; - Py_DECREF(tmp); - return; - } - if (__pyx_code_cache.count == __pyx_code_cache.max_count) { - int new_max = __pyx_code_cache.max_count + 64; - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( - __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry)); - if (unlikely(!entries)) { - return; - } - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = new_max; - } - for (i=__pyx_code_cache.count; i>pos; i--) { - entries[i] = entries[i-1]; - } - entries[pos].code_line = code_line; - entries[pos].code_object = code_object; - __pyx_code_cache.count++; - Py_INCREF(code_object); -} - -/* AddTraceback */ - #include "compile.h" -#include "frameobject.h" -#include "traceback.h" -static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( - const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyObject *py_srcfile = 0; - PyObject *py_funcname = 0; - #if PY_MAJOR_VERSION < 3 - py_srcfile = PyString_FromString(filename); - #else - py_srcfile = PyUnicode_FromString(filename); - #endif - if (!py_srcfile) goto bad; - if (c_line) { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #else - py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #endif - } - else { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromString(funcname); - #else - py_funcname = PyUnicode_FromString(funcname); - #endif - } - if (!py_funcname) goto bad; - py_code = __Pyx_PyCode_New( - 0, - 0, - 0, - 0, - 0, - __pyx_empty_bytes, /*PyObject *code,*/ - __pyx_empty_tuple, /*PyObject *consts,*/ - __pyx_empty_tuple, /*PyObject *names,*/ - __pyx_empty_tuple, /*PyObject *varnames,*/ - __pyx_empty_tuple, /*PyObject *freevars,*/ - __pyx_empty_tuple, /*PyObject *cellvars,*/ - py_srcfile, /*PyObject *filename,*/ - py_funcname, /*PyObject *name,*/ - py_line, - __pyx_empty_bytes /*PyObject *lnotab*/ - ); - Py_DECREF(py_srcfile); - Py_DECREF(py_funcname); - return py_code; -bad: - Py_XDECREF(py_srcfile); - Py_XDECREF(py_funcname); - return NULL; -} -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyFrameObject *py_frame = 0; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - if (c_line) { - c_line = __Pyx_CLineForTraceback(tstate, c_line); - } - py_code = __pyx_find_code_object(c_line ? -c_line : py_line); - if (!py_code) { - py_code = __Pyx_CreateCodeObjectForTraceback( - funcname, c_line, py_line, filename); - if (!py_code) goto bad; - __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); - } - py_frame = PyFrame_New( - tstate, /*PyThreadState *tstate,*/ - py_code, /*PyCodeObject *code,*/ - __pyx_d, /*PyObject *globals,*/ - 0 /*PyObject *locals*/ - ); - if (!py_frame) goto bad; - __Pyx_PyFrame_SetLineNumber(py_frame, py_line); - PyTraceBack_Here(py_frame); -bad: - Py_XDECREF(py_code); - Py_XDECREF(py_frame); -} - -/* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { - const long neg_one = (long) -1, const_zero = (long) 0; - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(long) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(long) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -#endif - } - } else { - if (sizeof(long) <= sizeof(long)) { - return PyInt_FromLong((long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); -#endif - } - } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; - return _PyLong_FromByteArray(bytes, sizeof(long), - little, !is_unsigned); - } -} - -/* CIntFromPyVerify */ - #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) -#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) -#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ - {\ - func_type value = func_value;\ - if (sizeof(target_type) < sizeof(func_type)) {\ - if (unlikely(value != (func_type) (target_type) value)) {\ - func_type zero = 0;\ - if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ - return (target_type) -1;\ - if (is_unsigned && unlikely(value < zero))\ - goto raise_neg_overflow;\ - else\ - goto raise_overflow;\ - }\ - }\ - return (target_type) value;\ - } - -/* CIntFromPy */ - static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { - const long neg_one = (long) -1, const_zero = (long) 0; - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(long) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (long) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { - return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { - return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { - return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (long) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(long) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) - case -2: - if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - } -#endif - if (sizeof(long) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - long val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (long) -1; - } - } else { - long val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (long) -1; - val = __Pyx_PyInt_As_long(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to long"); - return (long) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to long"); - return (long) -1; -} - -/* CIntFromPy */ - static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { - const int neg_one = (int) -1, const_zero = (int) 0; - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(int) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (int) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (int) 0; - case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { - return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { - return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { - return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (int) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(int) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (int) 0; - case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) - case -2: - if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - } -#endif - if (sizeof(int) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - int val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (int) -1; - } - } else { - int val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (int) -1; - val = __Pyx_PyInt_As_int(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to int"); - return (int) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to int"); - return (int) -1; -} - -/* FastTypeChecks */ - #if CYTHON_COMPILING_IN_CPYTHON -static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { - while (a) { - a = a->tp_base; - if (a == b) - return 1; - } - return b == &PyBaseObject_Type; -} -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { - PyObject *mro; - if (a == b) return 1; - mro = a->tp_mro; - if (likely(mro)) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(mro); - for (i = 0; i < n; i++) { - if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) - return 1; - } - return 0; - } - return __Pyx_InBases(a, b); -} -#if PY_MAJOR_VERSION == 2 -static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { - PyObject *exception, *value, *tb; - int res; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&exception, &value, &tb); - res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - if (!res) { - res = PyObject_IsSubclass(err, exc_type2); - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - } - __Pyx_ErrRestore(exception, value, tb); - return res; -} -#else -static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { - int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0; - if (!res) { - res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); - } - return res; -} -#endif -static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - assert(PyExceptionClass_Check(exc_type)); - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; i<n; i++) { - if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1; - } -#endif - for (i=0; i<n; i++) { - PyObject *t = PyTuple_GET_ITEM(tuple, i); - #if PY_MAJOR_VERSION < 3 - if (likely(exc_type == t)) return 1; - #endif - if (likely(PyExceptionClass_Check(t))) { - if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1; - } else { - } - } - return 0; -} -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) { - if (likely(err == exc_type)) return 1; - if (likely(PyExceptionClass_Check(err))) { - if (likely(PyExceptionClass_Check(exc_type))) { - return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type); - } else if (likely(PyTuple_Check(exc_type))) { - return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type); - } else { - } - } - return PyErr_GivenExceptionMatches(err, exc_type); -} -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) { - assert(PyExceptionClass_Check(exc_type1)); - assert(PyExceptionClass_Check(exc_type2)); - if (likely(err == exc_type1 || err == exc_type2)) return 1; - if (likely(PyExceptionClass_Check(err))) { - return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2); - } - return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2)); -} -#endif - -/* CheckBinaryVersion */ - static int __Pyx_check_binary_version(void) { - char ctversion[4], rtversion[4]; - PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); - PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); - if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) { - char message[200]; - PyOS_snprintf(message, sizeof(message), - "compiletime version %s of module '%.100s' " - "does not match runtime version %s", - ctversion, __Pyx_MODULE_NAME, rtversion); - return PyErr_WarnEx(NULL, message, 1); - } - return 0; -} - -/* VoidPtrExport */ - static int __Pyx_ExportVoidPtr(PyObject *name, void *p, const char *sig) { - PyObject *d; - PyObject *cobj = 0; - d = PyDict_GetItem(__pyx_d, __pyx_n_s_pyx_capi); - Py_XINCREF(d); - if (!d) { - d = PyDict_New(); - if (!d) - goto bad; - if (__Pyx_PyObject_SetAttrStr(__pyx_m, __pyx_n_s_pyx_capi, d) < 0) - goto bad; - } -#if PY_VERSION_HEX >= 0x02070000 - cobj = PyCapsule_New(p, sig, 0); -#else - cobj = PyCObject_FromVoidPtrAndDesc(p, (void *)sig, 0); -#endif - if (!cobj) - goto bad; - if (PyDict_SetItem(d, name, cobj) < 0) - goto bad; - Py_DECREF(cobj); - Py_DECREF(d); - return 0; -bad: - Py_XDECREF(cobj); - Py_XDECREF(d); - return -1; -} - -/* ModuleImport */ - #ifndef __PYX_HAVE_RT_ImportModule -#define __PYX_HAVE_RT_ImportModule -static PyObject *__Pyx_ImportModule(const char *name) { - PyObject *py_name = 0; - PyObject *py_module = 0; - py_name = __Pyx_PyIdentifier_FromString(name); - if (!py_name) - goto bad; - py_module = PyImport_Import(py_name); - Py_DECREF(py_name); - return py_module; -bad: - Py_XDECREF(py_name); - return 0; -} -#endif - -/* TypeImport */ - #ifndef __PYX_HAVE_RT_ImportType -#define __PYX_HAVE_RT_ImportType -static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, - size_t size, int strict) -{ - PyObject *py_module = 0; - PyObject *result = 0; - PyObject *py_name = 0; - char warning[200]; - Py_ssize_t basicsize; -#ifdef Py_LIMITED_API - PyObject *py_basicsize; -#endif - py_module = __Pyx_ImportModule(module_name); - if (!py_module) - goto bad; - py_name = __Pyx_PyIdentifier_FromString(class_name); - if (!py_name) - goto bad; - result = PyObject_GetAttr(py_module, py_name); - Py_DECREF(py_name); - py_name = 0; - Py_DECREF(py_module); - py_module = 0; - if (!result) - goto bad; - if (!PyType_Check(result)) { - PyErr_Format(PyExc_TypeError, - "%.200s.%.200s is not a type object", - module_name, class_name); - goto bad; - } -#ifndef Py_LIMITED_API - basicsize = ((PyTypeObject *)result)->tp_basicsize; -#else - py_basicsize = PyObject_GetAttrString(result, "__basicsize__"); - if (!py_basicsize) - goto bad; - basicsize = PyLong_AsSsize_t(py_basicsize); - Py_DECREF(py_basicsize); - py_basicsize = 0; - if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred()) - goto bad; -#endif - if (!strict && (size_t)basicsize > size) { - PyOS_snprintf(warning, sizeof(warning), - "%s.%s size changed, may indicate binary incompatibility. Expected %zd, got %zd", - module_name, class_name, basicsize, size); - if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad; - } - else if ((size_t)basicsize != size) { - PyErr_Format(PyExc_ValueError, - "%.200s.%.200s has the wrong size, try recompiling. Expected %zd, got %zd", - module_name, class_name, basicsize, size); - goto bad; - } - return (PyTypeObject *)result; -bad: - Py_XDECREF(py_module); - Py_XDECREF(result); - return NULL; -} -#endif - -/* InitStrings */ - static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { - while (t->p) { - #if PY_MAJOR_VERSION < 3 - if (t->is_unicode) { - *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); - } else if (t->intern) { - *t->p = PyString_InternFromString(t->s); - } else { - *t->p = PyString_FromStringAndSize(t->s, t->n - 1); - } - #else - if (t->is_unicode | t->is_str) { - if (t->intern) { - *t->p = PyUnicode_InternFromString(t->s); - } else if (t->encoding) { - *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL); - } else { - *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1); - } - } else { - *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1); - } - #endif - if (!*t->p) - return -1; - if (PyObject_Hash(*t->p) == -1) - return -1; - ++t; - } - return 0; -} - -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { - return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); -} -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { - Py_ssize_t ignore; - return __Pyx_PyObject_AsStringAndSize(o, &ignore); -} -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -#if !CYTHON_PEP393_ENABLED -static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - char* defenc_c; - PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); - if (!defenc) return NULL; - defenc_c = PyBytes_AS_STRING(defenc); -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - { - char* end = defenc_c + PyBytes_GET_SIZE(defenc); - char* c; - for (c = defenc_c; c < end; c++) { - if ((unsigned char) (*c) >= 128) { - PyUnicode_AsASCIIString(o); - return NULL; - } - } - } -#endif - *length = PyBytes_GET_SIZE(defenc); - return defenc_c; -} -#else -static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - if (likely(PyUnicode_IS_ASCII(o))) { - *length = PyUnicode_GET_LENGTH(o); - return PyUnicode_AsUTF8(o); - } else { - PyUnicode_AsASCIIString(o); - return NULL; - } -#else - return PyUnicode_AsUTF8AndSize(o, length); -#endif -} -#endif -#endif -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT - if ( -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - __Pyx_sys_getdefaultencoding_not_ascii && -#endif - PyUnicode_Check(o)) { - return __Pyx_PyUnicode_AsStringAndSize(o, length); - } else -#endif -#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) - if (PyByteArray_Check(o)) { - *length = PyByteArray_GET_SIZE(o); - return PyByteArray_AS_STRING(o); - } else -#endif - { - char* result; - int r = PyBytes_AsStringAndSize(o, &result, length); - if (unlikely(r < 0)) { - return NULL; - } else { - return result; - } - } -} -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { - int is_true = x == Py_True; - if (is_true | (x == Py_False) | (x == Py_None)) return is_true; - else return PyObject_IsTrue(x); -} -static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { -#if PY_MAJOR_VERSION >= 3 - if (PyLong_Check(result)) { - if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, - "__int__ returned non-int (type %.200s). " - "The ability to return an instance of a strict subclass of int " - "is deprecated, and may be removed in a future version of Python.", - Py_TYPE(result)->tp_name)) { - Py_DECREF(result); - return NULL; - } - return result; - } -#endif - PyErr_Format(PyExc_TypeError, - "__%.4s__ returned non-%.4s (type %.200s)", - type_name, type_name, Py_TYPE(result)->tp_name); - Py_DECREF(result); - return NULL; -} -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { -#if CYTHON_USE_TYPE_SLOTS - PyNumberMethods *m; -#endif - const char *name = NULL; - PyObject *res = NULL; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x) || PyLong_Check(x))) -#else - if (likely(PyLong_Check(x))) -#endif - return __Pyx_NewRef(x); -#if CYTHON_USE_TYPE_SLOTS - m = Py_TYPE(x)->tp_as_number; - #if PY_MAJOR_VERSION < 3 - if (m && m->nb_int) { - name = "int"; - res = m->nb_int(x); - } - else if (m && m->nb_long) { - name = "long"; - res = m->nb_long(x); - } - #else - if (likely(m && m->nb_int)) { - name = "int"; - res = m->nb_int(x); - } - #endif -#else - if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { - res = PyNumber_Int(x); - } -#endif - if (likely(res)) { -#if PY_MAJOR_VERSION < 3 - if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { -#else - if (unlikely(!PyLong_CheckExact(res))) { -#endif - return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); - } - } - else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_TypeError, - "an integer is required"); - } - return res; -} -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { - Py_ssize_t ival; - PyObject *x; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(b))) { - if (sizeof(Py_ssize_t) >= sizeof(long)) - return PyInt_AS_LONG(b); - else - return PyInt_AsSsize_t(x); - } -#endif - if (likely(PyLong_CheckExact(b))) { - #if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)b)->ob_digit; - const Py_ssize_t size = Py_SIZE(b); - if (likely(__Pyx_sst_abs(size) <= 1)) { - ival = likely(size) ? digits[0] : 0; - if (size == -1) ival = -ival; - return ival; - } else { - switch (size) { - case 2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - } - } - #endif - return PyLong_AsSsize_t(b); - } - x = PyNumber_Index(b); - if (!x) return -1; - ival = PyInt_AsSsize_t(x); - Py_DECREF(x); - return ival; -} -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { - return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); -} -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { - return PyInt_FromSize_t(ival); -} - - -#endif /* Py_PYTHON_H */ diff --git a/python/gevent/_greenlet_primitives.py b/python/gevent/_greenlet_primitives.py deleted file mode 100644 index 706f71b..0000000 --- a/python/gevent/_greenlet_primitives.py +++ /dev/null @@ -1,74 +0,0 @@ -# -*- coding: utf-8 -*- -# copyright (c) 2018 gevent. See LICENSE. -# cython: auto_pickle=False,embedsignature=True,always_allow_keywords=False -""" -A collection of primitives used by the hub, and suitable for -compilation with Cython because of their frequency of use. - -""" -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function - -from weakref import ref as wref - -from greenlet import greenlet - -from gevent.exceptions import BlockingSwitchOutError - - -# In Cython, we define these as 'cdef inline' functions. The -# compilation unit cannot have a direct assignment to them (import -# is assignment) without generating a 'lvalue is not valid target' -# error. -locals()['getcurrent'] = __import__('greenlet').getcurrent -locals()['greenlet_init'] = lambda: None -locals()['_greenlet_switch'] = greenlet.switch - -__all__ = [ - 'TrackedRawGreenlet', - 'SwitchOutGreenletWithLoop', -] - -class TrackedRawGreenlet(greenlet): - - def __init__(self, function, parent): - greenlet.__init__(self, function, parent) - # See greenlet.py's Greenlet class. We capture the cheap - # parts to maintain the tree structure, but we do not capture - # the stack because that's too expensive for 'spawn_raw'. - - current = getcurrent() # pylint:disable=undefined-variable - self.spawning_greenlet = wref(current) - # See Greenlet for how trees are maintained. - try: - self.spawn_tree_locals = current.spawn_tree_locals - except AttributeError: - self.spawn_tree_locals = {} - if current.parent: - current.spawn_tree_locals = self.spawn_tree_locals - - -class SwitchOutGreenletWithLoop(TrackedRawGreenlet): - # Subclasses must define: - # - self.loop - - # This class defines loop in its .pxd for Cython. This lets us avoid - # circular dependencies with the hub. - - def switch(self): - switch_out = getattr(getcurrent(), 'switch_out', None) # pylint:disable=undefined-variable - if switch_out is not None: - switch_out() - return _greenlet_switch(self) # pylint:disable=undefined-variable - - def switch_out(self): - raise BlockingSwitchOutError('Impossible to call blocking function in the event loop callback') - -def _init(): - greenlet_init() # pylint:disable=undefined-variable - -_init() - -from gevent._util import import_c_accel -import_c_accel(globals(), 'gevent.__greenlet_primitives') diff --git a/python/gevent/_hub_local.c b/python/gevent/_hub_local.c deleted file mode 100644 index 40bec7c..0000000 --- a/python/gevent/_hub_local.c +++ /dev/null @@ -1,5720 +0,0 @@ -/* Generated by Cython 0.28.5 */ - -/* BEGIN: Cython Metadata -{ - "distutils": { - "depends": [ - "src/gevent/__hub_local.pxd", - "src\\gevent\\__hub_local.pxd" - ], - "include_dirs": [ - "C:\\Python36\\Include", - "deps" - ], - "name": "gevent.__hub_local", - "sources": [ - "src/gevent/_hub_local.py" - ] - }, - "module_name": "gevent.__hub_local" -} -END: Cython Metadata */ - -#define PY_SSIZE_T_CLEAN -#include "Python.h" -#ifndef Py_PYTHON_H - #error Python headers needed to compile C extensions, please install development version of Python. -#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) - #error Cython requires Python 2.6+ or Python 3.3+. -#else -#define CYTHON_ABI "0_28_5" -#define CYTHON_FUTURE_DIVISION 1 -#include <stddef.h> -#ifndef offsetof - #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) -#endif -#if !defined(WIN32) && !defined(MS_WINDOWS) - #ifndef __stdcall - #define __stdcall - #endif - #ifndef __cdecl - #define __cdecl - #endif - #ifndef __fastcall - #define __fastcall - #endif -#endif -#ifndef DL_IMPORT - #define DL_IMPORT(t) t -#endif -#ifndef DL_EXPORT - #define DL_EXPORT(t) t -#endif -#define __PYX_COMMA , -#ifndef HAVE_LONG_LONG - #if PY_VERSION_HEX >= 0x02070000 - #define HAVE_LONG_LONG - #endif -#endif -#ifndef PY_LONG_LONG - #define PY_LONG_LONG LONG_LONG -#endif -#ifndef Py_HUGE_VAL - #define Py_HUGE_VAL HUGE_VAL -#endif -#ifdef PYPY_VERSION - #define CYTHON_COMPILING_IN_PYPY 1 - #define CYTHON_COMPILING_IN_PYSTON 0 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #undef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 0 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #if PY_VERSION_HEX < 0x03050000 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #undef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #undef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 1 - #undef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 0 - #undef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 0 - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 -#elif defined(PYSTON_VERSION) - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_PYSTON 1 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 -#else - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_PYSTON 0 - #define CYTHON_COMPILING_IN_CPYTHON 1 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #if PY_VERSION_HEX < 0x02070000 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #elif !defined(CYTHON_USE_PYTYPE_LOOKUP) - #define CYTHON_USE_PYTYPE_LOOKUP 1 - #endif - #if PY_MAJOR_VERSION < 3 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #if PY_VERSION_HEX < 0x02070000 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #elif !defined(CYTHON_USE_PYLONG_INTERNALS) - #define CYTHON_USE_PYLONG_INTERNALS 1 - #endif - #ifndef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 1 - #endif - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #if PY_VERSION_HEX < 0x030300F0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #elif !defined(CYTHON_USE_UNICODE_WRITER) - #define CYTHON_USE_UNICODE_WRITER 1 - #endif - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #ifndef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 1 - #endif - #ifndef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 1 - #endif - #ifndef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT (0 && PY_VERSION_HEX >= 0x03050000) - #endif - #ifndef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1) - #endif -#endif -#if !defined(CYTHON_FAST_PYCCALL) -#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) -#endif -#if CYTHON_USE_PYLONG_INTERNALS - #include "longintrepr.h" - #undef SHIFT - #undef BASE - #undef MASK -#endif -#ifndef __has_attribute - #define __has_attribute(x) 0 -#endif -#ifndef __has_cpp_attribute - #define __has_cpp_attribute(x) 0 -#endif -#ifndef CYTHON_RESTRICT - #if defined(__GNUC__) - #define CYTHON_RESTRICT __restrict__ - #elif defined(_MSC_VER) && _MSC_VER >= 1400 - #define CYTHON_RESTRICT __restrict - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_RESTRICT restrict - #else - #define CYTHON_RESTRICT - #endif -#endif -#ifndef CYTHON_UNUSED -# if defined(__GNUC__) -# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -#endif -#ifndef CYTHON_MAYBE_UNUSED_VAR -# if defined(__cplusplus) - template<class T> void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } -# else -# define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) -# endif -#endif -#ifndef CYTHON_NCP_UNUSED -# if CYTHON_COMPILING_IN_CPYTHON -# define CYTHON_NCP_UNUSED -# else -# define CYTHON_NCP_UNUSED CYTHON_UNUSED -# endif -#endif -#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) -#ifdef _MSC_VER - #ifndef _MSC_STDINT_H_ - #if _MSC_VER < 1300 - typedef unsigned char uint8_t; - typedef unsigned int uint32_t; - #else - typedef unsigned __int8 uint8_t; - typedef unsigned __int32 uint32_t; - #endif - #endif -#else - #include <stdint.h> -#endif -#ifndef CYTHON_FALLTHROUGH - #if defined(__cplusplus) && __cplusplus >= 201103L - #if __has_cpp_attribute(fallthrough) - #define CYTHON_FALLTHROUGH [[fallthrough]] - #elif __has_cpp_attribute(clang::fallthrough) - #define CYTHON_FALLTHROUGH [[clang::fallthrough]] - #elif __has_cpp_attribute(gnu::fallthrough) - #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] - #endif - #endif - #ifndef CYTHON_FALLTHROUGH - #if __has_attribute(fallthrough) - #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) - #else - #define CYTHON_FALLTHROUGH - #endif - #endif - #if defined(__clang__ ) && defined(__apple_build_version__) - #if __apple_build_version__ < 7000000 - #undef CYTHON_FALLTHROUGH - #define CYTHON_FALLTHROUGH - #endif - #endif -#endif - -#ifndef CYTHON_INLINE - #if defined(__clang__) - #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) - #elif defined(__GNUC__) - #define CYTHON_INLINE __inline__ - #elif defined(_MSC_VER) - #define CYTHON_INLINE __inline - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_INLINE inline - #else - #define CYTHON_INLINE - #endif -#endif - -#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) - #define Py_OptimizeFlag 0 -#endif -#define __PYX_BUILD_PY_SSIZE_T "n" -#define CYTHON_FORMAT_SSIZE_T "z" -#if PY_MAJOR_VERSION < 3 - #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) - #define __Pyx_DefaultClassType PyClass_Type -#else - #define __Pyx_BUILTIN_MODULE_NAME "builtins" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) - #define __Pyx_DefaultClassType PyType_Type -#endif -#ifndef Py_TPFLAGS_CHECKTYPES - #define Py_TPFLAGS_CHECKTYPES 0 -#endif -#ifndef Py_TPFLAGS_HAVE_INDEX - #define Py_TPFLAGS_HAVE_INDEX 0 -#endif -#ifndef Py_TPFLAGS_HAVE_NEWBUFFER - #define Py_TPFLAGS_HAVE_NEWBUFFER 0 -#endif -#ifndef Py_TPFLAGS_HAVE_FINALIZE - #define Py_TPFLAGS_HAVE_FINALIZE 0 -#endif -#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) - #ifndef METH_FASTCALL - #define METH_FASTCALL 0x80 - #endif - typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); - typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, - Py_ssize_t nargs, PyObject *kwnames); -#else - #define __Pyx_PyCFunctionFast _PyCFunctionFast - #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords -#endif -#if CYTHON_FAST_PYCCALL -#define __Pyx_PyFastCFunction_Check(func)\ - ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))))) -#else -#define __Pyx_PyFastCFunction_Check(func) 0 -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) - #define PyObject_Malloc(s) PyMem_Malloc(s) - #define PyObject_Free(p) PyMem_Free(p) - #define PyObject_Realloc(p) PyMem_Realloc(p) -#endif -#if CYTHON_COMPILING_IN_PYSTON - #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) -#else - #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) -#endif -#if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000 - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#elif PY_VERSION_HEX >= 0x03060000 - #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() -#elif PY_VERSION_HEX >= 0x03000000 - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#else - #define __Pyx_PyThreadState_Current _PyThreadState_Current -#endif -#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) -#include "pythread.h" -#define Py_tss_NEEDS_INIT 0 -typedef int Py_tss_t; -static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { - *key = PyThread_create_key(); - return 0; // PyThread_create_key reports success always -} -static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { - Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); - *key = Py_tss_NEEDS_INIT; - return key; -} -static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { - PyObject_Free(key); -} -static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { - return *key != Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { - PyThread_delete_key(*key); - *key = Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { - return PyThread_set_key_value(*key, value); -} -static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { - return PyThread_get_key_value(*key); -} -#endif // TSS (Thread Specific Storage) API -#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) -#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) -#else -#define __Pyx_PyDict_NewPresized(n) PyDict_New() -#endif -#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION - #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) -#else - #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) -#endif -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS -#define __Pyx_PyDict_GetItemStr(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) -#else -#define __Pyx_PyDict_GetItemStr(dict, name) PyDict_GetItem(dict, name) -#endif -#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) - #define CYTHON_PEP393_ENABLED 1 - #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ - 0 : _PyUnicode_Ready((PyObject *)(op))) - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) - #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) - #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) - #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) -#else - #define CYTHON_PEP393_ENABLED 0 - #define PyUnicode_1BYTE_KIND 1 - #define PyUnicode_2BYTE_KIND 2 - #define PyUnicode_4BYTE_KIND 4 - #define __Pyx_PyUnicode_READY(op) (0) - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) - #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) - #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) - #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) -#endif -#if CYTHON_COMPILING_IN_PYPY - #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) -#else - #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ - PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) - #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) - #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) - #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) -#endif -#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) -#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) -#else - #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) -#endif -#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) - #define PyObject_ASCII(o) PyObject_Repr(o) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBaseString_Type PyUnicode_Type - #define PyStringObject PyUnicodeObject - #define PyString_Type PyUnicode_Type - #define PyString_Check PyUnicode_Check - #define PyString_CheckExact PyUnicode_CheckExact - #define PyObject_Unicode PyObject_Str -#endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) - #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) -#else - #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) - #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) -#endif -#ifndef PySet_CheckExact - #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) -#endif -#if CYTHON_ASSUME_SAFE_MACROS - #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) -#else - #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyIntObject PyLongObject - #define PyInt_Type PyLong_Type - #define PyInt_Check(op) PyLong_Check(op) - #define PyInt_CheckExact(op) PyLong_CheckExact(op) - #define PyInt_FromString PyLong_FromString - #define PyInt_FromUnicode PyLong_FromUnicode - #define PyInt_FromLong PyLong_FromLong - #define PyInt_FromSize_t PyLong_FromSize_t - #define PyInt_FromSsize_t PyLong_FromSsize_t - #define PyInt_AsLong PyLong_AsLong - #define PyInt_AS_LONG PyLong_AS_LONG - #define PyInt_AsSsize_t PyLong_AsSsize_t - #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask - #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask - #define PyNumber_Int PyNumber_Long -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBoolObject PyLongObject -#endif -#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY - #ifndef PyUnicode_InternFromString - #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) - #endif -#endif -#if PY_VERSION_HEX < 0x030200A4 - typedef long Py_hash_t; - #define __Pyx_PyInt_FromHash_t PyInt_FromLong - #define __Pyx_PyInt_AsHash_t PyInt_AsLong -#else - #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t - #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t -#endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : (Py_INCREF(func), func)) -#else - #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) -#endif -#if CYTHON_USE_ASYNC_SLOTS - #if PY_VERSION_HEX >= 0x030500B1 - #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods - #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) - #else - #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) - #endif -#else - #define __Pyx_PyType_AsAsync(obj) NULL -#endif -#ifndef __Pyx_PyAsyncMethodsStruct - typedef struct { - unaryfunc am_await; - unaryfunc am_aiter; - unaryfunc am_anext; - } __Pyx_PyAsyncMethodsStruct; -#endif - -#if defined(WIN32) || defined(MS_WINDOWS) - #define _USE_MATH_DEFINES -#endif -#include <math.h> -#ifdef NAN -#define __PYX_NAN() ((float) NAN) -#else -static CYTHON_INLINE float __PYX_NAN() { - float value; - memset(&value, 0xFF, sizeof(value)); - return value; -} -#endif -#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) -#define __Pyx_truncl trunc -#else -#define __Pyx_truncl truncl -#endif - - -#define __PYX_ERR(f_index, lineno, Ln_error) \ -{ \ - __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \ -} - -#ifndef __PYX_EXTERN_C - #ifdef __cplusplus - #define __PYX_EXTERN_C extern "C" - #else - #define __PYX_EXTERN_C extern - #endif -#endif - -#define __PYX_HAVE__gevent____hub_local -#define __PYX_HAVE_API__gevent____hub_local -/* Early includes */ -#include "greenlet/greenlet.h" -#ifdef _OPENMP -#include <omp.h> -#endif /* _OPENMP */ - -#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) -#define CYTHON_WITHOUT_ASSERTIONS -#endif - -typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; - const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; - -#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 -#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0 -#define __PYX_DEFAULT_STRING_ENCODING "" -#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString -#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#define __Pyx_uchar_cast(c) ((unsigned char)c) -#define __Pyx_long_cast(x) ((long)x) -#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ - (sizeof(type) < sizeof(Py_ssize_t)) ||\ - (sizeof(type) > sizeof(Py_ssize_t) &&\ - likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX) &&\ - (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ - v == (type)PY_SSIZE_T_MIN))) ||\ - (sizeof(type) == sizeof(Py_ssize_t) &&\ - (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX))) ) -#if defined (__cplusplus) && __cplusplus >= 201103L - #include <cstdlib> - #define __Pyx_sst_abs(value) std::abs(value) -#elif SIZEOF_INT >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) abs(value) -#elif SIZEOF_LONG >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) labs(value) -#elif defined (_MSC_VER) - #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) -#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define __Pyx_sst_abs(value) llabs(value) -#elif defined (__GNUC__) - #define __Pyx_sst_abs(value) __builtin_llabs(value) -#else - #define __Pyx_sst_abs(value) ((value<0) ? -value : value) -#endif -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); -#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) -#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) -#define __Pyx_PyBytes_FromString PyBytes_FromString -#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); -#if PY_MAJOR_VERSION < 3 - #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#else - #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize -#endif -#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) -#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) -#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) -#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) -#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) -static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { - const Py_UNICODE *u_end = u; - while (*u_end++) ; - return (size_t)(u_end - u - 1); -} -#define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) -#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode -#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode -#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) -#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); -#define __Pyx_PySequence_Tuple(obj)\ - (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); -#if CYTHON_ASSUME_SAFE_MACROS -#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) -#else -#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) -#endif -#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) -#if PY_MAJOR_VERSION >= 3 -#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) -#else -#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) -#endif -#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x)) -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII -static int __Pyx_sys_getdefaultencoding_not_ascii; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - PyObject* ascii_chars_u = NULL; - PyObject* ascii_chars_b = NULL; - const char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - if (strcmp(default_encoding_c, "ascii") == 0) { - __Pyx_sys_getdefaultencoding_not_ascii = 0; - } else { - char ascii_chars[128]; - int c; - for (c = 0; c < 128; c++) { - ascii_chars[c] = c; - } - __Pyx_sys_getdefaultencoding_not_ascii = 1; - ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); - if (!ascii_chars_u) goto bad; - ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); - if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { - PyErr_Format( - PyExc_ValueError, - "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", - default_encoding_c); - goto bad; - } - Py_DECREF(ascii_chars_u); - Py_DECREF(ascii_chars_b); - } - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - Py_XDECREF(ascii_chars_u); - Py_XDECREF(ascii_chars_b); - return -1; -} -#endif -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) -#else -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -static char* __PYX_DEFAULT_STRING_ENCODING; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c)); - if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; - strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - return -1; -} -#endif -#endif - - -/* Test for GCC > 2.95 */ -#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) - #define likely(x) __builtin_expect(!!(x), 1) - #define unlikely(x) __builtin_expect(!!(x), 0) -#else /* !__GNUC__ or GCC < 2.95 */ - #define likely(x) (x) - #define unlikely(x) (x) -#endif /* __GNUC__ */ -static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } - -static PyObject *__pyx_m = NULL; -static PyObject *__pyx_d; -static PyObject *__pyx_b; -static PyObject *__pyx_cython_runtime = NULL; -static PyObject *__pyx_empty_tuple; -static PyObject *__pyx_empty_bytes; -static PyObject *__pyx_empty_unicode; -static int __pyx_lineno; -static int __pyx_clineno = 0; -static const char * __pyx_cfilenm= __FILE__; -static const char *__pyx_filename; - - -static const char *__pyx_f[] = { - "src\\gevent\\_hub_local.py", - "src\\gevent\\__greenlet_primitives.pxd", -}; - -/*--- Type declarations ---*/ -struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet; -struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop; - -/* "gevent/__greenlet_primitives.pxd":37 - * return PyGreenlet_Switch(self, NULL, NULL) - * - * cdef class TrackedRawGreenlet(greenlet): # <<<<<<<<<<<<<< - * pass - * - */ -struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet { - PyGreenlet __pyx_base; -}; - - -/* "gevent/__greenlet_primitives.pxd":40 - * pass - * - * cdef class SwitchOutGreenletWithLoop(TrackedRawGreenlet): # <<<<<<<<<<<<<< - * cdef public loop - * - */ -struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop { - struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet __pyx_base; - struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_vtab; - PyObject *loop; -}; - - - -struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop { - PyObject *(*__pyx_switch)(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *, int __pyx_skip_dispatch); - PyObject *(*switch_out)(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *, int __pyx_skip_dispatch); -}; -static struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_vtabptr_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop; - -/* --- Runtime support code (head) --- */ -/* Refnanny.proto */ -#ifndef CYTHON_REFNANNY - #define CYTHON_REFNANNY 0 -#endif -#if CYTHON_REFNANNY - typedef struct { - void (*INCREF)(void*, PyObject*, int); - void (*DECREF)(void*, PyObject*, int); - void (*GOTREF)(void*, PyObject*, int); - void (*GIVEREF)(void*, PyObject*, int); - void* (*SetupContext)(const char*, int, const char*); - void (*FinishContext)(void**); - } __Pyx_RefNannyAPIStruct; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); - #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; -#ifdef WITH_THREAD - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - if (acquire_gil) {\ - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - PyGILState_Release(__pyx_gilstate_save);\ - } else {\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - } -#else - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) -#endif - #define __Pyx_RefNannyFinishContext()\ - __Pyx_RefNanny->FinishContext(&__pyx_refnanny) - #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) - #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) - #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) - #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0) -#else - #define __Pyx_RefNannyDeclarations - #define __Pyx_RefNannySetupContext(name, acquire_gil) - #define __Pyx_RefNannyFinishContext() - #define __Pyx_INCREF(r) Py_INCREF(r) - #define __Pyx_DECREF(r) Py_DECREF(r) - #define __Pyx_GOTREF(r) - #define __Pyx_GIVEREF(r) - #define __Pyx_XINCREF(r) Py_XINCREF(r) - #define __Pyx_XDECREF(r) Py_XDECREF(r) - #define __Pyx_XGOTREF(r) - #define __Pyx_XGIVEREF(r) -#endif -#define __Pyx_XDECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_XDECREF(tmp);\ - } while (0) -#define __Pyx_DECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_DECREF(tmp);\ - } while (0) -#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) -#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) - -/* PyObjectGetAttrStr.proto */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) -#endif - -/* GetBuiltinName.proto */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name); - -/* GetModuleGlobalName.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name); - -/* PyObjectCall.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); -#else -#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) -#endif - -/* PyCFunctionFastCall.proto */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); -#else -#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) -#endif - -/* PyFunctionFastCall.proto */ -#if CYTHON_FAST_PYCALL -#define __Pyx_PyFunction_FastCall(func, args, nargs)\ - __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs); -#else -#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) -#endif -#endif - -/* PyObjectCallMethO.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); -#endif - -/* PyObjectCallOneArg.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); - -/* PyObjectCallNoArg.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); -#else -#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL) -#endif - -/* PyObjectSetAttrStr.proto */ -#if CYTHON_USE_TYPE_SLOTS -#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o, n, NULL) -static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value); -#else -#define __Pyx_PyObject_DelAttrStr(o,n) PyObject_DelAttr(o,n) -#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v) -#endif - -/* KeywordStringCheck.proto */ -static int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); - -/* ExtTypeTest.proto */ -static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); - -/* ArgTypeTest.proto */ -#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\ - ((likely((Py_TYPE(obj) == type) | (none_allowed && (obj == Py_None)))) ? 1 :\ - __Pyx__ArgTypeTest(obj, type, name, exact)) -static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact); - -/* GetVTable.proto */ -static void* __Pyx_GetVtable(PyObject *dict); - -/* Import.proto */ -static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); - -/* ImportFrom.proto */ -static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); - -/* CalculateMetaclass.proto */ -static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases); - -/* FetchCommonType.proto */ -static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); - -/* CythonFunction.proto */ -#define __Pyx_CyFunction_USED 1 -#define __Pyx_CYFUNCTION_STATICMETHOD 0x01 -#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 -#define __Pyx_CYFUNCTION_CCLASS 0x04 -#define __Pyx_CyFunction_GetClosure(f)\ - (((__pyx_CyFunctionObject *) (f))->func_closure) -#define __Pyx_CyFunction_GetClassObj(f)\ - (((__pyx_CyFunctionObject *) (f))->func_classobj) -#define __Pyx_CyFunction_Defaults(type, f)\ - ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) -#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ - ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) -typedef struct { - PyCFunctionObject func; -#if PY_VERSION_HEX < 0x030500A0 - PyObject *func_weakreflist; -#endif - PyObject *func_dict; - PyObject *func_name; - PyObject *func_qualname; - PyObject *func_doc; - PyObject *func_globals; - PyObject *func_code; - PyObject *func_closure; - PyObject *func_classobj; - void *defaults; - int defaults_pyobjects; - int flags; - PyObject *defaults_tuple; - PyObject *defaults_kwdict; - PyObject *(*defaults_getter)(PyObject *); - PyObject *func_annotations; -} __pyx_CyFunctionObject; -static PyTypeObject *__pyx_CyFunctionType = 0; -#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, globals, code)\ - __Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, globals, code) -static PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml, - int flags, PyObject* qualname, - PyObject *self, - PyObject *module, PyObject *globals, - PyObject* code); -static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, - size_t size, - int pyobjects); -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, - PyObject *tuple); -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, - PyObject *dict); -static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, - PyObject *dict); -static int __pyx_CyFunction_init(void); - -/* SetNameInClass.proto */ -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 -#define __Pyx_SetNameInClass(ns, name, value)\ - (likely(PyDict_CheckExact(ns)) ? _PyDict_SetItem_KnownHash(ns, name, value, ((PyASCIIObject *) name)->hash) : PyObject_SetItem(ns, name, value)) -#elif CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_SetNameInClass(ns, name, value)\ - (likely(PyDict_CheckExact(ns)) ? PyDict_SetItem(ns, name, value) : PyObject_SetItem(ns, name, value)) -#else -#define __Pyx_SetNameInClass(ns, name, value) PyObject_SetItem(ns, name, value) -#endif - -/* Py3ClassCreate.proto */ -static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname, - PyObject *mkw, PyObject *modname, PyObject *doc); -static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict, - PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass); - -/* GetAttr.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *); - -/* Globals.proto */ -static PyObject* __Pyx_Globals(void); - -/* PyThreadStateGet.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; -#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; -#define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type -#else -#define __Pyx_PyThreadState_declare -#define __Pyx_PyThreadState_assign -#define __Pyx_PyErr_Occurred() PyErr_Occurred() -#endif - -/* PyErrFetchRestore.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) -#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) -#else -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#endif -#else -#define __Pyx_PyErr_Clear() PyErr_Clear() -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) -#endif - -/* CLineInTraceback.proto */ -#ifdef CYTHON_CLINE_IN_TRACEBACK -#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) -#else -static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); -#endif - -/* CodeObjectCache.proto */ -typedef struct { - PyCodeObject* code_object; - int code_line; -} __Pyx_CodeObjectCacheEntry; -struct __Pyx_CodeObjectCache { - int count; - int max_count; - __Pyx_CodeObjectCacheEntry* entries; -}; -static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; -static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); -static PyCodeObject *__pyx_find_code_object(int code_line); -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); - -/* AddTraceback.proto */ -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename); - -/* CIntToPy.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); - -/* CIntFromPy.proto */ -static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); - -/* CIntFromPy.proto */ -static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); - -/* FastTypeChecks.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); -#else -#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) -#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) -#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) -#endif -#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) - -/* CheckBinaryVersion.proto */ -static int __Pyx_check_binary_version(void); - -/* VoidPtrExport.proto */ -static int __Pyx_ExportVoidPtr(PyObject *name, void *p, const char *sig); - -/* FunctionExport.proto */ -static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig); - -/* PyIdentifierFromString.proto */ -#if !defined(__Pyx_PyIdentifier_FromString) -#if PY_MAJOR_VERSION < 3 - #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s) -#else - #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s) -#endif -#endif - -/* ModuleImport.proto */ -static PyObject *__Pyx_ImportModule(const char *name); - -/* TypeImport.proto */ -static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict); - -/* VoidPtrImport.proto */ -static int __Pyx_ImportVoidPtr(PyObject *module, const char *name, void **p, const char *sig); - -/* InitStrings.proto */ -static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); - - -/* Module declarations from 'cython' */ - -/* Module declarations from 'greenlet' */ - -/* Module declarations from 'gevent.__greenlet_primitives' */ -static PyTypeObject *__pyx_ptype_6gevent_21__greenlet_primitives_greenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop = 0; -static PyObject **__pyx_vp_6gevent_21__greenlet_primitives_wref = 0; -#define __pyx_v_6gevent_21__greenlet_primitives_wref (*__pyx_vp_6gevent_21__greenlet_primitives_wref) -static PyObject **__pyx_vp_6gevent_21__greenlet_primitives_BlockingSwitchOutError = 0; -#define __pyx_v_6gevent_21__greenlet_primitives_BlockingSwitchOutError (*__pyx_vp_6gevent_21__greenlet_primitives_BlockingSwitchOutError) -static int *__pyx_vp_6gevent_21__greenlet_primitives__greenlet_imported = 0; -#define __pyx_v_6gevent_21__greenlet_primitives__greenlet_imported (*__pyx_vp_6gevent_21__greenlet_primitives__greenlet_imported) - -/* Module declarations from 'gevent.__hub_local' */ -static PyObject *__pyx_v_6gevent_11__hub_local__threadlocal = 0; -static PyObject *__pyx_f_6gevent_11__hub_local_get_hub_class(int __pyx_skip_dispatch); /*proto*/ -static struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_f_6gevent_11__hub_local_get_hub_if_exists(int __pyx_skip_dispatch); /*proto*/ -static PyObject *__pyx_f_6gevent_11__hub_local_set_hub(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *, int __pyx_skip_dispatch); /*proto*/ -static PyObject *__pyx_f_6gevent_11__hub_local_get_loop(int __pyx_skip_dispatch); /*proto*/ -static PyObject *__pyx_f_6gevent_11__hub_local_set_loop(PyObject *, int __pyx_skip_dispatch); /*proto*/ -static struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_f_6gevent_11__hub_local_get_hub_noargs(int __pyx_skip_dispatch); /*proto*/ -#define __Pyx_MODULE_NAME "gevent.__hub_local" -extern int __pyx_module_is_main_gevent____hub_local; -int __pyx_module_is_main_gevent____hub_local = 0; - -/* Implementation of 'gevent.__hub_local' */ -static PyObject *__pyx_builtin___import__; -static PyObject *__pyx_builtin_super; -static const char __pyx_k_Hub[] = "Hub"; -static const char __pyx_k_all[] = "__all__"; -static const char __pyx_k_doc[] = "__doc__"; -static const char __pyx_k_hub[] = "hub"; -static const char __pyx_k_args[] = "args"; -static const char __pyx_k_init[] = "__init__"; -static const char __pyx_k_loop[] = "loop"; -static const char __pyx_k_main[] = "__main__"; -static const char __pyx_k_self[] = "self"; -static const char __pyx_k_test[] = "__test__"; -static const char __pyx_k_local[] = "_local"; -static const char __pyx_k_super[] = "super"; -static const char __pyx_k_import[] = "__import__"; -static const char __pyx_k_kwargs[] = "kwargs"; -static const char __pyx_k_module[] = "__module__"; -static const char __pyx_k_get_hub[] = "get_hub"; -static const char __pyx_k_hubtype[] = "hubtype"; -static const char __pyx_k_prepare[] = "__prepare__"; -static const char __pyx_k_set_hub[] = "set_hub"; -static const char __pyx_k_get_loop[] = "get_loop"; -static const char __pyx_k_pyx_capi[] = "__pyx_capi__"; -static const char __pyx_k_qualname[] = "__qualname__"; -static const char __pyx_k_set_loop[] = "set_loop"; -static const char __pyx_k_metaclass[] = "__metaclass__"; -static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__"; -static const char __pyx_k_Threadlocal[] = "_Threadlocal"; -static const char __pyx_k_threadlocal[] = "_threadlocal"; -static const char __pyx_k_gevent__util[] = "gevent._util"; -static const char __pyx_k_get_hub_class[] = "get_hub_class"; -static const char __pyx_k_get_hub_noargs[] = "get_hub_noargs"; -static const char __pyx_k_gevent__compat[] = "gevent._compat"; -static const char __pyx_k_import_c_accel[] = "import_c_accel"; -static const char __pyx_k_thread_mod_name[] = "thread_mod_name"; -static const char __pyx_k_get_hub_if_exists[] = "get_hub_if_exists"; -static const char __pyx_k_Threadlocal___init[] = "_Threadlocal.__init__"; -static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; -static const char __pyx_k_gevent___hub_local[] = "gevent.__hub_local"; -static const char __pyx_k_set_default_hub_class[] = "set_default_hub_class"; -static const char __pyx_k_src_gevent__hub_local_py[] = "src\\gevent\\_hub_local.py"; -static const char __pyx_k_Maintains_the_thread_local_hub[] = "\nMaintains the thread local hub.\n\n"; -static PyObject *__pyx_n_s_Hub; -static PyObject *__pyx_n_s_Threadlocal; -static PyObject *__pyx_n_s_Threadlocal___init; -static PyObject *__pyx_n_s_all; -static PyObject *__pyx_n_s_args; -static PyObject *__pyx_n_s_cline_in_traceback; -static PyObject *__pyx_n_s_doc; -static PyObject *__pyx_n_s_get_hub; -static PyObject *__pyx_n_s_get_hub_class; -static PyObject *__pyx_n_s_get_hub_if_exists; -static PyObject *__pyx_n_s_get_hub_noargs; -static PyObject *__pyx_n_s_get_loop; -static PyObject *__pyx_n_s_gevent___hub_local; -static PyObject *__pyx_n_s_gevent__compat; -static PyObject *__pyx_n_s_gevent__util; -static PyObject *__pyx_n_s_hub; -static PyObject *__pyx_n_s_hubtype; -static PyObject *__pyx_n_s_import; -static PyObject *__pyx_n_s_import_c_accel; -static PyObject *__pyx_n_s_init; -static PyObject *__pyx_n_s_kwargs; -static PyObject *__pyx_n_s_local; -static PyObject *__pyx_n_s_loop; -static PyObject *__pyx_n_s_main; -static PyObject *__pyx_n_s_metaclass; -static PyObject *__pyx_n_s_module; -static PyObject *__pyx_n_s_prepare; -static PyObject *__pyx_n_s_pyx_capi; -static PyObject *__pyx_n_s_pyx_vtable; -static PyObject *__pyx_n_s_qualname; -static PyObject *__pyx_n_s_self; -static PyObject *__pyx_n_s_set_default_hub_class; -static PyObject *__pyx_n_s_set_hub; -static PyObject *__pyx_n_s_set_loop; -static PyObject *__pyx_kp_s_src_gevent__hub_local_py; -static PyObject *__pyx_n_s_super; -static PyObject *__pyx_n_s_test; -static PyObject *__pyx_n_s_thread_mod_name; -static PyObject *__pyx_n_s_threadlocal; -static PyObject *__pyx_pf_6gevent_11__hub_local_12_Threadlocal___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_11__hub_local_get_hub_class(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ -static PyObject *__pyx_pf_6gevent_11__hub_local_2set_default_hub_class(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_hubtype); /* proto */ -static PyObject *__pyx_pf_6gevent_11__hub_local_4get_hub(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */ -static PyObject *__pyx_pf_6gevent_11__hub_local_6get_hub_noargs(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ -static PyObject *__pyx_pf_6gevent_11__hub_local_8get_hub_if_exists(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ -static PyObject *__pyx_pf_6gevent_11__hub_local_10set_hub(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_v_hub); /* proto */ -static PyObject *__pyx_pf_6gevent_11__hub_local_12get_loop(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ -static PyObject *__pyx_pf_6gevent_11__hub_local_14set_loop(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_loop); /* proto */ -static PyObject *__pyx_tuple_; -static PyObject *__pyx_tuple__4; -static PyObject *__pyx_tuple__6; -static PyObject *__pyx_tuple__10; -static PyObject *__pyx_tuple__13; -static PyObject *__pyx_codeobj__2; -static PyObject *__pyx_codeobj__3; -static PyObject *__pyx_codeobj__5; -static PyObject *__pyx_codeobj__7; -static PyObject *__pyx_codeobj__8; -static PyObject *__pyx_codeobj__9; -static PyObject *__pyx_codeobj__11; -static PyObject *__pyx_codeobj__12; -static PyObject *__pyx_codeobj__14; -/* Late includes */ - -/* "src/gevent/_hub_local.py":26 - * class _Threadlocal(__import__(thread_mod_name)._local): - * - * def __init__(self): # <<<<<<<<<<<<<< - * # Use a class with an initializer so that we can test - * # for 'is None' instead of catching AttributeError, making - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_11__hub_local_12_Threadlocal_1__init__(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ -static PyMethodDef __pyx_mdef_6gevent_11__hub_local_12_Threadlocal_1__init__ = {"__init__", (PyCFunction)__pyx_pw_6gevent_11__hub_local_12_Threadlocal_1__init__, METH_O, 0}; -static PyObject *__pyx_pw_6gevent_11__hub_local_12_Threadlocal_1__init__(PyObject *__pyx_self, PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_11__hub_local_12_Threadlocal___init__(__pyx_self, ((PyObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_11__hub_local_12_Threadlocal___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("__init__", 0); - - /* "src/gevent/_hub_local.py":31 - * # the code cleaner and possibly solving some corner cases - * # (like #687) - * super(_Threadlocal, self).__init__() # <<<<<<<<<<<<<< - * self.Hub = None - * self.loop = None - */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_Threadlocal); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 31, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 31, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_v_self); - __Pyx_GIVEREF(__pyx_v_self); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self); - __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 31, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 31, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_2)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_2); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_2) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 31, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 31, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_hub_local.py":32 - * # (like #687) - * super(_Threadlocal, self).__init__() - * self.Hub = None # <<<<<<<<<<<<<< - * self.loop = None - * self.hub = None - */ - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Hub, Py_None) < 0) __PYX_ERR(0, 32, __pyx_L1_error) - - /* "src/gevent/_hub_local.py":33 - * super(_Threadlocal, self).__init__() - * self.Hub = None - * self.loop = None # <<<<<<<<<<<<<< - * self.hub = None - * - */ - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_loop, Py_None) < 0) __PYX_ERR(0, 33, __pyx_L1_error) - - /* "src/gevent/_hub_local.py":34 - * self.Hub = None - * self.loop = None - * self.hub = None # <<<<<<<<<<<<<< - * - * _threadlocal = _Threadlocal() - */ - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_hub, Py_None) < 0) __PYX_ERR(0, 34, __pyx_L1_error) - - /* "src/gevent/_hub_local.py":26 - * class _Threadlocal(__import__(thread_mod_name)._local): - * - * def __init__(self): # <<<<<<<<<<<<<< - * # Use a class with an initializer so that we can test - * # for 'is None' instead of catching AttributeError, making - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent.__hub_local._Threadlocal.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_hub_local.py":40 - * Hub = None # Set when gevent.hub is imported - * - * def get_hub_class(): # <<<<<<<<<<<<<< - * """Return the type of hub to use for the current thread. - * - */ - -static PyObject *__pyx_pw_6gevent_11__hub_local_1get_hub_class(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_f_6gevent_11__hub_local_get_hub_class(CYTHON_UNUSED int __pyx_skip_dispatch) { - PyObject *__pyx_v_hubtype = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - int __pyx_t_3; - __Pyx_RefNannySetupContext("get_hub_class", 0); - - /* "src/gevent/_hub_local.py":45 - * If there's no type of hub for the current thread yet, 'gevent.hub.Hub' is used. - * """ - * hubtype = _threadlocal.Hub # <<<<<<<<<<<<<< - * if hubtype is None: - * hubtype = _threadlocal.Hub = Hub - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_6gevent_11__hub_local__threadlocal, __pyx_n_s_Hub); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 45, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_hubtype = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/_hub_local.py":46 - * """ - * hubtype = _threadlocal.Hub - * if hubtype is None: # <<<<<<<<<<<<<< - * hubtype = _threadlocal.Hub = Hub - * return hubtype - */ - __pyx_t_2 = (__pyx_v_hubtype == Py_None); - __pyx_t_3 = (__pyx_t_2 != 0); - if (__pyx_t_3) { - - /* "src/gevent/_hub_local.py":47 - * hubtype = _threadlocal.Hub - * if hubtype is None: - * hubtype = _threadlocal.Hub = Hub # <<<<<<<<<<<<<< - * return hubtype - * - */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_Hub); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 47, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_t_1); - __Pyx_DECREF_SET(__pyx_v_hubtype, __pyx_t_1); - if (__Pyx_PyObject_SetAttrStr(__pyx_v_6gevent_11__hub_local__threadlocal, __pyx_n_s_Hub, __pyx_t_1) < 0) __PYX_ERR(0, 47, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_hub_local.py":46 - * """ - * hubtype = _threadlocal.Hub - * if hubtype is None: # <<<<<<<<<<<<<< - * hubtype = _threadlocal.Hub = Hub - * return hubtype - */ - } - - /* "src/gevent/_hub_local.py":48 - * if hubtype is None: - * hubtype = _threadlocal.Hub = Hub - * return hubtype # <<<<<<<<<<<<<< - * - * def set_default_hub_class(hubtype): - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_hubtype); - __pyx_r = __pyx_v_hubtype; - goto __pyx_L0; - - /* "src/gevent/_hub_local.py":40 - * Hub = None # Set when gevent.hub is imported - * - * def get_hub_class(): # <<<<<<<<<<<<<< - * """Return the type of hub to use for the current thread. - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__hub_local.get_hub_class", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_hubtype); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_11__hub_local_1get_hub_class(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_11__hub_local_get_hub_class[] = "Return the type of hub to use for the current thread.\n\n If there's no type of hub for the current thread yet, 'gevent.hub.Hub' is used.\n "; -static PyMethodDef __pyx_mdef_6gevent_11__hub_local_1get_hub_class = {"get_hub_class", (PyCFunction)__pyx_pw_6gevent_11__hub_local_1get_hub_class, METH_NOARGS, __pyx_doc_6gevent_11__hub_local_get_hub_class}; -static PyObject *__pyx_pw_6gevent_11__hub_local_1get_hub_class(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("get_hub_class (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_11__hub_local_get_hub_class(__pyx_self); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_11__hub_local_get_hub_class(CYTHON_UNUSED PyObject *__pyx_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("get_hub_class", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_11__hub_local_get_hub_class(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 40, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__hub_local.get_hub_class", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_hub_local.py":50 - * return hubtype - * - * def set_default_hub_class(hubtype): # <<<<<<<<<<<<<< - * global Hub - * Hub = hubtype - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_11__hub_local_3set_default_hub_class(PyObject *__pyx_self, PyObject *__pyx_v_hubtype); /*proto*/ -static PyMethodDef __pyx_mdef_6gevent_11__hub_local_3set_default_hub_class = {"set_default_hub_class", (PyCFunction)__pyx_pw_6gevent_11__hub_local_3set_default_hub_class, METH_O, 0}; -static PyObject *__pyx_pw_6gevent_11__hub_local_3set_default_hub_class(PyObject *__pyx_self, PyObject *__pyx_v_hubtype) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("set_default_hub_class (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_11__hub_local_2set_default_hub_class(__pyx_self, ((PyObject *)__pyx_v_hubtype)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_11__hub_local_2set_default_hub_class(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_hubtype) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("set_default_hub_class", 0); - - /* "src/gevent/_hub_local.py":52 - * def set_default_hub_class(hubtype): - * global Hub - * Hub = hubtype # <<<<<<<<<<<<<< - * - * def get_hub(*args, **kwargs): - */ - if (PyDict_SetItem(__pyx_d, __pyx_n_s_Hub, __pyx_v_hubtype) < 0) __PYX_ERR(0, 52, __pyx_L1_error) - - /* "src/gevent/_hub_local.py":50 - * return hubtype - * - * def set_default_hub_class(hubtype): # <<<<<<<<<<<<<< - * global Hub - * Hub = hubtype - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_AddTraceback("gevent.__hub_local.set_default_hub_class", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_hub_local.py":54 - * Hub = hubtype - * - * def get_hub(*args, **kwargs): # <<<<<<<<<<<<<< - * """ - * Return the hub for the current thread. - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_11__hub_local_5get_hub(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_11__hub_local_4get_hub[] = "\n Return the hub for the current thread.\n\n If a hub does not exist in the current thread, a new one is\n created of the type returned by :func:`get_hub_class`.\n\n .. deprecated:: 1.3b1\n The ``*args`` and ``**kwargs`` arguments are deprecated. They were\n only used when the hub was created, and so were non-deterministic---to be\n sure they were used, *all* callers had to pass them, or they were order-dependent.\n Use ``set_hub`` instead.\n "; -static PyMethodDef __pyx_mdef_6gevent_11__hub_local_5get_hub = {"get_hub", (PyCFunction)__pyx_pw_6gevent_11__hub_local_5get_hub, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_11__hub_local_4get_hub}; -static PyObject *__pyx_pw_6gevent_11__hub_local_5get_hub(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_args = 0; - PyObject *__pyx_v_kwargs = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("get_hub (wrapper)", 0); - if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "get_hub", 1))) return NULL; - if (unlikely(__pyx_kwds)) { - __pyx_v_kwargs = PyDict_Copy(__pyx_kwds); if (unlikely(!__pyx_v_kwargs)) return NULL; - __Pyx_GOTREF(__pyx_v_kwargs); - } else { - __pyx_v_kwargs = NULL; - } - __Pyx_INCREF(__pyx_args); - __pyx_v_args = __pyx_args; - __pyx_r = __pyx_pf_6gevent_11__hub_local_4get_hub(__pyx_self, __pyx_v_args, __pyx_v_kwargs); - - /* function exit code */ - __Pyx_XDECREF(__pyx_v_args); - __Pyx_XDECREF(__pyx_v_kwargs); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_11__hub_local_4get_hub(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) { - PyObject *__pyx_v_hub = NULL; - PyObject *__pyx_v_hubtype = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - int __pyx_t_3; - __Pyx_RefNannySetupContext("get_hub", 0); - - /* "src/gevent/_hub_local.py":67 - * Use ``set_hub`` instead. - * """ - * hub = _threadlocal.hub # <<<<<<<<<<<<<< - * if hub is None: - * hubtype = get_hub_class() - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_6gevent_11__hub_local__threadlocal, __pyx_n_s_hub); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 67, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_hub = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/_hub_local.py":68 - * """ - * hub = _threadlocal.hub - * if hub is None: # <<<<<<<<<<<<<< - * hubtype = get_hub_class() - * hub = _threadlocal.hub = hubtype(*args, **kwargs) - */ - __pyx_t_2 = (__pyx_v_hub == Py_None); - __pyx_t_3 = (__pyx_t_2 != 0); - if (__pyx_t_3) { - - /* "src/gevent/_hub_local.py":69 - * hub = _threadlocal.hub - * if hub is None: - * hubtype = get_hub_class() # <<<<<<<<<<<<<< - * hub = _threadlocal.hub = hubtype(*args, **kwargs) - * return hub - */ - __pyx_t_1 = __pyx_f_6gevent_11__hub_local_get_hub_class(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_hubtype = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/_hub_local.py":70 - * if hub is None: - * hubtype = get_hub_class() - * hub = _threadlocal.hub = hubtype(*args, **kwargs) # <<<<<<<<<<<<<< - * return hub - * - */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_v_hubtype, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 70, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_t_1); - __Pyx_DECREF_SET(__pyx_v_hub, __pyx_t_1); - if (__Pyx_PyObject_SetAttrStr(__pyx_v_6gevent_11__hub_local__threadlocal, __pyx_n_s_hub, __pyx_t_1) < 0) __PYX_ERR(0, 70, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_hub_local.py":68 - * """ - * hub = _threadlocal.hub - * if hub is None: # <<<<<<<<<<<<<< - * hubtype = get_hub_class() - * hub = _threadlocal.hub = hubtype(*args, **kwargs) - */ - } - - /* "src/gevent/_hub_local.py":71 - * hubtype = get_hub_class() - * hub = _threadlocal.hub = hubtype(*args, **kwargs) - * return hub # <<<<<<<<<<<<<< - * - * def get_hub_noargs(): - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_hub); - __pyx_r = __pyx_v_hub; - goto __pyx_L0; - - /* "src/gevent/_hub_local.py":54 - * Hub = hubtype - * - * def get_hub(*args, **kwargs): # <<<<<<<<<<<<<< - * """ - * Return the hub for the current thread. - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__hub_local.get_hub", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_hub); - __Pyx_XDECREF(__pyx_v_hubtype); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_hub_local.py":73 - * return hub - * - * def get_hub_noargs(): # <<<<<<<<<<<<<< - * # Just like get_hub, but cheaper to call because it - * # takes no arguments or kwargs. See also a copy in - */ - -static PyObject *__pyx_pw_6gevent_11__hub_local_7get_hub_noargs(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_f_6gevent_11__hub_local_get_hub_noargs(CYTHON_UNUSED int __pyx_skip_dispatch) { - PyObject *__pyx_v_hub = NULL; - PyObject *__pyx_v_hubtype = NULL; - struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - __Pyx_RefNannySetupContext("get_hub_noargs", 0); - - /* "src/gevent/_hub_local.py":77 - * # takes no arguments or kwargs. See also a copy in - * # gevent/greenlet.py - * hub = _threadlocal.hub # <<<<<<<<<<<<<< - * if hub is None: - * hubtype = get_hub_class() - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_6gevent_11__hub_local__threadlocal, __pyx_n_s_hub); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 77, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_hub = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/_hub_local.py":78 - * # gevent/greenlet.py - * hub = _threadlocal.hub - * if hub is None: # <<<<<<<<<<<<<< - * hubtype = get_hub_class() - * hub = _threadlocal.hub = hubtype() - */ - __pyx_t_2 = (__pyx_v_hub == Py_None); - __pyx_t_3 = (__pyx_t_2 != 0); - if (__pyx_t_3) { - - /* "src/gevent/_hub_local.py":79 - * hub = _threadlocal.hub - * if hub is None: - * hubtype = get_hub_class() # <<<<<<<<<<<<<< - * hub = _threadlocal.hub = hubtype() - * return hub - */ - __pyx_t_1 = __pyx_f_6gevent_11__hub_local_get_hub_class(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 79, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_hubtype = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/_hub_local.py":80 - * if hub is None: - * hubtype = get_hub_class() - * hub = _threadlocal.hub = hubtype() # <<<<<<<<<<<<<< - * return hub - * - */ - __Pyx_INCREF(__pyx_v_hubtype); - __pyx_t_4 = __pyx_v_hubtype; __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (__pyx_t_5) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 80, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 80, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_INCREF(__pyx_t_1); - __Pyx_DECREF_SET(__pyx_v_hub, __pyx_t_1); - if (__Pyx_PyObject_SetAttrStr(__pyx_v_6gevent_11__hub_local__threadlocal, __pyx_n_s_hub, __pyx_t_1) < 0) __PYX_ERR(0, 80, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_hub_local.py":78 - * # gevent/greenlet.py - * hub = _threadlocal.hub - * if hub is None: # <<<<<<<<<<<<<< - * hubtype = get_hub_class() - * hub = _threadlocal.hub = hubtype() - */ - } - - /* "src/gevent/_hub_local.py":81 - * hubtype = get_hub_class() - * hub = _threadlocal.hub = hubtype() - * return hub # <<<<<<<<<<<<<< - * - * def get_hub_if_exists(): - */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - if (!(likely(((__pyx_v_hub) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_hub, __pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop))))) __PYX_ERR(0, 81, __pyx_L1_error) - __Pyx_INCREF(__pyx_v_hub); - __pyx_r = ((struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *)__pyx_v_hub); - goto __pyx_L0; - - /* "src/gevent/_hub_local.py":73 - * return hub - * - * def get_hub_noargs(): # <<<<<<<<<<<<<< - * # Just like get_hub, but cheaper to call because it - * # takes no arguments or kwargs. See also a copy in - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent.__hub_local.get_hub_noargs", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_hub); - __Pyx_XDECREF(__pyx_v_hubtype); - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_11__hub_local_7get_hub_noargs(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyMethodDef __pyx_mdef_6gevent_11__hub_local_7get_hub_noargs = {"get_hub_noargs", (PyCFunction)__pyx_pw_6gevent_11__hub_local_7get_hub_noargs, METH_NOARGS, 0}; -static PyObject *__pyx_pw_6gevent_11__hub_local_7get_hub_noargs(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("get_hub_noargs (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_11__hub_local_6get_hub_noargs(__pyx_self); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_11__hub_local_6get_hub_noargs(CYTHON_UNUSED PyObject *__pyx_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("get_hub_noargs", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = ((PyObject *)__pyx_f_6gevent_11__hub_local_get_hub_noargs(0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 73, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__hub_local.get_hub_noargs", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_hub_local.py":83 - * return hub - * - * def get_hub_if_exists(): # <<<<<<<<<<<<<< - * """Return the hub for the current thread. - * - */ - -static PyObject *__pyx_pw_6gevent_11__hub_local_9get_hub_if_exists(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_f_6gevent_11__hub_local_get_hub_if_exists(CYTHON_UNUSED int __pyx_skip_dispatch) { - struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("get_hub_if_exists", 0); - - /* "src/gevent/_hub_local.py":88 - * Return ``None`` if no hub has been created yet. - * """ - * return _threadlocal.hub # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_6gevent_11__hub_local__threadlocal, __pyx_n_s_hub); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 88, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop))))) __PYX_ERR(0, 88, __pyx_L1_error) - __pyx_r = ((struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *)__pyx_t_1); - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/_hub_local.py":83 - * return hub - * - * def get_hub_if_exists(): # <<<<<<<<<<<<<< - * """Return the hub for the current thread. - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__hub_local.get_hub_if_exists", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_11__hub_local_9get_hub_if_exists(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_11__hub_local_8get_hub_if_exists[] = "Return the hub for the current thread.\n\n Return ``None`` if no hub has been created yet.\n "; -static PyMethodDef __pyx_mdef_6gevent_11__hub_local_9get_hub_if_exists = {"get_hub_if_exists", (PyCFunction)__pyx_pw_6gevent_11__hub_local_9get_hub_if_exists, METH_NOARGS, __pyx_doc_6gevent_11__hub_local_8get_hub_if_exists}; -static PyObject *__pyx_pw_6gevent_11__hub_local_9get_hub_if_exists(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("get_hub_if_exists (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_11__hub_local_8get_hub_if_exists(__pyx_self); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_11__hub_local_8get_hub_if_exists(CYTHON_UNUSED PyObject *__pyx_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("get_hub_if_exists", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = ((PyObject *)__pyx_f_6gevent_11__hub_local_get_hub_if_exists(0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 83, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__hub_local.get_hub_if_exists", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_hub_local.py":91 - * - * - * def set_hub(hub): # <<<<<<<<<<<<<< - * _threadlocal.hub = hub - * - */ - -static PyObject *__pyx_pw_6gevent_11__hub_local_11set_hub(PyObject *__pyx_self, PyObject *__pyx_v_hub); /*proto*/ -static PyObject *__pyx_f_6gevent_11__hub_local_set_hub(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_v_hub, CYTHON_UNUSED int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("set_hub", 0); - - /* "src/gevent/_hub_local.py":92 - * - * def set_hub(hub): - * _threadlocal.hub = hub # <<<<<<<<<<<<<< - * - * def get_loop(): - */ - if (__Pyx_PyObject_SetAttrStr(__pyx_v_6gevent_11__hub_local__threadlocal, __pyx_n_s_hub, ((PyObject *)__pyx_v_hub)) < 0) __PYX_ERR(0, 92, __pyx_L1_error) - - /* "src/gevent/_hub_local.py":91 - * - * - * def set_hub(hub): # <<<<<<<<<<<<<< - * _threadlocal.hub = hub - * - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_AddTraceback("gevent.__hub_local.set_hub", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_11__hub_local_11set_hub(PyObject *__pyx_self, PyObject *__pyx_v_hub); /*proto*/ -static PyMethodDef __pyx_mdef_6gevent_11__hub_local_11set_hub = {"set_hub", (PyCFunction)__pyx_pw_6gevent_11__hub_local_11set_hub, METH_O, 0}; -static PyObject *__pyx_pw_6gevent_11__hub_local_11set_hub(PyObject *__pyx_self, PyObject *__pyx_v_hub) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("set_hub (wrapper)", 0); - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_hub), __pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop, 1, "hub", 0))) __PYX_ERR(0, 91, __pyx_L1_error) - __pyx_r = __pyx_pf_6gevent_11__hub_local_10set_hub(__pyx_self, ((struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *)__pyx_v_hub)); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = NULL; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_11__hub_local_10set_hub(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_v_hub) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("set_hub", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_11__hub_local_set_hub(__pyx_v_hub, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 91, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__hub_local.set_hub", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_hub_local.py":94 - * _threadlocal.hub = hub - * - * def get_loop(): # <<<<<<<<<<<<<< - * return _threadlocal.loop - * - */ - -static PyObject *__pyx_pw_6gevent_11__hub_local_13get_loop(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_f_6gevent_11__hub_local_get_loop(CYTHON_UNUSED int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("get_loop", 0); - - /* "src/gevent/_hub_local.py":95 - * - * def get_loop(): - * return _threadlocal.loop # <<<<<<<<<<<<<< - * - * def set_loop(loop): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_6gevent_11__hub_local__threadlocal, __pyx_n_s_loop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 95, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/_hub_local.py":94 - * _threadlocal.hub = hub - * - * def get_loop(): # <<<<<<<<<<<<<< - * return _threadlocal.loop - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__hub_local.get_loop", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_11__hub_local_13get_loop(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyMethodDef __pyx_mdef_6gevent_11__hub_local_13get_loop = {"get_loop", (PyCFunction)__pyx_pw_6gevent_11__hub_local_13get_loop, METH_NOARGS, 0}; -static PyObject *__pyx_pw_6gevent_11__hub_local_13get_loop(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("get_loop (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_11__hub_local_12get_loop(__pyx_self); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_11__hub_local_12get_loop(CYTHON_UNUSED PyObject *__pyx_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("get_loop", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_11__hub_local_get_loop(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 94, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__hub_local.get_loop", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_hub_local.py":97 - * return _threadlocal.loop - * - * def set_loop(loop): # <<<<<<<<<<<<<< - * _threadlocal.loop = loop - * - */ - -static PyObject *__pyx_pw_6gevent_11__hub_local_15set_loop(PyObject *__pyx_self, PyObject *__pyx_v_loop); /*proto*/ -static PyObject *__pyx_f_6gevent_11__hub_local_set_loop(PyObject *__pyx_v_loop, CYTHON_UNUSED int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("set_loop", 0); - - /* "src/gevent/_hub_local.py":98 - * - * def set_loop(loop): - * _threadlocal.loop = loop # <<<<<<<<<<<<<< - * - * from gevent._util import import_c_accel - */ - if (__Pyx_PyObject_SetAttrStr(__pyx_v_6gevent_11__hub_local__threadlocal, __pyx_n_s_loop, __pyx_v_loop) < 0) __PYX_ERR(0, 98, __pyx_L1_error) - - /* "src/gevent/_hub_local.py":97 - * return _threadlocal.loop - * - * def set_loop(loop): # <<<<<<<<<<<<<< - * _threadlocal.loop = loop - * - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_AddTraceback("gevent.__hub_local.set_loop", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_11__hub_local_15set_loop(PyObject *__pyx_self, PyObject *__pyx_v_loop); /*proto*/ -static PyMethodDef __pyx_mdef_6gevent_11__hub_local_15set_loop = {"set_loop", (PyCFunction)__pyx_pw_6gevent_11__hub_local_15set_loop, METH_O, 0}; -static PyObject *__pyx_pw_6gevent_11__hub_local_15set_loop(PyObject *__pyx_self, PyObject *__pyx_v_loop) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("set_loop (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_11__hub_local_14set_loop(__pyx_self, ((PyObject *)__pyx_v_loop)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_11__hub_local_14set_loop(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_loop) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("set_loop", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_11__hub_local_set_loop(__pyx_v_loop, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 97, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__hub_local.set_loop", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__greenlet_primitives.pxd":23 - * - * @cython.final - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - -static CYTHON_INLINE PyGreenlet *__pyx_f_6gevent_21__greenlet_primitives_getcurrent(void) { - PyGreenlet *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("getcurrent", 0); - - /* "gevent/__greenlet_primitives.pxd":24 - * @cython.final - * cdef inline greenlet getcurrent(): - * return PyGreenlet_GetCurrent() # <<<<<<<<<<<<<< - * - * cdef bint _greenlet_imported - */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __pyx_t_1 = ((PyObject *)PyGreenlet_GetCurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 24, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = ((PyGreenlet *)__pyx_t_1); - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "gevent/__greenlet_primitives.pxd":23 - * - * @cython.final - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__greenlet_primitives.getcurrent", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__greenlet_primitives.pxd":28 - * cdef bint _greenlet_imported - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - -static CYTHON_INLINE void __pyx_f_6gevent_21__greenlet_primitives_greenlet_init(void) { - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("greenlet_init", 0); - - /* "gevent/__greenlet_primitives.pxd":30 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - __pyx_t_1 = ((!(__pyx_v_6gevent_21__greenlet_primitives__greenlet_imported != 0)) != 0); - if (__pyx_t_1) { - - /* "gevent/__greenlet_primitives.pxd":31 - * global _greenlet_imported - * if not _greenlet_imported: - * PyGreenlet_Import() # <<<<<<<<<<<<<< - * _greenlet_imported = True - * - */ - PyGreenlet_Import(); - - /* "gevent/__greenlet_primitives.pxd":32 - * if not _greenlet_imported: - * PyGreenlet_Import() - * _greenlet_imported = True # <<<<<<<<<<<<<< - * - * cdef inline object _greenlet_switch(greenlet self): - */ - __pyx_v_6gevent_21__greenlet_primitives__greenlet_imported = 1; - - /* "gevent/__greenlet_primitives.pxd":30 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - } - - /* "gevent/__greenlet_primitives.pxd":28 - * cdef bint _greenlet_imported - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -/* "gevent/__greenlet_primitives.pxd":34 - * _greenlet_imported = True - * - * cdef inline object _greenlet_switch(greenlet self): # <<<<<<<<<<<<<< - * return PyGreenlet_Switch(self, NULL, NULL) - * - */ - -static CYTHON_INLINE PyObject *__pyx_f_6gevent_21__greenlet_primitives__greenlet_switch(PyGreenlet *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_greenlet_switch", 0); - - /* "gevent/__greenlet_primitives.pxd":35 - * - * cdef inline object _greenlet_switch(greenlet self): - * return PyGreenlet_Switch(self, NULL, NULL) # <<<<<<<<<<<<<< - * - * cdef class TrackedRawGreenlet(greenlet): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyGreenlet_Switch(__pyx_v_self, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 35, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "gevent/__greenlet_primitives.pxd":34 - * _greenlet_imported = True - * - * cdef inline object _greenlet_switch(greenlet self): # <<<<<<<<<<<<<< - * return PyGreenlet_Switch(self, NULL, NULL) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__greenlet_primitives._greenlet_switch", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyMethodDef __pyx_methods[] = { - {0, 0, 0, 0} -}; - -#if PY_MAJOR_VERSION >= 3 -#if CYTHON_PEP489_MULTI_PHASE_INIT -static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ -static int __pyx_pymod_exec___hub_local(PyObject* module); /*proto*/ -static PyModuleDef_Slot __pyx_moduledef_slots[] = { - {Py_mod_create, (void*)__pyx_pymod_create}, - {Py_mod_exec, (void*)__pyx_pymod_exec___hub_local}, - {0, NULL} -}; -#endif - -static struct PyModuleDef __pyx_moduledef = { - PyModuleDef_HEAD_INIT, - "__hub_local", - __pyx_k_Maintains_the_thread_local_hub, /* m_doc */ - #if CYTHON_PEP489_MULTI_PHASE_INIT - 0, /* m_size */ - #else - -1, /* m_size */ - #endif - __pyx_methods /* m_methods */, - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_moduledef_slots, /* m_slots */ - #else - NULL, /* m_reload */ - #endif - NULL, /* m_traverse */ - NULL, /* m_clear */ - NULL /* m_free */ -}; -#endif - -static __Pyx_StringTabEntry __pyx_string_tab[] = { - {&__pyx_n_s_Hub, __pyx_k_Hub, sizeof(__pyx_k_Hub), 0, 0, 1, 1}, - {&__pyx_n_s_Threadlocal, __pyx_k_Threadlocal, sizeof(__pyx_k_Threadlocal), 0, 0, 1, 1}, - {&__pyx_n_s_Threadlocal___init, __pyx_k_Threadlocal___init, sizeof(__pyx_k_Threadlocal___init), 0, 0, 1, 1}, - {&__pyx_n_s_all, __pyx_k_all, sizeof(__pyx_k_all), 0, 0, 1, 1}, - {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1}, - {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, - {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1}, - {&__pyx_n_s_get_hub, __pyx_k_get_hub, sizeof(__pyx_k_get_hub), 0, 0, 1, 1}, - {&__pyx_n_s_get_hub_class, __pyx_k_get_hub_class, sizeof(__pyx_k_get_hub_class), 0, 0, 1, 1}, - {&__pyx_n_s_get_hub_if_exists, __pyx_k_get_hub_if_exists, sizeof(__pyx_k_get_hub_if_exists), 0, 0, 1, 1}, - {&__pyx_n_s_get_hub_noargs, __pyx_k_get_hub_noargs, sizeof(__pyx_k_get_hub_noargs), 0, 0, 1, 1}, - {&__pyx_n_s_get_loop, __pyx_k_get_loop, sizeof(__pyx_k_get_loop), 0, 0, 1, 1}, - {&__pyx_n_s_gevent___hub_local, __pyx_k_gevent___hub_local, sizeof(__pyx_k_gevent___hub_local), 0, 0, 1, 1}, - {&__pyx_n_s_gevent__compat, __pyx_k_gevent__compat, sizeof(__pyx_k_gevent__compat), 0, 0, 1, 1}, - {&__pyx_n_s_gevent__util, __pyx_k_gevent__util, sizeof(__pyx_k_gevent__util), 0, 0, 1, 1}, - {&__pyx_n_s_hub, __pyx_k_hub, sizeof(__pyx_k_hub), 0, 0, 1, 1}, - {&__pyx_n_s_hubtype, __pyx_k_hubtype, sizeof(__pyx_k_hubtype), 0, 0, 1, 1}, - {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, - {&__pyx_n_s_import_c_accel, __pyx_k_import_c_accel, sizeof(__pyx_k_import_c_accel), 0, 0, 1, 1}, - {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1}, - {&__pyx_n_s_kwargs, __pyx_k_kwargs, sizeof(__pyx_k_kwargs), 0, 0, 1, 1}, - {&__pyx_n_s_local, __pyx_k_local, sizeof(__pyx_k_local), 0, 0, 1, 1}, - {&__pyx_n_s_loop, __pyx_k_loop, sizeof(__pyx_k_loop), 0, 0, 1, 1}, - {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, - {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1}, - {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1}, - {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_capi, __pyx_k_pyx_capi, sizeof(__pyx_k_pyx_capi), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1}, - {&__pyx_n_s_qualname, __pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 0, 1, 1}, - {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1}, - {&__pyx_n_s_set_default_hub_class, __pyx_k_set_default_hub_class, sizeof(__pyx_k_set_default_hub_class), 0, 0, 1, 1}, - {&__pyx_n_s_set_hub, __pyx_k_set_hub, sizeof(__pyx_k_set_hub), 0, 0, 1, 1}, - {&__pyx_n_s_set_loop, __pyx_k_set_loop, sizeof(__pyx_k_set_loop), 0, 0, 1, 1}, - {&__pyx_kp_s_src_gevent__hub_local_py, __pyx_k_src_gevent__hub_local_py, sizeof(__pyx_k_src_gevent__hub_local_py), 0, 0, 1, 0}, - {&__pyx_n_s_super, __pyx_k_super, sizeof(__pyx_k_super), 0, 0, 1, 1}, - {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, - {&__pyx_n_s_thread_mod_name, __pyx_k_thread_mod_name, sizeof(__pyx_k_thread_mod_name), 0, 0, 1, 1}, - {&__pyx_n_s_threadlocal, __pyx_k_threadlocal, sizeof(__pyx_k_threadlocal), 0, 0, 1, 1}, - {0, 0, 0, 0, 0, 0, 0} -}; -static int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin___import__ = __Pyx_GetBuiltinName(__pyx_n_s_import); if (!__pyx_builtin___import__) __PYX_ERR(0, 24, __pyx_L1_error) - __pyx_builtin_super = __Pyx_GetBuiltinName(__pyx_n_s_super); if (!__pyx_builtin_super) __PYX_ERR(0, 31, __pyx_L1_error) - return 0; - __pyx_L1_error:; - return -1; -} - -static int __Pyx_InitCachedConstants(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - - /* "src/gevent/_hub_local.py":26 - * class _Threadlocal(__import__(thread_mod_name)._local): - * - * def __init__(self): # <<<<<<<<<<<<<< - * # Use a class with an initializer so that we can test - * # for 'is None' instead of catching AttributeError, making - */ - __pyx_tuple_ = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 26, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple_); - __Pyx_GIVEREF(__pyx_tuple_); - __pyx_codeobj__2 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple_, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__hub_local_py, __pyx_n_s_init, 26, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__2)) __PYX_ERR(0, 26, __pyx_L1_error) - - /* "src/gevent/_hub_local.py":40 - * Hub = None # Set when gevent.hub is imported - * - * def get_hub_class(): # <<<<<<<<<<<<<< - * """Return the type of hub to use for the current thread. - * - */ - __pyx_codeobj__3 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__hub_local_py, __pyx_n_s_get_hub_class, 40, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__3)) __PYX_ERR(0, 40, __pyx_L1_error) - - /* "src/gevent/_hub_local.py":50 - * return hubtype - * - * def set_default_hub_class(hubtype): # <<<<<<<<<<<<<< - * global Hub - * Hub = hubtype - */ - __pyx_tuple__4 = PyTuple_Pack(1, __pyx_n_s_hubtype); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 50, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__4); - __Pyx_GIVEREF(__pyx_tuple__4); - __pyx_codeobj__5 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__4, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__hub_local_py, __pyx_n_s_set_default_hub_class, 50, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__5)) __PYX_ERR(0, 50, __pyx_L1_error) - - /* "src/gevent/_hub_local.py":54 - * Hub = hubtype - * - * def get_hub(*args, **kwargs): # <<<<<<<<<<<<<< - * """ - * Return the hub for the current thread. - */ - __pyx_tuple__6 = PyTuple_Pack(4, __pyx_n_s_args, __pyx_n_s_kwargs, __pyx_n_s_hub, __pyx_n_s_hubtype); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 54, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__6); - __Pyx_GIVEREF(__pyx_tuple__6); - __pyx_codeobj__7 = (PyObject*)__Pyx_PyCode_New(0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__6, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__hub_local_py, __pyx_n_s_get_hub, 54, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__7)) __PYX_ERR(0, 54, __pyx_L1_error) - - /* "src/gevent/_hub_local.py":73 - * return hub - * - * def get_hub_noargs(): # <<<<<<<<<<<<<< - * # Just like get_hub, but cheaper to call because it - * # takes no arguments or kwargs. See also a copy in - */ - __pyx_codeobj__8 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__hub_local_py, __pyx_n_s_get_hub_noargs, 73, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__8)) __PYX_ERR(0, 73, __pyx_L1_error) - - /* "src/gevent/_hub_local.py":83 - * return hub - * - * def get_hub_if_exists(): # <<<<<<<<<<<<<< - * """Return the hub for the current thread. - * - */ - __pyx_codeobj__9 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__hub_local_py, __pyx_n_s_get_hub_if_exists, 83, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__9)) __PYX_ERR(0, 83, __pyx_L1_error) - - /* "src/gevent/_hub_local.py":91 - * - * - * def set_hub(hub): # <<<<<<<<<<<<<< - * _threadlocal.hub = hub - * - */ - __pyx_tuple__10 = PyTuple_Pack(1, __pyx_n_s_hub); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 91, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__10); - __Pyx_GIVEREF(__pyx_tuple__10); - __pyx_codeobj__11 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__hub_local_py, __pyx_n_s_set_hub, 91, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__11)) __PYX_ERR(0, 91, __pyx_L1_error) - - /* "src/gevent/_hub_local.py":94 - * _threadlocal.hub = hub - * - * def get_loop(): # <<<<<<<<<<<<<< - * return _threadlocal.loop - * - */ - __pyx_codeobj__12 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__hub_local_py, __pyx_n_s_get_loop, 94, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__12)) __PYX_ERR(0, 94, __pyx_L1_error) - - /* "src/gevent/_hub_local.py":97 - * return _threadlocal.loop - * - * def set_loop(loop): # <<<<<<<<<<<<<< - * _threadlocal.loop = loop - * - */ - __pyx_tuple__13 = PyTuple_Pack(1, __pyx_n_s_loop); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 97, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__13); - __Pyx_GIVEREF(__pyx_tuple__13); - __pyx_codeobj__14 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__hub_local_py, __pyx_n_s_set_loop, 97, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__14)) __PYX_ERR(0, 97, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_InitGlobals(void) { - if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - return 0; - __pyx_L1_error:; - return -1; -} - -static int __Pyx_modinit_global_init_code(void); /*proto*/ -static int __Pyx_modinit_variable_export_code(void); /*proto*/ -static int __Pyx_modinit_function_export_code(void); /*proto*/ -static int __Pyx_modinit_type_init_code(void); /*proto*/ -static int __Pyx_modinit_type_import_code(void); /*proto*/ -static int __Pyx_modinit_variable_import_code(void); /*proto*/ -static int __Pyx_modinit_function_import_code(void); /*proto*/ - -static int __Pyx_modinit_global_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); - /*--- Global init code ---*/ - __pyx_v_6gevent_11__hub_local__threadlocal = Py_None; Py_INCREF(Py_None); - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_variable_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); - /*--- Variable export code ---*/ - if (__Pyx_ExportVoidPtr(__pyx_n_s_threadlocal, (void *)&__pyx_v_6gevent_11__hub_local__threadlocal, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_function_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); - /*--- Function export code ---*/ - if (__Pyx_ExportFunction("get_hub_class", (void (*)(void))__pyx_f_6gevent_11__hub_local_get_hub_class, "PyObject *(int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportFunction("get_hub_if_exists", (void (*)(void))__pyx_f_6gevent_11__hub_local_get_hub_if_exists, "struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *(int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportFunction("set_hub", (void (*)(void))__pyx_f_6gevent_11__hub_local_set_hub, "PyObject *(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportFunction("get_loop", (void (*)(void))__pyx_f_6gevent_11__hub_local_get_loop, "PyObject *(int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportFunction("set_loop", (void (*)(void))__pyx_f_6gevent_11__hub_local_set_loop, "PyObject *(PyObject *, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportFunction("get_hub_noargs", (void (*)(void))__pyx_f_6gevent_11__hub_local_get_hub_noargs, "struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *(int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_type_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); - /*--- Type init code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_type_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); - /*--- Type import code ---*/ - __pyx_ptype_6gevent_21__greenlet_primitives_greenlet = __Pyx_ImportType("greenlet", "greenlet", sizeof(PyGreenlet), 0); if (unlikely(!__pyx_ptype_6gevent_21__greenlet_primitives_greenlet)) __PYX_ERR(1, 12, __pyx_L1_error) - __pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet = __Pyx_ImportType("gevent.__greenlet_primitives", "TrackedRawGreenlet", sizeof(struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet), 1); if (unlikely(!__pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet)) __PYX_ERR(1, 37, __pyx_L1_error) - __pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop = __Pyx_ImportType("gevent.__greenlet_primitives", "SwitchOutGreenletWithLoop", sizeof(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop), 1); if (unlikely(!__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop)) __PYX_ERR(1, 40, __pyx_L1_error) - __pyx_vtabptr_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop = (struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop*)__Pyx_GetVtable(__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop)) __PYX_ERR(1, 40, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_variable_import_code(void) { - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); - /*--- Variable import code ---*/ - __pyx_t_1 = __Pyx_ImportModule("gevent.__greenlet_primitives"); if (!__pyx_t_1) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_1, "wref", (void **)&__pyx_vp_6gevent_21__greenlet_primitives_wref, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_1, "BlockingSwitchOutError", (void **)&__pyx_vp_6gevent_21__greenlet_primitives_BlockingSwitchOutError, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_1, "_greenlet_imported", (void **)&__pyx_vp_6gevent_21__greenlet_primitives__greenlet_imported, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_function_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); - /*--- Function import code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - - -#if PY_MAJOR_VERSION < 3 -#ifdef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC void -#else -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -#endif -#else -#ifdef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC PyObject * -#else -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -#endif -#endif -#ifndef CYTHON_SMALL_CODE -#if defined(__clang__) - #define CYTHON_SMALL_CODE -#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4))) - #define CYTHON_SMALL_CODE __attribute__((cold)) -#else - #define CYTHON_SMALL_CODE -#endif -#endif - - -#if PY_MAJOR_VERSION < 3 -__Pyx_PyMODINIT_FUNC init__hub_local(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC init__hub_local(void) -#else -__Pyx_PyMODINIT_FUNC PyInit___hub_local(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC PyInit___hub_local(void) -#if CYTHON_PEP489_MULTI_PHASE_INIT -{ - return PyModuleDef_Init(&__pyx_moduledef); -} -static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) { - PyObject *value = PyObject_GetAttrString(spec, from_name); - int result = 0; - if (likely(value)) { - result = PyDict_SetItemString(moddict, to_name, value); - Py_DECREF(value); - } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Clear(); - } else { - result = -1; - } - return result; -} -static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) { - PyObject *module = NULL, *moddict, *modname; - if (__pyx_m) - return __Pyx_NewRef(__pyx_m); - modname = PyObject_GetAttrString(spec, "name"); - if (unlikely(!modname)) goto bad; - module = PyModule_NewObject(modname); - Py_DECREF(modname); - if (unlikely(!module)) goto bad; - moddict = PyModule_GetDict(module); - if (unlikely(!moddict)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__") < 0)) goto bad; - return module; -bad: - Py_XDECREF(module); - return NULL; -} - - -static int __pyx_pymod_exec___hub_local(PyObject *__pyx_pyinit_module) -#endif -#endif -{ - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannyDeclarations - #if CYTHON_PEP489_MULTI_PHASE_INIT - if (__pyx_m && __pyx_m == __pyx_pyinit_module) return 0; - #elif PY_MAJOR_VERSION >= 3 - if (__pyx_m) return __Pyx_NewRef(__pyx_m); - #endif - #if CYTHON_REFNANNY -__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); -if (!__Pyx_RefNanny) { - PyErr_Clear(); - __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); - if (!__Pyx_RefNanny) - Py_FatalError("failed to import 'refnanny' module"); -} -#endif - __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit___hub_local(void)", 0); - if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) - #ifdef __Pyx_CyFunction_USED - if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_FusedFunction_USED - if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Coroutine_USED - if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Generator_USED - if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_AsyncGen_USED - if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_StopAsyncIteration_USED - if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - /*--- Library function declarations ---*/ - /*--- Threads initialization code ---*/ - #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS - #ifdef WITH_THREAD /* Python build with threading support? */ - PyEval_InitThreads(); - #endif - #endif - /*--- Module creation code ---*/ - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_m = __pyx_pyinit_module; - Py_INCREF(__pyx_m); - #else - #if PY_MAJOR_VERSION < 3 - __pyx_m = Py_InitModule4("__hub_local", __pyx_methods, __pyx_k_Maintains_the_thread_local_hub, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); - #else - __pyx_m = PyModule_Create(&__pyx_moduledef); - #endif - if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) - Py_INCREF(__pyx_d); - __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) - #if CYTHON_COMPILING_IN_PYPY - Py_INCREF(__pyx_b); - #endif - if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - /*--- Initialize various global constants etc. ---*/ - if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) - if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - if (__pyx_module_is_main_gevent____hub_local) { - if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - } - #if PY_MAJOR_VERSION >= 3 - { - PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) - if (!PyDict_GetItemString(modules, "gevent.__hub_local")) { - if (unlikely(PyDict_SetItemString(modules, "gevent.__hub_local", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) - } - } - #endif - /*--- Builtin init code ---*/ - if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Constants init code ---*/ - if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Global type/function init code ---*/ - (void)__Pyx_modinit_global_init_code(); - if (unlikely(__Pyx_modinit_variable_export_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_function_export_code() != 0)) goto __pyx_L1_error; - (void)__Pyx_modinit_type_init_code(); - if (unlikely(__Pyx_modinit_type_import_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_variable_import_code() != 0)) goto __pyx_L1_error; - (void)__Pyx_modinit_function_import_code(); - /*--- Execution code ---*/ - #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) - if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - - /* "src/gevent/_hub_local.py":12 - * - * - * from gevent._compat import thread_mod_name # <<<<<<<<<<<<<< - * - * __all__ = [ - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_thread_mod_name); - __Pyx_GIVEREF(__pyx_n_s_thread_mod_name); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_thread_mod_name); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_gevent__compat, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_thread_mod_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_thread_mod_name, __pyx_t_1) < 0) __PYX_ERR(0, 12, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_hub_local.py":14 - * from gevent._compat import thread_mod_name - * - * __all__ = [ # <<<<<<<<<<<<<< - * 'get_hub', - * 'get_hub_noargs', - */ - __pyx_t_2 = PyList_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_get_hub); - __Pyx_GIVEREF(__pyx_n_s_get_hub); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_get_hub); - __Pyx_INCREF(__pyx_n_s_get_hub_noargs); - __Pyx_GIVEREF(__pyx_n_s_get_hub_noargs); - PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_get_hub_noargs); - __Pyx_INCREF(__pyx_n_s_get_hub_if_exists); - __Pyx_GIVEREF(__pyx_n_s_get_hub_if_exists); - PyList_SET_ITEM(__pyx_t_2, 2, __pyx_n_s_get_hub_if_exists); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_all, __pyx_t_2) < 0) __PYX_ERR(0, 14, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_hub_local.py":24 - * # We are imported early enough (by gevent/__init__) that - * # we can rely on not being monkey-patched in any way yet. - * class _Threadlocal(__import__(thread_mod_name)._local): # <<<<<<<<<<<<<< - * - * def __init__(self): - */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_thread_mod_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 24, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin___import__, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 24, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_local); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 24, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 24, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 24, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_Threadlocal, __pyx_n_s_Threadlocal, (PyObject *) NULL, __pyx_n_s_gevent___hub_local, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 24, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - - /* "src/gevent/_hub_local.py":26 - * class _Threadlocal(__import__(thread_mod_name)._local): - * - * def __init__(self): # <<<<<<<<<<<<<< - * # Use a class with an initializer so that we can test - * # for 'is None' instead of catching AttributeError, making - */ - __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_11__hub_local_12_Threadlocal_1__init__, 0, __pyx_n_s_Threadlocal___init, NULL, __pyx_n_s_gevent___hub_local, __pyx_d, ((PyObject *)__pyx_codeobj__2)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 26, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_n_s_init, __pyx_t_4) < 0) __PYX_ERR(0, 26, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "src/gevent/_hub_local.py":24 - * # We are imported early enough (by gevent/__init__) that - * # we can rely on not being monkey-patched in any way yet. - * class _Threadlocal(__import__(thread_mod_name)._local): # <<<<<<<<<<<<<< - * - * def __init__(self): - */ - __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_Threadlocal, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 24, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_Threadlocal, __pyx_t_4) < 0) __PYX_ERR(0, 24, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_hub_local.py":36 - * self.hub = None - * - * _threadlocal = _Threadlocal() # <<<<<<<<<<<<<< - * - * Hub = None # Set when gevent.hub is imported - */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_Threadlocal); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 36, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 36, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XGOTREF(__pyx_v_6gevent_11__hub_local__threadlocal); - __Pyx_DECREF_SET(__pyx_v_6gevent_11__hub_local__threadlocal, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - - /* "src/gevent/_hub_local.py":38 - * _threadlocal = _Threadlocal() - * - * Hub = None # Set when gevent.hub is imported # <<<<<<<<<<<<<< - * - * def get_hub_class(): - */ - if (PyDict_SetItem(__pyx_d, __pyx_n_s_Hub, Py_None) < 0) __PYX_ERR(0, 38, __pyx_L1_error) - - /* "src/gevent/_hub_local.py":40 - * Hub = None # Set when gevent.hub is imported - * - * def get_hub_class(): # <<<<<<<<<<<<<< - * """Return the type of hub to use for the current thread. - * - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_11__hub_local_1get_hub_class, 0, __pyx_n_s_get_hub_class, NULL, __pyx_n_s_gevent___hub_local, __pyx_d, ((PyObject *)__pyx_codeobj__3)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 40, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_hub_class, __pyx_t_2) < 0) __PYX_ERR(0, 40, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_hub_local.py":50 - * return hubtype - * - * def set_default_hub_class(hubtype): # <<<<<<<<<<<<<< - * global Hub - * Hub = hubtype - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_11__hub_local_3set_default_hub_class, 0, __pyx_n_s_set_default_hub_class, NULL, __pyx_n_s_gevent___hub_local, __pyx_d, ((PyObject *)__pyx_codeobj__5)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 50, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_default_hub_class, __pyx_t_2) < 0) __PYX_ERR(0, 50, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_hub_local.py":54 - * Hub = hubtype - * - * def get_hub(*args, **kwargs): # <<<<<<<<<<<<<< - * """ - * Return the hub for the current thread. - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_11__hub_local_5get_hub, 0, __pyx_n_s_get_hub, NULL, __pyx_n_s_gevent___hub_local, __pyx_d, ((PyObject *)__pyx_codeobj__7)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 54, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_hub, __pyx_t_2) < 0) __PYX_ERR(0, 54, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_hub_local.py":73 - * return hub - * - * def get_hub_noargs(): # <<<<<<<<<<<<<< - * # Just like get_hub, but cheaper to call because it - * # takes no arguments or kwargs. See also a copy in - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_11__hub_local_7get_hub_noargs, 0, __pyx_n_s_get_hub_noargs, NULL, __pyx_n_s_gevent___hub_local, __pyx_d, ((PyObject *)__pyx_codeobj__8)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 73, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_hub_noargs, __pyx_t_2) < 0) __PYX_ERR(0, 73, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_hub_local.py":83 - * return hub - * - * def get_hub_if_exists(): # <<<<<<<<<<<<<< - * """Return the hub for the current thread. - * - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_11__hub_local_9get_hub_if_exists, 0, __pyx_n_s_get_hub_if_exists, NULL, __pyx_n_s_gevent___hub_local, __pyx_d, ((PyObject *)__pyx_codeobj__9)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 83, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_hub_if_exists, __pyx_t_2) < 0) __PYX_ERR(0, 83, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_hub_local.py":91 - * - * - * def set_hub(hub): # <<<<<<<<<<<<<< - * _threadlocal.hub = hub - * - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_11__hub_local_11set_hub, 0, __pyx_n_s_set_hub, NULL, __pyx_n_s_gevent___hub_local, __pyx_d, ((PyObject *)__pyx_codeobj__11)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 91, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_hub, __pyx_t_2) < 0) __PYX_ERR(0, 91, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_hub_local.py":94 - * _threadlocal.hub = hub - * - * def get_loop(): # <<<<<<<<<<<<<< - * return _threadlocal.loop - * - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_11__hub_local_13get_loop, 0, __pyx_n_s_get_loop, NULL, __pyx_n_s_gevent___hub_local, __pyx_d, ((PyObject *)__pyx_codeobj__12)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 94, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_loop, __pyx_t_2) < 0) __PYX_ERR(0, 94, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_hub_local.py":97 - * return _threadlocal.loop - * - * def set_loop(loop): # <<<<<<<<<<<<<< - * _threadlocal.loop = loop - * - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_11__hub_local_15set_loop, 0, __pyx_n_s_set_loop, NULL, __pyx_n_s_gevent___hub_local, __pyx_d, ((PyObject *)__pyx_codeobj__14)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 97, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_loop, __pyx_t_2) < 0) __PYX_ERR(0, 97, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_hub_local.py":100 - * _threadlocal.loop = loop - * - * from gevent._util import import_c_accel # <<<<<<<<<<<<<< - * import_c_accel(globals(), 'gevent.__hub_local') - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 100, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_import_c_accel); - __Pyx_GIVEREF(__pyx_n_s_import_c_accel); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_import_c_accel); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_gevent__util, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 100, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_import_c_accel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 100, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_import_c_accel, __pyx_t_2) < 0) __PYX_ERR(0, 100, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_hub_local.py":101 - * - * from gevent._util import import_c_accel - * import_c_accel(globals(), 'gevent.__hub_local') # <<<<<<<<<<<<<< - */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_import_c_accel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 101, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_Globals(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 101, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 101, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_gevent___hub_local); - __Pyx_GIVEREF(__pyx_n_s_gevent___hub_local); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_gevent___hub_local); - __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 101, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_hub_local.py":1 - * # -*- coding: utf-8 -*- # <<<<<<<<<<<<<< - * # copyright 2018 gevent. See LICENSE - * """ - */ - __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/__greenlet_primitives.pxd":34 - * _greenlet_imported = True - * - * cdef inline object _greenlet_switch(greenlet self): # <<<<<<<<<<<<<< - * return PyGreenlet_Switch(self, NULL, NULL) - * - */ - - /*--- Wrapped vars code ---*/ - - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - if (__pyx_m) { - if (__pyx_d) { - __Pyx_AddTraceback("init gevent.__hub_local", 0, __pyx_lineno, __pyx_filename); - } - Py_DECREF(__pyx_m); __pyx_m = 0; - } else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_ImportError, "init gevent.__hub_local"); - } - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - #if CYTHON_PEP489_MULTI_PHASE_INIT - return (__pyx_m != NULL) ? 0 : -1; - #elif PY_MAJOR_VERSION >= 3 - return __pyx_m; - #else - return; - #endif -} - -/* --- Runtime support code --- */ -/* Refnanny */ -#if CYTHON_REFNANNY -static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { - PyObject *m = NULL, *p = NULL; - void *r = NULL; - m = PyImport_ImportModule((char *)modname); - if (!m) goto end; - p = PyObject_GetAttrString(m, (char *)"RefNannyAPI"); - if (!p) goto end; - r = PyLong_AsVoidPtr(p); -end: - Py_XDECREF(p); - Py_XDECREF(m); - return (__Pyx_RefNannyAPIStruct *)r; -} -#endif - -/* PyObjectGetAttrStr */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_getattro)) - return tp->tp_getattro(obj, attr_name); -#if PY_MAJOR_VERSION < 3 - if (likely(tp->tp_getattr)) - return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); -#endif - return PyObject_GetAttr(obj, attr_name); -} -#endif - -/* GetBuiltinName */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name) { - PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); - if (unlikely(!result)) { - PyErr_Format(PyExc_NameError, -#if PY_MAJOR_VERSION >= 3 - "name '%U' is not defined", name); -#else - "name '%.200s' is not defined", PyString_AS_STRING(name)); -#endif - } - return result; -} - -/* GetModuleGlobalName */ -static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { - PyObject *result; -#if !CYTHON_AVOID_BORROWED_REFS -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 - result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); - if (likely(result)) { - Py_INCREF(result); - } else if (unlikely(PyErr_Occurred())) { - result = NULL; - } else { -#else - result = PyDict_GetItem(__pyx_d, name); - if (likely(result)) { - Py_INCREF(result); - } else { -#endif -#else - result = PyObject_GetItem(__pyx_d, name); - if (!result) { - PyErr_Clear(); -#endif - result = __Pyx_GetBuiltinName(name); - } - return result; -} - -/* PyObjectCall */ - #if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { - PyObject *result; - ternaryfunc call = func->ob_type->tp_call; - if (unlikely(!call)) - return PyObject_Call(func, arg, kw); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = (*call)(func, arg, kw); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyCFunctionFastCall */ - #if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { - PyCFunctionObject *func = (PyCFunctionObject*)func_obj; - PyCFunction meth = PyCFunction_GET_FUNCTION(func); - PyObject *self = PyCFunction_GET_SELF(func); - int flags = PyCFunction_GET_FLAGS(func); - assert(PyCFunction_Check(func)); - assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))); - assert(nargs >= 0); - assert(nargs == 0 || args != NULL); - /* _PyCFunction_FastCallDict() must not be called with an exception set, - because it may clear it (directly or indirectly) and so the - caller loses its exception */ - assert(!PyErr_Occurred()); - if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { - return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL); - } else { - return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs); - } -} -#endif - -/* PyFunctionFastCall */ - #if CYTHON_FAST_PYCALL -#include "frameobject.h" -static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, - PyObject *globals) { - PyFrameObject *f; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject **fastlocals; - Py_ssize_t i; - PyObject *result; - assert(globals != NULL); - /* XXX Perhaps we should create a specialized - PyFrame_New() that doesn't take locals, but does - take builtins without sanity checking them. - */ - assert(tstate != NULL); - f = PyFrame_New(tstate, co, globals, NULL); - if (f == NULL) { - return NULL; - } - fastlocals = f->f_localsplus; - for (i = 0; i < na; i++) { - Py_INCREF(*args); - fastlocals[i] = *args++; - } - result = PyEval_EvalFrameEx(f,0); - ++tstate->recursion_depth; - Py_DECREF(f); - --tstate->recursion_depth; - return result; -} -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs) { - PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); - PyObject *globals = PyFunction_GET_GLOBALS(func); - PyObject *argdefs = PyFunction_GET_DEFAULTS(func); - PyObject *closure; -#if PY_MAJOR_VERSION >= 3 - PyObject *kwdefs; -#endif - PyObject *kwtuple, **k; - PyObject **d; - Py_ssize_t nd; - Py_ssize_t nk; - PyObject *result; - assert(kwargs == NULL || PyDict_Check(kwargs)); - nk = kwargs ? PyDict_Size(kwargs) : 0; - if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { - return NULL; - } - if ( -#if PY_MAJOR_VERSION >= 3 - co->co_kwonlyargcount == 0 && -#endif - likely(kwargs == NULL || nk == 0) && - co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { - if (argdefs == NULL && co->co_argcount == nargs) { - result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); - goto done; - } - else if (nargs == 0 && argdefs != NULL - && co->co_argcount == Py_SIZE(argdefs)) { - /* function called with no arguments, but all parameters have - a default value: use default values as arguments .*/ - args = &PyTuple_GET_ITEM(argdefs, 0); - result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); - goto done; - } - } - if (kwargs != NULL) { - Py_ssize_t pos, i; - kwtuple = PyTuple_New(2 * nk); - if (kwtuple == NULL) { - result = NULL; - goto done; - } - k = &PyTuple_GET_ITEM(kwtuple, 0); - pos = i = 0; - while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { - Py_INCREF(k[i]); - Py_INCREF(k[i+1]); - i += 2; - } - nk = i / 2; - } - else { - kwtuple = NULL; - k = NULL; - } - closure = PyFunction_GET_CLOSURE(func); -#if PY_MAJOR_VERSION >= 3 - kwdefs = PyFunction_GET_KW_DEFAULTS(func); -#endif - if (argdefs != NULL) { - d = &PyTuple_GET_ITEM(argdefs, 0); - nd = Py_SIZE(argdefs); - } - else { - d = NULL; - nd = 0; - } -#if PY_MAJOR_VERSION >= 3 - result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, - args, nargs, - k, (int)nk, - d, (int)nd, kwdefs, closure); -#else - result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, - args, nargs, - k, (int)nk, - d, (int)nd, closure); -#endif - Py_XDECREF(kwtuple); -done: - Py_LeaveRecursiveCall(); - return result; -} -#endif -#endif - -/* PyObjectCallMethO */ - #if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { - PyObject *self, *result; - PyCFunction cfunc; - cfunc = PyCFunction_GET_FUNCTION(func); - self = PyCFunction_GET_SELF(func); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = cfunc(self, arg); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCallOneArg */ - #if CYTHON_COMPILING_IN_CPYTHON -static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_New(1); - if (unlikely(!args)) return NULL; - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 0, arg); - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, &arg, 1); - } -#endif - if (likely(PyCFunction_Check(func))) { - if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { - return __Pyx_PyObject_CallMethO(func, arg); -#if CYTHON_FAST_PYCCALL - } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { - return __Pyx_PyCFunction_FastCall(func, &arg, 1); -#endif - } - } - return __Pyx__PyObject_CallOneArg(func, arg); -} -#else -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_Pack(1, arg); - if (unlikely(!args)) return NULL; - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -#endif - -/* PyObjectCallNoArg */ - #if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, NULL, 0); - } -#endif -#ifdef __Pyx_CyFunction_USED - if (likely(PyCFunction_Check(func) || __Pyx_TypeCheck(func, __pyx_CyFunctionType))) { -#else - if (likely(PyCFunction_Check(func))) { -#endif - if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { - return __Pyx_PyObject_CallMethO(func, NULL); - } - } - return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL); -} -#endif - -/* PyObjectSetAttrStr */ - #if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_setattro)) - return tp->tp_setattro(obj, attr_name, value); -#if PY_MAJOR_VERSION < 3 - if (likely(tp->tp_setattr)) - return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value); -#endif - return PyObject_SetAttr(obj, attr_name, value); -} -#endif - -/* KeywordStringCheck */ - static int __Pyx_CheckKeywordStrings( - PyObject *kwdict, - const char* function_name, - int kw_allowed) -{ - PyObject* key = 0; - Py_ssize_t pos = 0; -#if CYTHON_COMPILING_IN_PYPY - if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0)) - goto invalid_keyword; - return 1; -#else - while (PyDict_Next(kwdict, &pos, &key, 0)) { - #if PY_MAJOR_VERSION < 3 - if (unlikely(!PyString_Check(key))) - #endif - if (unlikely(!PyUnicode_Check(key))) - goto invalid_keyword_type; - } - if ((!kw_allowed) && unlikely(key)) - goto invalid_keyword; - return 1; -invalid_keyword_type: - PyErr_Format(PyExc_TypeError, - "%.200s() keywords must be strings", function_name); - return 0; -#endif -invalid_keyword: - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION < 3 - "%.200s() got an unexpected keyword argument '%.200s'", - function_name, PyString_AsString(key)); - #else - "%s() got an unexpected keyword argument '%U'", - function_name, key); - #endif - return 0; -} - -/* ExtTypeTest */ - static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { - if (unlikely(!type)) { - PyErr_SetString(PyExc_SystemError, "Missing type object"); - return 0; - } - if (likely(__Pyx_TypeCheck(obj, type))) - return 1; - PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s", - Py_TYPE(obj)->tp_name, type->tp_name); - return 0; -} - -/* ArgTypeTest */ - static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact) -{ - if (unlikely(!type)) { - PyErr_SetString(PyExc_SystemError, "Missing type object"); - return 0; - } - else if (exact) { - #if PY_MAJOR_VERSION == 2 - if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1; - #endif - } - else { - if (likely(__Pyx_TypeCheck(obj, type))) return 1; - } - PyErr_Format(PyExc_TypeError, - "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)", - name, type->tp_name, Py_TYPE(obj)->tp_name); - return 0; -} - -/* GetVTable */ - static void* __Pyx_GetVtable(PyObject *dict) { - void* ptr; - PyObject *ob = PyObject_GetItem(dict, __pyx_n_s_pyx_vtable); - if (!ob) - goto bad; -#if PY_VERSION_HEX >= 0x02070000 - ptr = PyCapsule_GetPointer(ob, 0); -#else - ptr = PyCObject_AsVoidPtr(ob); -#endif - if (!ptr && !PyErr_Occurred()) - PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type"); - Py_DECREF(ob); - return ptr; -bad: - Py_XDECREF(ob); - return NULL; -} - -/* Import */ - static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { - PyObject *empty_list = 0; - PyObject *module = 0; - PyObject *global_dict = 0; - PyObject *empty_dict = 0; - PyObject *list; - #if PY_MAJOR_VERSION < 3 - PyObject *py_import; - py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); - if (!py_import) - goto bad; - #endif - if (from_list) - list = from_list; - else { - empty_list = PyList_New(0); - if (!empty_list) - goto bad; - list = empty_list; - } - global_dict = PyModule_GetDict(__pyx_m); - if (!global_dict) - goto bad; - empty_dict = PyDict_New(); - if (!empty_dict) - goto bad; - { - #if PY_MAJOR_VERSION >= 3 - if (level == -1) { - if (strchr(__Pyx_MODULE_NAME, '.')) { - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, 1); - if (!module) { - if (!PyErr_ExceptionMatches(PyExc_ImportError)) - goto bad; - PyErr_Clear(); - } - } - level = 0; - } - #endif - if (!module) { - #if PY_MAJOR_VERSION < 3 - PyObject *py_level = PyInt_FromLong(level); - if (!py_level) - goto bad; - module = PyObject_CallFunctionObjArgs(py_import, - name, global_dict, empty_dict, list, py_level, NULL); - Py_DECREF(py_level); - #else - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, level); - #endif - } - } -bad: - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(py_import); - #endif - Py_XDECREF(empty_list); - Py_XDECREF(empty_dict); - return module; -} - -/* ImportFrom */ - static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { - PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); - if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Format(PyExc_ImportError, - #if PY_MAJOR_VERSION < 3 - "cannot import name %.230s", PyString_AS_STRING(name)); - #else - "cannot import name %S", name); - #endif - } - return value; -} - -/* CalculateMetaclass */ - static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) { - Py_ssize_t i, nbases = PyTuple_GET_SIZE(bases); - for (i=0; i < nbases; i++) { - PyTypeObject *tmptype; - PyObject *tmp = PyTuple_GET_ITEM(bases, i); - tmptype = Py_TYPE(tmp); -#if PY_MAJOR_VERSION < 3 - if (tmptype == &PyClass_Type) - continue; -#endif - if (!metaclass) { - metaclass = tmptype; - continue; - } - if (PyType_IsSubtype(metaclass, tmptype)) - continue; - if (PyType_IsSubtype(tmptype, metaclass)) { - metaclass = tmptype; - continue; - } - PyErr_SetString(PyExc_TypeError, - "metaclass conflict: " - "the metaclass of a derived class " - "must be a (non-strict) subclass " - "of the metaclasses of all its bases"); - return NULL; - } - if (!metaclass) { -#if PY_MAJOR_VERSION < 3 - metaclass = &PyClass_Type; -#else - metaclass = &PyType_Type; -#endif - } - Py_INCREF((PyObject*) metaclass); - return (PyObject*) metaclass; -} - -/* FetchCommonType */ - static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { - PyObject* fake_module; - PyTypeObject* cached_type = NULL; - fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI); - if (!fake_module) return NULL; - Py_INCREF(fake_module); - cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name); - if (cached_type) { - if (!PyType_Check((PyObject*)cached_type)) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s is not a type object", - type->tp_name); - goto bad; - } - if (cached_type->tp_basicsize != type->tp_basicsize) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s has the wrong size, try recompiling", - type->tp_name); - goto bad; - } - } else { - if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; - PyErr_Clear(); - if (PyType_Ready(type) < 0) goto bad; - if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0) - goto bad; - Py_INCREF(type); - cached_type = type; - } -done: - Py_DECREF(fake_module); - return cached_type; -bad: - Py_XDECREF(cached_type); - cached_type = NULL; - goto done; -} - -/* CythonFunction */ - #include <structmember.h> -static PyObject * -__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure) -{ - if (unlikely(op->func_doc == NULL)) { - if (op->func.m_ml->ml_doc) { -#if PY_MAJOR_VERSION >= 3 - op->func_doc = PyUnicode_FromString(op->func.m_ml->ml_doc); -#else - op->func_doc = PyString_FromString(op->func.m_ml->ml_doc); -#endif - if (unlikely(op->func_doc == NULL)) - return NULL; - } else { - Py_INCREF(Py_None); - return Py_None; - } - } - Py_INCREF(op->func_doc); - return op->func_doc; -} -static int -__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp = op->func_doc; - if (value == NULL) { - value = Py_None; - } - Py_INCREF(value); - op->func_doc = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op) -{ - if (unlikely(op->func_name == NULL)) { -#if PY_MAJOR_VERSION >= 3 - op->func_name = PyUnicode_InternFromString(op->func.m_ml->ml_name); -#else - op->func_name = PyString_InternFromString(op->func.m_ml->ml_name); -#endif - if (unlikely(op->func_name == NULL)) - return NULL; - } - Py_INCREF(op->func_name); - return op->func_name; -} -static int -__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; -#if PY_MAJOR_VERSION >= 3 - if (unlikely(value == NULL || !PyUnicode_Check(value))) { -#else - if (unlikely(value == NULL || !PyString_Check(value))) { -#endif - PyErr_SetString(PyExc_TypeError, - "__name__ must be set to a string object"); - return -1; - } - tmp = op->func_name; - Py_INCREF(value); - op->func_name = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op) -{ - Py_INCREF(op->func_qualname); - return op->func_qualname; -} -static int -__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; -#if PY_MAJOR_VERSION >= 3 - if (unlikely(value == NULL || !PyUnicode_Check(value))) { -#else - if (unlikely(value == NULL || !PyString_Check(value))) { -#endif - PyErr_SetString(PyExc_TypeError, - "__qualname__ must be set to a string object"); - return -1; - } - tmp = op->func_qualname; - Py_INCREF(value); - op->func_qualname = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure) -{ - PyObject *self; - self = m->func_closure; - if (self == NULL) - self = Py_None; - Py_INCREF(self); - return self; -} -static PyObject * -__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op) -{ - if (unlikely(op->func_dict == NULL)) { - op->func_dict = PyDict_New(); - if (unlikely(op->func_dict == NULL)) - return NULL; - } - Py_INCREF(op->func_dict); - return op->func_dict; -} -static int -__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; - if (unlikely(value == NULL)) { - PyErr_SetString(PyExc_TypeError, - "function's dictionary may not be deleted"); - return -1; - } - if (unlikely(!PyDict_Check(value))) { - PyErr_SetString(PyExc_TypeError, - "setting function's dictionary to a non-dict"); - return -1; - } - tmp = op->func_dict; - Py_INCREF(value); - op->func_dict = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op) -{ - Py_INCREF(op->func_globals); - return op->func_globals; -} -static PyObject * -__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op) -{ - Py_INCREF(Py_None); - return Py_None; -} -static PyObject * -__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op) -{ - PyObject* result = (op->func_code) ? op->func_code : Py_None; - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { - int result = 0; - PyObject *res = op->defaults_getter((PyObject *) op); - if (unlikely(!res)) - return -1; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - op->defaults_tuple = PyTuple_GET_ITEM(res, 0); - Py_INCREF(op->defaults_tuple); - op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); - Py_INCREF(op->defaults_kwdict); - #else - op->defaults_tuple = PySequence_ITEM(res, 0); - if (unlikely(!op->defaults_tuple)) result = -1; - else { - op->defaults_kwdict = PySequence_ITEM(res, 1); - if (unlikely(!op->defaults_kwdict)) result = -1; - } - #endif - Py_DECREF(res); - return result; -} -static int -__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value) { - value = Py_None; - } else if (value != Py_None && !PyTuple_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__defaults__ must be set to a tuple object"); - return -1; - } - Py_INCREF(value); - tmp = op->defaults_tuple; - op->defaults_tuple = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) { - PyObject* result = op->defaults_tuple; - if (unlikely(!result)) { - if (op->defaults_getter) { - if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; - result = op->defaults_tuple; - } else { - result = Py_None; - } - } - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value) { - value = Py_None; - } else if (value != Py_None && !PyDict_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__kwdefaults__ must be set to a dict object"); - return -1; - } - Py_INCREF(value); - tmp = op->defaults_kwdict; - op->defaults_kwdict = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) { - PyObject* result = op->defaults_kwdict; - if (unlikely(!result)) { - if (op->defaults_getter) { - if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; - result = op->defaults_kwdict; - } else { - result = Py_None; - } - } - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value || value == Py_None) { - value = NULL; - } else if (!PyDict_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__annotations__ must be set to a dict object"); - return -1; - } - Py_XINCREF(value); - tmp = op->func_annotations; - op->func_annotations = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op) { - PyObject* result = op->func_annotations; - if (unlikely(!result)) { - result = PyDict_New(); - if (unlikely(!result)) return NULL; - op->func_annotations = result; - } - Py_INCREF(result); - return result; -} -static PyGetSetDef __pyx_CyFunction_getsets[] = { - {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, - {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, - {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, - {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, - {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, - {(char *) "__self__", (getter)__Pyx_CyFunction_get_self, 0, 0, 0}, - {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, - {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, - {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, - {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, - {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, - {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, - {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, - {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, - {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, - {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, - {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, - {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, - {0, 0, 0, 0, 0} -}; -static PyMemberDef __pyx_CyFunction_members[] = { - {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), PY_WRITE_RESTRICTED, 0}, - {0, 0, 0, 0, 0} -}; -static PyObject * -__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args) -{ -#if PY_MAJOR_VERSION >= 3 - return PyUnicode_FromString(m->func.m_ml->ml_name); -#else - return PyString_FromString(m->func.m_ml->ml_name); -#endif -} -static PyMethodDef __pyx_CyFunction_methods[] = { - {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, - {0, 0, 0, 0} -}; -#if PY_VERSION_HEX < 0x030500A0 -#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) -#else -#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func.m_weakreflist) -#endif -static PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *ml, int flags, PyObject* qualname, - PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { - __pyx_CyFunctionObject *op = PyObject_GC_New(__pyx_CyFunctionObject, type); - if (op == NULL) - return NULL; - op->flags = flags; - __Pyx_CyFunction_weakreflist(op) = NULL; - op->func.m_ml = ml; - op->func.m_self = (PyObject *) op; - Py_XINCREF(closure); - op->func_closure = closure; - Py_XINCREF(module); - op->func.m_module = module; - op->func_dict = NULL; - op->func_name = NULL; - Py_INCREF(qualname); - op->func_qualname = qualname; - op->func_doc = NULL; - op->func_classobj = NULL; - op->func_globals = globals; - Py_INCREF(op->func_globals); - Py_XINCREF(code); - op->func_code = code; - op->defaults_pyobjects = 0; - op->defaults = NULL; - op->defaults_tuple = NULL; - op->defaults_kwdict = NULL; - op->defaults_getter = NULL; - op->func_annotations = NULL; - PyObject_GC_Track(op); - return (PyObject *) op; -} -static int -__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) -{ - Py_CLEAR(m->func_closure); - Py_CLEAR(m->func.m_module); - Py_CLEAR(m->func_dict); - Py_CLEAR(m->func_name); - Py_CLEAR(m->func_qualname); - Py_CLEAR(m->func_doc); - Py_CLEAR(m->func_globals); - Py_CLEAR(m->func_code); - Py_CLEAR(m->func_classobj); - Py_CLEAR(m->defaults_tuple); - Py_CLEAR(m->defaults_kwdict); - Py_CLEAR(m->func_annotations); - if (m->defaults) { - PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); - int i; - for (i = 0; i < m->defaults_pyobjects; i++) - Py_XDECREF(pydefaults[i]); - PyObject_Free(m->defaults); - m->defaults = NULL; - } - return 0; -} -static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) -{ - if (__Pyx_CyFunction_weakreflist(m) != NULL) - PyObject_ClearWeakRefs((PyObject *) m); - __Pyx_CyFunction_clear(m); - PyObject_GC_Del(m); -} -static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) -{ - PyObject_GC_UnTrack(m); - __Pyx__CyFunction_dealloc(m); -} -static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) -{ - Py_VISIT(m->func_closure); - Py_VISIT(m->func.m_module); - Py_VISIT(m->func_dict); - Py_VISIT(m->func_name); - Py_VISIT(m->func_qualname); - Py_VISIT(m->func_doc); - Py_VISIT(m->func_globals); - Py_VISIT(m->func_code); - Py_VISIT(m->func_classobj); - Py_VISIT(m->defaults_tuple); - Py_VISIT(m->defaults_kwdict); - if (m->defaults) { - PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); - int i; - for (i = 0; i < m->defaults_pyobjects; i++) - Py_VISIT(pydefaults[i]); - } - return 0; -} -static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type) -{ - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) { - Py_INCREF(func); - return func; - } - if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) { - if (type == NULL) - type = (PyObject *)(Py_TYPE(obj)); - return __Pyx_PyMethod_New(func, type, (PyObject *)(Py_TYPE(type))); - } - if (obj == Py_None) - obj = NULL; - return __Pyx_PyMethod_New(func, obj, type); -} -static PyObject* -__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) -{ -#if PY_MAJOR_VERSION >= 3 - return PyUnicode_FromFormat("<cyfunction %U at %p>", - op->func_qualname, (void *)op); -#else - return PyString_FromFormat("<cyfunction %s at %p>", - PyString_AsString(op->func_qualname), (void *)op); -#endif -} -static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { - PyCFunctionObject* f = (PyCFunctionObject*)func; - PyCFunction meth = f->m_ml->ml_meth; - Py_ssize_t size; - switch (f->m_ml->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { - case METH_VARARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) - return (*meth)(self, arg); - break; - case METH_VARARGS | METH_KEYWORDS: - return (*(PyCFunctionWithKeywords)meth)(self, arg, kw); - case METH_NOARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { - size = PyTuple_GET_SIZE(arg); - if (likely(size == 0)) - return (*meth)(self, NULL); - PyErr_Format(PyExc_TypeError, - "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", - f->m_ml->ml_name, size); - return NULL; - } - break; - case METH_O: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { - size = PyTuple_GET_SIZE(arg); - if (likely(size == 1)) { - PyObject *result, *arg0; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - arg0 = PyTuple_GET_ITEM(arg, 0); - #else - arg0 = PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; - #endif - result = (*meth)(self, arg0); - #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) - Py_DECREF(arg0); - #endif - return result; - } - PyErr_Format(PyExc_TypeError, - "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", - f->m_ml->ml_name, size); - return NULL; - } - break; - default: - PyErr_SetString(PyExc_SystemError, "Bad call flags in " - "__Pyx_CyFunction_Call. METH_OLDARGS is no " - "longer supported!"); - return NULL; - } - PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", - f->m_ml->ml_name); - return NULL; -} -static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { - return __Pyx_CyFunction_CallMethod(func, ((PyCFunctionObject*)func)->m_self, arg, kw); -} -static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { - PyObject *result; - __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; - if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { - Py_ssize_t argc; - PyObject *new_args; - PyObject *self; - argc = PyTuple_GET_SIZE(args); - new_args = PyTuple_GetSlice(args, 1, argc); - if (unlikely(!new_args)) - return NULL; - self = PyTuple_GetItem(args, 0); - if (unlikely(!self)) { - Py_DECREF(new_args); - return NULL; - } - result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); - Py_DECREF(new_args); - } else { - result = __Pyx_CyFunction_Call(func, args, kw); - } - return result; -} -static PyTypeObject __pyx_CyFunctionType_type = { - PyVarObject_HEAD_INIT(0, 0) - "cython_function_or_method", - sizeof(__pyx_CyFunctionObject), - 0, - (destructor) __Pyx_CyFunction_dealloc, - 0, - 0, - 0, -#if PY_MAJOR_VERSION < 3 - 0, -#else - 0, -#endif - (reprfunc) __Pyx_CyFunction_repr, - 0, - 0, - 0, - 0, - __Pyx_CyFunction_CallAsMethod, - 0, - 0, - 0, - 0, - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, - 0, - (traverseproc) __Pyx_CyFunction_traverse, - (inquiry) __Pyx_CyFunction_clear, - 0, -#if PY_VERSION_HEX < 0x030500A0 - offsetof(__pyx_CyFunctionObject, func_weakreflist), -#else - offsetof(PyCFunctionObject, m_weakreflist), -#endif - 0, - 0, - __pyx_CyFunction_methods, - __pyx_CyFunction_members, - __pyx_CyFunction_getsets, - 0, - 0, - __Pyx_CyFunction_descr_get, - 0, - offsetof(__pyx_CyFunctionObject, func_dict), - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, -#if PY_VERSION_HEX >= 0x030400a1 - 0, -#endif -}; -static int __pyx_CyFunction_init(void) { - __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); - if (unlikely(__pyx_CyFunctionType == NULL)) { - return -1; - } - return 0; -} -static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults = PyObject_Malloc(size); - if (unlikely(!m->defaults)) - return PyErr_NoMemory(); - memset(m->defaults, 0, size); - m->defaults_pyobjects = pyobjects; - return m->defaults; -} -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults_tuple = tuple; - Py_INCREF(tuple); -} -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults_kwdict = dict; - Py_INCREF(dict); -} -static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->func_annotations = dict; - Py_INCREF(dict); -} - -/* Py3ClassCreate */ - static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, - PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) { - PyObject *ns; - if (metaclass) { - PyObject *prep = __Pyx_PyObject_GetAttrStr(metaclass, __pyx_n_s_prepare); - if (prep) { - PyObject *pargs = PyTuple_Pack(2, name, bases); - if (unlikely(!pargs)) { - Py_DECREF(prep); - return NULL; - } - ns = PyObject_Call(prep, pargs, mkw); - Py_DECREF(prep); - Py_DECREF(pargs); - } else { - if (unlikely(!PyErr_ExceptionMatches(PyExc_AttributeError))) - return NULL; - PyErr_Clear(); - ns = PyDict_New(); - } - } else { - ns = PyDict_New(); - } - if (unlikely(!ns)) - return NULL; - if (unlikely(PyObject_SetItem(ns, __pyx_n_s_module, modname) < 0)) goto bad; - if (unlikely(PyObject_SetItem(ns, __pyx_n_s_qualname, qualname) < 0)) goto bad; - if (unlikely(doc && PyObject_SetItem(ns, __pyx_n_s_doc, doc) < 0)) goto bad; - return ns; -bad: - Py_DECREF(ns); - return NULL; -} -static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, - PyObject *dict, PyObject *mkw, - int calculate_metaclass, int allow_py2_metaclass) { - PyObject *result, *margs; - PyObject *owned_metaclass = NULL; - if (allow_py2_metaclass) { - owned_metaclass = PyObject_GetItem(dict, __pyx_n_s_metaclass); - if (owned_metaclass) { - metaclass = owned_metaclass; - } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) { - PyErr_Clear(); - } else { - return NULL; - } - } - if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) { - metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases); - Py_XDECREF(owned_metaclass); - if (unlikely(!metaclass)) - return NULL; - owned_metaclass = metaclass; - } - margs = PyTuple_Pack(3, name, bases, dict); - if (unlikely(!margs)) { - result = NULL; - } else { - result = PyObject_Call(metaclass, margs, mkw); - Py_DECREF(margs); - } - Py_XDECREF(owned_metaclass); - return result; -} - -/* GetAttr */ - static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) { -#if CYTHON_USE_TYPE_SLOTS -#if PY_MAJOR_VERSION >= 3 - if (likely(PyUnicode_Check(n))) -#else - if (likely(PyString_Check(n))) -#endif - return __Pyx_PyObject_GetAttrStr(o, n); -#endif - return PyObject_GetAttr(o, n); -} - -/* Globals */ - static PyObject* __Pyx_Globals(void) { - Py_ssize_t i; - PyObject *names; - PyObject *globals = __pyx_d; - Py_INCREF(globals); - names = PyObject_Dir(__pyx_m); - if (!names) - goto bad; - for (i = PyList_GET_SIZE(names)-1; i >= 0; i--) { -#if CYTHON_COMPILING_IN_PYPY - PyObject* name = PySequence_ITEM(names, i); - if (!name) - goto bad; -#else - PyObject* name = PyList_GET_ITEM(names, i); -#endif - if (!PyDict_Contains(globals, name)) { - PyObject* value = __Pyx_GetAttr(__pyx_m, name); - if (!value) { -#if CYTHON_COMPILING_IN_PYPY - Py_DECREF(name); -#endif - goto bad; - } - if (PyDict_SetItem(globals, name, value) < 0) { -#if CYTHON_COMPILING_IN_PYPY - Py_DECREF(name); -#endif - Py_DECREF(value); - goto bad; - } - } -#if CYTHON_COMPILING_IN_PYPY - Py_DECREF(name); -#endif - } - Py_DECREF(names); - return globals; -bad: - Py_XDECREF(names); - Py_XDECREF(globals); - return NULL; -} - -/* PyErrFetchRestore */ - #if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - tmp_type = tstate->curexc_type; - tmp_value = tstate->curexc_value; - tmp_tb = tstate->curexc_traceback; - tstate->curexc_type = type; - tstate->curexc_value = value; - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - *type = tstate->curexc_type; - *value = tstate->curexc_value; - *tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -} -#endif - -/* CLineInTraceback */ - #ifndef CYTHON_CLINE_IN_TRACEBACK -static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) { - PyObject *use_cline; - PyObject *ptype, *pvalue, *ptraceback; -#if CYTHON_COMPILING_IN_CPYTHON - PyObject **cython_runtime_dict; -#endif - if (unlikely(!__pyx_cython_runtime)) { - return c_line; - } - __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); -#if CYTHON_COMPILING_IN_CPYTHON - cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); - if (likely(cython_runtime_dict)) { - use_cline = __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback); - } else -#endif - { - PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); - if (use_cline_obj) { - use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; - Py_DECREF(use_cline_obj); - } else { - PyErr_Clear(); - use_cline = NULL; - } - } - if (!use_cline) { - c_line = 0; - PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); - } - else if (PyObject_Not(use_cline) != 0) { - c_line = 0; - } - __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); - return c_line; -} -#endif - -/* CodeObjectCache */ - static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { - int start = 0, mid = 0, end = count - 1; - if (end >= 0 && code_line > entries[end].code_line) { - return count; - } - while (start < end) { - mid = start + (end - start) / 2; - if (code_line < entries[mid].code_line) { - end = mid; - } else if (code_line > entries[mid].code_line) { - start = mid + 1; - } else { - return mid; - } - } - if (code_line <= entries[mid].code_line) { - return mid; - } else { - return mid + 1; - } -} -static PyCodeObject *__pyx_find_code_object(int code_line) { - PyCodeObject* code_object; - int pos; - if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { - return NULL; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { - return NULL; - } - code_object = __pyx_code_cache.entries[pos].code_object; - Py_INCREF(code_object); - return code_object; -} -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { - int pos, i; - __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; - if (unlikely(!code_line)) { - return; - } - if (unlikely(!entries)) { - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); - if (likely(entries)) { - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = 64; - __pyx_code_cache.count = 1; - entries[0].code_line = code_line; - entries[0].code_object = code_object; - Py_INCREF(code_object); - } - return; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { - PyCodeObject* tmp = entries[pos].code_object; - entries[pos].code_object = code_object; - Py_DECREF(tmp); - return; - } - if (__pyx_code_cache.count == __pyx_code_cache.max_count) { - int new_max = __pyx_code_cache.max_count + 64; - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( - __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry)); - if (unlikely(!entries)) { - return; - } - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = new_max; - } - for (i=__pyx_code_cache.count; i>pos; i--) { - entries[i] = entries[i-1]; - } - entries[pos].code_line = code_line; - entries[pos].code_object = code_object; - __pyx_code_cache.count++; - Py_INCREF(code_object); -} - -/* AddTraceback */ - #include "compile.h" -#include "frameobject.h" -#include "traceback.h" -static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( - const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyObject *py_srcfile = 0; - PyObject *py_funcname = 0; - #if PY_MAJOR_VERSION < 3 - py_srcfile = PyString_FromString(filename); - #else - py_srcfile = PyUnicode_FromString(filename); - #endif - if (!py_srcfile) goto bad; - if (c_line) { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #else - py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #endif - } - else { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromString(funcname); - #else - py_funcname = PyUnicode_FromString(funcname); - #endif - } - if (!py_funcname) goto bad; - py_code = __Pyx_PyCode_New( - 0, - 0, - 0, - 0, - 0, - __pyx_empty_bytes, /*PyObject *code,*/ - __pyx_empty_tuple, /*PyObject *consts,*/ - __pyx_empty_tuple, /*PyObject *names,*/ - __pyx_empty_tuple, /*PyObject *varnames,*/ - __pyx_empty_tuple, /*PyObject *freevars,*/ - __pyx_empty_tuple, /*PyObject *cellvars,*/ - py_srcfile, /*PyObject *filename,*/ - py_funcname, /*PyObject *name,*/ - py_line, - __pyx_empty_bytes /*PyObject *lnotab*/ - ); - Py_DECREF(py_srcfile); - Py_DECREF(py_funcname); - return py_code; -bad: - Py_XDECREF(py_srcfile); - Py_XDECREF(py_funcname); - return NULL; -} -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyFrameObject *py_frame = 0; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - if (c_line) { - c_line = __Pyx_CLineForTraceback(tstate, c_line); - } - py_code = __pyx_find_code_object(c_line ? -c_line : py_line); - if (!py_code) { - py_code = __Pyx_CreateCodeObjectForTraceback( - funcname, c_line, py_line, filename); - if (!py_code) goto bad; - __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); - } - py_frame = PyFrame_New( - tstate, /*PyThreadState *tstate,*/ - py_code, /*PyCodeObject *code,*/ - __pyx_d, /*PyObject *globals,*/ - 0 /*PyObject *locals*/ - ); - if (!py_frame) goto bad; - __Pyx_PyFrame_SetLineNumber(py_frame, py_line); - PyTraceBack_Here(py_frame); -bad: - Py_XDECREF(py_code); - Py_XDECREF(py_frame); -} - -/* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { - const long neg_one = (long) -1, const_zero = (long) 0; - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(long) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(long) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -#endif - } - } else { - if (sizeof(long) <= sizeof(long)) { - return PyInt_FromLong((long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); -#endif - } - } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; - return _PyLong_FromByteArray(bytes, sizeof(long), - little, !is_unsigned); - } -} - -/* CIntFromPyVerify */ - #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) -#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) -#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ - {\ - func_type value = func_value;\ - if (sizeof(target_type) < sizeof(func_type)) {\ - if (unlikely(value != (func_type) (target_type) value)) {\ - func_type zero = 0;\ - if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ - return (target_type) -1;\ - if (is_unsigned && unlikely(value < zero))\ - goto raise_neg_overflow;\ - else\ - goto raise_overflow;\ - }\ - }\ - return (target_type) value;\ - } - -/* CIntFromPy */ - static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { - const long neg_one = (long) -1, const_zero = (long) 0; - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(long) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (long) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { - return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { - return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { - return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (long) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(long) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) - case -2: - if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - } -#endif - if (sizeof(long) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - long val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (long) -1; - } - } else { - long val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (long) -1; - val = __Pyx_PyInt_As_long(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to long"); - return (long) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to long"); - return (long) -1; -} - -/* CIntFromPy */ - static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { - const int neg_one = (int) -1, const_zero = (int) 0; - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(int) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (int) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (int) 0; - case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { - return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { - return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { - return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (int) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(int) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (int) 0; - case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) - case -2: - if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - } -#endif - if (sizeof(int) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - int val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (int) -1; - } - } else { - int val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (int) -1; - val = __Pyx_PyInt_As_int(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to int"); - return (int) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to int"); - return (int) -1; -} - -/* FastTypeChecks */ - #if CYTHON_COMPILING_IN_CPYTHON -static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { - while (a) { - a = a->tp_base; - if (a == b) - return 1; - } - return b == &PyBaseObject_Type; -} -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { - PyObject *mro; - if (a == b) return 1; - mro = a->tp_mro; - if (likely(mro)) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(mro); - for (i = 0; i < n; i++) { - if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) - return 1; - } - return 0; - } - return __Pyx_InBases(a, b); -} -#if PY_MAJOR_VERSION == 2 -static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { - PyObject *exception, *value, *tb; - int res; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&exception, &value, &tb); - res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - if (!res) { - res = PyObject_IsSubclass(err, exc_type2); - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - } - __Pyx_ErrRestore(exception, value, tb); - return res; -} -#else -static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { - int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0; - if (!res) { - res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); - } - return res; -} -#endif -static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - assert(PyExceptionClass_Check(exc_type)); - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; i<n; i++) { - if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1; - } -#endif - for (i=0; i<n; i++) { - PyObject *t = PyTuple_GET_ITEM(tuple, i); - #if PY_MAJOR_VERSION < 3 - if (likely(exc_type == t)) return 1; - #endif - if (likely(PyExceptionClass_Check(t))) { - if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1; - } else { - } - } - return 0; -} -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) { - if (likely(err == exc_type)) return 1; - if (likely(PyExceptionClass_Check(err))) { - if (likely(PyExceptionClass_Check(exc_type))) { - return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type); - } else if (likely(PyTuple_Check(exc_type))) { - return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type); - } else { - } - } - return PyErr_GivenExceptionMatches(err, exc_type); -} -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) { - assert(PyExceptionClass_Check(exc_type1)); - assert(PyExceptionClass_Check(exc_type2)); - if (likely(err == exc_type1 || err == exc_type2)) return 1; - if (likely(PyExceptionClass_Check(err))) { - return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2); - } - return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2)); -} -#endif - -/* CheckBinaryVersion */ - static int __Pyx_check_binary_version(void) { - char ctversion[4], rtversion[4]; - PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); - PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); - if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) { - char message[200]; - PyOS_snprintf(message, sizeof(message), - "compiletime version %s of module '%.100s' " - "does not match runtime version %s", - ctversion, __Pyx_MODULE_NAME, rtversion); - return PyErr_WarnEx(NULL, message, 1); - } - return 0; -} - -/* VoidPtrExport */ - static int __Pyx_ExportVoidPtr(PyObject *name, void *p, const char *sig) { - PyObject *d; - PyObject *cobj = 0; - d = PyDict_GetItem(__pyx_d, __pyx_n_s_pyx_capi); - Py_XINCREF(d); - if (!d) { - d = PyDict_New(); - if (!d) - goto bad; - if (__Pyx_PyObject_SetAttrStr(__pyx_m, __pyx_n_s_pyx_capi, d) < 0) - goto bad; - } -#if PY_VERSION_HEX >= 0x02070000 - cobj = PyCapsule_New(p, sig, 0); -#else - cobj = PyCObject_FromVoidPtrAndDesc(p, (void *)sig, 0); -#endif - if (!cobj) - goto bad; - if (PyDict_SetItem(d, name, cobj) < 0) - goto bad; - Py_DECREF(cobj); - Py_DECREF(d); - return 0; -bad: - Py_XDECREF(cobj); - Py_XDECREF(d); - return -1; -} - -/* FunctionExport */ - static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) { - PyObject *d = 0; - PyObject *cobj = 0; - union { - void (*fp)(void); - void *p; - } tmp; - d = PyObject_GetAttrString(__pyx_m, (char *)"__pyx_capi__"); - if (!d) { - PyErr_Clear(); - d = PyDict_New(); - if (!d) - goto bad; - Py_INCREF(d); - if (PyModule_AddObject(__pyx_m, (char *)"__pyx_capi__", d) < 0) - goto bad; - } - tmp.fp = f; -#if PY_VERSION_HEX >= 0x02070000 - cobj = PyCapsule_New(tmp.p, sig, 0); -#else - cobj = PyCObject_FromVoidPtrAndDesc(tmp.p, (void *)sig, 0); -#endif - if (!cobj) - goto bad; - if (PyDict_SetItemString(d, name, cobj) < 0) - goto bad; - Py_DECREF(cobj); - Py_DECREF(d); - return 0; -bad: - Py_XDECREF(cobj); - Py_XDECREF(d); - return -1; -} - -/* ModuleImport */ - #ifndef __PYX_HAVE_RT_ImportModule -#define __PYX_HAVE_RT_ImportModule -static PyObject *__Pyx_ImportModule(const char *name) { - PyObject *py_name = 0; - PyObject *py_module = 0; - py_name = __Pyx_PyIdentifier_FromString(name); - if (!py_name) - goto bad; - py_module = PyImport_Import(py_name); - Py_DECREF(py_name); - return py_module; -bad: - Py_XDECREF(py_name); - return 0; -} -#endif - -/* TypeImport */ - #ifndef __PYX_HAVE_RT_ImportType -#define __PYX_HAVE_RT_ImportType -static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, - size_t size, int strict) -{ - PyObject *py_module = 0; - PyObject *result = 0; - PyObject *py_name = 0; - char warning[200]; - Py_ssize_t basicsize; -#ifdef Py_LIMITED_API - PyObject *py_basicsize; -#endif - py_module = __Pyx_ImportModule(module_name); - if (!py_module) - goto bad; - py_name = __Pyx_PyIdentifier_FromString(class_name); - if (!py_name) - goto bad; - result = PyObject_GetAttr(py_module, py_name); - Py_DECREF(py_name); - py_name = 0; - Py_DECREF(py_module); - py_module = 0; - if (!result) - goto bad; - if (!PyType_Check(result)) { - PyErr_Format(PyExc_TypeError, - "%.200s.%.200s is not a type object", - module_name, class_name); - goto bad; - } -#ifndef Py_LIMITED_API - basicsize = ((PyTypeObject *)result)->tp_basicsize; -#else - py_basicsize = PyObject_GetAttrString(result, "__basicsize__"); - if (!py_basicsize) - goto bad; - basicsize = PyLong_AsSsize_t(py_basicsize); - Py_DECREF(py_basicsize); - py_basicsize = 0; - if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred()) - goto bad; -#endif - if (!strict && (size_t)basicsize > size) { - PyOS_snprintf(warning, sizeof(warning), - "%s.%s size changed, may indicate binary incompatibility. Expected %zd, got %zd", - module_name, class_name, basicsize, size); - if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad; - } - else if ((size_t)basicsize != size) { - PyErr_Format(PyExc_ValueError, - "%.200s.%.200s has the wrong size, try recompiling. Expected %zd, got %zd", - module_name, class_name, basicsize, size); - goto bad; - } - return (PyTypeObject *)result; -bad: - Py_XDECREF(py_module); - Py_XDECREF(result); - return NULL; -} -#endif - -/* VoidPtrImport */ - #ifndef __PYX_HAVE_RT_ImportVoidPtr -#define __PYX_HAVE_RT_ImportVoidPtr -static int __Pyx_ImportVoidPtr(PyObject *module, const char *name, void **p, const char *sig) { - PyObject *d = 0; - PyObject *cobj = 0; - d = PyObject_GetAttrString(module, (char *)"__pyx_capi__"); - if (!d) - goto bad; - cobj = PyDict_GetItemString(d, name); - if (!cobj) { - PyErr_Format(PyExc_ImportError, - "%.200s does not export expected C variable %.200s", - PyModule_GetName(module), name); - goto bad; - } -#if PY_VERSION_HEX >= 0x02070000 - if (!PyCapsule_IsValid(cobj, sig)) { - PyErr_Format(PyExc_TypeError, - "C variable %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", - PyModule_GetName(module), name, sig, PyCapsule_GetName(cobj)); - goto bad; - } - *p = PyCapsule_GetPointer(cobj, sig); -#else - {const char *desc, *s1, *s2; - desc = (const char *)PyCObject_GetDesc(cobj); - if (!desc) - goto bad; - s1 = desc; s2 = sig; - while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; } - if (*s1 != *s2) { - PyErr_Format(PyExc_TypeError, - "C variable %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", - PyModule_GetName(module), name, sig, desc); - goto bad; - } - *p = PyCObject_AsVoidPtr(cobj);} -#endif - if (!(*p)) - goto bad; - Py_DECREF(d); - return 0; -bad: - Py_XDECREF(d); - return -1; -} -#endif - -/* InitStrings */ - static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { - while (t->p) { - #if PY_MAJOR_VERSION < 3 - if (t->is_unicode) { - *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); - } else if (t->intern) { - *t->p = PyString_InternFromString(t->s); - } else { - *t->p = PyString_FromStringAndSize(t->s, t->n - 1); - } - #else - if (t->is_unicode | t->is_str) { - if (t->intern) { - *t->p = PyUnicode_InternFromString(t->s); - } else if (t->encoding) { - *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL); - } else { - *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1); - } - } else { - *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1); - } - #endif - if (!*t->p) - return -1; - if (PyObject_Hash(*t->p) == -1) - return -1; - ++t; - } - return 0; -} - -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { - return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); -} -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { - Py_ssize_t ignore; - return __Pyx_PyObject_AsStringAndSize(o, &ignore); -} -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -#if !CYTHON_PEP393_ENABLED -static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - char* defenc_c; - PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); - if (!defenc) return NULL; - defenc_c = PyBytes_AS_STRING(defenc); -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - { - char* end = defenc_c + PyBytes_GET_SIZE(defenc); - char* c; - for (c = defenc_c; c < end; c++) { - if ((unsigned char) (*c) >= 128) { - PyUnicode_AsASCIIString(o); - return NULL; - } - } - } -#endif - *length = PyBytes_GET_SIZE(defenc); - return defenc_c; -} -#else -static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - if (likely(PyUnicode_IS_ASCII(o))) { - *length = PyUnicode_GET_LENGTH(o); - return PyUnicode_AsUTF8(o); - } else { - PyUnicode_AsASCIIString(o); - return NULL; - } -#else - return PyUnicode_AsUTF8AndSize(o, length); -#endif -} -#endif -#endif -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT - if ( -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - __Pyx_sys_getdefaultencoding_not_ascii && -#endif - PyUnicode_Check(o)) { - return __Pyx_PyUnicode_AsStringAndSize(o, length); - } else -#endif -#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) - if (PyByteArray_Check(o)) { - *length = PyByteArray_GET_SIZE(o); - return PyByteArray_AS_STRING(o); - } else -#endif - { - char* result; - int r = PyBytes_AsStringAndSize(o, &result, length); - if (unlikely(r < 0)) { - return NULL; - } else { - return result; - } - } -} -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { - int is_true = x == Py_True; - if (is_true | (x == Py_False) | (x == Py_None)) return is_true; - else return PyObject_IsTrue(x); -} -static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { -#if PY_MAJOR_VERSION >= 3 - if (PyLong_Check(result)) { - if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, - "__int__ returned non-int (type %.200s). " - "The ability to return an instance of a strict subclass of int " - "is deprecated, and may be removed in a future version of Python.", - Py_TYPE(result)->tp_name)) { - Py_DECREF(result); - return NULL; - } - return result; - } -#endif - PyErr_Format(PyExc_TypeError, - "__%.4s__ returned non-%.4s (type %.200s)", - type_name, type_name, Py_TYPE(result)->tp_name); - Py_DECREF(result); - return NULL; -} -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { -#if CYTHON_USE_TYPE_SLOTS - PyNumberMethods *m; -#endif - const char *name = NULL; - PyObject *res = NULL; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x) || PyLong_Check(x))) -#else - if (likely(PyLong_Check(x))) -#endif - return __Pyx_NewRef(x); -#if CYTHON_USE_TYPE_SLOTS - m = Py_TYPE(x)->tp_as_number; - #if PY_MAJOR_VERSION < 3 - if (m && m->nb_int) { - name = "int"; - res = m->nb_int(x); - } - else if (m && m->nb_long) { - name = "long"; - res = m->nb_long(x); - } - #else - if (likely(m && m->nb_int)) { - name = "int"; - res = m->nb_int(x); - } - #endif -#else - if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { - res = PyNumber_Int(x); - } -#endif - if (likely(res)) { -#if PY_MAJOR_VERSION < 3 - if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { -#else - if (unlikely(!PyLong_CheckExact(res))) { -#endif - return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); - } - } - else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_TypeError, - "an integer is required"); - } - return res; -} -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { - Py_ssize_t ival; - PyObject *x; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(b))) { - if (sizeof(Py_ssize_t) >= sizeof(long)) - return PyInt_AS_LONG(b); - else - return PyInt_AsSsize_t(x); - } -#endif - if (likely(PyLong_CheckExact(b))) { - #if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)b)->ob_digit; - const Py_ssize_t size = Py_SIZE(b); - if (likely(__Pyx_sst_abs(size) <= 1)) { - ival = likely(size) ? digits[0] : 0; - if (size == -1) ival = -ival; - return ival; - } else { - switch (size) { - case 2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - } - } - #endif - return PyLong_AsSsize_t(b); - } - x = PyNumber_Index(b); - if (!x) return -1; - ival = PyInt_AsSsize_t(x); - Py_DECREF(x); - return ival; -} -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { - return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); -} -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { - return PyInt_FromSize_t(ival); -} - - -#endif /* Py_PYTHON_H */ diff --git a/python/gevent/_hub_local.py b/python/gevent/_hub_local.py deleted file mode 100644 index 622062a..0000000 --- a/python/gevent/_hub_local.py +++ /dev/null @@ -1,101 +0,0 @@ -# -*- coding: utf-8 -*- -# copyright 2018 gevent. See LICENSE -""" -Maintains the thread local hub. - -""" -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function - - -from gevent._compat import thread_mod_name - -__all__ = [ - 'get_hub', - 'get_hub_noargs', - 'get_hub_if_exists', -] - -# These must be the "real" native thread versions, -# not monkey-patched. -# We are imported early enough (by gevent/__init__) that -# we can rely on not being monkey-patched in any way yet. -class _Threadlocal(__import__(thread_mod_name)._local): - - def __init__(self): - # Use a class with an initializer so that we can test - # for 'is None' instead of catching AttributeError, making - # the code cleaner and possibly solving some corner cases - # (like #687) - super(_Threadlocal, self).__init__() - self.Hub = None - self.loop = None - self.hub = None - -_threadlocal = _Threadlocal() - -Hub = None # Set when gevent.hub is imported - -def get_hub_class(): - """Return the type of hub to use for the current thread. - - If there's no type of hub for the current thread yet, 'gevent.hub.Hub' is used. - """ - hubtype = _threadlocal.Hub - if hubtype is None: - hubtype = _threadlocal.Hub = Hub - return hubtype - -def set_default_hub_class(hubtype): - global Hub - Hub = hubtype - -def get_hub(*args, **kwargs): - """ - Return the hub for the current thread. - - If a hub does not exist in the current thread, a new one is - created of the type returned by :func:`get_hub_class`. - - .. deprecated:: 1.3b1 - The ``*args`` and ``**kwargs`` arguments are deprecated. They were - only used when the hub was created, and so were non-deterministic---to be - sure they were used, *all* callers had to pass them, or they were order-dependent. - Use ``set_hub`` instead. - """ - hub = _threadlocal.hub - if hub is None: - hubtype = get_hub_class() - hub = _threadlocal.hub = hubtype(*args, **kwargs) - return hub - -def get_hub_noargs(): - # Just like get_hub, but cheaper to call because it - # takes no arguments or kwargs. See also a copy in - # gevent/greenlet.py - hub = _threadlocal.hub - if hub is None: - hubtype = get_hub_class() - hub = _threadlocal.hub = hubtype() - return hub - -def get_hub_if_exists(): - """Return the hub for the current thread. - - Return ``None`` if no hub has been created yet. - """ - return _threadlocal.hub - - -def set_hub(hub): - _threadlocal.hub = hub - -def get_loop(): - return _threadlocal.loop - -def set_loop(loop): - _threadlocal.loop = loop - -from gevent._util import import_c_accel -import_c_accel(globals(), 'gevent.__hub_local') diff --git a/python/gevent/_hub_primitives.c b/python/gevent/_hub_primitives.c deleted file mode 100644 index 583bb93..0000000 --- a/python/gevent/_hub_primitives.c +++ /dev/null @@ -1,11875 +0,0 @@ -/* Generated by Cython 0.28.5 */ - -/* BEGIN: Cython Metadata -{ - "distutils": { - "depends": [ - "src/gevent/__hub_primitives.pxd", - "src\\gevent\\__hub_primitives.pxd" - ], - "include_dirs": [ - "C:\\Python36\\Include", - "deps" - ], - "name": "gevent.__hub_primitives", - "sources": [ - "src/gevent/_hub_primitives.py" - ] - }, - "module_name": "gevent.__hub_primitives" -} -END: Cython Metadata */ - -#define PY_SSIZE_T_CLEAN -#include "Python.h" -#ifndef Py_PYTHON_H - #error Python headers needed to compile C extensions, please install development version of Python. -#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) - #error Cython requires Python 2.6+ or Python 3.3+. -#else -#define CYTHON_ABI "0_28_5" -#define CYTHON_FUTURE_DIVISION 1 -#include <stddef.h> -#ifndef offsetof - #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) -#endif -#if !defined(WIN32) && !defined(MS_WINDOWS) - #ifndef __stdcall - #define __stdcall - #endif - #ifndef __cdecl - #define __cdecl - #endif - #ifndef __fastcall - #define __fastcall - #endif -#endif -#ifndef DL_IMPORT - #define DL_IMPORT(t) t -#endif -#ifndef DL_EXPORT - #define DL_EXPORT(t) t -#endif -#define __PYX_COMMA , -#ifndef HAVE_LONG_LONG - #if PY_VERSION_HEX >= 0x02070000 - #define HAVE_LONG_LONG - #endif -#endif -#ifndef PY_LONG_LONG - #define PY_LONG_LONG LONG_LONG -#endif -#ifndef Py_HUGE_VAL - #define Py_HUGE_VAL HUGE_VAL -#endif -#ifdef PYPY_VERSION - #define CYTHON_COMPILING_IN_PYPY 1 - #define CYTHON_COMPILING_IN_PYSTON 0 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #undef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 0 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #if PY_VERSION_HEX < 0x03050000 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #undef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #undef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 1 - #undef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 0 - #undef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 0 - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 -#elif defined(PYSTON_VERSION) - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_PYSTON 1 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 -#else - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_PYSTON 0 - #define CYTHON_COMPILING_IN_CPYTHON 1 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #if PY_VERSION_HEX < 0x02070000 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #elif !defined(CYTHON_USE_PYTYPE_LOOKUP) - #define CYTHON_USE_PYTYPE_LOOKUP 1 - #endif - #if PY_MAJOR_VERSION < 3 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #if PY_VERSION_HEX < 0x02070000 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #elif !defined(CYTHON_USE_PYLONG_INTERNALS) - #define CYTHON_USE_PYLONG_INTERNALS 1 - #endif - #ifndef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 1 - #endif - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #if PY_VERSION_HEX < 0x030300F0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #elif !defined(CYTHON_USE_UNICODE_WRITER) - #define CYTHON_USE_UNICODE_WRITER 1 - #endif - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #ifndef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 1 - #endif - #ifndef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 1 - #endif - #ifndef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT (0 && PY_VERSION_HEX >= 0x03050000) - #endif - #ifndef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1) - #endif -#endif -#if !defined(CYTHON_FAST_PYCCALL) -#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) -#endif -#if CYTHON_USE_PYLONG_INTERNALS - #include "longintrepr.h" - #undef SHIFT - #undef BASE - #undef MASK -#endif -#ifndef __has_attribute - #define __has_attribute(x) 0 -#endif -#ifndef __has_cpp_attribute - #define __has_cpp_attribute(x) 0 -#endif -#ifndef CYTHON_RESTRICT - #if defined(__GNUC__) - #define CYTHON_RESTRICT __restrict__ - #elif defined(_MSC_VER) && _MSC_VER >= 1400 - #define CYTHON_RESTRICT __restrict - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_RESTRICT restrict - #else - #define CYTHON_RESTRICT - #endif -#endif -#ifndef CYTHON_UNUSED -# if defined(__GNUC__) -# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -#endif -#ifndef CYTHON_MAYBE_UNUSED_VAR -# if defined(__cplusplus) - template<class T> void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } -# else -# define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) -# endif -#endif -#ifndef CYTHON_NCP_UNUSED -# if CYTHON_COMPILING_IN_CPYTHON -# define CYTHON_NCP_UNUSED -# else -# define CYTHON_NCP_UNUSED CYTHON_UNUSED -# endif -#endif -#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) -#ifdef _MSC_VER - #ifndef _MSC_STDINT_H_ - #if _MSC_VER < 1300 - typedef unsigned char uint8_t; - typedef unsigned int uint32_t; - #else - typedef unsigned __int8 uint8_t; - typedef unsigned __int32 uint32_t; - #endif - #endif -#else - #include <stdint.h> -#endif -#ifndef CYTHON_FALLTHROUGH - #if defined(__cplusplus) && __cplusplus >= 201103L - #if __has_cpp_attribute(fallthrough) - #define CYTHON_FALLTHROUGH [[fallthrough]] - #elif __has_cpp_attribute(clang::fallthrough) - #define CYTHON_FALLTHROUGH [[clang::fallthrough]] - #elif __has_cpp_attribute(gnu::fallthrough) - #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] - #endif - #endif - #ifndef CYTHON_FALLTHROUGH - #if __has_attribute(fallthrough) - #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) - #else - #define CYTHON_FALLTHROUGH - #endif - #endif - #if defined(__clang__ ) && defined(__apple_build_version__) - #if __apple_build_version__ < 7000000 - #undef CYTHON_FALLTHROUGH - #define CYTHON_FALLTHROUGH - #endif - #endif -#endif - -#ifndef CYTHON_INLINE - #if defined(__clang__) - #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) - #elif defined(__GNUC__) - #define CYTHON_INLINE __inline__ - #elif defined(_MSC_VER) - #define CYTHON_INLINE __inline - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_INLINE inline - #else - #define CYTHON_INLINE - #endif -#endif - -#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) - #define Py_OptimizeFlag 0 -#endif -#define __PYX_BUILD_PY_SSIZE_T "n" -#define CYTHON_FORMAT_SSIZE_T "z" -#if PY_MAJOR_VERSION < 3 - #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) - #define __Pyx_DefaultClassType PyClass_Type -#else - #define __Pyx_BUILTIN_MODULE_NAME "builtins" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) - #define __Pyx_DefaultClassType PyType_Type -#endif -#ifndef Py_TPFLAGS_CHECKTYPES - #define Py_TPFLAGS_CHECKTYPES 0 -#endif -#ifndef Py_TPFLAGS_HAVE_INDEX - #define Py_TPFLAGS_HAVE_INDEX 0 -#endif -#ifndef Py_TPFLAGS_HAVE_NEWBUFFER - #define Py_TPFLAGS_HAVE_NEWBUFFER 0 -#endif -#ifndef Py_TPFLAGS_HAVE_FINALIZE - #define Py_TPFLAGS_HAVE_FINALIZE 0 -#endif -#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) - #ifndef METH_FASTCALL - #define METH_FASTCALL 0x80 - #endif - typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); - typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, - Py_ssize_t nargs, PyObject *kwnames); -#else - #define __Pyx_PyCFunctionFast _PyCFunctionFast - #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords -#endif -#if CYTHON_FAST_PYCCALL -#define __Pyx_PyFastCFunction_Check(func)\ - ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))))) -#else -#define __Pyx_PyFastCFunction_Check(func) 0 -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) - #define PyObject_Malloc(s) PyMem_Malloc(s) - #define PyObject_Free(p) PyMem_Free(p) - #define PyObject_Realloc(p) PyMem_Realloc(p) -#endif -#if CYTHON_COMPILING_IN_PYSTON - #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) -#else - #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) -#endif -#if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000 - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#elif PY_VERSION_HEX >= 0x03060000 - #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() -#elif PY_VERSION_HEX >= 0x03000000 - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#else - #define __Pyx_PyThreadState_Current _PyThreadState_Current -#endif -#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) -#include "pythread.h" -#define Py_tss_NEEDS_INIT 0 -typedef int Py_tss_t; -static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { - *key = PyThread_create_key(); - return 0; // PyThread_create_key reports success always -} -static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { - Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); - *key = Py_tss_NEEDS_INIT; - return key; -} -static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { - PyObject_Free(key); -} -static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { - return *key != Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { - PyThread_delete_key(*key); - *key = Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { - return PyThread_set_key_value(*key, value); -} -static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { - return PyThread_get_key_value(*key); -} -#endif // TSS (Thread Specific Storage) API -#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) -#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) -#else -#define __Pyx_PyDict_NewPresized(n) PyDict_New() -#endif -#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION - #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) -#else - #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) -#endif -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS -#define __Pyx_PyDict_GetItemStr(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) -#else -#define __Pyx_PyDict_GetItemStr(dict, name) PyDict_GetItem(dict, name) -#endif -#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) - #define CYTHON_PEP393_ENABLED 1 - #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ - 0 : _PyUnicode_Ready((PyObject *)(op))) - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) - #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) - #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) - #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) -#else - #define CYTHON_PEP393_ENABLED 0 - #define PyUnicode_1BYTE_KIND 1 - #define PyUnicode_2BYTE_KIND 2 - #define PyUnicode_4BYTE_KIND 4 - #define __Pyx_PyUnicode_READY(op) (0) - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) - #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) - #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) - #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) -#endif -#if CYTHON_COMPILING_IN_PYPY - #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) -#else - #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ - PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) - #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) - #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) - #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) -#endif -#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) -#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) -#else - #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) -#endif -#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) - #define PyObject_ASCII(o) PyObject_Repr(o) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBaseString_Type PyUnicode_Type - #define PyStringObject PyUnicodeObject - #define PyString_Type PyUnicode_Type - #define PyString_Check PyUnicode_Check - #define PyString_CheckExact PyUnicode_CheckExact - #define PyObject_Unicode PyObject_Str -#endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) - #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) -#else - #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) - #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) -#endif -#ifndef PySet_CheckExact - #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) -#endif -#if CYTHON_ASSUME_SAFE_MACROS - #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) -#else - #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyIntObject PyLongObject - #define PyInt_Type PyLong_Type - #define PyInt_Check(op) PyLong_Check(op) - #define PyInt_CheckExact(op) PyLong_CheckExact(op) - #define PyInt_FromString PyLong_FromString - #define PyInt_FromUnicode PyLong_FromUnicode - #define PyInt_FromLong PyLong_FromLong - #define PyInt_FromSize_t PyLong_FromSize_t - #define PyInt_FromSsize_t PyLong_FromSsize_t - #define PyInt_AsLong PyLong_AsLong - #define PyInt_AS_LONG PyLong_AS_LONG - #define PyInt_AsSsize_t PyLong_AsSsize_t - #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask - #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask - #define PyNumber_Int PyNumber_Long -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBoolObject PyLongObject -#endif -#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY - #ifndef PyUnicode_InternFromString - #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) - #endif -#endif -#if PY_VERSION_HEX < 0x030200A4 - typedef long Py_hash_t; - #define __Pyx_PyInt_FromHash_t PyInt_FromLong - #define __Pyx_PyInt_AsHash_t PyInt_AsLong -#else - #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t - #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t -#endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : (Py_INCREF(func), func)) -#else - #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) -#endif -#if CYTHON_USE_ASYNC_SLOTS - #if PY_VERSION_HEX >= 0x030500B1 - #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods - #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) - #else - #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) - #endif -#else - #define __Pyx_PyType_AsAsync(obj) NULL -#endif -#ifndef __Pyx_PyAsyncMethodsStruct - typedef struct { - unaryfunc am_await; - unaryfunc am_aiter; - unaryfunc am_anext; - } __Pyx_PyAsyncMethodsStruct; -#endif - -#if defined(WIN32) || defined(MS_WINDOWS) - #define _USE_MATH_DEFINES -#endif -#include <math.h> -#ifdef NAN -#define __PYX_NAN() ((float) NAN) -#else -static CYTHON_INLINE float __PYX_NAN() { - float value; - memset(&value, 0xFF, sizeof(value)); - return value; -} -#endif -#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) -#define __Pyx_truncl trunc -#else -#define __Pyx_truncl truncl -#endif - - -#define __PYX_ERR(f_index, lineno, Ln_error) \ -{ \ - __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \ -} - -#ifndef __PYX_EXTERN_C - #ifdef __cplusplus - #define __PYX_EXTERN_C extern "C" - #else - #define __PYX_EXTERN_C extern - #endif -#endif - -#define __PYX_HAVE__gevent____hub_primitives -#define __PYX_HAVE_API__gevent____hub_primitives -/* Early includes */ -#include "greenlet/greenlet.h" -#ifdef _OPENMP -#include <omp.h> -#endif /* _OPENMP */ - -#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) -#define CYTHON_WITHOUT_ASSERTIONS -#endif - -typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; - const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; - -#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 -#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0 -#define __PYX_DEFAULT_STRING_ENCODING "" -#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString -#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#define __Pyx_uchar_cast(c) ((unsigned char)c) -#define __Pyx_long_cast(x) ((long)x) -#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ - (sizeof(type) < sizeof(Py_ssize_t)) ||\ - (sizeof(type) > sizeof(Py_ssize_t) &&\ - likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX) &&\ - (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ - v == (type)PY_SSIZE_T_MIN))) ||\ - (sizeof(type) == sizeof(Py_ssize_t) &&\ - (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX))) ) -#if defined (__cplusplus) && __cplusplus >= 201103L - #include <cstdlib> - #define __Pyx_sst_abs(value) std::abs(value) -#elif SIZEOF_INT >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) abs(value) -#elif SIZEOF_LONG >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) labs(value) -#elif defined (_MSC_VER) - #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) -#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define __Pyx_sst_abs(value) llabs(value) -#elif defined (__GNUC__) - #define __Pyx_sst_abs(value) __builtin_llabs(value) -#else - #define __Pyx_sst_abs(value) ((value<0) ? -value : value) -#endif -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); -#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) -#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) -#define __Pyx_PyBytes_FromString PyBytes_FromString -#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); -#if PY_MAJOR_VERSION < 3 - #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#else - #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize -#endif -#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) -#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) -#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) -#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) -#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) -static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { - const Py_UNICODE *u_end = u; - while (*u_end++) ; - return (size_t)(u_end - u - 1); -} -#define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) -#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode -#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode -#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) -#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); -#define __Pyx_PySequence_Tuple(obj)\ - (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); -#if CYTHON_ASSUME_SAFE_MACROS -#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) -#else -#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) -#endif -#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) -#if PY_MAJOR_VERSION >= 3 -#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) -#else -#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) -#endif -#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x)) -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII -static int __Pyx_sys_getdefaultencoding_not_ascii; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - PyObject* ascii_chars_u = NULL; - PyObject* ascii_chars_b = NULL; - const char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - if (strcmp(default_encoding_c, "ascii") == 0) { - __Pyx_sys_getdefaultencoding_not_ascii = 0; - } else { - char ascii_chars[128]; - int c; - for (c = 0; c < 128; c++) { - ascii_chars[c] = c; - } - __Pyx_sys_getdefaultencoding_not_ascii = 1; - ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); - if (!ascii_chars_u) goto bad; - ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); - if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { - PyErr_Format( - PyExc_ValueError, - "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", - default_encoding_c); - goto bad; - } - Py_DECREF(ascii_chars_u); - Py_DECREF(ascii_chars_b); - } - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - Py_XDECREF(ascii_chars_u); - Py_XDECREF(ascii_chars_b); - return -1; -} -#endif -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) -#else -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -static char* __PYX_DEFAULT_STRING_ENCODING; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c)); - if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; - strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - return -1; -} -#endif -#endif - - -/* Test for GCC > 2.95 */ -#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) - #define likely(x) __builtin_expect(!!(x), 1) - #define unlikely(x) __builtin_expect(!!(x), 0) -#else /* !__GNUC__ or GCC < 2.95 */ - #define likely(x) (x) - #define unlikely(x) (x) -#endif /* __GNUC__ */ -static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } - -static PyObject *__pyx_m = NULL; -static PyObject *__pyx_d; -static PyObject *__pyx_b; -static PyObject *__pyx_cython_runtime = NULL; -static PyObject *__pyx_empty_tuple; -static PyObject *__pyx_empty_bytes; -static PyObject *__pyx_empty_unicode; -static int __pyx_lineno; -static int __pyx_clineno = 0; -static const char * __pyx_cfilenm= __FILE__; -static const char *__pyx_filename; - - -static const char *__pyx_f[] = { - "src\\gevent\\_hub_primitives.py", - "src\\gevent\\__greenlet_primitives.pxd", - "src\\gevent\\__waiter.pxd", - "src\\gevent\\__hub_primitives.pxd", -}; - -/*--- Type declarations ---*/ -struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet; -struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop; -struct __pyx_obj_6gevent_8__waiter_Waiter; -struct __pyx_obj_6gevent_8__waiter_MultipleWaiter; -struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet; -struct __pyx_obj_6gevent_16__hub_primitives__WaitIterator; -struct __pyx_opt_args_6gevent_16__hub_primitives_22WaitOperationsGreenlet_cancel_wait; -struct __pyx_opt_args_6gevent_16__hub_primitives_iwait_on_objects; -struct __pyx_opt_args_6gevent_16__hub_primitives_wait_on_objects; -struct __pyx_opt_args_6gevent_16__hub_primitives_wait_on_watcher; -struct __pyx_opt_args_6gevent_16__hub_primitives_wait_read; -struct __pyx_opt_args_6gevent_16__hub_primitives_wait_write; -struct __pyx_opt_args_6gevent_16__hub_primitives_wait_readwrite; -struct __pyx_opt_args_6gevent_16__hub_primitives_wait_on_socket; - -/* "gevent/__hub_primitives.pxd":44 - * - * cpdef wait(self, watcher) - * cpdef cancel_wait(self, watcher, error, close_watcher=*) # <<<<<<<<<<<<<< - * cpdef _cancel_wait(self, watcher, error, close_watcher) - * - */ -struct __pyx_opt_args_6gevent_16__hub_primitives_22WaitOperationsGreenlet_cancel_wait { - int __pyx_n; - PyObject *close_watcher; -}; - -/* "gevent/__hub_primitives.pxd":61 - * cdef _cleanup(self) - * - * cpdef iwait_on_objects(objects, timeout=*, count=*) # <<<<<<<<<<<<<< - * cpdef wait_on_objects(objects=*, timeout=*, count=*) - * - */ -struct __pyx_opt_args_6gevent_16__hub_primitives_iwait_on_objects { - int __pyx_n; - PyObject *timeout; - PyObject *count; -}; - -/* "gevent/__hub_primitives.pxd":62 - * - * cpdef iwait_on_objects(objects, timeout=*, count=*) - * cpdef wait_on_objects(objects=*, timeout=*, count=*) # <<<<<<<<<<<<<< - * - * cdef _primitive_wait(watcher, timeout, timeout_exc, WaitOperationsGreenlet hub) - */ -struct __pyx_opt_args_6gevent_16__hub_primitives_wait_on_objects { - int __pyx_n; - PyObject *objects; - PyObject *timeout; - PyObject *count; -}; - -/* "gevent/__hub_primitives.pxd":65 - * - * cdef _primitive_wait(watcher, timeout, timeout_exc, WaitOperationsGreenlet hub) - * cpdef wait_on_watcher(watcher, timeout=*, timeout_exc=*, WaitOperationsGreenlet hub=*) # <<<<<<<<<<<<<< - * cpdef wait_read(fileno, timeout=*, timeout_exc=*) - * cpdef wait_write(fileno, timeout=*, timeout_exc=*, event=*) - */ -struct __pyx_opt_args_6gevent_16__hub_primitives_wait_on_watcher { - int __pyx_n; - PyObject *timeout; - PyObject *timeout_exc; - struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *hub; -}; - -/* "gevent/__hub_primitives.pxd":66 - * cdef _primitive_wait(watcher, timeout, timeout_exc, WaitOperationsGreenlet hub) - * cpdef wait_on_watcher(watcher, timeout=*, timeout_exc=*, WaitOperationsGreenlet hub=*) - * cpdef wait_read(fileno, timeout=*, timeout_exc=*) # <<<<<<<<<<<<<< - * cpdef wait_write(fileno, timeout=*, timeout_exc=*, event=*) - * cpdef wait_readwrite(fileno, timeout=*, timeout_exc=*, event=*) - */ -struct __pyx_opt_args_6gevent_16__hub_primitives_wait_read { - int __pyx_n; - PyObject *timeout; - PyObject *timeout_exc; -}; - -/* "gevent/__hub_primitives.pxd":67 - * cpdef wait_on_watcher(watcher, timeout=*, timeout_exc=*, WaitOperationsGreenlet hub=*) - * cpdef wait_read(fileno, timeout=*, timeout_exc=*) - * cpdef wait_write(fileno, timeout=*, timeout_exc=*, event=*) # <<<<<<<<<<<<<< - * cpdef wait_readwrite(fileno, timeout=*, timeout_exc=*, event=*) - * cpdef wait_on_socket(socket, watcher, timeout_exc=*) - */ -struct __pyx_opt_args_6gevent_16__hub_primitives_wait_write { - int __pyx_n; - PyObject *timeout; - PyObject *timeout_exc; - PyObject *event; -}; - -/* "gevent/__hub_primitives.pxd":68 - * cpdef wait_read(fileno, timeout=*, timeout_exc=*) - * cpdef wait_write(fileno, timeout=*, timeout_exc=*, event=*) - * cpdef wait_readwrite(fileno, timeout=*, timeout_exc=*, event=*) # <<<<<<<<<<<<<< - * cpdef wait_on_socket(socket, watcher, timeout_exc=*) - */ -struct __pyx_opt_args_6gevent_16__hub_primitives_wait_readwrite { - int __pyx_n; - PyObject *timeout; - PyObject *timeout_exc; - PyObject *event; -}; - -/* "gevent/__hub_primitives.pxd":69 - * cpdef wait_write(fileno, timeout=*, timeout_exc=*, event=*) - * cpdef wait_readwrite(fileno, timeout=*, timeout_exc=*, event=*) - * cpdef wait_on_socket(socket, watcher, timeout_exc=*) # <<<<<<<<<<<<<< - */ -struct __pyx_opt_args_6gevent_16__hub_primitives_wait_on_socket { - int __pyx_n; - PyObject *timeout_exc; -}; - -/* "gevent/__greenlet_primitives.pxd":37 - * return PyGreenlet_Switch(self, NULL, NULL) - * - * cdef class TrackedRawGreenlet(greenlet): # <<<<<<<<<<<<<< - * pass - * - */ -struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet { - PyGreenlet __pyx_base; -}; - - -/* "gevent/__greenlet_primitives.pxd":40 - * pass - * - * cdef class SwitchOutGreenletWithLoop(TrackedRawGreenlet): # <<<<<<<<<<<<<< - * cdef public loop - * - */ -struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop { - struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet __pyx_base; - struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_vtab; - PyObject *loop; -}; - - -/* "gevent/__waiter.pxd":33 - * _greenlet_imported = True - * - * cdef class Waiter: # <<<<<<<<<<<<<< - * cdef readonly SwitchOutGreenletWithLoop hub - * cdef readonly greenlet greenlet - */ -struct __pyx_obj_6gevent_8__waiter_Waiter { - PyObject_HEAD - struct __pyx_vtabstruct_6gevent_8__waiter_Waiter *__pyx_vtab; - struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *hub; - PyGreenlet *greenlet; - PyObject *value; - PyObject *_exception; -}; - - -/* "gevent/__waiter.pxd":47 - * @cython.final - * @cython.internal - * cdef class MultipleWaiter(Waiter): # <<<<<<<<<<<<<< - * cdef list _values - */ -struct __pyx_obj_6gevent_8__waiter_MultipleWaiter { - struct __pyx_obj_6gevent_8__waiter_Waiter __pyx_base; - PyObject *_values; -}; - - -/* "gevent/__hub_primitives.pxd":41 - * - * - * cdef class WaitOperationsGreenlet(SwitchOutGreenletWithLoop): # <<<<<<<<<<<<<< - * - * cpdef wait(self, watcher) - */ -struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet { - struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop __pyx_base; -}; - - -/* "gevent/__hub_primitives.pxd":47 - * cpdef _cancel_wait(self, watcher, error, close_watcher) - * - * cdef class _WaitIterator: # <<<<<<<<<<<<<< - * cdef SwitchOutGreenletWithLoop _hub - * cdef MultipleWaiter _waiter - */ -struct __pyx_obj_6gevent_16__hub_primitives__WaitIterator { - PyObject_HEAD - struct __pyx_vtabstruct_6gevent_16__hub_primitives__WaitIterator *__pyx_vtab; - struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *_hub; - struct __pyx_obj_6gevent_8__waiter_MultipleWaiter *_waiter; - PyObject *_switch; - PyObject *_timeout; - PyObject *_objects; - PyObject *_timer; - Py_ssize_t _count; - int _begun; -}; - - - -/* "gevent/__greenlet_primitives.pxd":40 - * pass - * - * cdef class SwitchOutGreenletWithLoop(TrackedRawGreenlet): # <<<<<<<<<<<<<< - * cdef public loop - * - */ - -struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop { - PyObject *(*__pyx_switch)(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *, int __pyx_skip_dispatch); - PyObject *(*switch_out)(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *, int __pyx_skip_dispatch); -}; -static struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_vtabptr_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop; - - -/* "gevent/__waiter.pxd":33 - * _greenlet_imported = True - * - * cdef class Waiter: # <<<<<<<<<<<<<< - * cdef readonly SwitchOutGreenletWithLoop hub - * cdef readonly greenlet greenlet - */ - -struct __pyx_vtabstruct_6gevent_8__waiter_Waiter { - PyObject *(*get)(struct __pyx_obj_6gevent_8__waiter_Waiter *, int __pyx_skip_dispatch); - PyObject *(*clear)(struct __pyx_obj_6gevent_8__waiter_Waiter *, int __pyx_skip_dispatch); -}; -static struct __pyx_vtabstruct_6gevent_8__waiter_Waiter *__pyx_vtabptr_6gevent_8__waiter_Waiter; - - -/* "gevent/__waiter.pxd":47 - * @cython.final - * @cython.internal - * cdef class MultipleWaiter(Waiter): # <<<<<<<<<<<<<< - * cdef list _values - */ - -struct __pyx_vtabstruct_6gevent_8__waiter_MultipleWaiter { - struct __pyx_vtabstruct_6gevent_8__waiter_Waiter __pyx_base; -}; -static struct __pyx_vtabstruct_6gevent_8__waiter_MultipleWaiter *__pyx_vtabptr_6gevent_8__waiter_MultipleWaiter; - - -/* "src/gevent/_hub_primitives.py":44 - * ] - * - * class WaitOperationsGreenlet(SwitchOutGreenletWithLoop): # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * - * def wait(self, watcher): - */ - -struct __pyx_vtabstruct_6gevent_16__hub_primitives_WaitOperationsGreenlet { - struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop __pyx_base; - PyObject *(*wait)(struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *, PyObject *, int __pyx_skip_dispatch); - PyObject *(*cancel_wait)(struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *, PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_16__hub_primitives_22WaitOperationsGreenlet_cancel_wait *__pyx_optional_args); - PyObject *(*_cancel_wait)(struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *, PyObject *, PyObject *, PyObject *, int __pyx_skip_dispatch); -}; -static struct __pyx_vtabstruct_6gevent_16__hub_primitives_WaitOperationsGreenlet *__pyx_vtabptr_6gevent_16__hub_primitives_WaitOperationsGreenlet; - - -/* "src/gevent/_hub_primitives.py":98 - * - * - * class _WaitIterator(object): # <<<<<<<<<<<<<< - * - * def __init__(self, objects, hub, timeout, count): - */ - -struct __pyx_vtabstruct_6gevent_16__hub_primitives__WaitIterator { - PyObject *(*_cleanup)(struct __pyx_obj_6gevent_16__hub_primitives__WaitIterator *); -}; -static struct __pyx_vtabstruct_6gevent_16__hub_primitives__WaitIterator *__pyx_vtabptr_6gevent_16__hub_primitives__WaitIterator; - -/* --- Runtime support code (head) --- */ -/* Refnanny.proto */ -#ifndef CYTHON_REFNANNY - #define CYTHON_REFNANNY 0 -#endif -#if CYTHON_REFNANNY - typedef struct { - void (*INCREF)(void*, PyObject*, int); - void (*DECREF)(void*, PyObject*, int); - void (*GOTREF)(void*, PyObject*, int); - void (*GIVEREF)(void*, PyObject*, int); - void* (*SetupContext)(const char*, int, const char*); - void (*FinishContext)(void**); - } __Pyx_RefNannyAPIStruct; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); - #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; -#ifdef WITH_THREAD - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - if (acquire_gil) {\ - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - PyGILState_Release(__pyx_gilstate_save);\ - } else {\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - } -#else - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) -#endif - #define __Pyx_RefNannyFinishContext()\ - __Pyx_RefNanny->FinishContext(&__pyx_refnanny) - #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) - #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) - #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) - #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0) -#else - #define __Pyx_RefNannyDeclarations - #define __Pyx_RefNannySetupContext(name, acquire_gil) - #define __Pyx_RefNannyFinishContext() - #define __Pyx_INCREF(r) Py_INCREF(r) - #define __Pyx_DECREF(r) Py_DECREF(r) - #define __Pyx_GOTREF(r) - #define __Pyx_GIVEREF(r) - #define __Pyx_XINCREF(r) Py_XINCREF(r) - #define __Pyx_XDECREF(r) Py_XDECREF(r) - #define __Pyx_XGOTREF(r) - #define __Pyx_XGIVEREF(r) -#endif -#define __Pyx_XDECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_XDECREF(tmp);\ - } while (0) -#define __Pyx_DECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_DECREF(tmp);\ - } while (0) -#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) -#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) - -/* PyObjectGetAttrStr.proto */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) -#endif - -/* GetBuiltinName.proto */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name); - -/* PyCFunctionFastCall.proto */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); -#else -#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) -#endif - -/* PyFunctionFastCall.proto */ -#if CYTHON_FAST_PYCALL -#define __Pyx_PyFunction_FastCall(func, args, nargs)\ - __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs); -#else -#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) -#endif -#endif - -/* PyObjectCall.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); -#else -#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) -#endif - -/* PyObjectCallMethO.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); -#endif - -/* PyObjectCallOneArg.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); - -/* PyThreadStateGet.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; -#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; -#define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type -#else -#define __Pyx_PyThreadState_declare -#define __Pyx_PyThreadState_assign -#define __Pyx_PyErr_Occurred() PyErr_Occurred() -#endif - -/* PyErrFetchRestore.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) -#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) -#else -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#endif -#else -#define __Pyx_PyErr_Clear() PyErr_Clear() -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) -#endif - -/* RaiseException.proto */ -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); - -/* PyObjectCallNoArg.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); -#else -#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL) -#endif - -/* GetException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) -static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#else -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); -#endif - -/* SwapException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#else -static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); -#endif - -/* SaveResetException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -#else -#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) -#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) -#endif - -/* RaiseArgTupleInvalid.proto */ -static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, - Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); - -/* RaiseDoubleKeywords.proto */ -static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); - -/* ParseKeywords.proto */ -static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\ - PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\ - const char* function_name); - -/* PyErrExceptionMatches.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) -static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); -#else -#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) -#endif - -/* GetAttr.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *); - -/* GetAttr3.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *); - -/* ExtTypeTest.proto */ -static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); - -/* GetModuleGlobalName.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name); - -/* PyObjectLookupSpecial.proto */ -#if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name) { - PyObject *res; - PyTypeObject *tp = Py_TYPE(obj); -#if PY_MAJOR_VERSION < 3 - if (unlikely(PyInstance_Check(obj))) - return __Pyx_PyObject_GetAttrStr(obj, attr_name); -#endif - res = _PyType_Lookup(tp, attr_name); - if (likely(res)) { - descrgetfunc f = Py_TYPE(res)->tp_descr_get; - if (!f) { - Py_INCREF(res); - } else { - res = f(res, obj, (PyObject *)tp); - } - } else { - PyErr_SetObject(PyExc_AttributeError, attr_name); - } - return res; -} -#else -#define __Pyx_PyObject_LookupSpecial(o,n) __Pyx_PyObject_GetAttrStr(o,n) -#endif - -/* ArgTypeTest.proto */ -#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\ - ((likely((Py_TYPE(obj) == type) | (none_allowed && (obj == Py_None)))) ? 1 :\ - __Pyx__ArgTypeTest(obj, type, name, exact)) -static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact); - -/* CallNextTpDealloc.proto */ -static void __Pyx_call_next_tp_dealloc(PyObject* obj, destructor current_tp_dealloc); - -/* CallNextTpTraverse.proto */ -static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse); - -/* CallNextTpClear.proto */ -static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_dealloc); - -/* GetVTable.proto */ -static void* __Pyx_GetVtable(PyObject *dict); - -/* PyObject_GenericGetAttrNoDict.proto */ -#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr -#endif - -/* PyObject_GenericGetAttr.proto */ -#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr -#endif - -/* SetVTable.proto */ -static int __Pyx_SetVtable(PyObject *dict, void *vtable); - -/* Import.proto */ -static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); - -/* ImportFrom.proto */ -static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); - -/* FetchCommonType.proto */ -static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); - -/* CythonFunction.proto */ -#define __Pyx_CyFunction_USED 1 -#define __Pyx_CYFUNCTION_STATICMETHOD 0x01 -#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 -#define __Pyx_CYFUNCTION_CCLASS 0x04 -#define __Pyx_CyFunction_GetClosure(f)\ - (((__pyx_CyFunctionObject *) (f))->func_closure) -#define __Pyx_CyFunction_GetClassObj(f)\ - (((__pyx_CyFunctionObject *) (f))->func_classobj) -#define __Pyx_CyFunction_Defaults(type, f)\ - ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) -#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ - ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) -typedef struct { - PyCFunctionObject func; -#if PY_VERSION_HEX < 0x030500A0 - PyObject *func_weakreflist; -#endif - PyObject *func_dict; - PyObject *func_name; - PyObject *func_qualname; - PyObject *func_doc; - PyObject *func_globals; - PyObject *func_code; - PyObject *func_closure; - PyObject *func_classobj; - void *defaults; - int defaults_pyobjects; - int flags; - PyObject *defaults_tuple; - PyObject *defaults_kwdict; - PyObject *(*defaults_getter)(PyObject *); - PyObject *func_annotations; -} __pyx_CyFunctionObject; -static PyTypeObject *__pyx_CyFunctionType = 0; -#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, globals, code)\ - __Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, globals, code) -static PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml, - int flags, PyObject* qualname, - PyObject *self, - PyObject *module, PyObject *globals, - PyObject* code); -static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, - size_t size, - int pyobjects); -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, - PyObject *tuple); -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, - PyObject *dict); -static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, - PyObject *dict); -static int __pyx_CyFunction_init(void); - -/* GetNameInClass.proto */ -static PyObject *__Pyx_GetNameInClass(PyObject *nmspace, PyObject *name); - -/* Globals.proto */ -static PyObject* __Pyx_Globals(void); - -/* CLineInTraceback.proto */ -#ifdef CYTHON_CLINE_IN_TRACEBACK -#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) -#else -static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); -#endif - -/* CodeObjectCache.proto */ -typedef struct { - PyCodeObject* code_object; - int code_line; -} __Pyx_CodeObjectCacheEntry; -struct __Pyx_CodeObjectCache { - int count; - int max_count; - __Pyx_CodeObjectCacheEntry* entries; -}; -static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; -static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); -static PyCodeObject *__pyx_find_code_object(int code_line); -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); - -/* AddTraceback.proto */ -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename); - -/* CIntToPy.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); - -/* CIntFromPy.proto */ -static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); - -/* CIntFromPy.proto */ -static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); - -/* FastTypeChecks.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); -#else -#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) -#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) -#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) -#endif -#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) - -/* CheckBinaryVersion.proto */ -static int __Pyx_check_binary_version(void); - -/* PyObjectSetAttrStr.proto */ -#if CYTHON_USE_TYPE_SLOTS -#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o, n, NULL) -static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value); -#else -#define __Pyx_PyObject_DelAttrStr(o,n) PyObject_DelAttr(o,n) -#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v) -#endif - -/* VoidPtrExport.proto */ -static int __Pyx_ExportVoidPtr(PyObject *name, void *p, const char *sig); - -/* FunctionExport.proto */ -static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig); - -/* PyIdentifierFromString.proto */ -#if !defined(__Pyx_PyIdentifier_FromString) -#if PY_MAJOR_VERSION < 3 - #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s) -#else - #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s) -#endif -#endif - -/* ModuleImport.proto */ -static PyObject *__Pyx_ImportModule(const char *name); - -/* TypeImport.proto */ -static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict); - -/* VoidPtrImport.proto */ -static int __Pyx_ImportVoidPtr(PyObject *module, const char *name, void **p, const char *sig); - -/* FunctionImport.proto */ -static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig); - -/* InitStrings.proto */ -static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); - -static PyObject *__pyx_f_6gevent_16__hub_primitives_22WaitOperationsGreenlet_wait(struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *__pyx_v_self, PyObject *__pyx_v_watcher, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_16__hub_primitives_22WaitOperationsGreenlet_cancel_wait(struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *__pyx_v_self, PyObject *__pyx_v_watcher, PyObject *__pyx_v_error, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_16__hub_primitives_22WaitOperationsGreenlet_cancel_wait *__pyx_optional_args); /* proto*/ -static PyObject *__pyx_f_6gevent_16__hub_primitives_22WaitOperationsGreenlet__cancel_wait(CYTHON_UNUSED struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *__pyx_v_self, PyObject *__pyx_v_watcher, PyObject *__pyx_v_error, PyObject *__pyx_v_close_watcher, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_16__hub_primitives_13_WaitIterator__cleanup(struct __pyx_obj_6gevent_16__hub_primitives__WaitIterator *__pyx_v_self); /* proto*/ - -/* Module declarations from 'cython' */ - -/* Module declarations from 'greenlet' */ - -/* Module declarations from 'gevent.__greenlet_primitives' */ -static PyTypeObject *__pyx_ptype_6gevent_21__greenlet_primitives_greenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop = 0; -static PyObject **__pyx_vp_6gevent_21__greenlet_primitives_wref = 0; -#define __pyx_v_6gevent_21__greenlet_primitives_wref (*__pyx_vp_6gevent_21__greenlet_primitives_wref) -static PyObject **__pyx_vp_6gevent_21__greenlet_primitives_BlockingSwitchOutError = 0; -#define __pyx_v_6gevent_21__greenlet_primitives_BlockingSwitchOutError (*__pyx_vp_6gevent_21__greenlet_primitives_BlockingSwitchOutError) -static int *__pyx_vp_6gevent_21__greenlet_primitives__greenlet_imported = 0; -#define __pyx_v_6gevent_21__greenlet_primitives__greenlet_imported (*__pyx_vp_6gevent_21__greenlet_primitives__greenlet_imported) - -/* Module declarations from 'gevent.__hub_local' */ -static PyObject **__pyx_vp_6gevent_11__hub_local__threadlocal = 0; -#define __pyx_v_6gevent_11__hub_local__threadlocal (*__pyx_vp_6gevent_11__hub_local__threadlocal) -static struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *(*__pyx_f_6gevent_11__hub_local_get_hub_noargs)(int __pyx_skip_dispatch); /*proto*/ - -/* Module declarations from 'gevent.__waiter' */ -static PyTypeObject *__pyx_ptype_6gevent_8__waiter_greenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_8__waiter_Waiter = 0; -static PyTypeObject *__pyx_ptype_6gevent_8__waiter_MultipleWaiter = 0; -static PyObject **__pyx_vp_6gevent_8__waiter_sys = 0; -#define __pyx_v_6gevent_8__waiter_sys (*__pyx_vp_6gevent_8__waiter_sys) -static PyObject **__pyx_vp_6gevent_8__waiter_ConcurrentObjectUseError = 0; -#define __pyx_v_6gevent_8__waiter_ConcurrentObjectUseError (*__pyx_vp_6gevent_8__waiter_ConcurrentObjectUseError) -static int *__pyx_vp_6gevent_8__waiter__greenlet_imported = 0; -#define __pyx_v_6gevent_8__waiter__greenlet_imported (*__pyx_vp_6gevent_8__waiter__greenlet_imported) -static PyObject **__pyx_vp_6gevent_8__waiter__NONE = 0; -#define __pyx_v_6gevent_8__waiter__NONE (*__pyx_vp_6gevent_8__waiter__NONE) - -/* Module declarations from 'gevent.__hub_primitives' */ -static PyTypeObject *__pyx_ptype_6gevent_16__hub_primitives_greenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_16__hub_primitives_WaitOperationsGreenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_16__hub_primitives__WaitIterator = 0; -static PyObject *__pyx_v_6gevent_16__hub_primitives_InvalidSwitchError = 0; -static PyObject *__pyx_v_6gevent_16__hub_primitives__waiter = 0; -static PyObject *__pyx_v_6gevent_16__hub_primitives__greenlet_primitives = 0; -static PyObject *__pyx_v_6gevent_16__hub_primitives_traceback = 0; -static PyObject *__pyx_v_6gevent_16__hub_primitives__timeout_error = 0; -static PyObject *__pyx_v_6gevent_16__hub_primitives_Timeout = 0; -static int __pyx_v_6gevent_16__hub_primitives__greenlet_imported; -static CYTHON_INLINE PyGreenlet *__pyx_f_6gevent_16__hub_primitives_getcurrent(void); /*proto*/ -static CYTHON_INLINE void __pyx_f_6gevent_16__hub_primitives_greenlet_init(void); /*proto*/ -static PyObject *__pyx_f_6gevent_16__hub_primitives_iwait_on_objects(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_16__hub_primitives_iwait_on_objects *__pyx_optional_args); /*proto*/ -static PyObject *__pyx_f_6gevent_16__hub_primitives_wait_on_objects(int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_16__hub_primitives_wait_on_objects *__pyx_optional_args); /*proto*/ -static PyObject *__pyx_f_6gevent_16__hub_primitives__primitive_wait(PyObject *, PyObject *, PyObject *, struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *); /*proto*/ -static PyObject *__pyx_f_6gevent_16__hub_primitives_wait_on_watcher(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_16__hub_primitives_wait_on_watcher *__pyx_optional_args); /*proto*/ -static PyObject *__pyx_f_6gevent_16__hub_primitives_wait_read(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_16__hub_primitives_wait_read *__pyx_optional_args); /*proto*/ -static PyObject *__pyx_f_6gevent_16__hub_primitives_wait_write(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_16__hub_primitives_wait_write *__pyx_optional_args); /*proto*/ -static PyObject *__pyx_f_6gevent_16__hub_primitives_wait_readwrite(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_16__hub_primitives_wait_readwrite *__pyx_optional_args); /*proto*/ -static PyObject *__pyx_f_6gevent_16__hub_primitives_wait_on_socket(PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_16__hub_primitives_wait_on_socket *__pyx_optional_args); /*proto*/ -#define __Pyx_MODULE_NAME "gevent.__hub_primitives" -extern int __pyx_module_is_main_gevent____hub_primitives; -int __pyx_module_is_main_gevent____hub_primitives = 0; - -/* Implementation of 'gevent.__hub_primitives' */ -static PyObject *__pyx_builtin___import__; -static PyObject *__pyx_builtin_StopIteration; -static const char __pyx_k_e[] = "e"; -static const char __pyx_k_io[] = "io"; -static const char __pyx_k_all[] = "__all__"; -static const char __pyx_k_hub[] = "hub"; -static const char __pyx_k_NONE[] = "_NONE"; -static const char __pyx_k_exit[] = "__exit__"; -static const char __pyx_k_init[] = "_init"; -static const char __pyx_k_join[] = "join"; -static const char __pyx_k_main[] = "__main__"; -static const char __pyx_k_next[] = "__next__"; -static const char __pyx_k_self[] = "__self__"; -static const char __pyx_k_stop[] = "stop"; -static const char __pyx_k_test[] = "__test__"; -static const char __pyx_k_wait[] = "wait"; -static const char __pyx_k_close[] = "close"; -static const char __pyx_k_count[] = "count"; -static const char __pyx_k_enter[] = "__enter__"; -static const char __pyx_k_error[] = "error"; -static const char __pyx_k_event[] = "event"; -static const char __pyx_k_start[] = "start"; -static const char __pyx_k_throw[] = "throw"; -static const char __pyx_k_timer[] = "timer"; -static const char __pyx_k_Waiter[] = "Waiter"; -static const char __pyx_k_active[] = "active"; -static const char __pyx_k_fileno[] = "fileno"; -static const char __pyx_k_gevent[] = "gevent"; -static const char __pyx_k_import[] = "__import__"; -static const char __pyx_k_lambda[] = "<lambda>"; -static const char __pyx_k_next_2[] = "next"; -static const char __pyx_k_self_2[] = "self"; -static const char __pyx_k_socket[] = "socket"; -static const char __pyx_k_switch[] = "switch"; -static const char __pyx_k_unlink[] = "unlink"; -static const char __pyx_k_waiter[] = "_waiter"; -static const char __pyx_k_Timeout[] = "Timeout"; -static const char __pyx_k_objects[] = "objects"; -static const char __pyx_k_rawlink[] = "rawlink"; -static const char __pyx_k_timeout[] = "timeout"; -static const char __pyx_k_watcher[] = "watcher"; -static const char __pyx_k_callback[] = "callback"; -static const char __pyx_k_greenlet[] = "greenlet"; -static const char __pyx_k_priority[] = "priority"; -static const char __pyx_k_pyx_capi[] = "__pyx_capi__"; -static const char __pyx_k_print_exc[] = "print_exc"; -static const char __pyx_k_timed_out[] = "timed out"; -static const char __pyx_k_traceback[] = "traceback"; -static const char __pyx_k_wait_read[] = "wait_read"; -static const char __pyx_k_getcurrent[] = "getcurrent"; -static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__"; -static const char __pyx_k_wait_write[] = "wait_write"; -static const char __pyx_k_cancel_wait[] = "cancel_wait"; -static const char __pyx_k_timeout_exc[] = "timeout_exc"; -static const char __pyx_k_gevent__util[] = "gevent._util"; -static const char __pyx_k_run_callback[] = "run_callback"; -static const char __pyx_k_StopIteration[] = "StopIteration"; -static const char __pyx_k_cancel_wait_2[] = "_cancel_wait"; -static const char __pyx_k_close_watcher[] = "close_watcher"; -static const char __pyx_k_greenlet_init[] = "greenlet_init"; -static const char __pyx_k_timeout_error[] = "_timeout_error"; -static const char __pyx_k_MultipleWaiter[] = "MultipleWaiter"; -static const char __pyx_k_get_hub_noargs[] = "get_hub_noargs"; -static const char __pyx_k_gevent_timeout[] = "gevent.timeout"; -static const char __pyx_k_import_c_accel[] = "import_c_accel"; -static const char __pyx_k_wait_on_socket[] = "wait_on_socket"; -static const char __pyx_k_wait_readwrite[] = "wait_readwrite"; -static const char __pyx_k_wait_on_objects[] = "wait_on_objects"; -static const char __pyx_k_wait_on_watcher[] = "wait_on_watcher"; -static const char __pyx_k_iwait_on_objects[] = "iwait_on_objects"; -static const char __pyx_k_gevent__hub_local[] = "gevent._hub_local"; -static const char __pyx_k_gevent_exceptions[] = "gevent.exceptions"; -static const char __pyx_k_greenlet_imported[] = "_greenlet_imported"; -static const char __pyx_k_InvalidSwitchError[] = "InvalidSwitchError"; -static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; -static const char __pyx_k_start_new_or_dummy[] = "_start_new_or_dummy"; -static const char __pyx_k_greenlet_primitives[] = "_greenlet_primitives"; -static const char __pyx_k_WaitOperationsGreenlet[] = "WaitOperationsGreenlet"; -static const char __pyx_k_gevent___hub_primitives[] = "gevent.__hub_primitives"; -static const char __pyx_k_ConcurrentObjectUseError[] = "ConcurrentObjectUseError"; -static const char __pyx_k_SwitchOutGreenletWithLoop[] = "SwitchOutGreenletWithLoop"; -static const char __pyx_k_set_default_timeout_error[] = "set_default_timeout_error"; -static const char __pyx_k_WaitOperationsGreenlet_wait[] = "WaitOperationsGreenlet.wait"; -static const char __pyx_k_src_gevent__hub_primitives_py[] = "src\\gevent\\_hub_primitives.py"; -static const char __pyx_k_A_collection_of_primitives_used[] = "\nA collection of primitives used by the hub, and suitable for\ncompilation with Cython because of their frequency of use.\n\n\n"; -static const char __pyx_k_Invalid_switch_into_s_r_expected[] = "Invalid switch into %s: %r (expected %r)"; -static const char __pyx_k_This_socket_is_already_used_by_a[] = "This socket is already used by another greenlet: %r"; -static const char __pyx_k_WaitOperationsGreenlet__cancel_w[] = "WaitOperationsGreenlet._cancel_wait"; -static const char __pyx_k_WaitOperationsGreenlet_cancel_wa[] = "WaitOperationsGreenlet.cancel_wait"; -static PyObject *__pyx_n_s_ConcurrentObjectUseError; -static PyObject *__pyx_n_s_InvalidSwitchError; -static PyObject *__pyx_kp_s_Invalid_switch_into_s_r_expected; -static PyObject *__pyx_n_s_MultipleWaiter; -static PyObject *__pyx_n_s_NONE; -static PyObject *__pyx_n_s_StopIteration; -static PyObject *__pyx_n_s_SwitchOutGreenletWithLoop; -static PyObject *__pyx_kp_s_This_socket_is_already_used_by_a; -static PyObject *__pyx_n_s_Timeout; -static PyObject *__pyx_n_s_WaitOperationsGreenlet; -static PyObject *__pyx_n_s_WaitOperationsGreenlet__cancel_w; -static PyObject *__pyx_n_s_WaitOperationsGreenlet_cancel_wa; -static PyObject *__pyx_n_s_WaitOperationsGreenlet_wait; -static PyObject *__pyx_n_s_Waiter; -static PyObject *__pyx_n_s_active; -static PyObject *__pyx_n_s_all; -static PyObject *__pyx_n_s_callback; -static PyObject *__pyx_n_s_cancel_wait; -static PyObject *__pyx_n_s_cancel_wait_2; -static PyObject *__pyx_n_s_cline_in_traceback; -static PyObject *__pyx_n_s_close; -static PyObject *__pyx_n_s_close_watcher; -static PyObject *__pyx_n_s_count; -static PyObject *__pyx_n_s_e; -static PyObject *__pyx_n_s_enter; -static PyObject *__pyx_n_s_error; -static PyObject *__pyx_n_s_event; -static PyObject *__pyx_n_s_exit; -static PyObject *__pyx_n_s_fileno; -static PyObject *__pyx_n_s_get_hub_noargs; -static PyObject *__pyx_n_s_getcurrent; -static PyObject *__pyx_n_s_gevent; -static PyObject *__pyx_n_s_gevent___hub_primitives; -static PyObject *__pyx_n_s_gevent__hub_local; -static PyObject *__pyx_n_s_gevent__util; -static PyObject *__pyx_n_s_gevent_exceptions; -static PyObject *__pyx_n_s_gevent_timeout; -static PyObject *__pyx_n_s_greenlet; -static PyObject *__pyx_n_s_greenlet_imported; -static PyObject *__pyx_n_s_greenlet_init; -static PyObject *__pyx_n_s_greenlet_primitives; -static PyObject *__pyx_n_s_hub; -static PyObject *__pyx_n_s_import; -static PyObject *__pyx_n_s_import_c_accel; -static PyObject *__pyx_n_s_init; -static PyObject *__pyx_n_s_io; -static PyObject *__pyx_n_s_iwait_on_objects; -static PyObject *__pyx_n_s_join; -static PyObject *__pyx_n_s_lambda; -static PyObject *__pyx_n_s_main; -static PyObject *__pyx_n_s_next; -static PyObject *__pyx_n_s_next_2; -static PyObject *__pyx_n_s_objects; -static PyObject *__pyx_n_s_print_exc; -static PyObject *__pyx_n_s_priority; -static PyObject *__pyx_n_s_pyx_capi; -static PyObject *__pyx_n_s_pyx_vtable; -static PyObject *__pyx_n_s_rawlink; -static PyObject *__pyx_n_s_run_callback; -static PyObject *__pyx_n_s_self; -static PyObject *__pyx_n_s_self_2; -static PyObject *__pyx_n_s_set_default_timeout_error; -static PyObject *__pyx_n_s_socket; -static PyObject *__pyx_kp_s_src_gevent__hub_primitives_py; -static PyObject *__pyx_n_s_start; -static PyObject *__pyx_n_s_start_new_or_dummy; -static PyObject *__pyx_n_s_stop; -static PyObject *__pyx_n_s_switch; -static PyObject *__pyx_n_s_test; -static PyObject *__pyx_n_s_throw; -static PyObject *__pyx_kp_s_timed_out; -static PyObject *__pyx_n_s_timeout; -static PyObject *__pyx_n_s_timeout_error; -static PyObject *__pyx_n_s_timeout_exc; -static PyObject *__pyx_n_s_timer; -static PyObject *__pyx_n_s_traceback; -static PyObject *__pyx_n_s_unlink; -static PyObject *__pyx_n_s_wait; -static PyObject *__pyx_n_s_wait_on_objects; -static PyObject *__pyx_n_s_wait_on_socket; -static PyObject *__pyx_n_s_wait_on_watcher; -static PyObject *__pyx_n_s_wait_read; -static PyObject *__pyx_n_s_wait_readwrite; -static PyObject *__pyx_n_s_wait_write; -static PyObject *__pyx_n_s_waiter; -static PyObject *__pyx_n_s_watcher; -static PyObject *__pyx_lambda_funcdef_6gevent_16__hub_primitives_lambda(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ -static PyObject *__pyx_pf_6gevent_16__hub_primitives_22WaitOperationsGreenlet_wait(struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *__pyx_v_self, PyObject *__pyx_v_watcher); /* proto */ -static PyObject *__pyx_pf_6gevent_16__hub_primitives_22WaitOperationsGreenlet_2cancel_wait(struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *__pyx_v_self, PyObject *__pyx_v_watcher, PyObject *__pyx_v_error, PyObject *__pyx_v_close_watcher); /* proto */ -static PyObject *__pyx_pf_6gevent_16__hub_primitives_22WaitOperationsGreenlet_4_cancel_wait(struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *__pyx_v_self, PyObject *__pyx_v_watcher, PyObject *__pyx_v_error, PyObject *__pyx_v_close_watcher); /* proto */ -static int __pyx_pf_6gevent_16__hub_primitives_13_WaitIterator___init__(struct __pyx_obj_6gevent_16__hub_primitives__WaitIterator *__pyx_v_self, PyObject *__pyx_v_objects, PyObject *__pyx_v_hub, PyObject *__pyx_v_timeout, PyObject *__pyx_v_count); /* proto */ -static PyObject *__pyx_pf_6gevent_16__hub_primitives_13_WaitIterator_2__iter__(struct __pyx_obj_6gevent_16__hub_primitives__WaitIterator *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_16__hub_primitives_13_WaitIterator_4__next__(struct __pyx_obj_6gevent_16__hub_primitives__WaitIterator *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_16__hub_primitives_iwait_on_objects(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_objects, PyObject *__pyx_v_timeout, PyObject *__pyx_v_count); /* proto */ -static PyObject *__pyx_pf_6gevent_16__hub_primitives_2wait_on_objects(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_objects, PyObject *__pyx_v_timeout, PyObject *__pyx_v_count); /* proto */ -static PyObject *__pyx_pf_6gevent_16__hub_primitives_4set_default_timeout_error(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_e); /* proto */ -static PyObject *__pyx_pf_6gevent_16__hub_primitives_6wait_on_socket(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_socket, PyObject *__pyx_v_watcher, PyObject *__pyx_v_timeout_exc); /* proto */ -static PyObject *__pyx_pf_6gevent_16__hub_primitives_8wait_on_watcher(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_watcher, PyObject *__pyx_v_timeout, PyObject *__pyx_v_timeout_exc, struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *__pyx_v_hub); /* proto */ -static PyObject *__pyx_pf_6gevent_16__hub_primitives_10wait_read(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fileno, PyObject *__pyx_v_timeout, PyObject *__pyx_v_timeout_exc); /* proto */ -static PyObject *__pyx_pf_6gevent_16__hub_primitives_12wait_write(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fileno, PyObject *__pyx_v_timeout, PyObject *__pyx_v_timeout_exc, PyObject *__pyx_v_event); /* proto */ -static PyObject *__pyx_pf_6gevent_16__hub_primitives_14wait_readwrite(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fileno, PyObject *__pyx_v_timeout, PyObject *__pyx_v_timeout_exc, PyObject *__pyx_v_event); /* proto */ -static PyObject *__pyx_pf_6gevent_16__hub_primitives_16_init(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ -static PyObject *__pyx_tp_new_6gevent_16__hub_primitives_WaitOperationsGreenlet(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_16__hub_primitives__WaitIterator(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_int_1; -static PyObject *__pyx_int_2; -static PyObject *__pyx_int_3; -static PyObject *__pyx_int_neg_1; -static PyObject *__pyx_k__3; -static PyObject *__pyx_k__4; -static PyObject *__pyx_k__5; -static PyObject *__pyx_k__6; -static PyObject *__pyx_k__7; -static PyObject *__pyx_k__8; -static PyObject *__pyx_tuple_; -static PyObject *__pyx_tuple__2; -static PyObject *__pyx_tuple__9; -static PyObject *__pyx_tuple__10; -static PyObject *__pyx_tuple__12; -static PyObject *__pyx_tuple__14; -static PyObject *__pyx_tuple__16; -static PyObject *__pyx_tuple__18; -static PyObject *__pyx_tuple__20; -static PyObject *__pyx_tuple__22; -static PyObject *__pyx_tuple__24; -static PyObject *__pyx_tuple__26; -static PyObject *__pyx_tuple__28; -static PyObject *__pyx_tuple__30; -static PyObject *__pyx_codeobj__11; -static PyObject *__pyx_codeobj__13; -static PyObject *__pyx_codeobj__15; -static PyObject *__pyx_codeobj__17; -static PyObject *__pyx_codeobj__19; -static PyObject *__pyx_codeobj__21; -static PyObject *__pyx_codeobj__23; -static PyObject *__pyx_codeobj__25; -static PyObject *__pyx_codeobj__27; -static PyObject *__pyx_codeobj__29; -static PyObject *__pyx_codeobj__31; -static PyObject *__pyx_codeobj__32; -/* Late includes */ - -/* "src/gevent/_hub_primitives.py":30 - * # error. - * locals()['getcurrent'] = __import__('greenlet').getcurrent - * locals()['greenlet_init'] = lambda: None # <<<<<<<<<<<<<< - * locals()['Waiter'] = _waiter.Waiter - * locals()['MultipleWaiter'] = _waiter.MultipleWaiter - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_16__hub_primitives_18lambda(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyMethodDef __pyx_mdef_6gevent_16__hub_primitives_18lambda = {"lambda", (PyCFunction)__pyx_pw_6gevent_16__hub_primitives_18lambda, METH_NOARGS, 0}; -static PyObject *__pyx_pw_6gevent_16__hub_primitives_18lambda(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("lambda (wrapper)", 0); - __pyx_r = __pyx_lambda_funcdef_6gevent_16__hub_primitives_lambda(__pyx_self); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_lambda_funcdef_6gevent_16__hub_primitives_lambda(CYTHON_UNUSED PyObject *__pyx_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("lambda", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_hub_primitives.py":46 - * class WaitOperationsGreenlet(SwitchOutGreenletWithLoop): # pylint:disable=undefined-variable - * - * def wait(self, watcher): # <<<<<<<<<<<<<< - * """ - * Wait until the *watcher* (which must not be started) is ready. - */ - -static PyObject *__pyx_pw_6gevent_16__hub_primitives_22WaitOperationsGreenlet_1wait(PyObject *__pyx_v_self, PyObject *__pyx_v_watcher); /*proto*/ -static PyObject *__pyx_f_6gevent_16__hub_primitives_22WaitOperationsGreenlet_wait(struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *__pyx_v_self, PyObject *__pyx_v_watcher, int __pyx_skip_dispatch) { - struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_waiter = NULL; - PyObject *__pyx_v_result = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - int __pyx_t_7; - int __pyx_t_8; - int __pyx_t_9; - char const *__pyx_t_10; - PyObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; - PyObject *__pyx_t_13 = NULL; - PyObject *__pyx_t_14 = NULL; - PyObject *__pyx_t_15 = NULL; - PyObject *__pyx_t_16 = NULL; - __Pyx_RefNannySetupContext("wait", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_wait); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 46, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_16__hub_primitives_22WaitOperationsGreenlet_1wait)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (!__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_watcher); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 46, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_watcher}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 46, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_watcher}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 46, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 46, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_INCREF(__pyx_v_watcher); - __Pyx_GIVEREF(__pyx_v_watcher); - PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_watcher); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 46, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/_hub_primitives.py":52 - * The current greenlet will be unscheduled during this time. - * """ - * waiter = Waiter(self) # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * watcher.start(waiter.switch, waiter) - * try: - */ - __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_6gevent_8__waiter_Waiter), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 52, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_waiter = ((struct __pyx_obj_6gevent_8__waiter_Waiter *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":53 - * """ - * waiter = Waiter(self) # pylint:disable=undefined-variable - * watcher.start(waiter.switch, waiter) # <<<<<<<<<<<<<< - * try: - * result = waiter.get() - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_watcher, __pyx_n_s_start); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 53, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_waiter), __pyx_n_s_switch); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 53, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = NULL; - __pyx_t_6 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_6 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, ((PyObject *)__pyx_v_waiter)}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 53, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, ((PyObject *)__pyx_v_waiter)}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 53, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - { - __pyx_t_4 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 53, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - if (__pyx_t_5) { - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL; - } - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_6, __pyx_t_3); - __Pyx_INCREF(((PyObject *)__pyx_v_waiter)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_waiter)); - PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, ((PyObject *)__pyx_v_waiter)); - __pyx_t_3 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 53, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":54 - * waiter = Waiter(self) # pylint:disable=undefined-variable - * watcher.start(waiter.switch, waiter) - * try: # <<<<<<<<<<<<<< - * result = waiter.get() - * if result is not waiter: - */ - /*try:*/ { - - /* "src/gevent/_hub_primitives.py":55 - * watcher.start(waiter.switch, waiter) - * try: - * result = waiter.get() # <<<<<<<<<<<<<< - * if result is not waiter: - * raise InvalidSwitchError('Invalid switch into %s: %r (expected %r)' % ( - */ - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_8__waiter_Waiter *)__pyx_v_waiter->__pyx_vtab)->get(__pyx_v_waiter, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 55, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_result = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":56 - * try: - * result = waiter.get() - * if result is not waiter: # <<<<<<<<<<<<<< - * raise InvalidSwitchError('Invalid switch into %s: %r (expected %r)' % ( - * getcurrent(), # pylint:disable=undefined-variable - */ - __pyx_t_7 = (__pyx_v_result != ((PyObject *)__pyx_v_waiter)); - __pyx_t_8 = (__pyx_t_7 != 0); - if (unlikely(__pyx_t_8)) { - - /* "src/gevent/_hub_primitives.py":58 - * if result is not waiter: - * raise InvalidSwitchError('Invalid switch into %s: %r (expected %r)' % ( - * getcurrent(), # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * result, waiter)) - * finally: - */ - __pyx_t_2 = ((PyObject *)__pyx_f_6gevent_16__hub_primitives_getcurrent()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 58, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_2); - - /* "src/gevent/_hub_primitives.py":59 - * raise InvalidSwitchError('Invalid switch into %s: %r (expected %r)' % ( - * getcurrent(), # pylint:disable=undefined-variable - * result, waiter)) # <<<<<<<<<<<<<< - * finally: - * watcher.stop() - */ - __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 58, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_v_result); - __Pyx_GIVEREF(__pyx_v_result); - PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_result); - __Pyx_INCREF(((PyObject *)__pyx_v_waiter)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_waiter)); - PyTuple_SET_ITEM(__pyx_t_4, 2, ((PyObject *)__pyx_v_waiter)); - __pyx_t_2 = 0; - - /* "src/gevent/_hub_primitives.py":57 - * result = waiter.get() - * if result is not waiter: - * raise InvalidSwitchError('Invalid switch into %s: %r (expected %r)' % ( # <<<<<<<<<<<<<< - * getcurrent(), # pylint:disable=undefined-variable - * result, waiter)) - */ - __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_switch_into_s_r_expected, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 57, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_INCREF(__pyx_v_6gevent_16__hub_primitives_InvalidSwitchError); - __pyx_t_4 = __pyx_v_6gevent_16__hub_primitives_InvalidSwitchError; __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L4_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_2}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L4_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_2}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L4_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else - #endif - { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 57, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 57, __pyx_L4_error) - - /* "src/gevent/_hub_primitives.py":56 - * try: - * result = waiter.get() - * if result is not waiter: # <<<<<<<<<<<<<< - * raise InvalidSwitchError('Invalid switch into %s: %r (expected %r)' % ( - * getcurrent(), # pylint:disable=undefined-variable - */ - } - } - - /* "src/gevent/_hub_primitives.py":61 - * result, waiter)) - * finally: - * watcher.stop() # <<<<<<<<<<<<<< - * - * def cancel_wait(self, watcher, error, close_watcher=False): - */ - /*finally:*/ { - /*normal exit:*/{ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_watcher, __pyx_n_s_stop); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 61, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (__pyx_t_5) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 61, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 61, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L5; - } - __pyx_L4_error:; - /*exception exit:*/{ - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16); - if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13) < 0)) __Pyx_ErrFetch(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13); - __Pyx_XGOTREF(__pyx_t_11); - __Pyx_XGOTREF(__pyx_t_12); - __Pyx_XGOTREF(__pyx_t_13); - __Pyx_XGOTREF(__pyx_t_14); - __Pyx_XGOTREF(__pyx_t_15); - __Pyx_XGOTREF(__pyx_t_16); - __pyx_t_6 = __pyx_lineno; __pyx_t_9 = __pyx_clineno; __pyx_t_10 = __pyx_filename; - { - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_watcher, __pyx_n_s_stop); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 61, __pyx_L8_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (__pyx_t_5) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 61, __pyx_L8_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 61, __pyx_L8_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_14); - __Pyx_XGIVEREF(__pyx_t_15); - __Pyx_XGIVEREF(__pyx_t_16); - __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16); - } - __Pyx_XGIVEREF(__pyx_t_11); - __Pyx_XGIVEREF(__pyx_t_12); - __Pyx_XGIVEREF(__pyx_t_13); - __Pyx_ErrRestore(__pyx_t_11, __pyx_t_12, __pyx_t_13); - __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; - __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_9; __pyx_filename = __pyx_t_10; - goto __pyx_L1_error; - __pyx_L8_error:; - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_14); - __Pyx_XGIVEREF(__pyx_t_15); - __Pyx_XGIVEREF(__pyx_t_16); - __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16); - } - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; - __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; - goto __pyx_L1_error; - } - __pyx_L5:; - } - - /* "src/gevent/_hub_primitives.py":46 - * class WaitOperationsGreenlet(SwitchOutGreenletWithLoop): # pylint:disable=undefined-variable - * - * def wait(self, watcher): # <<<<<<<<<<<<<< - * """ - * Wait until the *watcher* (which must not be started) is ready. - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent.__hub_primitives.WaitOperationsGreenlet.wait", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_waiter); - __Pyx_XDECREF(__pyx_v_result); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_16__hub_primitives_22WaitOperationsGreenlet_1wait(PyObject *__pyx_v_self, PyObject *__pyx_v_watcher); /*proto*/ -static char __pyx_doc_6gevent_16__hub_primitives_22WaitOperationsGreenlet_wait[] = "WaitOperationsGreenlet.wait(self, watcher)\n\n Wait until the *watcher* (which must not be started) is ready.\n\n The current greenlet will be unscheduled during this time.\n "; -static PyMethodDef __pyx_mdef_6gevent_16__hub_primitives_22WaitOperationsGreenlet_1wait = {"wait", (PyCFunction)__pyx_pw_6gevent_16__hub_primitives_22WaitOperationsGreenlet_1wait, METH_O, __pyx_doc_6gevent_16__hub_primitives_22WaitOperationsGreenlet_wait}; -static PyObject *__pyx_pw_6gevent_16__hub_primitives_22WaitOperationsGreenlet_1wait(PyObject *__pyx_v_self, PyObject *__pyx_v_watcher) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("wait (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_16__hub_primitives_22WaitOperationsGreenlet_wait(((struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *)__pyx_v_self), ((PyObject *)__pyx_v_watcher)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_16__hub_primitives_22WaitOperationsGreenlet_wait(struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *__pyx_v_self, PyObject *__pyx_v_watcher) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("wait", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_16__hub_primitives_22WaitOperationsGreenlet_wait(__pyx_v_self, __pyx_v_watcher, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 46, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__hub_primitives.WaitOperationsGreenlet.wait", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_hub_primitives.py":63 - * watcher.stop() - * - * def cancel_wait(self, watcher, error, close_watcher=False): # <<<<<<<<<<<<<< - * """ - * Cancel an in-progress call to :meth:`wait` by throwing the given *error* - */ - -static PyObject *__pyx_pw_6gevent_16__hub_primitives_22WaitOperationsGreenlet_3cancel_wait(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_f_6gevent_16__hub_primitives_22WaitOperationsGreenlet_cancel_wait(struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *__pyx_v_self, PyObject *__pyx_v_watcher, PyObject *__pyx_v_error, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_16__hub_primitives_22WaitOperationsGreenlet_cancel_wait *__pyx_optional_args) { - PyObject *__pyx_v_close_watcher = ((PyObject *)Py_False); - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - int __pyx_t_7; - int __pyx_t_8; - __Pyx_RefNannySetupContext("cancel_wait", 0); - if (__pyx_optional_args) { - if (__pyx_optional_args->__pyx_n > 0) { - __pyx_v_close_watcher = __pyx_optional_args->close_watcher; - } - } - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_cancel_wait); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 63, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_16__hub_primitives_22WaitOperationsGreenlet_3cancel_wait)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - __pyx_t_5 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_5 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_watcher, __pyx_v_error, __pyx_v_close_watcher}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 63, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_watcher, __pyx_v_error, __pyx_v_close_watcher}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 63, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_6 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 63, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (__pyx_t_4) { - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; - } - __Pyx_INCREF(__pyx_v_watcher); - __Pyx_GIVEREF(__pyx_v_watcher); - PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_watcher); - __Pyx_INCREF(__pyx_v_error); - __Pyx_GIVEREF(__pyx_v_error); - PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_error); - __Pyx_INCREF(__pyx_v_close_watcher); - __Pyx_GIVEREF(__pyx_v_close_watcher); - PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_v_close_watcher); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 63, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/_hub_primitives.py":75 - * Allow the *watcher* to be ``None``. No action is taken in that case. - * """ - * if watcher is None: # <<<<<<<<<<<<<< - * # Presumably already closed. - * # See https://github.com/gevent/gevent/issues/1089 - */ - __pyx_t_7 = (__pyx_v_watcher == Py_None); - __pyx_t_8 = (__pyx_t_7 != 0); - if (__pyx_t_8) { - - /* "src/gevent/_hub_primitives.py":78 - * # Presumably already closed. - * # See https://github.com/gevent/gevent/issues/1089 - * return # <<<<<<<<<<<<<< - * if watcher.callback is not None: - * self.loop.run_callback(self._cancel_wait, watcher, error, close_watcher) - */ - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - /* "src/gevent/_hub_primitives.py":75 - * Allow the *watcher* to be ``None``. No action is taken in that case. - * """ - * if watcher is None: # <<<<<<<<<<<<<< - * # Presumably already closed. - * # See https://github.com/gevent/gevent/issues/1089 - */ - } - - /* "src/gevent/_hub_primitives.py":79 - * # See https://github.com/gevent/gevent/issues/1089 - * return - * if watcher.callback is not None: # <<<<<<<<<<<<<< - * self.loop.run_callback(self._cancel_wait, watcher, error, close_watcher) - * elif close_watcher: - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_watcher, __pyx_n_s_callback); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 79, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_8 = (__pyx_t_1 != Py_None); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_7 = (__pyx_t_8 != 0); - if (__pyx_t_7) { - - /* "src/gevent/_hub_primitives.py":80 - * return - * if watcher.callback is not None: - * self.loop.run_callback(self._cancel_wait, watcher, error, close_watcher) # <<<<<<<<<<<<<< - * elif close_watcher: - * watcher.close() - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->__pyx_base.loop, __pyx_n_s_run_callback); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 80, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_cancel_wait_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 80, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = NULL; - __pyx_t_5 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_5 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[5] = {__pyx_t_6, __pyx_t_3, __pyx_v_watcher, __pyx_v_error, __pyx_v_close_watcher}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 80, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[5] = {__pyx_t_6, __pyx_t_3, __pyx_v_watcher, __pyx_v_error, __pyx_v_close_watcher}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 80, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - { - __pyx_t_4 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 80, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - if (__pyx_t_6) { - __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL; - } - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_5, __pyx_t_3); - __Pyx_INCREF(__pyx_v_watcher); - __Pyx_GIVEREF(__pyx_v_watcher); - PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_5, __pyx_v_watcher); - __Pyx_INCREF(__pyx_v_error); - __Pyx_GIVEREF(__pyx_v_error); - PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_5, __pyx_v_error); - __Pyx_INCREF(__pyx_v_close_watcher); - __Pyx_GIVEREF(__pyx_v_close_watcher); - PyTuple_SET_ITEM(__pyx_t_4, 3+__pyx_t_5, __pyx_v_close_watcher); - __pyx_t_3 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 80, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":79 - * # See https://github.com/gevent/gevent/issues/1089 - * return - * if watcher.callback is not None: # <<<<<<<<<<<<<< - * self.loop.run_callback(self._cancel_wait, watcher, error, close_watcher) - * elif close_watcher: - */ - goto __pyx_L4; - } - - /* "src/gevent/_hub_primitives.py":81 - * if watcher.callback is not None: - * self.loop.run_callback(self._cancel_wait, watcher, error, close_watcher) - * elif close_watcher: # <<<<<<<<<<<<<< - * watcher.close() - * - */ - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_close_watcher); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 81, __pyx_L1_error) - if (__pyx_t_7) { - - /* "src/gevent/_hub_primitives.py":82 - * self.loop.run_callback(self._cancel_wait, watcher, error, close_watcher) - * elif close_watcher: - * watcher.close() # <<<<<<<<<<<<<< - * - * def _cancel_wait(self, watcher, error, close_watcher): - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_watcher, __pyx_n_s_close); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 82, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_4) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 82, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 82, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":81 - * if watcher.callback is not None: - * self.loop.run_callback(self._cancel_wait, watcher, error, close_watcher) - * elif close_watcher: # <<<<<<<<<<<<<< - * watcher.close() - * - */ - } - __pyx_L4:; - - /* "src/gevent/_hub_primitives.py":63 - * watcher.stop() - * - * def cancel_wait(self, watcher, error, close_watcher=False): # <<<<<<<<<<<<<< - * """ - * Cancel an in-progress call to :meth:`wait` by throwing the given *error* - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_AddTraceback("gevent.__hub_primitives.WaitOperationsGreenlet.cancel_wait", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_16__hub_primitives_22WaitOperationsGreenlet_3cancel_wait(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_16__hub_primitives_22WaitOperationsGreenlet_2cancel_wait[] = "WaitOperationsGreenlet.cancel_wait(self, watcher, error, close_watcher=False)\n\n Cancel an in-progress call to :meth:`wait` by throwing the given *error*\n in the waiting greenlet.\n\n .. versionchanged:: 1.3a1\n Added the *close_watcher* parameter. If true, the watcher\n will be closed after the exception is thrown. The watcher should then\n be discarded. Closing the watcher is important to release native resources.\n .. versionchanged:: 1.3a2\n Allow the *watcher* to be ``None``. No action is taken in that case.\n "; -static PyMethodDef __pyx_mdef_6gevent_16__hub_primitives_22WaitOperationsGreenlet_3cancel_wait = {"cancel_wait", (PyCFunction)__pyx_pw_6gevent_16__hub_primitives_22WaitOperationsGreenlet_3cancel_wait, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_16__hub_primitives_22WaitOperationsGreenlet_2cancel_wait}; -static PyObject *__pyx_pw_6gevent_16__hub_primitives_22WaitOperationsGreenlet_3cancel_wait(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_watcher = 0; - PyObject *__pyx_v_error = 0; - PyObject *__pyx_v_close_watcher = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("cancel_wait (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_watcher,&__pyx_n_s_error,&__pyx_n_s_close_watcher,0}; - PyObject* values[3] = {0,0,0}; - values[2] = ((PyObject *)Py_False); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_watcher)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_error)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("cancel_wait", 0, 2, 3, 1); __PYX_ERR(0, 63, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_close_watcher); - if (value) { values[2] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cancel_wait") < 0)) __PYX_ERR(0, 63, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_watcher = values[0]; - __pyx_v_error = values[1]; - __pyx_v_close_watcher = values[2]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("cancel_wait", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 63, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.__hub_primitives.WaitOperationsGreenlet.cancel_wait", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_16__hub_primitives_22WaitOperationsGreenlet_2cancel_wait(((struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *)__pyx_v_self), __pyx_v_watcher, __pyx_v_error, __pyx_v_close_watcher); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_16__hub_primitives_22WaitOperationsGreenlet_2cancel_wait(struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *__pyx_v_self, PyObject *__pyx_v_watcher, PyObject *__pyx_v_error, PyObject *__pyx_v_close_watcher) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - struct __pyx_opt_args_6gevent_16__hub_primitives_22WaitOperationsGreenlet_cancel_wait __pyx_t_2; - __Pyx_RefNannySetupContext("cancel_wait", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_2.__pyx_n = 1; - __pyx_t_2.close_watcher = __pyx_v_close_watcher; - __pyx_t_1 = __pyx_vtabptr_6gevent_16__hub_primitives_WaitOperationsGreenlet->cancel_wait(__pyx_v_self, __pyx_v_watcher, __pyx_v_error, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 63, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__hub_primitives.WaitOperationsGreenlet.cancel_wait", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_hub_primitives.py":84 - * watcher.close() - * - * def _cancel_wait(self, watcher, error, close_watcher): # <<<<<<<<<<<<<< - * # We have to check again to see if it was still active by the time - * # our callback actually runs. - */ - -static PyObject *__pyx_pw_6gevent_16__hub_primitives_22WaitOperationsGreenlet_5_cancel_wait(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_f_6gevent_16__hub_primitives_22WaitOperationsGreenlet__cancel_wait(CYTHON_UNUSED struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *__pyx_v_self, PyObject *__pyx_v_watcher, PyObject *__pyx_v_error, PyObject *__pyx_v_close_watcher, int __pyx_skip_dispatch) { - PyObject *__pyx_v_active = NULL; - PyObject *__pyx_v_cb = NULL; - PyObject *__pyx_v_glet = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - int __pyx_t_7; - int __pyx_t_8; - __Pyx_RefNannySetupContext("_cancel_wait", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_cancel_wait_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 84, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_16__hub_primitives_22WaitOperationsGreenlet_5_cancel_wait)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - __pyx_t_5 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_5 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_watcher, __pyx_v_error, __pyx_v_close_watcher}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 84, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_watcher, __pyx_v_error, __pyx_v_close_watcher}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 84, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_6 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 84, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (__pyx_t_4) { - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; - } - __Pyx_INCREF(__pyx_v_watcher); - __Pyx_GIVEREF(__pyx_v_watcher); - PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_watcher); - __Pyx_INCREF(__pyx_v_error); - __Pyx_GIVEREF(__pyx_v_error); - PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_error); - __Pyx_INCREF(__pyx_v_close_watcher); - __Pyx_GIVEREF(__pyx_v_close_watcher); - PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_v_close_watcher); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 84, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/_hub_primitives.py":87 - * # We have to check again to see if it was still active by the time - * # our callback actually runs. - * active = watcher.active # <<<<<<<<<<<<<< - * cb = watcher.callback - * if close_watcher: - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_watcher, __pyx_n_s_active); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 87, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_active = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":88 - * # our callback actually runs. - * active = watcher.active - * cb = watcher.callback # <<<<<<<<<<<<<< - * if close_watcher: - * watcher.close() - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_watcher, __pyx_n_s_callback); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 88, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_cb = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":89 - * active = watcher.active - * cb = watcher.callback - * if close_watcher: # <<<<<<<<<<<<<< - * watcher.close() - * if active: - */ - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_close_watcher); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 89, __pyx_L1_error) - if (__pyx_t_7) { - - /* "src/gevent/_hub_primitives.py":90 - * cb = watcher.callback - * if close_watcher: - * watcher.close() # <<<<<<<<<<<<<< - * if active: - * # The callback should be greenlet.switch(). It may or may not be None. - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_watcher, __pyx_n_s_close); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 90, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 90, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 90, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":89 - * active = watcher.active - * cb = watcher.callback - * if close_watcher: # <<<<<<<<<<<<<< - * watcher.close() - * if active: - */ - } - - /* "src/gevent/_hub_primitives.py":91 - * if close_watcher: - * watcher.close() - * if active: # <<<<<<<<<<<<<< - * # The callback should be greenlet.switch(). It may or may not be None. - * glet = getattr(cb, '__self__', None) - */ - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_active); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 91, __pyx_L1_error) - if (__pyx_t_7) { - - /* "src/gevent/_hub_primitives.py":93 - * if active: - * # The callback should be greenlet.switch(). It may or may not be None. - * glet = getattr(cb, '__self__', None) # <<<<<<<<<<<<<< - * if glet is not None: - * glet.throw(error) - */ - __pyx_t_1 = __Pyx_GetAttr3(__pyx_v_cb, __pyx_n_s_self, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 93, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_glet = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":94 - * # The callback should be greenlet.switch(). It may or may not be None. - * glet = getattr(cb, '__self__', None) - * if glet is not None: # <<<<<<<<<<<<<< - * glet.throw(error) - * - */ - __pyx_t_7 = (__pyx_v_glet != Py_None); - __pyx_t_8 = (__pyx_t_7 != 0); - if (__pyx_t_8) { - - /* "src/gevent/_hub_primitives.py":95 - * glet = getattr(cb, '__self__', None) - * if glet is not None: - * glet.throw(error) # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_glet, __pyx_n_s_throw); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 95, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_error); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 95, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_error}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 95, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_error}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 95, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 95, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(__pyx_v_error); - __Pyx_GIVEREF(__pyx_v_error); - PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_error); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 95, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":94 - * # The callback should be greenlet.switch(). It may or may not be None. - * glet = getattr(cb, '__self__', None) - * if glet is not None: # <<<<<<<<<<<<<< - * glet.throw(error) - * - */ - } - - /* "src/gevent/_hub_primitives.py":91 - * if close_watcher: - * watcher.close() - * if active: # <<<<<<<<<<<<<< - * # The callback should be greenlet.switch(). It may or may not be None. - * glet = getattr(cb, '__self__', None) - */ - } - - /* "src/gevent/_hub_primitives.py":84 - * watcher.close() - * - * def _cancel_wait(self, watcher, error, close_watcher): # <<<<<<<<<<<<<< - * # We have to check again to see if it was still active by the time - * # our callback actually runs. - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_AddTraceback("gevent.__hub_primitives.WaitOperationsGreenlet._cancel_wait", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_active); - __Pyx_XDECREF(__pyx_v_cb); - __Pyx_XDECREF(__pyx_v_glet); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_16__hub_primitives_22WaitOperationsGreenlet_5_cancel_wait(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_16__hub_primitives_22WaitOperationsGreenlet_4_cancel_wait[] = "WaitOperationsGreenlet._cancel_wait(self, watcher, error, close_watcher)"; -static PyMethodDef __pyx_mdef_6gevent_16__hub_primitives_22WaitOperationsGreenlet_5_cancel_wait = {"_cancel_wait", (PyCFunction)__pyx_pw_6gevent_16__hub_primitives_22WaitOperationsGreenlet_5_cancel_wait, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_16__hub_primitives_22WaitOperationsGreenlet_4_cancel_wait}; -static PyObject *__pyx_pw_6gevent_16__hub_primitives_22WaitOperationsGreenlet_5_cancel_wait(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_watcher = 0; - PyObject *__pyx_v_error = 0; - PyObject *__pyx_v_close_watcher = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_cancel_wait (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_watcher,&__pyx_n_s_error,&__pyx_n_s_close_watcher,0}; - PyObject* values[3] = {0,0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_watcher)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_error)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("_cancel_wait", 1, 3, 3, 1); __PYX_ERR(0, 84, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_close_watcher)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("_cancel_wait", 1, 3, 3, 2); __PYX_ERR(0, 84, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_cancel_wait") < 0)) __PYX_ERR(0, 84, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - } - __pyx_v_watcher = values[0]; - __pyx_v_error = values[1]; - __pyx_v_close_watcher = values[2]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("_cancel_wait", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 84, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.__hub_primitives.WaitOperationsGreenlet._cancel_wait", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_16__hub_primitives_22WaitOperationsGreenlet_4_cancel_wait(((struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *)__pyx_v_self), __pyx_v_watcher, __pyx_v_error, __pyx_v_close_watcher); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_16__hub_primitives_22WaitOperationsGreenlet_4_cancel_wait(struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *__pyx_v_self, PyObject *__pyx_v_watcher, PyObject *__pyx_v_error, PyObject *__pyx_v_close_watcher) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_cancel_wait", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_16__hub_primitives_22WaitOperationsGreenlet__cancel_wait(__pyx_v_self, __pyx_v_watcher, __pyx_v_error, __pyx_v_close_watcher, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 84, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__hub_primitives.WaitOperationsGreenlet._cancel_wait", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_hub_primitives.py":100 - * class _WaitIterator(object): - * - * def __init__(self, objects, hub, timeout, count): # <<<<<<<<<<<<<< - * self._hub = hub - * self._waiter = MultipleWaiter(hub) # pylint:disable=undefined-variable - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_16__hub_primitives_13_WaitIterator_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_16__hub_primitives_13_WaitIterator_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_objects = 0; - PyObject *__pyx_v_hub = 0; - PyObject *__pyx_v_timeout = 0; - PyObject *__pyx_v_count = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_objects,&__pyx_n_s_hub,&__pyx_n_s_timeout,&__pyx_n_s_count,0}; - PyObject* values[4] = {0,0,0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_objects)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_hub)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 1); __PYX_ERR(0, 100, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeout)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 2); __PYX_ERR(0, 100, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 3: - if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_count)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 3); __PYX_ERR(0, 100, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 100, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 4) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - } - __pyx_v_objects = values[0]; - __pyx_v_hub = values[1]; - __pyx_v_timeout = values[2]; - __pyx_v_count = values[3]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 100, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.__hub_primitives._WaitIterator.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_16__hub_primitives_13_WaitIterator___init__(((struct __pyx_obj_6gevent_16__hub_primitives__WaitIterator *)__pyx_v_self), __pyx_v_objects, __pyx_v_hub, __pyx_v_timeout, __pyx_v_count); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_16__hub_primitives_13_WaitIterator___init__(struct __pyx_obj_6gevent_16__hub_primitives__WaitIterator *__pyx_v_self, PyObject *__pyx_v_objects, PyObject *__pyx_v_hub, PyObject *__pyx_v_timeout, PyObject *__pyx_v_count) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - Py_ssize_t __pyx_t_2; - int __pyx_t_3; - Py_ssize_t __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - int __pyx_t_8; - __Pyx_RefNannySetupContext("__init__", 0); - - /* "src/gevent/_hub_primitives.py":101 - * - * def __init__(self, objects, hub, timeout, count): - * self._hub = hub # <<<<<<<<<<<<<< - * self._waiter = MultipleWaiter(hub) # pylint:disable=undefined-variable - * self._switch = self._waiter.switch - */ - if (!(likely(((__pyx_v_hub) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_hub, __pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop))))) __PYX_ERR(0, 101, __pyx_L1_error) - __pyx_t_1 = __pyx_v_hub; - __Pyx_INCREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->_hub); - __Pyx_DECREF(((PyObject *)__pyx_v_self->_hub)); - __pyx_v_self->_hub = ((struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":102 - * def __init__(self, objects, hub, timeout, count): - * self._hub = hub - * self._waiter = MultipleWaiter(hub) # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * self._switch = self._waiter.switch - * self._timeout = timeout - */ - __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_6gevent_8__waiter_MultipleWaiter), __pyx_v_hub); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 102, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->_waiter); - __Pyx_DECREF(((PyObject *)__pyx_v_self->_waiter)); - __pyx_v_self->_waiter = ((struct __pyx_obj_6gevent_8__waiter_MultipleWaiter *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":103 - * self._hub = hub - * self._waiter = MultipleWaiter(hub) # pylint:disable=undefined-variable - * self._switch = self._waiter.switch # <<<<<<<<<<<<<< - * self._timeout = timeout - * self._objects = objects - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_waiter), __pyx_n_s_switch); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 103, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->_switch); - __Pyx_DECREF(__pyx_v_self->_switch); - __pyx_v_self->_switch = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":104 - * self._waiter = MultipleWaiter(hub) # pylint:disable=undefined-variable - * self._switch = self._waiter.switch - * self._timeout = timeout # <<<<<<<<<<<<<< - * self._objects = objects - * - */ - __Pyx_INCREF(__pyx_v_timeout); - __Pyx_GIVEREF(__pyx_v_timeout); - __Pyx_GOTREF(__pyx_v_self->_timeout); - __Pyx_DECREF(__pyx_v_self->_timeout); - __pyx_v_self->_timeout = __pyx_v_timeout; - - /* "src/gevent/_hub_primitives.py":105 - * self._switch = self._waiter.switch - * self._timeout = timeout - * self._objects = objects # <<<<<<<<<<<<<< - * - * self._timer = None - */ - __Pyx_INCREF(__pyx_v_objects); - __Pyx_GIVEREF(__pyx_v_objects); - __Pyx_GOTREF(__pyx_v_self->_objects); - __Pyx_DECREF(__pyx_v_self->_objects); - __pyx_v_self->_objects = __pyx_v_objects; - - /* "src/gevent/_hub_primitives.py":107 - * self._objects = objects - * - * self._timer = None # <<<<<<<<<<<<<< - * self._begun = False - * - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->_timer); - __Pyx_DECREF(__pyx_v_self->_timer); - __pyx_v_self->_timer = Py_None; - - /* "src/gevent/_hub_primitives.py":108 - * - * self._timer = None - * self._begun = False # <<<<<<<<<<<<<< - * - * - */ - __pyx_v_self->_begun = 0; - - /* "src/gevent/_hub_primitives.py":114 - * # we must still rawlink() *all* of them, so that no - * # matter which one finishes first we find it. - * self._count = len(objects) if count is None else min(count, len(objects)) # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_3 = (__pyx_v_count == Py_None); - if ((__pyx_t_3 != 0)) { - __pyx_t_4 = PyObject_Length(__pyx_v_objects); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 114, __pyx_L1_error) - __pyx_t_2 = __pyx_t_4; - } else { - __pyx_t_4 = PyObject_Length(__pyx_v_objects); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 114, __pyx_L1_error) - __Pyx_INCREF(__pyx_v_count); - __pyx_t_1 = __pyx_v_count; - __pyx_t_6 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 114, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = PyObject_RichCompare(__pyx_t_6, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 114, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 114, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (__pyx_t_8) { - __pyx_t_7 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 114, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_5 = __pyx_t_7; - __pyx_t_7 = 0; - } else { - __Pyx_INCREF(__pyx_t_1); - __pyx_t_5 = __pyx_t_1; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_4 = __Pyx_PyIndex_AsSsize_t(__pyx_t_5); if (unlikely((__pyx_t_4 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 114, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_2 = __pyx_t_4; - } - __pyx_v_self->_count = __pyx_t_2; - - /* "src/gevent/_hub_primitives.py":100 - * class _WaitIterator(object): - * - * def __init__(self, objects, hub, timeout, count): # <<<<<<<<<<<<<< - * self._hub = hub - * self._waiter = MultipleWaiter(hub) # pylint:disable=undefined-variable - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("gevent.__hub_primitives._WaitIterator.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_hub_primitives.py":117 - * - * - * def __iter__(self): # <<<<<<<<<<<<<< - * # When we begin iterating, we begin the timer. - * # XXX: If iteration doesn't actually happen, we - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_16__hub_primitives_13_WaitIterator_3__iter__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_16__hub_primitives_13_WaitIterator_3__iter__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_16__hub_primitives_13_WaitIterator_2__iter__(((struct __pyx_obj_6gevent_16__hub_primitives__WaitIterator *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_16__hub_primitives_13_WaitIterator_2__iter__(struct __pyx_obj_6gevent_16__hub_primitives__WaitIterator *__pyx_v_self) { - PyObject *__pyx_v_obj = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - Py_ssize_t __pyx_t_3; - PyObject *(*__pyx_t_4)(PyObject *); - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - int __pyx_t_9; - int __pyx_t_10; - __Pyx_RefNannySetupContext("__iter__", 0); - - /* "src/gevent/_hub_primitives.py":121 - * # XXX: If iteration doesn't actually happen, we - * # could leave these links around! - * if not self._begun: # <<<<<<<<<<<<<< - * self._begun = True - * - */ - __pyx_t_1 = ((!(__pyx_v_self->_begun != 0)) != 0); - if (__pyx_t_1) { - - /* "src/gevent/_hub_primitives.py":122 - * # could leave these links around! - * if not self._begun: - * self._begun = True # <<<<<<<<<<<<<< - * - * for obj in self._objects: - */ - __pyx_v_self->_begun = 1; - - /* "src/gevent/_hub_primitives.py":124 - * self._begun = True - * - * for obj in self._objects: # <<<<<<<<<<<<<< - * obj.rawlink(self._switch) - * - */ - if (likely(PyList_CheckExact(__pyx_v_self->_objects)) || PyTuple_CheckExact(__pyx_v_self->_objects)) { - __pyx_t_2 = __pyx_v_self->_objects; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; - __pyx_t_4 = NULL; - } else { - __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_self->_objects); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 124, __pyx_L1_error) - } - for (;;) { - if (likely(!__pyx_t_4)) { - if (likely(PyList_CheckExact(__pyx_t_2))) { - if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 124, __pyx_L1_error) - #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 124, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - #endif - } else { - if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 124, __pyx_L1_error) - #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 124, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - #endif - } - } else { - __pyx_t_5 = __pyx_t_4(__pyx_t_2); - if (unlikely(!__pyx_t_5)) { - PyObject* exc_type = PyErr_Occurred(); - if (exc_type) { - if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 124, __pyx_L1_error) - } - break; - } - __Pyx_GOTREF(__pyx_t_5); - } - __Pyx_XDECREF_SET(__pyx_v_obj, __pyx_t_5); - __pyx_t_5 = 0; - - /* "src/gevent/_hub_primitives.py":125 - * - * for obj in self._objects: - * obj.rawlink(self._switch) # <<<<<<<<<<<<<< - * - * if self._timeout is not None: - */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_rawlink); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 125, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); - if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); - __Pyx_INCREF(__pyx_t_7); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_6, function); - } - } - if (!__pyx_t_7) { - __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_self->_switch); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 125, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_6)) { - PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_v_self->_switch}; - __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 125, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_5); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { - PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_v_self->_switch}; - __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 125, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_5); - } else - #endif - { - __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 125, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL; - __Pyx_INCREF(__pyx_v_self->_switch); - __Pyx_GIVEREF(__pyx_v_self->_switch); - PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_v_self->_switch); - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 125, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } - } - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - - /* "src/gevent/_hub_primitives.py":124 - * self._begun = True - * - * for obj in self._objects: # <<<<<<<<<<<<<< - * obj.rawlink(self._switch) - * - */ - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_hub_primitives.py":127 - * obj.rawlink(self._switch) - * - * if self._timeout is not None: # <<<<<<<<<<<<<< - * self._timer = self._hub.loop.timer(self._timeout, priority=-1) - * self._timer.start(self._switch, self) - */ - __pyx_t_1 = (__pyx_v_self->_timeout != Py_None); - __pyx_t_9 = (__pyx_t_1 != 0); - if (__pyx_t_9) { - - /* "src/gevent/_hub_primitives.py":128 - * - * if self._timeout is not None: - * self._timer = self._hub.loop.timer(self._timeout, priority=-1) # <<<<<<<<<<<<<< - * self._timer.start(self._switch, self) - * return self - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_hub->loop, __pyx_n_s_timer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 128, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 128, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_INCREF(__pyx_v_self->_timeout); - __Pyx_GIVEREF(__pyx_v_self->_timeout); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_self->_timeout); - __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 128, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_priority, __pyx_int_neg_1) < 0) __PYX_ERR(0, 128, __pyx_L1_error) - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 128, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GIVEREF(__pyx_t_8); - __Pyx_GOTREF(__pyx_v_self->_timer); - __Pyx_DECREF(__pyx_v_self->_timer); - __pyx_v_self->_timer = __pyx_t_8; - __pyx_t_8 = 0; - - /* "src/gevent/_hub_primitives.py":129 - * if self._timeout is not None: - * self._timer = self._hub.loop.timer(self._timeout, priority=-1) - * self._timer.start(self._switch, self) # <<<<<<<<<<<<<< - * return self - * - */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_timer, __pyx_n_s_start); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 129, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_5 = NULL; - __pyx_t_10 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_6, function); - __pyx_t_10 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_6)) { - PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_self->_switch, ((PyObject *)__pyx_v_self)}; - __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 129, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_8); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { - PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_self->_switch, ((PyObject *)__pyx_v_self)}; - __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 129, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_8); - } else - #endif - { - __pyx_t_2 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 129, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (__pyx_t_5) { - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL; - } - __Pyx_INCREF(__pyx_v_self->_switch); - __Pyx_GIVEREF(__pyx_v_self->_switch); - PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_10, __pyx_v_self->_switch); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_10, ((PyObject *)__pyx_v_self)); - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_2, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 129, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - - /* "src/gevent/_hub_primitives.py":127 - * obj.rawlink(self._switch) - * - * if self._timeout is not None: # <<<<<<<<<<<<<< - * self._timer = self._hub.loop.timer(self._timeout, priority=-1) - * self._timer.start(self._switch, self) - */ - } - - /* "src/gevent/_hub_primitives.py":121 - * # XXX: If iteration doesn't actually happen, we - * # could leave these links around! - * if not self._begun: # <<<<<<<<<<<<<< - * self._begun = True - * - */ - } - - /* "src/gevent/_hub_primitives.py":130 - * self._timer = self._hub.loop.timer(self._timeout, priority=-1) - * self._timer.start(self._switch, self) - * return self # <<<<<<<<<<<<<< - * - * def __next__(self): - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __pyx_r = ((PyObject *)__pyx_v_self); - goto __pyx_L0; - - /* "src/gevent/_hub_primitives.py":117 - * - * - * def __iter__(self): # <<<<<<<<<<<<<< - * # When we begin iterating, we begin the timer. - * # XXX: If iteration doesn't actually happen, we - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_AddTraceback("gevent.__hub_primitives._WaitIterator.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_obj); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_hub_primitives.py":132 - * return self - * - * def __next__(self): # <<<<<<<<<<<<<< - * if self._count == 0: - * # Exhausted - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_16__hub_primitives_13_WaitIterator_5__next__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_16__hub_primitives_13_WaitIterator_5__next__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__next__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_16__hub_primitives_13_WaitIterator_4__next__(((struct __pyx_obj_6gevent_16__hub_primitives__WaitIterator *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_16__hub_primitives_13_WaitIterator_4__next__(struct __pyx_obj_6gevent_16__hub_primitives__WaitIterator *__pyx_v_self) { - PyObject *__pyx_v_item = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - __Pyx_RefNannySetupContext("__next__", 0); - - /* "src/gevent/_hub_primitives.py":133 - * - * def __next__(self): - * if self._count == 0: # <<<<<<<<<<<<<< - * # Exhausted - * self._cleanup() - */ - __pyx_t_1 = ((__pyx_v_self->_count == 0) != 0); - if (unlikely(__pyx_t_1)) { - - /* "src/gevent/_hub_primitives.py":135 - * if self._count == 0: - * # Exhausted - * self._cleanup() # <<<<<<<<<<<<<< - * raise StopIteration() - * - */ - __pyx_t_2 = ((struct __pyx_vtabstruct_6gevent_16__hub_primitives__WaitIterator *)__pyx_v_self->__pyx_vtab)->_cleanup(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 135, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_hub_primitives.py":136 - * # Exhausted - * self._cleanup() - * raise StopIteration() # <<<<<<<<<<<<<< - * - * self._count -= 1 - */ - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_builtin_StopIteration); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 136, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 136, __pyx_L1_error) - - /* "src/gevent/_hub_primitives.py":133 - * - * def __next__(self): - * if self._count == 0: # <<<<<<<<<<<<<< - * # Exhausted - * self._cleanup() - */ - } - - /* "src/gevent/_hub_primitives.py":138 - * raise StopIteration() - * - * self._count -= 1 # <<<<<<<<<<<<<< - * try: - * item = self._waiter.get() - */ - __pyx_v_self->_count = (__pyx_v_self->_count - 1); - - /* "src/gevent/_hub_primitives.py":139 - * - * self._count -= 1 - * try: # <<<<<<<<<<<<<< - * item = self._waiter.get() - * self._waiter.clear() - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5); - __Pyx_XGOTREF(__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_t_5); - /*try:*/ { - - /* "src/gevent/_hub_primitives.py":140 - * self._count -= 1 - * try: - * item = self._waiter.get() # <<<<<<<<<<<<<< - * self._waiter.clear() - * if item is self: - */ - __pyx_t_2 = ((struct __pyx_vtabstruct_6gevent_8__waiter_MultipleWaiter *)__pyx_v_self->_waiter->__pyx_base.__pyx_vtab)->__pyx_base.get(((struct __pyx_obj_6gevent_8__waiter_Waiter *)__pyx_v_self->_waiter), 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 140, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_v_item = __pyx_t_2; - __pyx_t_2 = 0; - - /* "src/gevent/_hub_primitives.py":141 - * try: - * item = self._waiter.get() - * self._waiter.clear() # <<<<<<<<<<<<<< - * if item is self: - * # Timer expired, no more - */ - __pyx_t_2 = ((struct __pyx_vtabstruct_6gevent_8__waiter_MultipleWaiter *)__pyx_v_self->_waiter->__pyx_base.__pyx_vtab)->__pyx_base.clear(((struct __pyx_obj_6gevent_8__waiter_Waiter *)__pyx_v_self->_waiter), 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 141, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_hub_primitives.py":142 - * item = self._waiter.get() - * self._waiter.clear() - * if item is self: # <<<<<<<<<<<<<< - * # Timer expired, no more - * self._cleanup() - */ - __pyx_t_1 = (__pyx_v_item == ((PyObject *)__pyx_v_self)); - __pyx_t_6 = (__pyx_t_1 != 0); - if (unlikely(__pyx_t_6)) { - - /* "src/gevent/_hub_primitives.py":144 - * if item is self: - * # Timer expired, no more - * self._cleanup() # <<<<<<<<<<<<<< - * raise StopIteration() - * return item - */ - __pyx_t_2 = ((struct __pyx_vtabstruct_6gevent_16__hub_primitives__WaitIterator *)__pyx_v_self->__pyx_vtab)->_cleanup(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 144, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_hub_primitives.py":145 - * # Timer expired, no more - * self._cleanup() - * raise StopIteration() # <<<<<<<<<<<<<< - * return item - * except: - */ - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_builtin_StopIteration); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 145, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 145, __pyx_L4_error) - - /* "src/gevent/_hub_primitives.py":142 - * item = self._waiter.get() - * self._waiter.clear() - * if item is self: # <<<<<<<<<<<<<< - * # Timer expired, no more - * self._cleanup() - */ - } - - /* "src/gevent/_hub_primitives.py":146 - * self._cleanup() - * raise StopIteration() - * return item # <<<<<<<<<<<<<< - * except: - * self._cleanup() - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_item); - __pyx_r = __pyx_v_item; - goto __pyx_L8_try_return; - - /* "src/gevent/_hub_primitives.py":139 - * - * self._count -= 1 - * try: # <<<<<<<<<<<<<< - * item = self._waiter.get() - * self._waiter.clear() - */ - } - __pyx_L4_error:; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_hub_primitives.py":147 - * raise StopIteration() - * return item - * except: # <<<<<<<<<<<<<< - * self._cleanup() - * raise - */ - /*except:*/ { - __Pyx_AddTraceback("gevent.__hub_primitives._WaitIterator.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(0, 147, __pyx_L6_except_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GOTREF(__pyx_t_7); - __Pyx_GOTREF(__pyx_t_8); - - /* "src/gevent/_hub_primitives.py":148 - * return item - * except: - * self._cleanup() # <<<<<<<<<<<<<< - * raise - * - */ - __pyx_t_9 = ((struct __pyx_vtabstruct_6gevent_16__hub_primitives__WaitIterator *)__pyx_v_self->__pyx_vtab)->_cleanup(__pyx_v_self); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 148, __pyx_L6_except_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - - /* "src/gevent/_hub_primitives.py":149 - * except: - * self._cleanup() - * raise # <<<<<<<<<<<<<< - * - * next = __next__ - */ - __Pyx_GIVEREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_7); - __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_7, __pyx_t_8); - __pyx_t_2 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; - __PYX_ERR(0, 149, __pyx_L6_except_error) - } - __pyx_L6_except_error:; - - /* "src/gevent/_hub_primitives.py":139 - * - * self._count -= 1 - * try: # <<<<<<<<<<<<<< - * item = self._waiter.get() - * self._waiter.clear() - */ - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5); - goto __pyx_L1_error; - __pyx_L8_try_return:; - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5); - goto __pyx_L0; - } - - /* "src/gevent/_hub_primitives.py":132 - * return self - * - * def __next__(self): # <<<<<<<<<<<<<< - * if self._count == 0: - * # Exhausted - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_XDECREF(__pyx_t_9); - __Pyx_AddTraceback("gevent.__hub_primitives._WaitIterator.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_item); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_hub_primitives.py":153 - * next = __next__ - * - * def _cleanup(self): # <<<<<<<<<<<<<< - * if self._timer is not None: - * self._timer.close() - */ - -static PyObject *__pyx_f_6gevent_16__hub_primitives_13_WaitIterator__cleanup(struct __pyx_obj_6gevent_16__hub_primitives__WaitIterator *__pyx_v_self) { - PyObject *__pyx_v_objs = NULL; - PyObject *__pyx_v_aobj = NULL; - PyObject *__pyx_v_unlink = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - Py_ssize_t __pyx_t_6; - PyObject *(*__pyx_t_7)(PyObject *); - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - PyObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; - PyObject *__pyx_t_13 = NULL; - PyObject *__pyx_t_14 = NULL; - __Pyx_RefNannySetupContext("_cleanup", 0); - - /* "src/gevent/_hub_primitives.py":154 - * - * def _cleanup(self): - * if self._timer is not None: # <<<<<<<<<<<<<< - * self._timer.close() - * self._timer = None - */ - __pyx_t_1 = (__pyx_v_self->_timer != Py_None); - __pyx_t_2 = (__pyx_t_1 != 0); - if (__pyx_t_2) { - - /* "src/gevent/_hub_primitives.py":155 - * def _cleanup(self): - * if self._timer is not None: - * self._timer.close() # <<<<<<<<<<<<<< - * self._timer = None - * - */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_timer, __pyx_n_s_close); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 155, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (__pyx_t_5) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 155, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 155, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "src/gevent/_hub_primitives.py":156 - * if self._timer is not None: - * self._timer.close() - * self._timer = None # <<<<<<<<<<<<<< - * - * objs = self._objects - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->_timer); - __Pyx_DECREF(__pyx_v_self->_timer); - __pyx_v_self->_timer = Py_None; - - /* "src/gevent/_hub_primitives.py":154 - * - * def _cleanup(self): - * if self._timer is not None: # <<<<<<<<<<<<<< - * self._timer.close() - * self._timer = None - */ - } - - /* "src/gevent/_hub_primitives.py":158 - * self._timer = None - * - * objs = self._objects # <<<<<<<<<<<<<< - * self._objects = () - * for aobj in objs: - */ - __pyx_t_3 = __pyx_v_self->_objects; - __Pyx_INCREF(__pyx_t_3); - __pyx_v_objs = __pyx_t_3; - __pyx_t_3 = 0; - - /* "src/gevent/_hub_primitives.py":159 - * - * objs = self._objects - * self._objects = () # <<<<<<<<<<<<<< - * for aobj in objs: - * unlink = getattr(aobj, 'unlink', None) - */ - __Pyx_INCREF(__pyx_empty_tuple); - __Pyx_GIVEREF(__pyx_empty_tuple); - __Pyx_GOTREF(__pyx_v_self->_objects); - __Pyx_DECREF(__pyx_v_self->_objects); - __pyx_v_self->_objects = __pyx_empty_tuple; - - /* "src/gevent/_hub_primitives.py":160 - * objs = self._objects - * self._objects = () - * for aobj in objs: # <<<<<<<<<<<<<< - * unlink = getattr(aobj, 'unlink', None) - * if unlink is not None: - */ - if (likely(PyList_CheckExact(__pyx_v_objs)) || PyTuple_CheckExact(__pyx_v_objs)) { - __pyx_t_3 = __pyx_v_objs; __Pyx_INCREF(__pyx_t_3); __pyx_t_6 = 0; - __pyx_t_7 = NULL; - } else { - __pyx_t_6 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_objs); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 160, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_7 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 160, __pyx_L1_error) - } - for (;;) { - if (likely(!__pyx_t_7)) { - if (likely(PyList_CheckExact(__pyx_t_3))) { - if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_3)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 160, __pyx_L1_error) - #else - __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 160, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - #endif - } else { - if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_3)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 160, __pyx_L1_error) - #else - __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 160, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - #endif - } - } else { - __pyx_t_4 = __pyx_t_7(__pyx_t_3); - if (unlikely(!__pyx_t_4)) { - PyObject* exc_type = PyErr_Occurred(); - if (exc_type) { - if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 160, __pyx_L1_error) - } - break; - } - __Pyx_GOTREF(__pyx_t_4); - } - __Pyx_XDECREF_SET(__pyx_v_aobj, __pyx_t_4); - __pyx_t_4 = 0; - - /* "src/gevent/_hub_primitives.py":161 - * self._objects = () - * for aobj in objs: - * unlink = getattr(aobj, 'unlink', None) # <<<<<<<<<<<<<< - * if unlink is not None: - * try: - */ - __pyx_t_4 = __Pyx_GetAttr3(__pyx_v_aobj, __pyx_n_s_unlink, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 161, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_XDECREF_SET(__pyx_v_unlink, __pyx_t_4); - __pyx_t_4 = 0; - - /* "src/gevent/_hub_primitives.py":162 - * for aobj in objs: - * unlink = getattr(aobj, 'unlink', None) - * if unlink is not None: # <<<<<<<<<<<<<< - * try: - * unlink(self._switch) - */ - __pyx_t_2 = (__pyx_v_unlink != Py_None); - __pyx_t_1 = (__pyx_t_2 != 0); - if (__pyx_t_1) { - - /* "src/gevent/_hub_primitives.py":163 - * unlink = getattr(aobj, 'unlink', None) - * if unlink is not None: - * try: # <<<<<<<<<<<<<< - * unlink(self._switch) - * except: # pylint:disable=bare-except - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10); - __Pyx_XGOTREF(__pyx_t_8); - __Pyx_XGOTREF(__pyx_t_9); - __Pyx_XGOTREF(__pyx_t_10); - /*try:*/ { - - /* "src/gevent/_hub_primitives.py":164 - * if unlink is not None: - * try: - * unlink(self._switch) # <<<<<<<<<<<<<< - * except: # pylint:disable=bare-except - * traceback.print_exc() - */ - __Pyx_INCREF(__pyx_v_unlink); - __pyx_t_5 = __pyx_v_unlink; __pyx_t_11 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_11)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_11); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - } - } - if (!__pyx_t_11) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_self->_switch); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 164, __pyx_L7_error) - __Pyx_GOTREF(__pyx_t_4); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_11, __pyx_v_self->_switch}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 164, __pyx_L7_error) - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_GOTREF(__pyx_t_4); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_11, __pyx_v_self->_switch}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 164, __pyx_L7_error) - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_GOTREF(__pyx_t_4); - } else - #endif - { - __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 164, __pyx_L7_error) - __Pyx_GOTREF(__pyx_t_12); - __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11); __pyx_t_11 = NULL; - __Pyx_INCREF(__pyx_v_self->_switch); - __Pyx_GIVEREF(__pyx_v_self->_switch); - PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_v_self->_switch); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_12, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 164, __pyx_L7_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - } - } - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "src/gevent/_hub_primitives.py":163 - * unlink = getattr(aobj, 'unlink', None) - * if unlink is not None: - * try: # <<<<<<<<<<<<<< - * unlink(self._switch) - * except: # pylint:disable=bare-except - */ - } - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; - goto __pyx_L14_try_end; - __pyx_L7_error:; - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "src/gevent/_hub_primitives.py":165 - * try: - * unlink(self._switch) - * except: # pylint:disable=bare-except # <<<<<<<<<<<<<< - * traceback.print_exc() - * - */ - /*except:*/ { - __Pyx_AddTraceback("gevent.__hub_primitives._WaitIterator._cleanup", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_12) < 0) __PYX_ERR(0, 165, __pyx_L9_except_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GOTREF(__pyx_t_12); - - /* "src/gevent/_hub_primitives.py":166 - * unlink(self._switch) - * except: # pylint:disable=bare-except - * traceback.print_exc() # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_6gevent_16__hub_primitives_traceback, __pyx_n_s_print_exc); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 166, __pyx_L9_except_error) - __Pyx_GOTREF(__pyx_t_13); - __pyx_t_14 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) { - __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_13); - if (likely(__pyx_t_14)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); - __Pyx_INCREF(__pyx_t_14); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_13, function); - } - } - if (__pyx_t_14) { - __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_14); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 166, __pyx_L9_except_error) - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - } else { - __pyx_t_11 = __Pyx_PyObject_CallNoArg(__pyx_t_13); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 166, __pyx_L9_except_error) - } - __Pyx_GOTREF(__pyx_t_11); - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - goto __pyx_L8_exception_handled; - } - __pyx_L9_except_error:; - - /* "src/gevent/_hub_primitives.py":163 - * unlink = getattr(aobj, 'unlink', None) - * if unlink is not None: - * try: # <<<<<<<<<<<<<< - * unlink(self._switch) - * except: # pylint:disable=bare-except - */ - __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_XGIVEREF(__pyx_t_9); - __Pyx_XGIVEREF(__pyx_t_10); - __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10); - goto __pyx_L1_error; - __pyx_L8_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_XGIVEREF(__pyx_t_9); - __Pyx_XGIVEREF(__pyx_t_10); - __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10); - __pyx_L14_try_end:; - } - - /* "src/gevent/_hub_primitives.py":162 - * for aobj in objs: - * unlink = getattr(aobj, 'unlink', None) - * if unlink is not None: # <<<<<<<<<<<<<< - * try: - * unlink(self._switch) - */ - } - - /* "src/gevent/_hub_primitives.py":160 - * objs = self._objects - * self._objects = () - * for aobj in objs: # <<<<<<<<<<<<<< - * unlink = getattr(aobj, 'unlink', None) - * if unlink is not None: - */ - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "src/gevent/_hub_primitives.py":153 - * next = __next__ - * - * def _cleanup(self): # <<<<<<<<<<<<<< - * if self._timer is not None: - * self._timer.close() - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_11); - __Pyx_XDECREF(__pyx_t_12); - __Pyx_XDECREF(__pyx_t_13); - __Pyx_XDECREF(__pyx_t_14); - __Pyx_AddTraceback("gevent.__hub_primitives._WaitIterator._cleanup", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_objs); - __Pyx_XDECREF(__pyx_v_aobj); - __Pyx_XDECREF(__pyx_v_unlink); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_hub_primitives.py":169 - * - * - * def iwait_on_objects(objects, timeout=None, count=None): # <<<<<<<<<<<<<< - * """ - * Iteratively yield *objects* as they are ready, until all (or *count*) are ready - */ - -static PyObject *__pyx_pw_6gevent_16__hub_primitives_1iwait_on_objects(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_f_6gevent_16__hub_primitives_iwait_on_objects(PyObject *__pyx_v_objects, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_16__hub_primitives_iwait_on_objects *__pyx_optional_args) { - PyObject *__pyx_v_timeout = ((PyObject *)Py_None); - PyObject *__pyx_v_count = ((PyObject *)Py_None); - struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_v_hub = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - __Pyx_RefNannySetupContext("iwait_on_objects", 0); - if (__pyx_optional_args) { - if (__pyx_optional_args->__pyx_n > 0) { - __pyx_v_timeout = __pyx_optional_args->timeout; - if (__pyx_optional_args->__pyx_n > 1) { - __pyx_v_count = __pyx_optional_args->count; - } - } - } - - /* "src/gevent/_hub_primitives.py":192 - * """ - * # QQQ would be nice to support iterable here that can be generated slowly (why?) - * hub = get_hub() # <<<<<<<<<<<<<< - * if objects is None: - * return [hub.join(timeout=timeout)] - */ - __pyx_t_1 = ((PyObject *)__pyx_f_6gevent_11__hub_local_get_hub_noargs(0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 192, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_hub = ((struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":193 - * # QQQ would be nice to support iterable here that can be generated slowly (why?) - * hub = get_hub() - * if objects is None: # <<<<<<<<<<<<<< - * return [hub.join(timeout=timeout)] - * return _WaitIterator(objects, hub, timeout, count) - */ - __pyx_t_2 = (__pyx_v_objects == Py_None); - __pyx_t_3 = (__pyx_t_2 != 0); - if (__pyx_t_3) { - - /* "src/gevent/_hub_primitives.py":194 - * hub = get_hub() - * if objects is None: - * return [hub.join(timeout=timeout)] # <<<<<<<<<<<<<< - * return _WaitIterator(objects, hub, timeout, count) - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_hub), __pyx_n_s_join); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 194, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 194, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_timeout, __pyx_v_timeout) < 0) __PYX_ERR(0, 194, __pyx_L1_error) - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 194, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 194, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_5); - PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); - __pyx_t_5 = 0; - __pyx_r = __pyx_t_4; - __pyx_t_4 = 0; - goto __pyx_L0; - - /* "src/gevent/_hub_primitives.py":193 - * # QQQ would be nice to support iterable here that can be generated slowly (why?) - * hub = get_hub() - * if objects is None: # <<<<<<<<<<<<<< - * return [hub.join(timeout=timeout)] - * return _WaitIterator(objects, hub, timeout, count) - */ - } - - /* "src/gevent/_hub_primitives.py":195 - * if objects is None: - * return [hub.join(timeout=timeout)] - * return _WaitIterator(objects, hub, timeout, count) # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 195, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_INCREF(__pyx_v_objects); - __Pyx_GIVEREF(__pyx_v_objects); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_objects); - __Pyx_INCREF(((PyObject *)__pyx_v_hub)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_hub)); - PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_v_hub)); - __Pyx_INCREF(__pyx_v_timeout); - __Pyx_GIVEREF(__pyx_v_timeout); - PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_timeout); - __Pyx_INCREF(__pyx_v_count); - __Pyx_GIVEREF(__pyx_v_count); - PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_v_count); - __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6gevent_16__hub_primitives__WaitIterator), __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 195, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_r = __pyx_t_5; - __pyx_t_5 = 0; - goto __pyx_L0; - - /* "src/gevent/_hub_primitives.py":169 - * - * - * def iwait_on_objects(objects, timeout=None, count=None): # <<<<<<<<<<<<<< - * """ - * Iteratively yield *objects* as they are ready, until all (or *count*) are ready - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent.__hub_primitives.iwait_on_objects", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_hub); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_16__hub_primitives_1iwait_on_objects(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_16__hub_primitives_iwait_on_objects[] = "iwait_on_objects(objects, timeout=None, count=None)\n\n Iteratively yield *objects* as they are ready, until all (or *count*) are ready\n or *timeout* expired.\n\n :param objects: A sequence (supporting :func:`len`) containing objects\n implementing the wait protocol (rawlink() and unlink()).\n :keyword int count: If not `None`, then a number specifying the maximum number\n of objects to wait for. If ``None`` (the default), all objects\n are waited for.\n :keyword float timeout: If given, specifies a maximum number of seconds\n to wait. If the timeout expires before the desired waited-for objects\n are available, then this method returns immediately.\n\n .. seealso:: :func:`wait`\n\n .. versionchanged:: 1.1a1\n Add the *count* parameter.\n .. versionchanged:: 1.1a2\n No longer raise :exc:`LoopExit` if our caller switches greenlets\n in between items yielded by this function.\n "; -static PyMethodDef __pyx_mdef_6gevent_16__hub_primitives_1iwait_on_objects = {"iwait_on_objects", (PyCFunction)__pyx_pw_6gevent_16__hub_primitives_1iwait_on_objects, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_16__hub_primitives_iwait_on_objects}; -static PyObject *__pyx_pw_6gevent_16__hub_primitives_1iwait_on_objects(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_objects = 0; - PyObject *__pyx_v_timeout = 0; - PyObject *__pyx_v_count = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("iwait_on_objects (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_objects,&__pyx_n_s_timeout,&__pyx_n_s_count,0}; - PyObject* values[3] = {0,0,0}; - values[1] = ((PyObject *)Py_None); - values[2] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_objects)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeout); - if (value) { values[1] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_count); - if (value) { values[2] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "iwait_on_objects") < 0)) __PYX_ERR(0, 169, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_objects = values[0]; - __pyx_v_timeout = values[1]; - __pyx_v_count = values[2]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("iwait_on_objects", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 169, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.__hub_primitives.iwait_on_objects", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_16__hub_primitives_iwait_on_objects(__pyx_self, __pyx_v_objects, __pyx_v_timeout, __pyx_v_count); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_16__hub_primitives_iwait_on_objects(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_objects, PyObject *__pyx_v_timeout, PyObject *__pyx_v_count) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - struct __pyx_opt_args_6gevent_16__hub_primitives_iwait_on_objects __pyx_t_2; - __Pyx_RefNannySetupContext("iwait_on_objects", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_2.__pyx_n = 2; - __pyx_t_2.timeout = __pyx_v_timeout; - __pyx_t_2.count = __pyx_v_count; - __pyx_t_1 = __pyx_f_6gevent_16__hub_primitives_iwait_on_objects(__pyx_v_objects, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 169, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__hub_primitives.iwait_on_objects", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_hub_primitives.py":198 - * - * - * def wait_on_objects(objects=None, timeout=None, count=None): # <<<<<<<<<<<<<< - * """ - * Wait for ``objects`` to become ready or for event loop to finish. - */ - -static PyObject *__pyx_pw_6gevent_16__hub_primitives_3wait_on_objects(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_f_6gevent_16__hub_primitives_wait_on_objects(CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_16__hub_primitives_wait_on_objects *__pyx_optional_args) { - PyObject *__pyx_v_objects = ((PyObject *)Py_None); - PyObject *__pyx_v_timeout = ((PyObject *)Py_None); - PyObject *__pyx_v_count = ((PyObject *)Py_None); - struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_v_hub = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - struct __pyx_opt_args_6gevent_16__hub_primitives_iwait_on_objects __pyx_t_6; - __Pyx_RefNannySetupContext("wait_on_objects", 0); - if (__pyx_optional_args) { - if (__pyx_optional_args->__pyx_n > 0) { - __pyx_v_objects = __pyx_optional_args->objects; - if (__pyx_optional_args->__pyx_n > 1) { - __pyx_v_timeout = __pyx_optional_args->timeout; - if (__pyx_optional_args->__pyx_n > 2) { - __pyx_v_count = __pyx_optional_args->count; - } - } - } - } - - /* "src/gevent/_hub_primitives.py":232 - * .. seealso:: :func:`iwait` - * """ - * if objects is None: # <<<<<<<<<<<<<< - * hub = get_hub() - * return hub.join(timeout=timeout) # pylint:disable= - */ - __pyx_t_1 = (__pyx_v_objects == Py_None); - __pyx_t_2 = (__pyx_t_1 != 0); - if (__pyx_t_2) { - - /* "src/gevent/_hub_primitives.py":233 - * """ - * if objects is None: - * hub = get_hub() # <<<<<<<<<<<<<< - * return hub.join(timeout=timeout) # pylint:disable= - * return list(iwait_on_objects(objects, timeout, count)) - */ - __pyx_t_3 = ((PyObject *)__pyx_f_6gevent_11__hub_local_get_hub_noargs(0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 233, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_v_hub = ((struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *)__pyx_t_3); - __pyx_t_3 = 0; - - /* "src/gevent/_hub_primitives.py":234 - * if objects is None: - * hub = get_hub() - * return hub.join(timeout=timeout) # pylint:disable= # <<<<<<<<<<<<<< - * return list(iwait_on_objects(objects, timeout, count)) - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_hub), __pyx_n_s_join); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 234, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 234, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_timeout, __pyx_v_timeout) < 0) __PYX_ERR(0, 234, __pyx_L1_error) - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 234, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_r = __pyx_t_5; - __pyx_t_5 = 0; - goto __pyx_L0; - - /* "src/gevent/_hub_primitives.py":232 - * .. seealso:: :func:`iwait` - * """ - * if objects is None: # <<<<<<<<<<<<<< - * hub = get_hub() - * return hub.join(timeout=timeout) # pylint:disable= - */ - } - - /* "src/gevent/_hub_primitives.py":235 - * hub = get_hub() - * return hub.join(timeout=timeout) # pylint:disable= - * return list(iwait_on_objects(objects, timeout, count)) # <<<<<<<<<<<<<< - * - * _timeout_error = Exception - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_6.__pyx_n = 2; - __pyx_t_6.timeout = __pyx_v_timeout; - __pyx_t_6.count = __pyx_v_count; - __pyx_t_5 = __pyx_f_6gevent_16__hub_primitives_iwait_on_objects(__pyx_v_objects, 0, &__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 235, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = PySequence_List(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 235, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_r = __pyx_t_4; - __pyx_t_4 = 0; - goto __pyx_L0; - - /* "src/gevent/_hub_primitives.py":198 - * - * - * def wait_on_objects(objects=None, timeout=None, count=None): # <<<<<<<<<<<<<< - * """ - * Wait for ``objects`` to become ready or for event loop to finish. - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent.__hub_primitives.wait_on_objects", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_hub); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_16__hub_primitives_3wait_on_objects(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_16__hub_primitives_2wait_on_objects[] = "wait_on_objects(objects=None, timeout=None, count=None)\n\n Wait for ``objects`` to become ready or for event loop to finish.\n\n If ``objects`` is provided, it must be a list containing objects\n implementing the wait protocol (rawlink() and unlink() methods):\n\n - :class:`gevent.Greenlet` instance\n - :class:`gevent.event.Event` instance\n - :class:`gevent.lock.Semaphore` instance\n - :class:`gevent.subprocess.Popen` instance\n\n If ``objects`` is ``None`` (the default), ``wait()`` blocks until\n the current event loop has nothing to do (or until ``timeout`` passes):\n\n - all greenlets have finished\n - all servers were stopped\n - all event loop watchers were stopped.\n\n If ``count`` is ``None`` (the default), wait for all ``objects``\n to become ready.\n\n If ``count`` is a number, wait for (up to) ``count`` objects to become\n ready. (For example, if count is ``1`` then the function exits\n when any object in the list is ready).\n\n If ``timeout`` is provided, it specifies the maximum number of\n seconds ``wait()`` will block.\n\n Returns the list of ready objects, in the order in which they were\n ready.\n\n .. seealso:: :func:`iwait`\n "; -static PyMethodDef __pyx_mdef_6gevent_16__hub_primitives_3wait_on_objects = {"wait_on_objects", (PyCFunction)__pyx_pw_6gevent_16__hub_primitives_3wait_on_objects, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_16__hub_primitives_2wait_on_objects}; -static PyObject *__pyx_pw_6gevent_16__hub_primitives_3wait_on_objects(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_objects = 0; - PyObject *__pyx_v_timeout = 0; - PyObject *__pyx_v_count = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("wait_on_objects (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_objects,&__pyx_n_s_timeout,&__pyx_n_s_count,0}; - PyObject* values[3] = {0,0,0}; - values[0] = ((PyObject *)Py_None); - values[1] = ((PyObject *)Py_None); - values[2] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_objects); - if (value) { values[0] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeout); - if (value) { values[1] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_count); - if (value) { values[2] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "wait_on_objects") < 0)) __PYX_ERR(0, 198, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_objects = values[0]; - __pyx_v_timeout = values[1]; - __pyx_v_count = values[2]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("wait_on_objects", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 198, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.__hub_primitives.wait_on_objects", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_16__hub_primitives_2wait_on_objects(__pyx_self, __pyx_v_objects, __pyx_v_timeout, __pyx_v_count); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_16__hub_primitives_2wait_on_objects(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_objects, PyObject *__pyx_v_timeout, PyObject *__pyx_v_count) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - struct __pyx_opt_args_6gevent_16__hub_primitives_wait_on_objects __pyx_t_2; - __Pyx_RefNannySetupContext("wait_on_objects", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_2.__pyx_n = 3; - __pyx_t_2.objects = __pyx_v_objects; - __pyx_t_2.timeout = __pyx_v_timeout; - __pyx_t_2.count = __pyx_v_count; - __pyx_t_1 = __pyx_f_6gevent_16__hub_primitives_wait_on_objects(0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 198, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__hub_primitives.wait_on_objects", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_hub_primitives.py":239 - * _timeout_error = Exception - * - * def set_default_timeout_error(e): # <<<<<<<<<<<<<< - * global _timeout_error - * _timeout_error = e - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_16__hub_primitives_5set_default_timeout_error(PyObject *__pyx_self, PyObject *__pyx_v_e); /*proto*/ -static char __pyx_doc_6gevent_16__hub_primitives_4set_default_timeout_error[] = "set_default_timeout_error(e)"; -static PyMethodDef __pyx_mdef_6gevent_16__hub_primitives_5set_default_timeout_error = {"set_default_timeout_error", (PyCFunction)__pyx_pw_6gevent_16__hub_primitives_5set_default_timeout_error, METH_O, __pyx_doc_6gevent_16__hub_primitives_4set_default_timeout_error}; -static PyObject *__pyx_pw_6gevent_16__hub_primitives_5set_default_timeout_error(PyObject *__pyx_self, PyObject *__pyx_v_e) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("set_default_timeout_error (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_16__hub_primitives_4set_default_timeout_error(__pyx_self, ((PyObject *)__pyx_v_e)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_16__hub_primitives_4set_default_timeout_error(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_e) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("set_default_timeout_error", 0); - - /* "src/gevent/_hub_primitives.py":241 - * def set_default_timeout_error(e): - * global _timeout_error - * _timeout_error = e # <<<<<<<<<<<<<< - * - * def _primitive_wait(watcher, timeout, timeout_exc, hub): - */ - __Pyx_INCREF(__pyx_v_e); - __Pyx_XGOTREF(__pyx_v_6gevent_16__hub_primitives__timeout_error); - __Pyx_DECREF_SET(__pyx_v_6gevent_16__hub_primitives__timeout_error, __pyx_v_e); - __Pyx_GIVEREF(__pyx_v_e); - - /* "src/gevent/_hub_primitives.py":239 - * _timeout_error = Exception - * - * def set_default_timeout_error(e): # <<<<<<<<<<<<<< - * global _timeout_error - * _timeout_error = e - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_hub_primitives.py":243 - * _timeout_error = e - * - * def _primitive_wait(watcher, timeout, timeout_exc, hub): # <<<<<<<<<<<<<< - * if watcher.callback is not None: - * raise ConcurrentObjectUseError('This socket is already used by another greenlet: %r' - */ - -static PyObject *__pyx_f_6gevent_16__hub_primitives__primitive_wait(PyObject *__pyx_v_watcher, PyObject *__pyx_v_timeout, PyObject *__pyx_v_timeout_exc, struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *__pyx_v_hub) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - int __pyx_t_8; - int __pyx_t_9; - PyObject *__pyx_t_10 = NULL; - PyObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; - PyObject *__pyx_t_13 = NULL; - PyObject *__pyx_t_14 = NULL; - __Pyx_RefNannySetupContext("_primitive_wait", 0); - __Pyx_INCREF(__pyx_v_timeout); - __Pyx_INCREF((PyObject *)__pyx_v_hub); - - /* "src/gevent/_hub_primitives.py":244 - * - * def _primitive_wait(watcher, timeout, timeout_exc, hub): - * if watcher.callback is not None: # <<<<<<<<<<<<<< - * raise ConcurrentObjectUseError('This socket is already used by another greenlet: %r' - * % (watcher.callback, )) - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_watcher, __pyx_n_s_callback); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 244, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = (__pyx_t_1 != Py_None); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_3 = (__pyx_t_2 != 0); - if (unlikely(__pyx_t_3)) { - - /* "src/gevent/_hub_primitives.py":245 - * def _primitive_wait(watcher, timeout, timeout_exc, hub): - * if watcher.callback is not None: - * raise ConcurrentObjectUseError('This socket is already used by another greenlet: %r' # <<<<<<<<<<<<<< - * % (watcher.callback, )) - * - */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ConcurrentObjectUseError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 245, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - - /* "src/gevent/_hub_primitives.py":246 - * if watcher.callback is not None: - * raise ConcurrentObjectUseError('This socket is already used by another greenlet: %r' - * % (watcher.callback, )) # <<<<<<<<<<<<<< - * - * if hub is None: - */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_watcher, __pyx_n_s_callback); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 246, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 246, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); - __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_This_socket_is_already_used_by_a, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 246, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (!__pyx_t_6) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 245, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 245, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 245, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else - #endif - { - __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 245, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL; - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5); - __pyx_t_5 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 245, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 245, __pyx_L1_error) - - /* "src/gevent/_hub_primitives.py":244 - * - * def _primitive_wait(watcher, timeout, timeout_exc, hub): - * if watcher.callback is not None: # <<<<<<<<<<<<<< - * raise ConcurrentObjectUseError('This socket is already used by another greenlet: %r' - * % (watcher.callback, )) - */ - } - - /* "src/gevent/_hub_primitives.py":248 - * % (watcher.callback, )) - * - * if hub is None: # <<<<<<<<<<<<<< - * hub = get_hub() - * - */ - __pyx_t_3 = (((PyObject *)__pyx_v_hub) == Py_None); - __pyx_t_2 = (__pyx_t_3 != 0); - if (__pyx_t_2) { - - /* "src/gevent/_hub_primitives.py":249 - * - * if hub is None: - * hub = get_hub() # <<<<<<<<<<<<<< - * - * if timeout is None: - */ - __pyx_t_1 = ((PyObject *)__pyx_f_6gevent_11__hub_local_get_hub_noargs(0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 249, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6gevent_16__hub_primitives_WaitOperationsGreenlet))))) __PYX_ERR(0, 249, __pyx_L1_error) - __Pyx_DECREF_SET(__pyx_v_hub, ((struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *)__pyx_t_1)); - __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":248 - * % (watcher.callback, )) - * - * if hub is None: # <<<<<<<<<<<<<< - * hub = get_hub() - * - */ - } - - /* "src/gevent/_hub_primitives.py":251 - * hub = get_hub() - * - * if timeout is None: # <<<<<<<<<<<<<< - * hub.wait(watcher) - * return - */ - __pyx_t_2 = (__pyx_v_timeout == Py_None); - __pyx_t_3 = (__pyx_t_2 != 0); - if (__pyx_t_3) { - - /* "src/gevent/_hub_primitives.py":252 - * - * if timeout is None: - * hub.wait(watcher) # <<<<<<<<<<<<<< - * return - * - */ - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_16__hub_primitives_WaitOperationsGreenlet *)__pyx_v_hub->__pyx_base.__pyx_vtab)->wait(__pyx_v_hub, __pyx_v_watcher, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 252, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":253 - * if timeout is None: - * hub.wait(watcher) - * return # <<<<<<<<<<<<<< - * - * timeout = Timeout._start_new_or_dummy( - */ - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - /* "src/gevent/_hub_primitives.py":251 - * hub = get_hub() - * - * if timeout is None: # <<<<<<<<<<<<<< - * hub.wait(watcher) - * return - */ - } - - /* "src/gevent/_hub_primitives.py":255 - * return - * - * timeout = Timeout._start_new_or_dummy( # <<<<<<<<<<<<<< - * timeout, - * (timeout_exc - */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_6gevent_16__hub_primitives_Timeout, __pyx_n_s_start_new_or_dummy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 255, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - - /* "src/gevent/_hub_primitives.py":258 - * timeout, - * (timeout_exc - * if timeout_exc is not _NONE or timeout is None # <<<<<<<<<<<<<< - * else _timeout_error('timed out'))) - * - */ - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_NONE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 258, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_2 = (__pyx_v_timeout_exc != __pyx_t_5); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_8 = (__pyx_t_2 != 0); - if (!__pyx_t_8) { - } else { - __pyx_t_3 = __pyx_t_8; - goto __pyx_L6_bool_binop_done; - } - __pyx_t_8 = (__pyx_v_timeout == Py_None); - __pyx_t_2 = (__pyx_t_8 != 0); - __pyx_t_3 = __pyx_t_2; - __pyx_L6_bool_binop_done:; - if (__pyx_t_3) { - - /* "src/gevent/_hub_primitives.py":257 - * timeout = Timeout._start_new_or_dummy( - * timeout, - * (timeout_exc # <<<<<<<<<<<<<< - * if timeout_exc is not _NONE or timeout is None - * else _timeout_error('timed out'))) - */ - __Pyx_INCREF(__pyx_v_timeout_exc); - __pyx_t_7 = __pyx_v_timeout_exc; - } else { - - /* "src/gevent/_hub_primitives.py":259 - * (timeout_exc - * if timeout_exc is not _NONE or timeout is None - * else _timeout_error('timed out'))) # <<<<<<<<<<<<<< - * - * with timeout: - */ - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_6gevent_16__hub_primitives__timeout_error, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 259, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_7 = __pyx_t_5; - __pyx_t_5 = 0; - } - __pyx_t_5 = NULL; - __pyx_t_9 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - __pyx_t_9 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_timeout, __pyx_t_7}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 255, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_timeout, __pyx_t_7}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 255, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } else - #endif - { - __pyx_t_6 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 255, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (__pyx_t_5) { - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL; - } - __Pyx_INCREF(__pyx_v_timeout); - __Pyx_GIVEREF(__pyx_v_timeout); - PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_9, __pyx_v_timeout); - __Pyx_GIVEREF(__pyx_t_7); - PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_9, __pyx_t_7); - __pyx_t_7 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 255, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF_SET(__pyx_v_timeout, __pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":261 - * else _timeout_error('timed out'))) - * - * with timeout: # <<<<<<<<<<<<<< - * hub.wait(watcher) - * - */ - /*with:*/ { - __pyx_t_10 = __Pyx_PyObject_LookupSpecial(__pyx_v_timeout, __pyx_n_s_exit); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 261, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_10); - __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_timeout, __pyx_n_s_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 261, __pyx_L8_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (__pyx_t_6) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 261, __pyx_L8_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 261, __pyx_L8_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /*try:*/ { - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13); - __Pyx_XGOTREF(__pyx_t_11); - __Pyx_XGOTREF(__pyx_t_12); - __Pyx_XGOTREF(__pyx_t_13); - /*try:*/ { - - /* "src/gevent/_hub_primitives.py":262 - * - * with timeout: - * hub.wait(watcher) # <<<<<<<<<<<<<< - * - * # Suitable to be bound as an instance method - */ - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_16__hub_primitives_WaitOperationsGreenlet *)__pyx_v_hub->__pyx_base.__pyx_vtab)->wait(__pyx_v_hub, __pyx_v_watcher, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 262, __pyx_L12_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":261 - * else _timeout_error('timed out'))) - * - * with timeout: # <<<<<<<<<<<<<< - * hub.wait(watcher) - * - */ - } - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; - goto __pyx_L17_try_end; - __pyx_L12_error:; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - /*except:*/ { - __Pyx_AddTraceback("gevent.__hub_primitives._primitive_wait", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_6) < 0) __PYX_ERR(0, 261, __pyx_L14_except_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 261, __pyx_L14_except_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_7, NULL); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 261, __pyx_L14_except_error) - __Pyx_GOTREF(__pyx_t_14); - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_14); - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - if (__pyx_t_3 < 0) __PYX_ERR(0, 261, __pyx_L14_except_error) - __pyx_t_2 = ((!(__pyx_t_3 != 0)) != 0); - if (__pyx_t_2) { - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_4); - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_4, __pyx_t_6); - __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_6 = 0; - __PYX_ERR(0, 261, __pyx_L14_except_error) - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - goto __pyx_L13_exception_handled; - } - __pyx_L14_except_error:; - __Pyx_XGIVEREF(__pyx_t_11); - __Pyx_XGIVEREF(__pyx_t_12); - __Pyx_XGIVEREF(__pyx_t_13); - __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13); - goto __pyx_L1_error; - __pyx_L13_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_11); - __Pyx_XGIVEREF(__pyx_t_12); - __Pyx_XGIVEREF(__pyx_t_13); - __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13); - __pyx_L17_try_end:; - } - } - /*finally:*/ { - /*normal exit:*/{ - if (__pyx_t_10) { - __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__2, NULL); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 261, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_13); - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - } - goto __pyx_L11; - } - __pyx_L11:; - } - goto __pyx_L21; - __pyx_L8_error:; - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - goto __pyx_L1_error; - __pyx_L21:; - } - - /* "src/gevent/_hub_primitives.py":243 - * _timeout_error = e - * - * def _primitive_wait(watcher, timeout, timeout_exc, hub): # <<<<<<<<<<<<<< - * if watcher.callback is not None: - * raise ConcurrentObjectUseError('This socket is already used by another greenlet: %r' - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("gevent.__hub_primitives._primitive_wait", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_timeout); - __Pyx_XDECREF((PyObject *)__pyx_v_hub); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_hub_primitives.py":265 - * - * # Suitable to be bound as an instance method - * def wait_on_socket(socket, watcher, timeout_exc=None): # <<<<<<<<<<<<<< - * _primitive_wait(watcher, socket.timeout, - * timeout_exc if timeout_exc is not None else _NONE, - */ - -static PyObject *__pyx_pw_6gevent_16__hub_primitives_7wait_on_socket(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_f_6gevent_16__hub_primitives_wait_on_socket(PyObject *__pyx_v_socket, PyObject *__pyx_v_watcher, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_16__hub_primitives_wait_on_socket *__pyx_optional_args) { - PyObject *__pyx_v_timeout_exc = ((PyObject *)Py_None); - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - __Pyx_RefNannySetupContext("wait_on_socket", 0); - if (__pyx_optional_args) { - if (__pyx_optional_args->__pyx_n > 0) { - __pyx_v_timeout_exc = __pyx_optional_args->timeout_exc; - } - } - - /* "src/gevent/_hub_primitives.py":266 - * # Suitable to be bound as an instance method - * def wait_on_socket(socket, watcher, timeout_exc=None): - * _primitive_wait(watcher, socket.timeout, # <<<<<<<<<<<<<< - * timeout_exc if timeout_exc is not None else _NONE, - * socket.hub) - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_socket, __pyx_n_s_timeout); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 266, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - - /* "src/gevent/_hub_primitives.py":267 - * def wait_on_socket(socket, watcher, timeout_exc=None): - * _primitive_wait(watcher, socket.timeout, - * timeout_exc if timeout_exc is not None else _NONE, # <<<<<<<<<<<<<< - * socket.hub) - * - */ - __pyx_t_3 = (__pyx_v_timeout_exc != Py_None); - if ((__pyx_t_3 != 0)) { - __Pyx_INCREF(__pyx_v_timeout_exc); - __pyx_t_2 = __pyx_v_timeout_exc; - } else { - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NONE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 267, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = __pyx_t_4; - __pyx_t_4 = 0; - } - - /* "src/gevent/_hub_primitives.py":268 - * _primitive_wait(watcher, socket.timeout, - * timeout_exc if timeout_exc is not None else _NONE, - * socket.hub) # <<<<<<<<<<<<<< - * - * def wait_on_watcher(watcher, timeout=None, timeout_exc=_NONE, hub=None): - */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_socket, __pyx_n_s_hub); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 268, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6gevent_16__hub_primitives_WaitOperationsGreenlet))))) __PYX_ERR(0, 268, __pyx_L1_error) - - /* "src/gevent/_hub_primitives.py":266 - * # Suitable to be bound as an instance method - * def wait_on_socket(socket, watcher, timeout_exc=None): - * _primitive_wait(watcher, socket.timeout, # <<<<<<<<<<<<<< - * timeout_exc if timeout_exc is not None else _NONE, - * socket.hub) - */ - __pyx_t_5 = __pyx_f_6gevent_16__hub_primitives__primitive_wait(__pyx_v_watcher, __pyx_t_1, __pyx_t_2, ((struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *)__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 266, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - - /* "src/gevent/_hub_primitives.py":265 - * - * # Suitable to be bound as an instance method - * def wait_on_socket(socket, watcher, timeout_exc=None): # <<<<<<<<<<<<<< - * _primitive_wait(watcher, socket.timeout, - * timeout_exc if timeout_exc is not None else _NONE, - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent.__hub_primitives.wait_on_socket", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_16__hub_primitives_7wait_on_socket(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_16__hub_primitives_6wait_on_socket[] = "wait_on_socket(socket, watcher, timeout_exc=None)"; -static PyMethodDef __pyx_mdef_6gevent_16__hub_primitives_7wait_on_socket = {"wait_on_socket", (PyCFunction)__pyx_pw_6gevent_16__hub_primitives_7wait_on_socket, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_16__hub_primitives_6wait_on_socket}; -static PyObject *__pyx_pw_6gevent_16__hub_primitives_7wait_on_socket(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_socket = 0; - PyObject *__pyx_v_watcher = 0; - PyObject *__pyx_v_timeout_exc = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("wait_on_socket (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_socket,&__pyx_n_s_watcher,&__pyx_n_s_timeout_exc,0}; - PyObject* values[3] = {0,0,0}; - values[2] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_socket)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_watcher)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("wait_on_socket", 0, 2, 3, 1); __PYX_ERR(0, 265, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeout_exc); - if (value) { values[2] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "wait_on_socket") < 0)) __PYX_ERR(0, 265, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_socket = values[0]; - __pyx_v_watcher = values[1]; - __pyx_v_timeout_exc = values[2]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("wait_on_socket", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 265, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.__hub_primitives.wait_on_socket", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_16__hub_primitives_6wait_on_socket(__pyx_self, __pyx_v_socket, __pyx_v_watcher, __pyx_v_timeout_exc); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_16__hub_primitives_6wait_on_socket(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_socket, PyObject *__pyx_v_watcher, PyObject *__pyx_v_timeout_exc) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - struct __pyx_opt_args_6gevent_16__hub_primitives_wait_on_socket __pyx_t_2; - __Pyx_RefNannySetupContext("wait_on_socket", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_2.__pyx_n = 1; - __pyx_t_2.timeout_exc = __pyx_v_timeout_exc; - __pyx_t_1 = __pyx_f_6gevent_16__hub_primitives_wait_on_socket(__pyx_v_socket, __pyx_v_watcher, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 265, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__hub_primitives.wait_on_socket", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_hub_primitives.py":270 - * socket.hub) - * - * def wait_on_watcher(watcher, timeout=None, timeout_exc=_NONE, hub=None): # <<<<<<<<<<<<<< - * """ - * wait(watcher, timeout=None, [timeout_exc=None]) -> None - */ - -static PyObject *__pyx_pw_6gevent_16__hub_primitives_9wait_on_watcher(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_f_6gevent_16__hub_primitives_wait_on_watcher(PyObject *__pyx_v_watcher, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_16__hub_primitives_wait_on_watcher *__pyx_optional_args) { - PyObject *__pyx_v_timeout = ((PyObject *)Py_None); - PyObject *__pyx_v_timeout_exc = __pyx_k__3; - struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *__pyx_v_hub = ((struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *)Py_None); - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("wait_on_watcher", 0); - if (__pyx_optional_args) { - if (__pyx_optional_args->__pyx_n > 0) { - __pyx_v_timeout = __pyx_optional_args->timeout; - if (__pyx_optional_args->__pyx_n > 1) { - __pyx_v_timeout_exc = __pyx_optional_args->timeout_exc; - if (__pyx_optional_args->__pyx_n > 2) { - __pyx_v_hub = __pyx_optional_args->hub; - } - } - } - } - - /* "src/gevent/_hub_primitives.py":294 - * already started. - * """ - * _primitive_wait(watcher, timeout, timeout_exc, hub) # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_1 = __pyx_f_6gevent_16__hub_primitives__primitive_wait(__pyx_v_watcher, __pyx_v_timeout, __pyx_v_timeout_exc, __pyx_v_hub); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 294, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":270 - * socket.hub) - * - * def wait_on_watcher(watcher, timeout=None, timeout_exc=_NONE, hub=None): # <<<<<<<<<<<<<< - * """ - * wait(watcher, timeout=None, [timeout_exc=None]) -> None - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__hub_primitives.wait_on_watcher", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_16__hub_primitives_9wait_on_watcher(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_16__hub_primitives_8wait_on_watcher[] = "wait_on_watcher(watcher, timeout=None, timeout_exc=_NONE, WaitOperationsGreenlet hub=None)\n\n wait(watcher, timeout=None, [timeout_exc=None]) -> None\n\n Block the current greenlet until *watcher* is ready.\n\n If *timeout* is non-negative, then *timeout_exc* is raised after\n *timeout* second has passed.\n\n If :func:`cancel_wait` is called on *io* by another greenlet,\n raise an exception in this blocking greenlet\n (``socket.error(EBADF, 'File descriptor was closed in another\n greenlet')`` by default).\n\n :param io: An event loop watcher, most commonly an IO watcher obtained from\n :meth:`gevent.core.loop.io`\n :keyword timeout_exc: The exception to raise if the timeout expires.\n By default, a :class:`socket.timeout` exception is raised.\n If you pass a value for this keyword, it is interpreted as for\n :class:`gevent.timeout.Timeout`.\n\n :raises ~gevent.hub.ConcurrentObjectUseError: If the *watcher* is\n already started.\n "; -static PyMethodDef __pyx_mdef_6gevent_16__hub_primitives_9wait_on_watcher = {"wait_on_watcher", (PyCFunction)__pyx_pw_6gevent_16__hub_primitives_9wait_on_watcher, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_16__hub_primitives_8wait_on_watcher}; -static PyObject *__pyx_pw_6gevent_16__hub_primitives_9wait_on_watcher(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_watcher = 0; - PyObject *__pyx_v_timeout = 0; - PyObject *__pyx_v_timeout_exc = 0; - struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *__pyx_v_hub = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("wait_on_watcher (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_watcher,&__pyx_n_s_timeout,&__pyx_n_s_timeout_exc,&__pyx_n_s_hub,0}; - PyObject* values[4] = {0,0,0,0}; - values[1] = ((PyObject *)Py_None); - values[2] = __pyx_k__3; - values[3] = (PyObject *)((struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_watcher)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeout); - if (value) { values[1] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeout_exc); - if (value) { values[2] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 3: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_hub); - if (value) { values[3] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "wait_on_watcher") < 0)) __PYX_ERR(0, 270, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_watcher = values[0]; - __pyx_v_timeout = values[1]; - __pyx_v_timeout_exc = values[2]; - __pyx_v_hub = ((struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *)values[3]); - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("wait_on_watcher", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 270, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.__hub_primitives.wait_on_watcher", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_hub), __pyx_ptype_6gevent_16__hub_primitives_WaitOperationsGreenlet, 1, "hub", 0))) __PYX_ERR(0, 270, __pyx_L1_error) - __pyx_r = __pyx_pf_6gevent_16__hub_primitives_8wait_on_watcher(__pyx_self, __pyx_v_watcher, __pyx_v_timeout, __pyx_v_timeout_exc, __pyx_v_hub); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = NULL; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_16__hub_primitives_8wait_on_watcher(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_watcher, PyObject *__pyx_v_timeout, PyObject *__pyx_v_timeout_exc, struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *__pyx_v_hub) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - struct __pyx_opt_args_6gevent_16__hub_primitives_wait_on_watcher __pyx_t_2; - __Pyx_RefNannySetupContext("wait_on_watcher", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_2.__pyx_n = 3; - __pyx_t_2.timeout = __pyx_v_timeout; - __pyx_t_2.timeout_exc = __pyx_v_timeout_exc; - __pyx_t_2.hub = __pyx_v_hub; - __pyx_t_1 = __pyx_f_6gevent_16__hub_primitives_wait_on_watcher(__pyx_v_watcher, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 270, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__hub_primitives.wait_on_watcher", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_hub_primitives.py":297 - * - * - * def wait_read(fileno, timeout=None, timeout_exc=_NONE): # <<<<<<<<<<<<<< - * """ - * wait_read(fileno, timeout=None, [timeout_exc=None]) -> None - */ - -static PyObject *__pyx_pw_6gevent_16__hub_primitives_11wait_read(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_f_6gevent_16__hub_primitives_wait_read(PyObject *__pyx_v_fileno, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_16__hub_primitives_wait_read *__pyx_optional_args) { - PyObject *__pyx_v_timeout = ((PyObject *)Py_None); - PyObject *__pyx_v_timeout_exc = __pyx_k__4; - struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_v_hub = NULL; - PyObject *__pyx_v_io = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - struct __pyx_opt_args_6gevent_16__hub_primitives_wait_on_watcher __pyx_t_6; - int __pyx_t_7; - char const *__pyx_t_8; - PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - PyObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; - PyObject *__pyx_t_13 = NULL; - PyObject *__pyx_t_14 = NULL; - __Pyx_RefNannySetupContext("wait_read", 0); - if (__pyx_optional_args) { - if (__pyx_optional_args->__pyx_n > 0) { - __pyx_v_timeout = __pyx_optional_args->timeout; - if (__pyx_optional_args->__pyx_n > 1) { - __pyx_v_timeout_exc = __pyx_optional_args->timeout_exc; - } - } - } - - /* "src/gevent/_hub_primitives.py":308 - * .. seealso:: :func:`cancel_wait` - * """ - * hub = get_hub() # <<<<<<<<<<<<<< - * io = hub.loop.io(fileno, 1) - * try: - */ - __pyx_t_1 = ((PyObject *)__pyx_f_6gevent_11__hub_local_get_hub_noargs(0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 308, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_hub = ((struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":309 - * """ - * hub = get_hub() - * io = hub.loop.io(fileno, 1) # <<<<<<<<<<<<<< - * try: - * return wait_on_watcher(io, timeout, timeout_exc, hub) - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_hub->loop, __pyx_n_s_io); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 309, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - __pyx_t_4 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_4 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_fileno, __pyx_int_1}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 309, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_fileno, __pyx_int_1}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 309, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 309, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (__pyx_t_3) { - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; - } - __Pyx_INCREF(__pyx_v_fileno); - __Pyx_GIVEREF(__pyx_v_fileno); - PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_fileno); - __Pyx_INCREF(__pyx_int_1); - __Pyx_GIVEREF(__pyx_int_1); - PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_int_1); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 309, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_io = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":310 - * hub = get_hub() - * io = hub.loop.io(fileno, 1) - * try: # <<<<<<<<<<<<<< - * return wait_on_watcher(io, timeout, timeout_exc, hub) - * finally: - */ - /*try:*/ { - - /* "src/gevent/_hub_primitives.py":311 - * io = hub.loop.io(fileno, 1) - * try: - * return wait_on_watcher(io, timeout, timeout_exc, hub) # <<<<<<<<<<<<<< - * finally: - * io.close() - */ - __Pyx_XDECREF(__pyx_r); - if (!(likely(((((PyObject *)__pyx_v_hub)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_hub), __pyx_ptype_6gevent_16__hub_primitives_WaitOperationsGreenlet))))) __PYX_ERR(0, 311, __pyx_L4_error) - __pyx_t_6.__pyx_n = 3; - __pyx_t_6.timeout = __pyx_v_timeout; - __pyx_t_6.timeout_exc = __pyx_v_timeout_exc; - __pyx_t_6.hub = ((struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *)__pyx_v_hub); - __pyx_t_1 = __pyx_f_6gevent_16__hub_primitives_wait_on_watcher(__pyx_v_io, 0, &__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 311, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L3_return; - } - - /* "src/gevent/_hub_primitives.py":313 - * return wait_on_watcher(io, timeout, timeout_exc, hub) - * finally: - * io.close() # <<<<<<<<<<<<<< - * - * - */ - /*finally:*/ { - __pyx_L4_error:; - /*exception exit:*/{ - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14); - if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11) < 0)) __Pyx_ErrFetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); - __Pyx_XGOTREF(__pyx_t_9); - __Pyx_XGOTREF(__pyx_t_10); - __Pyx_XGOTREF(__pyx_t_11); - __Pyx_XGOTREF(__pyx_t_12); - __Pyx_XGOTREF(__pyx_t_13); - __Pyx_XGOTREF(__pyx_t_14); - __pyx_t_4 = __pyx_lineno; __pyx_t_7 = __pyx_clineno; __pyx_t_8 = __pyx_filename; - { - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_io, __pyx_n_s_close); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 313, __pyx_L7_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_5) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 313, __pyx_L7_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 313, __pyx_L7_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_12); - __Pyx_XGIVEREF(__pyx_t_13); - __Pyx_XGIVEREF(__pyx_t_14); - __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14); - } - __Pyx_XGIVEREF(__pyx_t_9); - __Pyx_XGIVEREF(__pyx_t_10); - __Pyx_XGIVEREF(__pyx_t_11); - __Pyx_ErrRestore(__pyx_t_9, __pyx_t_10, __pyx_t_11); - __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; - __pyx_lineno = __pyx_t_4; __pyx_clineno = __pyx_t_7; __pyx_filename = __pyx_t_8; - goto __pyx_L1_error; - __pyx_L7_error:; - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_12); - __Pyx_XGIVEREF(__pyx_t_13); - __Pyx_XGIVEREF(__pyx_t_14); - __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14); - } - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; - goto __pyx_L1_error; - } - __pyx_L3_return: { - __pyx_t_14 = __pyx_r; - __pyx_r = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_io, __pyx_n_s_close); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 313, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_5) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 313, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 313, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_14; - __pyx_t_14 = 0; - goto __pyx_L0; - } - } - - /* "src/gevent/_hub_primitives.py":297 - * - * - * def wait_read(fileno, timeout=None, timeout_exc=_NONE): # <<<<<<<<<<<<<< - * """ - * wait_read(fileno, timeout=None, [timeout_exc=None]) -> None - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent.__hub_primitives.wait_read", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_hub); - __Pyx_XDECREF(__pyx_v_io); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_16__hub_primitives_11wait_read(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_16__hub_primitives_10wait_read[] = "wait_read(fileno, timeout=None, timeout_exc=_NONE)\n\n wait_read(fileno, timeout=None, [timeout_exc=None]) -> None\n\n Block the current greenlet until *fileno* is ready to read.\n\n For the meaning of the other parameters and possible exceptions,\n see :func:`wait`.\n\n .. seealso:: :func:`cancel_wait`\n "; -static PyMethodDef __pyx_mdef_6gevent_16__hub_primitives_11wait_read = {"wait_read", (PyCFunction)__pyx_pw_6gevent_16__hub_primitives_11wait_read, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_16__hub_primitives_10wait_read}; -static PyObject *__pyx_pw_6gevent_16__hub_primitives_11wait_read(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_fileno = 0; - PyObject *__pyx_v_timeout = 0; - PyObject *__pyx_v_timeout_exc = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("wait_read (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fileno,&__pyx_n_s_timeout,&__pyx_n_s_timeout_exc,0}; - PyObject* values[3] = {0,0,0}; - values[1] = ((PyObject *)Py_None); - values[2] = __pyx_k__4; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fileno)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeout); - if (value) { values[1] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeout_exc); - if (value) { values[2] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "wait_read") < 0)) __PYX_ERR(0, 297, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_fileno = values[0]; - __pyx_v_timeout = values[1]; - __pyx_v_timeout_exc = values[2]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("wait_read", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 297, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.__hub_primitives.wait_read", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_16__hub_primitives_10wait_read(__pyx_self, __pyx_v_fileno, __pyx_v_timeout, __pyx_v_timeout_exc); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_16__hub_primitives_10wait_read(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fileno, PyObject *__pyx_v_timeout, PyObject *__pyx_v_timeout_exc) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - struct __pyx_opt_args_6gevent_16__hub_primitives_wait_read __pyx_t_2; - __Pyx_RefNannySetupContext("wait_read", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_2.__pyx_n = 2; - __pyx_t_2.timeout = __pyx_v_timeout; - __pyx_t_2.timeout_exc = __pyx_v_timeout_exc; - __pyx_t_1 = __pyx_f_6gevent_16__hub_primitives_wait_read(__pyx_v_fileno, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 297, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__hub_primitives.wait_read", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_hub_primitives.py":316 - * - * - * def wait_write(fileno, timeout=None, timeout_exc=_NONE, event=_NONE): # <<<<<<<<<<<<<< - * """ - * wait_write(fileno, timeout=None, [timeout_exc=None]) -> None - */ - -static PyObject *__pyx_pw_6gevent_16__hub_primitives_13wait_write(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_f_6gevent_16__hub_primitives_wait_write(PyObject *__pyx_v_fileno, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_16__hub_primitives_wait_write *__pyx_optional_args) { - PyObject *__pyx_v_timeout = ((PyObject *)Py_None); - PyObject *__pyx_v_timeout_exc = __pyx_k__5; - struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_v_hub = NULL; - PyObject *__pyx_v_io = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - struct __pyx_opt_args_6gevent_16__hub_primitives_wait_on_watcher __pyx_t_6; - int __pyx_t_7; - char const *__pyx_t_8; - PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - PyObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; - PyObject *__pyx_t_13 = NULL; - PyObject *__pyx_t_14 = NULL; - __Pyx_RefNannySetupContext("wait_write", 0); - if (__pyx_optional_args) { - if (__pyx_optional_args->__pyx_n > 0) { - __pyx_v_timeout = __pyx_optional_args->timeout; - if (__pyx_optional_args->__pyx_n > 1) { - __pyx_v_timeout_exc = __pyx_optional_args->timeout_exc; - } - } - } - - /* "src/gevent/_hub_primitives.py":332 - * """ - * # pylint:disable=unused-argument - * hub = get_hub() # <<<<<<<<<<<<<< - * io = hub.loop.io(fileno, 2) - * try: - */ - __pyx_t_1 = ((PyObject *)__pyx_f_6gevent_11__hub_local_get_hub_noargs(0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 332, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_hub = ((struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":333 - * # pylint:disable=unused-argument - * hub = get_hub() - * io = hub.loop.io(fileno, 2) # <<<<<<<<<<<<<< - * try: - * return wait_on_watcher(io, timeout, timeout_exc, hub) - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_hub->loop, __pyx_n_s_io); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 333, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - __pyx_t_4 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_4 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_fileno, __pyx_int_2}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 333, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_fileno, __pyx_int_2}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 333, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 333, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (__pyx_t_3) { - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; - } - __Pyx_INCREF(__pyx_v_fileno); - __Pyx_GIVEREF(__pyx_v_fileno); - PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_fileno); - __Pyx_INCREF(__pyx_int_2); - __Pyx_GIVEREF(__pyx_int_2); - PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_int_2); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 333, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_io = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":334 - * hub = get_hub() - * io = hub.loop.io(fileno, 2) - * try: # <<<<<<<<<<<<<< - * return wait_on_watcher(io, timeout, timeout_exc, hub) - * finally: - */ - /*try:*/ { - - /* "src/gevent/_hub_primitives.py":335 - * io = hub.loop.io(fileno, 2) - * try: - * return wait_on_watcher(io, timeout, timeout_exc, hub) # <<<<<<<<<<<<<< - * finally: - * io.close() - */ - __Pyx_XDECREF(__pyx_r); - if (!(likely(((((PyObject *)__pyx_v_hub)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_hub), __pyx_ptype_6gevent_16__hub_primitives_WaitOperationsGreenlet))))) __PYX_ERR(0, 335, __pyx_L4_error) - __pyx_t_6.__pyx_n = 3; - __pyx_t_6.timeout = __pyx_v_timeout; - __pyx_t_6.timeout_exc = __pyx_v_timeout_exc; - __pyx_t_6.hub = ((struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *)__pyx_v_hub); - __pyx_t_1 = __pyx_f_6gevent_16__hub_primitives_wait_on_watcher(__pyx_v_io, 0, &__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 335, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L3_return; - } - - /* "src/gevent/_hub_primitives.py":337 - * return wait_on_watcher(io, timeout, timeout_exc, hub) - * finally: - * io.close() # <<<<<<<<<<<<<< - * - * - */ - /*finally:*/ { - __pyx_L4_error:; - /*exception exit:*/{ - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14); - if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11) < 0)) __Pyx_ErrFetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); - __Pyx_XGOTREF(__pyx_t_9); - __Pyx_XGOTREF(__pyx_t_10); - __Pyx_XGOTREF(__pyx_t_11); - __Pyx_XGOTREF(__pyx_t_12); - __Pyx_XGOTREF(__pyx_t_13); - __Pyx_XGOTREF(__pyx_t_14); - __pyx_t_4 = __pyx_lineno; __pyx_t_7 = __pyx_clineno; __pyx_t_8 = __pyx_filename; - { - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_io, __pyx_n_s_close); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 337, __pyx_L7_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_5) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 337, __pyx_L7_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 337, __pyx_L7_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_12); - __Pyx_XGIVEREF(__pyx_t_13); - __Pyx_XGIVEREF(__pyx_t_14); - __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14); - } - __Pyx_XGIVEREF(__pyx_t_9); - __Pyx_XGIVEREF(__pyx_t_10); - __Pyx_XGIVEREF(__pyx_t_11); - __Pyx_ErrRestore(__pyx_t_9, __pyx_t_10, __pyx_t_11); - __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; - __pyx_lineno = __pyx_t_4; __pyx_clineno = __pyx_t_7; __pyx_filename = __pyx_t_8; - goto __pyx_L1_error; - __pyx_L7_error:; - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_12); - __Pyx_XGIVEREF(__pyx_t_13); - __Pyx_XGIVEREF(__pyx_t_14); - __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14); - } - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; - goto __pyx_L1_error; - } - __pyx_L3_return: { - __pyx_t_14 = __pyx_r; - __pyx_r = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_io, __pyx_n_s_close); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 337, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_5) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 337, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 337, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_14; - __pyx_t_14 = 0; - goto __pyx_L0; - } - } - - /* "src/gevent/_hub_primitives.py":316 - * - * - * def wait_write(fileno, timeout=None, timeout_exc=_NONE, event=_NONE): # <<<<<<<<<<<<<< - * """ - * wait_write(fileno, timeout=None, [timeout_exc=None]) -> None - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent.__hub_primitives.wait_write", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_hub); - __Pyx_XDECREF(__pyx_v_io); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_16__hub_primitives_13wait_write(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_16__hub_primitives_12wait_write[] = "wait_write(fileno, timeout=None, timeout_exc=_NONE, event=_NONE)\n\n wait_write(fileno, timeout=None, [timeout_exc=None]) -> None\n\n Block the current greenlet until *fileno* is ready to write.\n\n For the meaning of the other parameters and possible exceptions,\n see :func:`wait`.\n\n .. deprecated:: 1.1\n The keyword argument *event* is ignored. Applications should not pass this parameter.\n In the future, doing so will become an error.\n\n .. seealso:: :func:`cancel_wait`\n "; -static PyMethodDef __pyx_mdef_6gevent_16__hub_primitives_13wait_write = {"wait_write", (PyCFunction)__pyx_pw_6gevent_16__hub_primitives_13wait_write, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_16__hub_primitives_12wait_write}; -static PyObject *__pyx_pw_6gevent_16__hub_primitives_13wait_write(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_fileno = 0; - PyObject *__pyx_v_timeout = 0; - PyObject *__pyx_v_timeout_exc = 0; - PyObject *__pyx_v_event = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("wait_write (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fileno,&__pyx_n_s_timeout,&__pyx_n_s_timeout_exc,&__pyx_n_s_event,0}; - PyObject* values[4] = {0,0,0,0}; - values[1] = ((PyObject *)Py_None); - values[2] = __pyx_k__5; - values[3] = __pyx_k__6; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fileno)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeout); - if (value) { values[1] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeout_exc); - if (value) { values[2] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 3: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_event); - if (value) { values[3] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "wait_write") < 0)) __PYX_ERR(0, 316, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_fileno = values[0]; - __pyx_v_timeout = values[1]; - __pyx_v_timeout_exc = values[2]; - __pyx_v_event = values[3]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("wait_write", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 316, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.__hub_primitives.wait_write", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_16__hub_primitives_12wait_write(__pyx_self, __pyx_v_fileno, __pyx_v_timeout, __pyx_v_timeout_exc, __pyx_v_event); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_16__hub_primitives_12wait_write(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fileno, PyObject *__pyx_v_timeout, PyObject *__pyx_v_timeout_exc, PyObject *__pyx_v_event) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - struct __pyx_opt_args_6gevent_16__hub_primitives_wait_write __pyx_t_2; - __Pyx_RefNannySetupContext("wait_write", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_2.__pyx_n = 3; - __pyx_t_2.timeout = __pyx_v_timeout; - __pyx_t_2.timeout_exc = __pyx_v_timeout_exc; - __pyx_t_2.event = __pyx_v_event; - __pyx_t_1 = __pyx_f_6gevent_16__hub_primitives_wait_write(__pyx_v_fileno, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 316, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__hub_primitives.wait_write", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_hub_primitives.py":340 - * - * - * def wait_readwrite(fileno, timeout=None, timeout_exc=_NONE, event=_NONE): # <<<<<<<<<<<<<< - * """ - * wait_readwrite(fileno, timeout=None, [timeout_exc=None]) -> None - */ - -static PyObject *__pyx_pw_6gevent_16__hub_primitives_15wait_readwrite(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_f_6gevent_16__hub_primitives_wait_readwrite(PyObject *__pyx_v_fileno, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_16__hub_primitives_wait_readwrite *__pyx_optional_args) { - PyObject *__pyx_v_timeout = ((PyObject *)Py_None); - PyObject *__pyx_v_timeout_exc = __pyx_k__7; - struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_v_hub = NULL; - PyObject *__pyx_v_io = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - struct __pyx_opt_args_6gevent_16__hub_primitives_wait_on_watcher __pyx_t_6; - int __pyx_t_7; - char const *__pyx_t_8; - PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - PyObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; - PyObject *__pyx_t_13 = NULL; - PyObject *__pyx_t_14 = NULL; - __Pyx_RefNannySetupContext("wait_readwrite", 0); - if (__pyx_optional_args) { - if (__pyx_optional_args->__pyx_n > 0) { - __pyx_v_timeout = __pyx_optional_args->timeout; - if (__pyx_optional_args->__pyx_n > 1) { - __pyx_v_timeout_exc = __pyx_optional_args->timeout_exc; - } - } - } - - /* "src/gevent/_hub_primitives.py":357 - * """ - * # pylint:disable=unused-argument - * hub = get_hub() # <<<<<<<<<<<<<< - * io = hub.loop.io(fileno, 3) - * try: - */ - __pyx_t_1 = ((PyObject *)__pyx_f_6gevent_11__hub_local_get_hub_noargs(0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 357, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_hub = ((struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":358 - * # pylint:disable=unused-argument - * hub = get_hub() - * io = hub.loop.io(fileno, 3) # <<<<<<<<<<<<<< - * try: - * return wait_on_watcher(io, timeout, timeout_exc, hub) - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_hub->loop, __pyx_n_s_io); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 358, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - __pyx_t_4 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_4 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_fileno, __pyx_int_3}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 358, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_fileno, __pyx_int_3}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 358, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 358, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (__pyx_t_3) { - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; - } - __Pyx_INCREF(__pyx_v_fileno); - __Pyx_GIVEREF(__pyx_v_fileno); - PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_fileno); - __Pyx_INCREF(__pyx_int_3); - __Pyx_GIVEREF(__pyx_int_3); - PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_int_3); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 358, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_io = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":359 - * hub = get_hub() - * io = hub.loop.io(fileno, 3) - * try: # <<<<<<<<<<<<<< - * return wait_on_watcher(io, timeout, timeout_exc, hub) - * finally: - */ - /*try:*/ { - - /* "src/gevent/_hub_primitives.py":360 - * io = hub.loop.io(fileno, 3) - * try: - * return wait_on_watcher(io, timeout, timeout_exc, hub) # <<<<<<<<<<<<<< - * finally: - * io.close() - */ - __Pyx_XDECREF(__pyx_r); - if (!(likely(((((PyObject *)__pyx_v_hub)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_hub), __pyx_ptype_6gevent_16__hub_primitives_WaitOperationsGreenlet))))) __PYX_ERR(0, 360, __pyx_L4_error) - __pyx_t_6.__pyx_n = 3; - __pyx_t_6.timeout = __pyx_v_timeout; - __pyx_t_6.timeout_exc = __pyx_v_timeout_exc; - __pyx_t_6.hub = ((struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *)__pyx_v_hub); - __pyx_t_1 = __pyx_f_6gevent_16__hub_primitives_wait_on_watcher(__pyx_v_io, 0, &__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 360, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L3_return; - } - - /* "src/gevent/_hub_primitives.py":362 - * return wait_on_watcher(io, timeout, timeout_exc, hub) - * finally: - * io.close() # <<<<<<<<<<<<<< - * - * - */ - /*finally:*/ { - __pyx_L4_error:; - /*exception exit:*/{ - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14); - if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11) < 0)) __Pyx_ErrFetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); - __Pyx_XGOTREF(__pyx_t_9); - __Pyx_XGOTREF(__pyx_t_10); - __Pyx_XGOTREF(__pyx_t_11); - __Pyx_XGOTREF(__pyx_t_12); - __Pyx_XGOTREF(__pyx_t_13); - __Pyx_XGOTREF(__pyx_t_14); - __pyx_t_4 = __pyx_lineno; __pyx_t_7 = __pyx_clineno; __pyx_t_8 = __pyx_filename; - { - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_io, __pyx_n_s_close); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 362, __pyx_L7_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_5) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 362, __pyx_L7_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 362, __pyx_L7_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_12); - __Pyx_XGIVEREF(__pyx_t_13); - __Pyx_XGIVEREF(__pyx_t_14); - __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14); - } - __Pyx_XGIVEREF(__pyx_t_9); - __Pyx_XGIVEREF(__pyx_t_10); - __Pyx_XGIVEREF(__pyx_t_11); - __Pyx_ErrRestore(__pyx_t_9, __pyx_t_10, __pyx_t_11); - __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; - __pyx_lineno = __pyx_t_4; __pyx_clineno = __pyx_t_7; __pyx_filename = __pyx_t_8; - goto __pyx_L1_error; - __pyx_L7_error:; - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_12); - __Pyx_XGIVEREF(__pyx_t_13); - __Pyx_XGIVEREF(__pyx_t_14); - __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14); - } - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; - goto __pyx_L1_error; - } - __pyx_L3_return: { - __pyx_t_14 = __pyx_r; - __pyx_r = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_io, __pyx_n_s_close); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 362, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_5) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 362, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 362, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_14; - __pyx_t_14 = 0; - goto __pyx_L0; - } - } - - /* "src/gevent/_hub_primitives.py":340 - * - * - * def wait_readwrite(fileno, timeout=None, timeout_exc=_NONE, event=_NONE): # <<<<<<<<<<<<<< - * """ - * wait_readwrite(fileno, timeout=None, [timeout_exc=None]) -> None - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent.__hub_primitives.wait_readwrite", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_hub); - __Pyx_XDECREF(__pyx_v_io); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_16__hub_primitives_15wait_readwrite(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_16__hub_primitives_14wait_readwrite[] = "wait_readwrite(fileno, timeout=None, timeout_exc=_NONE, event=_NONE)\n\n wait_readwrite(fileno, timeout=None, [timeout_exc=None]) -> None\n\n Block the current greenlet until *fileno* is ready to read or\n write.\n\n For the meaning of the other parameters and possible exceptions,\n see :func:`wait`.\n\n .. deprecated:: 1.1\n The keyword argument *event* is ignored. Applications should not pass this parameter.\n In the future, doing so will become an error.\n\n .. seealso:: :func:`cancel_wait`\n "; -static PyMethodDef __pyx_mdef_6gevent_16__hub_primitives_15wait_readwrite = {"wait_readwrite", (PyCFunction)__pyx_pw_6gevent_16__hub_primitives_15wait_readwrite, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_16__hub_primitives_14wait_readwrite}; -static PyObject *__pyx_pw_6gevent_16__hub_primitives_15wait_readwrite(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_fileno = 0; - PyObject *__pyx_v_timeout = 0; - PyObject *__pyx_v_timeout_exc = 0; - PyObject *__pyx_v_event = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("wait_readwrite (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fileno,&__pyx_n_s_timeout,&__pyx_n_s_timeout_exc,&__pyx_n_s_event,0}; - PyObject* values[4] = {0,0,0,0}; - values[1] = ((PyObject *)Py_None); - values[2] = __pyx_k__7; - values[3] = __pyx_k__8; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fileno)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeout); - if (value) { values[1] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeout_exc); - if (value) { values[2] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 3: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_event); - if (value) { values[3] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "wait_readwrite") < 0)) __PYX_ERR(0, 340, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_fileno = values[0]; - __pyx_v_timeout = values[1]; - __pyx_v_timeout_exc = values[2]; - __pyx_v_event = values[3]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("wait_readwrite", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 340, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.__hub_primitives.wait_readwrite", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_16__hub_primitives_14wait_readwrite(__pyx_self, __pyx_v_fileno, __pyx_v_timeout, __pyx_v_timeout_exc, __pyx_v_event); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_16__hub_primitives_14wait_readwrite(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fileno, PyObject *__pyx_v_timeout, PyObject *__pyx_v_timeout_exc, PyObject *__pyx_v_event) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - struct __pyx_opt_args_6gevent_16__hub_primitives_wait_readwrite __pyx_t_2; - __Pyx_RefNannySetupContext("wait_readwrite", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_2.__pyx_n = 3; - __pyx_t_2.timeout = __pyx_v_timeout; - __pyx_t_2.timeout_exc = __pyx_v_timeout_exc; - __pyx_t_2.event = __pyx_v_event; - __pyx_t_1 = __pyx_f_6gevent_16__hub_primitives_wait_readwrite(__pyx_v_fileno, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 340, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__hub_primitives.wait_readwrite", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_hub_primitives.py":365 - * - * - * def _init(): # <<<<<<<<<<<<<< - * greenlet_init() # pylint:disable=undefined-variable - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_16__hub_primitives_17_init(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_16__hub_primitives_16_init[] = "_init()"; -static PyMethodDef __pyx_mdef_6gevent_16__hub_primitives_17_init = {"_init", (PyCFunction)__pyx_pw_6gevent_16__hub_primitives_17_init, METH_NOARGS, __pyx_doc_6gevent_16__hub_primitives_16_init}; -static PyObject *__pyx_pw_6gevent_16__hub_primitives_17_init(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_init (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_16__hub_primitives_16_init(__pyx_self); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_16__hub_primitives_16_init(CYTHON_UNUSED PyObject *__pyx_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_init", 0); - - /* "src/gevent/_hub_primitives.py":366 - * - * def _init(): - * greenlet_init() # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * - * _init() - */ - __pyx_f_6gevent_16__hub_primitives_greenlet_init(); - - /* "src/gevent/_hub_primitives.py":365 - * - * - * def _init(): # <<<<<<<<<<<<<< - * greenlet_init() # pylint:disable=undefined-variable - * - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__greenlet_primitives.pxd":23 - * - * @cython.final - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - -static CYTHON_INLINE PyGreenlet *__pyx_f_6gevent_21__greenlet_primitives_getcurrent(void) { - PyGreenlet *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("getcurrent", 0); - - /* "gevent/__greenlet_primitives.pxd":24 - * @cython.final - * cdef inline greenlet getcurrent(): - * return PyGreenlet_GetCurrent() # <<<<<<<<<<<<<< - * - * cdef bint _greenlet_imported - */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __pyx_t_1 = ((PyObject *)PyGreenlet_GetCurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 24, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = ((PyGreenlet *)__pyx_t_1); - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "gevent/__greenlet_primitives.pxd":23 - * - * @cython.final - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__greenlet_primitives.getcurrent", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__greenlet_primitives.pxd":28 - * cdef bint _greenlet_imported - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - -static CYTHON_INLINE void __pyx_f_6gevent_21__greenlet_primitives_greenlet_init(void) { - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("greenlet_init", 0); - - /* "gevent/__greenlet_primitives.pxd":30 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - __pyx_t_1 = ((!(__pyx_v_6gevent_21__greenlet_primitives__greenlet_imported != 0)) != 0); - if (__pyx_t_1) { - - /* "gevent/__greenlet_primitives.pxd":31 - * global _greenlet_imported - * if not _greenlet_imported: - * PyGreenlet_Import() # <<<<<<<<<<<<<< - * _greenlet_imported = True - * - */ - PyGreenlet_Import(); - - /* "gevent/__greenlet_primitives.pxd":32 - * if not _greenlet_imported: - * PyGreenlet_Import() - * _greenlet_imported = True # <<<<<<<<<<<<<< - * - * cdef inline object _greenlet_switch(greenlet self): - */ - __pyx_v_6gevent_21__greenlet_primitives__greenlet_imported = 1; - - /* "gevent/__greenlet_primitives.pxd":30 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - } - - /* "gevent/__greenlet_primitives.pxd":28 - * cdef bint _greenlet_imported - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -/* "gevent/__greenlet_primitives.pxd":34 - * _greenlet_imported = True - * - * cdef inline object _greenlet_switch(greenlet self): # <<<<<<<<<<<<<< - * return PyGreenlet_Switch(self, NULL, NULL) - * - */ - -static CYTHON_INLINE PyObject *__pyx_f_6gevent_21__greenlet_primitives__greenlet_switch(PyGreenlet *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_greenlet_switch", 0); - - /* "gevent/__greenlet_primitives.pxd":35 - * - * cdef inline object _greenlet_switch(greenlet self): - * return PyGreenlet_Switch(self, NULL, NULL) # <<<<<<<<<<<<<< - * - * cdef class TrackedRawGreenlet(greenlet): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyGreenlet_Switch(__pyx_v_self, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 35, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "gevent/__greenlet_primitives.pxd":34 - * _greenlet_imported = True - * - * cdef inline object _greenlet_switch(greenlet self): # <<<<<<<<<<<<<< - * return PyGreenlet_Switch(self, NULL, NULL) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__greenlet_primitives._greenlet_switch", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__waiter.pxd":24 - * void PyGreenlet_Import() - * - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - -static CYTHON_INLINE PyGreenlet *__pyx_f_6gevent_8__waiter_getcurrent(void) { - PyGreenlet *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("getcurrent", 0); - - /* "gevent/__waiter.pxd":25 - * - * cdef inline greenlet getcurrent(): - * return PyGreenlet_GetCurrent() # <<<<<<<<<<<<<< - * - * cdef inline void greenlet_init(): - */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __pyx_t_1 = ((PyObject *)PyGreenlet_GetCurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 25, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = ((PyGreenlet *)__pyx_t_1); - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "gevent/__waiter.pxd":24 - * void PyGreenlet_Import() - * - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__waiter.getcurrent", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__waiter.pxd":27 - * return PyGreenlet_GetCurrent() - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - -static CYTHON_INLINE void __pyx_f_6gevent_8__waiter_greenlet_init(void) { - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("greenlet_init", 0); - - /* "gevent/__waiter.pxd":29 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - __pyx_t_1 = ((!(__pyx_v_6gevent_8__waiter__greenlet_imported != 0)) != 0); - if (__pyx_t_1) { - - /* "gevent/__waiter.pxd":30 - * global _greenlet_imported - * if not _greenlet_imported: - * PyGreenlet_Import() # <<<<<<<<<<<<<< - * _greenlet_imported = True - * - */ - PyGreenlet_Import(); - - /* "gevent/__waiter.pxd":31 - * if not _greenlet_imported: - * PyGreenlet_Import() - * _greenlet_imported = True # <<<<<<<<<<<<<< - * - * cdef class Waiter: - */ - __pyx_v_6gevent_8__waiter__greenlet_imported = 1; - - /* "gevent/__waiter.pxd":29 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - } - - /* "gevent/__waiter.pxd":27 - * return PyGreenlet_GetCurrent() - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -/* "gevent/__hub_primitives.pxd":29 - * - * @cython.final - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - -static CYTHON_INLINE PyGreenlet *__pyx_f_6gevent_16__hub_primitives_getcurrent(void) { - PyGreenlet *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("getcurrent", 0); - - /* "gevent/__hub_primitives.pxd":30 - * @cython.final - * cdef inline greenlet getcurrent(): - * return PyGreenlet_GetCurrent() # <<<<<<<<<<<<<< - * - * cdef bint _greenlet_imported - */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __pyx_t_1 = ((PyObject *)PyGreenlet_GetCurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 30, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = ((PyGreenlet *)__pyx_t_1); - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "gevent/__hub_primitives.pxd":29 - * - * @cython.final - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__hub_primitives.getcurrent", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__hub_primitives.pxd":34 - * cdef bint _greenlet_imported - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - -static CYTHON_INLINE void __pyx_f_6gevent_16__hub_primitives_greenlet_init(void) { - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("greenlet_init", 0); - - /* "gevent/__hub_primitives.pxd":36 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - __pyx_t_1 = ((!(__pyx_v_6gevent_16__hub_primitives__greenlet_imported != 0)) != 0); - if (__pyx_t_1) { - - /* "gevent/__hub_primitives.pxd":37 - * global _greenlet_imported - * if not _greenlet_imported: - * PyGreenlet_Import() # <<<<<<<<<<<<<< - * _greenlet_imported = True - * - */ - PyGreenlet_Import(); - - /* "gevent/__hub_primitives.pxd":38 - * if not _greenlet_imported: - * PyGreenlet_Import() - * _greenlet_imported = True # <<<<<<<<<<<<<< - * - * - */ - __pyx_v_6gevent_16__hub_primitives__greenlet_imported = 1; - - /* "gevent/__hub_primitives.pxd":36 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - } - - /* "gevent/__hub_primitives.pxd":34 - * cdef bint _greenlet_imported - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} -static struct __pyx_vtabstruct_6gevent_16__hub_primitives_WaitOperationsGreenlet __pyx_vtable_6gevent_16__hub_primitives_WaitOperationsGreenlet; - -static PyObject *__pyx_tp_new_6gevent_16__hub_primitives_WaitOperationsGreenlet(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *p; - PyObject *o = __pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop->tp_new(t, a, k); - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *)o); - p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop*)__pyx_vtabptr_6gevent_16__hub_primitives_WaitOperationsGreenlet; - return o; -} - -static void __pyx_tp_dealloc_6gevent_16__hub_primitives_WaitOperationsGreenlet(PyObject *o) { - #if CYTHON_USE_TP_FINALIZE - if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - #endif - PyObject_GC_UnTrack(o); - PyObject_GC_Track(o); - if (likely(__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop)) __pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop->tp_dealloc(o); else __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_6gevent_16__hub_primitives_WaitOperationsGreenlet); -} - -static int __pyx_tp_traverse_6gevent_16__hub_primitives_WaitOperationsGreenlet(PyObject *o, visitproc v, void *a) { - int e; - e = ((likely(__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop)) ? ((__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop->tp_traverse) ? __pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_6gevent_16__hub_primitives_WaitOperationsGreenlet)); if (e) return e; - return 0; -} - -static int __pyx_tp_clear_6gevent_16__hub_primitives_WaitOperationsGreenlet(PyObject *o) { - if (likely(__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop)) { if (__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop->tp_clear) __pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_6gevent_16__hub_primitives_WaitOperationsGreenlet); - return 0; -} - -static PyMethodDef __pyx_methods_6gevent_16__hub_primitives_WaitOperationsGreenlet[] = { - {0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_16__hub_primitives_WaitOperationsGreenlet = { - PyVarObject_HEAD_INIT(0, 0) - "gevent.__hub_primitives.WaitOperationsGreenlet", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_16__hub_primitives_WaitOperationsGreenlet, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - 0, /*tp_doc*/ - __pyx_tp_traverse_6gevent_16__hub_primitives_WaitOperationsGreenlet, /*tp_traverse*/ - __pyx_tp_clear_6gevent_16__hub_primitives_WaitOperationsGreenlet, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_16__hub_primitives_WaitOperationsGreenlet, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - 0, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_16__hub_primitives_WaitOperationsGreenlet, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; -static struct __pyx_vtabstruct_6gevent_16__hub_primitives__WaitIterator __pyx_vtable_6gevent_16__hub_primitives__WaitIterator; - -static PyObject *__pyx_tp_new_6gevent_16__hub_primitives__WaitIterator(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - struct __pyx_obj_6gevent_16__hub_primitives__WaitIterator *p; - PyObject *o; - if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { - o = (*t->tp_alloc)(t, 0); - } else { - o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); - } - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_16__hub_primitives__WaitIterator *)o); - p->__pyx_vtab = __pyx_vtabptr_6gevent_16__hub_primitives__WaitIterator; - p->_hub = ((struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *)Py_None); Py_INCREF(Py_None); - p->_waiter = ((struct __pyx_obj_6gevent_8__waiter_MultipleWaiter *)Py_None); Py_INCREF(Py_None); - p->_switch = Py_None; Py_INCREF(Py_None); - p->_timeout = Py_None; Py_INCREF(Py_None); - p->_objects = Py_None; Py_INCREF(Py_None); - p->_timer = Py_None; Py_INCREF(Py_None); - return o; -} - -static void __pyx_tp_dealloc_6gevent_16__hub_primitives__WaitIterator(PyObject *o) { - struct __pyx_obj_6gevent_16__hub_primitives__WaitIterator *p = (struct __pyx_obj_6gevent_16__hub_primitives__WaitIterator *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - #endif - PyObject_GC_UnTrack(o); - Py_CLEAR(p->_hub); - Py_CLEAR(p->_waiter); - Py_CLEAR(p->_switch); - Py_CLEAR(p->_timeout); - Py_CLEAR(p->_objects); - Py_CLEAR(p->_timer); - (*Py_TYPE(o)->tp_free)(o); -} - -static int __pyx_tp_traverse_6gevent_16__hub_primitives__WaitIterator(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_6gevent_16__hub_primitives__WaitIterator *p = (struct __pyx_obj_6gevent_16__hub_primitives__WaitIterator *)o; - if (p->_hub) { - e = (*v)(((PyObject *)p->_hub), a); if (e) return e; - } - if (p->_waiter) { - e = (*v)(((PyObject *)p->_waiter), a); if (e) return e; - } - if (p->_switch) { - e = (*v)(p->_switch, a); if (e) return e; - } - if (p->_timeout) { - e = (*v)(p->_timeout, a); if (e) return e; - } - if (p->_objects) { - e = (*v)(p->_objects, a); if (e) return e; - } - if (p->_timer) { - e = (*v)(p->_timer, a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_6gevent_16__hub_primitives__WaitIterator(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_6gevent_16__hub_primitives__WaitIterator *p = (struct __pyx_obj_6gevent_16__hub_primitives__WaitIterator *)o; - tmp = ((PyObject*)p->_hub); - p->_hub = ((struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->_waiter); - p->_waiter = ((struct __pyx_obj_6gevent_8__waiter_MultipleWaiter *)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->_switch); - p->_switch = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->_timeout); - p->_timeout = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->_objects); - p->_objects = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->_timer); - p->_timer = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyMethodDef __pyx_methods_6gevent_16__hub_primitives__WaitIterator[] = { - {"__next__", (PyCFunction)__pyx_pw_6gevent_16__hub_primitives_13_WaitIterator_5__next__, METH_NOARGS|METH_COEXIST, 0}, - {0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_16__hub_primitives__WaitIterator = { - PyVarObject_HEAD_INIT(0, 0) - "gevent.__hub_primitives._WaitIterator", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_16__hub_primitives__WaitIterator), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_16__hub_primitives__WaitIterator, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "_WaitIterator(objects, hub, timeout, count)", /*tp_doc*/ - __pyx_tp_traverse_6gevent_16__hub_primitives__WaitIterator, /*tp_traverse*/ - __pyx_tp_clear_6gevent_16__hub_primitives__WaitIterator, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - __pyx_pw_6gevent_16__hub_primitives_13_WaitIterator_3__iter__, /*tp_iter*/ - __pyx_pw_6gevent_16__hub_primitives_13_WaitIterator_5__next__, /*tp_iternext*/ - __pyx_methods_6gevent_16__hub_primitives__WaitIterator, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_16__hub_primitives_13_WaitIterator_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_16__hub_primitives__WaitIterator, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; - -static PyMethodDef __pyx_methods[] = { - {0, 0, 0, 0} -}; - -#if PY_MAJOR_VERSION >= 3 -#if CYTHON_PEP489_MULTI_PHASE_INIT -static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ -static int __pyx_pymod_exec___hub_primitives(PyObject* module); /*proto*/ -static PyModuleDef_Slot __pyx_moduledef_slots[] = { - {Py_mod_create, (void*)__pyx_pymod_create}, - {Py_mod_exec, (void*)__pyx_pymod_exec___hub_primitives}, - {0, NULL} -}; -#endif - -static struct PyModuleDef __pyx_moduledef = { - PyModuleDef_HEAD_INIT, - "__hub_primitives", - __pyx_k_A_collection_of_primitives_used, /* m_doc */ - #if CYTHON_PEP489_MULTI_PHASE_INIT - 0, /* m_size */ - #else - -1, /* m_size */ - #endif - __pyx_methods /* m_methods */, - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_moduledef_slots, /* m_slots */ - #else - NULL, /* m_reload */ - #endif - NULL, /* m_traverse */ - NULL, /* m_clear */ - NULL /* m_free */ -}; -#endif - -static __Pyx_StringTabEntry __pyx_string_tab[] = { - {&__pyx_n_s_ConcurrentObjectUseError, __pyx_k_ConcurrentObjectUseError, sizeof(__pyx_k_ConcurrentObjectUseError), 0, 0, 1, 1}, - {&__pyx_n_s_InvalidSwitchError, __pyx_k_InvalidSwitchError, sizeof(__pyx_k_InvalidSwitchError), 0, 0, 1, 1}, - {&__pyx_kp_s_Invalid_switch_into_s_r_expected, __pyx_k_Invalid_switch_into_s_r_expected, sizeof(__pyx_k_Invalid_switch_into_s_r_expected), 0, 0, 1, 0}, - {&__pyx_n_s_MultipleWaiter, __pyx_k_MultipleWaiter, sizeof(__pyx_k_MultipleWaiter), 0, 0, 1, 1}, - {&__pyx_n_s_NONE, __pyx_k_NONE, sizeof(__pyx_k_NONE), 0, 0, 1, 1}, - {&__pyx_n_s_StopIteration, __pyx_k_StopIteration, sizeof(__pyx_k_StopIteration), 0, 0, 1, 1}, - {&__pyx_n_s_SwitchOutGreenletWithLoop, __pyx_k_SwitchOutGreenletWithLoop, sizeof(__pyx_k_SwitchOutGreenletWithLoop), 0, 0, 1, 1}, - {&__pyx_kp_s_This_socket_is_already_used_by_a, __pyx_k_This_socket_is_already_used_by_a, sizeof(__pyx_k_This_socket_is_already_used_by_a), 0, 0, 1, 0}, - {&__pyx_n_s_Timeout, __pyx_k_Timeout, sizeof(__pyx_k_Timeout), 0, 0, 1, 1}, - {&__pyx_n_s_WaitOperationsGreenlet, __pyx_k_WaitOperationsGreenlet, sizeof(__pyx_k_WaitOperationsGreenlet), 0, 0, 1, 1}, - {&__pyx_n_s_WaitOperationsGreenlet__cancel_w, __pyx_k_WaitOperationsGreenlet__cancel_w, sizeof(__pyx_k_WaitOperationsGreenlet__cancel_w), 0, 0, 1, 1}, - {&__pyx_n_s_WaitOperationsGreenlet_cancel_wa, __pyx_k_WaitOperationsGreenlet_cancel_wa, sizeof(__pyx_k_WaitOperationsGreenlet_cancel_wa), 0, 0, 1, 1}, - {&__pyx_n_s_WaitOperationsGreenlet_wait, __pyx_k_WaitOperationsGreenlet_wait, sizeof(__pyx_k_WaitOperationsGreenlet_wait), 0, 0, 1, 1}, - {&__pyx_n_s_Waiter, __pyx_k_Waiter, sizeof(__pyx_k_Waiter), 0, 0, 1, 1}, - {&__pyx_n_s_active, __pyx_k_active, sizeof(__pyx_k_active), 0, 0, 1, 1}, - {&__pyx_n_s_all, __pyx_k_all, sizeof(__pyx_k_all), 0, 0, 1, 1}, - {&__pyx_n_s_callback, __pyx_k_callback, sizeof(__pyx_k_callback), 0, 0, 1, 1}, - {&__pyx_n_s_cancel_wait, __pyx_k_cancel_wait, sizeof(__pyx_k_cancel_wait), 0, 0, 1, 1}, - {&__pyx_n_s_cancel_wait_2, __pyx_k_cancel_wait_2, sizeof(__pyx_k_cancel_wait_2), 0, 0, 1, 1}, - {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, - {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1}, - {&__pyx_n_s_close_watcher, __pyx_k_close_watcher, sizeof(__pyx_k_close_watcher), 0, 0, 1, 1}, - {&__pyx_n_s_count, __pyx_k_count, sizeof(__pyx_k_count), 0, 0, 1, 1}, - {&__pyx_n_s_e, __pyx_k_e, sizeof(__pyx_k_e), 0, 0, 1, 1}, - {&__pyx_n_s_enter, __pyx_k_enter, sizeof(__pyx_k_enter), 0, 0, 1, 1}, - {&__pyx_n_s_error, __pyx_k_error, sizeof(__pyx_k_error), 0, 0, 1, 1}, - {&__pyx_n_s_event, __pyx_k_event, sizeof(__pyx_k_event), 0, 0, 1, 1}, - {&__pyx_n_s_exit, __pyx_k_exit, sizeof(__pyx_k_exit), 0, 0, 1, 1}, - {&__pyx_n_s_fileno, __pyx_k_fileno, sizeof(__pyx_k_fileno), 0, 0, 1, 1}, - {&__pyx_n_s_get_hub_noargs, __pyx_k_get_hub_noargs, sizeof(__pyx_k_get_hub_noargs), 0, 0, 1, 1}, - {&__pyx_n_s_getcurrent, __pyx_k_getcurrent, sizeof(__pyx_k_getcurrent), 0, 0, 1, 1}, - {&__pyx_n_s_gevent, __pyx_k_gevent, sizeof(__pyx_k_gevent), 0, 0, 1, 1}, - {&__pyx_n_s_gevent___hub_primitives, __pyx_k_gevent___hub_primitives, sizeof(__pyx_k_gevent___hub_primitives), 0, 0, 1, 1}, - {&__pyx_n_s_gevent__hub_local, __pyx_k_gevent__hub_local, sizeof(__pyx_k_gevent__hub_local), 0, 0, 1, 1}, - {&__pyx_n_s_gevent__util, __pyx_k_gevent__util, sizeof(__pyx_k_gevent__util), 0, 0, 1, 1}, - {&__pyx_n_s_gevent_exceptions, __pyx_k_gevent_exceptions, sizeof(__pyx_k_gevent_exceptions), 0, 0, 1, 1}, - {&__pyx_n_s_gevent_timeout, __pyx_k_gevent_timeout, sizeof(__pyx_k_gevent_timeout), 0, 0, 1, 1}, - {&__pyx_n_s_greenlet, __pyx_k_greenlet, sizeof(__pyx_k_greenlet), 0, 0, 1, 1}, - {&__pyx_n_s_greenlet_imported, __pyx_k_greenlet_imported, sizeof(__pyx_k_greenlet_imported), 0, 0, 1, 1}, - {&__pyx_n_s_greenlet_init, __pyx_k_greenlet_init, sizeof(__pyx_k_greenlet_init), 0, 0, 1, 1}, - {&__pyx_n_s_greenlet_primitives, __pyx_k_greenlet_primitives, sizeof(__pyx_k_greenlet_primitives), 0, 0, 1, 1}, - {&__pyx_n_s_hub, __pyx_k_hub, sizeof(__pyx_k_hub), 0, 0, 1, 1}, - {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, - {&__pyx_n_s_import_c_accel, __pyx_k_import_c_accel, sizeof(__pyx_k_import_c_accel), 0, 0, 1, 1}, - {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1}, - {&__pyx_n_s_io, __pyx_k_io, sizeof(__pyx_k_io), 0, 0, 1, 1}, - {&__pyx_n_s_iwait_on_objects, __pyx_k_iwait_on_objects, sizeof(__pyx_k_iwait_on_objects), 0, 0, 1, 1}, - {&__pyx_n_s_join, __pyx_k_join, sizeof(__pyx_k_join), 0, 0, 1, 1}, - {&__pyx_n_s_lambda, __pyx_k_lambda, sizeof(__pyx_k_lambda), 0, 0, 1, 1}, - {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, - {&__pyx_n_s_next, __pyx_k_next, sizeof(__pyx_k_next), 0, 0, 1, 1}, - {&__pyx_n_s_next_2, __pyx_k_next_2, sizeof(__pyx_k_next_2), 0, 0, 1, 1}, - {&__pyx_n_s_objects, __pyx_k_objects, sizeof(__pyx_k_objects), 0, 0, 1, 1}, - {&__pyx_n_s_print_exc, __pyx_k_print_exc, sizeof(__pyx_k_print_exc), 0, 0, 1, 1}, - {&__pyx_n_s_priority, __pyx_k_priority, sizeof(__pyx_k_priority), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_capi, __pyx_k_pyx_capi, sizeof(__pyx_k_pyx_capi), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1}, - {&__pyx_n_s_rawlink, __pyx_k_rawlink, sizeof(__pyx_k_rawlink), 0, 0, 1, 1}, - {&__pyx_n_s_run_callback, __pyx_k_run_callback, sizeof(__pyx_k_run_callback), 0, 0, 1, 1}, - {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1}, - {&__pyx_n_s_self_2, __pyx_k_self_2, sizeof(__pyx_k_self_2), 0, 0, 1, 1}, - {&__pyx_n_s_set_default_timeout_error, __pyx_k_set_default_timeout_error, sizeof(__pyx_k_set_default_timeout_error), 0, 0, 1, 1}, - {&__pyx_n_s_socket, __pyx_k_socket, sizeof(__pyx_k_socket), 0, 0, 1, 1}, - {&__pyx_kp_s_src_gevent__hub_primitives_py, __pyx_k_src_gevent__hub_primitives_py, sizeof(__pyx_k_src_gevent__hub_primitives_py), 0, 0, 1, 0}, - {&__pyx_n_s_start, __pyx_k_start, sizeof(__pyx_k_start), 0, 0, 1, 1}, - {&__pyx_n_s_start_new_or_dummy, __pyx_k_start_new_or_dummy, sizeof(__pyx_k_start_new_or_dummy), 0, 0, 1, 1}, - {&__pyx_n_s_stop, __pyx_k_stop, sizeof(__pyx_k_stop), 0, 0, 1, 1}, - {&__pyx_n_s_switch, __pyx_k_switch, sizeof(__pyx_k_switch), 0, 0, 1, 1}, - {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, - {&__pyx_n_s_throw, __pyx_k_throw, sizeof(__pyx_k_throw), 0, 0, 1, 1}, - {&__pyx_kp_s_timed_out, __pyx_k_timed_out, sizeof(__pyx_k_timed_out), 0, 0, 1, 0}, - {&__pyx_n_s_timeout, __pyx_k_timeout, sizeof(__pyx_k_timeout), 0, 0, 1, 1}, - {&__pyx_n_s_timeout_error, __pyx_k_timeout_error, sizeof(__pyx_k_timeout_error), 0, 0, 1, 1}, - {&__pyx_n_s_timeout_exc, __pyx_k_timeout_exc, sizeof(__pyx_k_timeout_exc), 0, 0, 1, 1}, - {&__pyx_n_s_timer, __pyx_k_timer, sizeof(__pyx_k_timer), 0, 0, 1, 1}, - {&__pyx_n_s_traceback, __pyx_k_traceback, sizeof(__pyx_k_traceback), 0, 0, 1, 1}, - {&__pyx_n_s_unlink, __pyx_k_unlink, sizeof(__pyx_k_unlink), 0, 0, 1, 1}, - {&__pyx_n_s_wait, __pyx_k_wait, sizeof(__pyx_k_wait), 0, 0, 1, 1}, - {&__pyx_n_s_wait_on_objects, __pyx_k_wait_on_objects, sizeof(__pyx_k_wait_on_objects), 0, 0, 1, 1}, - {&__pyx_n_s_wait_on_socket, __pyx_k_wait_on_socket, sizeof(__pyx_k_wait_on_socket), 0, 0, 1, 1}, - {&__pyx_n_s_wait_on_watcher, __pyx_k_wait_on_watcher, sizeof(__pyx_k_wait_on_watcher), 0, 0, 1, 1}, - {&__pyx_n_s_wait_read, __pyx_k_wait_read, sizeof(__pyx_k_wait_read), 0, 0, 1, 1}, - {&__pyx_n_s_wait_readwrite, __pyx_k_wait_readwrite, sizeof(__pyx_k_wait_readwrite), 0, 0, 1, 1}, - {&__pyx_n_s_wait_write, __pyx_k_wait_write, sizeof(__pyx_k_wait_write), 0, 0, 1, 1}, - {&__pyx_n_s_waiter, __pyx_k_waiter, sizeof(__pyx_k_waiter), 0, 0, 1, 1}, - {&__pyx_n_s_watcher, __pyx_k_watcher, sizeof(__pyx_k_watcher), 0, 0, 1, 1}, - {0, 0, 0, 0, 0, 0, 0} -}; -static int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin___import__ = __Pyx_GetBuiltinName(__pyx_n_s_import); if (!__pyx_builtin___import__) __PYX_ERR(0, 29, __pyx_L1_error) - __pyx_builtin_StopIteration = __Pyx_GetBuiltinName(__pyx_n_s_StopIteration); if (!__pyx_builtin_StopIteration) __PYX_ERR(0, 136, __pyx_L1_error) - return 0; - __pyx_L1_error:; - return -1; -} - -static int __Pyx_InitCachedConstants(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - - /* "src/gevent/_hub_primitives.py":259 - * (timeout_exc - * if timeout_exc is not _NONE or timeout is None - * else _timeout_error('timed out'))) # <<<<<<<<<<<<<< - * - * with timeout: - */ - __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_s_timed_out); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 259, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple_); - __Pyx_GIVEREF(__pyx_tuple_); - - /* "src/gevent/_hub_primitives.py":261 - * else _timeout_error('timed out'))) - * - * with timeout: # <<<<<<<<<<<<<< - * hub.wait(watcher) - * - */ - __pyx_tuple__2 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 261, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__2); - __Pyx_GIVEREF(__pyx_tuple__2); - - /* "src/gevent/_hub_primitives.py":29 - * # is assignment) without generating a 'lvalue is not valid target' - * # error. - * locals()['getcurrent'] = __import__('greenlet').getcurrent # <<<<<<<<<<<<<< - * locals()['greenlet_init'] = lambda: None - * locals()['Waiter'] = _waiter.Waiter - */ - __pyx_tuple__9 = PyTuple_Pack(1, __pyx_n_s_greenlet); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 29, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__9); - __Pyx_GIVEREF(__pyx_tuple__9); - - /* "src/gevent/_hub_primitives.py":46 - * class WaitOperationsGreenlet(SwitchOutGreenletWithLoop): # pylint:disable=undefined-variable - * - * def wait(self, watcher): # <<<<<<<<<<<<<< - * """ - * Wait until the *watcher* (which must not be started) is ready. - */ - __pyx_tuple__10 = PyTuple_Pack(2, __pyx_n_s_self_2, __pyx_n_s_watcher); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 46, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__10); - __Pyx_GIVEREF(__pyx_tuple__10); - __pyx_codeobj__11 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__hub_primitives_py, __pyx_n_s_wait, 46, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__11)) __PYX_ERR(0, 46, __pyx_L1_error) - - /* "src/gevent/_hub_primitives.py":63 - * watcher.stop() - * - * def cancel_wait(self, watcher, error, close_watcher=False): # <<<<<<<<<<<<<< - * """ - * Cancel an in-progress call to :meth:`wait` by throwing the given *error* - */ - __pyx_tuple__12 = PyTuple_Pack(4, __pyx_n_s_self_2, __pyx_n_s_watcher, __pyx_n_s_error, __pyx_n_s_close_watcher); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 63, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__12); - __Pyx_GIVEREF(__pyx_tuple__12); - __pyx_codeobj__13 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__12, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__hub_primitives_py, __pyx_n_s_cancel_wait, 63, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__13)) __PYX_ERR(0, 63, __pyx_L1_error) - - /* "src/gevent/_hub_primitives.py":84 - * watcher.close() - * - * def _cancel_wait(self, watcher, error, close_watcher): # <<<<<<<<<<<<<< - * # We have to check again to see if it was still active by the time - * # our callback actually runs. - */ - __pyx_tuple__14 = PyTuple_Pack(4, __pyx_n_s_self_2, __pyx_n_s_watcher, __pyx_n_s_error, __pyx_n_s_close_watcher); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 84, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__14); - __Pyx_GIVEREF(__pyx_tuple__14); - __pyx_codeobj__15 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__14, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__hub_primitives_py, __pyx_n_s_cancel_wait_2, 84, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__15)) __PYX_ERR(0, 84, __pyx_L1_error) - - /* "src/gevent/_hub_primitives.py":169 - * - * - * def iwait_on_objects(objects, timeout=None, count=None): # <<<<<<<<<<<<<< - * """ - * Iteratively yield *objects* as they are ready, until all (or *count*) are ready - */ - __pyx_tuple__16 = PyTuple_Pack(3, __pyx_n_s_objects, __pyx_n_s_timeout, __pyx_n_s_count); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 169, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__16); - __Pyx_GIVEREF(__pyx_tuple__16); - __pyx_codeobj__17 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__16, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__hub_primitives_py, __pyx_n_s_iwait_on_objects, 169, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__17)) __PYX_ERR(0, 169, __pyx_L1_error) - - /* "src/gevent/_hub_primitives.py":198 - * - * - * def wait_on_objects(objects=None, timeout=None, count=None): # <<<<<<<<<<<<<< - * """ - * Wait for ``objects`` to become ready or for event loop to finish. - */ - __pyx_tuple__18 = PyTuple_Pack(3, __pyx_n_s_objects, __pyx_n_s_timeout, __pyx_n_s_count); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 198, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__18); - __Pyx_GIVEREF(__pyx_tuple__18); - __pyx_codeobj__19 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__hub_primitives_py, __pyx_n_s_wait_on_objects, 198, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__19)) __PYX_ERR(0, 198, __pyx_L1_error) - - /* "src/gevent/_hub_primitives.py":239 - * _timeout_error = Exception - * - * def set_default_timeout_error(e): # <<<<<<<<<<<<<< - * global _timeout_error - * _timeout_error = e - */ - __pyx_tuple__20 = PyTuple_Pack(1, __pyx_n_s_e); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 239, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__20); - __Pyx_GIVEREF(__pyx_tuple__20); - __pyx_codeobj__21 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__20, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__hub_primitives_py, __pyx_n_s_set_default_timeout_error, 239, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__21)) __PYX_ERR(0, 239, __pyx_L1_error) - - /* "src/gevent/_hub_primitives.py":265 - * - * # Suitable to be bound as an instance method - * def wait_on_socket(socket, watcher, timeout_exc=None): # <<<<<<<<<<<<<< - * _primitive_wait(watcher, socket.timeout, - * timeout_exc if timeout_exc is not None else _NONE, - */ - __pyx_tuple__22 = PyTuple_Pack(3, __pyx_n_s_socket, __pyx_n_s_watcher, __pyx_n_s_timeout_exc); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 265, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__22); - __Pyx_GIVEREF(__pyx_tuple__22); - __pyx_codeobj__23 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__22, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__hub_primitives_py, __pyx_n_s_wait_on_socket, 265, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__23)) __PYX_ERR(0, 265, __pyx_L1_error) - - /* "src/gevent/_hub_primitives.py":270 - * socket.hub) - * - * def wait_on_watcher(watcher, timeout=None, timeout_exc=_NONE, hub=None): # <<<<<<<<<<<<<< - * """ - * wait(watcher, timeout=None, [timeout_exc=None]) -> None - */ - __pyx_tuple__24 = PyTuple_Pack(4, __pyx_n_s_watcher, __pyx_n_s_timeout, __pyx_n_s_timeout_exc, __pyx_n_s_hub); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 270, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__24); - __Pyx_GIVEREF(__pyx_tuple__24); - __pyx_codeobj__25 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__24, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__hub_primitives_py, __pyx_n_s_wait_on_watcher, 270, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__25)) __PYX_ERR(0, 270, __pyx_L1_error) - - /* "src/gevent/_hub_primitives.py":297 - * - * - * def wait_read(fileno, timeout=None, timeout_exc=_NONE): # <<<<<<<<<<<<<< - * """ - * wait_read(fileno, timeout=None, [timeout_exc=None]) -> None - */ - __pyx_tuple__26 = PyTuple_Pack(3, __pyx_n_s_fileno, __pyx_n_s_timeout, __pyx_n_s_timeout_exc); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 297, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__26); - __Pyx_GIVEREF(__pyx_tuple__26); - __pyx_codeobj__27 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__hub_primitives_py, __pyx_n_s_wait_read, 297, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__27)) __PYX_ERR(0, 297, __pyx_L1_error) - - /* "src/gevent/_hub_primitives.py":316 - * - * - * def wait_write(fileno, timeout=None, timeout_exc=_NONE, event=_NONE): # <<<<<<<<<<<<<< - * """ - * wait_write(fileno, timeout=None, [timeout_exc=None]) -> None - */ - __pyx_tuple__28 = PyTuple_Pack(4, __pyx_n_s_fileno, __pyx_n_s_timeout, __pyx_n_s_timeout_exc, __pyx_n_s_event); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 316, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__28); - __Pyx_GIVEREF(__pyx_tuple__28); - __pyx_codeobj__29 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__hub_primitives_py, __pyx_n_s_wait_write, 316, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__29)) __PYX_ERR(0, 316, __pyx_L1_error) - - /* "src/gevent/_hub_primitives.py":340 - * - * - * def wait_readwrite(fileno, timeout=None, timeout_exc=_NONE, event=_NONE): # <<<<<<<<<<<<<< - * """ - * wait_readwrite(fileno, timeout=None, [timeout_exc=None]) -> None - */ - __pyx_tuple__30 = PyTuple_Pack(4, __pyx_n_s_fileno, __pyx_n_s_timeout, __pyx_n_s_timeout_exc, __pyx_n_s_event); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 340, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__30); - __Pyx_GIVEREF(__pyx_tuple__30); - __pyx_codeobj__31 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__hub_primitives_py, __pyx_n_s_wait_readwrite, 340, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__31)) __PYX_ERR(0, 340, __pyx_L1_error) - - /* "src/gevent/_hub_primitives.py":365 - * - * - * def _init(): # <<<<<<<<<<<<<< - * greenlet_init() # pylint:disable=undefined-variable - * - */ - __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__hub_primitives_py, __pyx_n_s_init, 365, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) __PYX_ERR(0, 365, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_InitGlobals(void) { - if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) __PYX_ERR(0, 1, __pyx_L1_error) - return 0; - __pyx_L1_error:; - return -1; -} - -static int __Pyx_modinit_global_init_code(void); /*proto*/ -static int __Pyx_modinit_variable_export_code(void); /*proto*/ -static int __Pyx_modinit_function_export_code(void); /*proto*/ -static int __Pyx_modinit_type_init_code(void); /*proto*/ -static int __Pyx_modinit_type_import_code(void); /*proto*/ -static int __Pyx_modinit_variable_import_code(void); /*proto*/ -static int __Pyx_modinit_function_import_code(void); /*proto*/ - -static int __Pyx_modinit_global_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); - /*--- Global init code ---*/ - __pyx_v_6gevent_16__hub_primitives_InvalidSwitchError = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_16__hub_primitives__waiter = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_16__hub_primitives__greenlet_primitives = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_16__hub_primitives_traceback = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_16__hub_primitives__timeout_error = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_16__hub_primitives_Timeout = Py_None; Py_INCREF(Py_None); - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_variable_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); - /*--- Variable export code ---*/ - if (__Pyx_ExportVoidPtr(__pyx_n_s_InvalidSwitchError, (void *)&__pyx_v_6gevent_16__hub_primitives_InvalidSwitchError, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_waiter, (void *)&__pyx_v_6gevent_16__hub_primitives__waiter, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_greenlet_primitives, (void *)&__pyx_v_6gevent_16__hub_primitives__greenlet_primitives, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_traceback, (void *)&__pyx_v_6gevent_16__hub_primitives_traceback, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_timeout_error, (void *)&__pyx_v_6gevent_16__hub_primitives__timeout_error, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_Timeout, (void *)&__pyx_v_6gevent_16__hub_primitives_Timeout, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_greenlet_imported, (void *)&__pyx_v_6gevent_16__hub_primitives__greenlet_imported, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_function_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); - /*--- Function export code ---*/ - if (__Pyx_ExportFunction("iwait_on_objects", (void (*)(void))__pyx_f_6gevent_16__hub_primitives_iwait_on_objects, "PyObject *(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_16__hub_primitives_iwait_on_objects *__pyx_optional_args)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportFunction("wait_on_objects", (void (*)(void))__pyx_f_6gevent_16__hub_primitives_wait_on_objects, "PyObject *(int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_16__hub_primitives_wait_on_objects *__pyx_optional_args)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportFunction("_primitive_wait", (void (*)(void))__pyx_f_6gevent_16__hub_primitives__primitive_wait, "PyObject *(PyObject *, PyObject *, PyObject *, struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportFunction("wait_on_watcher", (void (*)(void))__pyx_f_6gevent_16__hub_primitives_wait_on_watcher, "PyObject *(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_16__hub_primitives_wait_on_watcher *__pyx_optional_args)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportFunction("wait_read", (void (*)(void))__pyx_f_6gevent_16__hub_primitives_wait_read, "PyObject *(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_16__hub_primitives_wait_read *__pyx_optional_args)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportFunction("wait_write", (void (*)(void))__pyx_f_6gevent_16__hub_primitives_wait_write, "PyObject *(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_16__hub_primitives_wait_write *__pyx_optional_args)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportFunction("wait_readwrite", (void (*)(void))__pyx_f_6gevent_16__hub_primitives_wait_readwrite, "PyObject *(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_16__hub_primitives_wait_readwrite *__pyx_optional_args)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportFunction("wait_on_socket", (void (*)(void))__pyx_f_6gevent_16__hub_primitives_wait_on_socket, "PyObject *(PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_16__hub_primitives_wait_on_socket *__pyx_optional_args)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_type_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); - /*--- Type init code ---*/ - __pyx_ptype_6gevent_16__hub_primitives_greenlet = __Pyx_ImportType("greenlet", "greenlet", sizeof(PyGreenlet), 0); if (unlikely(!__pyx_ptype_6gevent_16__hub_primitives_greenlet)) __PYX_ERR(3, 19, __pyx_L1_error) - __pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop = __Pyx_ImportType("gevent.__greenlet_primitives", "SwitchOutGreenletWithLoop", sizeof(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop), 1); if (unlikely(!__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_vtabptr_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop = (struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop*)__Pyx_GetVtable(__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_vtabptr_6gevent_16__hub_primitives_WaitOperationsGreenlet = &__pyx_vtable_6gevent_16__hub_primitives_WaitOperationsGreenlet; - __pyx_vtable_6gevent_16__hub_primitives_WaitOperationsGreenlet.__pyx_base = *__pyx_vtabptr_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop; - __pyx_vtable_6gevent_16__hub_primitives_WaitOperationsGreenlet.wait = (PyObject *(*)(struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *, PyObject *, int __pyx_skip_dispatch))__pyx_f_6gevent_16__hub_primitives_22WaitOperationsGreenlet_wait; - __pyx_vtable_6gevent_16__hub_primitives_WaitOperationsGreenlet.cancel_wait = (PyObject *(*)(struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *, PyObject *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_16__hub_primitives_22WaitOperationsGreenlet_cancel_wait *__pyx_optional_args))__pyx_f_6gevent_16__hub_primitives_22WaitOperationsGreenlet_cancel_wait; - __pyx_vtable_6gevent_16__hub_primitives_WaitOperationsGreenlet._cancel_wait = (PyObject *(*)(struct __pyx_obj_6gevent_16__hub_primitives_WaitOperationsGreenlet *, PyObject *, PyObject *, PyObject *, int __pyx_skip_dispatch))__pyx_f_6gevent_16__hub_primitives_22WaitOperationsGreenlet__cancel_wait; - __pyx_type_6gevent_16__hub_primitives_WaitOperationsGreenlet.tp_base = __pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop; - if (PyType_Ready(&__pyx_type_6gevent_16__hub_primitives_WaitOperationsGreenlet) < 0) __PYX_ERR(0, 44, __pyx_L1_error) - __pyx_type_6gevent_16__hub_primitives_WaitOperationsGreenlet.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_16__hub_primitives_WaitOperationsGreenlet.tp_dictoffset && __pyx_type_6gevent_16__hub_primitives_WaitOperationsGreenlet.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_16__hub_primitives_WaitOperationsGreenlet.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - if (__Pyx_SetVtable(__pyx_type_6gevent_16__hub_primitives_WaitOperationsGreenlet.tp_dict, __pyx_vtabptr_6gevent_16__hub_primitives_WaitOperationsGreenlet) < 0) __PYX_ERR(0, 44, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "WaitOperationsGreenlet", (PyObject *)&__pyx_type_6gevent_16__hub_primitives_WaitOperationsGreenlet) < 0) __PYX_ERR(0, 44, __pyx_L1_error) - __pyx_ptype_6gevent_16__hub_primitives_WaitOperationsGreenlet = &__pyx_type_6gevent_16__hub_primitives_WaitOperationsGreenlet; - __pyx_vtabptr_6gevent_16__hub_primitives__WaitIterator = &__pyx_vtable_6gevent_16__hub_primitives__WaitIterator; - __pyx_vtable_6gevent_16__hub_primitives__WaitIterator._cleanup = (PyObject *(*)(struct __pyx_obj_6gevent_16__hub_primitives__WaitIterator *))__pyx_f_6gevent_16__hub_primitives_13_WaitIterator__cleanup; - if (PyType_Ready(&__pyx_type_6gevent_16__hub_primitives__WaitIterator) < 0) __PYX_ERR(0, 98, __pyx_L1_error) - __pyx_type_6gevent_16__hub_primitives__WaitIterator.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_16__hub_primitives__WaitIterator.tp_dictoffset && __pyx_type_6gevent_16__hub_primitives__WaitIterator.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_16__hub_primitives__WaitIterator.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - if (__Pyx_SetVtable(__pyx_type_6gevent_16__hub_primitives__WaitIterator.tp_dict, __pyx_vtabptr_6gevent_16__hub_primitives__WaitIterator) < 0) __PYX_ERR(0, 98, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "_WaitIterator", (PyObject *)&__pyx_type_6gevent_16__hub_primitives__WaitIterator) < 0) __PYX_ERR(0, 98, __pyx_L1_error) - __pyx_ptype_6gevent_16__hub_primitives__WaitIterator = &__pyx_type_6gevent_16__hub_primitives__WaitIterator; - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_type_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); - /*--- Type import code ---*/ - __pyx_ptype_6gevent_21__greenlet_primitives_greenlet = __Pyx_ImportType("greenlet", "greenlet", sizeof(PyGreenlet), 0); if (unlikely(!__pyx_ptype_6gevent_21__greenlet_primitives_greenlet)) __PYX_ERR(1, 12, __pyx_L1_error) - __pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet = __Pyx_ImportType("gevent.__greenlet_primitives", "TrackedRawGreenlet", sizeof(struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet), 1); if (unlikely(!__pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet)) __PYX_ERR(1, 37, __pyx_L1_error) - __pyx_ptype_6gevent_8__waiter_greenlet = __Pyx_ImportType("greenlet", "greenlet", sizeof(PyGreenlet), 0); if (unlikely(!__pyx_ptype_6gevent_8__waiter_greenlet)) __PYX_ERR(2, 15, __pyx_L1_error) - __pyx_ptype_6gevent_8__waiter_Waiter = __Pyx_ImportType("gevent.__waiter", "Waiter", sizeof(struct __pyx_obj_6gevent_8__waiter_Waiter), 1); if (unlikely(!__pyx_ptype_6gevent_8__waiter_Waiter)) __PYX_ERR(2, 33, __pyx_L1_error) - __pyx_vtabptr_6gevent_8__waiter_Waiter = (struct __pyx_vtabstruct_6gevent_8__waiter_Waiter*)__Pyx_GetVtable(__pyx_ptype_6gevent_8__waiter_Waiter->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_8__waiter_Waiter)) __PYX_ERR(2, 33, __pyx_L1_error) - __pyx_ptype_6gevent_8__waiter_MultipleWaiter = __Pyx_ImportType("gevent.__waiter", "MultipleWaiter", sizeof(struct __pyx_obj_6gevent_8__waiter_MultipleWaiter), 1); if (unlikely(!__pyx_ptype_6gevent_8__waiter_MultipleWaiter)) __PYX_ERR(2, 47, __pyx_L1_error) - __pyx_vtabptr_6gevent_8__waiter_MultipleWaiter = (struct __pyx_vtabstruct_6gevent_8__waiter_MultipleWaiter*)__Pyx_GetVtable(__pyx_ptype_6gevent_8__waiter_MultipleWaiter->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_8__waiter_MultipleWaiter)) __PYX_ERR(2, 47, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_variable_import_code(void) { - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); - /*--- Variable import code ---*/ - __pyx_t_1 = __Pyx_ImportModule("gevent.__greenlet_primitives"); if (!__pyx_t_1) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_1, "wref", (void **)&__pyx_vp_6gevent_21__greenlet_primitives_wref, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_1, "BlockingSwitchOutError", (void **)&__pyx_vp_6gevent_21__greenlet_primitives_BlockingSwitchOutError, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_1, "_greenlet_imported", (void **)&__pyx_vp_6gevent_21__greenlet_primitives__greenlet_imported, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_2 = __Pyx_ImportModule("gevent.__hub_local"); if (!__pyx_t_2) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_2, "_threadlocal", (void **)&__pyx_vp_6gevent_11__hub_local__threadlocal, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_3 = __Pyx_ImportModule("gevent.__waiter"); if (!__pyx_t_3) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_3, "sys", (void **)&__pyx_vp_6gevent_8__waiter_sys, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_3, "ConcurrentObjectUseError", (void **)&__pyx_vp_6gevent_8__waiter_ConcurrentObjectUseError, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_3, "_greenlet_imported", (void **)&__pyx_vp_6gevent_8__waiter__greenlet_imported, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_3, "_NONE", (void **)&__pyx_vp_6gevent_8__waiter__NONE, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_function_import_code(void) { - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); - /*--- Function import code ---*/ - __pyx_t_1 = __Pyx_ImportModule("gevent.__hub_local"); if (!__pyx_t_1) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportFunction(__pyx_t_1, "get_hub_noargs", (void (**)(void))&__pyx_f_6gevent_11__hub_local_get_hub_noargs, "struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *(int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_RefNannyFinishContext(); - return -1; -} - - -#if PY_MAJOR_VERSION < 3 -#ifdef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC void -#else -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -#endif -#else -#ifdef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC PyObject * -#else -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -#endif -#endif -#ifndef CYTHON_SMALL_CODE -#if defined(__clang__) - #define CYTHON_SMALL_CODE -#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4))) - #define CYTHON_SMALL_CODE __attribute__((cold)) -#else - #define CYTHON_SMALL_CODE -#endif -#endif - - -#if PY_MAJOR_VERSION < 3 -__Pyx_PyMODINIT_FUNC init__hub_primitives(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC init__hub_primitives(void) -#else -__Pyx_PyMODINIT_FUNC PyInit___hub_primitives(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC PyInit___hub_primitives(void) -#if CYTHON_PEP489_MULTI_PHASE_INIT -{ - return PyModuleDef_Init(&__pyx_moduledef); -} -static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) { - PyObject *value = PyObject_GetAttrString(spec, from_name); - int result = 0; - if (likely(value)) { - result = PyDict_SetItemString(moddict, to_name, value); - Py_DECREF(value); - } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Clear(); - } else { - result = -1; - } - return result; -} -static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) { - PyObject *module = NULL, *moddict, *modname; - if (__pyx_m) - return __Pyx_NewRef(__pyx_m); - modname = PyObject_GetAttrString(spec, "name"); - if (unlikely(!modname)) goto bad; - module = PyModule_NewObject(modname); - Py_DECREF(modname); - if (unlikely(!module)) goto bad; - moddict = PyModule_GetDict(module); - if (unlikely(!moddict)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__") < 0)) goto bad; - return module; -bad: - Py_XDECREF(module); - return NULL; -} - - -static int __pyx_pymod_exec___hub_primitives(PyObject *__pyx_pyinit_module) -#endif -#endif -{ - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannyDeclarations - #if CYTHON_PEP489_MULTI_PHASE_INIT - if (__pyx_m && __pyx_m == __pyx_pyinit_module) return 0; - #elif PY_MAJOR_VERSION >= 3 - if (__pyx_m) return __Pyx_NewRef(__pyx_m); - #endif - #if CYTHON_REFNANNY -__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); -if (!__Pyx_RefNanny) { - PyErr_Clear(); - __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); - if (!__Pyx_RefNanny) - Py_FatalError("failed to import 'refnanny' module"); -} -#endif - __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit___hub_primitives(void)", 0); - if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) - #ifdef __Pyx_CyFunction_USED - if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_FusedFunction_USED - if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Coroutine_USED - if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Generator_USED - if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_AsyncGen_USED - if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_StopAsyncIteration_USED - if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - /*--- Library function declarations ---*/ - /*--- Threads initialization code ---*/ - #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS - #ifdef WITH_THREAD /* Python build with threading support? */ - PyEval_InitThreads(); - #endif - #endif - /*--- Module creation code ---*/ - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_m = __pyx_pyinit_module; - Py_INCREF(__pyx_m); - #else - #if PY_MAJOR_VERSION < 3 - __pyx_m = Py_InitModule4("__hub_primitives", __pyx_methods, __pyx_k_A_collection_of_primitives_used, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); - #else - __pyx_m = PyModule_Create(&__pyx_moduledef); - #endif - if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) - Py_INCREF(__pyx_d); - __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) - #if CYTHON_COMPILING_IN_PYPY - Py_INCREF(__pyx_b); - #endif - if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - /*--- Initialize various global constants etc. ---*/ - if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) - if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - if (__pyx_module_is_main_gevent____hub_primitives) { - if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - } - #if PY_MAJOR_VERSION >= 3 - { - PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) - if (!PyDict_GetItemString(modules, "gevent.__hub_primitives")) { - if (unlikely(PyDict_SetItemString(modules, "gevent.__hub_primitives", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) - } - } - #endif - /*--- Builtin init code ---*/ - if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Constants init code ---*/ - if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Global type/function init code ---*/ - (void)__Pyx_modinit_global_init_code(); - if (unlikely(__Pyx_modinit_variable_export_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_function_export_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_type_init_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_type_import_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_variable_import_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_function_import_code() != 0)) goto __pyx_L1_error; - /*--- Execution code ---*/ - #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) - if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - - /* "src/gevent/_hub_primitives.py":14 - * from __future__ import print_function - * - * import traceback # <<<<<<<<<<<<<< - * - * from gevent.exceptions import InvalidSwitchError - */ - __pyx_t_1 = __Pyx_Import(__pyx_n_s_traceback, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_v_6gevent_16__hub_primitives_traceback); - __Pyx_DECREF_SET(__pyx_v_6gevent_16__hub_primitives_traceback, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":16 - * import traceback - * - * from gevent.exceptions import InvalidSwitchError # <<<<<<<<<<<<<< - * from gevent.exceptions import ConcurrentObjectUseError - * - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 16, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_InvalidSwitchError); - __Pyx_GIVEREF(__pyx_n_s_InvalidSwitchError); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_InvalidSwitchError); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_gevent_exceptions, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 16, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_InvalidSwitchError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 16, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_v_6gevent_16__hub_primitives_InvalidSwitchError); - __Pyx_DECREF_SET(__pyx_v_6gevent_16__hub_primitives_InvalidSwitchError, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_hub_primitives.py":17 - * - * from gevent.exceptions import InvalidSwitchError - * from gevent.exceptions import ConcurrentObjectUseError # <<<<<<<<<<<<<< - * - * from gevent import _greenlet_primitives - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 17, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_ConcurrentObjectUseError); - __Pyx_GIVEREF(__pyx_n_s_ConcurrentObjectUseError); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_ConcurrentObjectUseError); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_gevent_exceptions, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 17, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_ConcurrentObjectUseError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 17, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ConcurrentObjectUseError, __pyx_t_2) < 0) __PYX_ERR(0, 17, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":19 - * from gevent.exceptions import ConcurrentObjectUseError - * - * from gevent import _greenlet_primitives # <<<<<<<<<<<<<< - * from gevent import _waiter - * from gevent._util import _NONE - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 19, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_greenlet_primitives); - __Pyx_GIVEREF(__pyx_n_s_greenlet_primitives); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_greenlet_primitives); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_gevent, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 19, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_greenlet_primitives); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 19, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_v_6gevent_16__hub_primitives__greenlet_primitives); - __Pyx_DECREF_SET(__pyx_v_6gevent_16__hub_primitives__greenlet_primitives, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_hub_primitives.py":20 - * - * from gevent import _greenlet_primitives - * from gevent import _waiter # <<<<<<<<<<<<<< - * from gevent._util import _NONE - * from gevent._hub_local import get_hub_noargs as get_hub - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 20, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_waiter); - __Pyx_GIVEREF(__pyx_n_s_waiter); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_waiter); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_gevent, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 20, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_waiter); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 20, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_v_6gevent_16__hub_primitives__waiter); - __Pyx_DECREF_SET(__pyx_v_6gevent_16__hub_primitives__waiter, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":21 - * from gevent import _greenlet_primitives - * from gevent import _waiter - * from gevent._util import _NONE # <<<<<<<<<<<<<< - * from gevent._hub_local import get_hub_noargs as get_hub - * from gevent.timeout import Timeout - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 21, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_NONE); - __Pyx_GIVEREF(__pyx_n_s_NONE); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_NONE); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_gevent__util, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 21, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_NONE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 21, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_NONE, __pyx_t_1) < 0) __PYX_ERR(0, 21, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_hub_primitives.py":22 - * from gevent import _waiter - * from gevent._util import _NONE - * from gevent._hub_local import get_hub_noargs as get_hub # <<<<<<<<<<<<<< - * from gevent.timeout import Timeout - * - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 22, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_get_hub_noargs); - __Pyx_GIVEREF(__pyx_n_s_get_hub_noargs); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_get_hub_noargs); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_gevent__hub_local, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 22, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_get_hub_noargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 22, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_hub_noargs, __pyx_t_2) < 0) __PYX_ERR(0, 22, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":23 - * from gevent._util import _NONE - * from gevent._hub_local import get_hub_noargs as get_hub - * from gevent.timeout import Timeout # <<<<<<<<<<<<<< - * - * # In Cython, we define these as 'cdef inline' functions. The - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_Timeout); - __Pyx_GIVEREF(__pyx_n_s_Timeout); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_Timeout); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_gevent_timeout, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 23, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Timeout); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_v_6gevent_16__hub_primitives_Timeout); - __Pyx_DECREF_SET(__pyx_v_6gevent_16__hub_primitives_Timeout, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_hub_primitives.py":29 - * # is assignment) without generating a 'lvalue is not valid target' - * # error. - * locals()['getcurrent'] = __import__('greenlet').getcurrent # <<<<<<<<<<<<<< - * locals()['greenlet_init'] = lambda: None - * locals()['Waiter'] = _waiter.Waiter - */ - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin___import__, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 29, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_getcurrent); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 29, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_Globals(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 29, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (unlikely(PyDict_SetItem(__pyx_t_2, __pyx_n_s_getcurrent, __pyx_t_1) < 0)) __PYX_ERR(0, 29, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":30 - * # error. - * locals()['getcurrent'] = __import__('greenlet').getcurrent - * locals()['greenlet_init'] = lambda: None # <<<<<<<<<<<<<< - * locals()['Waiter'] = _waiter.Waiter - * locals()['MultipleWaiter'] = _waiter.MultipleWaiter - */ - __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_16__hub_primitives_18lambda, 0, __pyx_n_s_lambda, NULL, __pyx_n_s_gevent___hub_primitives, __pyx_d, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 30, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_Globals(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 30, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (unlikely(PyDict_SetItem(__pyx_t_2, __pyx_n_s_greenlet_init, __pyx_t_1) < 0)) __PYX_ERR(0, 30, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":31 - * locals()['getcurrent'] = __import__('greenlet').getcurrent - * locals()['greenlet_init'] = lambda: None - * locals()['Waiter'] = _waiter.Waiter # <<<<<<<<<<<<<< - * locals()['MultipleWaiter'] = _waiter.MultipleWaiter - * locals()['SwitchOutGreenletWithLoop'] = _greenlet_primitives.SwitchOutGreenletWithLoop - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_6gevent_16__hub_primitives__waiter, __pyx_n_s_Waiter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 31, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_Globals(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 31, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (unlikely(PyDict_SetItem(__pyx_t_2, __pyx_n_s_Waiter, __pyx_t_1) < 0)) __PYX_ERR(0, 31, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":32 - * locals()['greenlet_init'] = lambda: None - * locals()['Waiter'] = _waiter.Waiter - * locals()['MultipleWaiter'] = _waiter.MultipleWaiter # <<<<<<<<<<<<<< - * locals()['SwitchOutGreenletWithLoop'] = _greenlet_primitives.SwitchOutGreenletWithLoop - * - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_6gevent_16__hub_primitives__waiter, __pyx_n_s_MultipleWaiter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 32, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_Globals(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 32, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (unlikely(PyDict_SetItem(__pyx_t_2, __pyx_n_s_MultipleWaiter, __pyx_t_1) < 0)) __PYX_ERR(0, 32, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":33 - * locals()['Waiter'] = _waiter.Waiter - * locals()['MultipleWaiter'] = _waiter.MultipleWaiter - * locals()['SwitchOutGreenletWithLoop'] = _greenlet_primitives.SwitchOutGreenletWithLoop # <<<<<<<<<<<<<< - * - * __all__ = [ - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_6gevent_16__hub_primitives__greenlet_primitives, __pyx_n_s_SwitchOutGreenletWithLoop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 33, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_Globals(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 33, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (unlikely(PyDict_SetItem(__pyx_t_2, __pyx_n_s_SwitchOutGreenletWithLoop, __pyx_t_1) < 0)) __PYX_ERR(0, 33, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":35 - * locals()['SwitchOutGreenletWithLoop'] = _greenlet_primitives.SwitchOutGreenletWithLoop - * - * __all__ = [ # <<<<<<<<<<<<<< - * 'WaitOperationsGreenlet', - * 'iwait_on_objects', - */ - __pyx_t_1 = PyList_New(6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 35, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_WaitOperationsGreenlet); - __Pyx_GIVEREF(__pyx_n_s_WaitOperationsGreenlet); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_WaitOperationsGreenlet); - __Pyx_INCREF(__pyx_n_s_iwait_on_objects); - __Pyx_GIVEREF(__pyx_n_s_iwait_on_objects); - PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_iwait_on_objects); - __Pyx_INCREF(__pyx_n_s_wait_on_objects); - __Pyx_GIVEREF(__pyx_n_s_wait_on_objects); - PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_s_wait_on_objects); - __Pyx_INCREF(__pyx_n_s_wait_read); - __Pyx_GIVEREF(__pyx_n_s_wait_read); - PyList_SET_ITEM(__pyx_t_1, 3, __pyx_n_s_wait_read); - __Pyx_INCREF(__pyx_n_s_wait_write); - __Pyx_GIVEREF(__pyx_n_s_wait_write); - PyList_SET_ITEM(__pyx_t_1, 4, __pyx_n_s_wait_write); - __Pyx_INCREF(__pyx_n_s_wait_readwrite); - __Pyx_GIVEREF(__pyx_n_s_wait_readwrite); - PyList_SET_ITEM(__pyx_t_1, 5, __pyx_n_s_wait_readwrite); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_all, __pyx_t_1) < 0) __PYX_ERR(0, 35, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":46 - * class WaitOperationsGreenlet(SwitchOutGreenletWithLoop): # pylint:disable=undefined-variable - * - * def wait(self, watcher): # <<<<<<<<<<<<<< - * """ - * Wait until the *watcher* (which must not be started) is ready. - */ - __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_16__hub_primitives_22WaitOperationsGreenlet_1wait, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_WaitOperationsGreenlet_wait, NULL, __pyx_n_s_gevent___hub_primitives, __pyx_d, ((PyObject *)__pyx_codeobj__11)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 46, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_16__hub_primitives_WaitOperationsGreenlet->tp_dict, __pyx_n_s_wait, __pyx_t_1) < 0) __PYX_ERR(0, 46, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - PyType_Modified(__pyx_ptype_6gevent_16__hub_primitives_WaitOperationsGreenlet); - - /* "src/gevent/_hub_primitives.py":63 - * watcher.stop() - * - * def cancel_wait(self, watcher, error, close_watcher=False): # <<<<<<<<<<<<<< - * """ - * Cancel an in-progress call to :meth:`wait` by throwing the given *error* - */ - __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_16__hub_primitives_22WaitOperationsGreenlet_3cancel_wait, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_WaitOperationsGreenlet_cancel_wa, NULL, __pyx_n_s_gevent___hub_primitives, __pyx_d, ((PyObject *)__pyx_codeobj__13)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 63, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_16__hub_primitives_WaitOperationsGreenlet->tp_dict, __pyx_n_s_cancel_wait, __pyx_t_1) < 0) __PYX_ERR(0, 63, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - PyType_Modified(__pyx_ptype_6gevent_16__hub_primitives_WaitOperationsGreenlet); - - /* "src/gevent/_hub_primitives.py":84 - * watcher.close() - * - * def _cancel_wait(self, watcher, error, close_watcher): # <<<<<<<<<<<<<< - * # We have to check again to see if it was still active by the time - * # our callback actually runs. - */ - __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_16__hub_primitives_22WaitOperationsGreenlet_5_cancel_wait, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_WaitOperationsGreenlet__cancel_w, NULL, __pyx_n_s_gevent___hub_primitives, __pyx_d, ((PyObject *)__pyx_codeobj__15)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 84, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_16__hub_primitives_WaitOperationsGreenlet->tp_dict, __pyx_n_s_cancel_wait_2, __pyx_t_1) < 0) __PYX_ERR(0, 84, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - PyType_Modified(__pyx_ptype_6gevent_16__hub_primitives_WaitOperationsGreenlet); - - /* "src/gevent/_hub_primitives.py":151 - * raise - * - * next = __next__ # <<<<<<<<<<<<<< - * - * def _cleanup(self): - */ - __pyx_t_1 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6gevent_16__hub_primitives__WaitIterator, __pyx_n_s_next); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 151, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_16__hub_primitives__WaitIterator->tp_dict, __pyx_n_s_next_2, __pyx_t_1) < 0) __PYX_ERR(0, 151, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - PyType_Modified(__pyx_ptype_6gevent_16__hub_primitives__WaitIterator); - - /* "src/gevent/_hub_primitives.py":169 - * - * - * def iwait_on_objects(objects, timeout=None, count=None): # <<<<<<<<<<<<<< - * """ - * Iteratively yield *objects* as they are ready, until all (or *count*) are ready - */ - __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_16__hub_primitives_1iwait_on_objects, 0, __pyx_n_s_iwait_on_objects, NULL, __pyx_n_s_gevent___hub_primitives, __pyx_d, ((PyObject *)__pyx_codeobj__17)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 169, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_iwait_on_objects, __pyx_t_1) < 0) __PYX_ERR(0, 169, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":198 - * - * - * def wait_on_objects(objects=None, timeout=None, count=None): # <<<<<<<<<<<<<< - * """ - * Wait for ``objects`` to become ready or for event loop to finish. - */ - __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_16__hub_primitives_3wait_on_objects, 0, __pyx_n_s_wait_on_objects, NULL, __pyx_n_s_gevent___hub_primitives, __pyx_d, ((PyObject *)__pyx_codeobj__19)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 198, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_wait_on_objects, __pyx_t_1) < 0) __PYX_ERR(0, 198, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":237 - * return list(iwait_on_objects(objects, timeout, count)) - * - * _timeout_error = Exception # <<<<<<<<<<<<<< - * - * def set_default_timeout_error(e): - */ - __Pyx_INCREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); - __Pyx_XGOTREF(__pyx_v_6gevent_16__hub_primitives__timeout_error); - __Pyx_DECREF_SET(__pyx_v_6gevent_16__hub_primitives__timeout_error, ((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); - __Pyx_GIVEREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); - - /* "src/gevent/_hub_primitives.py":239 - * _timeout_error = Exception - * - * def set_default_timeout_error(e): # <<<<<<<<<<<<<< - * global _timeout_error - * _timeout_error = e - */ - __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_16__hub_primitives_5set_default_timeout_error, 0, __pyx_n_s_set_default_timeout_error, NULL, __pyx_n_s_gevent___hub_primitives, __pyx_d, ((PyObject *)__pyx_codeobj__21)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 239, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_default_timeout_error, __pyx_t_1) < 0) __PYX_ERR(0, 239, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":265 - * - * # Suitable to be bound as an instance method - * def wait_on_socket(socket, watcher, timeout_exc=None): # <<<<<<<<<<<<<< - * _primitive_wait(watcher, socket.timeout, - * timeout_exc if timeout_exc is not None else _NONE, - */ - __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_16__hub_primitives_7wait_on_socket, 0, __pyx_n_s_wait_on_socket, NULL, __pyx_n_s_gevent___hub_primitives, __pyx_d, ((PyObject *)__pyx_codeobj__23)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 265, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_wait_on_socket, __pyx_t_1) < 0) __PYX_ERR(0, 265, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":270 - * socket.hub) - * - * def wait_on_watcher(watcher, timeout=None, timeout_exc=_NONE, hub=None): # <<<<<<<<<<<<<< - * """ - * wait(watcher, timeout=None, [timeout_exc=None]) -> None - */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_NONE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 270, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_k__3 = __pyx_t_1; - __Pyx_GIVEREF(__pyx_t_1); - __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_NONE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 270, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_k__3 = __pyx_t_1; - __Pyx_GIVEREF(__pyx_t_1); - __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_16__hub_primitives_9wait_on_watcher, 0, __pyx_n_s_wait_on_watcher, NULL, __pyx_n_s_gevent___hub_primitives, __pyx_d, ((PyObject *)__pyx_codeobj__25)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 270, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_wait_on_watcher, __pyx_t_1) < 0) __PYX_ERR(0, 270, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":297 - * - * - * def wait_read(fileno, timeout=None, timeout_exc=_NONE): # <<<<<<<<<<<<<< - * """ - * wait_read(fileno, timeout=None, [timeout_exc=None]) -> None - */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_NONE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 297, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_k__4 = __pyx_t_1; - __Pyx_GIVEREF(__pyx_t_1); - __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_NONE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 297, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_k__4 = __pyx_t_1; - __Pyx_GIVEREF(__pyx_t_1); - __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_16__hub_primitives_11wait_read, 0, __pyx_n_s_wait_read, NULL, __pyx_n_s_gevent___hub_primitives, __pyx_d, ((PyObject *)__pyx_codeobj__27)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 297, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_wait_read, __pyx_t_1) < 0) __PYX_ERR(0, 297, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":316 - * - * - * def wait_write(fileno, timeout=None, timeout_exc=_NONE, event=_NONE): # <<<<<<<<<<<<<< - * """ - * wait_write(fileno, timeout=None, [timeout_exc=None]) -> None - */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_NONE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 316, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_k__5 = __pyx_t_1; - __Pyx_GIVEREF(__pyx_t_1); - __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_NONE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 316, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_k__6 = __pyx_t_1; - __Pyx_GIVEREF(__pyx_t_1); - __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_NONE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 316, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_k__5 = __pyx_t_1; - __Pyx_GIVEREF(__pyx_t_1); - __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_NONE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 316, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_k__6 = __pyx_t_1; - __Pyx_GIVEREF(__pyx_t_1); - __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_16__hub_primitives_13wait_write, 0, __pyx_n_s_wait_write, NULL, __pyx_n_s_gevent___hub_primitives, __pyx_d, ((PyObject *)__pyx_codeobj__29)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 316, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_wait_write, __pyx_t_1) < 0) __PYX_ERR(0, 316, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":340 - * - * - * def wait_readwrite(fileno, timeout=None, timeout_exc=_NONE, event=_NONE): # <<<<<<<<<<<<<< - * """ - * wait_readwrite(fileno, timeout=None, [timeout_exc=None]) -> None - */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_NONE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 340, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_k__7 = __pyx_t_1; - __Pyx_GIVEREF(__pyx_t_1); - __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_NONE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 340, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_k__8 = __pyx_t_1; - __Pyx_GIVEREF(__pyx_t_1); - __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_NONE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 340, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_k__7 = __pyx_t_1; - __Pyx_GIVEREF(__pyx_t_1); - __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_NONE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 340, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_k__8 = __pyx_t_1; - __Pyx_GIVEREF(__pyx_t_1); - __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_16__hub_primitives_15wait_readwrite, 0, __pyx_n_s_wait_readwrite, NULL, __pyx_n_s_gevent___hub_primitives, __pyx_d, ((PyObject *)__pyx_codeobj__31)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 340, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_wait_readwrite, __pyx_t_1) < 0) __PYX_ERR(0, 340, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":365 - * - * - * def _init(): # <<<<<<<<<<<<<< - * greenlet_init() # pylint:disable=undefined-variable - * - */ - __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_16__hub_primitives_17_init, 0, __pyx_n_s_init, NULL, __pyx_n_s_gevent___hub_primitives, __pyx_d, ((PyObject *)__pyx_codeobj__32)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 365, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(0, 365, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":368 - * greenlet_init() # pylint:disable=undefined-variable - * - * _init() # <<<<<<<<<<<<<< - * - * from gevent._util import import_c_accel - */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 368, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 368, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_hub_primitives.py":370 - * _init() - * - * from gevent._util import import_c_accel # <<<<<<<<<<<<<< - * import_c_accel(globals(), 'gevent.__hub_primitives') - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 370, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_import_c_accel); - __Pyx_GIVEREF(__pyx_n_s_import_c_accel); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_import_c_accel); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_gevent__util, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 370, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_import_c_accel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 370, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_import_c_accel, __pyx_t_2) < 0) __PYX_ERR(0, 370, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_hub_primitives.py":371 - * - * from gevent._util import import_c_accel - * import_c_accel(globals(), 'gevent.__hub_primitives') # <<<<<<<<<<<<<< - */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_import_c_accel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 371, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_Globals(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 371, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 371, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_gevent___hub_primitives); - __Pyx_GIVEREF(__pyx_n_s_gevent___hub_primitives); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_gevent___hub_primitives); - __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 371, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_hub_primitives.py":1 - * # -*- coding: utf-8 -*- # <<<<<<<<<<<<<< - * # copyright (c) 2018 gevent. See LICENSE. - * # cython: auto_pickle=False,embedsignature=True,always_allow_keywords=False,binding=True - */ - __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/__hub_primitives.pxd":34 - * cdef bint _greenlet_imported - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - - /*--- Wrapped vars code ---*/ - - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - if (__pyx_m) { - if (__pyx_d) { - __Pyx_AddTraceback("init gevent.__hub_primitives", 0, __pyx_lineno, __pyx_filename); - } - Py_DECREF(__pyx_m); __pyx_m = 0; - } else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_ImportError, "init gevent.__hub_primitives"); - } - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - #if CYTHON_PEP489_MULTI_PHASE_INIT - return (__pyx_m != NULL) ? 0 : -1; - #elif PY_MAJOR_VERSION >= 3 - return __pyx_m; - #else - return; - #endif -} - -/* --- Runtime support code --- */ -/* Refnanny */ -#if CYTHON_REFNANNY -static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { - PyObject *m = NULL, *p = NULL; - void *r = NULL; - m = PyImport_ImportModule((char *)modname); - if (!m) goto end; - p = PyObject_GetAttrString(m, (char *)"RefNannyAPI"); - if (!p) goto end; - r = PyLong_AsVoidPtr(p); -end: - Py_XDECREF(p); - Py_XDECREF(m); - return (__Pyx_RefNannyAPIStruct *)r; -} -#endif - -/* PyObjectGetAttrStr */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_getattro)) - return tp->tp_getattro(obj, attr_name); -#if PY_MAJOR_VERSION < 3 - if (likely(tp->tp_getattr)) - return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); -#endif - return PyObject_GetAttr(obj, attr_name); -} -#endif - -/* GetBuiltinName */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name) { - PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); - if (unlikely(!result)) { - PyErr_Format(PyExc_NameError, -#if PY_MAJOR_VERSION >= 3 - "name '%U' is not defined", name); -#else - "name '%.200s' is not defined", PyString_AS_STRING(name)); -#endif - } - return result; -} - -/* PyCFunctionFastCall */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { - PyCFunctionObject *func = (PyCFunctionObject*)func_obj; - PyCFunction meth = PyCFunction_GET_FUNCTION(func); - PyObject *self = PyCFunction_GET_SELF(func); - int flags = PyCFunction_GET_FLAGS(func); - assert(PyCFunction_Check(func)); - assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))); - assert(nargs >= 0); - assert(nargs == 0 || args != NULL); - /* _PyCFunction_FastCallDict() must not be called with an exception set, - because it may clear it (directly or indirectly) and so the - caller loses its exception */ - assert(!PyErr_Occurred()); - if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { - return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL); - } else { - return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs); - } -} -#endif - -/* PyFunctionFastCall */ -#if CYTHON_FAST_PYCALL -#include "frameobject.h" -static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, - PyObject *globals) { - PyFrameObject *f; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject **fastlocals; - Py_ssize_t i; - PyObject *result; - assert(globals != NULL); - /* XXX Perhaps we should create a specialized - PyFrame_New() that doesn't take locals, but does - take builtins without sanity checking them. - */ - assert(tstate != NULL); - f = PyFrame_New(tstate, co, globals, NULL); - if (f == NULL) { - return NULL; - } - fastlocals = f->f_localsplus; - for (i = 0; i < na; i++) { - Py_INCREF(*args); - fastlocals[i] = *args++; - } - result = PyEval_EvalFrameEx(f,0); - ++tstate->recursion_depth; - Py_DECREF(f); - --tstate->recursion_depth; - return result; -} -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs) { - PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); - PyObject *globals = PyFunction_GET_GLOBALS(func); - PyObject *argdefs = PyFunction_GET_DEFAULTS(func); - PyObject *closure; -#if PY_MAJOR_VERSION >= 3 - PyObject *kwdefs; -#endif - PyObject *kwtuple, **k; - PyObject **d; - Py_ssize_t nd; - Py_ssize_t nk; - PyObject *result; - assert(kwargs == NULL || PyDict_Check(kwargs)); - nk = kwargs ? PyDict_Size(kwargs) : 0; - if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { - return NULL; - } - if ( -#if PY_MAJOR_VERSION >= 3 - co->co_kwonlyargcount == 0 && -#endif - likely(kwargs == NULL || nk == 0) && - co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { - if (argdefs == NULL && co->co_argcount == nargs) { - result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); - goto done; - } - else if (nargs == 0 && argdefs != NULL - && co->co_argcount == Py_SIZE(argdefs)) { - /* function called with no arguments, but all parameters have - a default value: use default values as arguments .*/ - args = &PyTuple_GET_ITEM(argdefs, 0); - result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); - goto done; - } - } - if (kwargs != NULL) { - Py_ssize_t pos, i; - kwtuple = PyTuple_New(2 * nk); - if (kwtuple == NULL) { - result = NULL; - goto done; - } - k = &PyTuple_GET_ITEM(kwtuple, 0); - pos = i = 0; - while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { - Py_INCREF(k[i]); - Py_INCREF(k[i+1]); - i += 2; - } - nk = i / 2; - } - else { - kwtuple = NULL; - k = NULL; - } - closure = PyFunction_GET_CLOSURE(func); -#if PY_MAJOR_VERSION >= 3 - kwdefs = PyFunction_GET_KW_DEFAULTS(func); -#endif - if (argdefs != NULL) { - d = &PyTuple_GET_ITEM(argdefs, 0); - nd = Py_SIZE(argdefs); - } - else { - d = NULL; - nd = 0; - } -#if PY_MAJOR_VERSION >= 3 - result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, - args, nargs, - k, (int)nk, - d, (int)nd, kwdefs, closure); -#else - result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, - args, nargs, - k, (int)nk, - d, (int)nd, closure); -#endif - Py_XDECREF(kwtuple); -done: - Py_LeaveRecursiveCall(); - return result; -} -#endif -#endif - -/* PyObjectCall */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { - PyObject *result; - ternaryfunc call = func->ob_type->tp_call; - if (unlikely(!call)) - return PyObject_Call(func, arg, kw); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = (*call)(func, arg, kw); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCallMethO */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { - PyObject *self, *result; - PyCFunction cfunc; - cfunc = PyCFunction_GET_FUNCTION(func); - self = PyCFunction_GET_SELF(func); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = cfunc(self, arg); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCallOneArg */ -#if CYTHON_COMPILING_IN_CPYTHON -static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_New(1); - if (unlikely(!args)) return NULL; - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 0, arg); - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, &arg, 1); - } -#endif - if (likely(PyCFunction_Check(func))) { - if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { - return __Pyx_PyObject_CallMethO(func, arg); -#if CYTHON_FAST_PYCCALL - } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { - return __Pyx_PyCFunction_FastCall(func, &arg, 1); -#endif - } - } - return __Pyx__PyObject_CallOneArg(func, arg); -} -#else -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_Pack(1, arg); - if (unlikely(!args)) return NULL; - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -#endif - -/* PyErrFetchRestore */ -#if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - tmp_type = tstate->curexc_type; - tmp_value = tstate->curexc_value; - tmp_tb = tstate->curexc_traceback; - tstate->curexc_type = type; - tstate->curexc_value = value; - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - *type = tstate->curexc_type; - *value = tstate->curexc_value; - *tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -} -#endif - -/* RaiseException */ -#if PY_MAJOR_VERSION < 3 -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, - CYTHON_UNUSED PyObject *cause) { - __Pyx_PyThreadState_declare - Py_XINCREF(type); - if (!value || value == Py_None) - value = NULL; - else - Py_INCREF(value); - if (!tb || tb == Py_None) - tb = NULL; - else { - Py_INCREF(tb); - if (!PyTraceBack_Check(tb)) { - PyErr_SetString(PyExc_TypeError, - "raise: arg 3 must be a traceback or None"); - goto raise_error; - } - } - if (PyType_Check(type)) { -#if CYTHON_COMPILING_IN_PYPY - if (!value) { - Py_INCREF(Py_None); - value = Py_None; - } -#endif - PyErr_NormalizeException(&type, &value, &tb); - } else { - if (value) { - PyErr_SetString(PyExc_TypeError, - "instance exception may not have a separate value"); - goto raise_error; - } - value = type; - type = (PyObject*) Py_TYPE(type); - Py_INCREF(type); - if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { - PyErr_SetString(PyExc_TypeError, - "raise: exception class must be a subclass of BaseException"); - goto raise_error; - } - } - __Pyx_PyThreadState_assign - __Pyx_ErrRestore(type, value, tb); - return; -raise_error: - Py_XDECREF(value); - Py_XDECREF(type); - Py_XDECREF(tb); - return; -} -#else -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { - PyObject* owned_instance = NULL; - if (tb == Py_None) { - tb = 0; - } else if (tb && !PyTraceBack_Check(tb)) { - PyErr_SetString(PyExc_TypeError, - "raise: arg 3 must be a traceback or None"); - goto bad; - } - if (value == Py_None) - value = 0; - if (PyExceptionInstance_Check(type)) { - if (value) { - PyErr_SetString(PyExc_TypeError, - "instance exception may not have a separate value"); - goto bad; - } - value = type; - type = (PyObject*) Py_TYPE(value); - } else if (PyExceptionClass_Check(type)) { - PyObject *instance_class = NULL; - if (value && PyExceptionInstance_Check(value)) { - instance_class = (PyObject*) Py_TYPE(value); - if (instance_class != type) { - int is_subclass = PyObject_IsSubclass(instance_class, type); - if (!is_subclass) { - instance_class = NULL; - } else if (unlikely(is_subclass == -1)) { - goto bad; - } else { - type = instance_class; - } - } - } - if (!instance_class) { - PyObject *args; - if (!value) - args = PyTuple_New(0); - else if (PyTuple_Check(value)) { - Py_INCREF(value); - args = value; - } else - args = PyTuple_Pack(1, value); - if (!args) - goto bad; - owned_instance = PyObject_Call(type, args, NULL); - Py_DECREF(args); - if (!owned_instance) - goto bad; - value = owned_instance; - if (!PyExceptionInstance_Check(value)) { - PyErr_Format(PyExc_TypeError, - "calling %R should have returned an instance of " - "BaseException, not %R", - type, Py_TYPE(value)); - goto bad; - } - } - } else { - PyErr_SetString(PyExc_TypeError, - "raise: exception class must be a subclass of BaseException"); - goto bad; - } - if (cause) { - PyObject *fixed_cause; - if (cause == Py_None) { - fixed_cause = NULL; - } else if (PyExceptionClass_Check(cause)) { - fixed_cause = PyObject_CallObject(cause, NULL); - if (fixed_cause == NULL) - goto bad; - } else if (PyExceptionInstance_Check(cause)) { - fixed_cause = cause; - Py_INCREF(fixed_cause); - } else { - PyErr_SetString(PyExc_TypeError, - "exception causes must derive from " - "BaseException"); - goto bad; - } - PyException_SetCause(value, fixed_cause); - } - PyErr_SetObject(type, value); - if (tb) { -#if CYTHON_COMPILING_IN_PYPY - PyObject *tmp_type, *tmp_value, *tmp_tb; - PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); - Py_INCREF(tb); - PyErr_Restore(tmp_type, tmp_value, tb); - Py_XDECREF(tmp_tb); -#else - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject* tmp_tb = tstate->curexc_traceback; - if (tb != tmp_tb) { - Py_INCREF(tb); - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_tb); - } -#endif - } -bad: - Py_XDECREF(owned_instance); - return; -} -#endif - -/* PyObjectCallNoArg */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, NULL, 0); - } -#endif -#ifdef __Pyx_CyFunction_USED - if (likely(PyCFunction_Check(func) || __Pyx_TypeCheck(func, __pyx_CyFunctionType))) { -#else - if (likely(PyCFunction_Check(func))) { -#endif - if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { - return __Pyx_PyObject_CallMethO(func, NULL); - } - } - return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL); -} -#endif - -/* GetException */ - #if CYTHON_FAST_THREAD_STATE -static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { -#else -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) { -#endif - PyObject *local_type, *local_value, *local_tb; -#if CYTHON_FAST_THREAD_STATE - PyObject *tmp_type, *tmp_value, *tmp_tb; - local_type = tstate->curexc_type; - local_value = tstate->curexc_value; - local_tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -#else - PyErr_Fetch(&local_type, &local_value, &local_tb); -#endif - PyErr_NormalizeException(&local_type, &local_value, &local_tb); -#if CYTHON_FAST_THREAD_STATE - if (unlikely(tstate->curexc_type)) -#else - if (unlikely(PyErr_Occurred())) -#endif - goto bad; - #if PY_MAJOR_VERSION >= 3 - if (local_tb) { - if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) - goto bad; - } - #endif - Py_XINCREF(local_tb); - Py_XINCREF(local_type); - Py_XINCREF(local_value); - *type = local_type; - *value = local_value; - *tb = local_tb; -#if CYTHON_FAST_THREAD_STATE - #if PY_VERSION_HEX >= 0x030700A3 - tmp_type = tstate->exc_state.exc_type; - tmp_value = tstate->exc_state.exc_value; - tmp_tb = tstate->exc_state.exc_traceback; - tstate->exc_state.exc_type = local_type; - tstate->exc_state.exc_value = local_value; - tstate->exc_state.exc_traceback = local_tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = local_type; - tstate->exc_value = local_value; - tstate->exc_traceback = local_tb; - #endif - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -#else - PyErr_SetExcInfo(local_type, local_value, local_tb); -#endif - return 0; -bad: - *type = 0; - *value = 0; - *tb = 0; - Py_XDECREF(local_type); - Py_XDECREF(local_value); - Py_XDECREF(local_tb); - return -1; -} - -/* SwapException */ - #if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - #if PY_VERSION_HEX >= 0x030700A3 - tmp_type = tstate->exc_state.exc_type; - tmp_value = tstate->exc_state.exc_value; - tmp_tb = tstate->exc_state.exc_traceback; - tstate->exc_state.exc_type = *type; - tstate->exc_state.exc_value = *value; - tstate->exc_state.exc_traceback = *tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = *type; - tstate->exc_value = *value; - tstate->exc_traceback = *tb; - #endif - *type = tmp_type; - *value = tmp_value; - *tb = tmp_tb; -} -#else -static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); - PyErr_SetExcInfo(*type, *value, *tb); - *type = tmp_type; - *value = tmp_value; - *tb = tmp_tb; -} -#endif - -/* SaveResetException */ - #if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - #if PY_VERSION_HEX >= 0x030700A3 - *type = tstate->exc_state.exc_type; - *value = tstate->exc_state.exc_value; - *tb = tstate->exc_state.exc_traceback; - #else - *type = tstate->exc_type; - *value = tstate->exc_value; - *tb = tstate->exc_traceback; - #endif - Py_XINCREF(*type); - Py_XINCREF(*value); - Py_XINCREF(*tb); -} -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - #if PY_VERSION_HEX >= 0x030700A3 - tmp_type = tstate->exc_state.exc_type; - tmp_value = tstate->exc_state.exc_value; - tmp_tb = tstate->exc_state.exc_traceback; - tstate->exc_state.exc_type = type; - tstate->exc_state.exc_value = value; - tstate->exc_state.exc_traceback = tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = type; - tstate->exc_value = value; - tstate->exc_traceback = tb; - #endif - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} -#endif - -/* RaiseArgTupleInvalid */ - static void __Pyx_RaiseArgtupleInvalid( - const char* func_name, - int exact, - Py_ssize_t num_min, - Py_ssize_t num_max, - Py_ssize_t num_found) -{ - Py_ssize_t num_expected; - const char *more_or_less; - if (num_found < num_min) { - num_expected = num_min; - more_or_less = "at least"; - } else { - num_expected = num_max; - more_or_less = "at most"; - } - if (exact) { - more_or_less = "exactly"; - } - PyErr_Format(PyExc_TypeError, - "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", - func_name, more_or_less, num_expected, - (num_expected == 1) ? "" : "s", num_found); -} - -/* RaiseDoubleKeywords */ - static void __Pyx_RaiseDoubleKeywordsError( - const char* func_name, - PyObject* kw_name) -{ - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION >= 3 - "%s() got multiple values for keyword argument '%U'", func_name, kw_name); - #else - "%s() got multiple values for keyword argument '%s'", func_name, - PyString_AsString(kw_name)); - #endif -} - -/* ParseKeywords */ - static int __Pyx_ParseOptionalKeywords( - PyObject *kwds, - PyObject **argnames[], - PyObject *kwds2, - PyObject *values[], - Py_ssize_t num_pos_args, - const char* function_name) -{ - PyObject *key = 0, *value = 0; - Py_ssize_t pos = 0; - PyObject*** name; - PyObject*** first_kw_arg = argnames + num_pos_args; - while (PyDict_Next(kwds, &pos, &key, &value)) { - name = first_kw_arg; - while (*name && (**name != key)) name++; - if (*name) { - values[name-argnames] = value; - continue; - } - name = first_kw_arg; - #if PY_MAJOR_VERSION < 3 - if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) { - while (*name) { - if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) - && _PyString_Eq(**name, key)) { - values[name-argnames] = value; - break; - } - name++; - } - if (*name) continue; - else { - PyObject*** argname = argnames; - while (argname != first_kw_arg) { - if ((**argname == key) || ( - (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) - && _PyString_Eq(**argname, key))) { - goto arg_passed_twice; - } - argname++; - } - } - } else - #endif - if (likely(PyUnicode_Check(key))) { - while (*name) { - int cmp = (**name == key) ? 0 : - #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 : - #endif - PyUnicode_Compare(**name, key); - if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; - if (cmp == 0) { - values[name-argnames] = value; - break; - } - name++; - } - if (*name) continue; - else { - PyObject*** argname = argnames; - while (argname != first_kw_arg) { - int cmp = (**argname == key) ? 0 : - #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 : - #endif - PyUnicode_Compare(**argname, key); - if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; - if (cmp == 0) goto arg_passed_twice; - argname++; - } - } - } else - goto invalid_keyword_type; - if (kwds2) { - if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; - } else { - goto invalid_keyword; - } - } - return 0; -arg_passed_twice: - __Pyx_RaiseDoubleKeywordsError(function_name, key); - goto bad; -invalid_keyword_type: - PyErr_Format(PyExc_TypeError, - "%.200s() keywords must be strings", function_name); - goto bad; -invalid_keyword: - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION < 3 - "%.200s() got an unexpected keyword argument '%.200s'", - function_name, PyString_AsString(key)); - #else - "%s() got an unexpected keyword argument '%U'", - function_name, key); - #endif -bad: - return -1; -} - -/* PyErrExceptionMatches */ - #if CYTHON_FAST_THREAD_STATE -static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; i<n; i++) { - if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1; - } -#endif - for (i=0; i<n; i++) { - if (__Pyx_PyErr_GivenExceptionMatches(exc_type, PyTuple_GET_ITEM(tuple, i))) return 1; - } - return 0; -} -static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) { - PyObject *exc_type = tstate->curexc_type; - if (exc_type == err) return 1; - if (unlikely(!exc_type)) return 0; - if (unlikely(PyTuple_Check(err))) - return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); - return __Pyx_PyErr_GivenExceptionMatches(exc_type, err); -} -#endif - -/* GetAttr */ - static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) { -#if CYTHON_USE_TYPE_SLOTS -#if PY_MAJOR_VERSION >= 3 - if (likely(PyUnicode_Check(n))) -#else - if (likely(PyString_Check(n))) -#endif - return __Pyx_PyObject_GetAttrStr(o, n); -#endif - return PyObject_GetAttr(o, n); -} - -/* GetAttr3 */ - static PyObject *__Pyx_GetAttr3Default(PyObject *d) { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) - return NULL; - __Pyx_PyErr_Clear(); - Py_INCREF(d); - return d; -} -static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) { - PyObject *r = __Pyx_GetAttr(o, n); - return (likely(r)) ? r : __Pyx_GetAttr3Default(d); -} - -/* ExtTypeTest */ - static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { - if (unlikely(!type)) { - PyErr_SetString(PyExc_SystemError, "Missing type object"); - return 0; - } - if (likely(__Pyx_TypeCheck(obj, type))) - return 1; - PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s", - Py_TYPE(obj)->tp_name, type->tp_name); - return 0; -} - -/* GetModuleGlobalName */ - static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { - PyObject *result; -#if !CYTHON_AVOID_BORROWED_REFS -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 - result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); - if (likely(result)) { - Py_INCREF(result); - } else if (unlikely(PyErr_Occurred())) { - result = NULL; - } else { -#else - result = PyDict_GetItem(__pyx_d, name); - if (likely(result)) { - Py_INCREF(result); - } else { -#endif -#else - result = PyObject_GetItem(__pyx_d, name); - if (!result) { - PyErr_Clear(); -#endif - result = __Pyx_GetBuiltinName(name); - } - return result; -} - -/* ArgTypeTest */ - static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact) -{ - if (unlikely(!type)) { - PyErr_SetString(PyExc_SystemError, "Missing type object"); - return 0; - } - else if (exact) { - #if PY_MAJOR_VERSION == 2 - if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1; - #endif - } - else { - if (likely(__Pyx_TypeCheck(obj, type))) return 1; - } - PyErr_Format(PyExc_TypeError, - "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)", - name, type->tp_name, Py_TYPE(obj)->tp_name); - return 0; -} - -/* CallNextTpDealloc */ - static void __Pyx_call_next_tp_dealloc(PyObject* obj, destructor current_tp_dealloc) { - PyTypeObject* type = Py_TYPE(obj); - while (type && type->tp_dealloc != current_tp_dealloc) - type = type->tp_base; - while (type && type->tp_dealloc == current_tp_dealloc) - type = type->tp_base; - if (type) - type->tp_dealloc(obj); -} - -/* CallNextTpTraverse */ - static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse) { - PyTypeObject* type = Py_TYPE(obj); - while (type && type->tp_traverse != current_tp_traverse) - type = type->tp_base; - while (type && type->tp_traverse == current_tp_traverse) - type = type->tp_base; - if (type && type->tp_traverse) - return type->tp_traverse(obj, v, a); - return 0; -} - -/* CallNextTpClear */ - static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_clear) { - PyTypeObject* type = Py_TYPE(obj); - while (type && type->tp_clear != current_tp_clear) - type = type->tp_base; - while (type && type->tp_clear == current_tp_clear) - type = type->tp_base; - if (type && type->tp_clear) - type->tp_clear(obj); -} - -/* GetVTable */ - static void* __Pyx_GetVtable(PyObject *dict) { - void* ptr; - PyObject *ob = PyObject_GetItem(dict, __pyx_n_s_pyx_vtable); - if (!ob) - goto bad; -#if PY_VERSION_HEX >= 0x02070000 - ptr = PyCapsule_GetPointer(ob, 0); -#else - ptr = PyCObject_AsVoidPtr(ob); -#endif - if (!ptr && !PyErr_Occurred()) - PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type"); - Py_DECREF(ob); - return ptr; -bad: - Py_XDECREF(ob); - return NULL; -} - -/* PyObject_GenericGetAttrNoDict */ - #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { - PyErr_Format(PyExc_AttributeError, -#if PY_MAJOR_VERSION >= 3 - "'%.50s' object has no attribute '%U'", - tp->tp_name, attr_name); -#else - "'%.50s' object has no attribute '%.400s'", - tp->tp_name, PyString_AS_STRING(attr_name)); -#endif - return NULL; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { - PyObject *descr; - PyTypeObject *tp = Py_TYPE(obj); - if (unlikely(!PyString_Check(attr_name))) { - return PyObject_GenericGetAttr(obj, attr_name); - } - assert(!tp->tp_dictoffset); - descr = _PyType_Lookup(tp, attr_name); - if (unlikely(!descr)) { - return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); - } - Py_INCREF(descr); - #if PY_MAJOR_VERSION < 3 - if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) - #endif - { - descrgetfunc f = Py_TYPE(descr)->tp_descr_get; - if (unlikely(f)) { - PyObject *res = f(descr, obj, (PyObject *)tp); - Py_DECREF(descr); - return res; - } - } - return descr; -} -#endif - -/* PyObject_GenericGetAttr */ - #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) { - if (unlikely(Py_TYPE(obj)->tp_dictoffset)) { - return PyObject_GenericGetAttr(obj, attr_name); - } - return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name); -} -#endif - -/* SetVTable */ - static int __Pyx_SetVtable(PyObject *dict, void *vtable) { -#if PY_VERSION_HEX >= 0x02070000 - PyObject *ob = PyCapsule_New(vtable, 0, 0); -#else - PyObject *ob = PyCObject_FromVoidPtr(vtable, 0); -#endif - if (!ob) - goto bad; - if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0) - goto bad; - Py_DECREF(ob); - return 0; -bad: - Py_XDECREF(ob); - return -1; -} - -/* Import */ - static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { - PyObject *empty_list = 0; - PyObject *module = 0; - PyObject *global_dict = 0; - PyObject *empty_dict = 0; - PyObject *list; - #if PY_MAJOR_VERSION < 3 - PyObject *py_import; - py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); - if (!py_import) - goto bad; - #endif - if (from_list) - list = from_list; - else { - empty_list = PyList_New(0); - if (!empty_list) - goto bad; - list = empty_list; - } - global_dict = PyModule_GetDict(__pyx_m); - if (!global_dict) - goto bad; - empty_dict = PyDict_New(); - if (!empty_dict) - goto bad; - { - #if PY_MAJOR_VERSION >= 3 - if (level == -1) { - if (strchr(__Pyx_MODULE_NAME, '.')) { - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, 1); - if (!module) { - if (!PyErr_ExceptionMatches(PyExc_ImportError)) - goto bad; - PyErr_Clear(); - } - } - level = 0; - } - #endif - if (!module) { - #if PY_MAJOR_VERSION < 3 - PyObject *py_level = PyInt_FromLong(level); - if (!py_level) - goto bad; - module = PyObject_CallFunctionObjArgs(py_import, - name, global_dict, empty_dict, list, py_level, NULL); - Py_DECREF(py_level); - #else - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, level); - #endif - } - } -bad: - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(py_import); - #endif - Py_XDECREF(empty_list); - Py_XDECREF(empty_dict); - return module; -} - -/* ImportFrom */ - static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { - PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); - if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Format(PyExc_ImportError, - #if PY_MAJOR_VERSION < 3 - "cannot import name %.230s", PyString_AS_STRING(name)); - #else - "cannot import name %S", name); - #endif - } - return value; -} - -/* FetchCommonType */ - static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { - PyObject* fake_module; - PyTypeObject* cached_type = NULL; - fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI); - if (!fake_module) return NULL; - Py_INCREF(fake_module); - cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name); - if (cached_type) { - if (!PyType_Check((PyObject*)cached_type)) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s is not a type object", - type->tp_name); - goto bad; - } - if (cached_type->tp_basicsize != type->tp_basicsize) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s has the wrong size, try recompiling", - type->tp_name); - goto bad; - } - } else { - if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; - PyErr_Clear(); - if (PyType_Ready(type) < 0) goto bad; - if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0) - goto bad; - Py_INCREF(type); - cached_type = type; - } -done: - Py_DECREF(fake_module); - return cached_type; -bad: - Py_XDECREF(cached_type); - cached_type = NULL; - goto done; -} - -/* CythonFunction */ - #include <structmember.h> -static PyObject * -__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure) -{ - if (unlikely(op->func_doc == NULL)) { - if (op->func.m_ml->ml_doc) { -#if PY_MAJOR_VERSION >= 3 - op->func_doc = PyUnicode_FromString(op->func.m_ml->ml_doc); -#else - op->func_doc = PyString_FromString(op->func.m_ml->ml_doc); -#endif - if (unlikely(op->func_doc == NULL)) - return NULL; - } else { - Py_INCREF(Py_None); - return Py_None; - } - } - Py_INCREF(op->func_doc); - return op->func_doc; -} -static int -__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp = op->func_doc; - if (value == NULL) { - value = Py_None; - } - Py_INCREF(value); - op->func_doc = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op) -{ - if (unlikely(op->func_name == NULL)) { -#if PY_MAJOR_VERSION >= 3 - op->func_name = PyUnicode_InternFromString(op->func.m_ml->ml_name); -#else - op->func_name = PyString_InternFromString(op->func.m_ml->ml_name); -#endif - if (unlikely(op->func_name == NULL)) - return NULL; - } - Py_INCREF(op->func_name); - return op->func_name; -} -static int -__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; -#if PY_MAJOR_VERSION >= 3 - if (unlikely(value == NULL || !PyUnicode_Check(value))) { -#else - if (unlikely(value == NULL || !PyString_Check(value))) { -#endif - PyErr_SetString(PyExc_TypeError, - "__name__ must be set to a string object"); - return -1; - } - tmp = op->func_name; - Py_INCREF(value); - op->func_name = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op) -{ - Py_INCREF(op->func_qualname); - return op->func_qualname; -} -static int -__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; -#if PY_MAJOR_VERSION >= 3 - if (unlikely(value == NULL || !PyUnicode_Check(value))) { -#else - if (unlikely(value == NULL || !PyString_Check(value))) { -#endif - PyErr_SetString(PyExc_TypeError, - "__qualname__ must be set to a string object"); - return -1; - } - tmp = op->func_qualname; - Py_INCREF(value); - op->func_qualname = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure) -{ - PyObject *self; - self = m->func_closure; - if (self == NULL) - self = Py_None; - Py_INCREF(self); - return self; -} -static PyObject * -__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op) -{ - if (unlikely(op->func_dict == NULL)) { - op->func_dict = PyDict_New(); - if (unlikely(op->func_dict == NULL)) - return NULL; - } - Py_INCREF(op->func_dict); - return op->func_dict; -} -static int -__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; - if (unlikely(value == NULL)) { - PyErr_SetString(PyExc_TypeError, - "function's dictionary may not be deleted"); - return -1; - } - if (unlikely(!PyDict_Check(value))) { - PyErr_SetString(PyExc_TypeError, - "setting function's dictionary to a non-dict"); - return -1; - } - tmp = op->func_dict; - Py_INCREF(value); - op->func_dict = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op) -{ - Py_INCREF(op->func_globals); - return op->func_globals; -} -static PyObject * -__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op) -{ - Py_INCREF(Py_None); - return Py_None; -} -static PyObject * -__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op) -{ - PyObject* result = (op->func_code) ? op->func_code : Py_None; - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { - int result = 0; - PyObject *res = op->defaults_getter((PyObject *) op); - if (unlikely(!res)) - return -1; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - op->defaults_tuple = PyTuple_GET_ITEM(res, 0); - Py_INCREF(op->defaults_tuple); - op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); - Py_INCREF(op->defaults_kwdict); - #else - op->defaults_tuple = PySequence_ITEM(res, 0); - if (unlikely(!op->defaults_tuple)) result = -1; - else { - op->defaults_kwdict = PySequence_ITEM(res, 1); - if (unlikely(!op->defaults_kwdict)) result = -1; - } - #endif - Py_DECREF(res); - return result; -} -static int -__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value) { - value = Py_None; - } else if (value != Py_None && !PyTuple_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__defaults__ must be set to a tuple object"); - return -1; - } - Py_INCREF(value); - tmp = op->defaults_tuple; - op->defaults_tuple = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) { - PyObject* result = op->defaults_tuple; - if (unlikely(!result)) { - if (op->defaults_getter) { - if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; - result = op->defaults_tuple; - } else { - result = Py_None; - } - } - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value) { - value = Py_None; - } else if (value != Py_None && !PyDict_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__kwdefaults__ must be set to a dict object"); - return -1; - } - Py_INCREF(value); - tmp = op->defaults_kwdict; - op->defaults_kwdict = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) { - PyObject* result = op->defaults_kwdict; - if (unlikely(!result)) { - if (op->defaults_getter) { - if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; - result = op->defaults_kwdict; - } else { - result = Py_None; - } - } - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value || value == Py_None) { - value = NULL; - } else if (!PyDict_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__annotations__ must be set to a dict object"); - return -1; - } - Py_XINCREF(value); - tmp = op->func_annotations; - op->func_annotations = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op) { - PyObject* result = op->func_annotations; - if (unlikely(!result)) { - result = PyDict_New(); - if (unlikely(!result)) return NULL; - op->func_annotations = result; - } - Py_INCREF(result); - return result; -} -static PyGetSetDef __pyx_CyFunction_getsets[] = { - {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, - {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, - {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, - {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, - {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, - {(char *) "__self__", (getter)__Pyx_CyFunction_get_self, 0, 0, 0}, - {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, - {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, - {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, - {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, - {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, - {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, - {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, - {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, - {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, - {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, - {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, - {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, - {0, 0, 0, 0, 0} -}; -static PyMemberDef __pyx_CyFunction_members[] = { - {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), PY_WRITE_RESTRICTED, 0}, - {0, 0, 0, 0, 0} -}; -static PyObject * -__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args) -{ -#if PY_MAJOR_VERSION >= 3 - return PyUnicode_FromString(m->func.m_ml->ml_name); -#else - return PyString_FromString(m->func.m_ml->ml_name); -#endif -} -static PyMethodDef __pyx_CyFunction_methods[] = { - {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, - {0, 0, 0, 0} -}; -#if PY_VERSION_HEX < 0x030500A0 -#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) -#else -#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func.m_weakreflist) -#endif -static PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *ml, int flags, PyObject* qualname, - PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { - __pyx_CyFunctionObject *op = PyObject_GC_New(__pyx_CyFunctionObject, type); - if (op == NULL) - return NULL; - op->flags = flags; - __Pyx_CyFunction_weakreflist(op) = NULL; - op->func.m_ml = ml; - op->func.m_self = (PyObject *) op; - Py_XINCREF(closure); - op->func_closure = closure; - Py_XINCREF(module); - op->func.m_module = module; - op->func_dict = NULL; - op->func_name = NULL; - Py_INCREF(qualname); - op->func_qualname = qualname; - op->func_doc = NULL; - op->func_classobj = NULL; - op->func_globals = globals; - Py_INCREF(op->func_globals); - Py_XINCREF(code); - op->func_code = code; - op->defaults_pyobjects = 0; - op->defaults = NULL; - op->defaults_tuple = NULL; - op->defaults_kwdict = NULL; - op->defaults_getter = NULL; - op->func_annotations = NULL; - PyObject_GC_Track(op); - return (PyObject *) op; -} -static int -__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) -{ - Py_CLEAR(m->func_closure); - Py_CLEAR(m->func.m_module); - Py_CLEAR(m->func_dict); - Py_CLEAR(m->func_name); - Py_CLEAR(m->func_qualname); - Py_CLEAR(m->func_doc); - Py_CLEAR(m->func_globals); - Py_CLEAR(m->func_code); - Py_CLEAR(m->func_classobj); - Py_CLEAR(m->defaults_tuple); - Py_CLEAR(m->defaults_kwdict); - Py_CLEAR(m->func_annotations); - if (m->defaults) { - PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); - int i; - for (i = 0; i < m->defaults_pyobjects; i++) - Py_XDECREF(pydefaults[i]); - PyObject_Free(m->defaults); - m->defaults = NULL; - } - return 0; -} -static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) -{ - if (__Pyx_CyFunction_weakreflist(m) != NULL) - PyObject_ClearWeakRefs((PyObject *) m); - __Pyx_CyFunction_clear(m); - PyObject_GC_Del(m); -} -static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) -{ - PyObject_GC_UnTrack(m); - __Pyx__CyFunction_dealloc(m); -} -static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) -{ - Py_VISIT(m->func_closure); - Py_VISIT(m->func.m_module); - Py_VISIT(m->func_dict); - Py_VISIT(m->func_name); - Py_VISIT(m->func_qualname); - Py_VISIT(m->func_doc); - Py_VISIT(m->func_globals); - Py_VISIT(m->func_code); - Py_VISIT(m->func_classobj); - Py_VISIT(m->defaults_tuple); - Py_VISIT(m->defaults_kwdict); - if (m->defaults) { - PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); - int i; - for (i = 0; i < m->defaults_pyobjects; i++) - Py_VISIT(pydefaults[i]); - } - return 0; -} -static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type) -{ - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) { - Py_INCREF(func); - return func; - } - if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) { - if (type == NULL) - type = (PyObject *)(Py_TYPE(obj)); - return __Pyx_PyMethod_New(func, type, (PyObject *)(Py_TYPE(type))); - } - if (obj == Py_None) - obj = NULL; - return __Pyx_PyMethod_New(func, obj, type); -} -static PyObject* -__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) -{ -#if PY_MAJOR_VERSION >= 3 - return PyUnicode_FromFormat("<cyfunction %U at %p>", - op->func_qualname, (void *)op); -#else - return PyString_FromFormat("<cyfunction %s at %p>", - PyString_AsString(op->func_qualname), (void *)op); -#endif -} -static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { - PyCFunctionObject* f = (PyCFunctionObject*)func; - PyCFunction meth = f->m_ml->ml_meth; - Py_ssize_t size; - switch (f->m_ml->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { - case METH_VARARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) - return (*meth)(self, arg); - break; - case METH_VARARGS | METH_KEYWORDS: - return (*(PyCFunctionWithKeywords)meth)(self, arg, kw); - case METH_NOARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { - size = PyTuple_GET_SIZE(arg); - if (likely(size == 0)) - return (*meth)(self, NULL); - PyErr_Format(PyExc_TypeError, - "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", - f->m_ml->ml_name, size); - return NULL; - } - break; - case METH_O: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { - size = PyTuple_GET_SIZE(arg); - if (likely(size == 1)) { - PyObject *result, *arg0; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - arg0 = PyTuple_GET_ITEM(arg, 0); - #else - arg0 = PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; - #endif - result = (*meth)(self, arg0); - #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) - Py_DECREF(arg0); - #endif - return result; - } - PyErr_Format(PyExc_TypeError, - "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", - f->m_ml->ml_name, size); - return NULL; - } - break; - default: - PyErr_SetString(PyExc_SystemError, "Bad call flags in " - "__Pyx_CyFunction_Call. METH_OLDARGS is no " - "longer supported!"); - return NULL; - } - PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", - f->m_ml->ml_name); - return NULL; -} -static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { - return __Pyx_CyFunction_CallMethod(func, ((PyCFunctionObject*)func)->m_self, arg, kw); -} -static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { - PyObject *result; - __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; - if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { - Py_ssize_t argc; - PyObject *new_args; - PyObject *self; - argc = PyTuple_GET_SIZE(args); - new_args = PyTuple_GetSlice(args, 1, argc); - if (unlikely(!new_args)) - return NULL; - self = PyTuple_GetItem(args, 0); - if (unlikely(!self)) { - Py_DECREF(new_args); - return NULL; - } - result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); - Py_DECREF(new_args); - } else { - result = __Pyx_CyFunction_Call(func, args, kw); - } - return result; -} -static PyTypeObject __pyx_CyFunctionType_type = { - PyVarObject_HEAD_INIT(0, 0) - "cython_function_or_method", - sizeof(__pyx_CyFunctionObject), - 0, - (destructor) __Pyx_CyFunction_dealloc, - 0, - 0, - 0, -#if PY_MAJOR_VERSION < 3 - 0, -#else - 0, -#endif - (reprfunc) __Pyx_CyFunction_repr, - 0, - 0, - 0, - 0, - __Pyx_CyFunction_CallAsMethod, - 0, - 0, - 0, - 0, - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, - 0, - (traverseproc) __Pyx_CyFunction_traverse, - (inquiry) __Pyx_CyFunction_clear, - 0, -#if PY_VERSION_HEX < 0x030500A0 - offsetof(__pyx_CyFunctionObject, func_weakreflist), -#else - offsetof(PyCFunctionObject, m_weakreflist), -#endif - 0, - 0, - __pyx_CyFunction_methods, - __pyx_CyFunction_members, - __pyx_CyFunction_getsets, - 0, - 0, - __Pyx_CyFunction_descr_get, - 0, - offsetof(__pyx_CyFunctionObject, func_dict), - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, -#if PY_VERSION_HEX >= 0x030400a1 - 0, -#endif -}; -static int __pyx_CyFunction_init(void) { - __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); - if (unlikely(__pyx_CyFunctionType == NULL)) { - return -1; - } - return 0; -} -static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults = PyObject_Malloc(size); - if (unlikely(!m->defaults)) - return PyErr_NoMemory(); - memset(m->defaults, 0, size); - m->defaults_pyobjects = pyobjects; - return m->defaults; -} -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults_tuple = tuple; - Py_INCREF(tuple); -} -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults_kwdict = dict; - Py_INCREF(dict); -} -static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->func_annotations = dict; - Py_INCREF(dict); -} - -/* GetNameInClass */ - static PyObject *__Pyx_GetGlobalNameAfterAttributeLookup(PyObject *name) { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) - return NULL; - __Pyx_PyErr_Clear(); - return __Pyx_GetModuleGlobalName(name); -} -static PyObject *__Pyx_GetNameInClass(PyObject *nmspace, PyObject *name) { - PyObject *result; - result = __Pyx_PyObject_GetAttrStr(nmspace, name); - if (!result) { - result = __Pyx_GetGlobalNameAfterAttributeLookup(name); - } - return result; -} - -/* Globals */ - static PyObject* __Pyx_Globals(void) { - Py_ssize_t i; - PyObject *names; - PyObject *globals = __pyx_d; - Py_INCREF(globals); - names = PyObject_Dir(__pyx_m); - if (!names) - goto bad; - for (i = PyList_GET_SIZE(names)-1; i >= 0; i--) { -#if CYTHON_COMPILING_IN_PYPY - PyObject* name = PySequence_ITEM(names, i); - if (!name) - goto bad; -#else - PyObject* name = PyList_GET_ITEM(names, i); -#endif - if (!PyDict_Contains(globals, name)) { - PyObject* value = __Pyx_GetAttr(__pyx_m, name); - if (!value) { -#if CYTHON_COMPILING_IN_PYPY - Py_DECREF(name); -#endif - goto bad; - } - if (PyDict_SetItem(globals, name, value) < 0) { -#if CYTHON_COMPILING_IN_PYPY - Py_DECREF(name); -#endif - Py_DECREF(value); - goto bad; - } - } -#if CYTHON_COMPILING_IN_PYPY - Py_DECREF(name); -#endif - } - Py_DECREF(names); - return globals; -bad: - Py_XDECREF(names); - Py_XDECREF(globals); - return NULL; -} - -/* CLineInTraceback */ - #ifndef CYTHON_CLINE_IN_TRACEBACK -static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) { - PyObject *use_cline; - PyObject *ptype, *pvalue, *ptraceback; -#if CYTHON_COMPILING_IN_CPYTHON - PyObject **cython_runtime_dict; -#endif - if (unlikely(!__pyx_cython_runtime)) { - return c_line; - } - __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); -#if CYTHON_COMPILING_IN_CPYTHON - cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); - if (likely(cython_runtime_dict)) { - use_cline = __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback); - } else -#endif - { - PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); - if (use_cline_obj) { - use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; - Py_DECREF(use_cline_obj); - } else { - PyErr_Clear(); - use_cline = NULL; - } - } - if (!use_cline) { - c_line = 0; - PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); - } - else if (PyObject_Not(use_cline) != 0) { - c_line = 0; - } - __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); - return c_line; -} -#endif - -/* CodeObjectCache */ - static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { - int start = 0, mid = 0, end = count - 1; - if (end >= 0 && code_line > entries[end].code_line) { - return count; - } - while (start < end) { - mid = start + (end - start) / 2; - if (code_line < entries[mid].code_line) { - end = mid; - } else if (code_line > entries[mid].code_line) { - start = mid + 1; - } else { - return mid; - } - } - if (code_line <= entries[mid].code_line) { - return mid; - } else { - return mid + 1; - } -} -static PyCodeObject *__pyx_find_code_object(int code_line) { - PyCodeObject* code_object; - int pos; - if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { - return NULL; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { - return NULL; - } - code_object = __pyx_code_cache.entries[pos].code_object; - Py_INCREF(code_object); - return code_object; -} -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { - int pos, i; - __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; - if (unlikely(!code_line)) { - return; - } - if (unlikely(!entries)) { - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); - if (likely(entries)) { - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = 64; - __pyx_code_cache.count = 1; - entries[0].code_line = code_line; - entries[0].code_object = code_object; - Py_INCREF(code_object); - } - return; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { - PyCodeObject* tmp = entries[pos].code_object; - entries[pos].code_object = code_object; - Py_DECREF(tmp); - return; - } - if (__pyx_code_cache.count == __pyx_code_cache.max_count) { - int new_max = __pyx_code_cache.max_count + 64; - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( - __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry)); - if (unlikely(!entries)) { - return; - } - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = new_max; - } - for (i=__pyx_code_cache.count; i>pos; i--) { - entries[i] = entries[i-1]; - } - entries[pos].code_line = code_line; - entries[pos].code_object = code_object; - __pyx_code_cache.count++; - Py_INCREF(code_object); -} - -/* AddTraceback */ - #include "compile.h" -#include "frameobject.h" -#include "traceback.h" -static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( - const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyObject *py_srcfile = 0; - PyObject *py_funcname = 0; - #if PY_MAJOR_VERSION < 3 - py_srcfile = PyString_FromString(filename); - #else - py_srcfile = PyUnicode_FromString(filename); - #endif - if (!py_srcfile) goto bad; - if (c_line) { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #else - py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #endif - } - else { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromString(funcname); - #else - py_funcname = PyUnicode_FromString(funcname); - #endif - } - if (!py_funcname) goto bad; - py_code = __Pyx_PyCode_New( - 0, - 0, - 0, - 0, - 0, - __pyx_empty_bytes, /*PyObject *code,*/ - __pyx_empty_tuple, /*PyObject *consts,*/ - __pyx_empty_tuple, /*PyObject *names,*/ - __pyx_empty_tuple, /*PyObject *varnames,*/ - __pyx_empty_tuple, /*PyObject *freevars,*/ - __pyx_empty_tuple, /*PyObject *cellvars,*/ - py_srcfile, /*PyObject *filename,*/ - py_funcname, /*PyObject *name,*/ - py_line, - __pyx_empty_bytes /*PyObject *lnotab*/ - ); - Py_DECREF(py_srcfile); - Py_DECREF(py_funcname); - return py_code; -bad: - Py_XDECREF(py_srcfile); - Py_XDECREF(py_funcname); - return NULL; -} -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyFrameObject *py_frame = 0; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - if (c_line) { - c_line = __Pyx_CLineForTraceback(tstate, c_line); - } - py_code = __pyx_find_code_object(c_line ? -c_line : py_line); - if (!py_code) { - py_code = __Pyx_CreateCodeObjectForTraceback( - funcname, c_line, py_line, filename); - if (!py_code) goto bad; - __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); - } - py_frame = PyFrame_New( - tstate, /*PyThreadState *tstate,*/ - py_code, /*PyCodeObject *code,*/ - __pyx_d, /*PyObject *globals,*/ - 0 /*PyObject *locals*/ - ); - if (!py_frame) goto bad; - __Pyx_PyFrame_SetLineNumber(py_frame, py_line); - PyTraceBack_Here(py_frame); -bad: - Py_XDECREF(py_code); - Py_XDECREF(py_frame); -} - -/* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { - const long neg_one = (long) -1, const_zero = (long) 0; - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(long) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(long) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -#endif - } - } else { - if (sizeof(long) <= sizeof(long)) { - return PyInt_FromLong((long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); -#endif - } - } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; - return _PyLong_FromByteArray(bytes, sizeof(long), - little, !is_unsigned); - } -} - -/* CIntFromPyVerify */ - #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) -#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) -#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ - {\ - func_type value = func_value;\ - if (sizeof(target_type) < sizeof(func_type)) {\ - if (unlikely(value != (func_type) (target_type) value)) {\ - func_type zero = 0;\ - if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ - return (target_type) -1;\ - if (is_unsigned && unlikely(value < zero))\ - goto raise_neg_overflow;\ - else\ - goto raise_overflow;\ - }\ - }\ - return (target_type) value;\ - } - -/* CIntFromPy */ - static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { - const long neg_one = (long) -1, const_zero = (long) 0; - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(long) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (long) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { - return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { - return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { - return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (long) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(long) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) - case -2: - if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - } -#endif - if (sizeof(long) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - long val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (long) -1; - } - } else { - long val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (long) -1; - val = __Pyx_PyInt_As_long(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to long"); - return (long) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to long"); - return (long) -1; -} - -/* CIntFromPy */ - static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { - const int neg_one = (int) -1, const_zero = (int) 0; - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(int) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (int) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (int) 0; - case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { - return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { - return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { - return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (int) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(int) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (int) 0; - case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) - case -2: - if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - } -#endif - if (sizeof(int) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - int val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (int) -1; - } - } else { - int val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (int) -1; - val = __Pyx_PyInt_As_int(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to int"); - return (int) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to int"); - return (int) -1; -} - -/* FastTypeChecks */ - #if CYTHON_COMPILING_IN_CPYTHON -static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { - while (a) { - a = a->tp_base; - if (a == b) - return 1; - } - return b == &PyBaseObject_Type; -} -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { - PyObject *mro; - if (a == b) return 1; - mro = a->tp_mro; - if (likely(mro)) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(mro); - for (i = 0; i < n; i++) { - if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) - return 1; - } - return 0; - } - return __Pyx_InBases(a, b); -} -#if PY_MAJOR_VERSION == 2 -static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { - PyObject *exception, *value, *tb; - int res; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&exception, &value, &tb); - res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - if (!res) { - res = PyObject_IsSubclass(err, exc_type2); - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - } - __Pyx_ErrRestore(exception, value, tb); - return res; -} -#else -static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { - int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0; - if (!res) { - res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); - } - return res; -} -#endif -static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - assert(PyExceptionClass_Check(exc_type)); - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; i<n; i++) { - if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1; - } -#endif - for (i=0; i<n; i++) { - PyObject *t = PyTuple_GET_ITEM(tuple, i); - #if PY_MAJOR_VERSION < 3 - if (likely(exc_type == t)) return 1; - #endif - if (likely(PyExceptionClass_Check(t))) { - if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1; - } else { - } - } - return 0; -} -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) { - if (likely(err == exc_type)) return 1; - if (likely(PyExceptionClass_Check(err))) { - if (likely(PyExceptionClass_Check(exc_type))) { - return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type); - } else if (likely(PyTuple_Check(exc_type))) { - return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type); - } else { - } - } - return PyErr_GivenExceptionMatches(err, exc_type); -} -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) { - assert(PyExceptionClass_Check(exc_type1)); - assert(PyExceptionClass_Check(exc_type2)); - if (likely(err == exc_type1 || err == exc_type2)) return 1; - if (likely(PyExceptionClass_Check(err))) { - return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2); - } - return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2)); -} -#endif - -/* CheckBinaryVersion */ - static int __Pyx_check_binary_version(void) { - char ctversion[4], rtversion[4]; - PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); - PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); - if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) { - char message[200]; - PyOS_snprintf(message, sizeof(message), - "compiletime version %s of module '%.100s' " - "does not match runtime version %s", - ctversion, __Pyx_MODULE_NAME, rtversion); - return PyErr_WarnEx(NULL, message, 1); - } - return 0; -} - -/* PyObjectSetAttrStr */ - #if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_setattro)) - return tp->tp_setattro(obj, attr_name, value); -#if PY_MAJOR_VERSION < 3 - if (likely(tp->tp_setattr)) - return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value); -#endif - return PyObject_SetAttr(obj, attr_name, value); -} -#endif - -/* VoidPtrExport */ - static int __Pyx_ExportVoidPtr(PyObject *name, void *p, const char *sig) { - PyObject *d; - PyObject *cobj = 0; - d = PyDict_GetItem(__pyx_d, __pyx_n_s_pyx_capi); - Py_XINCREF(d); - if (!d) { - d = PyDict_New(); - if (!d) - goto bad; - if (__Pyx_PyObject_SetAttrStr(__pyx_m, __pyx_n_s_pyx_capi, d) < 0) - goto bad; - } -#if PY_VERSION_HEX >= 0x02070000 - cobj = PyCapsule_New(p, sig, 0); -#else - cobj = PyCObject_FromVoidPtrAndDesc(p, (void *)sig, 0); -#endif - if (!cobj) - goto bad; - if (PyDict_SetItem(d, name, cobj) < 0) - goto bad; - Py_DECREF(cobj); - Py_DECREF(d); - return 0; -bad: - Py_XDECREF(cobj); - Py_XDECREF(d); - return -1; -} - -/* FunctionExport */ - static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) { - PyObject *d = 0; - PyObject *cobj = 0; - union { - void (*fp)(void); - void *p; - } tmp; - d = PyObject_GetAttrString(__pyx_m, (char *)"__pyx_capi__"); - if (!d) { - PyErr_Clear(); - d = PyDict_New(); - if (!d) - goto bad; - Py_INCREF(d); - if (PyModule_AddObject(__pyx_m, (char *)"__pyx_capi__", d) < 0) - goto bad; - } - tmp.fp = f; -#if PY_VERSION_HEX >= 0x02070000 - cobj = PyCapsule_New(tmp.p, sig, 0); -#else - cobj = PyCObject_FromVoidPtrAndDesc(tmp.p, (void *)sig, 0); -#endif - if (!cobj) - goto bad; - if (PyDict_SetItemString(d, name, cobj) < 0) - goto bad; - Py_DECREF(cobj); - Py_DECREF(d); - return 0; -bad: - Py_XDECREF(cobj); - Py_XDECREF(d); - return -1; -} - -/* ModuleImport */ - #ifndef __PYX_HAVE_RT_ImportModule -#define __PYX_HAVE_RT_ImportModule -static PyObject *__Pyx_ImportModule(const char *name) { - PyObject *py_name = 0; - PyObject *py_module = 0; - py_name = __Pyx_PyIdentifier_FromString(name); - if (!py_name) - goto bad; - py_module = PyImport_Import(py_name); - Py_DECREF(py_name); - return py_module; -bad: - Py_XDECREF(py_name); - return 0; -} -#endif - -/* TypeImport */ - #ifndef __PYX_HAVE_RT_ImportType -#define __PYX_HAVE_RT_ImportType -static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, - size_t size, int strict) -{ - PyObject *py_module = 0; - PyObject *result = 0; - PyObject *py_name = 0; - char warning[200]; - Py_ssize_t basicsize; -#ifdef Py_LIMITED_API - PyObject *py_basicsize; -#endif - py_module = __Pyx_ImportModule(module_name); - if (!py_module) - goto bad; - py_name = __Pyx_PyIdentifier_FromString(class_name); - if (!py_name) - goto bad; - result = PyObject_GetAttr(py_module, py_name); - Py_DECREF(py_name); - py_name = 0; - Py_DECREF(py_module); - py_module = 0; - if (!result) - goto bad; - if (!PyType_Check(result)) { - PyErr_Format(PyExc_TypeError, - "%.200s.%.200s is not a type object", - module_name, class_name); - goto bad; - } -#ifndef Py_LIMITED_API - basicsize = ((PyTypeObject *)result)->tp_basicsize; -#else - py_basicsize = PyObject_GetAttrString(result, "__basicsize__"); - if (!py_basicsize) - goto bad; - basicsize = PyLong_AsSsize_t(py_basicsize); - Py_DECREF(py_basicsize); - py_basicsize = 0; - if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred()) - goto bad; -#endif - if (!strict && (size_t)basicsize > size) { - PyOS_snprintf(warning, sizeof(warning), - "%s.%s size changed, may indicate binary incompatibility. Expected %zd, got %zd", - module_name, class_name, basicsize, size); - if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad; - } - else if ((size_t)basicsize != size) { - PyErr_Format(PyExc_ValueError, - "%.200s.%.200s has the wrong size, try recompiling. Expected %zd, got %zd", - module_name, class_name, basicsize, size); - goto bad; - } - return (PyTypeObject *)result; -bad: - Py_XDECREF(py_module); - Py_XDECREF(result); - return NULL; -} -#endif - -/* VoidPtrImport */ - #ifndef __PYX_HAVE_RT_ImportVoidPtr -#define __PYX_HAVE_RT_ImportVoidPtr -static int __Pyx_ImportVoidPtr(PyObject *module, const char *name, void **p, const char *sig) { - PyObject *d = 0; - PyObject *cobj = 0; - d = PyObject_GetAttrString(module, (char *)"__pyx_capi__"); - if (!d) - goto bad; - cobj = PyDict_GetItemString(d, name); - if (!cobj) { - PyErr_Format(PyExc_ImportError, - "%.200s does not export expected C variable %.200s", - PyModule_GetName(module), name); - goto bad; - } -#if PY_VERSION_HEX >= 0x02070000 - if (!PyCapsule_IsValid(cobj, sig)) { - PyErr_Format(PyExc_TypeError, - "C variable %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", - PyModule_GetName(module), name, sig, PyCapsule_GetName(cobj)); - goto bad; - } - *p = PyCapsule_GetPointer(cobj, sig); -#else - {const char *desc, *s1, *s2; - desc = (const char *)PyCObject_GetDesc(cobj); - if (!desc) - goto bad; - s1 = desc; s2 = sig; - while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; } - if (*s1 != *s2) { - PyErr_Format(PyExc_TypeError, - "C variable %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", - PyModule_GetName(module), name, sig, desc); - goto bad; - } - *p = PyCObject_AsVoidPtr(cobj);} -#endif - if (!(*p)) - goto bad; - Py_DECREF(d); - return 0; -bad: - Py_XDECREF(d); - return -1; -} -#endif - -/* FunctionImport */ - #ifndef __PYX_HAVE_RT_ImportFunction -#define __PYX_HAVE_RT_ImportFunction -static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) { - PyObject *d = 0; - PyObject *cobj = 0; - union { - void (*fp)(void); - void *p; - } tmp; - d = PyObject_GetAttrString(module, (char *)"__pyx_capi__"); - if (!d) - goto bad; - cobj = PyDict_GetItemString(d, funcname); - if (!cobj) { - PyErr_Format(PyExc_ImportError, - "%.200s does not export expected C function %.200s", - PyModule_GetName(module), funcname); - goto bad; - } -#if PY_VERSION_HEX >= 0x02070000 - if (!PyCapsule_IsValid(cobj, sig)) { - PyErr_Format(PyExc_TypeError, - "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", - PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj)); - goto bad; - } - tmp.p = PyCapsule_GetPointer(cobj, sig); -#else - {const char *desc, *s1, *s2; - desc = (const char *)PyCObject_GetDesc(cobj); - if (!desc) - goto bad; - s1 = desc; s2 = sig; - while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; } - if (*s1 != *s2) { - PyErr_Format(PyExc_TypeError, - "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", - PyModule_GetName(module), funcname, sig, desc); - goto bad; - } - tmp.p = PyCObject_AsVoidPtr(cobj);} -#endif - *f = tmp.fp; - if (!(*f)) - goto bad; - Py_DECREF(d); - return 0; -bad: - Py_XDECREF(d); - return -1; -} -#endif - -/* InitStrings */ - static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { - while (t->p) { - #if PY_MAJOR_VERSION < 3 - if (t->is_unicode) { - *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); - } else if (t->intern) { - *t->p = PyString_InternFromString(t->s); - } else { - *t->p = PyString_FromStringAndSize(t->s, t->n - 1); - } - #else - if (t->is_unicode | t->is_str) { - if (t->intern) { - *t->p = PyUnicode_InternFromString(t->s); - } else if (t->encoding) { - *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL); - } else { - *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1); - } - } else { - *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1); - } - #endif - if (!*t->p) - return -1; - if (PyObject_Hash(*t->p) == -1) - return -1; - ++t; - } - return 0; -} - -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { - return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); -} -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { - Py_ssize_t ignore; - return __Pyx_PyObject_AsStringAndSize(o, &ignore); -} -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -#if !CYTHON_PEP393_ENABLED -static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - char* defenc_c; - PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); - if (!defenc) return NULL; - defenc_c = PyBytes_AS_STRING(defenc); -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - { - char* end = defenc_c + PyBytes_GET_SIZE(defenc); - char* c; - for (c = defenc_c; c < end; c++) { - if ((unsigned char) (*c) >= 128) { - PyUnicode_AsASCIIString(o); - return NULL; - } - } - } -#endif - *length = PyBytes_GET_SIZE(defenc); - return defenc_c; -} -#else -static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - if (likely(PyUnicode_IS_ASCII(o))) { - *length = PyUnicode_GET_LENGTH(o); - return PyUnicode_AsUTF8(o); - } else { - PyUnicode_AsASCIIString(o); - return NULL; - } -#else - return PyUnicode_AsUTF8AndSize(o, length); -#endif -} -#endif -#endif -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT - if ( -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - __Pyx_sys_getdefaultencoding_not_ascii && -#endif - PyUnicode_Check(o)) { - return __Pyx_PyUnicode_AsStringAndSize(o, length); - } else -#endif -#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) - if (PyByteArray_Check(o)) { - *length = PyByteArray_GET_SIZE(o); - return PyByteArray_AS_STRING(o); - } else -#endif - { - char* result; - int r = PyBytes_AsStringAndSize(o, &result, length); - if (unlikely(r < 0)) { - return NULL; - } else { - return result; - } - } -} -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { - int is_true = x == Py_True; - if (is_true | (x == Py_False) | (x == Py_None)) return is_true; - else return PyObject_IsTrue(x); -} -static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { -#if PY_MAJOR_VERSION >= 3 - if (PyLong_Check(result)) { - if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, - "__int__ returned non-int (type %.200s). " - "The ability to return an instance of a strict subclass of int " - "is deprecated, and may be removed in a future version of Python.", - Py_TYPE(result)->tp_name)) { - Py_DECREF(result); - return NULL; - } - return result; - } -#endif - PyErr_Format(PyExc_TypeError, - "__%.4s__ returned non-%.4s (type %.200s)", - type_name, type_name, Py_TYPE(result)->tp_name); - Py_DECREF(result); - return NULL; -} -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { -#if CYTHON_USE_TYPE_SLOTS - PyNumberMethods *m; -#endif - const char *name = NULL; - PyObject *res = NULL; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x) || PyLong_Check(x))) -#else - if (likely(PyLong_Check(x))) -#endif - return __Pyx_NewRef(x); -#if CYTHON_USE_TYPE_SLOTS - m = Py_TYPE(x)->tp_as_number; - #if PY_MAJOR_VERSION < 3 - if (m && m->nb_int) { - name = "int"; - res = m->nb_int(x); - } - else if (m && m->nb_long) { - name = "long"; - res = m->nb_long(x); - } - #else - if (likely(m && m->nb_int)) { - name = "int"; - res = m->nb_int(x); - } - #endif -#else - if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { - res = PyNumber_Int(x); - } -#endif - if (likely(res)) { -#if PY_MAJOR_VERSION < 3 - if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { -#else - if (unlikely(!PyLong_CheckExact(res))) { -#endif - return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); - } - } - else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_TypeError, - "an integer is required"); - } - return res; -} -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { - Py_ssize_t ival; - PyObject *x; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(b))) { - if (sizeof(Py_ssize_t) >= sizeof(long)) - return PyInt_AS_LONG(b); - else - return PyInt_AsSsize_t(x); - } -#endif - if (likely(PyLong_CheckExact(b))) { - #if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)b)->ob_digit; - const Py_ssize_t size = Py_SIZE(b); - if (likely(__Pyx_sst_abs(size) <= 1)) { - ival = likely(size) ? digits[0] : 0; - if (size == -1) ival = -ival; - return ival; - } else { - switch (size) { - case 2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - } - } - #endif - return PyLong_AsSsize_t(b); - } - x = PyNumber_Index(b); - if (!x) return -1; - ival = PyInt_AsSsize_t(x); - Py_DECREF(x); - return ival; -} -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { - return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); -} -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { - return PyInt_FromSize_t(ival); -} - - -#endif /* Py_PYTHON_H */ diff --git a/python/gevent/_hub_primitives.py b/python/gevent/_hub_primitives.py deleted file mode 100644 index d8ed031..0000000 --- a/python/gevent/_hub_primitives.py +++ /dev/null @@ -1,371 +0,0 @@ -# -*- coding: utf-8 -*- -# copyright (c) 2018 gevent. See LICENSE. -# cython: auto_pickle=False,embedsignature=True,always_allow_keywords=False,binding=True -""" -A collection of primitives used by the hub, and suitable for -compilation with Cython because of their frequency of use. - - -""" -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function - -import traceback - -from gevent.exceptions import InvalidSwitchError -from gevent.exceptions import ConcurrentObjectUseError - -from gevent import _greenlet_primitives -from gevent import _waiter -from gevent._util import _NONE -from gevent._hub_local import get_hub_noargs as get_hub -from gevent.timeout import Timeout - -# In Cython, we define these as 'cdef inline' functions. The -# compilation unit cannot have a direct assignment to them (import -# is assignment) without generating a 'lvalue is not valid target' -# error. -locals()['getcurrent'] = __import__('greenlet').getcurrent -locals()['greenlet_init'] = lambda: None -locals()['Waiter'] = _waiter.Waiter -locals()['MultipleWaiter'] = _waiter.MultipleWaiter -locals()['SwitchOutGreenletWithLoop'] = _greenlet_primitives.SwitchOutGreenletWithLoop - -__all__ = [ - 'WaitOperationsGreenlet', - 'iwait_on_objects', - 'wait_on_objects', - 'wait_read', - 'wait_write', - 'wait_readwrite', -] - -class WaitOperationsGreenlet(SwitchOutGreenletWithLoop): # pylint:disable=undefined-variable - - def wait(self, watcher): - """ - Wait until the *watcher* (which must not be started) is ready. - - The current greenlet will be unscheduled during this time. - """ - waiter = Waiter(self) # pylint:disable=undefined-variable - watcher.start(waiter.switch, waiter) - try: - result = waiter.get() - if result is not waiter: - raise InvalidSwitchError('Invalid switch into %s: %r (expected %r)' % ( - getcurrent(), # pylint:disable=undefined-variable - result, waiter)) - finally: - watcher.stop() - - def cancel_wait(self, watcher, error, close_watcher=False): - """ - Cancel an in-progress call to :meth:`wait` by throwing the given *error* - in the waiting greenlet. - - .. versionchanged:: 1.3a1 - Added the *close_watcher* parameter. If true, the watcher - will be closed after the exception is thrown. The watcher should then - be discarded. Closing the watcher is important to release native resources. - .. versionchanged:: 1.3a2 - Allow the *watcher* to be ``None``. No action is taken in that case. - """ - if watcher is None: - # Presumably already closed. - # See https://github.com/gevent/gevent/issues/1089 - return - if watcher.callback is not None: - self.loop.run_callback(self._cancel_wait, watcher, error, close_watcher) - elif close_watcher: - watcher.close() - - def _cancel_wait(self, watcher, error, close_watcher): - # We have to check again to see if it was still active by the time - # our callback actually runs. - active = watcher.active - cb = watcher.callback - if close_watcher: - watcher.close() - if active: - # The callback should be greenlet.switch(). It may or may not be None. - glet = getattr(cb, '__self__', None) - if glet is not None: - glet.throw(error) - - -class _WaitIterator(object): - - def __init__(self, objects, hub, timeout, count): - self._hub = hub - self._waiter = MultipleWaiter(hub) # pylint:disable=undefined-variable - self._switch = self._waiter.switch - self._timeout = timeout - self._objects = objects - - self._timer = None - self._begun = False - - - # Even if we're only going to return 1 object, - # we must still rawlink() *all* of them, so that no - # matter which one finishes first we find it. - self._count = len(objects) if count is None else min(count, len(objects)) - - - def __iter__(self): - # When we begin iterating, we begin the timer. - # XXX: If iteration doesn't actually happen, we - # could leave these links around! - if not self._begun: - self._begun = True - - for obj in self._objects: - obj.rawlink(self._switch) - - if self._timeout is not None: - self._timer = self._hub.loop.timer(self._timeout, priority=-1) - self._timer.start(self._switch, self) - return self - - def __next__(self): - if self._count == 0: - # Exhausted - self._cleanup() - raise StopIteration() - - self._count -= 1 - try: - item = self._waiter.get() - self._waiter.clear() - if item is self: - # Timer expired, no more - self._cleanup() - raise StopIteration() - return item - except: - self._cleanup() - raise - - next = __next__ - - def _cleanup(self): - if self._timer is not None: - self._timer.close() - self._timer = None - - objs = self._objects - self._objects = () - for aobj in objs: - unlink = getattr(aobj, 'unlink', None) - if unlink is not None: - try: - unlink(self._switch) - except: # pylint:disable=bare-except - traceback.print_exc() - - -def iwait_on_objects(objects, timeout=None, count=None): - """ - Iteratively yield *objects* as they are ready, until all (or *count*) are ready - or *timeout* expired. - - :param objects: A sequence (supporting :func:`len`) containing objects - implementing the wait protocol (rawlink() and unlink()). - :keyword int count: If not `None`, then a number specifying the maximum number - of objects to wait for. If ``None`` (the default), all objects - are waited for. - :keyword float timeout: If given, specifies a maximum number of seconds - to wait. If the timeout expires before the desired waited-for objects - are available, then this method returns immediately. - - .. seealso:: :func:`wait` - - .. versionchanged:: 1.1a1 - Add the *count* parameter. - .. versionchanged:: 1.1a2 - No longer raise :exc:`LoopExit` if our caller switches greenlets - in between items yielded by this function. - """ - # QQQ would be nice to support iterable here that can be generated slowly (why?) - hub = get_hub() - if objects is None: - return [hub.join(timeout=timeout)] - return _WaitIterator(objects, hub, timeout, count) - - -def wait_on_objects(objects=None, timeout=None, count=None): - """ - Wait for ``objects`` to become ready or for event loop to finish. - - If ``objects`` is provided, it must be a list containing objects - implementing the wait protocol (rawlink() and unlink() methods): - - - :class:`gevent.Greenlet` instance - - :class:`gevent.event.Event` instance - - :class:`gevent.lock.Semaphore` instance - - :class:`gevent.subprocess.Popen` instance - - If ``objects`` is ``None`` (the default), ``wait()`` blocks until - the current event loop has nothing to do (or until ``timeout`` passes): - - - all greenlets have finished - - all servers were stopped - - all event loop watchers were stopped. - - If ``count`` is ``None`` (the default), wait for all ``objects`` - to become ready. - - If ``count`` is a number, wait for (up to) ``count`` objects to become - ready. (For example, if count is ``1`` then the function exits - when any object in the list is ready). - - If ``timeout`` is provided, it specifies the maximum number of - seconds ``wait()`` will block. - - Returns the list of ready objects, in the order in which they were - ready. - - .. seealso:: :func:`iwait` - """ - if objects is None: - hub = get_hub() - return hub.join(timeout=timeout) # pylint:disable= - return list(iwait_on_objects(objects, timeout, count)) - -_timeout_error = Exception - -def set_default_timeout_error(e): - global _timeout_error - _timeout_error = e - -def _primitive_wait(watcher, timeout, timeout_exc, hub): - if watcher.callback is not None: - raise ConcurrentObjectUseError('This socket is already used by another greenlet: %r' - % (watcher.callback, )) - - if hub is None: - hub = get_hub() - - if timeout is None: - hub.wait(watcher) - return - - timeout = Timeout._start_new_or_dummy( - timeout, - (timeout_exc - if timeout_exc is not _NONE or timeout is None - else _timeout_error('timed out'))) - - with timeout: - hub.wait(watcher) - -# Suitable to be bound as an instance method -def wait_on_socket(socket, watcher, timeout_exc=None): - _primitive_wait(watcher, socket.timeout, - timeout_exc if timeout_exc is not None else _NONE, - socket.hub) - -def wait_on_watcher(watcher, timeout=None, timeout_exc=_NONE, hub=None): - """ - wait(watcher, timeout=None, [timeout_exc=None]) -> None - - Block the current greenlet until *watcher* is ready. - - If *timeout* is non-negative, then *timeout_exc* is raised after - *timeout* second has passed. - - If :func:`cancel_wait` is called on *io* by another greenlet, - raise an exception in this blocking greenlet - (``socket.error(EBADF, 'File descriptor was closed in another - greenlet')`` by default). - - :param io: An event loop watcher, most commonly an IO watcher obtained from - :meth:`gevent.core.loop.io` - :keyword timeout_exc: The exception to raise if the timeout expires. - By default, a :class:`socket.timeout` exception is raised. - If you pass a value for this keyword, it is interpreted as for - :class:`gevent.timeout.Timeout`. - - :raises ~gevent.hub.ConcurrentObjectUseError: If the *watcher* is - already started. - """ - _primitive_wait(watcher, timeout, timeout_exc, hub) - - -def wait_read(fileno, timeout=None, timeout_exc=_NONE): - """ - wait_read(fileno, timeout=None, [timeout_exc=None]) -> None - - Block the current greenlet until *fileno* is ready to read. - - For the meaning of the other parameters and possible exceptions, - see :func:`wait`. - - .. seealso:: :func:`cancel_wait` - """ - hub = get_hub() - io = hub.loop.io(fileno, 1) - try: - return wait_on_watcher(io, timeout, timeout_exc, hub) - finally: - io.close() - - -def wait_write(fileno, timeout=None, timeout_exc=_NONE, event=_NONE): - """ - wait_write(fileno, timeout=None, [timeout_exc=None]) -> None - - Block the current greenlet until *fileno* is ready to write. - - For the meaning of the other parameters and possible exceptions, - see :func:`wait`. - - .. deprecated:: 1.1 - The keyword argument *event* is ignored. Applications should not pass this parameter. - In the future, doing so will become an error. - - .. seealso:: :func:`cancel_wait` - """ - # pylint:disable=unused-argument - hub = get_hub() - io = hub.loop.io(fileno, 2) - try: - return wait_on_watcher(io, timeout, timeout_exc, hub) - finally: - io.close() - - -def wait_readwrite(fileno, timeout=None, timeout_exc=_NONE, event=_NONE): - """ - wait_readwrite(fileno, timeout=None, [timeout_exc=None]) -> None - - Block the current greenlet until *fileno* is ready to read or - write. - - For the meaning of the other parameters and possible exceptions, - see :func:`wait`. - - .. deprecated:: 1.1 - The keyword argument *event* is ignored. Applications should not pass this parameter. - In the future, doing so will become an error. - - .. seealso:: :func:`cancel_wait` - """ - # pylint:disable=unused-argument - hub = get_hub() - io = hub.loop.io(fileno, 3) - try: - return wait_on_watcher(io, timeout, timeout_exc, hub) - finally: - io.close() - - -def _init(): - greenlet_init() # pylint:disable=undefined-variable - -_init() - -from gevent._util import import_c_accel -import_c_accel(globals(), 'gevent.__hub_primitives') diff --git a/python/gevent/_ident.c b/python/gevent/_ident.c deleted file mode 100644 index 57bcf82..0000000 --- a/python/gevent/_ident.c +++ /dev/null @@ -1,5407 +0,0 @@ -/* Generated by Cython 0.28.5 */ - -/* BEGIN: Cython Metadata -{ - "distutils": { - "depends": [ - "src/gevent/__ident.pxd", - "src\\gevent\\__ident.pxd" - ], - "include_dirs": [ - "C:\\Python36\\Include", - "deps" - ], - "name": "gevent.__ident", - "sources": [ - "src/gevent/_ident.py" - ] - }, - "module_name": "gevent.__ident" -} -END: Cython Metadata */ - -#define PY_SSIZE_T_CLEAN -#include "Python.h" -#ifndef Py_PYTHON_H - #error Python headers needed to compile C extensions, please install development version of Python. -#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) - #error Cython requires Python 2.6+ or Python 3.3+. -#else -#define CYTHON_ABI "0_28_5" -#define CYTHON_FUTURE_DIVISION 1 -#include <stddef.h> -#ifndef offsetof - #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) -#endif -#if !defined(WIN32) && !defined(MS_WINDOWS) - #ifndef __stdcall - #define __stdcall - #endif - #ifndef __cdecl - #define __cdecl - #endif - #ifndef __fastcall - #define __fastcall - #endif -#endif -#ifndef DL_IMPORT - #define DL_IMPORT(t) t -#endif -#ifndef DL_EXPORT - #define DL_EXPORT(t) t -#endif -#define __PYX_COMMA , -#ifndef HAVE_LONG_LONG - #if PY_VERSION_HEX >= 0x02070000 - #define HAVE_LONG_LONG - #endif -#endif -#ifndef PY_LONG_LONG - #define PY_LONG_LONG LONG_LONG -#endif -#ifndef Py_HUGE_VAL - #define Py_HUGE_VAL HUGE_VAL -#endif -#ifdef PYPY_VERSION - #define CYTHON_COMPILING_IN_PYPY 1 - #define CYTHON_COMPILING_IN_PYSTON 0 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #undef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 0 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #if PY_VERSION_HEX < 0x03050000 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #undef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #undef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 1 - #undef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 0 - #undef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 0 - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 -#elif defined(PYSTON_VERSION) - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_PYSTON 1 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 -#else - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_PYSTON 0 - #define CYTHON_COMPILING_IN_CPYTHON 1 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #if PY_VERSION_HEX < 0x02070000 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #elif !defined(CYTHON_USE_PYTYPE_LOOKUP) - #define CYTHON_USE_PYTYPE_LOOKUP 1 - #endif - #if PY_MAJOR_VERSION < 3 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #if PY_VERSION_HEX < 0x02070000 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #elif !defined(CYTHON_USE_PYLONG_INTERNALS) - #define CYTHON_USE_PYLONG_INTERNALS 1 - #endif - #ifndef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 1 - #endif - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #if PY_VERSION_HEX < 0x030300F0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #elif !defined(CYTHON_USE_UNICODE_WRITER) - #define CYTHON_USE_UNICODE_WRITER 1 - #endif - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #ifndef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 1 - #endif - #ifndef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 1 - #endif - #ifndef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT (0 && PY_VERSION_HEX >= 0x03050000) - #endif - #ifndef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1) - #endif -#endif -#if !defined(CYTHON_FAST_PYCCALL) -#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) -#endif -#if CYTHON_USE_PYLONG_INTERNALS - #include "longintrepr.h" - #undef SHIFT - #undef BASE - #undef MASK -#endif -#ifndef __has_attribute - #define __has_attribute(x) 0 -#endif -#ifndef __has_cpp_attribute - #define __has_cpp_attribute(x) 0 -#endif -#ifndef CYTHON_RESTRICT - #if defined(__GNUC__) - #define CYTHON_RESTRICT __restrict__ - #elif defined(_MSC_VER) && _MSC_VER >= 1400 - #define CYTHON_RESTRICT __restrict - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_RESTRICT restrict - #else - #define CYTHON_RESTRICT - #endif -#endif -#ifndef CYTHON_UNUSED -# if defined(__GNUC__) -# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -#endif -#ifndef CYTHON_MAYBE_UNUSED_VAR -# if defined(__cplusplus) - template<class T> void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } -# else -# define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) -# endif -#endif -#ifndef CYTHON_NCP_UNUSED -# if CYTHON_COMPILING_IN_CPYTHON -# define CYTHON_NCP_UNUSED -# else -# define CYTHON_NCP_UNUSED CYTHON_UNUSED -# endif -#endif -#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) -#ifdef _MSC_VER - #ifndef _MSC_STDINT_H_ - #if _MSC_VER < 1300 - typedef unsigned char uint8_t; - typedef unsigned int uint32_t; - #else - typedef unsigned __int8 uint8_t; - typedef unsigned __int32 uint32_t; - #endif - #endif -#else - #include <stdint.h> -#endif -#ifndef CYTHON_FALLTHROUGH - #if defined(__cplusplus) && __cplusplus >= 201103L - #if __has_cpp_attribute(fallthrough) - #define CYTHON_FALLTHROUGH [[fallthrough]] - #elif __has_cpp_attribute(clang::fallthrough) - #define CYTHON_FALLTHROUGH [[clang::fallthrough]] - #elif __has_cpp_attribute(gnu::fallthrough) - #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] - #endif - #endif - #ifndef CYTHON_FALLTHROUGH - #if __has_attribute(fallthrough) - #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) - #else - #define CYTHON_FALLTHROUGH - #endif - #endif - #if defined(__clang__ ) && defined(__apple_build_version__) - #if __apple_build_version__ < 7000000 - #undef CYTHON_FALLTHROUGH - #define CYTHON_FALLTHROUGH - #endif - #endif -#endif - -#ifndef CYTHON_INLINE - #if defined(__clang__) - #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) - #elif defined(__GNUC__) - #define CYTHON_INLINE __inline__ - #elif defined(_MSC_VER) - #define CYTHON_INLINE __inline - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_INLINE inline - #else - #define CYTHON_INLINE - #endif -#endif - -#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) - #define Py_OptimizeFlag 0 -#endif -#define __PYX_BUILD_PY_SSIZE_T "n" -#define CYTHON_FORMAT_SSIZE_T "z" -#if PY_MAJOR_VERSION < 3 - #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) - #define __Pyx_DefaultClassType PyClass_Type -#else - #define __Pyx_BUILTIN_MODULE_NAME "builtins" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) - #define __Pyx_DefaultClassType PyType_Type -#endif -#ifndef Py_TPFLAGS_CHECKTYPES - #define Py_TPFLAGS_CHECKTYPES 0 -#endif -#ifndef Py_TPFLAGS_HAVE_INDEX - #define Py_TPFLAGS_HAVE_INDEX 0 -#endif -#ifndef Py_TPFLAGS_HAVE_NEWBUFFER - #define Py_TPFLAGS_HAVE_NEWBUFFER 0 -#endif -#ifndef Py_TPFLAGS_HAVE_FINALIZE - #define Py_TPFLAGS_HAVE_FINALIZE 0 -#endif -#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) - #ifndef METH_FASTCALL - #define METH_FASTCALL 0x80 - #endif - typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); - typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, - Py_ssize_t nargs, PyObject *kwnames); -#else - #define __Pyx_PyCFunctionFast _PyCFunctionFast - #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords -#endif -#if CYTHON_FAST_PYCCALL -#define __Pyx_PyFastCFunction_Check(func)\ - ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))))) -#else -#define __Pyx_PyFastCFunction_Check(func) 0 -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) - #define PyObject_Malloc(s) PyMem_Malloc(s) - #define PyObject_Free(p) PyMem_Free(p) - #define PyObject_Realloc(p) PyMem_Realloc(p) -#endif -#if CYTHON_COMPILING_IN_PYSTON - #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) -#else - #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) -#endif -#if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000 - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#elif PY_VERSION_HEX >= 0x03060000 - #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() -#elif PY_VERSION_HEX >= 0x03000000 - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#else - #define __Pyx_PyThreadState_Current _PyThreadState_Current -#endif -#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) -#include "pythread.h" -#define Py_tss_NEEDS_INIT 0 -typedef int Py_tss_t; -static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { - *key = PyThread_create_key(); - return 0; // PyThread_create_key reports success always -} -static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { - Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); - *key = Py_tss_NEEDS_INIT; - return key; -} -static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { - PyObject_Free(key); -} -static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { - return *key != Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { - PyThread_delete_key(*key); - *key = Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { - return PyThread_set_key_value(*key, value); -} -static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { - return PyThread_get_key_value(*key); -} -#endif // TSS (Thread Specific Storage) API -#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) -#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) -#else -#define __Pyx_PyDict_NewPresized(n) PyDict_New() -#endif -#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION - #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) -#else - #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) -#endif -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS -#define __Pyx_PyDict_GetItemStr(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) -#else -#define __Pyx_PyDict_GetItemStr(dict, name) PyDict_GetItem(dict, name) -#endif -#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) - #define CYTHON_PEP393_ENABLED 1 - #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ - 0 : _PyUnicode_Ready((PyObject *)(op))) - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) - #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) - #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) - #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) -#else - #define CYTHON_PEP393_ENABLED 0 - #define PyUnicode_1BYTE_KIND 1 - #define PyUnicode_2BYTE_KIND 2 - #define PyUnicode_4BYTE_KIND 4 - #define __Pyx_PyUnicode_READY(op) (0) - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) - #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) - #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) - #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) -#endif -#if CYTHON_COMPILING_IN_PYPY - #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) -#else - #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ - PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) - #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) - #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) - #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) -#endif -#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) -#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) -#else - #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) -#endif -#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) - #define PyObject_ASCII(o) PyObject_Repr(o) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBaseString_Type PyUnicode_Type - #define PyStringObject PyUnicodeObject - #define PyString_Type PyUnicode_Type - #define PyString_Check PyUnicode_Check - #define PyString_CheckExact PyUnicode_CheckExact - #define PyObject_Unicode PyObject_Str -#endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) - #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) -#else - #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) - #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) -#endif -#ifndef PySet_CheckExact - #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) -#endif -#if CYTHON_ASSUME_SAFE_MACROS - #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) -#else - #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyIntObject PyLongObject - #define PyInt_Type PyLong_Type - #define PyInt_Check(op) PyLong_Check(op) - #define PyInt_CheckExact(op) PyLong_CheckExact(op) - #define PyInt_FromString PyLong_FromString - #define PyInt_FromUnicode PyLong_FromUnicode - #define PyInt_FromLong PyLong_FromLong - #define PyInt_FromSize_t PyLong_FromSize_t - #define PyInt_FromSsize_t PyLong_FromSsize_t - #define PyInt_AsLong PyLong_AsLong - #define PyInt_AS_LONG PyLong_AS_LONG - #define PyInt_AsSsize_t PyLong_AsSsize_t - #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask - #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask - #define PyNumber_Int PyNumber_Long -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBoolObject PyLongObject -#endif -#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY - #ifndef PyUnicode_InternFromString - #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) - #endif -#endif -#if PY_VERSION_HEX < 0x030200A4 - typedef long Py_hash_t; - #define __Pyx_PyInt_FromHash_t PyInt_FromLong - #define __Pyx_PyInt_AsHash_t PyInt_AsLong -#else - #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t - #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t -#endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : (Py_INCREF(func), func)) -#else - #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) -#endif -#if CYTHON_USE_ASYNC_SLOTS - #if PY_VERSION_HEX >= 0x030500B1 - #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods - #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) - #else - #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) - #endif -#else - #define __Pyx_PyType_AsAsync(obj) NULL -#endif -#ifndef __Pyx_PyAsyncMethodsStruct - typedef struct { - unaryfunc am_await; - unaryfunc am_aiter; - unaryfunc am_anext; - } __Pyx_PyAsyncMethodsStruct; -#endif - -#if defined(WIN32) || defined(MS_WINDOWS) - #define _USE_MATH_DEFINES -#endif -#include <math.h> -#ifdef NAN -#define __PYX_NAN() ((float) NAN) -#else -static CYTHON_INLINE float __PYX_NAN() { - float value; - memset(&value, 0xFF, sizeof(value)); - return value; -} -#endif -#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) -#define __Pyx_truncl trunc -#else -#define __Pyx_truncl truncl -#endif - - -#define __PYX_ERR(f_index, lineno, Ln_error) \ -{ \ - __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \ -} - -#ifndef __PYX_EXTERN_C - #ifdef __cplusplus - #define __PYX_EXTERN_C extern "C" - #else - #define __PYX_EXTERN_C extern - #endif -#endif - -#define __PYX_HAVE__gevent____ident -#define __PYX_HAVE_API__gevent____ident -/* Early includes */ -#ifdef _OPENMP -#include <omp.h> -#endif /* _OPENMP */ - -#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) -#define CYTHON_WITHOUT_ASSERTIONS -#endif - -typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; - const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; - -#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 -#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0 -#define __PYX_DEFAULT_STRING_ENCODING "" -#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString -#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#define __Pyx_uchar_cast(c) ((unsigned char)c) -#define __Pyx_long_cast(x) ((long)x) -#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ - (sizeof(type) < sizeof(Py_ssize_t)) ||\ - (sizeof(type) > sizeof(Py_ssize_t) &&\ - likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX) &&\ - (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ - v == (type)PY_SSIZE_T_MIN))) ||\ - (sizeof(type) == sizeof(Py_ssize_t) &&\ - (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX))) ) -#if defined (__cplusplus) && __cplusplus >= 201103L - #include <cstdlib> - #define __Pyx_sst_abs(value) std::abs(value) -#elif SIZEOF_INT >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) abs(value) -#elif SIZEOF_LONG >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) labs(value) -#elif defined (_MSC_VER) - #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) -#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define __Pyx_sst_abs(value) llabs(value) -#elif defined (__GNUC__) - #define __Pyx_sst_abs(value) __builtin_llabs(value) -#else - #define __Pyx_sst_abs(value) ((value<0) ? -value : value) -#endif -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); -#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) -#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) -#define __Pyx_PyBytes_FromString PyBytes_FromString -#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); -#if PY_MAJOR_VERSION < 3 - #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#else - #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize -#endif -#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) -#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) -#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) -#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) -#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) -static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { - const Py_UNICODE *u_end = u; - while (*u_end++) ; - return (size_t)(u_end - u - 1); -} -#define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) -#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode -#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode -#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) -#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); -#define __Pyx_PySequence_Tuple(obj)\ - (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); -#if CYTHON_ASSUME_SAFE_MACROS -#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) -#else -#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) -#endif -#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) -#if PY_MAJOR_VERSION >= 3 -#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) -#else -#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) -#endif -#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x)) -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII -static int __Pyx_sys_getdefaultencoding_not_ascii; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - PyObject* ascii_chars_u = NULL; - PyObject* ascii_chars_b = NULL; - const char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - if (strcmp(default_encoding_c, "ascii") == 0) { - __Pyx_sys_getdefaultencoding_not_ascii = 0; - } else { - char ascii_chars[128]; - int c; - for (c = 0; c < 128; c++) { - ascii_chars[c] = c; - } - __Pyx_sys_getdefaultencoding_not_ascii = 1; - ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); - if (!ascii_chars_u) goto bad; - ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); - if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { - PyErr_Format( - PyExc_ValueError, - "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", - default_encoding_c); - goto bad; - } - Py_DECREF(ascii_chars_u); - Py_DECREF(ascii_chars_b); - } - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - Py_XDECREF(ascii_chars_u); - Py_XDECREF(ascii_chars_b); - return -1; -} -#endif -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) -#else -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -static char* __PYX_DEFAULT_STRING_ENCODING; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c)); - if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; - strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - return -1; -} -#endif -#endif - - -/* Test for GCC > 2.95 */ -#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) - #define likely(x) __builtin_expect(!!(x), 1) - #define unlikely(x) __builtin_expect(!!(x), 0) -#else /* !__GNUC__ or GCC < 2.95 */ - #define likely(x) (x) - #define unlikely(x) (x) -#endif /* __GNUC__ */ -static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } - -static PyObject *__pyx_m = NULL; -static PyObject *__pyx_d; -static PyObject *__pyx_b; -static PyObject *__pyx_cython_runtime = NULL; -static PyObject *__pyx_empty_tuple; -static PyObject *__pyx_empty_bytes; -static PyObject *__pyx_empty_unicode; -static int __pyx_lineno; -static int __pyx_clineno = 0; -static const char * __pyx_cfilenm= __FILE__; -static const char *__pyx_filename; - - -static const char *__pyx_f[] = { - "src\\gevent\\_ident.py", - "src\\gevent\\__ident.pxd", -}; - -/*--- Type declarations ---*/ -struct __pyx_obj_6gevent_7__ident_ValuedWeakRef; -struct __pyx_obj_6gevent_7__ident_IdentRegistry; - -/* "gevent/__ident.pxd":15 - * @cython.internal - * @cython.final - * cdef class ValuedWeakRef(ref): # <<<<<<<<<<<<<< - * cdef object value - * - */ -struct __pyx_obj_6gevent_7__ident_ValuedWeakRef { - PyWeakReference __pyx_base; - PyObject *value; -}; - - -/* "gevent/__ident.pxd":19 - * - * @cython.final - * cdef class IdentRegistry: # <<<<<<<<<<<<<< - * cdef object _registry - * cdef list _available_idents - */ -struct __pyx_obj_6gevent_7__ident_IdentRegistry { - PyObject_HEAD - struct __pyx_vtabstruct_6gevent_7__ident_IdentRegistry *__pyx_vtab; - PyObject *_registry; - PyObject *_available_idents; -}; - - - -/* "src/gevent/_ident.py":30 - * - * - * class IdentRegistry(object): # <<<<<<<<<<<<<< - * """ - * Maintains a unique mapping of (small) positive integer identifiers - */ - -struct __pyx_vtabstruct_6gevent_7__ident_IdentRegistry { - PyObject *(*get_ident)(struct __pyx_obj_6gevent_7__ident_IdentRegistry *, PyObject *, int __pyx_skip_dispatch); - PyObject *(*_return_ident)(struct __pyx_obj_6gevent_7__ident_IdentRegistry *, struct __pyx_obj_6gevent_7__ident_ValuedWeakRef *, int __pyx_skip_dispatch); -}; -static struct __pyx_vtabstruct_6gevent_7__ident_IdentRegistry *__pyx_vtabptr_6gevent_7__ident_IdentRegistry; -static PyObject *__pyx_f_6gevent_7__ident_13IdentRegistry_get_ident(struct __pyx_obj_6gevent_7__ident_IdentRegistry *, PyObject *, int __pyx_skip_dispatch); -static PyObject *__pyx_f_6gevent_7__ident_13IdentRegistry__return_ident(struct __pyx_obj_6gevent_7__ident_IdentRegistry *, struct __pyx_obj_6gevent_7__ident_ValuedWeakRef *, int __pyx_skip_dispatch); - -/* --- Runtime support code (head) --- */ -/* Refnanny.proto */ -#ifndef CYTHON_REFNANNY - #define CYTHON_REFNANNY 0 -#endif -#if CYTHON_REFNANNY - typedef struct { - void (*INCREF)(void*, PyObject*, int); - void (*DECREF)(void*, PyObject*, int); - void (*GOTREF)(void*, PyObject*, int); - void (*GIVEREF)(void*, PyObject*, int); - void* (*SetupContext)(const char*, int, const char*); - void (*FinishContext)(void**); - } __Pyx_RefNannyAPIStruct; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); - #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; -#ifdef WITH_THREAD - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - if (acquire_gil) {\ - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - PyGILState_Release(__pyx_gilstate_save);\ - } else {\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - } -#else - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) -#endif - #define __Pyx_RefNannyFinishContext()\ - __Pyx_RefNanny->FinishContext(&__pyx_refnanny) - #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) - #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) - #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) - #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0) -#else - #define __Pyx_RefNannyDeclarations - #define __Pyx_RefNannySetupContext(name, acquire_gil) - #define __Pyx_RefNannyFinishContext() - #define __Pyx_INCREF(r) Py_INCREF(r) - #define __Pyx_DECREF(r) Py_DECREF(r) - #define __Pyx_GOTREF(r) - #define __Pyx_GIVEREF(r) - #define __Pyx_XINCREF(r) Py_XINCREF(r) - #define __Pyx_XDECREF(r) Py_XDECREF(r) - #define __Pyx_XGOTREF(r) - #define __Pyx_XGIVEREF(r) -#endif -#define __Pyx_XDECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_XDECREF(tmp);\ - } while (0) -#define __Pyx_DECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_DECREF(tmp);\ - } while (0) -#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) -#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) - -/* PyObjectGetAttrStr.proto */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) -#endif - -/* GetBuiltinName.proto */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name); - -/* RaiseArgTupleInvalid.proto */ -static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, - Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); - -/* KeywordStringCheck.proto */ -static int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); - -/* PyCFunctionFastCall.proto */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); -#else -#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) -#endif - -/* PyFunctionFastCall.proto */ -#if CYTHON_FAST_PYCALL -#define __Pyx_PyFunction_FastCall(func, args, nargs)\ - __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs); -#else -#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) -#endif -#endif - -/* PyObjectCall.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); -#else -#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) -#endif - -/* PyObjectCallMethO.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); -#endif - -/* PyObjectCallOneArg.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); - -/* PyObjectCallNoArg.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); -#else -#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL) -#endif - -/* GetItemInt.proto */ -#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ - (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ - __Pyx_GetItemInt_Generic(o, to_py_func(i)))) -#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ - (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, - int wraparound, int boundscheck); -#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ - (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, - int wraparound, int boundscheck); -static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, - int is_list, int wraparound, int boundscheck); - -/* ObjectGetItem.proto */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key); -#else -#define __Pyx_PyObject_GetItem(obj, key) PyObject_GetItem(obj, key) -#endif - -/* PyThreadStateGet.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; -#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; -#define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type -#else -#define __Pyx_PyThreadState_declare -#define __Pyx_PyThreadState_assign -#define __Pyx_PyErr_Occurred() PyErr_Occurred() -#endif - -/* SaveResetException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -#else -#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) -#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) -#endif - -/* PyErrExceptionMatches.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) -static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); -#else -#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) -#endif - -/* PyErrFetchRestore.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) -#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) -#else -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#endif -#else -#define __Pyx_PyErr_Clear() PyErr_Clear() -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) -#endif - -/* ArgTypeTest.proto */ -#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\ - ((likely((Py_TYPE(obj) == type) | (none_allowed && (obj == Py_None)))) ? 1 :\ - __Pyx__ArgTypeTest(obj, type, name, exact)) -static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact); - -/* CallNextTpDealloc.proto */ -static void __Pyx_call_next_tp_dealloc(PyObject* obj, destructor current_tp_dealloc); - -/* CallNextTpTraverse.proto */ -static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse); - -/* CallNextTpClear.proto */ -static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_dealloc); - -/* PyObject_GenericGetAttrNoDict.proto */ -#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr -#endif - -/* SetVTable.proto */ -static int __Pyx_SetVtable(PyObject *dict, void *vtable); - -/* Import.proto */ -static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); - -/* ImportFrom.proto */ -static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); - -/* FetchCommonType.proto */ -static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); - -/* CythonFunction.proto */ -#define __Pyx_CyFunction_USED 1 -#define __Pyx_CYFUNCTION_STATICMETHOD 0x01 -#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 -#define __Pyx_CYFUNCTION_CCLASS 0x04 -#define __Pyx_CyFunction_GetClosure(f)\ - (((__pyx_CyFunctionObject *) (f))->func_closure) -#define __Pyx_CyFunction_GetClassObj(f)\ - (((__pyx_CyFunctionObject *) (f))->func_classobj) -#define __Pyx_CyFunction_Defaults(type, f)\ - ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) -#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ - ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) -typedef struct { - PyCFunctionObject func; -#if PY_VERSION_HEX < 0x030500A0 - PyObject *func_weakreflist; -#endif - PyObject *func_dict; - PyObject *func_name; - PyObject *func_qualname; - PyObject *func_doc; - PyObject *func_globals; - PyObject *func_code; - PyObject *func_closure; - PyObject *func_classobj; - void *defaults; - int defaults_pyobjects; - int flags; - PyObject *defaults_tuple; - PyObject *defaults_kwdict; - PyObject *(*defaults_getter)(PyObject *); - PyObject *func_annotations; -} __pyx_CyFunctionObject; -static PyTypeObject *__pyx_CyFunctionType = 0; -#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, globals, code)\ - __Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, globals, code) -static PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml, - int flags, PyObject* qualname, - PyObject *self, - PyObject *module, PyObject *globals, - PyObject* code); -static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, - size_t size, - int pyobjects); -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, - PyObject *tuple); -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, - PyObject *dict); -static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, - PyObject *dict); -static int __pyx_CyFunction_init(void); - -/* GetModuleGlobalName.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name); - -/* GetAttr.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *); - -/* Globals.proto */ -static PyObject* __Pyx_Globals(void); - -/* CLineInTraceback.proto */ -#ifdef CYTHON_CLINE_IN_TRACEBACK -#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) -#else -static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); -#endif - -/* CodeObjectCache.proto */ -typedef struct { - PyCodeObject* code_object; - int code_line; -} __Pyx_CodeObjectCacheEntry; -struct __Pyx_CodeObjectCache { - int count; - int max_count; - __Pyx_CodeObjectCacheEntry* entries; -}; -static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; -static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); -static PyCodeObject *__pyx_find_code_object(int code_line); -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); - -/* AddTraceback.proto */ -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename); - -/* CIntToPy.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); - -/* CIntFromPy.proto */ -static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); - -/* CIntFromPy.proto */ -static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); - -/* FastTypeChecks.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); -#else -#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) -#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) -#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) -#endif -#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) - -/* CheckBinaryVersion.proto */ -static int __Pyx_check_binary_version(void); - -/* PyObjectSetAttrStr.proto */ -#if CYTHON_USE_TYPE_SLOTS -#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o, n, NULL) -static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value); -#else -#define __Pyx_PyObject_DelAttrStr(o,n) PyObject_DelAttr(o,n) -#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v) -#endif - -/* VoidPtrExport.proto */ -static int __Pyx_ExportVoidPtr(PyObject *name, void *p, const char *sig); - -/* PyIdentifierFromString.proto */ -#if !defined(__Pyx_PyIdentifier_FromString) -#if PY_MAJOR_VERSION < 3 - #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s) -#else - #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s) -#endif -#endif - -/* ModuleImport.proto */ -static PyObject *__Pyx_ImportModule(const char *name); - -/* TypeImport.proto */ -static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict); - -/* InitStrings.proto */ -static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); - -static PyObject *__pyx_f_6gevent_7__ident_13IdentRegistry_get_ident(struct __pyx_obj_6gevent_7__ident_IdentRegistry *__pyx_v_self, PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_7__ident_13IdentRegistry__return_ident(struct __pyx_obj_6gevent_7__ident_IdentRegistry *__pyx_v_self, struct __pyx_obj_6gevent_7__ident_ValuedWeakRef *__pyx_v_vref, CYTHON_UNUSED int __pyx_skip_dispatch); /* proto*/ - -/* Module declarations from 'cython' */ - -/* Module declarations from 'weakref' */ - -/* Module declarations from 'gevent.__ident' */ -static PyTypeObject *__pyx_ptype_6gevent_7__ident_ref = 0; -static PyTypeObject *__pyx_ptype_6gevent_7__ident_ValuedWeakRef = 0; -static PyTypeObject *__pyx_ptype_6gevent_7__ident_IdentRegistry = 0; -static PyObject *__pyx_v_6gevent_7__ident_heappop = 0; -static PyObject *__pyx_v_6gevent_7__ident_heappush = 0; -static PyObject *__pyx_v_6gevent_7__ident_WeakKeyDictionary = 0; -#define __Pyx_MODULE_NAME "gevent.__ident" -extern int __pyx_module_is_main_gevent____ident; -int __pyx_module_is_main_gevent____ident = 0; - -/* Implementation of 'gevent.__ident' */ -static PyObject *__pyx_builtin_KeyError; -static const char __pyx_k_all[] = "__all__"; -static const char __pyx_k_obj[] = "obj"; -static const char __pyx_k_ref[] = "ref"; -static const char __pyx_k_main[] = "__main__"; -static const char __pyx_k_self[] = "self"; -static const char __pyx_k_test[] = "__test__"; -static const char __pyx_k_vref[] = "vref"; -static const char __pyx_k_heapq[] = "heapq"; -static const char __pyx_k_slots[] = "__slots__"; -static const char __pyx_k_value[] = "value"; -static const char __pyx_k_import[] = "__import__"; -static const char __pyx_k_heappop[] = "heappop"; -static const char __pyx_k_weakref[] = "weakref"; -static const char __pyx_k_KeyError[] = "KeyError"; -static const char __pyx_k_heappush[] = "heappush"; -static const char __pyx_k_pyx_capi[] = "__pyx_capi__"; -static const char __pyx_k_get_ident[] = "get_ident"; -static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__"; -static const char __pyx_k_gevent__util[] = "gevent._util"; -static const char __pyx_k_return_ident[] = "_return_ident"; -static const char __pyx_k_IdentRegistry[] = "IdentRegistry"; -static const char __pyx_k_gevent___ident[] = "gevent.__ident"; -static const char __pyx_k_import_c_accel[] = "import_c_accel"; -static const char __pyx_k_WeakKeyDictionary[] = "WeakKeyDictionary"; -static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; -static const char __pyx_k_src_gevent__ident_py[] = "src\\gevent\\_ident.py"; -static const char __pyx_k_IdentRegistry_get_ident[] = "IdentRegistry.get_ident"; -static const char __pyx_k_IdentRegistry__return_ident[] = "IdentRegistry._return_ident"; -static PyObject *__pyx_n_s_IdentRegistry; -static PyObject *__pyx_n_s_IdentRegistry__return_ident; -static PyObject *__pyx_n_s_IdentRegistry_get_ident; -static PyObject *__pyx_n_s_KeyError; -static PyObject *__pyx_n_s_WeakKeyDictionary; -static PyObject *__pyx_n_s_all; -static PyObject *__pyx_n_s_cline_in_traceback; -static PyObject *__pyx_n_s_get_ident; -static PyObject *__pyx_n_s_gevent___ident; -static PyObject *__pyx_n_s_gevent__util; -static PyObject *__pyx_n_s_heappop; -static PyObject *__pyx_n_s_heappush; -static PyObject *__pyx_n_s_heapq; -static PyObject *__pyx_n_s_import; -static PyObject *__pyx_n_s_import_c_accel; -static PyObject *__pyx_n_s_main; -static PyObject *__pyx_n_s_obj; -static PyObject *__pyx_n_s_pyx_capi; -static PyObject *__pyx_n_s_pyx_vtable; -static PyObject *__pyx_n_s_ref; -static PyObject *__pyx_n_s_return_ident; -static PyObject *__pyx_n_s_self; -static PyObject *__pyx_n_s_slots; -static PyObject *__pyx_kp_s_src_gevent__ident_py; -static PyObject *__pyx_n_s_test; -static PyObject *__pyx_n_s_value; -static PyObject *__pyx_n_s_vref; -static PyObject *__pyx_n_s_weakref; -static int __pyx_pf_6gevent_7__ident_13IdentRegistry___init__(struct __pyx_obj_6gevent_7__ident_IdentRegistry *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_7__ident_13IdentRegistry_2get_ident(struct __pyx_obj_6gevent_7__ident_IdentRegistry *__pyx_v_self, PyObject *__pyx_v_obj); /* proto */ -static PyObject *__pyx_pf_6gevent_7__ident_13IdentRegistry_4_return_ident(struct __pyx_obj_6gevent_7__ident_IdentRegistry *__pyx_v_self, struct __pyx_obj_6gevent_7__ident_ValuedWeakRef *__pyx_v_vref); /* proto */ -static Py_ssize_t __pyx_pf_6gevent_7__ident_13IdentRegistry_6__len__(struct __pyx_obj_6gevent_7__ident_IdentRegistry *__pyx_v_self); /* proto */ -static PyObject *__pyx_tp_new_6gevent_7__ident_ValuedWeakRef(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_7__ident_IdentRegistry(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tuple_; -static PyObject *__pyx_tuple__2; -static PyObject *__pyx_tuple__4; -static PyObject *__pyx_codeobj__3; -static PyObject *__pyx_codeobj__5; -/* Late includes */ - -/* "src/gevent/_ident.py":40 - * """ - * - * def __init__(self): # <<<<<<<<<<<<<< - * # {obj -> (ident, wref(obj))} - * self._registry = WeakKeyDictionary() - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_7__ident_13IdentRegistry_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_7__ident_13IdentRegistry_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;} - if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1; - __pyx_r = __pyx_pf_6gevent_7__ident_13IdentRegistry___init__(((struct __pyx_obj_6gevent_7__ident_IdentRegistry *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_7__ident_13IdentRegistry___init__(struct __pyx_obj_6gevent_7__ident_IdentRegistry *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("__init__", 0); - - /* "src/gevent/_ident.py":42 - * def __init__(self): - * # {obj -> (ident, wref(obj))} - * self._registry = WeakKeyDictionary() # <<<<<<<<<<<<<< - * - * # A heap of numbers that have been used and returned - */ - __Pyx_INCREF(__pyx_v_6gevent_7__ident_WeakKeyDictionary); - __pyx_t_2 = __pyx_v_6gevent_7__ident_WeakKeyDictionary; __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 42, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 42, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->_registry); - __Pyx_DECREF(__pyx_v_self->_registry); - __pyx_v_self->_registry = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/_ident.py":45 - * - * # A heap of numbers that have been used and returned - * self._available_idents = [] # <<<<<<<<<<<<<< - * - * def get_ident(self, obj): - */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 45, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->_available_idents); - __Pyx_DECREF(__pyx_v_self->_available_idents); - __pyx_v_self->_available_idents = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/_ident.py":40 - * """ - * - * def __init__(self): # <<<<<<<<<<<<<< - * # {obj -> (ident, wref(obj))} - * self._registry = WeakKeyDictionary() - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent.__ident.IdentRegistry.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_ident.py":47 - * self._available_idents = [] - * - * def get_ident(self, obj): # <<<<<<<<<<<<<< - * """ - * Retrieve the identifier for *obj*, creating one - */ - -static PyObject *__pyx_pw_6gevent_7__ident_13IdentRegistry_3get_ident(PyObject *__pyx_v_self, PyObject *__pyx_v_obj); /*proto*/ -static PyObject *__pyx_f_6gevent_7__ident_13IdentRegistry_get_ident(struct __pyx_obj_6gevent_7__ident_IdentRegistry *__pyx_v_self, PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) { - PyObject *__pyx_v_ident = NULL; - struct __pyx_obj_6gevent_7__ident_ValuedWeakRef *__pyx_v_vref = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - int __pyx_t_7; - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - Py_ssize_t __pyx_t_10; - __Pyx_RefNannySetupContext("get_ident", 0); - - /* "src/gevent/_ident.py":53 - * """ - * - * try: # <<<<<<<<<<<<<< - * return self._registry[obj][0] - * except KeyError: - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_t_3); - /*try:*/ { - - /* "src/gevent/_ident.py":54 - * - * try: - * return self._registry[obj][0] # <<<<<<<<<<<<<< - * except KeyError: - * pass - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_self->_registry, __pyx_v_obj); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 54, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 54, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_r = __pyx_t_5; - __pyx_t_5 = 0; - goto __pyx_L7_try_return; - - /* "src/gevent/_ident.py":53 - * """ - * - * try: # <<<<<<<<<<<<<< - * return self._registry[obj][0] - * except KeyError: - */ - } - __pyx_L3_error:; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - - /* "src/gevent/_ident.py":55 - * try: - * return self._registry[obj][0] - * except KeyError: # <<<<<<<<<<<<<< - * pass - * - */ - __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError); - if (__pyx_t_6) { - __Pyx_ErrRestore(0,0,0); - goto __pyx_L4_exception_handled; - } - goto __pyx_L5_except_error; - __pyx_L5_except_error:; - - /* "src/gevent/_ident.py":53 - * """ - * - * try: # <<<<<<<<<<<<<< - * return self._registry[obj][0] - * except KeyError: - */ - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - goto __pyx_L1_error; - __pyx_L7_try_return:; - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - goto __pyx_L0; - __pyx_L4_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - } - - /* "src/gevent/_ident.py":58 - * pass - * - * if self._available_idents: # <<<<<<<<<<<<<< - * # Take the smallest free number - * ident = heappop(self._available_idents) - */ - __pyx_t_7 = (__pyx_v_self->_available_idents != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_available_idents) != 0); - if (__pyx_t_7) { - - /* "src/gevent/_ident.py":60 - * if self._available_idents: - * # Take the smallest free number - * ident = heappop(self._available_idents) # <<<<<<<<<<<<<< - * else: - * # Allocate a bigger one - */ - __Pyx_INCREF(__pyx_v_6gevent_7__ident_heappop); - __pyx_t_4 = __pyx_v_6gevent_7__ident_heappop; __pyx_t_8 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_8)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_8); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (!__pyx_t_8) { - __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_self->_available_idents); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 60, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_v_self->_available_idents}; - __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 60, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_GOTREF(__pyx_t_5); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_v_self->_available_idents}; - __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 60, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_GOTREF(__pyx_t_5); - } else - #endif - { - __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 60, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL; - __Pyx_INCREF(__pyx_v_self->_available_idents); - __Pyx_GIVEREF(__pyx_v_self->_available_idents); - PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_self->_available_idents); - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 60, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - } - } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_v_ident = __pyx_t_5; - __pyx_t_5 = 0; - - /* "src/gevent/_ident.py":58 - * pass - * - * if self._available_idents: # <<<<<<<<<<<<<< - * # Take the smallest free number - * ident = heappop(self._available_idents) - */ - goto __pyx_L9; - } - - /* "src/gevent/_ident.py":63 - * else: - * # Allocate a bigger one - * ident = len(self._registry) # <<<<<<<<<<<<<< - * - * vref = ValuedWeakRef(obj, self._return_ident) - */ - /*else*/ { - __pyx_t_5 = __pyx_v_self->_registry; - __Pyx_INCREF(__pyx_t_5); - __pyx_t_10 = PyObject_Length(__pyx_t_5); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 63, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 63, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_v_ident = __pyx_t_5; - __pyx_t_5 = 0; - } - __pyx_L9:; - - /* "src/gevent/_ident.py":65 - * ident = len(self._registry) - * - * vref = ValuedWeakRef(obj, self._return_ident) # <<<<<<<<<<<<<< - * vref.value = ident # pylint:disable=assigning-non-slot,attribute-defined-outside-init - * self._registry[obj] = (ident, vref) - */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_return_ident); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 65, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 65, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_INCREF(__pyx_v_obj); - __Pyx_GIVEREF(__pyx_v_obj); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_obj); - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5); - __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6gevent_7__ident_ValuedWeakRef), __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 65, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_v_vref = ((struct __pyx_obj_6gevent_7__ident_ValuedWeakRef *)__pyx_t_5); - __pyx_t_5 = 0; - - /* "src/gevent/_ident.py":66 - * - * vref = ValuedWeakRef(obj, self._return_ident) - * vref.value = ident # pylint:disable=assigning-non-slot,attribute-defined-outside-init # <<<<<<<<<<<<<< - * self._registry[obj] = (ident, vref) - * return ident - */ - __Pyx_INCREF(__pyx_v_ident); - __Pyx_GIVEREF(__pyx_v_ident); - __Pyx_GOTREF(__pyx_v_vref->value); - __Pyx_DECREF(__pyx_v_vref->value); - __pyx_v_vref->value = __pyx_v_ident; - - /* "src/gevent/_ident.py":67 - * vref = ValuedWeakRef(obj, self._return_ident) - * vref.value = ident # pylint:disable=assigning-non-slot,attribute-defined-outside-init - * self._registry[obj] = (ident, vref) # <<<<<<<<<<<<<< - * return ident - * - */ - __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 67, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_INCREF(__pyx_v_ident); - __Pyx_GIVEREF(__pyx_v_ident); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_ident); - __Pyx_INCREF(((PyObject *)__pyx_v_vref)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_vref)); - PyTuple_SET_ITEM(__pyx_t_5, 1, ((PyObject *)__pyx_v_vref)); - if (unlikely(PyObject_SetItem(__pyx_v_self->_registry, __pyx_v_obj, __pyx_t_5) < 0)) __PYX_ERR(0, 67, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - - /* "src/gevent/_ident.py":68 - * vref.value = ident # pylint:disable=assigning-non-slot,attribute-defined-outside-init - * self._registry[obj] = (ident, vref) - * return ident # <<<<<<<<<<<<<< - * - * def _return_ident(self, vref): - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_ident); - __pyx_r = __pyx_v_ident; - goto __pyx_L0; - - /* "src/gevent/_ident.py":47 - * self._available_idents = [] - * - * def get_ident(self, obj): # <<<<<<<<<<<<<< - * """ - * Retrieve the identifier for *obj*, creating one - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_XDECREF(__pyx_t_9); - __Pyx_AddTraceback("gevent.__ident.IdentRegistry.get_ident", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_ident); - __Pyx_XDECREF((PyObject *)__pyx_v_vref); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_7__ident_13IdentRegistry_3get_ident(PyObject *__pyx_v_self, PyObject *__pyx_v_obj); /*proto*/ -static char __pyx_doc_6gevent_7__ident_13IdentRegistry_2get_ident[] = "IdentRegistry.get_ident(self, obj)\n\n Retrieve the identifier for *obj*, creating one\n if necessary.\n "; -static PyMethodDef __pyx_mdef_6gevent_7__ident_13IdentRegistry_3get_ident = {"get_ident", (PyCFunction)__pyx_pw_6gevent_7__ident_13IdentRegistry_3get_ident, METH_O, __pyx_doc_6gevent_7__ident_13IdentRegistry_2get_ident}; -static PyObject *__pyx_pw_6gevent_7__ident_13IdentRegistry_3get_ident(PyObject *__pyx_v_self, PyObject *__pyx_v_obj) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("get_ident (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_7__ident_13IdentRegistry_2get_ident(((struct __pyx_obj_6gevent_7__ident_IdentRegistry *)__pyx_v_self), ((PyObject *)__pyx_v_obj)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_7__ident_13IdentRegistry_2get_ident(struct __pyx_obj_6gevent_7__ident_IdentRegistry *__pyx_v_self, PyObject *__pyx_v_obj) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("get_ident", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_7__ident_13IdentRegistry_get_ident(__pyx_v_self, __pyx_v_obj, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 47, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__ident.IdentRegistry.get_ident", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_ident.py":70 - * return ident - * - * def _return_ident(self, vref): # <<<<<<<<<<<<<< - * # By the time this is called, self._registry has been - * # updated - */ - -static PyObject *__pyx_pw_6gevent_7__ident_13IdentRegistry_5_return_ident(PyObject *__pyx_v_self, PyObject *__pyx_v_vref); /*proto*/ -static PyObject *__pyx_f_6gevent_7__ident_13IdentRegistry__return_ident(struct __pyx_obj_6gevent_7__ident_IdentRegistry *__pyx_v_self, struct __pyx_obj_6gevent_7__ident_ValuedWeakRef *__pyx_v_vref, CYTHON_UNUSED int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - PyObject *__pyx_t_7 = NULL; - __Pyx_RefNannySetupContext("_return_ident", 0); - - /* "src/gevent/_ident.py":73 - * # By the time this is called, self._registry has been - * # updated - * if heappush is not None: # <<<<<<<<<<<<<< - * # Under some circumstances we can get called - * # when the interpreter is shutting down, and globals - */ - __pyx_t_1 = (__pyx_v_6gevent_7__ident_heappush != Py_None); - __pyx_t_2 = (__pyx_t_1 != 0); - if (__pyx_t_2) { - - /* "src/gevent/_ident.py":77 - * # when the interpreter is shutting down, and globals - * # aren't available any more. - * heappush(self._available_idents, vref.value) # <<<<<<<<<<<<<< - * - * def __len__(self): - */ - __Pyx_INCREF(__pyx_v_6gevent_7__ident_heappush); - __pyx_t_4 = __pyx_v_6gevent_7__ident_heappush; __pyx_t_5 = NULL; - __pyx_t_6 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - __pyx_t_6 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_self->_available_idents, __pyx_v_vref->value}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 77, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_3); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_self->_available_idents, __pyx_v_vref->value}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 77, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_3); - } else - #endif - { - __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 77, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (__pyx_t_5) { - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; - } - __Pyx_INCREF(__pyx_v_self->_available_idents); - __Pyx_GIVEREF(__pyx_v_self->_available_idents); - PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_self->_available_idents); - __Pyx_INCREF(__pyx_v_vref->value); - __Pyx_GIVEREF(__pyx_v_vref->value); - PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_vref->value); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 77, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "src/gevent/_ident.py":73 - * # By the time this is called, self._registry has been - * # updated - * if heappush is not None: # <<<<<<<<<<<<<< - * # Under some circumstances we can get called - * # when the interpreter is shutting down, and globals - */ - } - - /* "src/gevent/_ident.py":70 - * return ident - * - * def _return_ident(self, vref): # <<<<<<<<<<<<<< - * # By the time this is called, self._registry has been - * # updated - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("gevent.__ident.IdentRegistry._return_ident", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_7__ident_13IdentRegistry_5_return_ident(PyObject *__pyx_v_self, PyObject *__pyx_v_vref); /*proto*/ -static char __pyx_doc_6gevent_7__ident_13IdentRegistry_4_return_ident[] = "IdentRegistry._return_ident(self, ValuedWeakRef vref)"; -static PyMethodDef __pyx_mdef_6gevent_7__ident_13IdentRegistry_5_return_ident = {"_return_ident", (PyCFunction)__pyx_pw_6gevent_7__ident_13IdentRegistry_5_return_ident, METH_O, __pyx_doc_6gevent_7__ident_13IdentRegistry_4_return_ident}; -static PyObject *__pyx_pw_6gevent_7__ident_13IdentRegistry_5_return_ident(PyObject *__pyx_v_self, PyObject *__pyx_v_vref) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_return_ident (wrapper)", 0); - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vref), __pyx_ptype_6gevent_7__ident_ValuedWeakRef, 1, "vref", 0))) __PYX_ERR(0, 70, __pyx_L1_error) - __pyx_r = __pyx_pf_6gevent_7__ident_13IdentRegistry_4_return_ident(((struct __pyx_obj_6gevent_7__ident_IdentRegistry *)__pyx_v_self), ((struct __pyx_obj_6gevent_7__ident_ValuedWeakRef *)__pyx_v_vref)); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = NULL; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_7__ident_13IdentRegistry_4_return_ident(struct __pyx_obj_6gevent_7__ident_IdentRegistry *__pyx_v_self, struct __pyx_obj_6gevent_7__ident_ValuedWeakRef *__pyx_v_vref) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_return_ident", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_7__ident_13IdentRegistry__return_ident(__pyx_v_self, __pyx_v_vref, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 70, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__ident.IdentRegistry._return_ident", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_ident.py":79 - * heappush(self._available_idents, vref.value) - * - * def __len__(self): # <<<<<<<<<<<<<< - * return len(self._registry) - * - */ - -/* Python wrapper */ -static Py_ssize_t __pyx_pw_6gevent_7__ident_13IdentRegistry_7__len__(PyObject *__pyx_v_self); /*proto*/ -static Py_ssize_t __pyx_pw_6gevent_7__ident_13IdentRegistry_7__len__(PyObject *__pyx_v_self) { - Py_ssize_t __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__len__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_7__ident_13IdentRegistry_6__len__(((struct __pyx_obj_6gevent_7__ident_IdentRegistry *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static Py_ssize_t __pyx_pf_6gevent_7__ident_13IdentRegistry_6__len__(struct __pyx_obj_6gevent_7__ident_IdentRegistry *__pyx_v_self) { - Py_ssize_t __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - Py_ssize_t __pyx_t_2; - __Pyx_RefNannySetupContext("__len__", 0); - - /* "src/gevent/_ident.py":80 - * - * def __len__(self): - * return len(self._registry) # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_1 = __pyx_v_self->_registry; - __Pyx_INCREF(__pyx_t_1); - __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 80, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_2; - goto __pyx_L0; - - /* "src/gevent/_ident.py":79 - * heappush(self._available_idents, vref.value) - * - * def __len__(self): # <<<<<<<<<<<<<< - * return len(self._registry) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__ident.IdentRegistry.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_tp_new_6gevent_7__ident_ValuedWeakRef(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_obj_6gevent_7__ident_ValuedWeakRef *p; - PyObject *o = __pyx_ptype_6gevent_7__ident_ref->tp_new(t, a, k); - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_7__ident_ValuedWeakRef *)o); - p->value = Py_None; Py_INCREF(Py_None); - return o; -} - -static void __pyx_tp_dealloc_6gevent_7__ident_ValuedWeakRef(PyObject *o) { - struct __pyx_obj_6gevent_7__ident_ValuedWeakRef *p = (struct __pyx_obj_6gevent_7__ident_ValuedWeakRef *)o; - PyObject_GC_UnTrack(o); - Py_CLEAR(p->value); - #if CYTHON_USE_TYPE_SLOTS - if (PyType_IS_GC(Py_TYPE(o)->tp_base)) - #endif - PyObject_GC_Track(o); - if (likely(__pyx_ptype_6gevent_7__ident_ref)) __pyx_ptype_6gevent_7__ident_ref->tp_dealloc(o); else __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_6gevent_7__ident_ValuedWeakRef); -} - -static int __pyx_tp_traverse_6gevent_7__ident_ValuedWeakRef(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_6gevent_7__ident_ValuedWeakRef *p = (struct __pyx_obj_6gevent_7__ident_ValuedWeakRef *)o; - e = ((likely(__pyx_ptype_6gevent_7__ident_ref)) ? ((__pyx_ptype_6gevent_7__ident_ref->tp_traverse) ? __pyx_ptype_6gevent_7__ident_ref->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_6gevent_7__ident_ValuedWeakRef)); if (e) return e; - if (p->value) { - e = (*v)(p->value, a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_6gevent_7__ident_ValuedWeakRef(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_6gevent_7__ident_ValuedWeakRef *p = (struct __pyx_obj_6gevent_7__ident_ValuedWeakRef *)o; - if (likely(__pyx_ptype_6gevent_7__ident_ref)) { if (__pyx_ptype_6gevent_7__ident_ref->tp_clear) __pyx_ptype_6gevent_7__ident_ref->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_6gevent_7__ident_ValuedWeakRef); - tmp = ((PyObject*)p->value); - p->value = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyTypeObject __pyx_type_6gevent_7__ident_ValuedWeakRef = { - PyVarObject_HEAD_INIT(0, 0) - "gevent.__ident.ValuedWeakRef", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_7__ident_ValuedWeakRef), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_7__ident_ValuedWeakRef, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "\n A weak ref with an associated value.\n ", /*tp_doc*/ - __pyx_tp_traverse_6gevent_7__ident_ValuedWeakRef, /*tp_traverse*/ - __pyx_tp_clear_6gevent_7__ident_ValuedWeakRef, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - 0, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - 0, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_7__ident_ValuedWeakRef, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; -static struct __pyx_vtabstruct_6gevent_7__ident_IdentRegistry __pyx_vtable_6gevent_7__ident_IdentRegistry; - -static PyObject *__pyx_tp_new_6gevent_7__ident_IdentRegistry(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - struct __pyx_obj_6gevent_7__ident_IdentRegistry *p; - PyObject *o; - o = (*t->tp_alloc)(t, 0); - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_7__ident_IdentRegistry *)o); - p->__pyx_vtab = __pyx_vtabptr_6gevent_7__ident_IdentRegistry; - p->_registry = Py_None; Py_INCREF(Py_None); - p->_available_idents = ((PyObject*)Py_None); Py_INCREF(Py_None); - return o; -} - -static void __pyx_tp_dealloc_6gevent_7__ident_IdentRegistry(PyObject *o) { - struct __pyx_obj_6gevent_7__ident_IdentRegistry *p = (struct __pyx_obj_6gevent_7__ident_IdentRegistry *)o; - PyObject_GC_UnTrack(o); - Py_CLEAR(p->_registry); - Py_CLEAR(p->_available_idents); - (*Py_TYPE(o)->tp_free)(o); -} - -static int __pyx_tp_traverse_6gevent_7__ident_IdentRegistry(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_6gevent_7__ident_IdentRegistry *p = (struct __pyx_obj_6gevent_7__ident_IdentRegistry *)o; - if (p->_registry) { - e = (*v)(p->_registry, a); if (e) return e; - } - if (p->_available_idents) { - e = (*v)(p->_available_idents, a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_6gevent_7__ident_IdentRegistry(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_6gevent_7__ident_IdentRegistry *p = (struct __pyx_obj_6gevent_7__ident_IdentRegistry *)o; - tmp = ((PyObject*)p->_registry); - p->_registry = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->_available_idents); - p->_available_idents = ((PyObject*)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyMethodDef __pyx_methods_6gevent_7__ident_IdentRegistry[] = { - {0, 0, 0, 0} -}; - -static PySequenceMethods __pyx_tp_as_sequence_IdentRegistry = { - __pyx_pw_6gevent_7__ident_13IdentRegistry_7__len__, /*sq_length*/ - 0, /*sq_concat*/ - 0, /*sq_repeat*/ - 0, /*sq_item*/ - 0, /*sq_slice*/ - 0, /*sq_ass_item*/ - 0, /*sq_ass_slice*/ - 0, /*sq_contains*/ - 0, /*sq_inplace_concat*/ - 0, /*sq_inplace_repeat*/ -}; - -static PyMappingMethods __pyx_tp_as_mapping_IdentRegistry = { - __pyx_pw_6gevent_7__ident_13IdentRegistry_7__len__, /*mp_length*/ - 0, /*mp_subscript*/ - 0, /*mp_ass_subscript*/ -}; - -static PyTypeObject __pyx_type_6gevent_7__ident_IdentRegistry = { - PyVarObject_HEAD_INIT(0, 0) - "gevent.__ident.IdentRegistry", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_7__ident_IdentRegistry), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_7__ident_IdentRegistry, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - &__pyx_tp_as_sequence_IdentRegistry, /*tp_as_sequence*/ - &__pyx_tp_as_mapping_IdentRegistry, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "IdentRegistry()\n\n Maintains a unique mapping of (small) positive integer identifiers\n to objects that can be weakly referenced.\n\n It is guaranteed that no two objects will have the the same\n identifier at the same time, as long as those objects are\n also uniquely hashable.\n ", /*tp_doc*/ - __pyx_tp_traverse_6gevent_7__ident_IdentRegistry, /*tp_traverse*/ - __pyx_tp_clear_6gevent_7__ident_IdentRegistry, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_7__ident_IdentRegistry, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_7__ident_13IdentRegistry_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_7__ident_IdentRegistry, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; - -static PyMethodDef __pyx_methods[] = { - {0, 0, 0, 0} -}; - -#if PY_MAJOR_VERSION >= 3 -#if CYTHON_PEP489_MULTI_PHASE_INIT -static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ -static int __pyx_pymod_exec___ident(PyObject* module); /*proto*/ -static PyModuleDef_Slot __pyx_moduledef_slots[] = { - {Py_mod_create, (void*)__pyx_pymod_create}, - {Py_mod_exec, (void*)__pyx_pymod_exec___ident}, - {0, NULL} -}; -#endif - -static struct PyModuleDef __pyx_moduledef = { - PyModuleDef_HEAD_INIT, - "__ident", - 0, /* m_doc */ - #if CYTHON_PEP489_MULTI_PHASE_INIT - 0, /* m_size */ - #else - -1, /* m_size */ - #endif - __pyx_methods /* m_methods */, - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_moduledef_slots, /* m_slots */ - #else - NULL, /* m_reload */ - #endif - NULL, /* m_traverse */ - NULL, /* m_clear */ - NULL /* m_free */ -}; -#endif - -static __Pyx_StringTabEntry __pyx_string_tab[] = { - {&__pyx_n_s_IdentRegistry, __pyx_k_IdentRegistry, sizeof(__pyx_k_IdentRegistry), 0, 0, 1, 1}, - {&__pyx_n_s_IdentRegistry__return_ident, __pyx_k_IdentRegistry__return_ident, sizeof(__pyx_k_IdentRegistry__return_ident), 0, 0, 1, 1}, - {&__pyx_n_s_IdentRegistry_get_ident, __pyx_k_IdentRegistry_get_ident, sizeof(__pyx_k_IdentRegistry_get_ident), 0, 0, 1, 1}, - {&__pyx_n_s_KeyError, __pyx_k_KeyError, sizeof(__pyx_k_KeyError), 0, 0, 1, 1}, - {&__pyx_n_s_WeakKeyDictionary, __pyx_k_WeakKeyDictionary, sizeof(__pyx_k_WeakKeyDictionary), 0, 0, 1, 1}, - {&__pyx_n_s_all, __pyx_k_all, sizeof(__pyx_k_all), 0, 0, 1, 1}, - {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, - {&__pyx_n_s_get_ident, __pyx_k_get_ident, sizeof(__pyx_k_get_ident), 0, 0, 1, 1}, - {&__pyx_n_s_gevent___ident, __pyx_k_gevent___ident, sizeof(__pyx_k_gevent___ident), 0, 0, 1, 1}, - {&__pyx_n_s_gevent__util, __pyx_k_gevent__util, sizeof(__pyx_k_gevent__util), 0, 0, 1, 1}, - {&__pyx_n_s_heappop, __pyx_k_heappop, sizeof(__pyx_k_heappop), 0, 0, 1, 1}, - {&__pyx_n_s_heappush, __pyx_k_heappush, sizeof(__pyx_k_heappush), 0, 0, 1, 1}, - {&__pyx_n_s_heapq, __pyx_k_heapq, sizeof(__pyx_k_heapq), 0, 0, 1, 1}, - {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, - {&__pyx_n_s_import_c_accel, __pyx_k_import_c_accel, sizeof(__pyx_k_import_c_accel), 0, 0, 1, 1}, - {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, - {&__pyx_n_s_obj, __pyx_k_obj, sizeof(__pyx_k_obj), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_capi, __pyx_k_pyx_capi, sizeof(__pyx_k_pyx_capi), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1}, - {&__pyx_n_s_ref, __pyx_k_ref, sizeof(__pyx_k_ref), 0, 0, 1, 1}, - {&__pyx_n_s_return_ident, __pyx_k_return_ident, sizeof(__pyx_k_return_ident), 0, 0, 1, 1}, - {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1}, - {&__pyx_n_s_slots, __pyx_k_slots, sizeof(__pyx_k_slots), 0, 0, 1, 1}, - {&__pyx_kp_s_src_gevent__ident_py, __pyx_k_src_gevent__ident_py, sizeof(__pyx_k_src_gevent__ident_py), 0, 0, 1, 0}, - {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, - {&__pyx_n_s_value, __pyx_k_value, sizeof(__pyx_k_value), 0, 0, 1, 1}, - {&__pyx_n_s_vref, __pyx_k_vref, sizeof(__pyx_k_vref), 0, 0, 1, 1}, - {&__pyx_n_s_weakref, __pyx_k_weakref, sizeof(__pyx_k_weakref), 0, 0, 1, 1}, - {0, 0, 0, 0, 0, 0, 0} -}; -static int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin_KeyError = __Pyx_GetBuiltinName(__pyx_n_s_KeyError); if (!__pyx_builtin_KeyError) __PYX_ERR(0, 55, __pyx_L1_error) - return 0; - __pyx_L1_error:; - return -1; -} - -static int __Pyx_InitCachedConstants(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - - /* "src/gevent/_ident.py":27 - * # weakref.ref descends from object - * # pylint: disable=slots-on-old-class - * __slots__ = ('value',) # <<<<<<<<<<<<<< - * - * - */ - __pyx_tuple_ = PyTuple_Pack(1, __pyx_n_s_value); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 27, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple_); - __Pyx_GIVEREF(__pyx_tuple_); - - /* "src/gevent/_ident.py":47 - * self._available_idents = [] - * - * def get_ident(self, obj): # <<<<<<<<<<<<<< - * """ - * Retrieve the identifier for *obj*, creating one - */ - __pyx_tuple__2 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 47, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__2); - __Pyx_GIVEREF(__pyx_tuple__2); - __pyx_codeobj__3 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__2, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__ident_py, __pyx_n_s_get_ident, 47, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__3)) __PYX_ERR(0, 47, __pyx_L1_error) - - /* "src/gevent/_ident.py":70 - * return ident - * - * def _return_ident(self, vref): # <<<<<<<<<<<<<< - * # By the time this is called, self._registry has been - * # updated - */ - __pyx_tuple__4 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_vref); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 70, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__4); - __Pyx_GIVEREF(__pyx_tuple__4); - __pyx_codeobj__5 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__4, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__ident_py, __pyx_n_s_return_ident, 70, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__5)) __PYX_ERR(0, 70, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_InitGlobals(void) { - if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - return 0; - __pyx_L1_error:; - return -1; -} - -static int __Pyx_modinit_global_init_code(void); /*proto*/ -static int __Pyx_modinit_variable_export_code(void); /*proto*/ -static int __Pyx_modinit_function_export_code(void); /*proto*/ -static int __Pyx_modinit_type_init_code(void); /*proto*/ -static int __Pyx_modinit_type_import_code(void); /*proto*/ -static int __Pyx_modinit_variable_import_code(void); /*proto*/ -static int __Pyx_modinit_function_import_code(void); /*proto*/ - -static int __Pyx_modinit_global_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); - /*--- Global init code ---*/ - __pyx_v_6gevent_7__ident_heappop = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_7__ident_heappush = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_7__ident_WeakKeyDictionary = Py_None; Py_INCREF(Py_None); - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_variable_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); - /*--- Variable export code ---*/ - if (__Pyx_ExportVoidPtr(__pyx_n_s_heappop, (void *)&__pyx_v_6gevent_7__ident_heappop, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_heappush, (void *)&__pyx_v_6gevent_7__ident_heappush, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_WeakKeyDictionary, (void *)&__pyx_v_6gevent_7__ident_WeakKeyDictionary, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_function_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); - /*--- Function export code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_type_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); - /*--- Type init code ---*/ - __pyx_ptype_6gevent_7__ident_ref = __Pyx_ImportType("weakref", "ref", sizeof(PyWeakReference), 0); if (unlikely(!__pyx_ptype_6gevent_7__ident_ref)) __PYX_ERR(1, 5, __pyx_L1_error) - __pyx_type_6gevent_7__ident_ValuedWeakRef.tp_base = __pyx_ptype_6gevent_7__ident_ref; - if (PyType_Ready(&__pyx_type_6gevent_7__ident_ValuedWeakRef) < 0) __PYX_ERR(0, 20, __pyx_L1_error) - __pyx_type_6gevent_7__ident_ValuedWeakRef.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_7__ident_ValuedWeakRef.tp_dictoffset && __pyx_type_6gevent_7__ident_ValuedWeakRef.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_7__ident_ValuedWeakRef.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; - } - if (PyObject_SetAttrString(__pyx_m, "ValuedWeakRef", (PyObject *)&__pyx_type_6gevent_7__ident_ValuedWeakRef) < 0) __PYX_ERR(0, 20, __pyx_L1_error) - __pyx_ptype_6gevent_7__ident_ValuedWeakRef = &__pyx_type_6gevent_7__ident_ValuedWeakRef; - __pyx_vtabptr_6gevent_7__ident_IdentRegistry = &__pyx_vtable_6gevent_7__ident_IdentRegistry; - __pyx_vtable_6gevent_7__ident_IdentRegistry.get_ident = (PyObject *(*)(struct __pyx_obj_6gevent_7__ident_IdentRegistry *, PyObject *, int __pyx_skip_dispatch))__pyx_f_6gevent_7__ident_13IdentRegistry_get_ident; - __pyx_vtable_6gevent_7__ident_IdentRegistry._return_ident = (PyObject *(*)(struct __pyx_obj_6gevent_7__ident_IdentRegistry *, struct __pyx_obj_6gevent_7__ident_ValuedWeakRef *, int __pyx_skip_dispatch))__pyx_f_6gevent_7__ident_13IdentRegistry__return_ident; - if (PyType_Ready(&__pyx_type_6gevent_7__ident_IdentRegistry) < 0) __PYX_ERR(0, 30, __pyx_L1_error) - __pyx_type_6gevent_7__ident_IdentRegistry.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_7__ident_IdentRegistry.tp_dictoffset && __pyx_type_6gevent_7__ident_IdentRegistry.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_7__ident_IdentRegistry.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; - } - if (__Pyx_SetVtable(__pyx_type_6gevent_7__ident_IdentRegistry.tp_dict, __pyx_vtabptr_6gevent_7__ident_IdentRegistry) < 0) __PYX_ERR(0, 30, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "IdentRegistry", (PyObject *)&__pyx_type_6gevent_7__ident_IdentRegistry) < 0) __PYX_ERR(0, 30, __pyx_L1_error) - __pyx_ptype_6gevent_7__ident_IdentRegistry = &__pyx_type_6gevent_7__ident_IdentRegistry; - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_type_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); - /*--- Type import code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_variable_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); - /*--- Variable import code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_function_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); - /*--- Function import code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - - -#if PY_MAJOR_VERSION < 3 -#ifdef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC void -#else -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -#endif -#else -#ifdef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC PyObject * -#else -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -#endif -#endif -#ifndef CYTHON_SMALL_CODE -#if defined(__clang__) - #define CYTHON_SMALL_CODE -#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4))) - #define CYTHON_SMALL_CODE __attribute__((cold)) -#else - #define CYTHON_SMALL_CODE -#endif -#endif - - -#if PY_MAJOR_VERSION < 3 -__Pyx_PyMODINIT_FUNC init__ident(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC init__ident(void) -#else -__Pyx_PyMODINIT_FUNC PyInit___ident(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC PyInit___ident(void) -#if CYTHON_PEP489_MULTI_PHASE_INIT -{ - return PyModuleDef_Init(&__pyx_moduledef); -} -static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) { - PyObject *value = PyObject_GetAttrString(spec, from_name); - int result = 0; - if (likely(value)) { - result = PyDict_SetItemString(moddict, to_name, value); - Py_DECREF(value); - } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Clear(); - } else { - result = -1; - } - return result; -} -static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) { - PyObject *module = NULL, *moddict, *modname; - if (__pyx_m) - return __Pyx_NewRef(__pyx_m); - modname = PyObject_GetAttrString(spec, "name"); - if (unlikely(!modname)) goto bad; - module = PyModule_NewObject(modname); - Py_DECREF(modname); - if (unlikely(!module)) goto bad; - moddict = PyModule_GetDict(module); - if (unlikely(!moddict)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__") < 0)) goto bad; - return module; -bad: - Py_XDECREF(module); - return NULL; -} - - -static int __pyx_pymod_exec___ident(PyObject *__pyx_pyinit_module) -#endif -#endif -{ - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannyDeclarations - #if CYTHON_PEP489_MULTI_PHASE_INIT - if (__pyx_m && __pyx_m == __pyx_pyinit_module) return 0; - #elif PY_MAJOR_VERSION >= 3 - if (__pyx_m) return __Pyx_NewRef(__pyx_m); - #endif - #if CYTHON_REFNANNY -__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); -if (!__Pyx_RefNanny) { - PyErr_Clear(); - __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); - if (!__Pyx_RefNanny) - Py_FatalError("failed to import 'refnanny' module"); -} -#endif - __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit___ident(void)", 0); - if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) - #ifdef __Pyx_CyFunction_USED - if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_FusedFunction_USED - if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Coroutine_USED - if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Generator_USED - if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_AsyncGen_USED - if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_StopAsyncIteration_USED - if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - /*--- Library function declarations ---*/ - /*--- Threads initialization code ---*/ - #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS - #ifdef WITH_THREAD /* Python build with threading support? */ - PyEval_InitThreads(); - #endif - #endif - /*--- Module creation code ---*/ - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_m = __pyx_pyinit_module; - Py_INCREF(__pyx_m); - #else - #if PY_MAJOR_VERSION < 3 - __pyx_m = Py_InitModule4("__ident", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); - #else - __pyx_m = PyModule_Create(&__pyx_moduledef); - #endif - if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) - Py_INCREF(__pyx_d); - __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) - #if CYTHON_COMPILING_IN_PYPY - Py_INCREF(__pyx_b); - #endif - if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - /*--- Initialize various global constants etc. ---*/ - if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) - if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - if (__pyx_module_is_main_gevent____ident) { - if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - } - #if PY_MAJOR_VERSION >= 3 - { - PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) - if (!PyDict_GetItemString(modules, "gevent.__ident")) { - if (unlikely(PyDict_SetItemString(modules, "gevent.__ident", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) - } - } - #endif - /*--- Builtin init code ---*/ - if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Constants init code ---*/ - if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Global type/function init code ---*/ - (void)__Pyx_modinit_global_init_code(); - if (unlikely(__Pyx_modinit_variable_export_code() != 0)) goto __pyx_L1_error; - (void)__Pyx_modinit_function_export_code(); - if (unlikely(__Pyx_modinit_type_init_code() != 0)) goto __pyx_L1_error; - (void)__Pyx_modinit_type_import_code(); - (void)__Pyx_modinit_variable_import_code(); - (void)__Pyx_modinit_function_import_code(); - /*--- Execution code ---*/ - #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) - if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - - /* "src/gevent/_ident.py":10 - * - * - * from weakref import WeakKeyDictionary # <<<<<<<<<<<<<< - * from weakref import ref - * - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_WeakKeyDictionary); - __Pyx_GIVEREF(__pyx_n_s_WeakKeyDictionary); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_WeakKeyDictionary); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_weakref, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_WeakKeyDictionary); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_v_6gevent_7__ident_WeakKeyDictionary); - __Pyx_DECREF_SET(__pyx_v_6gevent_7__ident_WeakKeyDictionary, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_ident.py":11 - * - * from weakref import WeakKeyDictionary - * from weakref import ref # <<<<<<<<<<<<<< - * - * from heapq import heappop - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_ref); - __Pyx_GIVEREF(__pyx_n_s_ref); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_ref); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_weakref, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_ident.py":13 - * from weakref import ref - * - * from heapq import heappop # <<<<<<<<<<<<<< - * from heapq import heappush - * - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_heappop); - __Pyx_GIVEREF(__pyx_n_s_heappop); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_heappop); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_heapq, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_heappop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_v_6gevent_7__ident_heappop); - __Pyx_DECREF_SET(__pyx_v_6gevent_7__ident_heappop, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_ident.py":14 - * - * from heapq import heappop - * from heapq import heappush # <<<<<<<<<<<<<< - * - * __all__ = [ - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_heappush); - __Pyx_GIVEREF(__pyx_n_s_heappush); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_heappush); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_heapq, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_heappush); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_v_6gevent_7__ident_heappush); - __Pyx_DECREF_SET(__pyx_v_6gevent_7__ident_heappush, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_ident.py":16 - * from heapq import heappush - * - * __all__ = [ # <<<<<<<<<<<<<< - * 'IdentRegistry', - * ] - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 16, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_IdentRegistry); - __Pyx_GIVEREF(__pyx_n_s_IdentRegistry); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_IdentRegistry); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_all, __pyx_t_1) < 0) __PYX_ERR(0, 16, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_ident.py":27 - * # weakref.ref descends from object - * # pylint: disable=slots-on-old-class - * __slots__ = ('value',) # <<<<<<<<<<<<<< - * - * - */ - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_7__ident_ValuedWeakRef->tp_dict, __pyx_n_s_slots, __pyx_tuple_) < 0) __PYX_ERR(0, 27, __pyx_L1_error) - PyType_Modified(__pyx_ptype_6gevent_7__ident_ValuedWeakRef); - - /* "src/gevent/_ident.py":47 - * self._available_idents = [] - * - * def get_ident(self, obj): # <<<<<<<<<<<<<< - * """ - * Retrieve the identifier for *obj*, creating one - */ - __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_7__ident_13IdentRegistry_3get_ident, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IdentRegistry_get_ident, NULL, __pyx_n_s_gevent___ident, __pyx_d, ((PyObject *)__pyx_codeobj__3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 47, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_7__ident_IdentRegistry->tp_dict, __pyx_n_s_get_ident, __pyx_t_1) < 0) __PYX_ERR(0, 47, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - PyType_Modified(__pyx_ptype_6gevent_7__ident_IdentRegistry); - - /* "src/gevent/_ident.py":70 - * return ident - * - * def _return_ident(self, vref): # <<<<<<<<<<<<<< - * # By the time this is called, self._registry has been - * # updated - */ - __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_7__ident_13IdentRegistry_5_return_ident, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IdentRegistry__return_ident, NULL, __pyx_n_s_gevent___ident, __pyx_d, ((PyObject *)__pyx_codeobj__5)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 70, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_7__ident_IdentRegistry->tp_dict, __pyx_n_s_return_ident, __pyx_t_1) < 0) __PYX_ERR(0, 70, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - PyType_Modified(__pyx_ptype_6gevent_7__ident_IdentRegistry); - - /* "src/gevent/_ident.py":83 - * - * - * from gevent._util import import_c_accel # <<<<<<<<<<<<<< - * import_c_accel(globals(), 'gevent.__ident') - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 83, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_import_c_accel); - __Pyx_GIVEREF(__pyx_n_s_import_c_accel); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_import_c_accel); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_gevent__util, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 83, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_import_c_accel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 83, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_import_c_accel, __pyx_t_1) < 0) __PYX_ERR(0, 83, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_ident.py":84 - * - * from gevent._util import import_c_accel - * import_c_accel(globals(), 'gevent.__ident') # <<<<<<<<<<<<<< - */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_import_c_accel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 84, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_Globals(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 84, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 84, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); - __Pyx_INCREF(__pyx_n_s_gevent___ident); - __Pyx_GIVEREF(__pyx_n_s_gevent___ident); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_gevent___ident); - __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 84, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_ident.py":1 - * # -*- coding: utf-8 -*- # <<<<<<<<<<<<<< - * # Copyright 2018 gevent contributors. See LICENSE for details. - * # cython: auto_pickle=False,embedsignature=True,always_allow_keywords=False - */ - __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /*--- Wrapped vars code ---*/ - - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - if (__pyx_m) { - if (__pyx_d) { - __Pyx_AddTraceback("init gevent.__ident", 0, __pyx_lineno, __pyx_filename); - } - Py_DECREF(__pyx_m); __pyx_m = 0; - } else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_ImportError, "init gevent.__ident"); - } - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - #if CYTHON_PEP489_MULTI_PHASE_INIT - return (__pyx_m != NULL) ? 0 : -1; - #elif PY_MAJOR_VERSION >= 3 - return __pyx_m; - #else - return; - #endif -} - -/* --- Runtime support code --- */ -/* Refnanny */ -#if CYTHON_REFNANNY -static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { - PyObject *m = NULL, *p = NULL; - void *r = NULL; - m = PyImport_ImportModule((char *)modname); - if (!m) goto end; - p = PyObject_GetAttrString(m, (char *)"RefNannyAPI"); - if (!p) goto end; - r = PyLong_AsVoidPtr(p); -end: - Py_XDECREF(p); - Py_XDECREF(m); - return (__Pyx_RefNannyAPIStruct *)r; -} -#endif - -/* PyObjectGetAttrStr */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_getattro)) - return tp->tp_getattro(obj, attr_name); -#if PY_MAJOR_VERSION < 3 - if (likely(tp->tp_getattr)) - return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); -#endif - return PyObject_GetAttr(obj, attr_name); -} -#endif - -/* GetBuiltinName */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name) { - PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); - if (unlikely(!result)) { - PyErr_Format(PyExc_NameError, -#if PY_MAJOR_VERSION >= 3 - "name '%U' is not defined", name); -#else - "name '%.200s' is not defined", PyString_AS_STRING(name)); -#endif - } - return result; -} - -/* RaiseArgTupleInvalid */ -static void __Pyx_RaiseArgtupleInvalid( - const char* func_name, - int exact, - Py_ssize_t num_min, - Py_ssize_t num_max, - Py_ssize_t num_found) -{ - Py_ssize_t num_expected; - const char *more_or_less; - if (num_found < num_min) { - num_expected = num_min; - more_or_less = "at least"; - } else { - num_expected = num_max; - more_or_less = "at most"; - } - if (exact) { - more_or_less = "exactly"; - } - PyErr_Format(PyExc_TypeError, - "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", - func_name, more_or_less, num_expected, - (num_expected == 1) ? "" : "s", num_found); -} - -/* KeywordStringCheck */ -static int __Pyx_CheckKeywordStrings( - PyObject *kwdict, - const char* function_name, - int kw_allowed) -{ - PyObject* key = 0; - Py_ssize_t pos = 0; -#if CYTHON_COMPILING_IN_PYPY - if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0)) - goto invalid_keyword; - return 1; -#else - while (PyDict_Next(kwdict, &pos, &key, 0)) { - #if PY_MAJOR_VERSION < 3 - if (unlikely(!PyString_Check(key))) - #endif - if (unlikely(!PyUnicode_Check(key))) - goto invalid_keyword_type; - } - if ((!kw_allowed) && unlikely(key)) - goto invalid_keyword; - return 1; -invalid_keyword_type: - PyErr_Format(PyExc_TypeError, - "%.200s() keywords must be strings", function_name); - return 0; -#endif -invalid_keyword: - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION < 3 - "%.200s() got an unexpected keyword argument '%.200s'", - function_name, PyString_AsString(key)); - #else - "%s() got an unexpected keyword argument '%U'", - function_name, key); - #endif - return 0; -} - -/* PyCFunctionFastCall */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { - PyCFunctionObject *func = (PyCFunctionObject*)func_obj; - PyCFunction meth = PyCFunction_GET_FUNCTION(func); - PyObject *self = PyCFunction_GET_SELF(func); - int flags = PyCFunction_GET_FLAGS(func); - assert(PyCFunction_Check(func)); - assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))); - assert(nargs >= 0); - assert(nargs == 0 || args != NULL); - /* _PyCFunction_FastCallDict() must not be called with an exception set, - because it may clear it (directly or indirectly) and so the - caller loses its exception */ - assert(!PyErr_Occurred()); - if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { - return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL); - } else { - return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs); - } -} -#endif - -/* PyFunctionFastCall */ -#if CYTHON_FAST_PYCALL -#include "frameobject.h" -static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, - PyObject *globals) { - PyFrameObject *f; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject **fastlocals; - Py_ssize_t i; - PyObject *result; - assert(globals != NULL); - /* XXX Perhaps we should create a specialized - PyFrame_New() that doesn't take locals, but does - take builtins without sanity checking them. - */ - assert(tstate != NULL); - f = PyFrame_New(tstate, co, globals, NULL); - if (f == NULL) { - return NULL; - } - fastlocals = f->f_localsplus; - for (i = 0; i < na; i++) { - Py_INCREF(*args); - fastlocals[i] = *args++; - } - result = PyEval_EvalFrameEx(f,0); - ++tstate->recursion_depth; - Py_DECREF(f); - --tstate->recursion_depth; - return result; -} -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs) { - PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); - PyObject *globals = PyFunction_GET_GLOBALS(func); - PyObject *argdefs = PyFunction_GET_DEFAULTS(func); - PyObject *closure; -#if PY_MAJOR_VERSION >= 3 - PyObject *kwdefs; -#endif - PyObject *kwtuple, **k; - PyObject **d; - Py_ssize_t nd; - Py_ssize_t nk; - PyObject *result; - assert(kwargs == NULL || PyDict_Check(kwargs)); - nk = kwargs ? PyDict_Size(kwargs) : 0; - if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { - return NULL; - } - if ( -#if PY_MAJOR_VERSION >= 3 - co->co_kwonlyargcount == 0 && -#endif - likely(kwargs == NULL || nk == 0) && - co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { - if (argdefs == NULL && co->co_argcount == nargs) { - result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); - goto done; - } - else if (nargs == 0 && argdefs != NULL - && co->co_argcount == Py_SIZE(argdefs)) { - /* function called with no arguments, but all parameters have - a default value: use default values as arguments .*/ - args = &PyTuple_GET_ITEM(argdefs, 0); - result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); - goto done; - } - } - if (kwargs != NULL) { - Py_ssize_t pos, i; - kwtuple = PyTuple_New(2 * nk); - if (kwtuple == NULL) { - result = NULL; - goto done; - } - k = &PyTuple_GET_ITEM(kwtuple, 0); - pos = i = 0; - while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { - Py_INCREF(k[i]); - Py_INCREF(k[i+1]); - i += 2; - } - nk = i / 2; - } - else { - kwtuple = NULL; - k = NULL; - } - closure = PyFunction_GET_CLOSURE(func); -#if PY_MAJOR_VERSION >= 3 - kwdefs = PyFunction_GET_KW_DEFAULTS(func); -#endif - if (argdefs != NULL) { - d = &PyTuple_GET_ITEM(argdefs, 0); - nd = Py_SIZE(argdefs); - } - else { - d = NULL; - nd = 0; - } -#if PY_MAJOR_VERSION >= 3 - result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, - args, nargs, - k, (int)nk, - d, (int)nd, kwdefs, closure); -#else - result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, - args, nargs, - k, (int)nk, - d, (int)nd, closure); -#endif - Py_XDECREF(kwtuple); -done: - Py_LeaveRecursiveCall(); - return result; -} -#endif -#endif - -/* PyObjectCall */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { - PyObject *result; - ternaryfunc call = func->ob_type->tp_call; - if (unlikely(!call)) - return PyObject_Call(func, arg, kw); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = (*call)(func, arg, kw); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCallMethO */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { - PyObject *self, *result; - PyCFunction cfunc; - cfunc = PyCFunction_GET_FUNCTION(func); - self = PyCFunction_GET_SELF(func); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = cfunc(self, arg); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCallOneArg */ -#if CYTHON_COMPILING_IN_CPYTHON -static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_New(1); - if (unlikely(!args)) return NULL; - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 0, arg); - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, &arg, 1); - } -#endif - if (likely(PyCFunction_Check(func))) { - if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { - return __Pyx_PyObject_CallMethO(func, arg); -#if CYTHON_FAST_PYCCALL - } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { - return __Pyx_PyCFunction_FastCall(func, &arg, 1); -#endif - } - } - return __Pyx__PyObject_CallOneArg(func, arg); -} -#else -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_Pack(1, arg); - if (unlikely(!args)) return NULL; - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -#endif - -/* PyObjectCallNoArg */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, NULL, 0); - } -#endif -#ifdef __Pyx_CyFunction_USED - if (likely(PyCFunction_Check(func) || __Pyx_TypeCheck(func, __pyx_CyFunctionType))) { -#else - if (likely(PyCFunction_Check(func))) { -#endif - if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { - return __Pyx_PyObject_CallMethO(func, NULL); - } - } - return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL); -} -#endif - -/* GetItemInt */ - static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { - PyObject *r; - if (!j) return NULL; - r = PyObject_GetItem(o, j); - Py_DECREF(j); - return r; -} -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - Py_ssize_t wrapped_i = i; - if (wraparound & unlikely(i < 0)) { - wrapped_i += PyList_GET_SIZE(o); - } - if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyList_GET_SIZE(o)))) { - PyObject *r = PyList_GET_ITEM(o, wrapped_i); - Py_INCREF(r); - return r; - } - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -#else - return PySequence_GetItem(o, i); -#endif -} -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - Py_ssize_t wrapped_i = i; - if (wraparound & unlikely(i < 0)) { - wrapped_i += PyTuple_GET_SIZE(o); - } - if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyTuple_GET_SIZE(o)))) { - PyObject *r = PyTuple_GET_ITEM(o, wrapped_i); - Py_INCREF(r); - return r; - } - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -#else - return PySequence_GetItem(o, i); -#endif -} -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS - if (is_list || PyList_CheckExact(o)) { - Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); - if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) { - PyObject *r = PyList_GET_ITEM(o, n); - Py_INCREF(r); - return r; - } - } - else if (PyTuple_CheckExact(o)) { - Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); - if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) { - PyObject *r = PyTuple_GET_ITEM(o, n); - Py_INCREF(r); - return r; - } - } else { - PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; - if (likely(m && m->sq_item)) { - if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { - Py_ssize_t l = m->sq_length(o); - if (likely(l >= 0)) { - i += l; - } else { - if (!PyErr_ExceptionMatches(PyExc_OverflowError)) - return NULL; - PyErr_Clear(); - } - } - return m->sq_item(o, i); - } - } -#else - if (is_list || PySequence_Check(o)) { - return PySequence_GetItem(o, i); - } -#endif - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -} - -/* ObjectGetItem */ - #if CYTHON_USE_TYPE_SLOTS -static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) { - PyObject *runerr; - Py_ssize_t key_value; - PySequenceMethods *m = Py_TYPE(obj)->tp_as_sequence; - if (unlikely(!(m && m->sq_item))) { - PyErr_Format(PyExc_TypeError, "'%.200s' object is not subscriptable", Py_TYPE(obj)->tp_name); - return NULL; - } - key_value = __Pyx_PyIndex_AsSsize_t(index); - if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) { - return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1); - } - if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) { - PyErr_Clear(); - PyErr_Format(PyExc_IndexError, "cannot fit '%.200s' into an index-sized integer", Py_TYPE(index)->tp_name); - } - return NULL; -} -static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) { - PyMappingMethods *m = Py_TYPE(obj)->tp_as_mapping; - if (likely(m && m->mp_subscript)) { - return m->mp_subscript(obj, key); - } - return __Pyx_PyObject_GetIndex(obj, key); -} -#endif - -/* SaveResetException */ - #if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - #if PY_VERSION_HEX >= 0x030700A3 - *type = tstate->exc_state.exc_type; - *value = tstate->exc_state.exc_value; - *tb = tstate->exc_state.exc_traceback; - #else - *type = tstate->exc_type; - *value = tstate->exc_value; - *tb = tstate->exc_traceback; - #endif - Py_XINCREF(*type); - Py_XINCREF(*value); - Py_XINCREF(*tb); -} -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - #if PY_VERSION_HEX >= 0x030700A3 - tmp_type = tstate->exc_state.exc_type; - tmp_value = tstate->exc_state.exc_value; - tmp_tb = tstate->exc_state.exc_traceback; - tstate->exc_state.exc_type = type; - tstate->exc_state.exc_value = value; - tstate->exc_state.exc_traceback = tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = type; - tstate->exc_value = value; - tstate->exc_traceback = tb; - #endif - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} -#endif - -/* PyErrExceptionMatches */ - #if CYTHON_FAST_THREAD_STATE -static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; i<n; i++) { - if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1; - } -#endif - for (i=0; i<n; i++) { - if (__Pyx_PyErr_GivenExceptionMatches(exc_type, PyTuple_GET_ITEM(tuple, i))) return 1; - } - return 0; -} -static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) { - PyObject *exc_type = tstate->curexc_type; - if (exc_type == err) return 1; - if (unlikely(!exc_type)) return 0; - if (unlikely(PyTuple_Check(err))) - return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); - return __Pyx_PyErr_GivenExceptionMatches(exc_type, err); -} -#endif - -/* PyErrFetchRestore */ - #if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - tmp_type = tstate->curexc_type; - tmp_value = tstate->curexc_value; - tmp_tb = tstate->curexc_traceback; - tstate->curexc_type = type; - tstate->curexc_value = value; - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - *type = tstate->curexc_type; - *value = tstate->curexc_value; - *tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -} -#endif - -/* ArgTypeTest */ - static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact) -{ - if (unlikely(!type)) { - PyErr_SetString(PyExc_SystemError, "Missing type object"); - return 0; - } - else if (exact) { - #if PY_MAJOR_VERSION == 2 - if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1; - #endif - } - else { - if (likely(__Pyx_TypeCheck(obj, type))) return 1; - } - PyErr_Format(PyExc_TypeError, - "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)", - name, type->tp_name, Py_TYPE(obj)->tp_name); - return 0; -} - -/* CallNextTpDealloc */ - static void __Pyx_call_next_tp_dealloc(PyObject* obj, destructor current_tp_dealloc) { - PyTypeObject* type = Py_TYPE(obj); - while (type && type->tp_dealloc != current_tp_dealloc) - type = type->tp_base; - while (type && type->tp_dealloc == current_tp_dealloc) - type = type->tp_base; - if (type) - type->tp_dealloc(obj); -} - -/* CallNextTpTraverse */ - static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse) { - PyTypeObject* type = Py_TYPE(obj); - while (type && type->tp_traverse != current_tp_traverse) - type = type->tp_base; - while (type && type->tp_traverse == current_tp_traverse) - type = type->tp_base; - if (type && type->tp_traverse) - return type->tp_traverse(obj, v, a); - return 0; -} - -/* CallNextTpClear */ - static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_clear) { - PyTypeObject* type = Py_TYPE(obj); - while (type && type->tp_clear != current_tp_clear) - type = type->tp_base; - while (type && type->tp_clear == current_tp_clear) - type = type->tp_base; - if (type && type->tp_clear) - type->tp_clear(obj); -} - -/* PyObject_GenericGetAttrNoDict */ - #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { - PyErr_Format(PyExc_AttributeError, -#if PY_MAJOR_VERSION >= 3 - "'%.50s' object has no attribute '%U'", - tp->tp_name, attr_name); -#else - "'%.50s' object has no attribute '%.400s'", - tp->tp_name, PyString_AS_STRING(attr_name)); -#endif - return NULL; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { - PyObject *descr; - PyTypeObject *tp = Py_TYPE(obj); - if (unlikely(!PyString_Check(attr_name))) { - return PyObject_GenericGetAttr(obj, attr_name); - } - assert(!tp->tp_dictoffset); - descr = _PyType_Lookup(tp, attr_name); - if (unlikely(!descr)) { - return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); - } - Py_INCREF(descr); - #if PY_MAJOR_VERSION < 3 - if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) - #endif - { - descrgetfunc f = Py_TYPE(descr)->tp_descr_get; - if (unlikely(f)) { - PyObject *res = f(descr, obj, (PyObject *)tp); - Py_DECREF(descr); - return res; - } - } - return descr; -} -#endif - -/* SetVTable */ - static int __Pyx_SetVtable(PyObject *dict, void *vtable) { -#if PY_VERSION_HEX >= 0x02070000 - PyObject *ob = PyCapsule_New(vtable, 0, 0); -#else - PyObject *ob = PyCObject_FromVoidPtr(vtable, 0); -#endif - if (!ob) - goto bad; - if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0) - goto bad; - Py_DECREF(ob); - return 0; -bad: - Py_XDECREF(ob); - return -1; -} - -/* Import */ - static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { - PyObject *empty_list = 0; - PyObject *module = 0; - PyObject *global_dict = 0; - PyObject *empty_dict = 0; - PyObject *list; - #if PY_MAJOR_VERSION < 3 - PyObject *py_import; - py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); - if (!py_import) - goto bad; - #endif - if (from_list) - list = from_list; - else { - empty_list = PyList_New(0); - if (!empty_list) - goto bad; - list = empty_list; - } - global_dict = PyModule_GetDict(__pyx_m); - if (!global_dict) - goto bad; - empty_dict = PyDict_New(); - if (!empty_dict) - goto bad; - { - #if PY_MAJOR_VERSION >= 3 - if (level == -1) { - if (strchr(__Pyx_MODULE_NAME, '.')) { - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, 1); - if (!module) { - if (!PyErr_ExceptionMatches(PyExc_ImportError)) - goto bad; - PyErr_Clear(); - } - } - level = 0; - } - #endif - if (!module) { - #if PY_MAJOR_VERSION < 3 - PyObject *py_level = PyInt_FromLong(level); - if (!py_level) - goto bad; - module = PyObject_CallFunctionObjArgs(py_import, - name, global_dict, empty_dict, list, py_level, NULL); - Py_DECREF(py_level); - #else - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, level); - #endif - } - } -bad: - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(py_import); - #endif - Py_XDECREF(empty_list); - Py_XDECREF(empty_dict); - return module; -} - -/* ImportFrom */ - static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { - PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); - if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Format(PyExc_ImportError, - #if PY_MAJOR_VERSION < 3 - "cannot import name %.230s", PyString_AS_STRING(name)); - #else - "cannot import name %S", name); - #endif - } - return value; -} - -/* FetchCommonType */ - static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { - PyObject* fake_module; - PyTypeObject* cached_type = NULL; - fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI); - if (!fake_module) return NULL; - Py_INCREF(fake_module); - cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name); - if (cached_type) { - if (!PyType_Check((PyObject*)cached_type)) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s is not a type object", - type->tp_name); - goto bad; - } - if (cached_type->tp_basicsize != type->tp_basicsize) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s has the wrong size, try recompiling", - type->tp_name); - goto bad; - } - } else { - if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; - PyErr_Clear(); - if (PyType_Ready(type) < 0) goto bad; - if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0) - goto bad; - Py_INCREF(type); - cached_type = type; - } -done: - Py_DECREF(fake_module); - return cached_type; -bad: - Py_XDECREF(cached_type); - cached_type = NULL; - goto done; -} - -/* CythonFunction */ - #include <structmember.h> -static PyObject * -__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure) -{ - if (unlikely(op->func_doc == NULL)) { - if (op->func.m_ml->ml_doc) { -#if PY_MAJOR_VERSION >= 3 - op->func_doc = PyUnicode_FromString(op->func.m_ml->ml_doc); -#else - op->func_doc = PyString_FromString(op->func.m_ml->ml_doc); -#endif - if (unlikely(op->func_doc == NULL)) - return NULL; - } else { - Py_INCREF(Py_None); - return Py_None; - } - } - Py_INCREF(op->func_doc); - return op->func_doc; -} -static int -__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp = op->func_doc; - if (value == NULL) { - value = Py_None; - } - Py_INCREF(value); - op->func_doc = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op) -{ - if (unlikely(op->func_name == NULL)) { -#if PY_MAJOR_VERSION >= 3 - op->func_name = PyUnicode_InternFromString(op->func.m_ml->ml_name); -#else - op->func_name = PyString_InternFromString(op->func.m_ml->ml_name); -#endif - if (unlikely(op->func_name == NULL)) - return NULL; - } - Py_INCREF(op->func_name); - return op->func_name; -} -static int -__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; -#if PY_MAJOR_VERSION >= 3 - if (unlikely(value == NULL || !PyUnicode_Check(value))) { -#else - if (unlikely(value == NULL || !PyString_Check(value))) { -#endif - PyErr_SetString(PyExc_TypeError, - "__name__ must be set to a string object"); - return -1; - } - tmp = op->func_name; - Py_INCREF(value); - op->func_name = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op) -{ - Py_INCREF(op->func_qualname); - return op->func_qualname; -} -static int -__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; -#if PY_MAJOR_VERSION >= 3 - if (unlikely(value == NULL || !PyUnicode_Check(value))) { -#else - if (unlikely(value == NULL || !PyString_Check(value))) { -#endif - PyErr_SetString(PyExc_TypeError, - "__qualname__ must be set to a string object"); - return -1; - } - tmp = op->func_qualname; - Py_INCREF(value); - op->func_qualname = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure) -{ - PyObject *self; - self = m->func_closure; - if (self == NULL) - self = Py_None; - Py_INCREF(self); - return self; -} -static PyObject * -__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op) -{ - if (unlikely(op->func_dict == NULL)) { - op->func_dict = PyDict_New(); - if (unlikely(op->func_dict == NULL)) - return NULL; - } - Py_INCREF(op->func_dict); - return op->func_dict; -} -static int -__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; - if (unlikely(value == NULL)) { - PyErr_SetString(PyExc_TypeError, - "function's dictionary may not be deleted"); - return -1; - } - if (unlikely(!PyDict_Check(value))) { - PyErr_SetString(PyExc_TypeError, - "setting function's dictionary to a non-dict"); - return -1; - } - tmp = op->func_dict; - Py_INCREF(value); - op->func_dict = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op) -{ - Py_INCREF(op->func_globals); - return op->func_globals; -} -static PyObject * -__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op) -{ - Py_INCREF(Py_None); - return Py_None; -} -static PyObject * -__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op) -{ - PyObject* result = (op->func_code) ? op->func_code : Py_None; - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { - int result = 0; - PyObject *res = op->defaults_getter((PyObject *) op); - if (unlikely(!res)) - return -1; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - op->defaults_tuple = PyTuple_GET_ITEM(res, 0); - Py_INCREF(op->defaults_tuple); - op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); - Py_INCREF(op->defaults_kwdict); - #else - op->defaults_tuple = PySequence_ITEM(res, 0); - if (unlikely(!op->defaults_tuple)) result = -1; - else { - op->defaults_kwdict = PySequence_ITEM(res, 1); - if (unlikely(!op->defaults_kwdict)) result = -1; - } - #endif - Py_DECREF(res); - return result; -} -static int -__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value) { - value = Py_None; - } else if (value != Py_None && !PyTuple_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__defaults__ must be set to a tuple object"); - return -1; - } - Py_INCREF(value); - tmp = op->defaults_tuple; - op->defaults_tuple = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) { - PyObject* result = op->defaults_tuple; - if (unlikely(!result)) { - if (op->defaults_getter) { - if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; - result = op->defaults_tuple; - } else { - result = Py_None; - } - } - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value) { - value = Py_None; - } else if (value != Py_None && !PyDict_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__kwdefaults__ must be set to a dict object"); - return -1; - } - Py_INCREF(value); - tmp = op->defaults_kwdict; - op->defaults_kwdict = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) { - PyObject* result = op->defaults_kwdict; - if (unlikely(!result)) { - if (op->defaults_getter) { - if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; - result = op->defaults_kwdict; - } else { - result = Py_None; - } - } - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value || value == Py_None) { - value = NULL; - } else if (!PyDict_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__annotations__ must be set to a dict object"); - return -1; - } - Py_XINCREF(value); - tmp = op->func_annotations; - op->func_annotations = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op) { - PyObject* result = op->func_annotations; - if (unlikely(!result)) { - result = PyDict_New(); - if (unlikely(!result)) return NULL; - op->func_annotations = result; - } - Py_INCREF(result); - return result; -} -static PyGetSetDef __pyx_CyFunction_getsets[] = { - {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, - {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, - {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, - {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, - {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, - {(char *) "__self__", (getter)__Pyx_CyFunction_get_self, 0, 0, 0}, - {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, - {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, - {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, - {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, - {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, - {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, - {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, - {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, - {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, - {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, - {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, - {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, - {0, 0, 0, 0, 0} -}; -static PyMemberDef __pyx_CyFunction_members[] = { - {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), PY_WRITE_RESTRICTED, 0}, - {0, 0, 0, 0, 0} -}; -static PyObject * -__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args) -{ -#if PY_MAJOR_VERSION >= 3 - return PyUnicode_FromString(m->func.m_ml->ml_name); -#else - return PyString_FromString(m->func.m_ml->ml_name); -#endif -} -static PyMethodDef __pyx_CyFunction_methods[] = { - {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, - {0, 0, 0, 0} -}; -#if PY_VERSION_HEX < 0x030500A0 -#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) -#else -#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func.m_weakreflist) -#endif -static PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *ml, int flags, PyObject* qualname, - PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { - __pyx_CyFunctionObject *op = PyObject_GC_New(__pyx_CyFunctionObject, type); - if (op == NULL) - return NULL; - op->flags = flags; - __Pyx_CyFunction_weakreflist(op) = NULL; - op->func.m_ml = ml; - op->func.m_self = (PyObject *) op; - Py_XINCREF(closure); - op->func_closure = closure; - Py_XINCREF(module); - op->func.m_module = module; - op->func_dict = NULL; - op->func_name = NULL; - Py_INCREF(qualname); - op->func_qualname = qualname; - op->func_doc = NULL; - op->func_classobj = NULL; - op->func_globals = globals; - Py_INCREF(op->func_globals); - Py_XINCREF(code); - op->func_code = code; - op->defaults_pyobjects = 0; - op->defaults = NULL; - op->defaults_tuple = NULL; - op->defaults_kwdict = NULL; - op->defaults_getter = NULL; - op->func_annotations = NULL; - PyObject_GC_Track(op); - return (PyObject *) op; -} -static int -__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) -{ - Py_CLEAR(m->func_closure); - Py_CLEAR(m->func.m_module); - Py_CLEAR(m->func_dict); - Py_CLEAR(m->func_name); - Py_CLEAR(m->func_qualname); - Py_CLEAR(m->func_doc); - Py_CLEAR(m->func_globals); - Py_CLEAR(m->func_code); - Py_CLEAR(m->func_classobj); - Py_CLEAR(m->defaults_tuple); - Py_CLEAR(m->defaults_kwdict); - Py_CLEAR(m->func_annotations); - if (m->defaults) { - PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); - int i; - for (i = 0; i < m->defaults_pyobjects; i++) - Py_XDECREF(pydefaults[i]); - PyObject_Free(m->defaults); - m->defaults = NULL; - } - return 0; -} -static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) -{ - if (__Pyx_CyFunction_weakreflist(m) != NULL) - PyObject_ClearWeakRefs((PyObject *) m); - __Pyx_CyFunction_clear(m); - PyObject_GC_Del(m); -} -static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) -{ - PyObject_GC_UnTrack(m); - __Pyx__CyFunction_dealloc(m); -} -static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) -{ - Py_VISIT(m->func_closure); - Py_VISIT(m->func.m_module); - Py_VISIT(m->func_dict); - Py_VISIT(m->func_name); - Py_VISIT(m->func_qualname); - Py_VISIT(m->func_doc); - Py_VISIT(m->func_globals); - Py_VISIT(m->func_code); - Py_VISIT(m->func_classobj); - Py_VISIT(m->defaults_tuple); - Py_VISIT(m->defaults_kwdict); - if (m->defaults) { - PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); - int i; - for (i = 0; i < m->defaults_pyobjects; i++) - Py_VISIT(pydefaults[i]); - } - return 0; -} -static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type) -{ - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) { - Py_INCREF(func); - return func; - } - if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) { - if (type == NULL) - type = (PyObject *)(Py_TYPE(obj)); - return __Pyx_PyMethod_New(func, type, (PyObject *)(Py_TYPE(type))); - } - if (obj == Py_None) - obj = NULL; - return __Pyx_PyMethod_New(func, obj, type); -} -static PyObject* -__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) -{ -#if PY_MAJOR_VERSION >= 3 - return PyUnicode_FromFormat("<cyfunction %U at %p>", - op->func_qualname, (void *)op); -#else - return PyString_FromFormat("<cyfunction %s at %p>", - PyString_AsString(op->func_qualname), (void *)op); -#endif -} -static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { - PyCFunctionObject* f = (PyCFunctionObject*)func; - PyCFunction meth = f->m_ml->ml_meth; - Py_ssize_t size; - switch (f->m_ml->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { - case METH_VARARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) - return (*meth)(self, arg); - break; - case METH_VARARGS | METH_KEYWORDS: - return (*(PyCFunctionWithKeywords)meth)(self, arg, kw); - case METH_NOARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { - size = PyTuple_GET_SIZE(arg); - if (likely(size == 0)) - return (*meth)(self, NULL); - PyErr_Format(PyExc_TypeError, - "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", - f->m_ml->ml_name, size); - return NULL; - } - break; - case METH_O: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { - size = PyTuple_GET_SIZE(arg); - if (likely(size == 1)) { - PyObject *result, *arg0; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - arg0 = PyTuple_GET_ITEM(arg, 0); - #else - arg0 = PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; - #endif - result = (*meth)(self, arg0); - #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) - Py_DECREF(arg0); - #endif - return result; - } - PyErr_Format(PyExc_TypeError, - "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", - f->m_ml->ml_name, size); - return NULL; - } - break; - default: - PyErr_SetString(PyExc_SystemError, "Bad call flags in " - "__Pyx_CyFunction_Call. METH_OLDARGS is no " - "longer supported!"); - return NULL; - } - PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", - f->m_ml->ml_name); - return NULL; -} -static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { - return __Pyx_CyFunction_CallMethod(func, ((PyCFunctionObject*)func)->m_self, arg, kw); -} -static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { - PyObject *result; - __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; - if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { - Py_ssize_t argc; - PyObject *new_args; - PyObject *self; - argc = PyTuple_GET_SIZE(args); - new_args = PyTuple_GetSlice(args, 1, argc); - if (unlikely(!new_args)) - return NULL; - self = PyTuple_GetItem(args, 0); - if (unlikely(!self)) { - Py_DECREF(new_args); - return NULL; - } - result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); - Py_DECREF(new_args); - } else { - result = __Pyx_CyFunction_Call(func, args, kw); - } - return result; -} -static PyTypeObject __pyx_CyFunctionType_type = { - PyVarObject_HEAD_INIT(0, 0) - "cython_function_or_method", - sizeof(__pyx_CyFunctionObject), - 0, - (destructor) __Pyx_CyFunction_dealloc, - 0, - 0, - 0, -#if PY_MAJOR_VERSION < 3 - 0, -#else - 0, -#endif - (reprfunc) __Pyx_CyFunction_repr, - 0, - 0, - 0, - 0, - __Pyx_CyFunction_CallAsMethod, - 0, - 0, - 0, - 0, - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, - 0, - (traverseproc) __Pyx_CyFunction_traverse, - (inquiry) __Pyx_CyFunction_clear, - 0, -#if PY_VERSION_HEX < 0x030500A0 - offsetof(__pyx_CyFunctionObject, func_weakreflist), -#else - offsetof(PyCFunctionObject, m_weakreflist), -#endif - 0, - 0, - __pyx_CyFunction_methods, - __pyx_CyFunction_members, - __pyx_CyFunction_getsets, - 0, - 0, - __Pyx_CyFunction_descr_get, - 0, - offsetof(__pyx_CyFunctionObject, func_dict), - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, -#if PY_VERSION_HEX >= 0x030400a1 - 0, -#endif -}; -static int __pyx_CyFunction_init(void) { - __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); - if (unlikely(__pyx_CyFunctionType == NULL)) { - return -1; - } - return 0; -} -static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults = PyObject_Malloc(size); - if (unlikely(!m->defaults)) - return PyErr_NoMemory(); - memset(m->defaults, 0, size); - m->defaults_pyobjects = pyobjects; - return m->defaults; -} -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults_tuple = tuple; - Py_INCREF(tuple); -} -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults_kwdict = dict; - Py_INCREF(dict); -} -static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->func_annotations = dict; - Py_INCREF(dict); -} - -/* GetModuleGlobalName */ - static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { - PyObject *result; -#if !CYTHON_AVOID_BORROWED_REFS -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 - result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); - if (likely(result)) { - Py_INCREF(result); - } else if (unlikely(PyErr_Occurred())) { - result = NULL; - } else { -#else - result = PyDict_GetItem(__pyx_d, name); - if (likely(result)) { - Py_INCREF(result); - } else { -#endif -#else - result = PyObject_GetItem(__pyx_d, name); - if (!result) { - PyErr_Clear(); -#endif - result = __Pyx_GetBuiltinName(name); - } - return result; -} - -/* GetAttr */ - static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) { -#if CYTHON_USE_TYPE_SLOTS -#if PY_MAJOR_VERSION >= 3 - if (likely(PyUnicode_Check(n))) -#else - if (likely(PyString_Check(n))) -#endif - return __Pyx_PyObject_GetAttrStr(o, n); -#endif - return PyObject_GetAttr(o, n); -} - -/* Globals */ - static PyObject* __Pyx_Globals(void) { - Py_ssize_t i; - PyObject *names; - PyObject *globals = __pyx_d; - Py_INCREF(globals); - names = PyObject_Dir(__pyx_m); - if (!names) - goto bad; - for (i = PyList_GET_SIZE(names)-1; i >= 0; i--) { -#if CYTHON_COMPILING_IN_PYPY - PyObject* name = PySequence_ITEM(names, i); - if (!name) - goto bad; -#else - PyObject* name = PyList_GET_ITEM(names, i); -#endif - if (!PyDict_Contains(globals, name)) { - PyObject* value = __Pyx_GetAttr(__pyx_m, name); - if (!value) { -#if CYTHON_COMPILING_IN_PYPY - Py_DECREF(name); -#endif - goto bad; - } - if (PyDict_SetItem(globals, name, value) < 0) { -#if CYTHON_COMPILING_IN_PYPY - Py_DECREF(name); -#endif - Py_DECREF(value); - goto bad; - } - } -#if CYTHON_COMPILING_IN_PYPY - Py_DECREF(name); -#endif - } - Py_DECREF(names); - return globals; -bad: - Py_XDECREF(names); - Py_XDECREF(globals); - return NULL; -} - -/* CLineInTraceback */ - #ifndef CYTHON_CLINE_IN_TRACEBACK -static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) { - PyObject *use_cline; - PyObject *ptype, *pvalue, *ptraceback; -#if CYTHON_COMPILING_IN_CPYTHON - PyObject **cython_runtime_dict; -#endif - if (unlikely(!__pyx_cython_runtime)) { - return c_line; - } - __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); -#if CYTHON_COMPILING_IN_CPYTHON - cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); - if (likely(cython_runtime_dict)) { - use_cline = __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback); - } else -#endif - { - PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); - if (use_cline_obj) { - use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; - Py_DECREF(use_cline_obj); - } else { - PyErr_Clear(); - use_cline = NULL; - } - } - if (!use_cline) { - c_line = 0; - PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); - } - else if (PyObject_Not(use_cline) != 0) { - c_line = 0; - } - __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); - return c_line; -} -#endif - -/* CodeObjectCache */ - static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { - int start = 0, mid = 0, end = count - 1; - if (end >= 0 && code_line > entries[end].code_line) { - return count; - } - while (start < end) { - mid = start + (end - start) / 2; - if (code_line < entries[mid].code_line) { - end = mid; - } else if (code_line > entries[mid].code_line) { - start = mid + 1; - } else { - return mid; - } - } - if (code_line <= entries[mid].code_line) { - return mid; - } else { - return mid + 1; - } -} -static PyCodeObject *__pyx_find_code_object(int code_line) { - PyCodeObject* code_object; - int pos; - if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { - return NULL; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { - return NULL; - } - code_object = __pyx_code_cache.entries[pos].code_object; - Py_INCREF(code_object); - return code_object; -} -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { - int pos, i; - __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; - if (unlikely(!code_line)) { - return; - } - if (unlikely(!entries)) { - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); - if (likely(entries)) { - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = 64; - __pyx_code_cache.count = 1; - entries[0].code_line = code_line; - entries[0].code_object = code_object; - Py_INCREF(code_object); - } - return; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { - PyCodeObject* tmp = entries[pos].code_object; - entries[pos].code_object = code_object; - Py_DECREF(tmp); - return; - } - if (__pyx_code_cache.count == __pyx_code_cache.max_count) { - int new_max = __pyx_code_cache.max_count + 64; - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( - __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry)); - if (unlikely(!entries)) { - return; - } - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = new_max; - } - for (i=__pyx_code_cache.count; i>pos; i--) { - entries[i] = entries[i-1]; - } - entries[pos].code_line = code_line; - entries[pos].code_object = code_object; - __pyx_code_cache.count++; - Py_INCREF(code_object); -} - -/* AddTraceback */ - #include "compile.h" -#include "frameobject.h" -#include "traceback.h" -static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( - const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyObject *py_srcfile = 0; - PyObject *py_funcname = 0; - #if PY_MAJOR_VERSION < 3 - py_srcfile = PyString_FromString(filename); - #else - py_srcfile = PyUnicode_FromString(filename); - #endif - if (!py_srcfile) goto bad; - if (c_line) { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #else - py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #endif - } - else { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromString(funcname); - #else - py_funcname = PyUnicode_FromString(funcname); - #endif - } - if (!py_funcname) goto bad; - py_code = __Pyx_PyCode_New( - 0, - 0, - 0, - 0, - 0, - __pyx_empty_bytes, /*PyObject *code,*/ - __pyx_empty_tuple, /*PyObject *consts,*/ - __pyx_empty_tuple, /*PyObject *names,*/ - __pyx_empty_tuple, /*PyObject *varnames,*/ - __pyx_empty_tuple, /*PyObject *freevars,*/ - __pyx_empty_tuple, /*PyObject *cellvars,*/ - py_srcfile, /*PyObject *filename,*/ - py_funcname, /*PyObject *name,*/ - py_line, - __pyx_empty_bytes /*PyObject *lnotab*/ - ); - Py_DECREF(py_srcfile); - Py_DECREF(py_funcname); - return py_code; -bad: - Py_XDECREF(py_srcfile); - Py_XDECREF(py_funcname); - return NULL; -} -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyFrameObject *py_frame = 0; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - if (c_line) { - c_line = __Pyx_CLineForTraceback(tstate, c_line); - } - py_code = __pyx_find_code_object(c_line ? -c_line : py_line); - if (!py_code) { - py_code = __Pyx_CreateCodeObjectForTraceback( - funcname, c_line, py_line, filename); - if (!py_code) goto bad; - __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); - } - py_frame = PyFrame_New( - tstate, /*PyThreadState *tstate,*/ - py_code, /*PyCodeObject *code,*/ - __pyx_d, /*PyObject *globals,*/ - 0 /*PyObject *locals*/ - ); - if (!py_frame) goto bad; - __Pyx_PyFrame_SetLineNumber(py_frame, py_line); - PyTraceBack_Here(py_frame); -bad: - Py_XDECREF(py_code); - Py_XDECREF(py_frame); -} - -/* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { - const long neg_one = (long) -1, const_zero = (long) 0; - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(long) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(long) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -#endif - } - } else { - if (sizeof(long) <= sizeof(long)) { - return PyInt_FromLong((long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); -#endif - } - } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; - return _PyLong_FromByteArray(bytes, sizeof(long), - little, !is_unsigned); - } -} - -/* CIntFromPyVerify */ - #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) -#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) -#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ - {\ - func_type value = func_value;\ - if (sizeof(target_type) < sizeof(func_type)) {\ - if (unlikely(value != (func_type) (target_type) value)) {\ - func_type zero = 0;\ - if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ - return (target_type) -1;\ - if (is_unsigned && unlikely(value < zero))\ - goto raise_neg_overflow;\ - else\ - goto raise_overflow;\ - }\ - }\ - return (target_type) value;\ - } - -/* CIntFromPy */ - static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { - const long neg_one = (long) -1, const_zero = (long) 0; - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(long) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (long) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { - return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { - return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { - return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (long) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(long) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) - case -2: - if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - } -#endif - if (sizeof(long) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - long val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (long) -1; - } - } else { - long val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (long) -1; - val = __Pyx_PyInt_As_long(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to long"); - return (long) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to long"); - return (long) -1; -} - -/* CIntFromPy */ - static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { - const int neg_one = (int) -1, const_zero = (int) 0; - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(int) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (int) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (int) 0; - case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { - return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { - return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { - return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (int) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(int) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (int) 0; - case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) - case -2: - if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - } -#endif - if (sizeof(int) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - int val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (int) -1; - } - } else { - int val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (int) -1; - val = __Pyx_PyInt_As_int(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to int"); - return (int) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to int"); - return (int) -1; -} - -/* FastTypeChecks */ - #if CYTHON_COMPILING_IN_CPYTHON -static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { - while (a) { - a = a->tp_base; - if (a == b) - return 1; - } - return b == &PyBaseObject_Type; -} -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { - PyObject *mro; - if (a == b) return 1; - mro = a->tp_mro; - if (likely(mro)) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(mro); - for (i = 0; i < n; i++) { - if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) - return 1; - } - return 0; - } - return __Pyx_InBases(a, b); -} -#if PY_MAJOR_VERSION == 2 -static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { - PyObject *exception, *value, *tb; - int res; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&exception, &value, &tb); - res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - if (!res) { - res = PyObject_IsSubclass(err, exc_type2); - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - } - __Pyx_ErrRestore(exception, value, tb); - return res; -} -#else -static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { - int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0; - if (!res) { - res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); - } - return res; -} -#endif -static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - assert(PyExceptionClass_Check(exc_type)); - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; i<n; i++) { - if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1; - } -#endif - for (i=0; i<n; i++) { - PyObject *t = PyTuple_GET_ITEM(tuple, i); - #if PY_MAJOR_VERSION < 3 - if (likely(exc_type == t)) return 1; - #endif - if (likely(PyExceptionClass_Check(t))) { - if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1; - } else { - } - } - return 0; -} -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) { - if (likely(err == exc_type)) return 1; - if (likely(PyExceptionClass_Check(err))) { - if (likely(PyExceptionClass_Check(exc_type))) { - return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type); - } else if (likely(PyTuple_Check(exc_type))) { - return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type); - } else { - } - } - return PyErr_GivenExceptionMatches(err, exc_type); -} -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) { - assert(PyExceptionClass_Check(exc_type1)); - assert(PyExceptionClass_Check(exc_type2)); - if (likely(err == exc_type1 || err == exc_type2)) return 1; - if (likely(PyExceptionClass_Check(err))) { - return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2); - } - return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2)); -} -#endif - -/* CheckBinaryVersion */ - static int __Pyx_check_binary_version(void) { - char ctversion[4], rtversion[4]; - PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); - PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); - if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) { - char message[200]; - PyOS_snprintf(message, sizeof(message), - "compiletime version %s of module '%.100s' " - "does not match runtime version %s", - ctversion, __Pyx_MODULE_NAME, rtversion); - return PyErr_WarnEx(NULL, message, 1); - } - return 0; -} - -/* PyObjectSetAttrStr */ - #if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_setattro)) - return tp->tp_setattro(obj, attr_name, value); -#if PY_MAJOR_VERSION < 3 - if (likely(tp->tp_setattr)) - return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value); -#endif - return PyObject_SetAttr(obj, attr_name, value); -} -#endif - -/* VoidPtrExport */ - static int __Pyx_ExportVoidPtr(PyObject *name, void *p, const char *sig) { - PyObject *d; - PyObject *cobj = 0; - d = PyDict_GetItem(__pyx_d, __pyx_n_s_pyx_capi); - Py_XINCREF(d); - if (!d) { - d = PyDict_New(); - if (!d) - goto bad; - if (__Pyx_PyObject_SetAttrStr(__pyx_m, __pyx_n_s_pyx_capi, d) < 0) - goto bad; - } -#if PY_VERSION_HEX >= 0x02070000 - cobj = PyCapsule_New(p, sig, 0); -#else - cobj = PyCObject_FromVoidPtrAndDesc(p, (void *)sig, 0); -#endif - if (!cobj) - goto bad; - if (PyDict_SetItem(d, name, cobj) < 0) - goto bad; - Py_DECREF(cobj); - Py_DECREF(d); - return 0; -bad: - Py_XDECREF(cobj); - Py_XDECREF(d); - return -1; -} - -/* ModuleImport */ - #ifndef __PYX_HAVE_RT_ImportModule -#define __PYX_HAVE_RT_ImportModule -static PyObject *__Pyx_ImportModule(const char *name) { - PyObject *py_name = 0; - PyObject *py_module = 0; - py_name = __Pyx_PyIdentifier_FromString(name); - if (!py_name) - goto bad; - py_module = PyImport_Import(py_name); - Py_DECREF(py_name); - return py_module; -bad: - Py_XDECREF(py_name); - return 0; -} -#endif - -/* TypeImport */ - #ifndef __PYX_HAVE_RT_ImportType -#define __PYX_HAVE_RT_ImportType -static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, - size_t size, int strict) -{ - PyObject *py_module = 0; - PyObject *result = 0; - PyObject *py_name = 0; - char warning[200]; - Py_ssize_t basicsize; -#ifdef Py_LIMITED_API - PyObject *py_basicsize; -#endif - py_module = __Pyx_ImportModule(module_name); - if (!py_module) - goto bad; - py_name = __Pyx_PyIdentifier_FromString(class_name); - if (!py_name) - goto bad; - result = PyObject_GetAttr(py_module, py_name); - Py_DECREF(py_name); - py_name = 0; - Py_DECREF(py_module); - py_module = 0; - if (!result) - goto bad; - if (!PyType_Check(result)) { - PyErr_Format(PyExc_TypeError, - "%.200s.%.200s is not a type object", - module_name, class_name); - goto bad; - } -#ifndef Py_LIMITED_API - basicsize = ((PyTypeObject *)result)->tp_basicsize; -#else - py_basicsize = PyObject_GetAttrString(result, "__basicsize__"); - if (!py_basicsize) - goto bad; - basicsize = PyLong_AsSsize_t(py_basicsize); - Py_DECREF(py_basicsize); - py_basicsize = 0; - if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred()) - goto bad; -#endif - if (!strict && (size_t)basicsize > size) { - PyOS_snprintf(warning, sizeof(warning), - "%s.%s size changed, may indicate binary incompatibility. Expected %zd, got %zd", - module_name, class_name, basicsize, size); - if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad; - } - else if ((size_t)basicsize != size) { - PyErr_Format(PyExc_ValueError, - "%.200s.%.200s has the wrong size, try recompiling. Expected %zd, got %zd", - module_name, class_name, basicsize, size); - goto bad; - } - return (PyTypeObject *)result; -bad: - Py_XDECREF(py_module); - Py_XDECREF(result); - return NULL; -} -#endif - -/* InitStrings */ - static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { - while (t->p) { - #if PY_MAJOR_VERSION < 3 - if (t->is_unicode) { - *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); - } else if (t->intern) { - *t->p = PyString_InternFromString(t->s); - } else { - *t->p = PyString_FromStringAndSize(t->s, t->n - 1); - } - #else - if (t->is_unicode | t->is_str) { - if (t->intern) { - *t->p = PyUnicode_InternFromString(t->s); - } else if (t->encoding) { - *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL); - } else { - *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1); - } - } else { - *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1); - } - #endif - if (!*t->p) - return -1; - if (PyObject_Hash(*t->p) == -1) - return -1; - ++t; - } - return 0; -} - -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { - return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); -} -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { - Py_ssize_t ignore; - return __Pyx_PyObject_AsStringAndSize(o, &ignore); -} -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -#if !CYTHON_PEP393_ENABLED -static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - char* defenc_c; - PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); - if (!defenc) return NULL; - defenc_c = PyBytes_AS_STRING(defenc); -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - { - char* end = defenc_c + PyBytes_GET_SIZE(defenc); - char* c; - for (c = defenc_c; c < end; c++) { - if ((unsigned char) (*c) >= 128) { - PyUnicode_AsASCIIString(o); - return NULL; - } - } - } -#endif - *length = PyBytes_GET_SIZE(defenc); - return defenc_c; -} -#else -static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - if (likely(PyUnicode_IS_ASCII(o))) { - *length = PyUnicode_GET_LENGTH(o); - return PyUnicode_AsUTF8(o); - } else { - PyUnicode_AsASCIIString(o); - return NULL; - } -#else - return PyUnicode_AsUTF8AndSize(o, length); -#endif -} -#endif -#endif -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT - if ( -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - __Pyx_sys_getdefaultencoding_not_ascii && -#endif - PyUnicode_Check(o)) { - return __Pyx_PyUnicode_AsStringAndSize(o, length); - } else -#endif -#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) - if (PyByteArray_Check(o)) { - *length = PyByteArray_GET_SIZE(o); - return PyByteArray_AS_STRING(o); - } else -#endif - { - char* result; - int r = PyBytes_AsStringAndSize(o, &result, length); - if (unlikely(r < 0)) { - return NULL; - } else { - return result; - } - } -} -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { - int is_true = x == Py_True; - if (is_true | (x == Py_False) | (x == Py_None)) return is_true; - else return PyObject_IsTrue(x); -} -static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { -#if PY_MAJOR_VERSION >= 3 - if (PyLong_Check(result)) { - if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, - "__int__ returned non-int (type %.200s). " - "The ability to return an instance of a strict subclass of int " - "is deprecated, and may be removed in a future version of Python.", - Py_TYPE(result)->tp_name)) { - Py_DECREF(result); - return NULL; - } - return result; - } -#endif - PyErr_Format(PyExc_TypeError, - "__%.4s__ returned non-%.4s (type %.200s)", - type_name, type_name, Py_TYPE(result)->tp_name); - Py_DECREF(result); - return NULL; -} -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { -#if CYTHON_USE_TYPE_SLOTS - PyNumberMethods *m; -#endif - const char *name = NULL; - PyObject *res = NULL; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x) || PyLong_Check(x))) -#else - if (likely(PyLong_Check(x))) -#endif - return __Pyx_NewRef(x); -#if CYTHON_USE_TYPE_SLOTS - m = Py_TYPE(x)->tp_as_number; - #if PY_MAJOR_VERSION < 3 - if (m && m->nb_int) { - name = "int"; - res = m->nb_int(x); - } - else if (m && m->nb_long) { - name = "long"; - res = m->nb_long(x); - } - #else - if (likely(m && m->nb_int)) { - name = "int"; - res = m->nb_int(x); - } - #endif -#else - if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { - res = PyNumber_Int(x); - } -#endif - if (likely(res)) { -#if PY_MAJOR_VERSION < 3 - if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { -#else - if (unlikely(!PyLong_CheckExact(res))) { -#endif - return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); - } - } - else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_TypeError, - "an integer is required"); - } - return res; -} -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { - Py_ssize_t ival; - PyObject *x; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(b))) { - if (sizeof(Py_ssize_t) >= sizeof(long)) - return PyInt_AS_LONG(b); - else - return PyInt_AsSsize_t(x); - } -#endif - if (likely(PyLong_CheckExact(b))) { - #if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)b)->ob_digit; - const Py_ssize_t size = Py_SIZE(b); - if (likely(__Pyx_sst_abs(size) <= 1)) { - ival = likely(size) ? digits[0] : 0; - if (size == -1) ival = -ival; - return ival; - } else { - switch (size) { - case 2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - } - } - #endif - return PyLong_AsSsize_t(b); - } - x = PyNumber_Index(b); - if (!x) return -1; - ival = PyInt_AsSsize_t(x); - Py_DECREF(x); - return ival; -} -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { - return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); -} -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { - return PyInt_FromSize_t(ival); -} - - -#endif /* Py_PYTHON_H */ diff --git a/python/gevent/_ident.py b/python/gevent/_ident.py deleted file mode 100644 index 56a28df..0000000 --- a/python/gevent/_ident.py +++ /dev/null @@ -1,84 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2018 gevent contributors. See LICENSE for details. -# cython: auto_pickle=False,embedsignature=True,always_allow_keywords=False - -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function - - -from weakref import WeakKeyDictionary -from weakref import ref - -from heapq import heappop -from heapq import heappush - -__all__ = [ - 'IdentRegistry', -] - -class ValuedWeakRef(ref): - """ - A weak ref with an associated value. - """ - # This seems entirely spurious; even on Python 2.7 - # weakref.ref descends from object - # pylint: disable=slots-on-old-class - __slots__ = ('value',) - - -class IdentRegistry(object): - """ - Maintains a unique mapping of (small) positive integer identifiers - to objects that can be weakly referenced. - - It is guaranteed that no two objects will have the the same - identifier at the same time, as long as those objects are - also uniquely hashable. - """ - - def __init__(self): - # {obj -> (ident, wref(obj))} - self._registry = WeakKeyDictionary() - - # A heap of numbers that have been used and returned - self._available_idents = [] - - def get_ident(self, obj): - """ - Retrieve the identifier for *obj*, creating one - if necessary. - """ - - try: - return self._registry[obj][0] - except KeyError: - pass - - if self._available_idents: - # Take the smallest free number - ident = heappop(self._available_idents) - else: - # Allocate a bigger one - ident = len(self._registry) - - vref = ValuedWeakRef(obj, self._return_ident) - vref.value = ident # pylint:disable=assigning-non-slot,attribute-defined-outside-init - self._registry[obj] = (ident, vref) - return ident - - def _return_ident(self, vref): - # By the time this is called, self._registry has been - # updated - if heappush is not None: - # Under some circumstances we can get called - # when the interpreter is shutting down, and globals - # aren't available any more. - heappush(self._available_idents, vref.value) - - def __len__(self): - return len(self._registry) - - -from gevent._util import import_c_accel -import_c_accel(globals(), 'gevent.__ident') diff --git a/python/gevent/_imap.c b/python/gevent/_imap.c deleted file mode 100644 index b3639d1..0000000 --- a/python/gevent/_imap.c +++ /dev/null @@ -1,10490 +0,0 @@ -/* Generated by Cython 0.28.5 */ - -/* BEGIN: Cython Metadata -{ - "distutils": { - "depends": [ - "src/gevent/__imap.pxd", - "src\\gevent\\__imap.pxd" - ], - "include_dirs": [ - "C:\\Python36\\Include", - "deps" - ], - "name": "gevent.__imap", - "sources": [ - "src/gevent/_imap.py" - ] - }, - "module_name": "gevent.__imap" -} -END: Cython Metadata */ - -#define PY_SSIZE_T_CLEAN -#include "Python.h" -#ifndef Py_PYTHON_H - #error Python headers needed to compile C extensions, please install development version of Python. -#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) - #error Cython requires Python 2.6+ or Python 3.3+. -#else -#define CYTHON_ABI "0_28_5" -#define CYTHON_FUTURE_DIVISION 1 -#include <stddef.h> -#ifndef offsetof - #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) -#endif -#if !defined(WIN32) && !defined(MS_WINDOWS) - #ifndef __stdcall - #define __stdcall - #endif - #ifndef __cdecl - #define __cdecl - #endif - #ifndef __fastcall - #define __fastcall - #endif -#endif -#ifndef DL_IMPORT - #define DL_IMPORT(t) t -#endif -#ifndef DL_EXPORT - #define DL_EXPORT(t) t -#endif -#define __PYX_COMMA , -#ifndef HAVE_LONG_LONG - #if PY_VERSION_HEX >= 0x02070000 - #define HAVE_LONG_LONG - #endif -#endif -#ifndef PY_LONG_LONG - #define PY_LONG_LONG LONG_LONG -#endif -#ifndef Py_HUGE_VAL - #define Py_HUGE_VAL HUGE_VAL -#endif -#ifdef PYPY_VERSION - #define CYTHON_COMPILING_IN_PYPY 1 - #define CYTHON_COMPILING_IN_PYSTON 0 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #undef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 0 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #if PY_VERSION_HEX < 0x03050000 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #undef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #undef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 1 - #undef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 0 - #undef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 0 - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 -#elif defined(PYSTON_VERSION) - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_PYSTON 1 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 -#else - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_PYSTON 0 - #define CYTHON_COMPILING_IN_CPYTHON 1 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #if PY_VERSION_HEX < 0x02070000 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #elif !defined(CYTHON_USE_PYTYPE_LOOKUP) - #define CYTHON_USE_PYTYPE_LOOKUP 1 - #endif - #if PY_MAJOR_VERSION < 3 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #if PY_VERSION_HEX < 0x02070000 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #elif !defined(CYTHON_USE_PYLONG_INTERNALS) - #define CYTHON_USE_PYLONG_INTERNALS 1 - #endif - #ifndef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 1 - #endif - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #if PY_VERSION_HEX < 0x030300F0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #elif !defined(CYTHON_USE_UNICODE_WRITER) - #define CYTHON_USE_UNICODE_WRITER 1 - #endif - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #ifndef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 1 - #endif - #ifndef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 1 - #endif - #ifndef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT (0 && PY_VERSION_HEX >= 0x03050000) - #endif - #ifndef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1) - #endif -#endif -#if !defined(CYTHON_FAST_PYCCALL) -#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) -#endif -#if CYTHON_USE_PYLONG_INTERNALS - #include "longintrepr.h" - #undef SHIFT - #undef BASE - #undef MASK -#endif -#ifndef __has_attribute - #define __has_attribute(x) 0 -#endif -#ifndef __has_cpp_attribute - #define __has_cpp_attribute(x) 0 -#endif -#ifndef CYTHON_RESTRICT - #if defined(__GNUC__) - #define CYTHON_RESTRICT __restrict__ - #elif defined(_MSC_VER) && _MSC_VER >= 1400 - #define CYTHON_RESTRICT __restrict - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_RESTRICT restrict - #else - #define CYTHON_RESTRICT - #endif -#endif -#ifndef CYTHON_UNUSED -# if defined(__GNUC__) -# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -#endif -#ifndef CYTHON_MAYBE_UNUSED_VAR -# if defined(__cplusplus) - template<class T> void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } -# else -# define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) -# endif -#endif -#ifndef CYTHON_NCP_UNUSED -# if CYTHON_COMPILING_IN_CPYTHON -# define CYTHON_NCP_UNUSED -# else -# define CYTHON_NCP_UNUSED CYTHON_UNUSED -# endif -#endif -#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) -#ifdef _MSC_VER - #ifndef _MSC_STDINT_H_ - #if _MSC_VER < 1300 - typedef unsigned char uint8_t; - typedef unsigned int uint32_t; - #else - typedef unsigned __int8 uint8_t; - typedef unsigned __int32 uint32_t; - #endif - #endif -#else - #include <stdint.h> -#endif -#ifndef CYTHON_FALLTHROUGH - #if defined(__cplusplus) && __cplusplus >= 201103L - #if __has_cpp_attribute(fallthrough) - #define CYTHON_FALLTHROUGH [[fallthrough]] - #elif __has_cpp_attribute(clang::fallthrough) - #define CYTHON_FALLTHROUGH [[clang::fallthrough]] - #elif __has_cpp_attribute(gnu::fallthrough) - #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] - #endif - #endif - #ifndef CYTHON_FALLTHROUGH - #if __has_attribute(fallthrough) - #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) - #else - #define CYTHON_FALLTHROUGH - #endif - #endif - #if defined(__clang__ ) && defined(__apple_build_version__) - #if __apple_build_version__ < 7000000 - #undef CYTHON_FALLTHROUGH - #define CYTHON_FALLTHROUGH - #endif - #endif -#endif - -#ifndef CYTHON_INLINE - #if defined(__clang__) - #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) - #elif defined(__GNUC__) - #define CYTHON_INLINE __inline__ - #elif defined(_MSC_VER) - #define CYTHON_INLINE __inline - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_INLINE inline - #else - #define CYTHON_INLINE - #endif -#endif - -#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) - #define Py_OptimizeFlag 0 -#endif -#define __PYX_BUILD_PY_SSIZE_T "n" -#define CYTHON_FORMAT_SSIZE_T "z" -#if PY_MAJOR_VERSION < 3 - #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) - #define __Pyx_DefaultClassType PyClass_Type -#else - #define __Pyx_BUILTIN_MODULE_NAME "builtins" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) - #define __Pyx_DefaultClassType PyType_Type -#endif -#ifndef Py_TPFLAGS_CHECKTYPES - #define Py_TPFLAGS_CHECKTYPES 0 -#endif -#ifndef Py_TPFLAGS_HAVE_INDEX - #define Py_TPFLAGS_HAVE_INDEX 0 -#endif -#ifndef Py_TPFLAGS_HAVE_NEWBUFFER - #define Py_TPFLAGS_HAVE_NEWBUFFER 0 -#endif -#ifndef Py_TPFLAGS_HAVE_FINALIZE - #define Py_TPFLAGS_HAVE_FINALIZE 0 -#endif -#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) - #ifndef METH_FASTCALL - #define METH_FASTCALL 0x80 - #endif - typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); - typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, - Py_ssize_t nargs, PyObject *kwnames); -#else - #define __Pyx_PyCFunctionFast _PyCFunctionFast - #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords -#endif -#if CYTHON_FAST_PYCCALL -#define __Pyx_PyFastCFunction_Check(func)\ - ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))))) -#else -#define __Pyx_PyFastCFunction_Check(func) 0 -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) - #define PyObject_Malloc(s) PyMem_Malloc(s) - #define PyObject_Free(p) PyMem_Free(p) - #define PyObject_Realloc(p) PyMem_Realloc(p) -#endif -#if CYTHON_COMPILING_IN_PYSTON - #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) -#else - #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) -#endif -#if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000 - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#elif PY_VERSION_HEX >= 0x03060000 - #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() -#elif PY_VERSION_HEX >= 0x03000000 - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#else - #define __Pyx_PyThreadState_Current _PyThreadState_Current -#endif -#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) -#include "pythread.h" -#define Py_tss_NEEDS_INIT 0 -typedef int Py_tss_t; -static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { - *key = PyThread_create_key(); - return 0; // PyThread_create_key reports success always -} -static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { - Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); - *key = Py_tss_NEEDS_INIT; - return key; -} -static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { - PyObject_Free(key); -} -static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { - return *key != Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { - PyThread_delete_key(*key); - *key = Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { - return PyThread_set_key_value(*key, value); -} -static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { - return PyThread_get_key_value(*key); -} -#endif // TSS (Thread Specific Storage) API -#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) -#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) -#else -#define __Pyx_PyDict_NewPresized(n) PyDict_New() -#endif -#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION - #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) -#else - #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) -#endif -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS -#define __Pyx_PyDict_GetItemStr(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) -#else -#define __Pyx_PyDict_GetItemStr(dict, name) PyDict_GetItem(dict, name) -#endif -#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) - #define CYTHON_PEP393_ENABLED 1 - #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ - 0 : _PyUnicode_Ready((PyObject *)(op))) - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) - #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) - #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) - #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) -#else - #define CYTHON_PEP393_ENABLED 0 - #define PyUnicode_1BYTE_KIND 1 - #define PyUnicode_2BYTE_KIND 2 - #define PyUnicode_4BYTE_KIND 4 - #define __Pyx_PyUnicode_READY(op) (0) - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) - #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) - #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) - #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) -#endif -#if CYTHON_COMPILING_IN_PYPY - #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) -#else - #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ - PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) - #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) - #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) - #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) -#endif -#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) -#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) -#else - #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) -#endif -#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) - #define PyObject_ASCII(o) PyObject_Repr(o) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBaseString_Type PyUnicode_Type - #define PyStringObject PyUnicodeObject - #define PyString_Type PyUnicode_Type - #define PyString_Check PyUnicode_Check - #define PyString_CheckExact PyUnicode_CheckExact - #define PyObject_Unicode PyObject_Str -#endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) - #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) -#else - #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) - #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) -#endif -#ifndef PySet_CheckExact - #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) -#endif -#if CYTHON_ASSUME_SAFE_MACROS - #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) -#else - #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyIntObject PyLongObject - #define PyInt_Type PyLong_Type - #define PyInt_Check(op) PyLong_Check(op) - #define PyInt_CheckExact(op) PyLong_CheckExact(op) - #define PyInt_FromString PyLong_FromString - #define PyInt_FromUnicode PyLong_FromUnicode - #define PyInt_FromLong PyLong_FromLong - #define PyInt_FromSize_t PyLong_FromSize_t - #define PyInt_FromSsize_t PyLong_FromSsize_t - #define PyInt_AsLong PyLong_AsLong - #define PyInt_AS_LONG PyLong_AS_LONG - #define PyInt_AsSsize_t PyLong_AsSsize_t - #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask - #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask - #define PyNumber_Int PyNumber_Long -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBoolObject PyLongObject -#endif -#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY - #ifndef PyUnicode_InternFromString - #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) - #endif -#endif -#if PY_VERSION_HEX < 0x030200A4 - typedef long Py_hash_t; - #define __Pyx_PyInt_FromHash_t PyInt_FromLong - #define __Pyx_PyInt_AsHash_t PyInt_AsLong -#else - #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t - #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t -#endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : (Py_INCREF(func), func)) -#else - #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) -#endif -#if CYTHON_USE_ASYNC_SLOTS - #if PY_VERSION_HEX >= 0x030500B1 - #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods - #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) - #else - #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) - #endif -#else - #define __Pyx_PyType_AsAsync(obj) NULL -#endif -#ifndef __Pyx_PyAsyncMethodsStruct - typedef struct { - unaryfunc am_await; - unaryfunc am_aiter; - unaryfunc am_anext; - } __Pyx_PyAsyncMethodsStruct; -#endif - -#if defined(WIN32) || defined(MS_WINDOWS) - #define _USE_MATH_DEFINES -#endif -#include <math.h> -#ifdef NAN -#define __PYX_NAN() ((float) NAN) -#else -static CYTHON_INLINE float __PYX_NAN() { - float value; - memset(&value, 0xFF, sizeof(value)); - return value; -} -#endif -#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) -#define __Pyx_truncl trunc -#else -#define __Pyx_truncl truncl -#endif - - -#define __PYX_ERR(f_index, lineno, Ln_error) \ -{ \ - __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \ -} - -#ifndef __PYX_EXTERN_C - #ifdef __cplusplus - #define __PYX_EXTERN_C extern "C" - #else - #define __PYX_EXTERN_C extern - #endif -#endif - -#define __PYX_HAVE__gevent____imap -#define __PYX_HAVE_API__gevent____imap -/* Early includes */ -#include "greenlet/greenlet.h" -#include "frameobject.h" -#ifdef _OPENMP -#include <omp.h> -#endif /* _OPENMP */ - -#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) -#define CYTHON_WITHOUT_ASSERTIONS -#endif - -typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; - const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; - -#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 -#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0 -#define __PYX_DEFAULT_STRING_ENCODING "" -#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString -#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#define __Pyx_uchar_cast(c) ((unsigned char)c) -#define __Pyx_long_cast(x) ((long)x) -#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ - (sizeof(type) < sizeof(Py_ssize_t)) ||\ - (sizeof(type) > sizeof(Py_ssize_t) &&\ - likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX) &&\ - (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ - v == (type)PY_SSIZE_T_MIN))) ||\ - (sizeof(type) == sizeof(Py_ssize_t) &&\ - (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX))) ) -#if defined (__cplusplus) && __cplusplus >= 201103L - #include <cstdlib> - #define __Pyx_sst_abs(value) std::abs(value) -#elif SIZEOF_INT >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) abs(value) -#elif SIZEOF_LONG >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) labs(value) -#elif defined (_MSC_VER) - #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) -#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define __Pyx_sst_abs(value) llabs(value) -#elif defined (__GNUC__) - #define __Pyx_sst_abs(value) __builtin_llabs(value) -#else - #define __Pyx_sst_abs(value) ((value<0) ? -value : value) -#endif -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); -#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) -#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) -#define __Pyx_PyBytes_FromString PyBytes_FromString -#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); -#if PY_MAJOR_VERSION < 3 - #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#else - #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize -#endif -#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) -#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) -#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) -#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) -#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) -static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { - const Py_UNICODE *u_end = u; - while (*u_end++) ; - return (size_t)(u_end - u - 1); -} -#define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) -#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode -#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode -#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) -#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); -#define __Pyx_PySequence_Tuple(obj)\ - (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); -#if CYTHON_ASSUME_SAFE_MACROS -#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) -#else -#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) -#endif -#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) -#if PY_MAJOR_VERSION >= 3 -#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) -#else -#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) -#endif -#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x)) -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII -static int __Pyx_sys_getdefaultencoding_not_ascii; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - PyObject* ascii_chars_u = NULL; - PyObject* ascii_chars_b = NULL; - const char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - if (strcmp(default_encoding_c, "ascii") == 0) { - __Pyx_sys_getdefaultencoding_not_ascii = 0; - } else { - char ascii_chars[128]; - int c; - for (c = 0; c < 128; c++) { - ascii_chars[c] = c; - } - __Pyx_sys_getdefaultencoding_not_ascii = 1; - ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); - if (!ascii_chars_u) goto bad; - ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); - if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { - PyErr_Format( - PyExc_ValueError, - "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", - default_encoding_c); - goto bad; - } - Py_DECREF(ascii_chars_u); - Py_DECREF(ascii_chars_b); - } - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - Py_XDECREF(ascii_chars_u); - Py_XDECREF(ascii_chars_b); - return -1; -} -#endif -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) -#else -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -static char* __PYX_DEFAULT_STRING_ENCODING; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c)); - if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; - strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - return -1; -} -#endif -#endif - - -/* Test for GCC > 2.95 */ -#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) - #define likely(x) __builtin_expect(!!(x), 1) - #define unlikely(x) __builtin_expect(!!(x), 0) -#else /* !__GNUC__ or GCC < 2.95 */ - #define likely(x) (x) - #define unlikely(x) (x) -#endif /* __GNUC__ */ -static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } - -static PyObject *__pyx_m = NULL; -static PyObject *__pyx_d; -static PyObject *__pyx_b; -static PyObject *__pyx_cython_runtime = NULL; -static PyObject *__pyx_empty_tuple; -static PyObject *__pyx_empty_bytes; -static PyObject *__pyx_empty_unicode; -static int __pyx_lineno; -static int __pyx_clineno = 0; -static const char * __pyx_cfilenm= __FILE__; -static const char *__pyx_filename; - - -static const char *__pyx_f[] = { - "src\\gevent\\_imap.py", - "src\\gevent\\__imap.pxd", - "src\\gevent\\__greenlet_primitives.pxd", - "src\\gevent\\__waiter.pxd", - "src\\gevent\\_greenlet.pxd", - "src\\gevent\\__semaphore.pxd", - "src\\gevent\\_event.pxd", - "src\\gevent\\__ident.pxd", - "src\\gevent\\_queue.pxd", -}; - -/*--- Type declarations ---*/ -struct __pyx_obj_6gevent_7__ident_ValuedWeakRef; -struct __pyx_obj_6gevent_7__ident_IdentRegistry; -struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet; -struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop; -struct __pyx_obj_6gevent_8__waiter_Waiter; -struct __pyx_obj_6gevent_8__waiter_MultipleWaiter; -struct __pyx_obj_6gevent_9_greenlet_SpawnedLink; -struct __pyx_obj_6gevent_9_greenlet_SuccessSpawnedLink; -struct __pyx_obj_6gevent_9_greenlet_FailureSpawnedLink; -struct __pyx_obj_6gevent_9_greenlet__Frame; -struct __pyx_obj_6gevent_9_greenlet_Greenlet; -struct __pyx_obj_6gevent_9_greenlet__dummy_event; -struct __pyx_obj_6gevent_11__semaphore_Semaphore; -struct __pyx_obj_6gevent_11__semaphore_BoundedSemaphore; -struct __pyx_obj_6gevent_6_event__AbstractLinkable; -struct __pyx_obj_6gevent_6_event_Event; -struct __pyx_obj_6gevent_6_event_AsyncResult; -struct __pyx_obj_6gevent_6_queue_ItemWaiter; -struct __pyx_obj_6gevent_6_queue_Queue; -struct __pyx_obj_6gevent_6_queue_UnboundQueue; -struct __pyx_obj_6gevent_6_queue_PriorityQueue; -struct __pyx_obj_6gevent_6_queue_LifoQueue; -struct __pyx_obj_6gevent_6_queue_JoinableQueue; -struct __pyx_obj_6gevent_6_queue_Channel; -struct __pyx_obj_6gevent_6__imap_Failure; -struct __pyx_obj_6gevent_6__imap_IMapUnordered; -struct __pyx_obj_6gevent_6__imap_IMap; -struct __pyx_opt_args_6gevent_9_greenlet_8Greenlet_join; -struct __pyx_opt_args_6gevent_9_greenlet_joinall; - -/* "gevent/_greenlet.pxd":105 - * - * cpdef bint has_links(self) - * cpdef join(self, timeout=*) # <<<<<<<<<<<<<< - * cpdef bint ready(self) - * cpdef bint successful(self) - */ -struct __pyx_opt_args_6gevent_9_greenlet_8Greenlet_join { - int __pyx_n; - PyObject *timeout; -}; - -/* "gevent/_greenlet.pxd":174 - * - * @cython.locals(done=list) - * cpdef joinall(greenlets, timeout=*, raise_error=*, count=*) # <<<<<<<<<<<<<< - */ -struct __pyx_opt_args_6gevent_9_greenlet_joinall { - int __pyx_n; - PyObject *timeout; - PyObject *raise_error; - PyObject *count; -}; -struct __pyx_opt_args_6gevent_11__semaphore_9Semaphore_wait; -struct __pyx_opt_args_6gevent_11__semaphore_9Semaphore_acquire; - -/* "gevent/__semaphore.pxd":46 - * cpdef _notify_links(self) - * cdef _do_wait(self, object timeout) - * cpdef int wait(self, object timeout=*) except -1000 # <<<<<<<<<<<<<< - * cpdef bint acquire(self, int blocking=*, object timeout=*) except -1000 - * cpdef __enter__(self) - */ -struct __pyx_opt_args_6gevent_11__semaphore_9Semaphore_wait { - int __pyx_n; - PyObject *timeout; -}; - -/* "gevent/__semaphore.pxd":47 - * cdef _do_wait(self, object timeout) - * cpdef int wait(self, object timeout=*) except -1000 - * cpdef bint acquire(self, int blocking=*, object timeout=*) except -1000 # <<<<<<<<<<<<<< - * cpdef __enter__(self) - * cpdef __exit__(self, object t, object v, object tb) - */ -struct __pyx_opt_args_6gevent_11__semaphore_9Semaphore_acquire { - int __pyx_n; - int blocking; - PyObject *timeout; -}; -struct __pyx_opt_args_6gevent_6_event_17_AbstractLinkable__wait_core; -struct __pyx_opt_args_6gevent_6_event_17_AbstractLinkable__wait; -struct __pyx_opt_args_6gevent_6_event_11AsyncResult_get; -struct __pyx_opt_args_6gevent_6_event_11AsyncResult_wait; - -/* "gevent/_event.pxd":55 - * @cython.locals(todo=set) - * cpdef _notify_links(self) - * cdef _wait_core(self, timeout, catch=*) # <<<<<<<<<<<<<< - * cdef _wait_return_value(self, waited, wait_success) - * cdef _wait(self, timeout=*) - */ -struct __pyx_opt_args_6gevent_6_event_17_AbstractLinkable__wait_core { - int __pyx_n; - PyObject *catch; -}; - -/* "gevent/_event.pxd":57 - * cdef _wait_core(self, timeout, catch=*) - * cdef _wait_return_value(self, waited, wait_success) - * cdef _wait(self, timeout=*) # <<<<<<<<<<<<<< - * - * - */ -struct __pyx_opt_args_6gevent_6_event_17_AbstractLinkable__wait { - int __pyx_n; - PyObject *timeout; -}; - -/* "gevent/_event.pxd":70 - * cdef public int _imap_task_index - * - * cpdef get(self, block=*, timeout=*) # <<<<<<<<<<<<<< - * cpdef bint successful(self) - * - */ -struct __pyx_opt_args_6gevent_6_event_11AsyncResult_get { - int __pyx_n; - PyObject *block; - PyObject *timeout; -}; - -/* "gevent/_event.pxd":73 - * cpdef bint successful(self) - * - * cpdef wait(self, timeout=*) # <<<<<<<<<<<<<< - * cpdef bint done(self) - * - */ -struct __pyx_opt_args_6gevent_6_event_11AsyncResult_wait { - int __pyx_n; - PyObject *timeout; -}; -struct __pyx_opt_args_6gevent_6_queue_5Queue_put; -struct __pyx_opt_args_6gevent_6_queue_5Queue_get; -struct __pyx_opt_args_6gevent_6_queue_5Queue_peek; -struct __pyx_opt_args_6gevent_6_queue_7Channel_get; - -/* "gevent/_queue.pxd":37 - * cpdef bint full(self) - * - * cpdef put(self, item, block=*, timeout=*) # <<<<<<<<<<<<<< - * cpdef put_nowait(self, item) - * - */ -struct __pyx_opt_args_6gevent_6_queue_5Queue_put { - int __pyx_n; - PyObject *block; - PyObject *timeout; -}; - -/* "gevent/_queue.pxd":42 - * cdef __get_or_peek(self, method, block, timeout) - * - * cpdef get(self, block=*, timeout=*) # <<<<<<<<<<<<<< - * cpdef get_nowait(self) - * cpdef peek(self, block=*, timeout=*) - */ -struct __pyx_opt_args_6gevent_6_queue_5Queue_get { - int __pyx_n; - PyObject *block; - PyObject *timeout; -}; - -/* "gevent/_queue.pxd":44 - * cpdef get(self, block=*, timeout=*) - * cpdef get_nowait(self) - * cpdef peek(self, block=*, timeout=*) # <<<<<<<<<<<<<< - * cpdef peek_nowait(self) - * - */ -struct __pyx_opt_args_6gevent_6_queue_5Queue_peek { - int __pyx_n; - PyObject *block; - PyObject *timeout; -}; - -/* "gevent/_queue.pxd":71 - * cdef _event_unlock - * - * cpdef get(self, block=*, timeout=*) # <<<<<<<<<<<<<< - * cpdef get_nowait(self) - * - */ -struct __pyx_opt_args_6gevent_6_queue_7Channel_get { - int __pyx_n; - PyObject *block; - PyObject *timeout; -}; - -/* "gevent/__ident.pxd":15 - * @cython.internal - * @cython.final - * cdef class ValuedWeakRef(ref): # <<<<<<<<<<<<<< - * cdef object value - * - */ -struct __pyx_obj_6gevent_7__ident_ValuedWeakRef { - PyWeakReference __pyx_base; - PyObject *value; -}; - - -/* "gevent/__ident.pxd":19 - * - * @cython.final - * cdef class IdentRegistry: # <<<<<<<<<<<<<< - * cdef object _registry - * cdef list _available_idents - */ -struct __pyx_obj_6gevent_7__ident_IdentRegistry { - PyObject_HEAD - struct __pyx_vtabstruct_6gevent_7__ident_IdentRegistry *__pyx_vtab; - PyObject *_registry; - PyObject *_available_idents; -}; - - -/* "gevent/__greenlet_primitives.pxd":37 - * return PyGreenlet_Switch(self, NULL, NULL) - * - * cdef class TrackedRawGreenlet(greenlet): # <<<<<<<<<<<<<< - * pass - * - */ -struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet { - PyGreenlet __pyx_base; -}; - - -/* "gevent/__greenlet_primitives.pxd":40 - * pass - * - * cdef class SwitchOutGreenletWithLoop(TrackedRawGreenlet): # <<<<<<<<<<<<<< - * cdef public loop - * - */ -struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop { - struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet __pyx_base; - struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_vtab; - PyObject *loop; -}; - - -/* "gevent/__waiter.pxd":33 - * _greenlet_imported = True - * - * cdef class Waiter: # <<<<<<<<<<<<<< - * cdef readonly SwitchOutGreenletWithLoop hub - * cdef readonly greenlet greenlet - */ -struct __pyx_obj_6gevent_8__waiter_Waiter { - PyObject_HEAD - struct __pyx_vtabstruct_6gevent_8__waiter_Waiter *__pyx_vtab; - struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *hub; - PyGreenlet *greenlet; - PyObject *value; - PyObject *_exception; -}; - - -/* "gevent/__waiter.pxd":47 - * @cython.final - * @cython.internal - * cdef class MultipleWaiter(Waiter): # <<<<<<<<<<<<<< - * cdef list _values - */ -struct __pyx_obj_6gevent_8__waiter_MultipleWaiter { - struct __pyx_obj_6gevent_8__waiter_Waiter __pyx_base; - PyObject *_values; -}; - - -/* "gevent/_greenlet.pxd":56 - * cdef void _init() - * - * cdef class SpawnedLink: # <<<<<<<<<<<<<< - * cdef public object callback - * - */ -struct __pyx_obj_6gevent_9_greenlet_SpawnedLink { - PyObject_HEAD - PyObject *callback; -}; - - -/* "gevent/_greenlet.pxd":61 - * - * @cython.final - * cdef class SuccessSpawnedLink(SpawnedLink): # <<<<<<<<<<<<<< - * pass - * - */ -struct __pyx_obj_6gevent_9_greenlet_SuccessSpawnedLink { - struct __pyx_obj_6gevent_9_greenlet_SpawnedLink __pyx_base; -}; - - -/* "gevent/_greenlet.pxd":65 - * - * @cython.final - * cdef class FailureSpawnedLink(SpawnedLink): # <<<<<<<<<<<<<< - * pass - * - */ -struct __pyx_obj_6gevent_9_greenlet_FailureSpawnedLink { - struct __pyx_obj_6gevent_9_greenlet_SpawnedLink __pyx_base; -}; - - -/* "gevent/_greenlet.pxd":71 - * @cython.internal - * @cython.freelist(1000) - * cdef class _Frame: # <<<<<<<<<<<<<< - * cdef readonly CodeType f_code - * cdef readonly int f_lineno - */ -struct __pyx_obj_6gevent_9_greenlet__Frame { - PyObject_HEAD - PyCodeObject *f_code; - int f_lineno; - struct __pyx_obj_6gevent_9_greenlet__Frame *f_back; -}; - - -/* "gevent/_greenlet.pxd":86 - * - * - * cdef class Greenlet(greenlet): # <<<<<<<<<<<<<< - * cdef readonly object value - * cdef readonly tuple args - */ -struct __pyx_obj_6gevent_9_greenlet_Greenlet { - PyGreenlet __pyx_base; - struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet *__pyx_vtab; - PyObject *value; - PyObject *args; - PyObject *kwargs; - PyObject *spawning_greenlet; - PyObject *spawn_tree_locals; - PyObject *_spawning_stack_frames; - PyObject *_links; - PyObject *_exc_info; - PyObject *_notifier; - PyObject *_start_event; - PyObject *_formatted_info; - PyObject *_ident; -}; - - -/* "gevent/_greenlet.pxd":157 - * @cython.final - * @cython.internal - * cdef class _dummy_event: # <<<<<<<<<<<<<< - * cdef readonly bint pending - * cdef readonly bint active - */ -struct __pyx_obj_6gevent_9_greenlet__dummy_event { - PyObject_HEAD - struct __pyx_vtabstruct_6gevent_9_greenlet__dummy_event *__pyx_vtab; - int pending; - int active; -}; - - -/* "gevent/__semaphore.pxd":32 - * - * - * cdef class Semaphore: # <<<<<<<<<<<<<< - * cdef public int counter - * cdef readonly list _links - */ -struct __pyx_obj_6gevent_11__semaphore_Semaphore { - PyObject_HEAD - struct __pyx_vtabstruct_6gevent_11__semaphore_Semaphore *__pyx_vtab; - int counter; - PyObject *_links; - PyObject *_notifier; - int _dirty; - PyObject *__weakref__; -}; - - -/* "gevent/__semaphore.pxd":51 - * cpdef __exit__(self, object t, object v, object tb) - * - * cdef class BoundedSemaphore(Semaphore): # <<<<<<<<<<<<<< - * cdef readonly int _initial_value - * - */ -struct __pyx_obj_6gevent_11__semaphore_BoundedSemaphore { - struct __pyx_obj_6gevent_11__semaphore_Semaphore __pyx_base; - int _initial_value; -}; - - -/* "gevent/_event.pxd":38 - * cdef void _init() - * - * cdef class _AbstractLinkable: # <<<<<<<<<<<<<< - * # We declare the __weakref__ here in the base (even though - * # that's not really what we want) as a workaround for a Cython - */ -struct __pyx_obj_6gevent_6_event__AbstractLinkable { - PyObject_HEAD - struct __pyx_vtabstruct_6gevent_6_event__AbstractLinkable *__pyx_vtab; - PyObject *__weakref__; - PyObject *_notifier; - PyObject *_links; - struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *hub; -}; - - -/* "gevent/_event.pxd":60 - * - * - * cdef class Event(_AbstractLinkable): # <<<<<<<<<<<<<< - * cdef bint _flag - * - */ -struct __pyx_obj_6gevent_6_event_Event { - struct __pyx_obj_6gevent_6_event__AbstractLinkable __pyx_base; - int _flag; -}; - - -/* "gevent/_event.pxd":63 - * cdef bint _flag - * - * cdef class AsyncResult(_AbstractLinkable): # <<<<<<<<<<<<<< - * cdef readonly _value - * cdef readonly tuple _exc_info - */ -struct __pyx_obj_6gevent_6_event_AsyncResult { - struct __pyx_obj_6gevent_6_event__AbstractLinkable __pyx_base; - PyObject *_value; - PyObject *_exc_info; - int _imap_task_index; -}; - - -/* "gevent/_queue.pxd":14 - * @cython.final - * @cython.internal - * cdef class ItemWaiter(Waiter): # <<<<<<<<<<<<<< - * cdef readonly item - * cdef readonly queue - */ -struct __pyx_obj_6gevent_6_queue_ItemWaiter { - struct __pyx_obj_6gevent_8__waiter_Waiter __pyx_base; - PyObject *item; - PyObject *queue; -}; - - -/* "gevent/_queue.pxd":18 - * cdef readonly queue - * - * cdef class Queue: # <<<<<<<<<<<<<< - * cdef __weakref__ - * cdef readonly hub - */ -struct __pyx_obj_6gevent_6_queue_Queue { - PyObject_HEAD - struct __pyx_vtabstruct_6gevent_6_queue_Queue *__pyx_vtab; - PyObject *__weakref__; - PyObject *hub; - PyObject *queue; - PyObject *getters; - PyObject *putters; - PyObject *_event_unlock; - Py_ssize_t _maxsize; -}; - - -/* "gevent/_queue.pxd":50 - * - * @cython.final - * cdef class UnboundQueue(Queue): # <<<<<<<<<<<<<< - * pass - * - */ -struct __pyx_obj_6gevent_6_queue_UnboundQueue { - struct __pyx_obj_6gevent_6_queue_Queue __pyx_base; -}; - - -/* "gevent/_queue.pxd":53 - * pass - * - * cdef class PriorityQueue(Queue): # <<<<<<<<<<<<<< - * pass - * - */ -struct __pyx_obj_6gevent_6_queue_PriorityQueue { - struct __pyx_obj_6gevent_6_queue_Queue __pyx_base; -}; - - -/* "gevent/_queue.pxd":56 - * pass - * - * cdef class LifoQueue(Queue): # <<<<<<<<<<<<<< - * pass - * - */ -struct __pyx_obj_6gevent_6_queue_LifoQueue { - struct __pyx_obj_6gevent_6_queue_Queue __pyx_base; -}; - - -/* "gevent/_queue.pxd":59 - * pass - * - * cdef class JoinableQueue(Queue): # <<<<<<<<<<<<<< - * cdef Event _cond - * cdef readonly int unfinished_tasks - */ -struct __pyx_obj_6gevent_6_queue_JoinableQueue { - struct __pyx_obj_6gevent_6_queue_Queue __pyx_base; - struct __pyx_obj_6gevent_6_event_Event *_cond; - int unfinished_tasks; -}; - - -/* "gevent/_queue.pxd":64 - * - * - * cdef class Channel: # <<<<<<<<<<<<<< - * cdef __weakref__ - * cdef readonly getters - */ -struct __pyx_obj_6gevent_6_queue_Channel { - PyObject_HEAD - struct __pyx_vtabstruct_6gevent_6_queue_Channel *__pyx_vtab; - PyObject *__weakref__; - PyObject *getters; - PyObject *putters; - PyObject *hub; - PyObject *_event_unlock; -}; - - -/* "gevent/__imap.pxd":9 - * @cython.internal - * @cython.final - * cdef class Failure: # <<<<<<<<<<<<<< - * cdef readonly exc - * cdef raise_exception - */ -struct __pyx_obj_6gevent_6__imap_Failure { - PyObject_HEAD - PyObject *exc; - PyObject *raise_exception; -}; - - -/* "gevent/__imap.pxd":15 - * cdef inline _raise_exc(Failure failure) - * - * cdef class IMapUnordered(Greenlet): # <<<<<<<<<<<<<< - * cdef bint _zipped - * cdef func - */ -struct __pyx_obj_6gevent_6__imap_IMapUnordered { - struct __pyx_obj_6gevent_9_greenlet_Greenlet __pyx_base; - int _zipped; - PyObject *func; - PyObject *iterable; - PyObject *spawn; - struct __pyx_obj_6gevent_11__semaphore_Semaphore *_result_semaphore; - int _outstanding_tasks; - int _max_index; - struct __pyx_obj_6gevent_6_queue_UnboundQueue *queue; - int finished; -}; - - -/* "gevent/__imap.pxd":40 - * cdef _iqueue_value_for_self_failure(self, exception) - * - * cdef class IMap(IMapUnordered): # <<<<<<<<<<<<<< - * cdef int index - * cdef dict _results - */ -struct __pyx_obj_6gevent_6__imap_IMap { - struct __pyx_obj_6gevent_6__imap_IMapUnordered __pyx_base; - int index; - PyObject *_results; -}; - - - -/* "gevent/__ident.pxd":19 - * - * @cython.final - * cdef class IdentRegistry: # <<<<<<<<<<<<<< - * cdef object _registry - * cdef list _available_idents - */ - -struct __pyx_vtabstruct_6gevent_7__ident_IdentRegistry { - PyObject *(*get_ident)(struct __pyx_obj_6gevent_7__ident_IdentRegistry *, PyObject *, int __pyx_skip_dispatch); - PyObject *(*_return_ident)(struct __pyx_obj_6gevent_7__ident_IdentRegistry *, struct __pyx_obj_6gevent_7__ident_ValuedWeakRef *, int __pyx_skip_dispatch); -}; -static struct __pyx_vtabstruct_6gevent_7__ident_IdentRegistry *__pyx_vtabptr_6gevent_7__ident_IdentRegistry; - - -/* "gevent/__greenlet_primitives.pxd":40 - * pass - * - * cdef class SwitchOutGreenletWithLoop(TrackedRawGreenlet): # <<<<<<<<<<<<<< - * cdef public loop - * - */ - -struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop { - PyObject *(*__pyx_switch)(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *, int __pyx_skip_dispatch); - PyObject *(*switch_out)(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *, int __pyx_skip_dispatch); -}; -static struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_vtabptr_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop; - - -/* "gevent/__waiter.pxd":33 - * _greenlet_imported = True - * - * cdef class Waiter: # <<<<<<<<<<<<<< - * cdef readonly SwitchOutGreenletWithLoop hub - * cdef readonly greenlet greenlet - */ - -struct __pyx_vtabstruct_6gevent_8__waiter_Waiter { - PyObject *(*get)(struct __pyx_obj_6gevent_8__waiter_Waiter *, int __pyx_skip_dispatch); - PyObject *(*clear)(struct __pyx_obj_6gevent_8__waiter_Waiter *, int __pyx_skip_dispatch); -}; -static struct __pyx_vtabstruct_6gevent_8__waiter_Waiter *__pyx_vtabptr_6gevent_8__waiter_Waiter; - - -/* "gevent/__waiter.pxd":47 - * @cython.final - * @cython.internal - * cdef class MultipleWaiter(Waiter): # <<<<<<<<<<<<<< - * cdef list _values - */ - -struct __pyx_vtabstruct_6gevent_8__waiter_MultipleWaiter { - struct __pyx_vtabstruct_6gevent_8__waiter_Waiter __pyx_base; -}; -static struct __pyx_vtabstruct_6gevent_8__waiter_MultipleWaiter *__pyx_vtabptr_6gevent_8__waiter_MultipleWaiter; - - -/* "gevent/_greenlet.pxd":86 - * - * - * cdef class Greenlet(greenlet): # <<<<<<<<<<<<<< - * cdef readonly object value - * cdef readonly tuple args - */ - -struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet { - int (*has_links)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, int __pyx_skip_dispatch); - PyObject *(*join)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_9_greenlet_8Greenlet_join *__pyx_optional_args); - int (*ready)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, int __pyx_skip_dispatch); - int (*successful)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, int __pyx_skip_dispatch); - PyObject *(*rawlink)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, PyObject *, int __pyx_skip_dispatch); - PyObject *(*_formatinfo)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, int __pyx_skip_dispatch); - PyObject *(*_get_minimal_ident)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *); - int (*__pyx___started_but_aborted)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *); - int (*__pyx___start_cancelled_by_kill)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *); - int (*__pyx___start_pending)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *); - int (*__pyx___never_started_or_killed)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *); - int (*__pyx___start_completed)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *); - PyObject *(*__pyx___handle_death_before_start)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, PyObject *); - PyObject *(*__pyx___cancel_start)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *); - PyObject *(*_report_result)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, PyObject *); - PyObject *(*_report_error)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, PyObject *); - PyObject *(*_notify_links)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, int __pyx_skip_dispatch); -}; -static struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet *__pyx_vtabptr_6gevent_9_greenlet_Greenlet; - - -/* "gevent/_greenlet.pxd":157 - * @cython.final - * @cython.internal - * cdef class _dummy_event: # <<<<<<<<<<<<<< - * cdef readonly bint pending - * cdef readonly bint active - */ - -struct __pyx_vtabstruct_6gevent_9_greenlet__dummy_event { - PyObject *(*stop)(struct __pyx_obj_6gevent_9_greenlet__dummy_event *, int __pyx_skip_dispatch); - PyObject *(*start)(struct __pyx_obj_6gevent_9_greenlet__dummy_event *, PyObject *, int __pyx_skip_dispatch); - PyObject *(*close)(struct __pyx_obj_6gevent_9_greenlet__dummy_event *, int __pyx_skip_dispatch); -}; -static struct __pyx_vtabstruct_6gevent_9_greenlet__dummy_event *__pyx_vtabptr_6gevent_9_greenlet__dummy_event; - - -/* "gevent/__semaphore.pxd":32 - * - * - * cdef class Semaphore: # <<<<<<<<<<<<<< - * cdef public int counter - * cdef readonly list _links - */ - -struct __pyx_vtabstruct_6gevent_11__semaphore_Semaphore { - int (*locked)(struct __pyx_obj_6gevent_11__semaphore_Semaphore *, int __pyx_skip_dispatch); - int (*release)(struct __pyx_obj_6gevent_11__semaphore_Semaphore *, int __pyx_skip_dispatch); - PyObject *(*rawlink)(struct __pyx_obj_6gevent_11__semaphore_Semaphore *, PyObject *, int __pyx_skip_dispatch); - PyObject *(*unlink)(struct __pyx_obj_6gevent_11__semaphore_Semaphore *, PyObject *, int __pyx_skip_dispatch); - PyObject *(*_start_notify)(struct __pyx_obj_6gevent_11__semaphore_Semaphore *, int __pyx_skip_dispatch); - PyObject *(*_notify_links)(struct __pyx_obj_6gevent_11__semaphore_Semaphore *, int __pyx_skip_dispatch); - PyObject *(*_do_wait)(struct __pyx_obj_6gevent_11__semaphore_Semaphore *, PyObject *); - int (*wait)(struct __pyx_obj_6gevent_11__semaphore_Semaphore *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_11__semaphore_9Semaphore_wait *__pyx_optional_args); - int (*acquire)(struct __pyx_obj_6gevent_11__semaphore_Semaphore *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_11__semaphore_9Semaphore_acquire *__pyx_optional_args); - PyObject *(*__pyx___enter__)(struct __pyx_obj_6gevent_11__semaphore_Semaphore *, int __pyx_skip_dispatch); - PyObject *(*__pyx___exit__)(struct __pyx_obj_6gevent_11__semaphore_Semaphore *, PyObject *, PyObject *, PyObject *, int __pyx_skip_dispatch); -}; -static struct __pyx_vtabstruct_6gevent_11__semaphore_Semaphore *__pyx_vtabptr_6gevent_11__semaphore_Semaphore; - - -/* "gevent/__semaphore.pxd":51 - * cpdef __exit__(self, object t, object v, object tb) - * - * cdef class BoundedSemaphore(Semaphore): # <<<<<<<<<<<<<< - * cdef readonly int _initial_value - * - */ - -struct __pyx_vtabstruct_6gevent_11__semaphore_BoundedSemaphore { - struct __pyx_vtabstruct_6gevent_11__semaphore_Semaphore __pyx_base; -}; -static struct __pyx_vtabstruct_6gevent_11__semaphore_BoundedSemaphore *__pyx_vtabptr_6gevent_11__semaphore_BoundedSemaphore; - - -/* "gevent/_event.pxd":38 - * cdef void _init() - * - * cdef class _AbstractLinkable: # <<<<<<<<<<<<<< - * # We declare the __weakref__ here in the base (even though - * # that's not really what we want) as a workaround for a Cython - */ - -struct __pyx_vtabstruct_6gevent_6_event__AbstractLinkable { - PyObject *(*rawlink)(struct __pyx_obj_6gevent_6_event__AbstractLinkable *, PyObject *, int __pyx_skip_dispatch); - int (*ready)(struct __pyx_obj_6gevent_6_event__AbstractLinkable *, int __pyx_skip_dispatch); - PyObject *(*unlink)(struct __pyx_obj_6gevent_6_event__AbstractLinkable *, PyObject *, int __pyx_skip_dispatch); - PyObject *(*_check_and_notify)(struct __pyx_obj_6gevent_6_event__AbstractLinkable *); - PyObject *(*_notify_links)(struct __pyx_obj_6gevent_6_event__AbstractLinkable *, int __pyx_skip_dispatch); - PyObject *(*_wait_core)(struct __pyx_obj_6gevent_6_event__AbstractLinkable *, PyObject *, struct __pyx_opt_args_6gevent_6_event_17_AbstractLinkable__wait_core *__pyx_optional_args); - PyObject *(*_wait_return_value)(struct __pyx_obj_6gevent_6_event__AbstractLinkable *, PyObject *, PyObject *); - PyObject *(*_wait)(struct __pyx_obj_6gevent_6_event__AbstractLinkable *, struct __pyx_opt_args_6gevent_6_event_17_AbstractLinkable__wait *__pyx_optional_args); -}; -static struct __pyx_vtabstruct_6gevent_6_event__AbstractLinkable *__pyx_vtabptr_6gevent_6_event__AbstractLinkable; - - -/* "gevent/_event.pxd":60 - * - * - * cdef class Event(_AbstractLinkable): # <<<<<<<<<<<<<< - * cdef bint _flag - * - */ - -struct __pyx_vtabstruct_6gevent_6_event_Event { - struct __pyx_vtabstruct_6gevent_6_event__AbstractLinkable __pyx_base; -}; -static struct __pyx_vtabstruct_6gevent_6_event_Event *__pyx_vtabptr_6gevent_6_event_Event; - - -/* "gevent/_event.pxd":63 - * cdef bint _flag - * - * cdef class AsyncResult(_AbstractLinkable): # <<<<<<<<<<<<<< - * cdef readonly _value - * cdef readonly tuple _exc_info - */ - -struct __pyx_vtabstruct_6gevent_6_event_AsyncResult { - struct __pyx_vtabstruct_6gevent_6_event__AbstractLinkable __pyx_base; - PyObject *(*get)(struct __pyx_obj_6gevent_6_event_AsyncResult *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_6_event_11AsyncResult_get *__pyx_optional_args); - int (*successful)(struct __pyx_obj_6gevent_6_event_AsyncResult *, int __pyx_skip_dispatch); - PyObject *(*wait)(struct __pyx_obj_6gevent_6_event_AsyncResult *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_6_event_11AsyncResult_wait *__pyx_optional_args); - int (*done)(struct __pyx_obj_6gevent_6_event_AsyncResult *, int __pyx_skip_dispatch); - int (*cancel)(struct __pyx_obj_6gevent_6_event_AsyncResult *, int __pyx_skip_dispatch); - int (*cancelled)(struct __pyx_obj_6gevent_6_event_AsyncResult *, int __pyx_skip_dispatch); -}; -static struct __pyx_vtabstruct_6gevent_6_event_AsyncResult *__pyx_vtabptr_6gevent_6_event_AsyncResult; - - -/* "gevent/_queue.pxd":14 - * @cython.final - * @cython.internal - * cdef class ItemWaiter(Waiter): # <<<<<<<<<<<<<< - * cdef readonly item - * cdef readonly queue - */ - -struct __pyx_vtabstruct_6gevent_6_queue_ItemWaiter { - struct __pyx_vtabstruct_6gevent_8__waiter_Waiter __pyx_base; -}; -static struct __pyx_vtabstruct_6gevent_6_queue_ItemWaiter *__pyx_vtabptr_6gevent_6_queue_ItemWaiter; - - -/* "gevent/_queue.pxd":18 - * cdef readonly queue - * - * cdef class Queue: # <<<<<<<<<<<<<< - * cdef __weakref__ - * cdef readonly hub - */ - -struct __pyx_vtabstruct_6gevent_6_queue_Queue { - PyObject *(*_get)(struct __pyx_obj_6gevent_6_queue_Queue *, int __pyx_skip_dispatch); - PyObject *(*_put)(struct __pyx_obj_6gevent_6_queue_Queue *, PyObject *, int __pyx_skip_dispatch); - PyObject *(*_peek)(struct __pyx_obj_6gevent_6_queue_Queue *, int __pyx_skip_dispatch); - Py_ssize_t (*qsize)(struct __pyx_obj_6gevent_6_queue_Queue *, int __pyx_skip_dispatch); - int (*empty)(struct __pyx_obj_6gevent_6_queue_Queue *, int __pyx_skip_dispatch); - int (*full)(struct __pyx_obj_6gevent_6_queue_Queue *, int __pyx_skip_dispatch); - PyObject *(*put)(struct __pyx_obj_6gevent_6_queue_Queue *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_6_queue_5Queue_put *__pyx_optional_args); - PyObject *(*put_nowait)(struct __pyx_obj_6gevent_6_queue_Queue *, PyObject *, int __pyx_skip_dispatch); - PyObject *(*__pyx___get_or_peek)(struct __pyx_obj_6gevent_6_queue_Queue *, PyObject *, PyObject *, PyObject *); - PyObject *(*get)(struct __pyx_obj_6gevent_6_queue_Queue *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_6_queue_5Queue_get *__pyx_optional_args); - PyObject *(*get_nowait)(struct __pyx_obj_6gevent_6_queue_Queue *, int __pyx_skip_dispatch); - PyObject *(*peek)(struct __pyx_obj_6gevent_6_queue_Queue *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_6_queue_5Queue_peek *__pyx_optional_args); - PyObject *(*peek_nowait)(struct __pyx_obj_6gevent_6_queue_Queue *, int __pyx_skip_dispatch); - PyObject *(*_schedule_unlock)(struct __pyx_obj_6gevent_6_queue_Queue *); -}; -static struct __pyx_vtabstruct_6gevent_6_queue_Queue *__pyx_vtabptr_6gevent_6_queue_Queue; - - -/* "gevent/_queue.pxd":50 - * - * @cython.final - * cdef class UnboundQueue(Queue): # <<<<<<<<<<<<<< - * pass - * - */ - -struct __pyx_vtabstruct_6gevent_6_queue_UnboundQueue { - struct __pyx_vtabstruct_6gevent_6_queue_Queue __pyx_base; -}; -static struct __pyx_vtabstruct_6gevent_6_queue_UnboundQueue *__pyx_vtabptr_6gevent_6_queue_UnboundQueue; - - -/* "gevent/_queue.pxd":53 - * pass - * - * cdef class PriorityQueue(Queue): # <<<<<<<<<<<<<< - * pass - * - */ - -struct __pyx_vtabstruct_6gevent_6_queue_PriorityQueue { - struct __pyx_vtabstruct_6gevent_6_queue_Queue __pyx_base; -}; -static struct __pyx_vtabstruct_6gevent_6_queue_PriorityQueue *__pyx_vtabptr_6gevent_6_queue_PriorityQueue; - - -/* "gevent/_queue.pxd":56 - * pass - * - * cdef class LifoQueue(Queue): # <<<<<<<<<<<<<< - * pass - * - */ - -struct __pyx_vtabstruct_6gevent_6_queue_LifoQueue { - struct __pyx_vtabstruct_6gevent_6_queue_Queue __pyx_base; -}; -static struct __pyx_vtabstruct_6gevent_6_queue_LifoQueue *__pyx_vtabptr_6gevent_6_queue_LifoQueue; - - -/* "gevent/_queue.pxd":59 - * pass - * - * cdef class JoinableQueue(Queue): # <<<<<<<<<<<<<< - * cdef Event _cond - * cdef readonly int unfinished_tasks - */ - -struct __pyx_vtabstruct_6gevent_6_queue_JoinableQueue { - struct __pyx_vtabstruct_6gevent_6_queue_Queue __pyx_base; -}; -static struct __pyx_vtabstruct_6gevent_6_queue_JoinableQueue *__pyx_vtabptr_6gevent_6_queue_JoinableQueue; - - -/* "gevent/_queue.pxd":64 - * - * - * cdef class Channel: # <<<<<<<<<<<<<< - * cdef __weakref__ - * cdef readonly getters - */ - -struct __pyx_vtabstruct_6gevent_6_queue_Channel { - PyObject *(*get)(struct __pyx_obj_6gevent_6_queue_Channel *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_6_queue_7Channel_get *__pyx_optional_args); - PyObject *(*get_nowait)(struct __pyx_obj_6gevent_6_queue_Channel *, int __pyx_skip_dispatch); - PyObject *(*_schedule_unlock)(struct __pyx_obj_6gevent_6_queue_Channel *); -}; -static struct __pyx_vtabstruct_6gevent_6_queue_Channel *__pyx_vtabptr_6gevent_6_queue_Channel; - - -/* "src/gevent/_imap.py":43 - * raise failure.exc - * - * class IMapUnordered(Greenlet): # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * """ - * At iterator of map results. - */ - -struct __pyx_vtabstruct_6gevent_6__imap_IMapUnordered { - struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet __pyx_base; - PyObject *(*_inext)(struct __pyx_obj_6gevent_6__imap_IMapUnordered *); - PyObject *(*_ispawn)(struct __pyx_obj_6gevent_6__imap_IMapUnordered *, PyObject *, PyObject *, int); - PyObject *(*_on_result)(struct __pyx_obj_6gevent_6__imap_IMapUnordered *, PyObject *, int __pyx_skip_dispatch); - PyObject *(*_on_finish)(struct __pyx_obj_6gevent_6__imap_IMapUnordered *, PyObject *); - PyObject *(*_iqueue_value_for_success)(struct __pyx_obj_6gevent_6__imap_IMapUnordered *, PyObject *); - PyObject *(*_iqueue_value_for_failure)(struct __pyx_obj_6gevent_6__imap_IMapUnordered *, PyObject *); - PyObject *(*_iqueue_value_for_self_finished)(struct __pyx_obj_6gevent_6__imap_IMapUnordered *); - PyObject *(*_iqueue_value_for_self_failure)(struct __pyx_obj_6gevent_6__imap_IMapUnordered *, PyObject *); -}; -static struct __pyx_vtabstruct_6gevent_6__imap_IMapUnordered *__pyx_vtabptr_6gevent_6__imap_IMapUnordered; - - -/* "src/gevent/_imap.py":187 - * - * - * class IMap(IMapUnordered): # <<<<<<<<<<<<<< - * # A specialization of IMapUnordered that returns items - * # in the order in which they were generated, not - */ - -struct __pyx_vtabstruct_6gevent_6__imap_IMap { - struct __pyx_vtabstruct_6gevent_6__imap_IMapUnordered __pyx_base; -}; -static struct __pyx_vtabstruct_6gevent_6__imap_IMap *__pyx_vtabptr_6gevent_6__imap_IMap; - -/* --- Runtime support code (head) --- */ -/* Refnanny.proto */ -#ifndef CYTHON_REFNANNY - #define CYTHON_REFNANNY 0 -#endif -#if CYTHON_REFNANNY - typedef struct { - void (*INCREF)(void*, PyObject*, int); - void (*DECREF)(void*, PyObject*, int); - void (*GOTREF)(void*, PyObject*, int); - void (*GIVEREF)(void*, PyObject*, int); - void* (*SetupContext)(const char*, int, const char*); - void (*FinishContext)(void**); - } __Pyx_RefNannyAPIStruct; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); - #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; -#ifdef WITH_THREAD - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - if (acquire_gil) {\ - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - PyGILState_Release(__pyx_gilstate_save);\ - } else {\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - } -#else - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) -#endif - #define __Pyx_RefNannyFinishContext()\ - __Pyx_RefNanny->FinishContext(&__pyx_refnanny) - #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) - #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) - #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) - #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0) -#else - #define __Pyx_RefNannyDeclarations - #define __Pyx_RefNannySetupContext(name, acquire_gil) - #define __Pyx_RefNannyFinishContext() - #define __Pyx_INCREF(r) Py_INCREF(r) - #define __Pyx_DECREF(r) Py_DECREF(r) - #define __Pyx_GOTREF(r) - #define __Pyx_GIVEREF(r) - #define __Pyx_XINCREF(r) Py_XINCREF(r) - #define __Pyx_XDECREF(r) Py_XDECREF(r) - #define __Pyx_XGOTREF(r) - #define __Pyx_XGIVEREF(r) -#endif -#define __Pyx_XDECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_XDECREF(tmp);\ - } while (0) -#define __Pyx_DECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_DECREF(tmp);\ - } while (0) -#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) -#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) - -/* PyObjectGetAttrStr.proto */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) -#endif - -/* GetBuiltinName.proto */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name); - -/* RaiseDoubleKeywords.proto */ -static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); - -/* ParseKeywords.proto */ -static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\ - PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\ - const char* function_name); - -/* RaiseArgTupleInvalid.proto */ -static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, - Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); - -/* PyCFunctionFastCall.proto */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); -#else -#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) -#endif - -/* PyFunctionFastCall.proto */ -#if CYTHON_FAST_PYCALL -#define __Pyx_PyFunction_FastCall(func, args, nargs)\ - __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs); -#else -#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) -#endif -#endif - -/* PyObjectCall.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); -#else -#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) -#endif - -/* PyObjectCallMethO.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); -#endif - -/* PyObjectCallOneArg.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); - -/* PyObjectCallNoArg.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); -#else -#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL) -#endif - -/* PyThreadStateGet.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; -#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; -#define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type -#else -#define __Pyx_PyThreadState_declare -#define __Pyx_PyThreadState_assign -#define __Pyx_PyErr_Occurred() PyErr_Occurred() -#endif - -/* PyErrFetchRestore.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) -#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) -#else -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#endif -#else -#define __Pyx_PyErr_Clear() PyErr_Clear() -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) -#endif - -/* RaiseException.proto */ -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); - -/* ExtTypeTest.proto */ -static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); - -/* PyObjectSetAttrStr.proto */ -#if CYTHON_USE_TYPE_SLOTS -#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o, n, NULL) -static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value); -#else -#define __Pyx_PyObject_DelAttrStr(o,n) PyObject_DelAttr(o,n) -#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v) -#endif - -/* SaveResetException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -#else -#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) -#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) -#endif - -/* PyErrExceptionMatches.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) -static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); -#else -#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) -#endif - -/* GetException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) -static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#else -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); -#endif - -/* SwapException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#else -static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); -#endif - -/* GetAttr.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *); - -/* KeywordStringCheck.proto */ -static int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); - -/* py_dict_pop.proto */ -static CYTHON_INLINE PyObject *__Pyx_PyDict_Pop(PyObject *d, PyObject *key, PyObject *default_value); - -/* UnpackUnboundCMethod.proto */ -typedef struct { - PyObject *type; - PyObject **method_name; - PyCFunction func; - PyObject *method; - int flag; -} __Pyx_CachedCFunction; - -/* CallUnboundCMethod2.proto */ -static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2); -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030600B1 -static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2); -#else -#define __Pyx_CallUnboundCMethod2(cfunc, self, arg1, arg2) __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2) -#endif - -/* CallUnboundCMethod1.proto */ -static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg); -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg); -#else -#define __Pyx_CallUnboundCMethod1(cfunc, self, arg) __Pyx__CallUnboundCMethod1(cfunc, self, arg) -#endif - -/* RaiseTooManyValuesToUnpack.proto */ -static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); - -/* RaiseNeedMoreValuesToUnpack.proto */ -static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); - -/* IterFinish.proto */ -static CYTHON_INLINE int __Pyx_IterFinish(void); - -/* UnpackItemEndCheck.proto */ -static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); - -/* None.proto */ -static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname); - -/* CallNextTpDealloc.proto */ -static void __Pyx_call_next_tp_dealloc(PyObject* obj, destructor current_tp_dealloc); - -/* CallNextTpTraverse.proto */ -static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse); - -/* CallNextTpClear.proto */ -static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_dealloc); - -/* PyObject_GenericGetAttrNoDict.proto */ -#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr -#endif - -/* GetVTable.proto */ -static void* __Pyx_GetVtable(PyObject *dict); - -/* PyObject_GenericGetAttr.proto */ -#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr -#endif - -/* SetVTable.proto */ -static int __Pyx_SetVtable(PyObject *dict, void *vtable); - -/* Import.proto */ -static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); - -/* ImportFrom.proto */ -static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); - -/* GetModuleGlobalName.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name); - -/* GetNameInClass.proto */ -static PyObject *__Pyx_GetNameInClass(PyObject *nmspace, PyObject *name); - -/* FetchCommonType.proto */ -static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); - -/* CythonFunction.proto */ -#define __Pyx_CyFunction_USED 1 -#define __Pyx_CYFUNCTION_STATICMETHOD 0x01 -#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 -#define __Pyx_CYFUNCTION_CCLASS 0x04 -#define __Pyx_CyFunction_GetClosure(f)\ - (((__pyx_CyFunctionObject *) (f))->func_closure) -#define __Pyx_CyFunction_GetClassObj(f)\ - (((__pyx_CyFunctionObject *) (f))->func_classobj) -#define __Pyx_CyFunction_Defaults(type, f)\ - ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) -#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ - ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) -typedef struct { - PyCFunctionObject func; -#if PY_VERSION_HEX < 0x030500A0 - PyObject *func_weakreflist; -#endif - PyObject *func_dict; - PyObject *func_name; - PyObject *func_qualname; - PyObject *func_doc; - PyObject *func_globals; - PyObject *func_code; - PyObject *func_closure; - PyObject *func_classobj; - void *defaults; - int defaults_pyobjects; - int flags; - PyObject *defaults_tuple; - PyObject *defaults_kwdict; - PyObject *(*defaults_getter)(PyObject *); - PyObject *func_annotations; -} __pyx_CyFunctionObject; -static PyTypeObject *__pyx_CyFunctionType = 0; -#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, globals, code)\ - __Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, globals, code) -static PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml, - int flags, PyObject* qualname, - PyObject *self, - PyObject *module, PyObject *globals, - PyObject* code); -static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, - size_t size, - int pyobjects); -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, - PyObject *tuple); -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, - PyObject *dict); -static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, - PyObject *dict); -static int __pyx_CyFunction_init(void); - -/* Globals.proto */ -static PyObject* __Pyx_Globals(void); - -/* CLineInTraceback.proto */ -#ifdef CYTHON_CLINE_IN_TRACEBACK -#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) -#else -static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); -#endif - -/* CodeObjectCache.proto */ -typedef struct { - PyCodeObject* code_object; - int code_line; -} __Pyx_CodeObjectCacheEntry; -struct __Pyx_CodeObjectCache { - int count; - int max_count; - __Pyx_CodeObjectCacheEntry* entries; -}; -static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; -static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); -static PyCodeObject *__pyx_find_code_object(int code_line); -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); - -/* AddTraceback.proto */ -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename); - -/* CIntToPy.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); - -/* CIntToPy.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); - -/* CIntFromPy.proto */ -static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); - -/* CIntFromPy.proto */ -static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); - -/* FastTypeChecks.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); -#else -#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) -#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) -#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) -#endif -#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) - -/* CheckBinaryVersion.proto */ -static int __Pyx_check_binary_version(void); - -/* FunctionExport.proto */ -static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig); - -/* PyIdentifierFromString.proto */ -#if !defined(__Pyx_PyIdentifier_FromString) -#if PY_MAJOR_VERSION < 3 - #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s) -#else - #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s) -#endif -#endif - -/* ModuleImport.proto */ -static PyObject *__Pyx_ImportModule(const char *name); - -/* TypeImport.proto */ -static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict); - -/* VoidPtrImport.proto */ -static int __Pyx_ImportVoidPtr(PyObject *module, const char *name, void **p, const char *sig); - -/* FunctionImport.proto */ -static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig); - -/* InitStrings.proto */ -static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); - -static PyObject *__pyx_f_6gevent_6__imap_13IMapUnordered__inext(struct __pyx_obj_6gevent_6__imap_IMapUnordered *__pyx_v_self); /* proto*/ -static PyObject *__pyx_f_6gevent_6__imap_13IMapUnordered__ispawn(struct __pyx_obj_6gevent_6__imap_IMapUnordered *__pyx_v_self, PyObject *__pyx_v_func, PyObject *__pyx_v_item, int __pyx_v_item_index); /* proto*/ -static PyObject *__pyx_f_6gevent_6__imap_13IMapUnordered__on_result(struct __pyx_obj_6gevent_6__imap_IMapUnordered *__pyx_v_self, PyObject *__pyx_v_greenlet, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_6__imap_13IMapUnordered__on_finish(struct __pyx_obj_6gevent_6__imap_IMapUnordered *__pyx_v_self, PyObject *__pyx_v_exception); /* proto*/ -static PyObject *__pyx_f_6gevent_6__imap_13IMapUnordered__iqueue_value_for_success(CYTHON_UNUSED struct __pyx_obj_6gevent_6__imap_IMapUnordered *__pyx_v_self, PyObject *__pyx_v_greenlet); /* proto*/ -static PyObject *__pyx_f_6gevent_6__imap_13IMapUnordered__iqueue_value_for_failure(CYTHON_UNUSED struct __pyx_obj_6gevent_6__imap_IMapUnordered *__pyx_v_self, PyObject *__pyx_v_greenlet); /* proto*/ -static PyObject *__pyx_f_6gevent_6__imap_13IMapUnordered__iqueue_value_for_self_finished(CYTHON_UNUSED struct __pyx_obj_6gevent_6__imap_IMapUnordered *__pyx_v_self); /* proto*/ -static PyObject *__pyx_f_6gevent_6__imap_13IMapUnordered__iqueue_value_for_self_failure(struct __pyx_obj_6gevent_6__imap_IMapUnordered *__pyx_v_self, PyObject *__pyx_v_exception); /* proto*/ -static PyObject *__pyx_f_6gevent_6__imap_4IMap__inext(struct __pyx_obj_6gevent_6__imap_IMap *__pyx_v_self); /* proto*/ -static PyObject *__pyx_f_6gevent_6__imap_4IMap__iqueue_value_for_success(struct __pyx_obj_6gevent_6__imap_IMap *__pyx_v_self, PyObject *__pyx_v_greenlet); /* proto*/ -static PyObject *__pyx_f_6gevent_6__imap_4IMap__iqueue_value_for_failure(struct __pyx_obj_6gevent_6__imap_IMap *__pyx_v_self, PyObject *__pyx_v_greenlet); /* proto*/ -static PyObject *__pyx_f_6gevent_6__imap_4IMap__iqueue_value_for_self_finished(struct __pyx_obj_6gevent_6__imap_IMap *__pyx_v_self); /* proto*/ -static PyObject *__pyx_f_6gevent_6__imap_4IMap__iqueue_value_for_self_failure(struct __pyx_obj_6gevent_6__imap_IMap *__pyx_v_self, PyObject *__pyx_v_exception); /* proto*/ - -/* Module declarations from 'cython' */ - -/* Module declarations from 'weakref' */ - -/* Module declarations from 'gevent.__ident' */ -static PyTypeObject *__pyx_ptype_6gevent_7__ident_ref = 0; -static PyTypeObject *__pyx_ptype_6gevent_7__ident_ValuedWeakRef = 0; -static PyTypeObject *__pyx_ptype_6gevent_7__ident_IdentRegistry = 0; -static PyObject **__pyx_vp_6gevent_7__ident_heappop = 0; -#define __pyx_v_6gevent_7__ident_heappop (*__pyx_vp_6gevent_7__ident_heappop) -static PyObject **__pyx_vp_6gevent_7__ident_heappush = 0; -#define __pyx_v_6gevent_7__ident_heappush (*__pyx_vp_6gevent_7__ident_heappush) -static PyObject **__pyx_vp_6gevent_7__ident_WeakKeyDictionary = 0; -#define __pyx_v_6gevent_7__ident_WeakKeyDictionary (*__pyx_vp_6gevent_7__ident_WeakKeyDictionary) - -/* Module declarations from 'greenlet' */ - -/* Module declarations from 'gevent.__greenlet_primitives' */ -static PyTypeObject *__pyx_ptype_6gevent_21__greenlet_primitives_greenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop = 0; -static PyObject **__pyx_vp_6gevent_21__greenlet_primitives_wref = 0; -#define __pyx_v_6gevent_21__greenlet_primitives_wref (*__pyx_vp_6gevent_21__greenlet_primitives_wref) -static PyObject **__pyx_vp_6gevent_21__greenlet_primitives_BlockingSwitchOutError = 0; -#define __pyx_v_6gevent_21__greenlet_primitives_BlockingSwitchOutError (*__pyx_vp_6gevent_21__greenlet_primitives_BlockingSwitchOutError) -static int *__pyx_vp_6gevent_21__greenlet_primitives__greenlet_imported = 0; -#define __pyx_v_6gevent_21__greenlet_primitives__greenlet_imported (*__pyx_vp_6gevent_21__greenlet_primitives__greenlet_imported) - -/* Module declarations from 'gevent.__hub_local' */ -static PyObject **__pyx_vp_6gevent_11__hub_local__threadlocal = 0; -#define __pyx_v_6gevent_11__hub_local__threadlocal (*__pyx_vp_6gevent_11__hub_local__threadlocal) -static struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *(*__pyx_f_6gevent_11__hub_local_get_hub_noargs)(int __pyx_skip_dispatch); /*proto*/ - -/* Module declarations from 'gevent.__waiter' */ -static PyTypeObject *__pyx_ptype_6gevent_8__waiter_greenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_8__waiter_Waiter = 0; -static PyTypeObject *__pyx_ptype_6gevent_8__waiter_MultipleWaiter = 0; -static PyObject **__pyx_vp_6gevent_8__waiter_sys = 0; -#define __pyx_v_6gevent_8__waiter_sys (*__pyx_vp_6gevent_8__waiter_sys) -static PyObject **__pyx_vp_6gevent_8__waiter_ConcurrentObjectUseError = 0; -#define __pyx_v_6gevent_8__waiter_ConcurrentObjectUseError (*__pyx_vp_6gevent_8__waiter_ConcurrentObjectUseError) -static int *__pyx_vp_6gevent_8__waiter__greenlet_imported = 0; -#define __pyx_v_6gevent_8__waiter__greenlet_imported (*__pyx_vp_6gevent_8__waiter__greenlet_imported) -static PyObject **__pyx_vp_6gevent_8__waiter__NONE = 0; -#define __pyx_v_6gevent_8__waiter__NONE (*__pyx_vp_6gevent_8__waiter__NONE) - -/* Module declarations from 'types' */ - -/* Module declarations from 'gevent._greenlet' */ -static PyTypeObject *__pyx_ptype_6gevent_9_greenlet_greenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_9_greenlet_CodeType = 0; -static PyTypeObject *__pyx_ptype_6gevent_9_greenlet_FrameType = 0; -static PyTypeObject *__pyx_ptype_6gevent_9_greenlet_SpawnedLink = 0; -static PyTypeObject *__pyx_ptype_6gevent_9_greenlet_SuccessSpawnedLink = 0; -static PyTypeObject *__pyx_ptype_6gevent_9_greenlet_FailureSpawnedLink = 0; -static PyTypeObject *__pyx_ptype_6gevent_9_greenlet__Frame = 0; -static PyTypeObject *__pyx_ptype_6gevent_9_greenlet_Greenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_9_greenlet__dummy_event = 0; -static int *__pyx_vp_6gevent_9_greenlet__PYPY = 0; -#define __pyx_v_6gevent_9_greenlet__PYPY (*__pyx_vp_6gevent_9_greenlet__PYPY) -static PyObject **__pyx_vp_6gevent_9_greenlet_sys_getframe = 0; -#define __pyx_v_6gevent_9_greenlet_sys_getframe (*__pyx_vp_6gevent_9_greenlet_sys_getframe) -static PyObject **__pyx_vp_6gevent_9_greenlet_sys_exc_info = 0; -#define __pyx_v_6gevent_9_greenlet_sys_exc_info (*__pyx_vp_6gevent_9_greenlet_sys_exc_info) -static PyObject **__pyx_vp_6gevent_9_greenlet_Timeout = 0; -#define __pyx_v_6gevent_9_greenlet_Timeout (*__pyx_vp_6gevent_9_greenlet_Timeout) -static PyObject **__pyx_vp_6gevent_9_greenlet_GreenletExit = 0; -#define __pyx_v_6gevent_9_greenlet_GreenletExit (*__pyx_vp_6gevent_9_greenlet_GreenletExit) -static PyObject **__pyx_vp_6gevent_9_greenlet_InvalidSwitchError = 0; -#define __pyx_v_6gevent_9_greenlet_InvalidSwitchError (*__pyx_vp_6gevent_9_greenlet_InvalidSwitchError) -static int *__pyx_vp_6gevent_9_greenlet__greenlet_imported = 0; -#define __pyx_v_6gevent_9_greenlet__greenlet_imported (*__pyx_vp_6gevent_9_greenlet__greenlet_imported) -static PyObject **__pyx_vp_6gevent_9_greenlet__greenlet__init__ = 0; -#define __pyx_v_6gevent_9_greenlet__greenlet__init__ (*__pyx_vp_6gevent_9_greenlet__greenlet__init__) -static PyObject **__pyx_vp_6gevent_9_greenlet__threadlocal = 0; -#define __pyx_v_6gevent_9_greenlet__threadlocal (*__pyx_vp_6gevent_9_greenlet__threadlocal) -static PyObject **__pyx_vp_6gevent_9_greenlet_get_hub_class = 0; -#define __pyx_v_6gevent_9_greenlet_get_hub_class (*__pyx_vp_6gevent_9_greenlet_get_hub_class) -static PyObject **__pyx_vp_6gevent_9_greenlet_wref = 0; -#define __pyx_v_6gevent_9_greenlet_wref (*__pyx_vp_6gevent_9_greenlet_wref) -static PyObject **__pyx_vp_6gevent_9_greenlet_dump_traceback = 0; -#define __pyx_v_6gevent_9_greenlet_dump_traceback (*__pyx_vp_6gevent_9_greenlet_dump_traceback) -static PyObject **__pyx_vp_6gevent_9_greenlet_load_traceback = 0; -#define __pyx_v_6gevent_9_greenlet_load_traceback (*__pyx_vp_6gevent_9_greenlet_load_traceback) -static PyObject **__pyx_vp_6gevent_9_greenlet_wait = 0; -#define __pyx_v_6gevent_9_greenlet_wait (*__pyx_vp_6gevent_9_greenlet_wait) -static PyObject **__pyx_vp_6gevent_9_greenlet_iwait = 0; -#define __pyx_v_6gevent_9_greenlet_iwait (*__pyx_vp_6gevent_9_greenlet_iwait) -static PyObject **__pyx_vp_6gevent_9_greenlet_reraise = 0; -#define __pyx_v_6gevent_9_greenlet_reraise (*__pyx_vp_6gevent_9_greenlet_reraise) -static PyObject **__pyx_vp_6gevent_9_greenlet_GEVENT_CONFIG = 0; -#define __pyx_v_6gevent_9_greenlet_GEVENT_CONFIG (*__pyx_vp_6gevent_9_greenlet_GEVENT_CONFIG) -static struct __pyx_obj_6gevent_9_greenlet__dummy_event **__pyx_vp_6gevent_9_greenlet__cancelled_start_event = 0; -#define __pyx_v_6gevent_9_greenlet__cancelled_start_event (*__pyx_vp_6gevent_9_greenlet__cancelled_start_event) -static struct __pyx_obj_6gevent_9_greenlet__dummy_event **__pyx_vp_6gevent_9_greenlet__start_completed_event = 0; -#define __pyx_v_6gevent_9_greenlet__start_completed_event (*__pyx_vp_6gevent_9_greenlet__start_completed_event) - -/* Module declarations from 'gevent.__semaphore' */ -static PyTypeObject *__pyx_ptype_6gevent_11__semaphore_greenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_11__semaphore_Semaphore = 0; -static PyTypeObject *__pyx_ptype_6gevent_11__semaphore_BoundedSemaphore = 0; -static PyObject **__pyx_vp_6gevent_11__semaphore_Timeout = 0; -#define __pyx_v_6gevent_11__semaphore_Timeout (*__pyx_vp_6gevent_11__semaphore_Timeout) -static int *__pyx_vp_6gevent_11__semaphore__greenlet_imported = 0; -#define __pyx_v_6gevent_11__semaphore__greenlet_imported (*__pyx_vp_6gevent_11__semaphore__greenlet_imported) - -/* Module declarations from 'gevent._event' */ -static PyTypeObject *__pyx_ptype_6gevent_6_event_greenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_6_event__AbstractLinkable = 0; -static PyTypeObject *__pyx_ptype_6gevent_6_event_Event = 0; -static PyTypeObject *__pyx_ptype_6gevent_6_event_AsyncResult = 0; -static PyObject **__pyx_vp_6gevent_6_event__None = 0; -#define __pyx_v_6gevent_6_event__None (*__pyx_vp_6gevent_6_event__None) -static PyObject **__pyx_vp_6gevent_6_event_reraise = 0; -#define __pyx_v_6gevent_6_event_reraise (*__pyx_vp_6gevent_6_event_reraise) -static PyObject **__pyx_vp_6gevent_6_event_dump_traceback = 0; -#define __pyx_v_6gevent_6_event_dump_traceback (*__pyx_vp_6gevent_6_event_dump_traceback) -static PyObject **__pyx_vp_6gevent_6_event_load_traceback = 0; -#define __pyx_v_6gevent_6_event_load_traceback (*__pyx_vp_6gevent_6_event_load_traceback) -static PyObject **__pyx_vp_6gevent_6_event_InvalidSwitchError = 0; -#define __pyx_v_6gevent_6_event_InvalidSwitchError (*__pyx_vp_6gevent_6_event_InvalidSwitchError) -static PyObject **__pyx_vp_6gevent_6_event_Timeout = 0; -#define __pyx_v_6gevent_6_event_Timeout (*__pyx_vp_6gevent_6_event_Timeout) -static int *__pyx_vp_6gevent_6_event__greenlet_imported = 0; -#define __pyx_v_6gevent_6_event__greenlet_imported (*__pyx_vp_6gevent_6_event__greenlet_imported) - -/* Module declarations from 'gevent._queue' */ -static PyTypeObject *__pyx_ptype_6gevent_6_queue_ItemWaiter = 0; -static PyTypeObject *__pyx_ptype_6gevent_6_queue_Queue = 0; -static PyTypeObject *__pyx_ptype_6gevent_6_queue_UnboundQueue = 0; -static PyTypeObject *__pyx_ptype_6gevent_6_queue_PriorityQueue = 0; -static PyTypeObject *__pyx_ptype_6gevent_6_queue_LifoQueue = 0; -static PyTypeObject *__pyx_ptype_6gevent_6_queue_JoinableQueue = 0; -static PyTypeObject *__pyx_ptype_6gevent_6_queue_Channel = 0; -static PyObject **__pyx_vp_6gevent_6_queue__heappush = 0; -#define __pyx_v_6gevent_6_queue__heappush (*__pyx_vp_6gevent_6_queue__heappush) -static PyObject **__pyx_vp_6gevent_6_queue__heappop = 0; -#define __pyx_v_6gevent_6_queue__heappop (*__pyx_vp_6gevent_6_queue__heappop) -static PyObject **__pyx_vp_6gevent_6_queue__heapify = 0; -#define __pyx_v_6gevent_6_queue__heapify (*__pyx_vp_6gevent_6_queue__heapify) - -/* Module declarations from 'gevent.__imap' */ -static PyTypeObject *__pyx_ptype_6gevent_6__imap_Failure = 0; -static PyTypeObject *__pyx_ptype_6gevent_6__imap_IMapUnordered = 0; -static PyTypeObject *__pyx_ptype_6gevent_6__imap_IMap = 0; -static CYTHON_INLINE PyObject *__pyx_f_6gevent_6__imap__raise_exc(struct __pyx_obj_6gevent_6__imap_Failure *); /*proto*/ -#define __Pyx_MODULE_NAME "gevent.__imap" -extern int __pyx_module_is_main_gevent____imap; -int __pyx_module_is_main_gevent____imap = 0; - -/* Implementation of 'gevent.__imap' */ -static PyObject *__pyx_builtin___import__; -static PyObject *__pyx_builtin_BaseException; -static PyObject *__pyx_builtin_StopIteration; -static PyObject *__pyx_builtin_KeyError; -static const char __pyx_k_e[] = "e"; -static const char __pyx_k_all[] = "__all__"; -static const char __pyx_k_exc[] = "exc"; -static const char __pyx_k_pop[] = "pop"; -static const char __pyx_k_run[] = "_run"; -static const char __pyx_k_IMap[] = "IMap"; -static const char __pyx_k_func[] = "func"; -static const char __pyx_k_init[] = "__init__"; -static const char __pyx_k_item[] = "item"; -static const char __pyx_k_main[] = "__main__"; -static const char __pyx_k_next[] = "__next__"; -static const char __pyx_k_self[] = "self"; -static const char __pyx_k_test[] = "__test__"; -static const char __pyx_k_queue[] = "queue"; -static const char __pyx_k_slots[] = "__slots__"; -static const char __pyx_k_spawn[] = "spawn"; -static const char __pyx_k_value[] = "value"; -static const char __pyx_k_gevent[] = "gevent"; -static const char __pyx_k_import[] = "__import__"; -static const char __pyx_k_next_2[] = "next"; -static const char __pyx_k_zipped[] = "_zipped"; -static const char __pyx_k_maxsize[] = "maxsize"; -static const char __pyx_k_rawlink[] = "rawlink"; -static const char __pyx_k_Greenlet[] = "Greenlet"; -static const char __pyx_k_KeyError[] = "KeyError"; -static const char __pyx_k_greenlet[] = "greenlet"; -static const char __pyx_k_iterable[] = "iterable"; -static const char __pyx_k_Semaphore[] = "Semaphore"; -static const char __pyx_k_exception[] = "exception"; -static const char __pyx_k_on_result[] = "_on_result"; -static const char __pyx_k_semaphore[] = "_semaphore"; -static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__"; -static const char __pyx_k_successful[] = "successful"; -static const char __pyx_k_UnboundQueue[] = "UnboundQueue"; -static const char __pyx_k_gevent__util[] = "gevent._util"; -static const char __pyx_k_BaseException[] = "BaseException"; -static const char __pyx_k_IMapUnordered[] = "IMapUnordered"; -static const char __pyx_k_StopIteration[] = "StopIteration"; -static const char __pyx_k_gevent___imap[] = "gevent.__imap"; -static const char __pyx_k_import_c_accel[] = "import_c_accel"; -static const char __pyx_k_imap_task_index[] = "_imap_task_index"; -static const char __pyx_k_raise_exception[] = "raise_exception"; -static const char __pyx_k_raise_exception_2[] = "_raise_exception"; -static const char __pyx_k_IMapUnordered__run[] = "IMapUnordered._run"; -static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; -static const char __pyx_k_src_gevent__imap_py[] = "src\\gevent\\_imap.py"; -static const char __pyx_k_IMapUnordered__on_result[] = "IMapUnordered._on_result"; -static const char __pyx_k_Iterators_across_greenlets_or_A[] = "\nIterators across greenlets or AsyncResult objects.\n\n"; -static PyObject *__pyx_n_s_BaseException; -static PyObject *__pyx_n_s_Greenlet; -static PyObject *__pyx_n_s_IMap; -static PyObject *__pyx_n_s_IMapUnordered; -static PyObject *__pyx_n_s_IMapUnordered__on_result; -static PyObject *__pyx_n_s_IMapUnordered__run; -static PyObject *__pyx_n_s_KeyError; -static PyObject *__pyx_n_s_Semaphore; -static PyObject *__pyx_n_s_StopIteration; -static PyObject *__pyx_n_s_UnboundQueue; -static PyObject *__pyx_n_s_all; -static PyObject *__pyx_n_s_cline_in_traceback; -static PyObject *__pyx_n_s_e; -static PyObject *__pyx_n_s_exc; -static PyObject *__pyx_n_s_exception; -static PyObject *__pyx_n_s_func; -static PyObject *__pyx_n_s_gevent; -static PyObject *__pyx_n_s_gevent___imap; -static PyObject *__pyx_n_s_gevent__util; -static PyObject *__pyx_n_s_greenlet; -static PyObject *__pyx_n_s_imap_task_index; -static PyObject *__pyx_n_s_import; -static PyObject *__pyx_n_s_import_c_accel; -static PyObject *__pyx_n_s_init; -static PyObject *__pyx_n_s_item; -static PyObject *__pyx_n_s_iterable; -static PyObject *__pyx_n_s_main; -static PyObject *__pyx_n_s_maxsize; -static PyObject *__pyx_n_s_next; -static PyObject *__pyx_n_s_next_2; -static PyObject *__pyx_n_s_on_result; -static PyObject *__pyx_n_s_pop; -static PyObject *__pyx_n_s_pyx_vtable; -static PyObject *__pyx_n_s_queue; -static PyObject *__pyx_n_s_raise_exception; -static PyObject *__pyx_n_s_raise_exception_2; -static PyObject *__pyx_n_s_rawlink; -static PyObject *__pyx_n_s_run; -static PyObject *__pyx_n_s_self; -static PyObject *__pyx_n_s_semaphore; -static PyObject *__pyx_n_s_slots; -static PyObject *__pyx_n_s_spawn; -static PyObject *__pyx_kp_s_src_gevent__imap_py; -static PyObject *__pyx_n_s_successful; -static PyObject *__pyx_n_s_test; -static PyObject *__pyx_n_s_value; -static PyObject *__pyx_n_s_zipped; -static int __pyx_pf_6gevent_6__imap_7Failure___init__(struct __pyx_obj_6gevent_6__imap_Failure *__pyx_v_self, PyObject *__pyx_v_exc, PyObject *__pyx_v_raise_exception); /* proto */ -static PyObject *__pyx_pf_6gevent_6__imap_7Failure_3exc___get__(struct __pyx_obj_6gevent_6__imap_Failure *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_6__imap_13IMapUnordered___init__(struct __pyx_obj_6gevent_6__imap_IMapUnordered *__pyx_v_self, PyObject *__pyx_v_func, PyObject *__pyx_v_iterable, PyObject *__pyx_v_spawn, PyObject *__pyx_v_maxsize, PyObject *__pyx_v__zipped); /* proto */ -static PyObject *__pyx_pf_6gevent_6__imap_13IMapUnordered_2__iter__(struct __pyx_obj_6gevent_6__imap_IMapUnordered *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6__imap_13IMapUnordered_4__next__(struct __pyx_obj_6gevent_6__imap_IMapUnordered *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6__imap_13IMapUnordered_6_run(struct __pyx_obj_6gevent_6__imap_IMapUnordered *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6__imap_13IMapUnordered_8_on_result(struct __pyx_obj_6gevent_6__imap_IMapUnordered *__pyx_v_self, PyObject *__pyx_v_greenlet); /* proto */ -static PyObject *__pyx_pf_6gevent_6__imap_13IMapUnordered_5queue___get__(struct __pyx_obj_6gevent_6__imap_IMapUnordered *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6__imap_13IMapUnordered_8finished___get__(struct __pyx_obj_6gevent_6__imap_IMapUnordered *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_6__imap_4IMap___init__(struct __pyx_obj_6gevent_6__imap_IMap *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */ -static PyObject *__pyx_tp_new_6gevent_6__imap_Failure(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_6__imap_IMapUnordered(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_6__imap_IMap(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_pop = {0, &__pyx_n_s_pop, 0, 0, 0}; -static PyObject *__pyx_tuple_; -static PyObject *__pyx_tuple__2; -static PyObject *__pyx_tuple__3; -static PyObject *__pyx_tuple__5; -static PyObject *__pyx_codeobj__4; -static PyObject *__pyx_codeobj__6; -/* Late includes */ - -/* "src/gevent/_imap.py":31 - * __slots__ = ('exc', 'raise_exception') - * - * def __init__(self, exc, raise_exception=None): # <<<<<<<<<<<<<< - * self.exc = exc - * self.raise_exception = raise_exception - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_6__imap_7Failure_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_6__imap_7Failure_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_exc = 0; - PyObject *__pyx_v_raise_exception = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_exc,&__pyx_n_s_raise_exception,0}; - PyObject* values[2] = {0,0}; - values[1] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_exc)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_raise_exception); - if (value) { values[1] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 31, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_exc = values[0]; - __pyx_v_raise_exception = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 31, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.__imap.Failure.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_6__imap_7Failure___init__(((struct __pyx_obj_6gevent_6__imap_Failure *)__pyx_v_self), __pyx_v_exc, __pyx_v_raise_exception); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_6__imap_7Failure___init__(struct __pyx_obj_6gevent_6__imap_Failure *__pyx_v_self, PyObject *__pyx_v_exc, PyObject *__pyx_v_raise_exception) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__", 0); - - /* "src/gevent/_imap.py":32 - * - * def __init__(self, exc, raise_exception=None): - * self.exc = exc # <<<<<<<<<<<<<< - * self.raise_exception = raise_exception - * - */ - __Pyx_INCREF(__pyx_v_exc); - __Pyx_GIVEREF(__pyx_v_exc); - __Pyx_GOTREF(__pyx_v_self->exc); - __Pyx_DECREF(__pyx_v_self->exc); - __pyx_v_self->exc = __pyx_v_exc; - - /* "src/gevent/_imap.py":33 - * def __init__(self, exc, raise_exception=None): - * self.exc = exc - * self.raise_exception = raise_exception # <<<<<<<<<<<<<< - * - * - */ - __Pyx_INCREF(__pyx_v_raise_exception); - __Pyx_GIVEREF(__pyx_v_raise_exception); - __Pyx_GOTREF(__pyx_v_self->raise_exception); - __Pyx_DECREF(__pyx_v_self->raise_exception); - __pyx_v_self->raise_exception = __pyx_v_raise_exception; - - /* "src/gevent/_imap.py":31 - * __slots__ = ('exc', 'raise_exception') - * - * def __init__(self, exc, raise_exception=None): # <<<<<<<<<<<<<< - * self.exc = exc - * self.raise_exception = raise_exception - */ - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__imap.pxd":10 - * @cython.final - * cdef class Failure: - * cdef readonly exc # <<<<<<<<<<<<<< - * cdef raise_exception - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6__imap_7Failure_3exc_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_6__imap_7Failure_3exc_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6__imap_7Failure_3exc___get__(((struct __pyx_obj_6gevent_6__imap_Failure *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6__imap_7Failure_3exc___get__(struct __pyx_obj_6gevent_6__imap_Failure *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->exc); - __pyx_r = __pyx_v_self->exc; - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_imap.py":36 - * - * - * def _raise_exc(failure): # <<<<<<<<<<<<<< - * # For cython. - * if failure.raise_exception: - */ - -static CYTHON_INLINE PyObject *__pyx_f_6gevent_6__imap__raise_exc(struct __pyx_obj_6gevent_6__imap_Failure *__pyx_v_failure) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("_raise_exc", 0); - - /* "src/gevent/_imap.py":38 - * def _raise_exc(failure): - * # For cython. - * if failure.raise_exception: # <<<<<<<<<<<<<< - * failure.raise_exception() - * else: - */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_failure->raise_exception); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 38, __pyx_L1_error) - if (likely(__pyx_t_1)) { - - /* "src/gevent/_imap.py":39 - * # For cython. - * if failure.raise_exception: - * failure.raise_exception() # <<<<<<<<<<<<<< - * else: - * raise failure.exc - */ - __Pyx_INCREF(__pyx_v_failure->raise_exception); - __pyx_t_3 = __pyx_v_failure->raise_exception; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 39, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 39, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_imap.py":38 - * def _raise_exc(failure): - * # For cython. - * if failure.raise_exception: # <<<<<<<<<<<<<< - * failure.raise_exception() - * else: - */ - goto __pyx_L3; - } - - /* "src/gevent/_imap.py":41 - * failure.raise_exception() - * else: - * raise failure.exc # <<<<<<<<<<<<<< - * - * class IMapUnordered(Greenlet): # pylint:disable=undefined-variable - */ - /*else*/ { - __Pyx_Raise(__pyx_v_failure->exc, 0, 0, 0); - __PYX_ERR(0, 41, __pyx_L1_error) - } - __pyx_L3:; - - /* "src/gevent/_imap.py":36 - * - * - * def _raise_exc(failure): # <<<<<<<<<<<<<< - * # For cython. - * if failure.raise_exception: - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent.__imap._raise_exc", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_imap.py":48 - * """ - * - * def __init__(self, func, iterable, spawn, maxsize=None, _zipped=False): # <<<<<<<<<<<<<< - * """ - * An iterator that. - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_6__imap_13IMapUnordered_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_6__imap_13IMapUnordered___init__[] = "\n An iterator that.\n\n :param callable spawn: The function we use to create new greenlets.\n :keyword int maxsize: If given and not-None, specifies the maximum number of\n finished results that will be allowed to accumulated awaiting the reader;\n more than that number of results will cause map function greenlets to begin\n to block. This is most useful is there is a great disparity in the speed of\n the mapping code and the consumer and the results consume a great deal of resources.\n Using a bound is more computationally expensive than not using a bound.\n\n .. versionchanged:: 1.1b3\n Added the *maxsize* parameter.\n "; -#if CYTHON_COMPILING_IN_CPYTHON -struct wrapperbase __pyx_wrapperbase_6gevent_6__imap_13IMapUnordered___init__; -#endif -static int __pyx_pw_6gevent_6__imap_13IMapUnordered_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_func = 0; - PyObject *__pyx_v_iterable = 0; - PyObject *__pyx_v_spawn = 0; - PyObject *__pyx_v_maxsize = 0; - PyObject *__pyx_v__zipped = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_func,&__pyx_n_s_iterable,&__pyx_n_s_spawn,&__pyx_n_s_maxsize,&__pyx_n_s_zipped,0}; - PyObject* values[5] = {0,0,0,0,0}; - values[3] = ((PyObject *)Py_None); - values[4] = ((PyObject *)Py_False); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); - CYTHON_FALLTHROUGH; - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_func)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iterable)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 5, 1); __PYX_ERR(0, 48, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_spawn)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 5, 2); __PYX_ERR(0, 48, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 3: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_maxsize); - if (value) { values[3] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 4: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_zipped); - if (value) { values[4] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 48, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); - CYTHON_FALLTHROUGH; - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_func = values[0]; - __pyx_v_iterable = values[1]; - __pyx_v_spawn = values[2]; - __pyx_v_maxsize = values[3]; - __pyx_v__zipped = values[4]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 48, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.__imap.IMapUnordered.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_6__imap_13IMapUnordered___init__(((struct __pyx_obj_6gevent_6__imap_IMapUnordered *)__pyx_v_self), __pyx_v_func, __pyx_v_iterable, __pyx_v_spawn, __pyx_v_maxsize, __pyx_v__zipped); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_6__imap_13IMapUnordered___init__(struct __pyx_obj_6gevent_6__imap_IMapUnordered *__pyx_v_self, PyObject *__pyx_v_func, PyObject *__pyx_v_iterable, PyObject *__pyx_v_spawn, PyObject *__pyx_v_maxsize, PyObject *__pyx_v__zipped) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - __Pyx_RefNannySetupContext("__init__", 0); - - /* "src/gevent/_imap.py":63 - * Added the *maxsize* parameter. - * """ - * Greenlet.__init__(self) # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * self.spawn = spawn - * self._zipped = _zipped - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_6gevent_9_greenlet_Greenlet), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 63, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 63, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_self)}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 63, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_self)}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 63, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 63, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)__pyx_v_self)); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 63, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_imap.py":64 - * """ - * Greenlet.__init__(self) # pylint:disable=undefined-variable - * self.spawn = spawn # <<<<<<<<<<<<<< - * self._zipped = _zipped - * self.func = func - */ - __Pyx_INCREF(__pyx_v_spawn); - __Pyx_GIVEREF(__pyx_v_spawn); - __Pyx_GOTREF(__pyx_v_self->spawn); - __Pyx_DECREF(__pyx_v_self->spawn); - __pyx_v_self->spawn = __pyx_v_spawn; - - /* "src/gevent/_imap.py":65 - * Greenlet.__init__(self) # pylint:disable=undefined-variable - * self.spawn = spawn - * self._zipped = _zipped # <<<<<<<<<<<<<< - * self.func = func - * self.iterable = iterable - */ - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v__zipped); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 65, __pyx_L1_error) - __pyx_v_self->_zipped = __pyx_t_5; - - /* "src/gevent/_imap.py":66 - * self.spawn = spawn - * self._zipped = _zipped - * self.func = func # <<<<<<<<<<<<<< - * self.iterable = iterable - * self.queue = UnboundQueue() # pylint:disable=undefined-variable - */ - __Pyx_INCREF(__pyx_v_func); - __Pyx_GIVEREF(__pyx_v_func); - __Pyx_GOTREF(__pyx_v_self->func); - __Pyx_DECREF(__pyx_v_self->func); - __pyx_v_self->func = __pyx_v_func; - - /* "src/gevent/_imap.py":67 - * self._zipped = _zipped - * self.func = func - * self.iterable = iterable # <<<<<<<<<<<<<< - * self.queue = UnboundQueue() # pylint:disable=undefined-variable - * - */ - __Pyx_INCREF(__pyx_v_iterable); - __Pyx_GIVEREF(__pyx_v_iterable); - __Pyx_GOTREF(__pyx_v_self->iterable); - __Pyx_DECREF(__pyx_v_self->iterable); - __pyx_v_self->iterable = __pyx_v_iterable; - - /* "src/gevent/_imap.py":68 - * self.func = func - * self.iterable = iterable - * self.queue = UnboundQueue() # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_6gevent_6_queue_UnboundQueue)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 68, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->queue); - __Pyx_DECREF(((PyObject *)__pyx_v_self->queue)); - __pyx_v_self->queue = ((struct __pyx_obj_6gevent_6_queue_UnboundQueue *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/_imap.py":71 - * - * - * if maxsize: # <<<<<<<<<<<<<< - * # Bounding the queue is not enough if we want to keep from - * # accumulating objects; the result value will be around as - */ - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_maxsize); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 71, __pyx_L1_error) - if (__pyx_t_5) { - - /* "src/gevent/_imap.py":87 - * # of self.rawlink() to avoid having blocking methods called in the - * # hub greenlet. - * self._result_semaphore = Semaphore(maxsize) # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * else: - * self._result_semaphore = None - */ - __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_6gevent_11__semaphore_Semaphore), __pyx_v_maxsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 87, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->_result_semaphore); - __Pyx_DECREF(((PyObject *)__pyx_v_self->_result_semaphore)); - __pyx_v_self->_result_semaphore = ((struct __pyx_obj_6gevent_11__semaphore_Semaphore *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/_imap.py":71 - * - * - * if maxsize: # <<<<<<<<<<<<<< - * # Bounding the queue is not enough if we want to keep from - * # accumulating objects; the result value will be around as - */ - goto __pyx_L3; - } - - /* "src/gevent/_imap.py":89 - * self._result_semaphore = Semaphore(maxsize) # pylint:disable=undefined-variable - * else: - * self._result_semaphore = None # <<<<<<<<<<<<<< - * - * self._outstanding_tasks = 0 - */ - /*else*/ { - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->_result_semaphore); - __Pyx_DECREF(((PyObject *)__pyx_v_self->_result_semaphore)); - __pyx_v_self->_result_semaphore = ((struct __pyx_obj_6gevent_11__semaphore_Semaphore *)Py_None); - } - __pyx_L3:; - - /* "src/gevent/_imap.py":91 - * self._result_semaphore = None - * - * self._outstanding_tasks = 0 # <<<<<<<<<<<<<< - * # The index (zero based) of the maximum number of - * # results we will have. - */ - __pyx_v_self->_outstanding_tasks = 0; - - /* "src/gevent/_imap.py":94 - * # The index (zero based) of the maximum number of - * # results we will have. - * self._max_index = -1 # <<<<<<<<<<<<<< - * self.finished = False - * - */ - __pyx_v_self->_max_index = -1; - - /* "src/gevent/_imap.py":95 - * # results we will have. - * self._max_index = -1 - * self.finished = False # <<<<<<<<<<<<<< - * - * - */ - __pyx_v_self->finished = 0; - - /* "src/gevent/_imap.py":48 - * """ - * - * def __init__(self, func, iterable, spawn, maxsize=None, _zipped=False): # <<<<<<<<<<<<<< - * """ - * An iterator that. - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent.__imap.IMapUnordered.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_imap.py":99 - * - * # We're iterating in a different greenlet than we're running. - * def __iter__(self): # <<<<<<<<<<<<<< - * return self - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6__imap_13IMapUnordered_3__iter__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_6__imap_13IMapUnordered_3__iter__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6__imap_13IMapUnordered_2__iter__(((struct __pyx_obj_6gevent_6__imap_IMapUnordered *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6__imap_13IMapUnordered_2__iter__(struct __pyx_obj_6gevent_6__imap_IMapUnordered *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__iter__", 0); - - /* "src/gevent/_imap.py":100 - * # We're iterating in a different greenlet than we're running. - * def __iter__(self): - * return self # <<<<<<<<<<<<<< - * - * def __next__(self): - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __pyx_r = ((PyObject *)__pyx_v_self); - goto __pyx_L0; - - /* "src/gevent/_imap.py":99 - * - * # We're iterating in a different greenlet than we're running. - * def __iter__(self): # <<<<<<<<<<<<<< - * return self - * - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_imap.py":102 - * return self - * - * def __next__(self): # <<<<<<<<<<<<<< - * if self._result_semaphore is not None: - * self._result_semaphore.release() - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6__imap_13IMapUnordered_5__next__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_6__imap_13IMapUnordered_5__next__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__next__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6__imap_13IMapUnordered_4__next__(((struct __pyx_obj_6gevent_6__imap_IMapUnordered *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6__imap_13IMapUnordered_4__next__(struct __pyx_obj_6gevent_6__imap_IMapUnordered *__pyx_v_self) { - PyObject *__pyx_v_value = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("__next__", 0); - - /* "src/gevent/_imap.py":103 - * - * def __next__(self): - * if self._result_semaphore is not None: # <<<<<<<<<<<<<< - * self._result_semaphore.release() - * value = self._inext() - */ - __pyx_t_1 = (((PyObject *)__pyx_v_self->_result_semaphore) != Py_None); - __pyx_t_2 = (__pyx_t_1 != 0); - if (__pyx_t_2) { - - /* "src/gevent/_imap.py":104 - * def __next__(self): - * if self._result_semaphore is not None: - * self._result_semaphore.release() # <<<<<<<<<<<<<< - * value = self._inext() - * if isinstance(value, Failure): - */ - __pyx_t_3 = ((struct __pyx_vtabstruct_6gevent_11__semaphore_Semaphore *)__pyx_v_self->_result_semaphore->__pyx_vtab)->release(__pyx_v_self->_result_semaphore, 0); if (unlikely(__pyx_t_3 == ((int)-1000))) __PYX_ERR(0, 104, __pyx_L1_error) - - /* "src/gevent/_imap.py":103 - * - * def __next__(self): - * if self._result_semaphore is not None: # <<<<<<<<<<<<<< - * self._result_semaphore.release() - * value = self._inext() - */ - } - - /* "src/gevent/_imap.py":105 - * if self._result_semaphore is not None: - * self._result_semaphore.release() - * value = self._inext() # <<<<<<<<<<<<<< - * if isinstance(value, Failure): - * _raise_exc(value) - */ - __pyx_t_4 = ((struct __pyx_vtabstruct_6gevent_6__imap_IMapUnordered *)__pyx_v_self->__pyx_base.__pyx_vtab)->_inext(__pyx_v_self); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 105, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_v_value = __pyx_t_4; - __pyx_t_4 = 0; - - /* "src/gevent/_imap.py":106 - * self._result_semaphore.release() - * value = self._inext() - * if isinstance(value, Failure): # <<<<<<<<<<<<<< - * _raise_exc(value) - * return value - */ - __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_value, __pyx_ptype_6gevent_6__imap_Failure); - __pyx_t_1 = (__pyx_t_2 != 0); - if (__pyx_t_1) { - - /* "src/gevent/_imap.py":107 - * value = self._inext() - * if isinstance(value, Failure): - * _raise_exc(value) # <<<<<<<<<<<<<< - * return value - * - */ - if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_6gevent_6__imap_Failure))))) __PYX_ERR(0, 107, __pyx_L1_error) - __pyx_t_4 = __pyx_f_6gevent_6__imap__raise_exc(((struct __pyx_obj_6gevent_6__imap_Failure *)__pyx_v_value)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 107, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "src/gevent/_imap.py":106 - * self._result_semaphore.release() - * value = self._inext() - * if isinstance(value, Failure): # <<<<<<<<<<<<<< - * _raise_exc(value) - * return value - */ - } - - /* "src/gevent/_imap.py":108 - * if isinstance(value, Failure): - * _raise_exc(value) - * return value # <<<<<<<<<<<<<< - * - * next = __next__ # Py2 - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_value); - __pyx_r = __pyx_v_value; - goto __pyx_L0; - - /* "src/gevent/_imap.py":102 - * return self - * - * def __next__(self): # <<<<<<<<<<<<<< - * if self._result_semaphore is not None: - * self._result_semaphore.release() - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent.__imap.IMapUnordered.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_value); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_imap.py":112 - * next = __next__ # Py2 - * - * def _inext(self): # <<<<<<<<<<<<<< - * return self.queue.get() - * - */ - -static PyObject *__pyx_f_6gevent_6__imap_13IMapUnordered__inext(struct __pyx_obj_6gevent_6__imap_IMapUnordered *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_inext", 0); - - /* "src/gevent/_imap.py":113 - * - * def _inext(self): - * return self.queue.get() # <<<<<<<<<<<<<< - * - * def _ispawn(self, func, item, item_index): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_6_queue_UnboundQueue *)__pyx_v_self->queue->__pyx_base.__pyx_vtab)->__pyx_base.get(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self->queue), 0, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 113, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/_imap.py":112 - * next = __next__ # Py2 - * - * def _inext(self): # <<<<<<<<<<<<<< - * return self.queue.get() - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__imap.IMapUnordered._inext", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_imap.py":115 - * return self.queue.get() - * - * def _ispawn(self, func, item, item_index): # <<<<<<<<<<<<<< - * if self._result_semaphore is not None: - * self._result_semaphore.acquire() - */ - -static PyObject *__pyx_f_6gevent_6__imap_13IMapUnordered__ispawn(struct __pyx_obj_6gevent_6__imap_IMapUnordered *__pyx_v_self, PyObject *__pyx_v_func, PyObject *__pyx_v_item, int __pyx_v_item_index) { - PyObject *__pyx_v_g = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - int __pyx_t_7; - PyObject *__pyx_t_8 = NULL; - __Pyx_RefNannySetupContext("_ispawn", 0); - - /* "src/gevent/_imap.py":116 - * - * def _ispawn(self, func, item, item_index): - * if self._result_semaphore is not None: # <<<<<<<<<<<<<< - * self._result_semaphore.acquire() - * self._outstanding_tasks += 1 - */ - __pyx_t_1 = (((PyObject *)__pyx_v_self->_result_semaphore) != Py_None); - __pyx_t_2 = (__pyx_t_1 != 0); - if (__pyx_t_2) { - - /* "src/gevent/_imap.py":117 - * def _ispawn(self, func, item, item_index): - * if self._result_semaphore is not None: - * self._result_semaphore.acquire() # <<<<<<<<<<<<<< - * self._outstanding_tasks += 1 - * g = self.spawn(func, item) if not self._zipped else self.spawn(func, *item) - */ - __pyx_t_2 = ((struct __pyx_vtabstruct_6gevent_11__semaphore_Semaphore *)__pyx_v_self->_result_semaphore->__pyx_vtab)->acquire(__pyx_v_self->_result_semaphore, 0, NULL); if (unlikely(__pyx_t_2 == ((int)-1000))) __PYX_ERR(0, 117, __pyx_L1_error) - - /* "src/gevent/_imap.py":116 - * - * def _ispawn(self, func, item, item_index): - * if self._result_semaphore is not None: # <<<<<<<<<<<<<< - * self._result_semaphore.acquire() - * self._outstanding_tasks += 1 - */ - } - - /* "src/gevent/_imap.py":118 - * if self._result_semaphore is not None: - * self._result_semaphore.acquire() - * self._outstanding_tasks += 1 # <<<<<<<<<<<<<< - * g = self.spawn(func, item) if not self._zipped else self.spawn(func, *item) - * g._imap_task_index = item_index - */ - __pyx_v_self->_outstanding_tasks = (__pyx_v_self->_outstanding_tasks + 1); - - /* "src/gevent/_imap.py":119 - * self._result_semaphore.acquire() - * self._outstanding_tasks += 1 - * g = self.spawn(func, item) if not self._zipped else self.spawn(func, *item) # <<<<<<<<<<<<<< - * g._imap_task_index = item_index - * g.rawlink(self._on_result) - */ - if (((!(__pyx_v_self->_zipped != 0)) != 0)) { - __Pyx_INCREF(__pyx_v_self->spawn); - __pyx_t_5 = __pyx_v_self->spawn; __pyx_t_6 = NULL; - __pyx_t_7 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - __pyx_t_7 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_func, __pyx_v_item}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 119, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_4); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_func, __pyx_v_item}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 119, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_4); - } else - #endif - { - __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 119, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - if (__pyx_t_6) { - __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; - } - __Pyx_INCREF(__pyx_v_func); - __Pyx_GIVEREF(__pyx_v_func); - PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_v_func); - __Pyx_INCREF(__pyx_v_item); - __Pyx_GIVEREF(__pyx_v_item); - PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_item); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 119, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_3 = __pyx_t_4; - __pyx_t_4 = 0; - } else { - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 119, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_INCREF(__pyx_v_func); - __Pyx_GIVEREF(__pyx_v_func); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_func); - __pyx_t_5 = __Pyx_PySequence_Tuple(__pyx_v_item); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 119, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_8 = PyNumber_Add(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 119, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_self->spawn, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 119, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_3 = __pyx_t_5; - __pyx_t_5 = 0; - } - __pyx_v_g = __pyx_t_3; - __pyx_t_3 = 0; - - /* "src/gevent/_imap.py":120 - * self._outstanding_tasks += 1 - * g = self.spawn(func, item) if not self._zipped else self.spawn(func, *item) - * g._imap_task_index = item_index # <<<<<<<<<<<<<< - * g.rawlink(self._on_result) - * return g - */ - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_item_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 120, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (__Pyx_PyObject_SetAttrStr(__pyx_v_g, __pyx_n_s_imap_task_index, __pyx_t_3) < 0) __PYX_ERR(0, 120, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "src/gevent/_imap.py":121 - * g = self.spawn(func, item) if not self._zipped else self.spawn(func, *item) - * g._imap_task_index = item_index - * g.rawlink(self._on_result) # <<<<<<<<<<<<<< - * return g - * - */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_g, __pyx_n_s_rawlink); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 121, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_on_result); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 121, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - } - } - if (!__pyx_t_4) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 121, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_GOTREF(__pyx_t_3); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_8}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 121, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_8}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 121, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } else - #endif - { - __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 121, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_GIVEREF(__pyx_t_8); - PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_8); - __pyx_t_8 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 121, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - } - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "src/gevent/_imap.py":122 - * g._imap_task_index = item_index - * g.rawlink(self._on_result) - * return g # <<<<<<<<<<<<<< - * - * def _run(self): # pylint:disable=method-hidden - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_g); - __pyx_r = __pyx_v_g; - goto __pyx_L0; - - /* "src/gevent/_imap.py":115 - * return self.queue.get() - * - * def _ispawn(self, func, item, item_index): # <<<<<<<<<<<<<< - * if self._result_semaphore is not None: - * self._result_semaphore.acquire() - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_AddTraceback("gevent.__imap.IMapUnordered._ispawn", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_g); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_imap.py":124 - * return g - * - * def _run(self): # pylint:disable=method-hidden # <<<<<<<<<<<<<< - * try: - * func = self.func - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6__imap_13IMapUnordered_7_run(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6__imap_13IMapUnordered_6_run[] = "IMapUnordered._run(self)"; -static PyMethodDef __pyx_mdef_6gevent_6__imap_13IMapUnordered_7_run = {"_run", (PyCFunction)__pyx_pw_6gevent_6__imap_13IMapUnordered_7_run, METH_NOARGS, __pyx_doc_6gevent_6__imap_13IMapUnordered_6_run}; -static PyObject *__pyx_pw_6gevent_6__imap_13IMapUnordered_7_run(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_run (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6__imap_13IMapUnordered_6_run(((struct __pyx_obj_6gevent_6__imap_IMapUnordered *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6__imap_13IMapUnordered_6_run(struct __pyx_obj_6gevent_6__imap_IMapUnordered *__pyx_v_self) { - PyObject *__pyx_v_func = NULL; - PyObject *__pyx_v_item = NULL; - PyObject *__pyx_v_e = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - Py_ssize_t __pyx_t_5; - PyObject *(*__pyx_t_6)(PyObject *); - PyObject *__pyx_t_7 = NULL; - int __pyx_t_8; - PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - int __pyx_t_11; - char const *__pyx_t_12; - PyObject *__pyx_t_13 = NULL; - PyObject *__pyx_t_14 = NULL; - PyObject *__pyx_t_15 = NULL; - __Pyx_RefNannySetupContext("_run", 0); - - /* "src/gevent/_imap.py":125 - * - * def _run(self): # pylint:disable=method-hidden - * try: # <<<<<<<<<<<<<< - * func = self.func - * for item in self.iterable: - */ - /*try:*/ { - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_t_3); - /*try:*/ { - - /* "src/gevent/_imap.py":126 - * def _run(self): # pylint:disable=method-hidden - * try: - * func = self.func # <<<<<<<<<<<<<< - * for item in self.iterable: - * self._max_index += 1 - */ - __pyx_t_4 = __pyx_v_self->func; - __Pyx_INCREF(__pyx_t_4); - __pyx_v_func = __pyx_t_4; - __pyx_t_4 = 0; - - /* "src/gevent/_imap.py":127 - * try: - * func = self.func - * for item in self.iterable: # <<<<<<<<<<<<<< - * self._max_index += 1 - * self._ispawn(func, item, self._max_index) - */ - if (likely(PyList_CheckExact(__pyx_v_self->iterable)) || PyTuple_CheckExact(__pyx_v_self->iterable)) { - __pyx_t_4 = __pyx_v_self->iterable; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0; - __pyx_t_6 = NULL; - } else { - __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_self->iterable); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 127, __pyx_L6_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 127, __pyx_L6_error) - } - for (;;) { - if (likely(!__pyx_t_6)) { - if (likely(PyList_CheckExact(__pyx_t_4))) { - if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_4)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 127, __pyx_L6_error) - #else - __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 127, __pyx_L6_error) - __Pyx_GOTREF(__pyx_t_7); - #endif - } else { - if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_4)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 127, __pyx_L6_error) - #else - __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 127, __pyx_L6_error) - __Pyx_GOTREF(__pyx_t_7); - #endif - } - } else { - __pyx_t_7 = __pyx_t_6(__pyx_t_4); - if (unlikely(!__pyx_t_7)) { - PyObject* exc_type = PyErr_Occurred(); - if (exc_type) { - if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 127, __pyx_L6_error) - } - break; - } - __Pyx_GOTREF(__pyx_t_7); - } - __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_7); - __pyx_t_7 = 0; - - /* "src/gevent/_imap.py":128 - * func = self.func - * for item in self.iterable: - * self._max_index += 1 # <<<<<<<<<<<<<< - * self._ispawn(func, item, self._max_index) - * self._on_finish(None) - */ - __pyx_v_self->_max_index = (__pyx_v_self->_max_index + 1); - - /* "src/gevent/_imap.py":129 - * for item in self.iterable: - * self._max_index += 1 - * self._ispawn(func, item, self._max_index) # <<<<<<<<<<<<<< - * self._on_finish(None) - * except BaseException as e: - */ - __pyx_t_7 = ((struct __pyx_vtabstruct_6gevent_6__imap_IMapUnordered *)__pyx_v_self->__pyx_base.__pyx_vtab)->_ispawn(__pyx_v_self, __pyx_v_func, __pyx_v_item, __pyx_v_self->_max_index); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 129, __pyx_L6_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - - /* "src/gevent/_imap.py":127 - * try: - * func = self.func - * for item in self.iterable: # <<<<<<<<<<<<<< - * self._max_index += 1 - * self._ispawn(func, item, self._max_index) - */ - } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "src/gevent/_imap.py":130 - * self._max_index += 1 - * self._ispawn(func, item, self._max_index) - * self._on_finish(None) # <<<<<<<<<<<<<< - * except BaseException as e: - * self._on_finish(e) - */ - __pyx_t_4 = ((struct __pyx_vtabstruct_6gevent_6__imap_IMapUnordered *)__pyx_v_self->__pyx_base.__pyx_vtab)->_on_finish(__pyx_v_self, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 130, __pyx_L6_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "src/gevent/_imap.py":125 - * - * def _run(self): # pylint:disable=method-hidden - * try: # <<<<<<<<<<<<<< - * func = self.func - * for item in self.iterable: - */ - } - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L11_try_end; - __pyx_L6_error:; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "src/gevent/_imap.py":131 - * self._ispawn(func, item, self._max_index) - * self._on_finish(None) - * except BaseException as e: # <<<<<<<<<<<<<< - * self._on_finish(e) - * raise - */ - __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException); - if (__pyx_t_8) { - __Pyx_AddTraceback("gevent.__imap.IMapUnordered._run", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_7, &__pyx_t_9) < 0) __PYX_ERR(0, 131, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GOTREF(__pyx_t_7); - __Pyx_GOTREF(__pyx_t_9); - __Pyx_INCREF(__pyx_t_7); - __pyx_v_e = __pyx_t_7; - - /* "src/gevent/_imap.py":132 - * self._on_finish(None) - * except BaseException as e: - * self._on_finish(e) # <<<<<<<<<<<<<< - * raise - * finally: - */ - __pyx_t_10 = ((struct __pyx_vtabstruct_6gevent_6__imap_IMapUnordered *)__pyx_v_self->__pyx_base.__pyx_vtab)->_on_finish(__pyx_v_self, __pyx_v_e); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 132, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_10); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - - /* "src/gevent/_imap.py":133 - * except BaseException as e: - * self._on_finish(e) - * raise # <<<<<<<<<<<<<< - * finally: - * self.spawn = None - */ - __Pyx_GIVEREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_7); - __Pyx_XGIVEREF(__pyx_t_9); - __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_7, __pyx_t_9); - __pyx_t_4 = 0; __pyx_t_7 = 0; __pyx_t_9 = 0; - __PYX_ERR(0, 133, __pyx_L8_except_error) - } - goto __pyx_L8_except_error; - __pyx_L8_except_error:; - - /* "src/gevent/_imap.py":125 - * - * def _run(self): # pylint:disable=method-hidden - * try: # <<<<<<<<<<<<<< - * func = self.func - * for item in self.iterable: - */ - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - goto __pyx_L4_error; - __pyx_L11_try_end:; - } - } - - /* "src/gevent/_imap.py":135 - * raise - * finally: - * self.spawn = None # <<<<<<<<<<<<<< - * self.func = None - * self.iterable = None - */ - /*finally:*/ { - /*normal exit:*/{ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->spawn); - __Pyx_DECREF(__pyx_v_self->spawn); - __pyx_v_self->spawn = Py_None; - - /* "src/gevent/_imap.py":136 - * finally: - * self.spawn = None - * self.func = None # <<<<<<<<<<<<<< - * self.iterable = None - * self._result_semaphore = None - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->func); - __Pyx_DECREF(__pyx_v_self->func); - __pyx_v_self->func = Py_None; - - /* "src/gevent/_imap.py":137 - * self.spawn = None - * self.func = None - * self.iterable = None # <<<<<<<<<<<<<< - * self._result_semaphore = None - * - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->iterable); - __Pyx_DECREF(__pyx_v_self->iterable); - __pyx_v_self->iterable = Py_None; - - /* "src/gevent/_imap.py":138 - * self.func = None - * self.iterable = None - * self._result_semaphore = None # <<<<<<<<<<<<<< - * - * def _on_result(self, greenlet): - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->_result_semaphore); - __Pyx_DECREF(((PyObject *)__pyx_v_self->_result_semaphore)); - __pyx_v_self->_result_semaphore = ((struct __pyx_obj_6gevent_11__semaphore_Semaphore *)Py_None); - goto __pyx_L5; - } - __pyx_L4_error:; - /*exception exit:*/{ - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15); - if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0)) __Pyx_ErrFetch(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1); - __Pyx_XGOTREF(__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_t_13); - __Pyx_XGOTREF(__pyx_t_14); - __Pyx_XGOTREF(__pyx_t_15); - __pyx_t_8 = __pyx_lineno; __pyx_t_11 = __pyx_clineno; __pyx_t_12 = __pyx_filename; - { - - /* "src/gevent/_imap.py":135 - * raise - * finally: - * self.spawn = None # <<<<<<<<<<<<<< - * self.func = None - * self.iterable = None - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->spawn); - __Pyx_DECREF(__pyx_v_self->spawn); - __pyx_v_self->spawn = Py_None; - - /* "src/gevent/_imap.py":136 - * finally: - * self.spawn = None - * self.func = None # <<<<<<<<<<<<<< - * self.iterable = None - * self._result_semaphore = None - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->func); - __Pyx_DECREF(__pyx_v_self->func); - __pyx_v_self->func = Py_None; - - /* "src/gevent/_imap.py":137 - * self.spawn = None - * self.func = None - * self.iterable = None # <<<<<<<<<<<<<< - * self._result_semaphore = None - * - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->iterable); - __Pyx_DECREF(__pyx_v_self->iterable); - __pyx_v_self->iterable = Py_None; - - /* "src/gevent/_imap.py":138 - * self.func = None - * self.iterable = None - * self._result_semaphore = None # <<<<<<<<<<<<<< - * - * def _on_result(self, greenlet): - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->_result_semaphore); - __Pyx_DECREF(((PyObject *)__pyx_v_self->_result_semaphore)); - __pyx_v_self->_result_semaphore = ((struct __pyx_obj_6gevent_11__semaphore_Semaphore *)Py_None); - } - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_13); - __Pyx_XGIVEREF(__pyx_t_14); - __Pyx_XGIVEREF(__pyx_t_15); - __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15); - } - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_ErrRestore(__pyx_t_3, __pyx_t_2, __pyx_t_1); - __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; - __pyx_lineno = __pyx_t_8; __pyx_clineno = __pyx_t_11; __pyx_filename = __pyx_t_12; - goto __pyx_L1_error; - } - __pyx_L5:; - } - - /* "src/gevent/_imap.py":124 - * return g - * - * def _run(self): # pylint:disable=method-hidden # <<<<<<<<<<<<<< - * try: - * func = self.func - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_9); - __Pyx_XDECREF(__pyx_t_10); - __Pyx_AddTraceback("gevent.__imap.IMapUnordered._run", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_func); - __Pyx_XDECREF(__pyx_v_item); - __Pyx_XDECREF(__pyx_v_e); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_imap.py":140 - * self._result_semaphore = None - * - * def _on_result(self, greenlet): # <<<<<<<<<<<<<< - * # This method will be called in the hub greenlet (we rawlink) - * self._outstanding_tasks -= 1 - */ - -static PyObject *__pyx_pw_6gevent_6__imap_13IMapUnordered_9_on_result(PyObject *__pyx_v_self, PyObject *__pyx_v_greenlet); /*proto*/ -static PyObject *__pyx_f_6gevent_6__imap_13IMapUnordered__on_result(struct __pyx_obj_6gevent_6__imap_IMapUnordered *__pyx_v_self, PyObject *__pyx_v_greenlet, int __pyx_skip_dispatch) { - int __pyx_v_count; - int __pyx_v_finished; - int __pyx_v_ready; - int __pyx_v_put_finished; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - int __pyx_t_7; - int __pyx_t_8; - __Pyx_RefNannySetupContext("_on_result", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_on_result); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_6__imap_13IMapUnordered_9_on_result)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (!__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_greenlet); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_greenlet}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_greenlet}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_INCREF(__pyx_v_greenlet); - __Pyx_GIVEREF(__pyx_v_greenlet); - PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_greenlet); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/_imap.py":142 - * def _on_result(self, greenlet): - * # This method will be called in the hub greenlet (we rawlink) - * self._outstanding_tasks -= 1 # <<<<<<<<<<<<<< - * count = self._outstanding_tasks - * finished = self.finished - */ - __pyx_v_self->_outstanding_tasks = (__pyx_v_self->_outstanding_tasks - 1); - - /* "src/gevent/_imap.py":143 - * # This method will be called in the hub greenlet (we rawlink) - * self._outstanding_tasks -= 1 - * count = self._outstanding_tasks # <<<<<<<<<<<<<< - * finished = self.finished - * ready = self.ready() - */ - __pyx_t_6 = __pyx_v_self->_outstanding_tasks; - __pyx_v_count = __pyx_t_6; - - /* "src/gevent/_imap.py":144 - * self._outstanding_tasks -= 1 - * count = self._outstanding_tasks - * finished = self.finished # <<<<<<<<<<<<<< - * ready = self.ready() - * put_finished = False - */ - __pyx_t_7 = __pyx_v_self->finished; - __pyx_v_finished = __pyx_t_7; - - /* "src/gevent/_imap.py":145 - * count = self._outstanding_tasks - * finished = self.finished - * ready = self.ready() # <<<<<<<<<<<<<< - * put_finished = False - * - */ - __pyx_v_ready = ((struct __pyx_vtabstruct_6gevent_6__imap_IMapUnordered *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.ready(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self), 0); - - /* "src/gevent/_imap.py":146 - * finished = self.finished - * ready = self.ready() - * put_finished = False # <<<<<<<<<<<<<< - * - * if ready and count <= 0 and not finished: - */ - __pyx_v_put_finished = 0; - - /* "src/gevent/_imap.py":148 - * put_finished = False - * - * if ready and count <= 0 and not finished: # <<<<<<<<<<<<<< - * finished = self.finished = True - * put_finished = True - */ - __pyx_t_8 = (__pyx_v_ready != 0); - if (__pyx_t_8) { - } else { - __pyx_t_7 = __pyx_t_8; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_8 = ((__pyx_v_count <= 0) != 0); - if (__pyx_t_8) { - } else { - __pyx_t_7 = __pyx_t_8; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_8 = ((!(__pyx_v_finished != 0)) != 0); - __pyx_t_7 = __pyx_t_8; - __pyx_L4_bool_binop_done:; - if (__pyx_t_7) { - - /* "src/gevent/_imap.py":149 - * - * if ready and count <= 0 and not finished: - * finished = self.finished = True # <<<<<<<<<<<<<< - * put_finished = True - * - */ - __pyx_v_finished = 1; - __pyx_v_self->finished = 1; - - /* "src/gevent/_imap.py":150 - * if ready and count <= 0 and not finished: - * finished = self.finished = True - * put_finished = True # <<<<<<<<<<<<<< - * - * if greenlet.successful(): - */ - __pyx_v_put_finished = 1; - - /* "src/gevent/_imap.py":148 - * put_finished = False - * - * if ready and count <= 0 and not finished: # <<<<<<<<<<<<<< - * finished = self.finished = True - * put_finished = True - */ - } - - /* "src/gevent/_imap.py":152 - * put_finished = True - * - * if greenlet.successful(): # <<<<<<<<<<<<<< - * self.queue.put(self._iqueue_value_for_success(greenlet)) - * else: - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_greenlet, __pyx_n_s_successful); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 152, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 152, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 152, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 152, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (__pyx_t_7) { - - /* "src/gevent/_imap.py":153 - * - * if greenlet.successful(): - * self.queue.put(self._iqueue_value_for_success(greenlet)) # <<<<<<<<<<<<<< - * else: - * self.queue.put(self._iqueue_value_for_failure(greenlet)) - */ - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_6__imap_IMapUnordered *)__pyx_v_self->__pyx_base.__pyx_vtab)->_iqueue_value_for_success(__pyx_v_self, __pyx_v_greenlet); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 153, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = ((struct __pyx_vtabstruct_6gevent_6_queue_UnboundQueue *)__pyx_v_self->queue->__pyx_base.__pyx_vtab)->__pyx_base.put(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self->queue), __pyx_t_1, 0, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 153, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_imap.py":152 - * put_finished = True - * - * if greenlet.successful(): # <<<<<<<<<<<<<< - * self.queue.put(self._iqueue_value_for_success(greenlet)) - * else: - */ - goto __pyx_L7; - } - - /* "src/gevent/_imap.py":155 - * self.queue.put(self._iqueue_value_for_success(greenlet)) - * else: - * self.queue.put(self._iqueue_value_for_failure(greenlet)) # <<<<<<<<<<<<<< - * - * if put_finished: - */ - /*else*/ { - __pyx_t_2 = ((struct __pyx_vtabstruct_6gevent_6__imap_IMapUnordered *)__pyx_v_self->__pyx_base.__pyx_vtab)->_iqueue_value_for_failure(__pyx_v_self, __pyx_v_greenlet); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 155, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_6_queue_UnboundQueue *)__pyx_v_self->queue->__pyx_base.__pyx_vtab)->__pyx_base.put(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self->queue), __pyx_t_2, 0, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 155, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __pyx_L7:; - - /* "src/gevent/_imap.py":157 - * self.queue.put(self._iqueue_value_for_failure(greenlet)) - * - * if put_finished: # <<<<<<<<<<<<<< - * self.queue.put(self._iqueue_value_for_self_finished()) - * - */ - __pyx_t_7 = (__pyx_v_put_finished != 0); - if (__pyx_t_7) { - - /* "src/gevent/_imap.py":158 - * - * if put_finished: - * self.queue.put(self._iqueue_value_for_self_finished()) # <<<<<<<<<<<<<< - * - * def _on_finish(self, exception): - */ - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_6__imap_IMapUnordered *)__pyx_v_self->__pyx_base.__pyx_vtab)->_iqueue_value_for_self_finished(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 158, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = ((struct __pyx_vtabstruct_6gevent_6_queue_UnboundQueue *)__pyx_v_self->queue->__pyx_base.__pyx_vtab)->__pyx_base.put(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self->queue), __pyx_t_1, 0, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 158, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_imap.py":157 - * self.queue.put(self._iqueue_value_for_failure(greenlet)) - * - * if put_finished: # <<<<<<<<<<<<<< - * self.queue.put(self._iqueue_value_for_self_finished()) - * - */ - } - - /* "src/gevent/_imap.py":140 - * self._result_semaphore = None - * - * def _on_result(self, greenlet): # <<<<<<<<<<<<<< - * # This method will be called in the hub greenlet (we rawlink) - * self._outstanding_tasks -= 1 - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent.__imap.IMapUnordered._on_result", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6__imap_13IMapUnordered_9_on_result(PyObject *__pyx_v_self, PyObject *__pyx_v_greenlet); /*proto*/ -static char __pyx_doc_6gevent_6__imap_13IMapUnordered_8_on_result[] = "IMapUnordered._on_result(self, greenlet)"; -static PyMethodDef __pyx_mdef_6gevent_6__imap_13IMapUnordered_9_on_result = {"_on_result", (PyCFunction)__pyx_pw_6gevent_6__imap_13IMapUnordered_9_on_result, METH_O, __pyx_doc_6gevent_6__imap_13IMapUnordered_8_on_result}; -static PyObject *__pyx_pw_6gevent_6__imap_13IMapUnordered_9_on_result(PyObject *__pyx_v_self, PyObject *__pyx_v_greenlet) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_on_result (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6__imap_13IMapUnordered_8_on_result(((struct __pyx_obj_6gevent_6__imap_IMapUnordered *)__pyx_v_self), ((PyObject *)__pyx_v_greenlet)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6__imap_13IMapUnordered_8_on_result(struct __pyx_obj_6gevent_6__imap_IMapUnordered *__pyx_v_self, PyObject *__pyx_v_greenlet) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_on_result", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_6__imap_13IMapUnordered__on_result(__pyx_v_self, __pyx_v_greenlet, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__imap.IMapUnordered._on_result", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_imap.py":160 - * self.queue.put(self._iqueue_value_for_self_finished()) - * - * def _on_finish(self, exception): # <<<<<<<<<<<<<< - * # Called in this greenlet. - * if self.finished: - */ - -static PyObject *__pyx_f_6gevent_6__imap_13IMapUnordered__on_finish(struct __pyx_obj_6gevent_6__imap_IMapUnordered *__pyx_v_self, PyObject *__pyx_v_exception) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("_on_finish", 0); - - /* "src/gevent/_imap.py":162 - * def _on_finish(self, exception): - * # Called in this greenlet. - * if self.finished: # <<<<<<<<<<<<<< - * return - * - */ - __pyx_t_1 = (__pyx_v_self->finished != 0); - if (__pyx_t_1) { - - /* "src/gevent/_imap.py":163 - * # Called in this greenlet. - * if self.finished: - * return # <<<<<<<<<<<<<< - * - * if exception is not None: - */ - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - /* "src/gevent/_imap.py":162 - * def _on_finish(self, exception): - * # Called in this greenlet. - * if self.finished: # <<<<<<<<<<<<<< - * return - * - */ - } - - /* "src/gevent/_imap.py":165 - * return - * - * if exception is not None: # <<<<<<<<<<<<<< - * self.finished = True - * self.queue.put(self._iqueue_value_for_self_failure(exception)) - */ - __pyx_t_1 = (__pyx_v_exception != Py_None); - __pyx_t_2 = (__pyx_t_1 != 0); - if (__pyx_t_2) { - - /* "src/gevent/_imap.py":166 - * - * if exception is not None: - * self.finished = True # <<<<<<<<<<<<<< - * self.queue.put(self._iqueue_value_for_self_failure(exception)) - * return - */ - __pyx_v_self->finished = 1; - - /* "src/gevent/_imap.py":167 - * if exception is not None: - * self.finished = True - * self.queue.put(self._iqueue_value_for_self_failure(exception)) # <<<<<<<<<<<<<< - * return - * - */ - __pyx_t_3 = ((struct __pyx_vtabstruct_6gevent_6__imap_IMapUnordered *)__pyx_v_self->__pyx_base.__pyx_vtab)->_iqueue_value_for_self_failure(__pyx_v_self, __pyx_v_exception); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 167, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = ((struct __pyx_vtabstruct_6gevent_6_queue_UnboundQueue *)__pyx_v_self->queue->__pyx_base.__pyx_vtab)->__pyx_base.put(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self->queue), __pyx_t_3, 0, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 167, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "src/gevent/_imap.py":168 - * self.finished = True - * self.queue.put(self._iqueue_value_for_self_failure(exception)) - * return # <<<<<<<<<<<<<< - * - * if self._outstanding_tasks <= 0: - */ - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - /* "src/gevent/_imap.py":165 - * return - * - * if exception is not None: # <<<<<<<<<<<<<< - * self.finished = True - * self.queue.put(self._iqueue_value_for_self_failure(exception)) - */ - } - - /* "src/gevent/_imap.py":170 - * return - * - * if self._outstanding_tasks <= 0: # <<<<<<<<<<<<<< - * self.finished = True - * self.queue.put(self._iqueue_value_for_self_finished()) - */ - __pyx_t_2 = ((__pyx_v_self->_outstanding_tasks <= 0) != 0); - if (__pyx_t_2) { - - /* "src/gevent/_imap.py":171 - * - * if self._outstanding_tasks <= 0: - * self.finished = True # <<<<<<<<<<<<<< - * self.queue.put(self._iqueue_value_for_self_finished()) - * - */ - __pyx_v_self->finished = 1; - - /* "src/gevent/_imap.py":172 - * if self._outstanding_tasks <= 0: - * self.finished = True - * self.queue.put(self._iqueue_value_for_self_finished()) # <<<<<<<<<<<<<< - * - * def _iqueue_value_for_success(self, greenlet): - */ - __pyx_t_4 = ((struct __pyx_vtabstruct_6gevent_6__imap_IMapUnordered *)__pyx_v_self->__pyx_base.__pyx_vtab)->_iqueue_value_for_self_finished(__pyx_v_self); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 172, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = ((struct __pyx_vtabstruct_6gevent_6_queue_UnboundQueue *)__pyx_v_self->queue->__pyx_base.__pyx_vtab)->__pyx_base.put(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self->queue), __pyx_t_4, 0, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 172, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "src/gevent/_imap.py":170 - * return - * - * if self._outstanding_tasks <= 0: # <<<<<<<<<<<<<< - * self.finished = True - * self.queue.put(self._iqueue_value_for_self_finished()) - */ - } - - /* "src/gevent/_imap.py":160 - * self.queue.put(self._iqueue_value_for_self_finished()) - * - * def _on_finish(self, exception): # <<<<<<<<<<<<<< - * # Called in this greenlet. - * if self.finished: - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent.__imap.IMapUnordered._on_finish", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_imap.py":174 - * self.queue.put(self._iqueue_value_for_self_finished()) - * - * def _iqueue_value_for_success(self, greenlet): # <<<<<<<<<<<<<< - * return greenlet.value - * - */ - -static PyObject *__pyx_f_6gevent_6__imap_13IMapUnordered__iqueue_value_for_success(CYTHON_UNUSED struct __pyx_obj_6gevent_6__imap_IMapUnordered *__pyx_v_self, PyObject *__pyx_v_greenlet) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_iqueue_value_for_success", 0); - - /* "src/gevent/_imap.py":175 - * - * def _iqueue_value_for_success(self, greenlet): - * return greenlet.value # <<<<<<<<<<<<<< - * - * def _iqueue_value_for_failure(self, greenlet): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_greenlet, __pyx_n_s_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 175, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/_imap.py":174 - * self.queue.put(self._iqueue_value_for_self_finished()) - * - * def _iqueue_value_for_success(self, greenlet): # <<<<<<<<<<<<<< - * return greenlet.value - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__imap.IMapUnordered._iqueue_value_for_success", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_imap.py":177 - * return greenlet.value - * - * def _iqueue_value_for_failure(self, greenlet): # <<<<<<<<<<<<<< - * return Failure(greenlet.exception, getattr(greenlet, '_raise_exception')) - * - */ - -static PyObject *__pyx_f_6gevent_6__imap_13IMapUnordered__iqueue_value_for_failure(CYTHON_UNUSED struct __pyx_obj_6gevent_6__imap_IMapUnordered *__pyx_v_self, PyObject *__pyx_v_greenlet) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("_iqueue_value_for_failure", 0); - - /* "src/gevent/_imap.py":178 - * - * def _iqueue_value_for_failure(self, greenlet): - * return Failure(greenlet.exception, getattr(greenlet, '_raise_exception')) # <<<<<<<<<<<<<< - * - * def _iqueue_value_for_self_finished(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_greenlet, __pyx_n_s_exception); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 178, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_GetAttr(__pyx_v_greenlet, __pyx_n_s_raise_exception_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 178, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 178, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); - __pyx_t_1 = 0; - __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6gevent_6__imap_Failure), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 178, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "src/gevent/_imap.py":177 - * return greenlet.value - * - * def _iqueue_value_for_failure(self, greenlet): # <<<<<<<<<<<<<< - * return Failure(greenlet.exception, getattr(greenlet, '_raise_exception')) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent.__imap.IMapUnordered._iqueue_value_for_failure", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_imap.py":180 - * return Failure(greenlet.exception, getattr(greenlet, '_raise_exception')) - * - * def _iqueue_value_for_self_finished(self): # <<<<<<<<<<<<<< - * return Failure(StopIteration()) - * - */ - -static PyObject *__pyx_f_6gevent_6__imap_13IMapUnordered__iqueue_value_for_self_finished(CYTHON_UNUSED struct __pyx_obj_6gevent_6__imap_IMapUnordered *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("_iqueue_value_for_self_finished", 0); - - /* "src/gevent/_imap.py":181 - * - * def _iqueue_value_for_self_finished(self): - * return Failure(StopIteration()) # <<<<<<<<<<<<<< - * - * def _iqueue_value_for_self_failure(self, exception): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_builtin_StopIteration); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 181, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_6gevent_6__imap_Failure), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 181, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "src/gevent/_imap.py":180 - * return Failure(greenlet.exception, getattr(greenlet, '_raise_exception')) - * - * def _iqueue_value_for_self_finished(self): # <<<<<<<<<<<<<< - * return Failure(StopIteration()) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent.__imap.IMapUnordered._iqueue_value_for_self_finished", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_imap.py":183 - * return Failure(StopIteration()) - * - * def _iqueue_value_for_self_failure(self, exception): # <<<<<<<<<<<<<< - * return Failure(exception, self._raise_exception) - * - */ - -static PyObject *__pyx_f_6gevent_6__imap_13IMapUnordered__iqueue_value_for_self_failure(struct __pyx_obj_6gevent_6__imap_IMapUnordered *__pyx_v_self, PyObject *__pyx_v_exception) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("_iqueue_value_for_self_failure", 0); - - /* "src/gevent/_imap.py":184 - * - * def _iqueue_value_for_self_failure(self, exception): - * return Failure(exception, self._raise_exception) # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_raise_exception_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 184, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 184, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_v_exception); - __Pyx_GIVEREF(__pyx_v_exception); - PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_exception); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1); - __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6gevent_6__imap_Failure), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 184, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/_imap.py":183 - * return Failure(StopIteration()) - * - * def _iqueue_value_for_self_failure(self, exception): # <<<<<<<<<<<<<< - * return Failure(exception, self._raise_exception) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent.__imap.IMapUnordered._iqueue_value_for_self_failure", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__imap.pxd":24 - * cdef int _max_index - * - * cdef readonly UnboundQueue queue # <<<<<<<<<<<<<< - * cdef readonly bint finished - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6__imap_13IMapUnordered_5queue_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_6__imap_13IMapUnordered_5queue_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6__imap_13IMapUnordered_5queue___get__(((struct __pyx_obj_6gevent_6__imap_IMapUnordered *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6__imap_13IMapUnordered_5queue___get__(struct __pyx_obj_6gevent_6__imap_IMapUnordered *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_v_self->queue)); - __pyx_r = ((PyObject *)__pyx_v_self->queue); - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__imap.pxd":25 - * - * cdef readonly UnboundQueue queue - * cdef readonly bint finished # <<<<<<<<<<<<<< - * - * cdef _inext(self) - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6__imap_13IMapUnordered_8finished_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_6__imap_13IMapUnordered_8finished_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6__imap_13IMapUnordered_8finished___get__(((struct __pyx_obj_6gevent_6__imap_IMapUnordered *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6__imap_13IMapUnordered_8finished___get__(struct __pyx_obj_6gevent_6__imap_IMapUnordered *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->finished); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 25, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__imap.IMapUnordered.finished.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_imap.py":192 - * # the order in which they finish. - * - * def __init__(self, *args, **kwargs): # <<<<<<<<<<<<<< - * # The result dictionary: {index: value} - * self._results = {} - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_6__imap_4IMap_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_6__imap_4IMap_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_args = 0; - PyObject *__pyx_v_kwargs = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1; - if (unlikely(__pyx_kwds)) { - __pyx_v_kwargs = PyDict_Copy(__pyx_kwds); if (unlikely(!__pyx_v_kwargs)) return -1; - __Pyx_GOTREF(__pyx_v_kwargs); - } else { - __pyx_v_kwargs = NULL; - } - __Pyx_INCREF(__pyx_args); - __pyx_v_args = __pyx_args; - __pyx_r = __pyx_pf_6gevent_6__imap_4IMap___init__(((struct __pyx_obj_6gevent_6__imap_IMap *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs); - - /* function exit code */ - __Pyx_XDECREF(__pyx_v_args); - __Pyx_XDECREF(__pyx_v_kwargs); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_6__imap_4IMap___init__(struct __pyx_obj_6gevent_6__imap_IMap *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("__init__", 0); - - /* "src/gevent/_imap.py":194 - * def __init__(self, *args, **kwargs): - * # The result dictionary: {index: value} - * self._results = {} # <<<<<<<<<<<<<< - * - * # The index of the result to return next. - */ - __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 194, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->_results); - __Pyx_DECREF(__pyx_v_self->_results); - __pyx_v_self->_results = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/_imap.py":197 - * - * # The index of the result to return next. - * self.index = 0 # <<<<<<<<<<<<<< - * IMapUnordered.__init__(self, *args, **kwargs) - * - */ - __pyx_v_self->index = 0; - - /* "src/gevent/_imap.py":198 - * # The index of the result to return next. - * self.index = 0 - * IMapUnordered.__init__(self, *args, **kwargs) # <<<<<<<<<<<<<< - * - * def _inext(self): - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_6gevent_6__imap_IMapUnordered), __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 198, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 198, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_self)); - __pyx_t_3 = PyNumber_Add(__pyx_t_2, __pyx_v_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 198, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 198, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_imap.py":192 - * # the order in which they finish. - * - * def __init__(self, *args, **kwargs): # <<<<<<<<<<<<<< - * # The result dictionary: {index: value} - * self._results = {} - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent.__imap.IMap.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_imap.py":200 - * IMapUnordered.__init__(self, *args, **kwargs) - * - * def _inext(self): # <<<<<<<<<<<<<< - * try: - * value = self._results.pop(self.index) - */ - -static PyObject *__pyx_f_6gevent_6__imap_4IMap__inext(struct __pyx_obj_6gevent_6__imap_IMap *__pyx_v_self) { - int __pyx_v_index; - PyObject *__pyx_v_value = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - PyObject *__pyx_t_11 = NULL; - PyObject *(*__pyx_t_12)(PyObject *); - int __pyx_t_13; - __Pyx_RefNannySetupContext("_inext", 0); - - /* "src/gevent/_imap.py":201 - * - * def _inext(self): - * try: # <<<<<<<<<<<<<< - * value = self._results.pop(self.index) - * except KeyError: - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_t_3); - /*try:*/ { - - /* "src/gevent/_imap.py":202 - * def _inext(self): - * try: - * value = self._results.pop(self.index) # <<<<<<<<<<<<<< - * except KeyError: - * # Wait for our index to finish. - */ - if (unlikely(__pyx_v_self->_results == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop"); - __PYX_ERR(0, 202, __pyx_L3_error) - } - __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_self->index); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 202, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyDict_Pop(__pyx_v_self->_results, __pyx_t_4, ((PyObject *)NULL)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 202, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_v_value = __pyx_t_5; - __pyx_t_5 = 0; - - /* "src/gevent/_imap.py":201 - * - * def _inext(self): - * try: # <<<<<<<<<<<<<< - * value = self._results.pop(self.index) - * except KeyError: - */ - } - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L8_try_end; - __pyx_L3_error:; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - - /* "src/gevent/_imap.py":203 - * try: - * value = self._results.pop(self.index) - * except KeyError: # <<<<<<<<<<<<<< - * # Wait for our index to finish. - * while 1: - */ - __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError); - if (__pyx_t_6) { - __Pyx_AddTraceback("gevent.__imap.IMap._inext", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(0, 203, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GOTREF(__pyx_t_7); - - /* "src/gevent/_imap.py":205 - * except KeyError: - * # Wait for our index to finish. - * while 1: # <<<<<<<<<<<<<< - * index, value = self.queue.get() - * if index == self.index: - */ - while (1) { - - /* "src/gevent/_imap.py":206 - * # Wait for our index to finish. - * while 1: - * index, value = self.queue.get() # <<<<<<<<<<<<<< - * if index == self.index: - * break - */ - __pyx_t_8 = ((struct __pyx_vtabstruct_6gevent_6_queue_UnboundQueue *)__pyx_v_self->__pyx_base.queue->__pyx_base.__pyx_vtab)->__pyx_base.get(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self->__pyx_base.queue), 0, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 206, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_8); - if ((likely(PyTuple_CheckExact(__pyx_t_8))) || (PyList_CheckExact(__pyx_t_8))) { - PyObject* sequence = __pyx_t_8; - Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); - if (unlikely(size != 2)) { - if (size > 2) __Pyx_RaiseTooManyValuesError(2); - else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 206, __pyx_L5_except_error) - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - if (likely(PyTuple_CheckExact(sequence))) { - __pyx_t_9 = PyTuple_GET_ITEM(sequence, 0); - __pyx_t_10 = PyTuple_GET_ITEM(sequence, 1); - } else { - __pyx_t_9 = PyList_GET_ITEM(sequence, 0); - __pyx_t_10 = PyList_GET_ITEM(sequence, 1); - } - __Pyx_INCREF(__pyx_t_9); - __Pyx_INCREF(__pyx_t_10); - #else - __pyx_t_9 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 206, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_10 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 206, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_10); - #endif - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } else { - Py_ssize_t index = -1; - __pyx_t_11 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 206, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_11); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_12 = Py_TYPE(__pyx_t_11)->tp_iternext; - index = 0; __pyx_t_9 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_9)) goto __pyx_L13_unpacking_failed; - __Pyx_GOTREF(__pyx_t_9); - index = 1; __pyx_t_10 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_10)) goto __pyx_L13_unpacking_failed; - __Pyx_GOTREF(__pyx_t_10); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_11), 2) < 0) __PYX_ERR(0, 206, __pyx_L5_except_error) - __pyx_t_12 = NULL; - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - goto __pyx_L14_unpacking_done; - __pyx_L13_unpacking_failed:; - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_12 = NULL; - if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 206, __pyx_L5_except_error) - __pyx_L14_unpacking_done:; - } - __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 206, __pyx_L5_except_error) - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_v_index = __pyx_t_6; - __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_10); - __pyx_t_10 = 0; - - /* "src/gevent/_imap.py":207 - * while 1: - * index, value = self.queue.get() - * if index == self.index: # <<<<<<<<<<<<<< - * break - * else: - */ - __pyx_t_13 = ((__pyx_v_index == __pyx_v_self->index) != 0); - if (__pyx_t_13) { - - /* "src/gevent/_imap.py":208 - * index, value = self.queue.get() - * if index == self.index: - * break # <<<<<<<<<<<<<< - * else: - * self._results[index] = value - */ - goto __pyx_L12_break; - - /* "src/gevent/_imap.py":207 - * while 1: - * index, value = self.queue.get() - * if index == self.index: # <<<<<<<<<<<<<< - * break - * else: - */ - } - - /* "src/gevent/_imap.py":210 - * break - * else: - * self._results[index] = value # <<<<<<<<<<<<<< - * self.index += 1 - * return value - */ - /*else*/ { - if (unlikely(__pyx_v_self->_results == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 210, __pyx_L5_except_error) - } - __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_index); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 210, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_8); - if (unlikely(PyDict_SetItem(__pyx_v_self->_results, __pyx_t_8, __pyx_v_value) < 0)) __PYX_ERR(0, 210, __pyx_L5_except_error) - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } - } - __pyx_L12_break:; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - goto __pyx_L4_exception_handled; - } - goto __pyx_L5_except_error; - __pyx_L5_except_error:; - - /* "src/gevent/_imap.py":201 - * - * def _inext(self): - * try: # <<<<<<<<<<<<<< - * value = self._results.pop(self.index) - * except KeyError: - */ - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - goto __pyx_L1_error; - __pyx_L4_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - __pyx_L8_try_end:; - } - - /* "src/gevent/_imap.py":211 - * else: - * self._results[index] = value - * self.index += 1 # <<<<<<<<<<<<<< - * return value - * - */ - __pyx_v_self->index = (__pyx_v_self->index + 1); - - /* "src/gevent/_imap.py":212 - * self._results[index] = value - * self.index += 1 - * return value # <<<<<<<<<<<<<< - * - * def _iqueue_value_for_success(self, greenlet): - */ - __Pyx_XDECREF(__pyx_r); - if (unlikely(!__pyx_v_value)) { __Pyx_RaiseUnboundLocalError("value"); __PYX_ERR(0, 212, __pyx_L1_error) } - __Pyx_INCREF(__pyx_v_value); - __pyx_r = __pyx_v_value; - goto __pyx_L0; - - /* "src/gevent/_imap.py":200 - * IMapUnordered.__init__(self, *args, **kwargs) - * - * def _inext(self): # <<<<<<<<<<<<<< - * try: - * value = self._results.pop(self.index) - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_XDECREF(__pyx_t_9); - __Pyx_XDECREF(__pyx_t_10); - __Pyx_XDECREF(__pyx_t_11); - __Pyx_AddTraceback("gevent.__imap.IMap._inext", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_value); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_imap.py":214 - * return value - * - * def _iqueue_value_for_success(self, greenlet): # <<<<<<<<<<<<<< - * return (greenlet._imap_task_index, IMapUnordered._iqueue_value_for_success(self, greenlet)) - * - */ - -static PyObject *__pyx_f_6gevent_6__imap_4IMap__iqueue_value_for_success(struct __pyx_obj_6gevent_6__imap_IMap *__pyx_v_self, PyObject *__pyx_v_greenlet) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("_iqueue_value_for_success", 0); - - /* "src/gevent/_imap.py":215 - * - * def _iqueue_value_for_success(self, greenlet): - * return (greenlet._imap_task_index, IMapUnordered._iqueue_value_for_success(self, greenlet)) # <<<<<<<<<<<<<< - * - * def _iqueue_value_for_failure(self, greenlet): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_greenlet, __pyx_n_s_imap_task_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 215, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __pyx_f_6gevent_6__imap_13IMapUnordered__iqueue_value_for_success(((struct __pyx_obj_6gevent_6__imap_IMapUnordered *)__pyx_v_self), __pyx_v_greenlet); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 215, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 215, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); - __pyx_t_1 = 0; - __pyx_t_2 = 0; - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - - /* "src/gevent/_imap.py":214 - * return value - * - * def _iqueue_value_for_success(self, greenlet): # <<<<<<<<<<<<<< - * return (greenlet._imap_task_index, IMapUnordered._iqueue_value_for_success(self, greenlet)) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent.__imap.IMap._iqueue_value_for_success", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_imap.py":217 - * return (greenlet._imap_task_index, IMapUnordered._iqueue_value_for_success(self, greenlet)) - * - * def _iqueue_value_for_failure(self, greenlet): # <<<<<<<<<<<<<< - * return (greenlet._imap_task_index, IMapUnordered._iqueue_value_for_failure(self, greenlet)) - * - */ - -static PyObject *__pyx_f_6gevent_6__imap_4IMap__iqueue_value_for_failure(struct __pyx_obj_6gevent_6__imap_IMap *__pyx_v_self, PyObject *__pyx_v_greenlet) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("_iqueue_value_for_failure", 0); - - /* "src/gevent/_imap.py":218 - * - * def _iqueue_value_for_failure(self, greenlet): - * return (greenlet._imap_task_index, IMapUnordered._iqueue_value_for_failure(self, greenlet)) # <<<<<<<<<<<<<< - * - * def _iqueue_value_for_self_finished(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_greenlet, __pyx_n_s_imap_task_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 218, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __pyx_f_6gevent_6__imap_13IMapUnordered__iqueue_value_for_failure(((struct __pyx_obj_6gevent_6__imap_IMapUnordered *)__pyx_v_self), __pyx_v_greenlet); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 218, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 218, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); - __pyx_t_1 = 0; - __pyx_t_2 = 0; - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - - /* "src/gevent/_imap.py":217 - * return (greenlet._imap_task_index, IMapUnordered._iqueue_value_for_success(self, greenlet)) - * - * def _iqueue_value_for_failure(self, greenlet): # <<<<<<<<<<<<<< - * return (greenlet._imap_task_index, IMapUnordered._iqueue_value_for_failure(self, greenlet)) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent.__imap.IMap._iqueue_value_for_failure", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_imap.py":220 - * return (greenlet._imap_task_index, IMapUnordered._iqueue_value_for_failure(self, greenlet)) - * - * def _iqueue_value_for_self_finished(self): # <<<<<<<<<<<<<< - * return (self._max_index + 1, IMapUnordered._iqueue_value_for_self_finished(self)) - * - */ - -static PyObject *__pyx_f_6gevent_6__imap_4IMap__iqueue_value_for_self_finished(struct __pyx_obj_6gevent_6__imap_IMap *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("_iqueue_value_for_self_finished", 0); - - /* "src/gevent/_imap.py":221 - * - * def _iqueue_value_for_self_finished(self): - * return (self._max_index + 1, IMapUnordered._iqueue_value_for_self_finished(self)) # <<<<<<<<<<<<<< - * - * def _iqueue_value_for_self_failure(self, exception): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_long((__pyx_v_self->__pyx_base._max_index + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 221, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __pyx_f_6gevent_6__imap_13IMapUnordered__iqueue_value_for_self_finished(((struct __pyx_obj_6gevent_6__imap_IMapUnordered *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 221, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 221, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); - __pyx_t_1 = 0; - __pyx_t_2 = 0; - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - - /* "src/gevent/_imap.py":220 - * return (greenlet._imap_task_index, IMapUnordered._iqueue_value_for_failure(self, greenlet)) - * - * def _iqueue_value_for_self_finished(self): # <<<<<<<<<<<<<< - * return (self._max_index + 1, IMapUnordered._iqueue_value_for_self_finished(self)) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent.__imap.IMap._iqueue_value_for_self_finished", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_imap.py":223 - * return (self._max_index + 1, IMapUnordered._iqueue_value_for_self_finished(self)) - * - * def _iqueue_value_for_self_failure(self, exception): # <<<<<<<<<<<<<< - * return (self._max_index + 1, IMapUnordered._iqueue_value_for_self_failure(self, exception)) - * - */ - -static PyObject *__pyx_f_6gevent_6__imap_4IMap__iqueue_value_for_self_failure(struct __pyx_obj_6gevent_6__imap_IMap *__pyx_v_self, PyObject *__pyx_v_exception) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("_iqueue_value_for_self_failure", 0); - - /* "src/gevent/_imap.py":224 - * - * def _iqueue_value_for_self_failure(self, exception): - * return (self._max_index + 1, IMapUnordered._iqueue_value_for_self_failure(self, exception)) # <<<<<<<<<<<<<< - * - * from gevent._util import import_c_accel - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_long((__pyx_v_self->__pyx_base._max_index + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 224, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __pyx_f_6gevent_6__imap_13IMapUnordered__iqueue_value_for_self_failure(((struct __pyx_obj_6gevent_6__imap_IMapUnordered *)__pyx_v_self), __pyx_v_exception); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 224, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 224, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); - __pyx_t_1 = 0; - __pyx_t_2 = 0; - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - - /* "src/gevent/_imap.py":223 - * return (self._max_index + 1, IMapUnordered._iqueue_value_for_self_finished(self)) - * - * def _iqueue_value_for_self_failure(self, exception): # <<<<<<<<<<<<<< - * return (self._max_index + 1, IMapUnordered._iqueue_value_for_self_failure(self, exception)) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent.__imap.IMap._iqueue_value_for_self_failure", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__greenlet_primitives.pxd":23 - * - * @cython.final - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - -static CYTHON_INLINE PyGreenlet *__pyx_f_6gevent_21__greenlet_primitives_getcurrent(void) { - PyGreenlet *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("getcurrent", 0); - - /* "gevent/__greenlet_primitives.pxd":24 - * @cython.final - * cdef inline greenlet getcurrent(): - * return PyGreenlet_GetCurrent() # <<<<<<<<<<<<<< - * - * cdef bint _greenlet_imported - */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __pyx_t_1 = ((PyObject *)PyGreenlet_GetCurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 24, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = ((PyGreenlet *)__pyx_t_1); - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "gevent/__greenlet_primitives.pxd":23 - * - * @cython.final - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__greenlet_primitives.getcurrent", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__greenlet_primitives.pxd":28 - * cdef bint _greenlet_imported - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - -static CYTHON_INLINE void __pyx_f_6gevent_21__greenlet_primitives_greenlet_init(void) { - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("greenlet_init", 0); - - /* "gevent/__greenlet_primitives.pxd":30 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - __pyx_t_1 = ((!(__pyx_v_6gevent_21__greenlet_primitives__greenlet_imported != 0)) != 0); - if (__pyx_t_1) { - - /* "gevent/__greenlet_primitives.pxd":31 - * global _greenlet_imported - * if not _greenlet_imported: - * PyGreenlet_Import() # <<<<<<<<<<<<<< - * _greenlet_imported = True - * - */ - PyGreenlet_Import(); - - /* "gevent/__greenlet_primitives.pxd":32 - * if not _greenlet_imported: - * PyGreenlet_Import() - * _greenlet_imported = True # <<<<<<<<<<<<<< - * - * cdef inline object _greenlet_switch(greenlet self): - */ - __pyx_v_6gevent_21__greenlet_primitives__greenlet_imported = 1; - - /* "gevent/__greenlet_primitives.pxd":30 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - } - - /* "gevent/__greenlet_primitives.pxd":28 - * cdef bint _greenlet_imported - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -/* "gevent/__greenlet_primitives.pxd":34 - * _greenlet_imported = True - * - * cdef inline object _greenlet_switch(greenlet self): # <<<<<<<<<<<<<< - * return PyGreenlet_Switch(self, NULL, NULL) - * - */ - -static CYTHON_INLINE PyObject *__pyx_f_6gevent_21__greenlet_primitives__greenlet_switch(PyGreenlet *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_greenlet_switch", 0); - - /* "gevent/__greenlet_primitives.pxd":35 - * - * cdef inline object _greenlet_switch(greenlet self): - * return PyGreenlet_Switch(self, NULL, NULL) # <<<<<<<<<<<<<< - * - * cdef class TrackedRawGreenlet(greenlet): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyGreenlet_Switch(__pyx_v_self, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 35, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "gevent/__greenlet_primitives.pxd":34 - * _greenlet_imported = True - * - * cdef inline object _greenlet_switch(greenlet self): # <<<<<<<<<<<<<< - * return PyGreenlet_Switch(self, NULL, NULL) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__greenlet_primitives._greenlet_switch", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__waiter.pxd":24 - * void PyGreenlet_Import() - * - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - -static CYTHON_INLINE PyGreenlet *__pyx_f_6gevent_8__waiter_getcurrent(void) { - PyGreenlet *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("getcurrent", 0); - - /* "gevent/__waiter.pxd":25 - * - * cdef inline greenlet getcurrent(): - * return PyGreenlet_GetCurrent() # <<<<<<<<<<<<<< - * - * cdef inline void greenlet_init(): - */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __pyx_t_1 = ((PyObject *)PyGreenlet_GetCurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 25, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = ((PyGreenlet *)__pyx_t_1); - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "gevent/__waiter.pxd":24 - * void PyGreenlet_Import() - * - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__waiter.getcurrent", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__waiter.pxd":27 - * return PyGreenlet_GetCurrent() - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - -static CYTHON_INLINE void __pyx_f_6gevent_8__waiter_greenlet_init(void) { - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("greenlet_init", 0); - - /* "gevent/__waiter.pxd":29 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - __pyx_t_1 = ((!(__pyx_v_6gevent_8__waiter__greenlet_imported != 0)) != 0); - if (__pyx_t_1) { - - /* "gevent/__waiter.pxd":30 - * global _greenlet_imported - * if not _greenlet_imported: - * PyGreenlet_Import() # <<<<<<<<<<<<<< - * _greenlet_imported = True - * - */ - PyGreenlet_Import(); - - /* "gevent/__waiter.pxd":31 - * if not _greenlet_imported: - * PyGreenlet_Import() - * _greenlet_imported = True # <<<<<<<<<<<<<< - * - * cdef class Waiter: - */ - __pyx_v_6gevent_8__waiter__greenlet_imported = 1; - - /* "gevent/__waiter.pxd":29 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - } - - /* "gevent/__waiter.pxd":27 - * return PyGreenlet_GetCurrent() - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -/* "gevent/_greenlet.pxd":27 - * - * @cython.final - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - -static CYTHON_INLINE PyGreenlet *__pyx_f_6gevent_9_greenlet_getcurrent(void) { - PyGreenlet *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("getcurrent", 0); - - /* "gevent/_greenlet.pxd":28 - * @cython.final - * cdef inline greenlet getcurrent(): - * return PyGreenlet_GetCurrent() # <<<<<<<<<<<<<< - * - * cdef bint _greenlet_imported - */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __pyx_t_1 = ((PyObject *)PyGreenlet_GetCurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 28, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = ((PyGreenlet *)__pyx_t_1); - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "gevent/_greenlet.pxd":27 - * - * @cython.final - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._greenlet.getcurrent", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/_greenlet.pxd":32 - * cdef bint _greenlet_imported - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - -static CYTHON_INLINE void __pyx_f_6gevent_9_greenlet_greenlet_init(void) { - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("greenlet_init", 0); - - /* "gevent/_greenlet.pxd":34 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - __pyx_t_1 = ((!(__pyx_v_6gevent_9_greenlet__greenlet_imported != 0)) != 0); - if (__pyx_t_1) { - - /* "gevent/_greenlet.pxd":35 - * global _greenlet_imported - * if not _greenlet_imported: - * PyGreenlet_Import() # <<<<<<<<<<<<<< - * _greenlet_imported = True - * - */ - PyGreenlet_Import(); - - /* "gevent/_greenlet.pxd":36 - * if not _greenlet_imported: - * PyGreenlet_Import() - * _greenlet_imported = True # <<<<<<<<<<<<<< - * - * cdef extern from "Python.h": - */ - __pyx_v_6gevent_9_greenlet__greenlet_imported = 1; - - /* "gevent/_greenlet.pxd":34 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - } - - /* "gevent/_greenlet.pxd":32 - * cdef bint _greenlet_imported - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -/* "gevent/__semaphore.pxd":19 - * void PyGreenlet_Import() - * - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - -static CYTHON_INLINE PyGreenlet *__pyx_f_6gevent_11__semaphore_getcurrent(void) { - PyGreenlet *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("getcurrent", 0); - - /* "gevent/__semaphore.pxd":20 - * - * cdef inline greenlet getcurrent(): - * return PyGreenlet_GetCurrent() # <<<<<<<<<<<<<< - * - * cdef inline void greenlet_init(): - */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __pyx_t_1 = ((PyObject *)PyGreenlet_GetCurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 20, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = ((PyGreenlet *)__pyx_t_1); - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "gevent/__semaphore.pxd":19 - * void PyGreenlet_Import() - * - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__semaphore.getcurrent", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__semaphore.pxd":22 - * return PyGreenlet_GetCurrent() - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - -static CYTHON_INLINE void __pyx_f_6gevent_11__semaphore_greenlet_init(void) { - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("greenlet_init", 0); - - /* "gevent/__semaphore.pxd":24 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - __pyx_t_1 = ((!(__pyx_v_6gevent_11__semaphore__greenlet_imported != 0)) != 0); - if (__pyx_t_1) { - - /* "gevent/__semaphore.pxd":25 - * global _greenlet_imported - * if not _greenlet_imported: - * PyGreenlet_Import() # <<<<<<<<<<<<<< - * _greenlet_imported = True - * - */ - PyGreenlet_Import(); - - /* "gevent/__semaphore.pxd":26 - * if not _greenlet_imported: - * PyGreenlet_Import() - * _greenlet_imported = True # <<<<<<<<<<<<<< - * - * - */ - __pyx_v_6gevent_11__semaphore__greenlet_imported = 1; - - /* "gevent/__semaphore.pxd":24 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - } - - /* "gevent/__semaphore.pxd":22 - * return PyGreenlet_GetCurrent() - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -/* "gevent/_event.pxd":27 - * void PyGreenlet_Import() - * - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - -static CYTHON_INLINE PyGreenlet *__pyx_f_6gevent_6_event_getcurrent(void) { - PyGreenlet *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("getcurrent", 0); - - /* "gevent/_event.pxd":28 - * - * cdef inline greenlet getcurrent(): - * return PyGreenlet_GetCurrent() # <<<<<<<<<<<<<< - * - * cdef inline void greenlet_init(): - */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __pyx_t_1 = ((PyObject *)PyGreenlet_GetCurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 28, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = ((PyGreenlet *)__pyx_t_1); - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "gevent/_event.pxd":27 - * void PyGreenlet_Import() - * - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._event.getcurrent", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/_event.pxd":30 - * return PyGreenlet_GetCurrent() - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - -static CYTHON_INLINE void __pyx_f_6gevent_6_event_greenlet_init(void) { - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("greenlet_init", 0); - - /* "gevent/_event.pxd":32 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - __pyx_t_1 = ((!(__pyx_v_6gevent_6_event__greenlet_imported != 0)) != 0); - if (__pyx_t_1) { - - /* "gevent/_event.pxd":33 - * global _greenlet_imported - * if not _greenlet_imported: - * PyGreenlet_Import() # <<<<<<<<<<<<<< - * _greenlet_imported = True - * - */ - PyGreenlet_Import(); - - /* "gevent/_event.pxd":34 - * if not _greenlet_imported: - * PyGreenlet_Import() - * _greenlet_imported = True # <<<<<<<<<<<<<< - * - * cdef void _init() - */ - __pyx_v_6gevent_6_event__greenlet_imported = 1; - - /* "gevent/_event.pxd":32 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - } - - /* "gevent/_event.pxd":30 - * return PyGreenlet_GetCurrent() - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -static PyObject *__pyx_tp_new_6gevent_6__imap_Failure(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - struct __pyx_obj_6gevent_6__imap_Failure *p; - PyObject *o; - o = (*t->tp_alloc)(t, 0); - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_6__imap_Failure *)o); - p->exc = Py_None; Py_INCREF(Py_None); - p->raise_exception = Py_None; Py_INCREF(Py_None); - return o; -} - -static void __pyx_tp_dealloc_6gevent_6__imap_Failure(PyObject *o) { - struct __pyx_obj_6gevent_6__imap_Failure *p = (struct __pyx_obj_6gevent_6__imap_Failure *)o; - PyObject_GC_UnTrack(o); - Py_CLEAR(p->exc); - Py_CLEAR(p->raise_exception); - (*Py_TYPE(o)->tp_free)(o); -} - -static int __pyx_tp_traverse_6gevent_6__imap_Failure(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_6gevent_6__imap_Failure *p = (struct __pyx_obj_6gevent_6__imap_Failure *)o; - if (p->exc) { - e = (*v)(p->exc, a); if (e) return e; - } - if (p->raise_exception) { - e = (*v)(p->raise_exception, a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_6gevent_6__imap_Failure(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_6gevent_6__imap_Failure *p = (struct __pyx_obj_6gevent_6__imap_Failure *)o; - tmp = ((PyObject*)p->exc); - p->exc = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->raise_exception); - p->raise_exception = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyObject *__pyx_getprop_6gevent_6__imap_7Failure_exc(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_6__imap_7Failure_3exc_1__get__(o); -} - -static PyMethodDef __pyx_methods_6gevent_6__imap_Failure[] = { - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_6gevent_6__imap_Failure[] = { - {(char *)"exc", __pyx_getprop_6gevent_6__imap_7Failure_exc, 0, (char *)0, 0}, - {0, 0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_6__imap_Failure = { - PyVarObject_HEAD_INIT(0, 0) - "gevent.__imap.Failure", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_6__imap_Failure), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_6__imap_Failure, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "Failure(exc, raise_exception=None)", /*tp_doc*/ - __pyx_tp_traverse_6gevent_6__imap_Failure, /*tp_traverse*/ - __pyx_tp_clear_6gevent_6__imap_Failure, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_6__imap_Failure, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_6gevent_6__imap_Failure, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_6__imap_7Failure_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_6__imap_Failure, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; -static struct __pyx_vtabstruct_6gevent_6__imap_IMapUnordered __pyx_vtable_6gevent_6__imap_IMapUnordered; - -static PyObject *__pyx_tp_new_6gevent_6__imap_IMapUnordered(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_obj_6gevent_6__imap_IMapUnordered *p; - PyObject *o = __pyx_ptype_6gevent_9_greenlet_Greenlet->tp_new(t, a, k); - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_6__imap_IMapUnordered *)o); - p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet*)__pyx_vtabptr_6gevent_6__imap_IMapUnordered; - p->func = Py_None; Py_INCREF(Py_None); - p->iterable = Py_None; Py_INCREF(Py_None); - p->spawn = Py_None; Py_INCREF(Py_None); - p->_result_semaphore = ((struct __pyx_obj_6gevent_11__semaphore_Semaphore *)Py_None); Py_INCREF(Py_None); - p->queue = ((struct __pyx_obj_6gevent_6_queue_UnboundQueue *)Py_None); Py_INCREF(Py_None); - return o; -} - -static void __pyx_tp_dealloc_6gevent_6__imap_IMapUnordered(PyObject *o) { - struct __pyx_obj_6gevent_6__imap_IMapUnordered *p = (struct __pyx_obj_6gevent_6__imap_IMapUnordered *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - #endif - PyObject_GC_UnTrack(o); - Py_CLEAR(p->func); - Py_CLEAR(p->iterable); - Py_CLEAR(p->spawn); - Py_CLEAR(p->_result_semaphore); - Py_CLEAR(p->queue); - PyObject_GC_Track(o); - if (likely(__pyx_ptype_6gevent_9_greenlet_Greenlet)) __pyx_ptype_6gevent_9_greenlet_Greenlet->tp_dealloc(o); else __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_6gevent_6__imap_IMapUnordered); -} - -static int __pyx_tp_traverse_6gevent_6__imap_IMapUnordered(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_6gevent_6__imap_IMapUnordered *p = (struct __pyx_obj_6gevent_6__imap_IMapUnordered *)o; - e = ((likely(__pyx_ptype_6gevent_9_greenlet_Greenlet)) ? ((__pyx_ptype_6gevent_9_greenlet_Greenlet->tp_traverse) ? __pyx_ptype_6gevent_9_greenlet_Greenlet->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_6gevent_6__imap_IMapUnordered)); if (e) return e; - if (p->func) { - e = (*v)(p->func, a); if (e) return e; - } - if (p->iterable) { - e = (*v)(p->iterable, a); if (e) return e; - } - if (p->spawn) { - e = (*v)(p->spawn, a); if (e) return e; - } - if (p->_result_semaphore) { - e = (*v)(((PyObject *)p->_result_semaphore), a); if (e) return e; - } - if (p->queue) { - e = (*v)(((PyObject *)p->queue), a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_6gevent_6__imap_IMapUnordered(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_6gevent_6__imap_IMapUnordered *p = (struct __pyx_obj_6gevent_6__imap_IMapUnordered *)o; - if (likely(__pyx_ptype_6gevent_9_greenlet_Greenlet)) { if (__pyx_ptype_6gevent_9_greenlet_Greenlet->tp_clear) __pyx_ptype_6gevent_9_greenlet_Greenlet->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_6gevent_6__imap_IMapUnordered); - tmp = ((PyObject*)p->func); - p->func = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->iterable); - p->iterable = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->spawn); - p->spawn = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->_result_semaphore); - p->_result_semaphore = ((struct __pyx_obj_6gevent_11__semaphore_Semaphore *)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->queue); - p->queue = ((struct __pyx_obj_6gevent_6_queue_UnboundQueue *)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyObject *__pyx_getprop_6gevent_6__imap_13IMapUnordered_queue(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_6__imap_13IMapUnordered_5queue_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_6__imap_13IMapUnordered_finished(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_6__imap_13IMapUnordered_8finished_1__get__(o); -} - -static PyMethodDef __pyx_methods_6gevent_6__imap_IMapUnordered[] = { - {"__next__", (PyCFunction)__pyx_pw_6gevent_6__imap_13IMapUnordered_5__next__, METH_NOARGS|METH_COEXIST, 0}, - {"_run", (PyCFunction)__pyx_pw_6gevent_6__imap_13IMapUnordered_7_run, METH_NOARGS, __pyx_doc_6gevent_6__imap_13IMapUnordered_6_run}, - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_6gevent_6__imap_IMapUnordered[] = { - {(char *)"queue", __pyx_getprop_6gevent_6__imap_13IMapUnordered_queue, 0, (char *)0, 0}, - {(char *)"finished", __pyx_getprop_6gevent_6__imap_13IMapUnordered_finished, 0, (char *)0, 0}, - {0, 0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_6__imap_IMapUnordered = { - PyVarObject_HEAD_INIT(0, 0) - "gevent.__imap.IMapUnordered", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_6__imap_IMapUnordered), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_6__imap_IMapUnordered, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "IMapUnordered(func, iterable, spawn, maxsize=None, _zipped=False)\n\n At iterator of map results.\n ", /*tp_doc*/ - __pyx_tp_traverse_6gevent_6__imap_IMapUnordered, /*tp_traverse*/ - __pyx_tp_clear_6gevent_6__imap_IMapUnordered, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - __pyx_pw_6gevent_6__imap_13IMapUnordered_3__iter__, /*tp_iter*/ - __pyx_pw_6gevent_6__imap_13IMapUnordered_5__next__, /*tp_iternext*/ - __pyx_methods_6gevent_6__imap_IMapUnordered, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_6gevent_6__imap_IMapUnordered, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_6__imap_13IMapUnordered_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_6__imap_IMapUnordered, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; -static struct __pyx_vtabstruct_6gevent_6__imap_IMap __pyx_vtable_6gevent_6__imap_IMap; - -static PyObject *__pyx_tp_new_6gevent_6__imap_IMap(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_obj_6gevent_6__imap_IMap *p; - PyObject *o = __pyx_tp_new_6gevent_6__imap_IMapUnordered(t, a, k); - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_6__imap_IMap *)o); - p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet*)__pyx_vtabptr_6gevent_6__imap_IMap; - p->_results = ((PyObject*)Py_None); Py_INCREF(Py_None); - return o; -} - -static void __pyx_tp_dealloc_6gevent_6__imap_IMap(PyObject *o) { - struct __pyx_obj_6gevent_6__imap_IMap *p = (struct __pyx_obj_6gevent_6__imap_IMap *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - #endif - PyObject_GC_UnTrack(o); - Py_CLEAR(p->_results); - PyObject_GC_Track(o); - __pyx_tp_dealloc_6gevent_6__imap_IMapUnordered(o); -} - -static int __pyx_tp_traverse_6gevent_6__imap_IMap(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_6gevent_6__imap_IMap *p = (struct __pyx_obj_6gevent_6__imap_IMap *)o; - e = __pyx_tp_traverse_6gevent_6__imap_IMapUnordered(o, v, a); if (e) return e; - if (p->_results) { - e = (*v)(p->_results, a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_6gevent_6__imap_IMap(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_6gevent_6__imap_IMap *p = (struct __pyx_obj_6gevent_6__imap_IMap *)o; - __pyx_tp_clear_6gevent_6__imap_IMapUnordered(o); - tmp = ((PyObject*)p->_results); - p->_results = ((PyObject*)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyMethodDef __pyx_methods_6gevent_6__imap_IMap[] = { - {0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_6__imap_IMap = { - PyVarObject_HEAD_INIT(0, 0) - "gevent.__imap.IMap", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_6__imap_IMap), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_6__imap_IMap, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "IMap(*args, **kwargs)", /*tp_doc*/ - __pyx_tp_traverse_6gevent_6__imap_IMap, /*tp_traverse*/ - __pyx_tp_clear_6gevent_6__imap_IMap, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_6__imap_13IMapUnordered_3__iter__, /*tp_iter*/ - #else - 0, /*tp_iter*/ - #endif - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_6__imap_13IMapUnordered_5__next__, /*tp_iternext*/ - #else - 0, /*tp_iternext*/ - #endif - __pyx_methods_6gevent_6__imap_IMap, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_6__imap_4IMap_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_6__imap_IMap, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; - -static PyMethodDef __pyx_methods[] = { - {0, 0, 0, 0} -}; - -#if PY_MAJOR_VERSION >= 3 -#if CYTHON_PEP489_MULTI_PHASE_INIT -static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ -static int __pyx_pymod_exec___imap(PyObject* module); /*proto*/ -static PyModuleDef_Slot __pyx_moduledef_slots[] = { - {Py_mod_create, (void*)__pyx_pymod_create}, - {Py_mod_exec, (void*)__pyx_pymod_exec___imap}, - {0, NULL} -}; -#endif - -static struct PyModuleDef __pyx_moduledef = { - PyModuleDef_HEAD_INIT, - "__imap", - __pyx_k_Iterators_across_greenlets_or_A, /* m_doc */ - #if CYTHON_PEP489_MULTI_PHASE_INIT - 0, /* m_size */ - #else - -1, /* m_size */ - #endif - __pyx_methods /* m_methods */, - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_moduledef_slots, /* m_slots */ - #else - NULL, /* m_reload */ - #endif - NULL, /* m_traverse */ - NULL, /* m_clear */ - NULL /* m_free */ -}; -#endif - -static __Pyx_StringTabEntry __pyx_string_tab[] = { - {&__pyx_n_s_BaseException, __pyx_k_BaseException, sizeof(__pyx_k_BaseException), 0, 0, 1, 1}, - {&__pyx_n_s_Greenlet, __pyx_k_Greenlet, sizeof(__pyx_k_Greenlet), 0, 0, 1, 1}, - {&__pyx_n_s_IMap, __pyx_k_IMap, sizeof(__pyx_k_IMap), 0, 0, 1, 1}, - {&__pyx_n_s_IMapUnordered, __pyx_k_IMapUnordered, sizeof(__pyx_k_IMapUnordered), 0, 0, 1, 1}, - {&__pyx_n_s_IMapUnordered__on_result, __pyx_k_IMapUnordered__on_result, sizeof(__pyx_k_IMapUnordered__on_result), 0, 0, 1, 1}, - {&__pyx_n_s_IMapUnordered__run, __pyx_k_IMapUnordered__run, sizeof(__pyx_k_IMapUnordered__run), 0, 0, 1, 1}, - {&__pyx_n_s_KeyError, __pyx_k_KeyError, sizeof(__pyx_k_KeyError), 0, 0, 1, 1}, - {&__pyx_n_s_Semaphore, __pyx_k_Semaphore, sizeof(__pyx_k_Semaphore), 0, 0, 1, 1}, - {&__pyx_n_s_StopIteration, __pyx_k_StopIteration, sizeof(__pyx_k_StopIteration), 0, 0, 1, 1}, - {&__pyx_n_s_UnboundQueue, __pyx_k_UnboundQueue, sizeof(__pyx_k_UnboundQueue), 0, 0, 1, 1}, - {&__pyx_n_s_all, __pyx_k_all, sizeof(__pyx_k_all), 0, 0, 1, 1}, - {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, - {&__pyx_n_s_e, __pyx_k_e, sizeof(__pyx_k_e), 0, 0, 1, 1}, - {&__pyx_n_s_exc, __pyx_k_exc, sizeof(__pyx_k_exc), 0, 0, 1, 1}, - {&__pyx_n_s_exception, __pyx_k_exception, sizeof(__pyx_k_exception), 0, 0, 1, 1}, - {&__pyx_n_s_func, __pyx_k_func, sizeof(__pyx_k_func), 0, 0, 1, 1}, - {&__pyx_n_s_gevent, __pyx_k_gevent, sizeof(__pyx_k_gevent), 0, 0, 1, 1}, - {&__pyx_n_s_gevent___imap, __pyx_k_gevent___imap, sizeof(__pyx_k_gevent___imap), 0, 0, 1, 1}, - {&__pyx_n_s_gevent__util, __pyx_k_gevent__util, sizeof(__pyx_k_gevent__util), 0, 0, 1, 1}, - {&__pyx_n_s_greenlet, __pyx_k_greenlet, sizeof(__pyx_k_greenlet), 0, 0, 1, 1}, - {&__pyx_n_s_imap_task_index, __pyx_k_imap_task_index, sizeof(__pyx_k_imap_task_index), 0, 0, 1, 1}, - {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, - {&__pyx_n_s_import_c_accel, __pyx_k_import_c_accel, sizeof(__pyx_k_import_c_accel), 0, 0, 1, 1}, - {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1}, - {&__pyx_n_s_item, __pyx_k_item, sizeof(__pyx_k_item), 0, 0, 1, 1}, - {&__pyx_n_s_iterable, __pyx_k_iterable, sizeof(__pyx_k_iterable), 0, 0, 1, 1}, - {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, - {&__pyx_n_s_maxsize, __pyx_k_maxsize, sizeof(__pyx_k_maxsize), 0, 0, 1, 1}, - {&__pyx_n_s_next, __pyx_k_next, sizeof(__pyx_k_next), 0, 0, 1, 1}, - {&__pyx_n_s_next_2, __pyx_k_next_2, sizeof(__pyx_k_next_2), 0, 0, 1, 1}, - {&__pyx_n_s_on_result, __pyx_k_on_result, sizeof(__pyx_k_on_result), 0, 0, 1, 1}, - {&__pyx_n_s_pop, __pyx_k_pop, sizeof(__pyx_k_pop), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1}, - {&__pyx_n_s_queue, __pyx_k_queue, sizeof(__pyx_k_queue), 0, 0, 1, 1}, - {&__pyx_n_s_raise_exception, __pyx_k_raise_exception, sizeof(__pyx_k_raise_exception), 0, 0, 1, 1}, - {&__pyx_n_s_raise_exception_2, __pyx_k_raise_exception_2, sizeof(__pyx_k_raise_exception_2), 0, 0, 1, 1}, - {&__pyx_n_s_rawlink, __pyx_k_rawlink, sizeof(__pyx_k_rawlink), 0, 0, 1, 1}, - {&__pyx_n_s_run, __pyx_k_run, sizeof(__pyx_k_run), 0, 0, 1, 1}, - {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1}, - {&__pyx_n_s_semaphore, __pyx_k_semaphore, sizeof(__pyx_k_semaphore), 0, 0, 1, 1}, - {&__pyx_n_s_slots, __pyx_k_slots, sizeof(__pyx_k_slots), 0, 0, 1, 1}, - {&__pyx_n_s_spawn, __pyx_k_spawn, sizeof(__pyx_k_spawn), 0, 0, 1, 1}, - {&__pyx_kp_s_src_gevent__imap_py, __pyx_k_src_gevent__imap_py, sizeof(__pyx_k_src_gevent__imap_py), 0, 0, 1, 0}, - {&__pyx_n_s_successful, __pyx_k_successful, sizeof(__pyx_k_successful), 0, 0, 1, 1}, - {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, - {&__pyx_n_s_value, __pyx_k_value, sizeof(__pyx_k_value), 0, 0, 1, 1}, - {&__pyx_n_s_zipped, __pyx_k_zipped, sizeof(__pyx_k_zipped), 0, 0, 1, 1}, - {0, 0, 0, 0, 0, 0, 0} -}; -static int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin___import__ = __Pyx_GetBuiltinName(__pyx_n_s_import); if (!__pyx_builtin___import__) __PYX_ERR(0, 23, __pyx_L1_error) - __pyx_builtin_BaseException = __Pyx_GetBuiltinName(__pyx_n_s_BaseException); if (!__pyx_builtin_BaseException) __PYX_ERR(0, 131, __pyx_L1_error) - __pyx_builtin_StopIteration = __Pyx_GetBuiltinName(__pyx_n_s_StopIteration); if (!__pyx_builtin_StopIteration) __PYX_ERR(0, 181, __pyx_L1_error) - __pyx_builtin_KeyError = __Pyx_GetBuiltinName(__pyx_n_s_KeyError); if (!__pyx_builtin_KeyError) __PYX_ERR(0, 203, __pyx_L1_error) - return 0; - __pyx_L1_error:; - return -1; -} - -static int __Pyx_InitCachedConstants(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - - /* "src/gevent/_imap.py":23 - * ] - * - * locals()['Greenlet'] = __import__('gevent').Greenlet # <<<<<<<<<<<<<< - * locals()['Semaphore'] = _semaphore.Semaphore - * locals()['UnboundQueue'] = queue.UnboundQueue - */ - __pyx_tuple_ = PyTuple_Pack(1, __pyx_n_s_gevent); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 23, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple_); - __Pyx_GIVEREF(__pyx_tuple_); - - /* "src/gevent/_imap.py":29 - * - * class Failure(object): - * __slots__ = ('exc', 'raise_exception') # <<<<<<<<<<<<<< - * - * def __init__(self, exc, raise_exception=None): - */ - __pyx_tuple__2 = PyTuple_Pack(2, __pyx_n_s_exc, __pyx_n_s_raise_exception); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 29, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__2); - __Pyx_GIVEREF(__pyx_tuple__2); - - /* "src/gevent/_imap.py":124 - * return g - * - * def _run(self): # pylint:disable=method-hidden # <<<<<<<<<<<<<< - * try: - * func = self.func - */ - __pyx_tuple__3 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_func, __pyx_n_s_item, __pyx_n_s_e); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 124, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__3); - __Pyx_GIVEREF(__pyx_tuple__3); - __pyx_codeobj__4 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__3, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__imap_py, __pyx_n_s_run, 124, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__4)) __PYX_ERR(0, 124, __pyx_L1_error) - - /* "src/gevent/_imap.py":140 - * self._result_semaphore = None - * - * def _on_result(self, greenlet): # <<<<<<<<<<<<<< - * # This method will be called in the hub greenlet (we rawlink) - * self._outstanding_tasks -= 1 - */ - __pyx_tuple__5 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_greenlet); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__5); - __Pyx_GIVEREF(__pyx_tuple__5); - __pyx_codeobj__6 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__5, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__imap_py, __pyx_n_s_on_result, 140, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__6)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_InitGlobals(void) { - __pyx_umethod_PyDict_Type_pop.type = (PyObject*)&PyDict_Type; - if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - return 0; - __pyx_L1_error:; - return -1; -} - -static int __Pyx_modinit_global_init_code(void); /*proto*/ -static int __Pyx_modinit_variable_export_code(void); /*proto*/ -static int __Pyx_modinit_function_export_code(void); /*proto*/ -static int __Pyx_modinit_type_init_code(void); /*proto*/ -static int __Pyx_modinit_type_import_code(void); /*proto*/ -static int __Pyx_modinit_variable_import_code(void); /*proto*/ -static int __Pyx_modinit_function_import_code(void); /*proto*/ - -static int __Pyx_modinit_global_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); - /*--- Global init code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_variable_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); - /*--- Variable export code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_function_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); - /*--- Function export code ---*/ - if (__Pyx_ExportFunction("_raise_exc", (void (*)(void))__pyx_f_6gevent_6__imap__raise_exc, "PyObject *(struct __pyx_obj_6gevent_6__imap_Failure *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_type_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); - /*--- Type init code ---*/ - if (PyType_Ready(&__pyx_type_6gevent_6__imap_Failure) < 0) __PYX_ERR(0, 28, __pyx_L1_error) - __pyx_type_6gevent_6__imap_Failure.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_6__imap_Failure.tp_dictoffset && __pyx_type_6gevent_6__imap_Failure.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_6__imap_Failure.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; - } - if (PyObject_SetAttrString(__pyx_m, "Failure", (PyObject *)&__pyx_type_6gevent_6__imap_Failure) < 0) __PYX_ERR(0, 28, __pyx_L1_error) - __pyx_ptype_6gevent_6__imap_Failure = &__pyx_type_6gevent_6__imap_Failure; - __pyx_ptype_6gevent_9_greenlet_Greenlet = __Pyx_ImportType("gevent._greenlet", "Greenlet", sizeof(struct __pyx_obj_6gevent_9_greenlet_Greenlet), 1); if (unlikely(!__pyx_ptype_6gevent_9_greenlet_Greenlet)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_vtabptr_6gevent_9_greenlet_Greenlet = (struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet*)__Pyx_GetVtable(__pyx_ptype_6gevent_9_greenlet_Greenlet->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_9_greenlet_Greenlet)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_vtabptr_6gevent_6__imap_IMapUnordered = &__pyx_vtable_6gevent_6__imap_IMapUnordered; - __pyx_vtable_6gevent_6__imap_IMapUnordered.__pyx_base = *__pyx_vtabptr_6gevent_9_greenlet_Greenlet; - __pyx_vtable_6gevent_6__imap_IMapUnordered._inext = (PyObject *(*)(struct __pyx_obj_6gevent_6__imap_IMapUnordered *))__pyx_f_6gevent_6__imap_13IMapUnordered__inext; - __pyx_vtable_6gevent_6__imap_IMapUnordered._ispawn = (PyObject *(*)(struct __pyx_obj_6gevent_6__imap_IMapUnordered *, PyObject *, PyObject *, int))__pyx_f_6gevent_6__imap_13IMapUnordered__ispawn; - __pyx_vtable_6gevent_6__imap_IMapUnordered._on_result = (PyObject *(*)(struct __pyx_obj_6gevent_6__imap_IMapUnordered *, PyObject *, int __pyx_skip_dispatch))__pyx_f_6gevent_6__imap_13IMapUnordered__on_result; - __pyx_vtable_6gevent_6__imap_IMapUnordered._on_finish = (PyObject *(*)(struct __pyx_obj_6gevent_6__imap_IMapUnordered *, PyObject *))__pyx_f_6gevent_6__imap_13IMapUnordered__on_finish; - __pyx_vtable_6gevent_6__imap_IMapUnordered._iqueue_value_for_success = (PyObject *(*)(struct __pyx_obj_6gevent_6__imap_IMapUnordered *, PyObject *))__pyx_f_6gevent_6__imap_13IMapUnordered__iqueue_value_for_success; - __pyx_vtable_6gevent_6__imap_IMapUnordered._iqueue_value_for_failure = (PyObject *(*)(struct __pyx_obj_6gevent_6__imap_IMapUnordered *, PyObject *))__pyx_f_6gevent_6__imap_13IMapUnordered__iqueue_value_for_failure; - __pyx_vtable_6gevent_6__imap_IMapUnordered._iqueue_value_for_self_finished = (PyObject *(*)(struct __pyx_obj_6gevent_6__imap_IMapUnordered *))__pyx_f_6gevent_6__imap_13IMapUnordered__iqueue_value_for_self_finished; - __pyx_vtable_6gevent_6__imap_IMapUnordered._iqueue_value_for_self_failure = (PyObject *(*)(struct __pyx_obj_6gevent_6__imap_IMapUnordered *, PyObject *))__pyx_f_6gevent_6__imap_13IMapUnordered__iqueue_value_for_self_failure; - __pyx_type_6gevent_6__imap_IMapUnordered.tp_base = __pyx_ptype_6gevent_9_greenlet_Greenlet; - if (PyType_Ready(&__pyx_type_6gevent_6__imap_IMapUnordered) < 0) __PYX_ERR(0, 43, __pyx_L1_error) - __pyx_type_6gevent_6__imap_IMapUnordered.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_6__imap_IMapUnordered.tp_dictoffset && __pyx_type_6gevent_6__imap_IMapUnordered.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_6__imap_IMapUnordered.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - #if CYTHON_COMPILING_IN_CPYTHON - { - PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_6gevent_6__imap_IMapUnordered, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 43, __pyx_L1_error) - if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) { - __pyx_wrapperbase_6gevent_6__imap_13IMapUnordered___init__ = *((PyWrapperDescrObject *)wrapper)->d_base; - __pyx_wrapperbase_6gevent_6__imap_13IMapUnordered___init__.doc = __pyx_doc_6gevent_6__imap_13IMapUnordered___init__; - ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_6gevent_6__imap_13IMapUnordered___init__; - } - } - #endif - if (__Pyx_SetVtable(__pyx_type_6gevent_6__imap_IMapUnordered.tp_dict, __pyx_vtabptr_6gevent_6__imap_IMapUnordered) < 0) __PYX_ERR(0, 43, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "IMapUnordered", (PyObject *)&__pyx_type_6gevent_6__imap_IMapUnordered) < 0) __PYX_ERR(0, 43, __pyx_L1_error) - __pyx_ptype_6gevent_6__imap_IMapUnordered = &__pyx_type_6gevent_6__imap_IMapUnordered; - __pyx_vtabptr_6gevent_6__imap_IMap = &__pyx_vtable_6gevent_6__imap_IMap; - __pyx_vtable_6gevent_6__imap_IMap.__pyx_base = *__pyx_vtabptr_6gevent_6__imap_IMapUnordered; - __pyx_vtable_6gevent_6__imap_IMap.__pyx_base._inext = (PyObject *(*)(struct __pyx_obj_6gevent_6__imap_IMapUnordered *))__pyx_f_6gevent_6__imap_4IMap__inext; - __pyx_vtable_6gevent_6__imap_IMap.__pyx_base._iqueue_value_for_success = (PyObject *(*)(struct __pyx_obj_6gevent_6__imap_IMapUnordered *, PyObject *))__pyx_f_6gevent_6__imap_4IMap__iqueue_value_for_success; - __pyx_vtable_6gevent_6__imap_IMap.__pyx_base._iqueue_value_for_failure = (PyObject *(*)(struct __pyx_obj_6gevent_6__imap_IMapUnordered *, PyObject *))__pyx_f_6gevent_6__imap_4IMap__iqueue_value_for_failure; - __pyx_vtable_6gevent_6__imap_IMap.__pyx_base._iqueue_value_for_self_finished = (PyObject *(*)(struct __pyx_obj_6gevent_6__imap_IMapUnordered *))__pyx_f_6gevent_6__imap_4IMap__iqueue_value_for_self_finished; - __pyx_vtable_6gevent_6__imap_IMap.__pyx_base._iqueue_value_for_self_failure = (PyObject *(*)(struct __pyx_obj_6gevent_6__imap_IMapUnordered *, PyObject *))__pyx_f_6gevent_6__imap_4IMap__iqueue_value_for_self_failure; - __pyx_type_6gevent_6__imap_IMap.tp_base = __pyx_ptype_6gevent_6__imap_IMapUnordered; - if (PyType_Ready(&__pyx_type_6gevent_6__imap_IMap) < 0) __PYX_ERR(0, 187, __pyx_L1_error) - __pyx_type_6gevent_6__imap_IMap.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_6__imap_IMap.tp_dictoffset && __pyx_type_6gevent_6__imap_IMap.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_6__imap_IMap.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - if (__Pyx_SetVtable(__pyx_type_6gevent_6__imap_IMap.tp_dict, __pyx_vtabptr_6gevent_6__imap_IMap) < 0) __PYX_ERR(0, 187, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "IMap", (PyObject *)&__pyx_type_6gevent_6__imap_IMap) < 0) __PYX_ERR(0, 187, __pyx_L1_error) - __pyx_ptype_6gevent_6__imap_IMap = &__pyx_type_6gevent_6__imap_IMap; - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_type_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); - /*--- Type import code ---*/ - __pyx_ptype_6gevent_7__ident_ref = __Pyx_ImportType("weakref", "ref", sizeof(PyWeakReference), 0); if (unlikely(!__pyx_ptype_6gevent_7__ident_ref)) __PYX_ERR(7, 5, __pyx_L1_error) - __pyx_ptype_6gevent_7__ident_ValuedWeakRef = __Pyx_ImportType("gevent.__ident", "ValuedWeakRef", sizeof(struct __pyx_obj_6gevent_7__ident_ValuedWeakRef), 1); if (unlikely(!__pyx_ptype_6gevent_7__ident_ValuedWeakRef)) __PYX_ERR(7, 15, __pyx_L1_error) - __pyx_ptype_6gevent_7__ident_IdentRegistry = __Pyx_ImportType("gevent.__ident", "IdentRegistry", sizeof(struct __pyx_obj_6gevent_7__ident_IdentRegistry), 1); if (unlikely(!__pyx_ptype_6gevent_7__ident_IdentRegistry)) __PYX_ERR(7, 19, __pyx_L1_error) - __pyx_vtabptr_6gevent_7__ident_IdentRegistry = (struct __pyx_vtabstruct_6gevent_7__ident_IdentRegistry*)__Pyx_GetVtable(__pyx_ptype_6gevent_7__ident_IdentRegistry->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_7__ident_IdentRegistry)) __PYX_ERR(7, 19, __pyx_L1_error) - __pyx_ptype_6gevent_21__greenlet_primitives_greenlet = __Pyx_ImportType("greenlet", "greenlet", sizeof(PyGreenlet), 0); if (unlikely(!__pyx_ptype_6gevent_21__greenlet_primitives_greenlet)) __PYX_ERR(2, 12, __pyx_L1_error) - __pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet = __Pyx_ImportType("gevent.__greenlet_primitives", "TrackedRawGreenlet", sizeof(struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet), 1); if (unlikely(!__pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet)) __PYX_ERR(2, 37, __pyx_L1_error) - __pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop = __Pyx_ImportType("gevent.__greenlet_primitives", "SwitchOutGreenletWithLoop", sizeof(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop), 1); if (unlikely(!__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop)) __PYX_ERR(2, 40, __pyx_L1_error) - __pyx_vtabptr_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop = (struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop*)__Pyx_GetVtable(__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop)) __PYX_ERR(2, 40, __pyx_L1_error) - __pyx_ptype_6gevent_8__waiter_greenlet = __Pyx_ImportType("greenlet", "greenlet", sizeof(PyGreenlet), 0); if (unlikely(!__pyx_ptype_6gevent_8__waiter_greenlet)) __PYX_ERR(3, 15, __pyx_L1_error) - __pyx_ptype_6gevent_8__waiter_Waiter = __Pyx_ImportType("gevent.__waiter", "Waiter", sizeof(struct __pyx_obj_6gevent_8__waiter_Waiter), 1); if (unlikely(!__pyx_ptype_6gevent_8__waiter_Waiter)) __PYX_ERR(3, 33, __pyx_L1_error) - __pyx_vtabptr_6gevent_8__waiter_Waiter = (struct __pyx_vtabstruct_6gevent_8__waiter_Waiter*)__Pyx_GetVtable(__pyx_ptype_6gevent_8__waiter_Waiter->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_8__waiter_Waiter)) __PYX_ERR(3, 33, __pyx_L1_error) - __pyx_ptype_6gevent_8__waiter_MultipleWaiter = __Pyx_ImportType("gevent.__waiter", "MultipleWaiter", sizeof(struct __pyx_obj_6gevent_8__waiter_MultipleWaiter), 1); if (unlikely(!__pyx_ptype_6gevent_8__waiter_MultipleWaiter)) __PYX_ERR(3, 47, __pyx_L1_error) - __pyx_vtabptr_6gevent_8__waiter_MultipleWaiter = (struct __pyx_vtabstruct_6gevent_8__waiter_MultipleWaiter*)__Pyx_GetVtable(__pyx_ptype_6gevent_8__waiter_MultipleWaiter->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_8__waiter_MultipleWaiter)) __PYX_ERR(3, 47, __pyx_L1_error) - __pyx_ptype_6gevent_9_greenlet_greenlet = __Pyx_ImportType("greenlet", "greenlet", sizeof(PyGreenlet), 0); if (unlikely(!__pyx_ptype_6gevent_9_greenlet_greenlet)) __PYX_ERR(4, 17, __pyx_L1_error) - __pyx_ptype_6gevent_9_greenlet_CodeType = __Pyx_ImportType("types", "CodeType", sizeof(PyCodeObject), 0); if (unlikely(!__pyx_ptype_6gevent_9_greenlet_CodeType)) __PYX_ERR(4, 40, __pyx_L1_error) - __pyx_ptype_6gevent_9_greenlet_FrameType = __Pyx_ImportType("types", "FrameType", sizeof(PyFrameObject), 0); if (unlikely(!__pyx_ptype_6gevent_9_greenlet_FrameType)) __PYX_ERR(4, 45, __pyx_L1_error) - __pyx_ptype_6gevent_9_greenlet_SpawnedLink = __Pyx_ImportType("gevent._greenlet", "SpawnedLink", sizeof(struct __pyx_obj_6gevent_9_greenlet_SpawnedLink), 1); if (unlikely(!__pyx_ptype_6gevent_9_greenlet_SpawnedLink)) __PYX_ERR(4, 56, __pyx_L1_error) - __pyx_ptype_6gevent_9_greenlet_SuccessSpawnedLink = __Pyx_ImportType("gevent._greenlet", "SuccessSpawnedLink", sizeof(struct __pyx_obj_6gevent_9_greenlet_SuccessSpawnedLink), 1); if (unlikely(!__pyx_ptype_6gevent_9_greenlet_SuccessSpawnedLink)) __PYX_ERR(4, 61, __pyx_L1_error) - __pyx_ptype_6gevent_9_greenlet_FailureSpawnedLink = __Pyx_ImportType("gevent._greenlet", "FailureSpawnedLink", sizeof(struct __pyx_obj_6gevent_9_greenlet_FailureSpawnedLink), 1); if (unlikely(!__pyx_ptype_6gevent_9_greenlet_FailureSpawnedLink)) __PYX_ERR(4, 65, __pyx_L1_error) - __pyx_ptype_6gevent_9_greenlet__Frame = __Pyx_ImportType("gevent._greenlet", "_Frame", sizeof(struct __pyx_obj_6gevent_9_greenlet__Frame), 1); if (unlikely(!__pyx_ptype_6gevent_9_greenlet__Frame)) __PYX_ERR(4, 71, __pyx_L1_error) - __pyx_ptype_6gevent_9_greenlet__dummy_event = __Pyx_ImportType("gevent._greenlet", "_dummy_event", sizeof(struct __pyx_obj_6gevent_9_greenlet__dummy_event), 1); if (unlikely(!__pyx_ptype_6gevent_9_greenlet__dummy_event)) __PYX_ERR(4, 157, __pyx_L1_error) - __pyx_vtabptr_6gevent_9_greenlet__dummy_event = (struct __pyx_vtabstruct_6gevent_9_greenlet__dummy_event*)__Pyx_GetVtable(__pyx_ptype_6gevent_9_greenlet__dummy_event->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_9_greenlet__dummy_event)) __PYX_ERR(4, 157, __pyx_L1_error) - __pyx_ptype_6gevent_11__semaphore_greenlet = __Pyx_ImportType("greenlet", "greenlet", sizeof(PyGreenlet), 0); if (unlikely(!__pyx_ptype_6gevent_11__semaphore_greenlet)) __PYX_ERR(5, 10, __pyx_L1_error) - __pyx_ptype_6gevent_11__semaphore_Semaphore = __Pyx_ImportType("gevent.__semaphore", "Semaphore", sizeof(struct __pyx_obj_6gevent_11__semaphore_Semaphore), 1); if (unlikely(!__pyx_ptype_6gevent_11__semaphore_Semaphore)) __PYX_ERR(5, 32, __pyx_L1_error) - __pyx_vtabptr_6gevent_11__semaphore_Semaphore = (struct __pyx_vtabstruct_6gevent_11__semaphore_Semaphore*)__Pyx_GetVtable(__pyx_ptype_6gevent_11__semaphore_Semaphore->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_11__semaphore_Semaphore)) __PYX_ERR(5, 32, __pyx_L1_error) - __pyx_ptype_6gevent_11__semaphore_BoundedSemaphore = __Pyx_ImportType("gevent.__semaphore", "BoundedSemaphore", sizeof(struct __pyx_obj_6gevent_11__semaphore_BoundedSemaphore), 1); if (unlikely(!__pyx_ptype_6gevent_11__semaphore_BoundedSemaphore)) __PYX_ERR(5, 51, __pyx_L1_error) - __pyx_vtabptr_6gevent_11__semaphore_BoundedSemaphore = (struct __pyx_vtabstruct_6gevent_11__semaphore_BoundedSemaphore*)__Pyx_GetVtable(__pyx_ptype_6gevent_11__semaphore_BoundedSemaphore->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_11__semaphore_BoundedSemaphore)) __PYX_ERR(5, 51, __pyx_L1_error) - __pyx_ptype_6gevent_6_event_greenlet = __Pyx_ImportType("greenlet", "greenlet", sizeof(PyGreenlet), 0); if (unlikely(!__pyx_ptype_6gevent_6_event_greenlet)) __PYX_ERR(6, 18, __pyx_L1_error) - __pyx_ptype_6gevent_6_event__AbstractLinkable = __Pyx_ImportType("gevent._event", "_AbstractLinkable", sizeof(struct __pyx_obj_6gevent_6_event__AbstractLinkable), 1); if (unlikely(!__pyx_ptype_6gevent_6_event__AbstractLinkable)) __PYX_ERR(6, 38, __pyx_L1_error) - __pyx_vtabptr_6gevent_6_event__AbstractLinkable = (struct __pyx_vtabstruct_6gevent_6_event__AbstractLinkable*)__Pyx_GetVtable(__pyx_ptype_6gevent_6_event__AbstractLinkable->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_6_event__AbstractLinkable)) __PYX_ERR(6, 38, __pyx_L1_error) - __pyx_ptype_6gevent_6_event_Event = __Pyx_ImportType("gevent._event", "Event", sizeof(struct __pyx_obj_6gevent_6_event_Event), 1); if (unlikely(!__pyx_ptype_6gevent_6_event_Event)) __PYX_ERR(6, 60, __pyx_L1_error) - __pyx_vtabptr_6gevent_6_event_Event = (struct __pyx_vtabstruct_6gevent_6_event_Event*)__Pyx_GetVtable(__pyx_ptype_6gevent_6_event_Event->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_6_event_Event)) __PYX_ERR(6, 60, __pyx_L1_error) - __pyx_ptype_6gevent_6_event_AsyncResult = __Pyx_ImportType("gevent._event", "AsyncResult", sizeof(struct __pyx_obj_6gevent_6_event_AsyncResult), 1); if (unlikely(!__pyx_ptype_6gevent_6_event_AsyncResult)) __PYX_ERR(6, 63, __pyx_L1_error) - __pyx_vtabptr_6gevent_6_event_AsyncResult = (struct __pyx_vtabstruct_6gevent_6_event_AsyncResult*)__Pyx_GetVtable(__pyx_ptype_6gevent_6_event_AsyncResult->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_6_event_AsyncResult)) __PYX_ERR(6, 63, __pyx_L1_error) - __pyx_ptype_6gevent_6_queue_ItemWaiter = __Pyx_ImportType("gevent._queue", "ItemWaiter", sizeof(struct __pyx_obj_6gevent_6_queue_ItemWaiter), 1); if (unlikely(!__pyx_ptype_6gevent_6_queue_ItemWaiter)) __PYX_ERR(8, 14, __pyx_L1_error) - __pyx_vtabptr_6gevent_6_queue_ItemWaiter = (struct __pyx_vtabstruct_6gevent_6_queue_ItemWaiter*)__Pyx_GetVtable(__pyx_ptype_6gevent_6_queue_ItemWaiter->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_6_queue_ItemWaiter)) __PYX_ERR(8, 14, __pyx_L1_error) - __pyx_ptype_6gevent_6_queue_Queue = __Pyx_ImportType("gevent._queue", "Queue", sizeof(struct __pyx_obj_6gevent_6_queue_Queue), 1); if (unlikely(!__pyx_ptype_6gevent_6_queue_Queue)) __PYX_ERR(8, 18, __pyx_L1_error) - __pyx_vtabptr_6gevent_6_queue_Queue = (struct __pyx_vtabstruct_6gevent_6_queue_Queue*)__Pyx_GetVtable(__pyx_ptype_6gevent_6_queue_Queue->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_6_queue_Queue)) __PYX_ERR(8, 18, __pyx_L1_error) - __pyx_ptype_6gevent_6_queue_UnboundQueue = __Pyx_ImportType("gevent._queue", "UnboundQueue", sizeof(struct __pyx_obj_6gevent_6_queue_UnboundQueue), 1); if (unlikely(!__pyx_ptype_6gevent_6_queue_UnboundQueue)) __PYX_ERR(8, 50, __pyx_L1_error) - __pyx_vtabptr_6gevent_6_queue_UnboundQueue = (struct __pyx_vtabstruct_6gevent_6_queue_UnboundQueue*)__Pyx_GetVtable(__pyx_ptype_6gevent_6_queue_UnboundQueue->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_6_queue_UnboundQueue)) __PYX_ERR(8, 50, __pyx_L1_error) - __pyx_ptype_6gevent_6_queue_PriorityQueue = __Pyx_ImportType("gevent._queue", "PriorityQueue", sizeof(struct __pyx_obj_6gevent_6_queue_PriorityQueue), 1); if (unlikely(!__pyx_ptype_6gevent_6_queue_PriorityQueue)) __PYX_ERR(8, 53, __pyx_L1_error) - __pyx_vtabptr_6gevent_6_queue_PriorityQueue = (struct __pyx_vtabstruct_6gevent_6_queue_PriorityQueue*)__Pyx_GetVtable(__pyx_ptype_6gevent_6_queue_PriorityQueue->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_6_queue_PriorityQueue)) __PYX_ERR(8, 53, __pyx_L1_error) - __pyx_ptype_6gevent_6_queue_LifoQueue = __Pyx_ImportType("gevent._queue", "LifoQueue", sizeof(struct __pyx_obj_6gevent_6_queue_LifoQueue), 1); if (unlikely(!__pyx_ptype_6gevent_6_queue_LifoQueue)) __PYX_ERR(8, 56, __pyx_L1_error) - __pyx_vtabptr_6gevent_6_queue_LifoQueue = (struct __pyx_vtabstruct_6gevent_6_queue_LifoQueue*)__Pyx_GetVtable(__pyx_ptype_6gevent_6_queue_LifoQueue->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_6_queue_LifoQueue)) __PYX_ERR(8, 56, __pyx_L1_error) - __pyx_ptype_6gevent_6_queue_JoinableQueue = __Pyx_ImportType("gevent._queue", "JoinableQueue", sizeof(struct __pyx_obj_6gevent_6_queue_JoinableQueue), 1); if (unlikely(!__pyx_ptype_6gevent_6_queue_JoinableQueue)) __PYX_ERR(8, 59, __pyx_L1_error) - __pyx_vtabptr_6gevent_6_queue_JoinableQueue = (struct __pyx_vtabstruct_6gevent_6_queue_JoinableQueue*)__Pyx_GetVtable(__pyx_ptype_6gevent_6_queue_JoinableQueue->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_6_queue_JoinableQueue)) __PYX_ERR(8, 59, __pyx_L1_error) - __pyx_ptype_6gevent_6_queue_Channel = __Pyx_ImportType("gevent._queue", "Channel", sizeof(struct __pyx_obj_6gevent_6_queue_Channel), 1); if (unlikely(!__pyx_ptype_6gevent_6_queue_Channel)) __PYX_ERR(8, 64, __pyx_L1_error) - __pyx_vtabptr_6gevent_6_queue_Channel = (struct __pyx_vtabstruct_6gevent_6_queue_Channel*)__Pyx_GetVtable(__pyx_ptype_6gevent_6_queue_Channel->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_6_queue_Channel)) __PYX_ERR(8, 64, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_variable_import_code(void) { - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); - /*--- Variable import code ---*/ - __pyx_t_1 = __Pyx_ImportModule("gevent.__ident"); if (!__pyx_t_1) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_1, "heappop", (void **)&__pyx_vp_6gevent_7__ident_heappop, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_1, "heappush", (void **)&__pyx_vp_6gevent_7__ident_heappush, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_1, "WeakKeyDictionary", (void **)&__pyx_vp_6gevent_7__ident_WeakKeyDictionary, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_2 = __Pyx_ImportModule("gevent.__greenlet_primitives"); if (!__pyx_t_2) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_2, "wref", (void **)&__pyx_vp_6gevent_21__greenlet_primitives_wref, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_2, "BlockingSwitchOutError", (void **)&__pyx_vp_6gevent_21__greenlet_primitives_BlockingSwitchOutError, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_2, "_greenlet_imported", (void **)&__pyx_vp_6gevent_21__greenlet_primitives__greenlet_imported, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_3 = __Pyx_ImportModule("gevent.__hub_local"); if (!__pyx_t_3) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_3, "_threadlocal", (void **)&__pyx_vp_6gevent_11__hub_local__threadlocal, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_4 = __Pyx_ImportModule("gevent.__waiter"); if (!__pyx_t_4) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_4, "sys", (void **)&__pyx_vp_6gevent_8__waiter_sys, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_4, "ConcurrentObjectUseError", (void **)&__pyx_vp_6gevent_8__waiter_ConcurrentObjectUseError, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_4, "_greenlet_imported", (void **)&__pyx_vp_6gevent_8__waiter__greenlet_imported, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_4, "_NONE", (void **)&__pyx_vp_6gevent_8__waiter__NONE, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_5 = __Pyx_ImportModule("gevent._greenlet"); if (!__pyx_t_5) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "_PYPY", (void **)&__pyx_vp_6gevent_9_greenlet__PYPY, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "sys_getframe", (void **)&__pyx_vp_6gevent_9_greenlet_sys_getframe, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "sys_exc_info", (void **)&__pyx_vp_6gevent_9_greenlet_sys_exc_info, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "Timeout", (void **)&__pyx_vp_6gevent_9_greenlet_Timeout, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "GreenletExit", (void **)&__pyx_vp_6gevent_9_greenlet_GreenletExit, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "InvalidSwitchError", (void **)&__pyx_vp_6gevent_9_greenlet_InvalidSwitchError, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "_greenlet_imported", (void **)&__pyx_vp_6gevent_9_greenlet__greenlet_imported, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "_greenlet__init__", (void **)&__pyx_vp_6gevent_9_greenlet__greenlet__init__, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "_threadlocal", (void **)&__pyx_vp_6gevent_9_greenlet__threadlocal, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "get_hub_class", (void **)&__pyx_vp_6gevent_9_greenlet_get_hub_class, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "wref", (void **)&__pyx_vp_6gevent_9_greenlet_wref, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "dump_traceback", (void **)&__pyx_vp_6gevent_9_greenlet_dump_traceback, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "load_traceback", (void **)&__pyx_vp_6gevent_9_greenlet_load_traceback, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "wait", (void **)&__pyx_vp_6gevent_9_greenlet_wait, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "iwait", (void **)&__pyx_vp_6gevent_9_greenlet_iwait, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "reraise", (void **)&__pyx_vp_6gevent_9_greenlet_reraise, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "GEVENT_CONFIG", (void **)&__pyx_vp_6gevent_9_greenlet_GEVENT_CONFIG, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "_cancelled_start_event", (void **)&__pyx_vp_6gevent_9_greenlet__cancelled_start_event, "struct __pyx_obj_6gevent_9_greenlet__dummy_event *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "_start_completed_event", (void **)&__pyx_vp_6gevent_9_greenlet__start_completed_event, "struct __pyx_obj_6gevent_9_greenlet__dummy_event *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_6 = __Pyx_ImportModule("gevent.__semaphore"); if (!__pyx_t_6) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_6, "Timeout", (void **)&__pyx_vp_6gevent_11__semaphore_Timeout, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_6, "_greenlet_imported", (void **)&__pyx_vp_6gevent_11__semaphore__greenlet_imported, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_7 = __Pyx_ImportModule("gevent._event"); if (!__pyx_t_7) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_7, "_None", (void **)&__pyx_vp_6gevent_6_event__None, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_7, "reraise", (void **)&__pyx_vp_6gevent_6_event_reraise, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_7, "dump_traceback", (void **)&__pyx_vp_6gevent_6_event_dump_traceback, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_7, "load_traceback", (void **)&__pyx_vp_6gevent_6_event_load_traceback, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_7, "InvalidSwitchError", (void **)&__pyx_vp_6gevent_6_event_InvalidSwitchError, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_7, "Timeout", (void **)&__pyx_vp_6gevent_6_event_Timeout, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_7, "_greenlet_imported", (void **)&__pyx_vp_6gevent_6_event__greenlet_imported, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_8 = __Pyx_ImportModule("gevent._queue"); if (!__pyx_t_8) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_8, "_heappush", (void **)&__pyx_vp_6gevent_6_queue__heappush, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_8, "_heappop", (void **)&__pyx_vp_6gevent_6_queue__heappop, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_8, "_heapify", (void **)&__pyx_vp_6gevent_6_queue__heapify, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_function_import_code(void) { - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); - /*--- Function import code ---*/ - __pyx_t_1 = __Pyx_ImportModule("gevent.__hub_local"); if (!__pyx_t_1) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportFunction(__pyx_t_1, "get_hub_noargs", (void (**)(void))&__pyx_f_6gevent_11__hub_local_get_hub_noargs, "struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *(int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_RefNannyFinishContext(); - return -1; -} - - -#if PY_MAJOR_VERSION < 3 -#ifdef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC void -#else -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -#endif -#else -#ifdef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC PyObject * -#else -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -#endif -#endif -#ifndef CYTHON_SMALL_CODE -#if defined(__clang__) - #define CYTHON_SMALL_CODE -#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4))) - #define CYTHON_SMALL_CODE __attribute__((cold)) -#else - #define CYTHON_SMALL_CODE -#endif -#endif - - -#if PY_MAJOR_VERSION < 3 -__Pyx_PyMODINIT_FUNC init__imap(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC init__imap(void) -#else -__Pyx_PyMODINIT_FUNC PyInit___imap(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC PyInit___imap(void) -#if CYTHON_PEP489_MULTI_PHASE_INIT -{ - return PyModuleDef_Init(&__pyx_moduledef); -} -static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) { - PyObject *value = PyObject_GetAttrString(spec, from_name); - int result = 0; - if (likely(value)) { - result = PyDict_SetItemString(moddict, to_name, value); - Py_DECREF(value); - } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Clear(); - } else { - result = -1; - } - return result; -} -static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) { - PyObject *module = NULL, *moddict, *modname; - if (__pyx_m) - return __Pyx_NewRef(__pyx_m); - modname = PyObject_GetAttrString(spec, "name"); - if (unlikely(!modname)) goto bad; - module = PyModule_NewObject(modname); - Py_DECREF(modname); - if (unlikely(!module)) goto bad; - moddict = PyModule_GetDict(module); - if (unlikely(!moddict)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__") < 0)) goto bad; - return module; -bad: - Py_XDECREF(module); - return NULL; -} - - -static int __pyx_pymod_exec___imap(PyObject *__pyx_pyinit_module) -#endif -#endif -{ - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannyDeclarations - #if CYTHON_PEP489_MULTI_PHASE_INIT - if (__pyx_m && __pyx_m == __pyx_pyinit_module) return 0; - #elif PY_MAJOR_VERSION >= 3 - if (__pyx_m) return __Pyx_NewRef(__pyx_m); - #endif - #if CYTHON_REFNANNY -__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); -if (!__Pyx_RefNanny) { - PyErr_Clear(); - __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); - if (!__Pyx_RefNanny) - Py_FatalError("failed to import 'refnanny' module"); -} -#endif - __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit___imap(void)", 0); - if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) - #ifdef __Pyx_CyFunction_USED - if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_FusedFunction_USED - if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Coroutine_USED - if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Generator_USED - if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_AsyncGen_USED - if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_StopAsyncIteration_USED - if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - /*--- Library function declarations ---*/ - /*--- Threads initialization code ---*/ - #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS - #ifdef WITH_THREAD /* Python build with threading support? */ - PyEval_InitThreads(); - #endif - #endif - /*--- Module creation code ---*/ - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_m = __pyx_pyinit_module; - Py_INCREF(__pyx_m); - #else - #if PY_MAJOR_VERSION < 3 - __pyx_m = Py_InitModule4("__imap", __pyx_methods, __pyx_k_Iterators_across_greenlets_or_A, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); - #else - __pyx_m = PyModule_Create(&__pyx_moduledef); - #endif - if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) - Py_INCREF(__pyx_d); - __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) - #if CYTHON_COMPILING_IN_PYPY - Py_INCREF(__pyx_b); - #endif - if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - /*--- Initialize various global constants etc. ---*/ - if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) - if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - if (__pyx_module_is_main_gevent____imap) { - if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - } - #if PY_MAJOR_VERSION >= 3 - { - PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) - if (!PyDict_GetItemString(modules, "gevent.__imap")) { - if (unlikely(PyDict_SetItemString(modules, "gevent.__imap", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) - } - } - #endif - /*--- Builtin init code ---*/ - if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Constants init code ---*/ - if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Global type/function init code ---*/ - (void)__Pyx_modinit_global_init_code(); - (void)__Pyx_modinit_variable_export_code(); - if (unlikely(__Pyx_modinit_function_export_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_type_init_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_type_import_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_variable_import_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_function_import_code() != 0)) goto __pyx_L1_error; - /*--- Execution code ---*/ - #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) - if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - - /* "src/gevent/_imap.py":14 - * - * - * from gevent import _semaphore # <<<<<<<<<<<<<< - * from gevent import queue - * - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_semaphore); - __Pyx_GIVEREF(__pyx_n_s_semaphore); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_semaphore); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_gevent, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_semaphore); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_semaphore, __pyx_t_1) < 0) __PYX_ERR(0, 14, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_imap.py":15 - * - * from gevent import _semaphore - * from gevent import queue # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_queue); - __Pyx_GIVEREF(__pyx_n_s_queue); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_queue); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_gevent, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_queue); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_queue, __pyx_t_2) < 0) __PYX_ERR(0, 15, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_imap.py":18 - * - * - * __all__ = [ # <<<<<<<<<<<<<< - * 'IMapUnordered', - * 'IMap', - */ - __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 18, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_IMapUnordered); - __Pyx_GIVEREF(__pyx_n_s_IMapUnordered); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_IMapUnordered); - __Pyx_INCREF(__pyx_n_s_IMap); - __Pyx_GIVEREF(__pyx_n_s_IMap); - PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_IMap); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_all, __pyx_t_1) < 0) __PYX_ERR(0, 18, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_imap.py":23 - * ] - * - * locals()['Greenlet'] = __import__('gevent').Greenlet # <<<<<<<<<<<<<< - * locals()['Semaphore'] = _semaphore.Semaphore - * locals()['UnboundQueue'] = queue.UnboundQueue - */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin___import__, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Greenlet); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 23, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_Globals(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (unlikely(PyDict_SetItem(__pyx_t_1, __pyx_n_s_Greenlet, __pyx_t_2) < 0)) __PYX_ERR(0, 23, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_imap.py":24 - * - * locals()['Greenlet'] = __import__('gevent').Greenlet - * locals()['Semaphore'] = _semaphore.Semaphore # <<<<<<<<<<<<<< - * locals()['UnboundQueue'] = queue.UnboundQueue - * - */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_semaphore); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 24, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Semaphore); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 24, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_Globals(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 24, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (unlikely(PyDict_SetItem(__pyx_t_2, __pyx_n_s_Semaphore, __pyx_t_1) < 0)) __PYX_ERR(0, 24, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_imap.py":25 - * locals()['Greenlet'] = __import__('gevent').Greenlet - * locals()['Semaphore'] = _semaphore.Semaphore - * locals()['UnboundQueue'] = queue.UnboundQueue # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_queue); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 25, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_UnboundQueue); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 25, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_Globals(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 25, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (unlikely(PyDict_SetItem(__pyx_t_1, __pyx_n_s_UnboundQueue, __pyx_t_2) < 0)) __PYX_ERR(0, 25, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_imap.py":29 - * - * class Failure(object): - * __slots__ = ('exc', 'raise_exception') # <<<<<<<<<<<<<< - * - * def __init__(self, exc, raise_exception=None): - */ - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6__imap_Failure->tp_dict, __pyx_n_s_slots, __pyx_tuple__2) < 0) __PYX_ERR(0, 29, __pyx_L1_error) - PyType_Modified(__pyx_ptype_6gevent_6__imap_Failure); - - /* "src/gevent/_imap.py":110 - * return value - * - * next = __next__ # Py2 # <<<<<<<<<<<<<< - * - * def _inext(self): - */ - __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6gevent_6__imap_IMapUnordered, __pyx_n_s_next); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 110, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6__imap_IMapUnordered->tp_dict, __pyx_n_s_next_2, __pyx_t_2) < 0) __PYX_ERR(0, 110, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_6__imap_IMapUnordered); - - /* "src/gevent/_imap.py":124 - * return g - * - * def _run(self): # pylint:disable=method-hidden # <<<<<<<<<<<<<< - * try: - * func = self.func - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6__imap_13IMapUnordered_7_run, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IMapUnordered__run, NULL, __pyx_n_s_gevent___imap, __pyx_d, ((PyObject *)__pyx_codeobj__4)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6__imap_IMapUnordered->tp_dict, __pyx_n_s_run, __pyx_t_2) < 0) __PYX_ERR(0, 124, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_6__imap_IMapUnordered); - - /* "src/gevent/_imap.py":140 - * self._result_semaphore = None - * - * def _on_result(self, greenlet): # <<<<<<<<<<<<<< - * # This method will be called in the hub greenlet (we rawlink) - * self._outstanding_tasks -= 1 - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6__imap_13IMapUnordered_9_on_result, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IMapUnordered__on_result, NULL, __pyx_n_s_gevent___imap, __pyx_d, ((PyObject *)__pyx_codeobj__6)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6__imap_IMapUnordered->tp_dict, __pyx_n_s_on_result, __pyx_t_2) < 0) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_6__imap_IMapUnordered); - - /* "src/gevent/_imap.py":226 - * return (self._max_index + 1, IMapUnordered._iqueue_value_for_self_failure(self, exception)) - * - * from gevent._util import import_c_accel # <<<<<<<<<<<<<< - * import_c_accel(globals(), 'gevent.__imap') - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 226, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_import_c_accel); - __Pyx_GIVEREF(__pyx_n_s_import_c_accel); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_import_c_accel); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_gevent__util, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 226, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_import_c_accel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 226, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_import_c_accel, __pyx_t_2) < 0) __PYX_ERR(0, 226, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_imap.py":227 - * - * from gevent._util import import_c_accel - * import_c_accel(globals(), 'gevent.__imap') # <<<<<<<<<<<<<< - */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_import_c_accel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 227, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_Globals(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 227, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 227, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_gevent___imap); - __Pyx_GIVEREF(__pyx_n_s_gevent___imap); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_gevent___imap); - __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 227, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_imap.py":1 - * # -*- coding: utf-8 -*- # <<<<<<<<<<<<<< - * # Copyright (c) 2018 gevent - * # cython: auto_pickle=False,embedsignature=True,always_allow_keywords=False,infer_types=True - */ - __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/_event.pxd":30 - * return PyGreenlet_GetCurrent() - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - - /*--- Wrapped vars code ---*/ - - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - if (__pyx_m) { - if (__pyx_d) { - __Pyx_AddTraceback("init gevent.__imap", 0, __pyx_lineno, __pyx_filename); - } - Py_DECREF(__pyx_m); __pyx_m = 0; - } else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_ImportError, "init gevent.__imap"); - } - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - #if CYTHON_PEP489_MULTI_PHASE_INIT - return (__pyx_m != NULL) ? 0 : -1; - #elif PY_MAJOR_VERSION >= 3 - return __pyx_m; - #else - return; - #endif -} - -/* --- Runtime support code --- */ -/* Refnanny */ -#if CYTHON_REFNANNY -static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { - PyObject *m = NULL, *p = NULL; - void *r = NULL; - m = PyImport_ImportModule((char *)modname); - if (!m) goto end; - p = PyObject_GetAttrString(m, (char *)"RefNannyAPI"); - if (!p) goto end; - r = PyLong_AsVoidPtr(p); -end: - Py_XDECREF(p); - Py_XDECREF(m); - return (__Pyx_RefNannyAPIStruct *)r; -} -#endif - -/* PyObjectGetAttrStr */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_getattro)) - return tp->tp_getattro(obj, attr_name); -#if PY_MAJOR_VERSION < 3 - if (likely(tp->tp_getattr)) - return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); -#endif - return PyObject_GetAttr(obj, attr_name); -} -#endif - -/* GetBuiltinName */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name) { - PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); - if (unlikely(!result)) { - PyErr_Format(PyExc_NameError, -#if PY_MAJOR_VERSION >= 3 - "name '%U' is not defined", name); -#else - "name '%.200s' is not defined", PyString_AS_STRING(name)); -#endif - } - return result; -} - -/* RaiseDoubleKeywords */ -static void __Pyx_RaiseDoubleKeywordsError( - const char* func_name, - PyObject* kw_name) -{ - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION >= 3 - "%s() got multiple values for keyword argument '%U'", func_name, kw_name); - #else - "%s() got multiple values for keyword argument '%s'", func_name, - PyString_AsString(kw_name)); - #endif -} - -/* ParseKeywords */ -static int __Pyx_ParseOptionalKeywords( - PyObject *kwds, - PyObject **argnames[], - PyObject *kwds2, - PyObject *values[], - Py_ssize_t num_pos_args, - const char* function_name) -{ - PyObject *key = 0, *value = 0; - Py_ssize_t pos = 0; - PyObject*** name; - PyObject*** first_kw_arg = argnames + num_pos_args; - while (PyDict_Next(kwds, &pos, &key, &value)) { - name = first_kw_arg; - while (*name && (**name != key)) name++; - if (*name) { - values[name-argnames] = value; - continue; - } - name = first_kw_arg; - #if PY_MAJOR_VERSION < 3 - if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) { - while (*name) { - if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) - && _PyString_Eq(**name, key)) { - values[name-argnames] = value; - break; - } - name++; - } - if (*name) continue; - else { - PyObject*** argname = argnames; - while (argname != first_kw_arg) { - if ((**argname == key) || ( - (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) - && _PyString_Eq(**argname, key))) { - goto arg_passed_twice; - } - argname++; - } - } - } else - #endif - if (likely(PyUnicode_Check(key))) { - while (*name) { - int cmp = (**name == key) ? 0 : - #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 : - #endif - PyUnicode_Compare(**name, key); - if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; - if (cmp == 0) { - values[name-argnames] = value; - break; - } - name++; - } - if (*name) continue; - else { - PyObject*** argname = argnames; - while (argname != first_kw_arg) { - int cmp = (**argname == key) ? 0 : - #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 : - #endif - PyUnicode_Compare(**argname, key); - if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; - if (cmp == 0) goto arg_passed_twice; - argname++; - } - } - } else - goto invalid_keyword_type; - if (kwds2) { - if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; - } else { - goto invalid_keyword; - } - } - return 0; -arg_passed_twice: - __Pyx_RaiseDoubleKeywordsError(function_name, key); - goto bad; -invalid_keyword_type: - PyErr_Format(PyExc_TypeError, - "%.200s() keywords must be strings", function_name); - goto bad; -invalid_keyword: - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION < 3 - "%.200s() got an unexpected keyword argument '%.200s'", - function_name, PyString_AsString(key)); - #else - "%s() got an unexpected keyword argument '%U'", - function_name, key); - #endif -bad: - return -1; -} - -/* RaiseArgTupleInvalid */ -static void __Pyx_RaiseArgtupleInvalid( - const char* func_name, - int exact, - Py_ssize_t num_min, - Py_ssize_t num_max, - Py_ssize_t num_found) -{ - Py_ssize_t num_expected; - const char *more_or_less; - if (num_found < num_min) { - num_expected = num_min; - more_or_less = "at least"; - } else { - num_expected = num_max; - more_or_less = "at most"; - } - if (exact) { - more_or_less = "exactly"; - } - PyErr_Format(PyExc_TypeError, - "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", - func_name, more_or_less, num_expected, - (num_expected == 1) ? "" : "s", num_found); -} - -/* PyCFunctionFastCall */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { - PyCFunctionObject *func = (PyCFunctionObject*)func_obj; - PyCFunction meth = PyCFunction_GET_FUNCTION(func); - PyObject *self = PyCFunction_GET_SELF(func); - int flags = PyCFunction_GET_FLAGS(func); - assert(PyCFunction_Check(func)); - assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))); - assert(nargs >= 0); - assert(nargs == 0 || args != NULL); - /* _PyCFunction_FastCallDict() must not be called with an exception set, - because it may clear it (directly or indirectly) and so the - caller loses its exception */ - assert(!PyErr_Occurred()); - if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { - return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL); - } else { - return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs); - } -} -#endif - -/* PyFunctionFastCall */ -#if CYTHON_FAST_PYCALL -#include "frameobject.h" -static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, - PyObject *globals) { - PyFrameObject *f; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject **fastlocals; - Py_ssize_t i; - PyObject *result; - assert(globals != NULL); - /* XXX Perhaps we should create a specialized - PyFrame_New() that doesn't take locals, but does - take builtins without sanity checking them. - */ - assert(tstate != NULL); - f = PyFrame_New(tstate, co, globals, NULL); - if (f == NULL) { - return NULL; - } - fastlocals = f->f_localsplus; - for (i = 0; i < na; i++) { - Py_INCREF(*args); - fastlocals[i] = *args++; - } - result = PyEval_EvalFrameEx(f,0); - ++tstate->recursion_depth; - Py_DECREF(f); - --tstate->recursion_depth; - return result; -} -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs) { - PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); - PyObject *globals = PyFunction_GET_GLOBALS(func); - PyObject *argdefs = PyFunction_GET_DEFAULTS(func); - PyObject *closure; -#if PY_MAJOR_VERSION >= 3 - PyObject *kwdefs; -#endif - PyObject *kwtuple, **k; - PyObject **d; - Py_ssize_t nd; - Py_ssize_t nk; - PyObject *result; - assert(kwargs == NULL || PyDict_Check(kwargs)); - nk = kwargs ? PyDict_Size(kwargs) : 0; - if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { - return NULL; - } - if ( -#if PY_MAJOR_VERSION >= 3 - co->co_kwonlyargcount == 0 && -#endif - likely(kwargs == NULL || nk == 0) && - co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { - if (argdefs == NULL && co->co_argcount == nargs) { - result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); - goto done; - } - else if (nargs == 0 && argdefs != NULL - && co->co_argcount == Py_SIZE(argdefs)) { - /* function called with no arguments, but all parameters have - a default value: use default values as arguments .*/ - args = &PyTuple_GET_ITEM(argdefs, 0); - result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); - goto done; - } - } - if (kwargs != NULL) { - Py_ssize_t pos, i; - kwtuple = PyTuple_New(2 * nk); - if (kwtuple == NULL) { - result = NULL; - goto done; - } - k = &PyTuple_GET_ITEM(kwtuple, 0); - pos = i = 0; - while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { - Py_INCREF(k[i]); - Py_INCREF(k[i+1]); - i += 2; - } - nk = i / 2; - } - else { - kwtuple = NULL; - k = NULL; - } - closure = PyFunction_GET_CLOSURE(func); -#if PY_MAJOR_VERSION >= 3 - kwdefs = PyFunction_GET_KW_DEFAULTS(func); -#endif - if (argdefs != NULL) { - d = &PyTuple_GET_ITEM(argdefs, 0); - nd = Py_SIZE(argdefs); - } - else { - d = NULL; - nd = 0; - } -#if PY_MAJOR_VERSION >= 3 - result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, - args, nargs, - k, (int)nk, - d, (int)nd, kwdefs, closure); -#else - result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, - args, nargs, - k, (int)nk, - d, (int)nd, closure); -#endif - Py_XDECREF(kwtuple); -done: - Py_LeaveRecursiveCall(); - return result; -} -#endif -#endif - -/* PyObjectCall */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { - PyObject *result; - ternaryfunc call = func->ob_type->tp_call; - if (unlikely(!call)) - return PyObject_Call(func, arg, kw); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = (*call)(func, arg, kw); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCallMethO */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { - PyObject *self, *result; - PyCFunction cfunc; - cfunc = PyCFunction_GET_FUNCTION(func); - self = PyCFunction_GET_SELF(func); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = cfunc(self, arg); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCallOneArg */ -#if CYTHON_COMPILING_IN_CPYTHON -static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_New(1); - if (unlikely(!args)) return NULL; - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 0, arg); - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, &arg, 1); - } -#endif - if (likely(PyCFunction_Check(func))) { - if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { - return __Pyx_PyObject_CallMethO(func, arg); -#if CYTHON_FAST_PYCCALL - } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { - return __Pyx_PyCFunction_FastCall(func, &arg, 1); -#endif - } - } - return __Pyx__PyObject_CallOneArg(func, arg); -} -#else -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_Pack(1, arg); - if (unlikely(!args)) return NULL; - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -#endif - -/* PyObjectCallNoArg */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, NULL, 0); - } -#endif -#ifdef __Pyx_CyFunction_USED - if (likely(PyCFunction_Check(func) || __Pyx_TypeCheck(func, __pyx_CyFunctionType))) { -#else - if (likely(PyCFunction_Check(func))) { -#endif - if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { - return __Pyx_PyObject_CallMethO(func, NULL); - } - } - return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL); -} -#endif - -/* PyErrFetchRestore */ - #if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - tmp_type = tstate->curexc_type; - tmp_value = tstate->curexc_value; - tmp_tb = tstate->curexc_traceback; - tstate->curexc_type = type; - tstate->curexc_value = value; - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - *type = tstate->curexc_type; - *value = tstate->curexc_value; - *tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -} -#endif - -/* RaiseException */ - #if PY_MAJOR_VERSION < 3 -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, - CYTHON_UNUSED PyObject *cause) { - __Pyx_PyThreadState_declare - Py_XINCREF(type); - if (!value || value == Py_None) - value = NULL; - else - Py_INCREF(value); - if (!tb || tb == Py_None) - tb = NULL; - else { - Py_INCREF(tb); - if (!PyTraceBack_Check(tb)) { - PyErr_SetString(PyExc_TypeError, - "raise: arg 3 must be a traceback or None"); - goto raise_error; - } - } - if (PyType_Check(type)) { -#if CYTHON_COMPILING_IN_PYPY - if (!value) { - Py_INCREF(Py_None); - value = Py_None; - } -#endif - PyErr_NormalizeException(&type, &value, &tb); - } else { - if (value) { - PyErr_SetString(PyExc_TypeError, - "instance exception may not have a separate value"); - goto raise_error; - } - value = type; - type = (PyObject*) Py_TYPE(type); - Py_INCREF(type); - if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { - PyErr_SetString(PyExc_TypeError, - "raise: exception class must be a subclass of BaseException"); - goto raise_error; - } - } - __Pyx_PyThreadState_assign - __Pyx_ErrRestore(type, value, tb); - return; -raise_error: - Py_XDECREF(value); - Py_XDECREF(type); - Py_XDECREF(tb); - return; -} -#else -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { - PyObject* owned_instance = NULL; - if (tb == Py_None) { - tb = 0; - } else if (tb && !PyTraceBack_Check(tb)) { - PyErr_SetString(PyExc_TypeError, - "raise: arg 3 must be a traceback or None"); - goto bad; - } - if (value == Py_None) - value = 0; - if (PyExceptionInstance_Check(type)) { - if (value) { - PyErr_SetString(PyExc_TypeError, - "instance exception may not have a separate value"); - goto bad; - } - value = type; - type = (PyObject*) Py_TYPE(value); - } else if (PyExceptionClass_Check(type)) { - PyObject *instance_class = NULL; - if (value && PyExceptionInstance_Check(value)) { - instance_class = (PyObject*) Py_TYPE(value); - if (instance_class != type) { - int is_subclass = PyObject_IsSubclass(instance_class, type); - if (!is_subclass) { - instance_class = NULL; - } else if (unlikely(is_subclass == -1)) { - goto bad; - } else { - type = instance_class; - } - } - } - if (!instance_class) { - PyObject *args; - if (!value) - args = PyTuple_New(0); - else if (PyTuple_Check(value)) { - Py_INCREF(value); - args = value; - } else - args = PyTuple_Pack(1, value); - if (!args) - goto bad; - owned_instance = PyObject_Call(type, args, NULL); - Py_DECREF(args); - if (!owned_instance) - goto bad; - value = owned_instance; - if (!PyExceptionInstance_Check(value)) { - PyErr_Format(PyExc_TypeError, - "calling %R should have returned an instance of " - "BaseException, not %R", - type, Py_TYPE(value)); - goto bad; - } - } - } else { - PyErr_SetString(PyExc_TypeError, - "raise: exception class must be a subclass of BaseException"); - goto bad; - } - if (cause) { - PyObject *fixed_cause; - if (cause == Py_None) { - fixed_cause = NULL; - } else if (PyExceptionClass_Check(cause)) { - fixed_cause = PyObject_CallObject(cause, NULL); - if (fixed_cause == NULL) - goto bad; - } else if (PyExceptionInstance_Check(cause)) { - fixed_cause = cause; - Py_INCREF(fixed_cause); - } else { - PyErr_SetString(PyExc_TypeError, - "exception causes must derive from " - "BaseException"); - goto bad; - } - PyException_SetCause(value, fixed_cause); - } - PyErr_SetObject(type, value); - if (tb) { -#if CYTHON_COMPILING_IN_PYPY - PyObject *tmp_type, *tmp_value, *tmp_tb; - PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); - Py_INCREF(tb); - PyErr_Restore(tmp_type, tmp_value, tb); - Py_XDECREF(tmp_tb); -#else - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject* tmp_tb = tstate->curexc_traceback; - if (tb != tmp_tb) { - Py_INCREF(tb); - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_tb); - } -#endif - } -bad: - Py_XDECREF(owned_instance); - return; -} -#endif - -/* ExtTypeTest */ - static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { - if (unlikely(!type)) { - PyErr_SetString(PyExc_SystemError, "Missing type object"); - return 0; - } - if (likely(__Pyx_TypeCheck(obj, type))) - return 1; - PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s", - Py_TYPE(obj)->tp_name, type->tp_name); - return 0; -} - -/* PyObjectSetAttrStr */ - #if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_setattro)) - return tp->tp_setattro(obj, attr_name, value); -#if PY_MAJOR_VERSION < 3 - if (likely(tp->tp_setattr)) - return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value); -#endif - return PyObject_SetAttr(obj, attr_name, value); -} -#endif - -/* SaveResetException */ - #if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - #if PY_VERSION_HEX >= 0x030700A3 - *type = tstate->exc_state.exc_type; - *value = tstate->exc_state.exc_value; - *tb = tstate->exc_state.exc_traceback; - #else - *type = tstate->exc_type; - *value = tstate->exc_value; - *tb = tstate->exc_traceback; - #endif - Py_XINCREF(*type); - Py_XINCREF(*value); - Py_XINCREF(*tb); -} -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - #if PY_VERSION_HEX >= 0x030700A3 - tmp_type = tstate->exc_state.exc_type; - tmp_value = tstate->exc_state.exc_value; - tmp_tb = tstate->exc_state.exc_traceback; - tstate->exc_state.exc_type = type; - tstate->exc_state.exc_value = value; - tstate->exc_state.exc_traceback = tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = type; - tstate->exc_value = value; - tstate->exc_traceback = tb; - #endif - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} -#endif - -/* PyErrExceptionMatches */ - #if CYTHON_FAST_THREAD_STATE -static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; i<n; i++) { - if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1; - } -#endif - for (i=0; i<n; i++) { - if (__Pyx_PyErr_GivenExceptionMatches(exc_type, PyTuple_GET_ITEM(tuple, i))) return 1; - } - return 0; -} -static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) { - PyObject *exc_type = tstate->curexc_type; - if (exc_type == err) return 1; - if (unlikely(!exc_type)) return 0; - if (unlikely(PyTuple_Check(err))) - return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); - return __Pyx_PyErr_GivenExceptionMatches(exc_type, err); -} -#endif - -/* GetException */ - #if CYTHON_FAST_THREAD_STATE -static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { -#else -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) { -#endif - PyObject *local_type, *local_value, *local_tb; -#if CYTHON_FAST_THREAD_STATE - PyObject *tmp_type, *tmp_value, *tmp_tb; - local_type = tstate->curexc_type; - local_value = tstate->curexc_value; - local_tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -#else - PyErr_Fetch(&local_type, &local_value, &local_tb); -#endif - PyErr_NormalizeException(&local_type, &local_value, &local_tb); -#if CYTHON_FAST_THREAD_STATE - if (unlikely(tstate->curexc_type)) -#else - if (unlikely(PyErr_Occurred())) -#endif - goto bad; - #if PY_MAJOR_VERSION >= 3 - if (local_tb) { - if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) - goto bad; - } - #endif - Py_XINCREF(local_tb); - Py_XINCREF(local_type); - Py_XINCREF(local_value); - *type = local_type; - *value = local_value; - *tb = local_tb; -#if CYTHON_FAST_THREAD_STATE - #if PY_VERSION_HEX >= 0x030700A3 - tmp_type = tstate->exc_state.exc_type; - tmp_value = tstate->exc_state.exc_value; - tmp_tb = tstate->exc_state.exc_traceback; - tstate->exc_state.exc_type = local_type; - tstate->exc_state.exc_value = local_value; - tstate->exc_state.exc_traceback = local_tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = local_type; - tstate->exc_value = local_value; - tstate->exc_traceback = local_tb; - #endif - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -#else - PyErr_SetExcInfo(local_type, local_value, local_tb); -#endif - return 0; -bad: - *type = 0; - *value = 0; - *tb = 0; - Py_XDECREF(local_type); - Py_XDECREF(local_value); - Py_XDECREF(local_tb); - return -1; -} - -/* SwapException */ - #if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - #if PY_VERSION_HEX >= 0x030700A3 - tmp_type = tstate->exc_state.exc_type; - tmp_value = tstate->exc_state.exc_value; - tmp_tb = tstate->exc_state.exc_traceback; - tstate->exc_state.exc_type = *type; - tstate->exc_state.exc_value = *value; - tstate->exc_state.exc_traceback = *tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = *type; - tstate->exc_value = *value; - tstate->exc_traceback = *tb; - #endif - *type = tmp_type; - *value = tmp_value; - *tb = tmp_tb; -} -#else -static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); - PyErr_SetExcInfo(*type, *value, *tb); - *type = tmp_type; - *value = tmp_value; - *tb = tmp_tb; -} -#endif - -/* GetAttr */ - static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) { -#if CYTHON_USE_TYPE_SLOTS -#if PY_MAJOR_VERSION >= 3 - if (likely(PyUnicode_Check(n))) -#else - if (likely(PyString_Check(n))) -#endif - return __Pyx_PyObject_GetAttrStr(o, n); -#endif - return PyObject_GetAttr(o, n); -} - -/* KeywordStringCheck */ - static int __Pyx_CheckKeywordStrings( - PyObject *kwdict, - const char* function_name, - int kw_allowed) -{ - PyObject* key = 0; - Py_ssize_t pos = 0; -#if CYTHON_COMPILING_IN_PYPY - if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0)) - goto invalid_keyword; - return 1; -#else - while (PyDict_Next(kwdict, &pos, &key, 0)) { - #if PY_MAJOR_VERSION < 3 - if (unlikely(!PyString_Check(key))) - #endif - if (unlikely(!PyUnicode_Check(key))) - goto invalid_keyword_type; - } - if ((!kw_allowed) && unlikely(key)) - goto invalid_keyword; - return 1; -invalid_keyword_type: - PyErr_Format(PyExc_TypeError, - "%.200s() keywords must be strings", function_name); - return 0; -#endif -invalid_keyword: - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION < 3 - "%.200s() got an unexpected keyword argument '%.200s'", - function_name, PyString_AsString(key)); - #else - "%s() got an unexpected keyword argument '%U'", - function_name, key); - #endif - return 0; -} - -/* UnpackUnboundCMethod */ - static int __Pyx_TryUnpackUnboundCMethod(__Pyx_CachedCFunction* target) { - PyObject *method; - method = __Pyx_PyObject_GetAttrStr(target->type, *target->method_name); - if (unlikely(!method)) - return -1; - target->method = method; -#if CYTHON_COMPILING_IN_CPYTHON - #if PY_MAJOR_VERSION >= 3 - if (likely(__Pyx_TypeCheck(method, &PyMethodDescr_Type))) - #endif - { - PyMethodDescrObject *descr = (PyMethodDescrObject*) method; - target->func = descr->d_method->ml_meth; - target->flag = descr->d_method->ml_flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST); - } -#endif - return 0; -} - -/* CallUnboundCMethod2 */ - #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030600B1 -static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2) { - if (likely(cfunc->func)) { - PyObject *args[2] = {arg1, arg2}; - if (cfunc->flag == METH_FASTCALL) { - #if PY_VERSION_HEX >= 0x030700A0 - return (*(__Pyx_PyCFunctionFast)cfunc->func)(self, args, 2); - #else - return (*(__Pyx_PyCFunctionFastWithKeywords)cfunc->func)(self, args, 2, NULL); - #endif - } - #if PY_VERSION_HEX >= 0x030700A0 - if (cfunc->flag == (METH_FASTCALL | METH_KEYWORDS)) - return (*(__Pyx_PyCFunctionFastWithKeywords)cfunc->func)(self, args, 2, NULL); - #endif - } - return __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2); -} -#endif -static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2){ - PyObject *args, *result = NULL; - if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL; -#if CYTHON_COMPILING_IN_CPYTHON - if (cfunc->func && (cfunc->flag & METH_VARARGS)) { - args = PyTuple_New(2); - if (unlikely(!args)) goto bad; - Py_INCREF(arg1); - PyTuple_SET_ITEM(args, 0, arg1); - Py_INCREF(arg2); - PyTuple_SET_ITEM(args, 1, arg2); - if (cfunc->flag & METH_KEYWORDS) - result = (*(PyCFunctionWithKeywords)cfunc->func)(self, args, NULL); - else - result = (*cfunc->func)(self, args); - } else { - args = PyTuple_New(3); - if (unlikely(!args)) goto bad; - Py_INCREF(self); - PyTuple_SET_ITEM(args, 0, self); - Py_INCREF(arg1); - PyTuple_SET_ITEM(args, 1, arg1); - Py_INCREF(arg2); - PyTuple_SET_ITEM(args, 2, arg2); - result = __Pyx_PyObject_Call(cfunc->method, args, NULL); - } -#else - args = PyTuple_Pack(3, self, arg1, arg2); - if (unlikely(!args)) goto bad; - result = __Pyx_PyObject_Call(cfunc->method, args, NULL); -#endif -bad: - Py_XDECREF(args); - return result; -} - -/* CallUnboundCMethod1 */ - #if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg) { - if (likely(cfunc->func)) { - int flag = cfunc->flag; - if (flag == METH_O) { - return (*(cfunc->func))(self, arg); - } else if (PY_VERSION_HEX >= 0x030600B1 && flag == METH_FASTCALL) { - if (PY_VERSION_HEX >= 0x030700A0) { - return (*(__Pyx_PyCFunctionFast)cfunc->func)(self, &arg, 1); - } else { - return (*(__Pyx_PyCFunctionFastWithKeywords)cfunc->func)(self, &arg, 1, NULL); - } - } else if (PY_VERSION_HEX >= 0x030700A0 && flag == (METH_FASTCALL | METH_KEYWORDS)) { - return (*(__Pyx_PyCFunctionFastWithKeywords)cfunc->func)(self, &arg, 1, NULL); - } - } - return __Pyx__CallUnboundCMethod1(cfunc, self, arg); -} -#endif -static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg){ - PyObject *args, *result = NULL; - if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL; -#if CYTHON_COMPILING_IN_CPYTHON - if (cfunc->func && (cfunc->flag & METH_VARARGS)) { - args = PyTuple_New(1); - if (unlikely(!args)) goto bad; - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 0, arg); - if (cfunc->flag & METH_KEYWORDS) - result = (*(PyCFunctionWithKeywords)cfunc->func)(self, args, NULL); - else - result = (*cfunc->func)(self, args); - } else { - args = PyTuple_New(2); - if (unlikely(!args)) goto bad; - Py_INCREF(self); - PyTuple_SET_ITEM(args, 0, self); - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 1, arg); - result = __Pyx_PyObject_Call(cfunc->method, args, NULL); - } -#else - args = PyTuple_Pack(2, self, arg); - if (unlikely(!args)) goto bad; - result = __Pyx_PyObject_Call(cfunc->method, args, NULL); -#endif -bad: - Py_XDECREF(args); - return result; -} - -/* py_dict_pop */ - static CYTHON_INLINE PyObject *__Pyx_PyDict_Pop(PyObject *d, PyObject *key, PyObject *default_value) { -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX > 0x030600B3 - if ((1)) { - return _PyDict_Pop(d, key, default_value); - } else -#endif - if (default_value) { - return __Pyx_CallUnboundCMethod2(&__pyx_umethod_PyDict_Type_pop, d, key, default_value); - } else { - return __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyDict_Type_pop, d, key); - } -} - -/* RaiseTooManyValuesToUnpack */ - static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { - PyErr_Format(PyExc_ValueError, - "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); -} - -/* RaiseNeedMoreValuesToUnpack */ - static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { - PyErr_Format(PyExc_ValueError, - "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", - index, (index == 1) ? "" : "s"); -} - -/* IterFinish */ - static CYTHON_INLINE int __Pyx_IterFinish(void) { -#if CYTHON_FAST_THREAD_STATE - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject* exc_type = tstate->curexc_type; - if (unlikely(exc_type)) { - if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) { - PyObject *exc_value, *exc_tb; - exc_value = tstate->curexc_value; - exc_tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; - Py_DECREF(exc_type); - Py_XDECREF(exc_value); - Py_XDECREF(exc_tb); - return 0; - } else { - return -1; - } - } - return 0; -#else - if (unlikely(PyErr_Occurred())) { - if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) { - PyErr_Clear(); - return 0; - } else { - return -1; - } - } - return 0; -#endif -} - -/* UnpackItemEndCheck */ - static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { - if (unlikely(retval)) { - Py_DECREF(retval); - __Pyx_RaiseTooManyValuesError(expected); - return -1; - } else { - return __Pyx_IterFinish(); - } - return 0; -} - -/* None */ - static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) { - PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname); -} - -/* CallNextTpDealloc */ - static void __Pyx_call_next_tp_dealloc(PyObject* obj, destructor current_tp_dealloc) { - PyTypeObject* type = Py_TYPE(obj); - while (type && type->tp_dealloc != current_tp_dealloc) - type = type->tp_base; - while (type && type->tp_dealloc == current_tp_dealloc) - type = type->tp_base; - if (type) - type->tp_dealloc(obj); -} - -/* CallNextTpTraverse */ - static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse) { - PyTypeObject* type = Py_TYPE(obj); - while (type && type->tp_traverse != current_tp_traverse) - type = type->tp_base; - while (type && type->tp_traverse == current_tp_traverse) - type = type->tp_base; - if (type && type->tp_traverse) - return type->tp_traverse(obj, v, a); - return 0; -} - -/* CallNextTpClear */ - static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_clear) { - PyTypeObject* type = Py_TYPE(obj); - while (type && type->tp_clear != current_tp_clear) - type = type->tp_base; - while (type && type->tp_clear == current_tp_clear) - type = type->tp_base; - if (type && type->tp_clear) - type->tp_clear(obj); -} - -/* PyObject_GenericGetAttrNoDict */ - #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { - PyErr_Format(PyExc_AttributeError, -#if PY_MAJOR_VERSION >= 3 - "'%.50s' object has no attribute '%U'", - tp->tp_name, attr_name); -#else - "'%.50s' object has no attribute '%.400s'", - tp->tp_name, PyString_AS_STRING(attr_name)); -#endif - return NULL; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { - PyObject *descr; - PyTypeObject *tp = Py_TYPE(obj); - if (unlikely(!PyString_Check(attr_name))) { - return PyObject_GenericGetAttr(obj, attr_name); - } - assert(!tp->tp_dictoffset); - descr = _PyType_Lookup(tp, attr_name); - if (unlikely(!descr)) { - return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); - } - Py_INCREF(descr); - #if PY_MAJOR_VERSION < 3 - if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) - #endif - { - descrgetfunc f = Py_TYPE(descr)->tp_descr_get; - if (unlikely(f)) { - PyObject *res = f(descr, obj, (PyObject *)tp); - Py_DECREF(descr); - return res; - } - } - return descr; -} -#endif - -/* GetVTable */ - static void* __Pyx_GetVtable(PyObject *dict) { - void* ptr; - PyObject *ob = PyObject_GetItem(dict, __pyx_n_s_pyx_vtable); - if (!ob) - goto bad; -#if PY_VERSION_HEX >= 0x02070000 - ptr = PyCapsule_GetPointer(ob, 0); -#else - ptr = PyCObject_AsVoidPtr(ob); -#endif - if (!ptr && !PyErr_Occurred()) - PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type"); - Py_DECREF(ob); - return ptr; -bad: - Py_XDECREF(ob); - return NULL; -} - -/* PyObject_GenericGetAttr */ - #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) { - if (unlikely(Py_TYPE(obj)->tp_dictoffset)) { - return PyObject_GenericGetAttr(obj, attr_name); - } - return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name); -} -#endif - -/* SetVTable */ - static int __Pyx_SetVtable(PyObject *dict, void *vtable) { -#if PY_VERSION_HEX >= 0x02070000 - PyObject *ob = PyCapsule_New(vtable, 0, 0); -#else - PyObject *ob = PyCObject_FromVoidPtr(vtable, 0); -#endif - if (!ob) - goto bad; - if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0) - goto bad; - Py_DECREF(ob); - return 0; -bad: - Py_XDECREF(ob); - return -1; -} - -/* Import */ - static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { - PyObject *empty_list = 0; - PyObject *module = 0; - PyObject *global_dict = 0; - PyObject *empty_dict = 0; - PyObject *list; - #if PY_MAJOR_VERSION < 3 - PyObject *py_import; - py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); - if (!py_import) - goto bad; - #endif - if (from_list) - list = from_list; - else { - empty_list = PyList_New(0); - if (!empty_list) - goto bad; - list = empty_list; - } - global_dict = PyModule_GetDict(__pyx_m); - if (!global_dict) - goto bad; - empty_dict = PyDict_New(); - if (!empty_dict) - goto bad; - { - #if PY_MAJOR_VERSION >= 3 - if (level == -1) { - if (strchr(__Pyx_MODULE_NAME, '.')) { - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, 1); - if (!module) { - if (!PyErr_ExceptionMatches(PyExc_ImportError)) - goto bad; - PyErr_Clear(); - } - } - level = 0; - } - #endif - if (!module) { - #if PY_MAJOR_VERSION < 3 - PyObject *py_level = PyInt_FromLong(level); - if (!py_level) - goto bad; - module = PyObject_CallFunctionObjArgs(py_import, - name, global_dict, empty_dict, list, py_level, NULL); - Py_DECREF(py_level); - #else - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, level); - #endif - } - } -bad: - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(py_import); - #endif - Py_XDECREF(empty_list); - Py_XDECREF(empty_dict); - return module; -} - -/* ImportFrom */ - static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { - PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); - if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Format(PyExc_ImportError, - #if PY_MAJOR_VERSION < 3 - "cannot import name %.230s", PyString_AS_STRING(name)); - #else - "cannot import name %S", name); - #endif - } - return value; -} - -/* GetModuleGlobalName */ - static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { - PyObject *result; -#if !CYTHON_AVOID_BORROWED_REFS -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 - result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); - if (likely(result)) { - Py_INCREF(result); - } else if (unlikely(PyErr_Occurred())) { - result = NULL; - } else { -#else - result = PyDict_GetItem(__pyx_d, name); - if (likely(result)) { - Py_INCREF(result); - } else { -#endif -#else - result = PyObject_GetItem(__pyx_d, name); - if (!result) { - PyErr_Clear(); -#endif - result = __Pyx_GetBuiltinName(name); - } - return result; -} - -/* GetNameInClass */ - static PyObject *__Pyx_GetGlobalNameAfterAttributeLookup(PyObject *name) { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) - return NULL; - __Pyx_PyErr_Clear(); - return __Pyx_GetModuleGlobalName(name); -} -static PyObject *__Pyx_GetNameInClass(PyObject *nmspace, PyObject *name) { - PyObject *result; - result = __Pyx_PyObject_GetAttrStr(nmspace, name); - if (!result) { - result = __Pyx_GetGlobalNameAfterAttributeLookup(name); - } - return result; -} - -/* FetchCommonType */ - static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { - PyObject* fake_module; - PyTypeObject* cached_type = NULL; - fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI); - if (!fake_module) return NULL; - Py_INCREF(fake_module); - cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name); - if (cached_type) { - if (!PyType_Check((PyObject*)cached_type)) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s is not a type object", - type->tp_name); - goto bad; - } - if (cached_type->tp_basicsize != type->tp_basicsize) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s has the wrong size, try recompiling", - type->tp_name); - goto bad; - } - } else { - if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; - PyErr_Clear(); - if (PyType_Ready(type) < 0) goto bad; - if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0) - goto bad; - Py_INCREF(type); - cached_type = type; - } -done: - Py_DECREF(fake_module); - return cached_type; -bad: - Py_XDECREF(cached_type); - cached_type = NULL; - goto done; -} - -/* CythonFunction */ - #include <structmember.h> -static PyObject * -__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure) -{ - if (unlikely(op->func_doc == NULL)) { - if (op->func.m_ml->ml_doc) { -#if PY_MAJOR_VERSION >= 3 - op->func_doc = PyUnicode_FromString(op->func.m_ml->ml_doc); -#else - op->func_doc = PyString_FromString(op->func.m_ml->ml_doc); -#endif - if (unlikely(op->func_doc == NULL)) - return NULL; - } else { - Py_INCREF(Py_None); - return Py_None; - } - } - Py_INCREF(op->func_doc); - return op->func_doc; -} -static int -__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp = op->func_doc; - if (value == NULL) { - value = Py_None; - } - Py_INCREF(value); - op->func_doc = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op) -{ - if (unlikely(op->func_name == NULL)) { -#if PY_MAJOR_VERSION >= 3 - op->func_name = PyUnicode_InternFromString(op->func.m_ml->ml_name); -#else - op->func_name = PyString_InternFromString(op->func.m_ml->ml_name); -#endif - if (unlikely(op->func_name == NULL)) - return NULL; - } - Py_INCREF(op->func_name); - return op->func_name; -} -static int -__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; -#if PY_MAJOR_VERSION >= 3 - if (unlikely(value == NULL || !PyUnicode_Check(value))) { -#else - if (unlikely(value == NULL || !PyString_Check(value))) { -#endif - PyErr_SetString(PyExc_TypeError, - "__name__ must be set to a string object"); - return -1; - } - tmp = op->func_name; - Py_INCREF(value); - op->func_name = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op) -{ - Py_INCREF(op->func_qualname); - return op->func_qualname; -} -static int -__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; -#if PY_MAJOR_VERSION >= 3 - if (unlikely(value == NULL || !PyUnicode_Check(value))) { -#else - if (unlikely(value == NULL || !PyString_Check(value))) { -#endif - PyErr_SetString(PyExc_TypeError, - "__qualname__ must be set to a string object"); - return -1; - } - tmp = op->func_qualname; - Py_INCREF(value); - op->func_qualname = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure) -{ - PyObject *self; - self = m->func_closure; - if (self == NULL) - self = Py_None; - Py_INCREF(self); - return self; -} -static PyObject * -__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op) -{ - if (unlikely(op->func_dict == NULL)) { - op->func_dict = PyDict_New(); - if (unlikely(op->func_dict == NULL)) - return NULL; - } - Py_INCREF(op->func_dict); - return op->func_dict; -} -static int -__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; - if (unlikely(value == NULL)) { - PyErr_SetString(PyExc_TypeError, - "function's dictionary may not be deleted"); - return -1; - } - if (unlikely(!PyDict_Check(value))) { - PyErr_SetString(PyExc_TypeError, - "setting function's dictionary to a non-dict"); - return -1; - } - tmp = op->func_dict; - Py_INCREF(value); - op->func_dict = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op) -{ - Py_INCREF(op->func_globals); - return op->func_globals; -} -static PyObject * -__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op) -{ - Py_INCREF(Py_None); - return Py_None; -} -static PyObject * -__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op) -{ - PyObject* result = (op->func_code) ? op->func_code : Py_None; - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { - int result = 0; - PyObject *res = op->defaults_getter((PyObject *) op); - if (unlikely(!res)) - return -1; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - op->defaults_tuple = PyTuple_GET_ITEM(res, 0); - Py_INCREF(op->defaults_tuple); - op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); - Py_INCREF(op->defaults_kwdict); - #else - op->defaults_tuple = PySequence_ITEM(res, 0); - if (unlikely(!op->defaults_tuple)) result = -1; - else { - op->defaults_kwdict = PySequence_ITEM(res, 1); - if (unlikely(!op->defaults_kwdict)) result = -1; - } - #endif - Py_DECREF(res); - return result; -} -static int -__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value) { - value = Py_None; - } else if (value != Py_None && !PyTuple_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__defaults__ must be set to a tuple object"); - return -1; - } - Py_INCREF(value); - tmp = op->defaults_tuple; - op->defaults_tuple = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) { - PyObject* result = op->defaults_tuple; - if (unlikely(!result)) { - if (op->defaults_getter) { - if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; - result = op->defaults_tuple; - } else { - result = Py_None; - } - } - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value) { - value = Py_None; - } else if (value != Py_None && !PyDict_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__kwdefaults__ must be set to a dict object"); - return -1; - } - Py_INCREF(value); - tmp = op->defaults_kwdict; - op->defaults_kwdict = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) { - PyObject* result = op->defaults_kwdict; - if (unlikely(!result)) { - if (op->defaults_getter) { - if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; - result = op->defaults_kwdict; - } else { - result = Py_None; - } - } - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value || value == Py_None) { - value = NULL; - } else if (!PyDict_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__annotations__ must be set to a dict object"); - return -1; - } - Py_XINCREF(value); - tmp = op->func_annotations; - op->func_annotations = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op) { - PyObject* result = op->func_annotations; - if (unlikely(!result)) { - result = PyDict_New(); - if (unlikely(!result)) return NULL; - op->func_annotations = result; - } - Py_INCREF(result); - return result; -} -static PyGetSetDef __pyx_CyFunction_getsets[] = { - {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, - {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, - {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, - {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, - {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, - {(char *) "__self__", (getter)__Pyx_CyFunction_get_self, 0, 0, 0}, - {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, - {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, - {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, - {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, - {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, - {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, - {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, - {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, - {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, - {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, - {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, - {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, - {0, 0, 0, 0, 0} -}; -static PyMemberDef __pyx_CyFunction_members[] = { - {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), PY_WRITE_RESTRICTED, 0}, - {0, 0, 0, 0, 0} -}; -static PyObject * -__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args) -{ -#if PY_MAJOR_VERSION >= 3 - return PyUnicode_FromString(m->func.m_ml->ml_name); -#else - return PyString_FromString(m->func.m_ml->ml_name); -#endif -} -static PyMethodDef __pyx_CyFunction_methods[] = { - {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, - {0, 0, 0, 0} -}; -#if PY_VERSION_HEX < 0x030500A0 -#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) -#else -#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func.m_weakreflist) -#endif -static PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *ml, int flags, PyObject* qualname, - PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { - __pyx_CyFunctionObject *op = PyObject_GC_New(__pyx_CyFunctionObject, type); - if (op == NULL) - return NULL; - op->flags = flags; - __Pyx_CyFunction_weakreflist(op) = NULL; - op->func.m_ml = ml; - op->func.m_self = (PyObject *) op; - Py_XINCREF(closure); - op->func_closure = closure; - Py_XINCREF(module); - op->func.m_module = module; - op->func_dict = NULL; - op->func_name = NULL; - Py_INCREF(qualname); - op->func_qualname = qualname; - op->func_doc = NULL; - op->func_classobj = NULL; - op->func_globals = globals; - Py_INCREF(op->func_globals); - Py_XINCREF(code); - op->func_code = code; - op->defaults_pyobjects = 0; - op->defaults = NULL; - op->defaults_tuple = NULL; - op->defaults_kwdict = NULL; - op->defaults_getter = NULL; - op->func_annotations = NULL; - PyObject_GC_Track(op); - return (PyObject *) op; -} -static int -__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) -{ - Py_CLEAR(m->func_closure); - Py_CLEAR(m->func.m_module); - Py_CLEAR(m->func_dict); - Py_CLEAR(m->func_name); - Py_CLEAR(m->func_qualname); - Py_CLEAR(m->func_doc); - Py_CLEAR(m->func_globals); - Py_CLEAR(m->func_code); - Py_CLEAR(m->func_classobj); - Py_CLEAR(m->defaults_tuple); - Py_CLEAR(m->defaults_kwdict); - Py_CLEAR(m->func_annotations); - if (m->defaults) { - PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); - int i; - for (i = 0; i < m->defaults_pyobjects; i++) - Py_XDECREF(pydefaults[i]); - PyObject_Free(m->defaults); - m->defaults = NULL; - } - return 0; -} -static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) -{ - if (__Pyx_CyFunction_weakreflist(m) != NULL) - PyObject_ClearWeakRefs((PyObject *) m); - __Pyx_CyFunction_clear(m); - PyObject_GC_Del(m); -} -static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) -{ - PyObject_GC_UnTrack(m); - __Pyx__CyFunction_dealloc(m); -} -static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) -{ - Py_VISIT(m->func_closure); - Py_VISIT(m->func.m_module); - Py_VISIT(m->func_dict); - Py_VISIT(m->func_name); - Py_VISIT(m->func_qualname); - Py_VISIT(m->func_doc); - Py_VISIT(m->func_globals); - Py_VISIT(m->func_code); - Py_VISIT(m->func_classobj); - Py_VISIT(m->defaults_tuple); - Py_VISIT(m->defaults_kwdict); - if (m->defaults) { - PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); - int i; - for (i = 0; i < m->defaults_pyobjects; i++) - Py_VISIT(pydefaults[i]); - } - return 0; -} -static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type) -{ - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) { - Py_INCREF(func); - return func; - } - if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) { - if (type == NULL) - type = (PyObject *)(Py_TYPE(obj)); - return __Pyx_PyMethod_New(func, type, (PyObject *)(Py_TYPE(type))); - } - if (obj == Py_None) - obj = NULL; - return __Pyx_PyMethod_New(func, obj, type); -} -static PyObject* -__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) -{ -#if PY_MAJOR_VERSION >= 3 - return PyUnicode_FromFormat("<cyfunction %U at %p>", - op->func_qualname, (void *)op); -#else - return PyString_FromFormat("<cyfunction %s at %p>", - PyString_AsString(op->func_qualname), (void *)op); -#endif -} -static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { - PyCFunctionObject* f = (PyCFunctionObject*)func; - PyCFunction meth = f->m_ml->ml_meth; - Py_ssize_t size; - switch (f->m_ml->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { - case METH_VARARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) - return (*meth)(self, arg); - break; - case METH_VARARGS | METH_KEYWORDS: - return (*(PyCFunctionWithKeywords)meth)(self, arg, kw); - case METH_NOARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { - size = PyTuple_GET_SIZE(arg); - if (likely(size == 0)) - return (*meth)(self, NULL); - PyErr_Format(PyExc_TypeError, - "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", - f->m_ml->ml_name, size); - return NULL; - } - break; - case METH_O: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { - size = PyTuple_GET_SIZE(arg); - if (likely(size == 1)) { - PyObject *result, *arg0; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - arg0 = PyTuple_GET_ITEM(arg, 0); - #else - arg0 = PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; - #endif - result = (*meth)(self, arg0); - #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) - Py_DECREF(arg0); - #endif - return result; - } - PyErr_Format(PyExc_TypeError, - "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", - f->m_ml->ml_name, size); - return NULL; - } - break; - default: - PyErr_SetString(PyExc_SystemError, "Bad call flags in " - "__Pyx_CyFunction_Call. METH_OLDARGS is no " - "longer supported!"); - return NULL; - } - PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", - f->m_ml->ml_name); - return NULL; -} -static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { - return __Pyx_CyFunction_CallMethod(func, ((PyCFunctionObject*)func)->m_self, arg, kw); -} -static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { - PyObject *result; - __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; - if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { - Py_ssize_t argc; - PyObject *new_args; - PyObject *self; - argc = PyTuple_GET_SIZE(args); - new_args = PyTuple_GetSlice(args, 1, argc); - if (unlikely(!new_args)) - return NULL; - self = PyTuple_GetItem(args, 0); - if (unlikely(!self)) { - Py_DECREF(new_args); - return NULL; - } - result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); - Py_DECREF(new_args); - } else { - result = __Pyx_CyFunction_Call(func, args, kw); - } - return result; -} -static PyTypeObject __pyx_CyFunctionType_type = { - PyVarObject_HEAD_INIT(0, 0) - "cython_function_or_method", - sizeof(__pyx_CyFunctionObject), - 0, - (destructor) __Pyx_CyFunction_dealloc, - 0, - 0, - 0, -#if PY_MAJOR_VERSION < 3 - 0, -#else - 0, -#endif - (reprfunc) __Pyx_CyFunction_repr, - 0, - 0, - 0, - 0, - __Pyx_CyFunction_CallAsMethod, - 0, - 0, - 0, - 0, - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, - 0, - (traverseproc) __Pyx_CyFunction_traverse, - (inquiry) __Pyx_CyFunction_clear, - 0, -#if PY_VERSION_HEX < 0x030500A0 - offsetof(__pyx_CyFunctionObject, func_weakreflist), -#else - offsetof(PyCFunctionObject, m_weakreflist), -#endif - 0, - 0, - __pyx_CyFunction_methods, - __pyx_CyFunction_members, - __pyx_CyFunction_getsets, - 0, - 0, - __Pyx_CyFunction_descr_get, - 0, - offsetof(__pyx_CyFunctionObject, func_dict), - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, -#if PY_VERSION_HEX >= 0x030400a1 - 0, -#endif -}; -static int __pyx_CyFunction_init(void) { - __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); - if (unlikely(__pyx_CyFunctionType == NULL)) { - return -1; - } - return 0; -} -static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults = PyObject_Malloc(size); - if (unlikely(!m->defaults)) - return PyErr_NoMemory(); - memset(m->defaults, 0, size); - m->defaults_pyobjects = pyobjects; - return m->defaults; -} -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults_tuple = tuple; - Py_INCREF(tuple); -} -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults_kwdict = dict; - Py_INCREF(dict); -} -static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->func_annotations = dict; - Py_INCREF(dict); -} - -/* Globals */ - static PyObject* __Pyx_Globals(void) { - Py_ssize_t i; - PyObject *names; - PyObject *globals = __pyx_d; - Py_INCREF(globals); - names = PyObject_Dir(__pyx_m); - if (!names) - goto bad; - for (i = PyList_GET_SIZE(names)-1; i >= 0; i--) { -#if CYTHON_COMPILING_IN_PYPY - PyObject* name = PySequence_ITEM(names, i); - if (!name) - goto bad; -#else - PyObject* name = PyList_GET_ITEM(names, i); -#endif - if (!PyDict_Contains(globals, name)) { - PyObject* value = __Pyx_GetAttr(__pyx_m, name); - if (!value) { -#if CYTHON_COMPILING_IN_PYPY - Py_DECREF(name); -#endif - goto bad; - } - if (PyDict_SetItem(globals, name, value) < 0) { -#if CYTHON_COMPILING_IN_PYPY - Py_DECREF(name); -#endif - Py_DECREF(value); - goto bad; - } - } -#if CYTHON_COMPILING_IN_PYPY - Py_DECREF(name); -#endif - } - Py_DECREF(names); - return globals; -bad: - Py_XDECREF(names); - Py_XDECREF(globals); - return NULL; -} - -/* CLineInTraceback */ - #ifndef CYTHON_CLINE_IN_TRACEBACK -static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) { - PyObject *use_cline; - PyObject *ptype, *pvalue, *ptraceback; -#if CYTHON_COMPILING_IN_CPYTHON - PyObject **cython_runtime_dict; -#endif - if (unlikely(!__pyx_cython_runtime)) { - return c_line; - } - __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); -#if CYTHON_COMPILING_IN_CPYTHON - cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); - if (likely(cython_runtime_dict)) { - use_cline = __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback); - } else -#endif - { - PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); - if (use_cline_obj) { - use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; - Py_DECREF(use_cline_obj); - } else { - PyErr_Clear(); - use_cline = NULL; - } - } - if (!use_cline) { - c_line = 0; - PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); - } - else if (PyObject_Not(use_cline) != 0) { - c_line = 0; - } - __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); - return c_line; -} -#endif - -/* CodeObjectCache */ - static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { - int start = 0, mid = 0, end = count - 1; - if (end >= 0 && code_line > entries[end].code_line) { - return count; - } - while (start < end) { - mid = start + (end - start) / 2; - if (code_line < entries[mid].code_line) { - end = mid; - } else if (code_line > entries[mid].code_line) { - start = mid + 1; - } else { - return mid; - } - } - if (code_line <= entries[mid].code_line) { - return mid; - } else { - return mid + 1; - } -} -static PyCodeObject *__pyx_find_code_object(int code_line) { - PyCodeObject* code_object; - int pos; - if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { - return NULL; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { - return NULL; - } - code_object = __pyx_code_cache.entries[pos].code_object; - Py_INCREF(code_object); - return code_object; -} -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { - int pos, i; - __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; - if (unlikely(!code_line)) { - return; - } - if (unlikely(!entries)) { - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); - if (likely(entries)) { - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = 64; - __pyx_code_cache.count = 1; - entries[0].code_line = code_line; - entries[0].code_object = code_object; - Py_INCREF(code_object); - } - return; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { - PyCodeObject* tmp = entries[pos].code_object; - entries[pos].code_object = code_object; - Py_DECREF(tmp); - return; - } - if (__pyx_code_cache.count == __pyx_code_cache.max_count) { - int new_max = __pyx_code_cache.max_count + 64; - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( - __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry)); - if (unlikely(!entries)) { - return; - } - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = new_max; - } - for (i=__pyx_code_cache.count; i>pos; i--) { - entries[i] = entries[i-1]; - } - entries[pos].code_line = code_line; - entries[pos].code_object = code_object; - __pyx_code_cache.count++; - Py_INCREF(code_object); -} - -/* AddTraceback */ - #include "compile.h" -#include "frameobject.h" -#include "traceback.h" -static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( - const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyObject *py_srcfile = 0; - PyObject *py_funcname = 0; - #if PY_MAJOR_VERSION < 3 - py_srcfile = PyString_FromString(filename); - #else - py_srcfile = PyUnicode_FromString(filename); - #endif - if (!py_srcfile) goto bad; - if (c_line) { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #else - py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #endif - } - else { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromString(funcname); - #else - py_funcname = PyUnicode_FromString(funcname); - #endif - } - if (!py_funcname) goto bad; - py_code = __Pyx_PyCode_New( - 0, - 0, - 0, - 0, - 0, - __pyx_empty_bytes, /*PyObject *code,*/ - __pyx_empty_tuple, /*PyObject *consts,*/ - __pyx_empty_tuple, /*PyObject *names,*/ - __pyx_empty_tuple, /*PyObject *varnames,*/ - __pyx_empty_tuple, /*PyObject *freevars,*/ - __pyx_empty_tuple, /*PyObject *cellvars,*/ - py_srcfile, /*PyObject *filename,*/ - py_funcname, /*PyObject *name,*/ - py_line, - __pyx_empty_bytes /*PyObject *lnotab*/ - ); - Py_DECREF(py_srcfile); - Py_DECREF(py_funcname); - return py_code; -bad: - Py_XDECREF(py_srcfile); - Py_XDECREF(py_funcname); - return NULL; -} -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyFrameObject *py_frame = 0; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - if (c_line) { - c_line = __Pyx_CLineForTraceback(tstate, c_line); - } - py_code = __pyx_find_code_object(c_line ? -c_line : py_line); - if (!py_code) { - py_code = __Pyx_CreateCodeObjectForTraceback( - funcname, c_line, py_line, filename); - if (!py_code) goto bad; - __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); - } - py_frame = PyFrame_New( - tstate, /*PyThreadState *tstate,*/ - py_code, /*PyCodeObject *code,*/ - __pyx_d, /*PyObject *globals,*/ - 0 /*PyObject *locals*/ - ); - if (!py_frame) goto bad; - __Pyx_PyFrame_SetLineNumber(py_frame, py_line); - PyTraceBack_Here(py_frame); -bad: - Py_XDECREF(py_code); - Py_XDECREF(py_frame); -} - -/* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { - const int neg_one = (int) -1, const_zero = (int) 0; - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(int) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(int) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -#endif - } - } else { - if (sizeof(int) <= sizeof(long)) { - return PyInt_FromLong((long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); -#endif - } - } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; - return _PyLong_FromByteArray(bytes, sizeof(int), - little, !is_unsigned); - } -} - -/* CIntFromPyVerify */ - #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) -#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) -#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ - {\ - func_type value = func_value;\ - if (sizeof(target_type) < sizeof(func_type)) {\ - if (unlikely(value != (func_type) (target_type) value)) {\ - func_type zero = 0;\ - if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ - return (target_type) -1;\ - if (is_unsigned && unlikely(value < zero))\ - goto raise_neg_overflow;\ - else\ - goto raise_overflow;\ - }\ - }\ - return (target_type) value;\ - } - -/* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { - const long neg_one = (long) -1, const_zero = (long) 0; - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(long) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(long) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -#endif - } - } else { - if (sizeof(long) <= sizeof(long)) { - return PyInt_FromLong((long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); -#endif - } - } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; - return _PyLong_FromByteArray(bytes, sizeof(long), - little, !is_unsigned); - } -} - -/* CIntFromPy */ - static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { - const int neg_one = (int) -1, const_zero = (int) 0; - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(int) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (int) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (int) 0; - case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { - return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { - return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { - return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (int) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(int) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (int) 0; - case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) - case -2: - if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - } -#endif - if (sizeof(int) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - int val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (int) -1; - } - } else { - int val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (int) -1; - val = __Pyx_PyInt_As_int(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to int"); - return (int) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to int"); - return (int) -1; -} - -/* CIntFromPy */ - static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { - const long neg_one = (long) -1, const_zero = (long) 0; - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(long) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (long) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { - return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { - return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { - return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (long) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(long) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) - case -2: - if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - } -#endif - if (sizeof(long) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - long val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (long) -1; - } - } else { - long val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (long) -1; - val = __Pyx_PyInt_As_long(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to long"); - return (long) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to long"); - return (long) -1; -} - -/* FastTypeChecks */ - #if CYTHON_COMPILING_IN_CPYTHON -static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { - while (a) { - a = a->tp_base; - if (a == b) - return 1; - } - return b == &PyBaseObject_Type; -} -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { - PyObject *mro; - if (a == b) return 1; - mro = a->tp_mro; - if (likely(mro)) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(mro); - for (i = 0; i < n; i++) { - if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) - return 1; - } - return 0; - } - return __Pyx_InBases(a, b); -} -#if PY_MAJOR_VERSION == 2 -static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { - PyObject *exception, *value, *tb; - int res; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&exception, &value, &tb); - res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - if (!res) { - res = PyObject_IsSubclass(err, exc_type2); - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - } - __Pyx_ErrRestore(exception, value, tb); - return res; -} -#else -static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { - int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0; - if (!res) { - res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); - } - return res; -} -#endif -static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - assert(PyExceptionClass_Check(exc_type)); - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; i<n; i++) { - if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1; - } -#endif - for (i=0; i<n; i++) { - PyObject *t = PyTuple_GET_ITEM(tuple, i); - #if PY_MAJOR_VERSION < 3 - if (likely(exc_type == t)) return 1; - #endif - if (likely(PyExceptionClass_Check(t))) { - if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1; - } else { - } - } - return 0; -} -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) { - if (likely(err == exc_type)) return 1; - if (likely(PyExceptionClass_Check(err))) { - if (likely(PyExceptionClass_Check(exc_type))) { - return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type); - } else if (likely(PyTuple_Check(exc_type))) { - return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type); - } else { - } - } - return PyErr_GivenExceptionMatches(err, exc_type); -} -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) { - assert(PyExceptionClass_Check(exc_type1)); - assert(PyExceptionClass_Check(exc_type2)); - if (likely(err == exc_type1 || err == exc_type2)) return 1; - if (likely(PyExceptionClass_Check(err))) { - return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2); - } - return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2)); -} -#endif - -/* CheckBinaryVersion */ - static int __Pyx_check_binary_version(void) { - char ctversion[4], rtversion[4]; - PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); - PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); - if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) { - char message[200]; - PyOS_snprintf(message, sizeof(message), - "compiletime version %s of module '%.100s' " - "does not match runtime version %s", - ctversion, __Pyx_MODULE_NAME, rtversion); - return PyErr_WarnEx(NULL, message, 1); - } - return 0; -} - -/* FunctionExport */ - static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) { - PyObject *d = 0; - PyObject *cobj = 0; - union { - void (*fp)(void); - void *p; - } tmp; - d = PyObject_GetAttrString(__pyx_m, (char *)"__pyx_capi__"); - if (!d) { - PyErr_Clear(); - d = PyDict_New(); - if (!d) - goto bad; - Py_INCREF(d); - if (PyModule_AddObject(__pyx_m, (char *)"__pyx_capi__", d) < 0) - goto bad; - } - tmp.fp = f; -#if PY_VERSION_HEX >= 0x02070000 - cobj = PyCapsule_New(tmp.p, sig, 0); -#else - cobj = PyCObject_FromVoidPtrAndDesc(tmp.p, (void *)sig, 0); -#endif - if (!cobj) - goto bad; - if (PyDict_SetItemString(d, name, cobj) < 0) - goto bad; - Py_DECREF(cobj); - Py_DECREF(d); - return 0; -bad: - Py_XDECREF(cobj); - Py_XDECREF(d); - return -1; -} - -/* ModuleImport */ - #ifndef __PYX_HAVE_RT_ImportModule -#define __PYX_HAVE_RT_ImportModule -static PyObject *__Pyx_ImportModule(const char *name) { - PyObject *py_name = 0; - PyObject *py_module = 0; - py_name = __Pyx_PyIdentifier_FromString(name); - if (!py_name) - goto bad; - py_module = PyImport_Import(py_name); - Py_DECREF(py_name); - return py_module; -bad: - Py_XDECREF(py_name); - return 0; -} -#endif - -/* TypeImport */ - #ifndef __PYX_HAVE_RT_ImportType -#define __PYX_HAVE_RT_ImportType -static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, - size_t size, int strict) -{ - PyObject *py_module = 0; - PyObject *result = 0; - PyObject *py_name = 0; - char warning[200]; - Py_ssize_t basicsize; -#ifdef Py_LIMITED_API - PyObject *py_basicsize; -#endif - py_module = __Pyx_ImportModule(module_name); - if (!py_module) - goto bad; - py_name = __Pyx_PyIdentifier_FromString(class_name); - if (!py_name) - goto bad; - result = PyObject_GetAttr(py_module, py_name); - Py_DECREF(py_name); - py_name = 0; - Py_DECREF(py_module); - py_module = 0; - if (!result) - goto bad; - if (!PyType_Check(result)) { - PyErr_Format(PyExc_TypeError, - "%.200s.%.200s is not a type object", - module_name, class_name); - goto bad; - } -#ifndef Py_LIMITED_API - basicsize = ((PyTypeObject *)result)->tp_basicsize; -#else - py_basicsize = PyObject_GetAttrString(result, "__basicsize__"); - if (!py_basicsize) - goto bad; - basicsize = PyLong_AsSsize_t(py_basicsize); - Py_DECREF(py_basicsize); - py_basicsize = 0; - if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred()) - goto bad; -#endif - if (!strict && (size_t)basicsize > size) { - PyOS_snprintf(warning, sizeof(warning), - "%s.%s size changed, may indicate binary incompatibility. Expected %zd, got %zd", - module_name, class_name, basicsize, size); - if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad; - } - else if ((size_t)basicsize != size) { - PyErr_Format(PyExc_ValueError, - "%.200s.%.200s has the wrong size, try recompiling. Expected %zd, got %zd", - module_name, class_name, basicsize, size); - goto bad; - } - return (PyTypeObject *)result; -bad: - Py_XDECREF(py_module); - Py_XDECREF(result); - return NULL; -} -#endif - -/* VoidPtrImport */ - #ifndef __PYX_HAVE_RT_ImportVoidPtr -#define __PYX_HAVE_RT_ImportVoidPtr -static int __Pyx_ImportVoidPtr(PyObject *module, const char *name, void **p, const char *sig) { - PyObject *d = 0; - PyObject *cobj = 0; - d = PyObject_GetAttrString(module, (char *)"__pyx_capi__"); - if (!d) - goto bad; - cobj = PyDict_GetItemString(d, name); - if (!cobj) { - PyErr_Format(PyExc_ImportError, - "%.200s does not export expected C variable %.200s", - PyModule_GetName(module), name); - goto bad; - } -#if PY_VERSION_HEX >= 0x02070000 - if (!PyCapsule_IsValid(cobj, sig)) { - PyErr_Format(PyExc_TypeError, - "C variable %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", - PyModule_GetName(module), name, sig, PyCapsule_GetName(cobj)); - goto bad; - } - *p = PyCapsule_GetPointer(cobj, sig); -#else - {const char *desc, *s1, *s2; - desc = (const char *)PyCObject_GetDesc(cobj); - if (!desc) - goto bad; - s1 = desc; s2 = sig; - while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; } - if (*s1 != *s2) { - PyErr_Format(PyExc_TypeError, - "C variable %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", - PyModule_GetName(module), name, sig, desc); - goto bad; - } - *p = PyCObject_AsVoidPtr(cobj);} -#endif - if (!(*p)) - goto bad; - Py_DECREF(d); - return 0; -bad: - Py_XDECREF(d); - return -1; -} -#endif - -/* FunctionImport */ - #ifndef __PYX_HAVE_RT_ImportFunction -#define __PYX_HAVE_RT_ImportFunction -static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) { - PyObject *d = 0; - PyObject *cobj = 0; - union { - void (*fp)(void); - void *p; - } tmp; - d = PyObject_GetAttrString(module, (char *)"__pyx_capi__"); - if (!d) - goto bad; - cobj = PyDict_GetItemString(d, funcname); - if (!cobj) { - PyErr_Format(PyExc_ImportError, - "%.200s does not export expected C function %.200s", - PyModule_GetName(module), funcname); - goto bad; - } -#if PY_VERSION_HEX >= 0x02070000 - if (!PyCapsule_IsValid(cobj, sig)) { - PyErr_Format(PyExc_TypeError, - "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", - PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj)); - goto bad; - } - tmp.p = PyCapsule_GetPointer(cobj, sig); -#else - {const char *desc, *s1, *s2; - desc = (const char *)PyCObject_GetDesc(cobj); - if (!desc) - goto bad; - s1 = desc; s2 = sig; - while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; } - if (*s1 != *s2) { - PyErr_Format(PyExc_TypeError, - "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", - PyModule_GetName(module), funcname, sig, desc); - goto bad; - } - tmp.p = PyCObject_AsVoidPtr(cobj);} -#endif - *f = tmp.fp; - if (!(*f)) - goto bad; - Py_DECREF(d); - return 0; -bad: - Py_XDECREF(d); - return -1; -} -#endif - -/* InitStrings */ - static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { - while (t->p) { - #if PY_MAJOR_VERSION < 3 - if (t->is_unicode) { - *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); - } else if (t->intern) { - *t->p = PyString_InternFromString(t->s); - } else { - *t->p = PyString_FromStringAndSize(t->s, t->n - 1); - } - #else - if (t->is_unicode | t->is_str) { - if (t->intern) { - *t->p = PyUnicode_InternFromString(t->s); - } else if (t->encoding) { - *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL); - } else { - *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1); - } - } else { - *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1); - } - #endif - if (!*t->p) - return -1; - if (PyObject_Hash(*t->p) == -1) - return -1; - ++t; - } - return 0; -} - -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { - return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); -} -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { - Py_ssize_t ignore; - return __Pyx_PyObject_AsStringAndSize(o, &ignore); -} -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -#if !CYTHON_PEP393_ENABLED -static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - char* defenc_c; - PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); - if (!defenc) return NULL; - defenc_c = PyBytes_AS_STRING(defenc); -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - { - char* end = defenc_c + PyBytes_GET_SIZE(defenc); - char* c; - for (c = defenc_c; c < end; c++) { - if ((unsigned char) (*c) >= 128) { - PyUnicode_AsASCIIString(o); - return NULL; - } - } - } -#endif - *length = PyBytes_GET_SIZE(defenc); - return defenc_c; -} -#else -static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - if (likely(PyUnicode_IS_ASCII(o))) { - *length = PyUnicode_GET_LENGTH(o); - return PyUnicode_AsUTF8(o); - } else { - PyUnicode_AsASCIIString(o); - return NULL; - } -#else - return PyUnicode_AsUTF8AndSize(o, length); -#endif -} -#endif -#endif -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT - if ( -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - __Pyx_sys_getdefaultencoding_not_ascii && -#endif - PyUnicode_Check(o)) { - return __Pyx_PyUnicode_AsStringAndSize(o, length); - } else -#endif -#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) - if (PyByteArray_Check(o)) { - *length = PyByteArray_GET_SIZE(o); - return PyByteArray_AS_STRING(o); - } else -#endif - { - char* result; - int r = PyBytes_AsStringAndSize(o, &result, length); - if (unlikely(r < 0)) { - return NULL; - } else { - return result; - } - } -} -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { - int is_true = x == Py_True; - if (is_true | (x == Py_False) | (x == Py_None)) return is_true; - else return PyObject_IsTrue(x); -} -static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { -#if PY_MAJOR_VERSION >= 3 - if (PyLong_Check(result)) { - if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, - "__int__ returned non-int (type %.200s). " - "The ability to return an instance of a strict subclass of int " - "is deprecated, and may be removed in a future version of Python.", - Py_TYPE(result)->tp_name)) { - Py_DECREF(result); - return NULL; - } - return result; - } -#endif - PyErr_Format(PyExc_TypeError, - "__%.4s__ returned non-%.4s (type %.200s)", - type_name, type_name, Py_TYPE(result)->tp_name); - Py_DECREF(result); - return NULL; -} -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { -#if CYTHON_USE_TYPE_SLOTS - PyNumberMethods *m; -#endif - const char *name = NULL; - PyObject *res = NULL; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x) || PyLong_Check(x))) -#else - if (likely(PyLong_Check(x))) -#endif - return __Pyx_NewRef(x); -#if CYTHON_USE_TYPE_SLOTS - m = Py_TYPE(x)->tp_as_number; - #if PY_MAJOR_VERSION < 3 - if (m && m->nb_int) { - name = "int"; - res = m->nb_int(x); - } - else if (m && m->nb_long) { - name = "long"; - res = m->nb_long(x); - } - #else - if (likely(m && m->nb_int)) { - name = "int"; - res = m->nb_int(x); - } - #endif -#else - if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { - res = PyNumber_Int(x); - } -#endif - if (likely(res)) { -#if PY_MAJOR_VERSION < 3 - if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { -#else - if (unlikely(!PyLong_CheckExact(res))) { -#endif - return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); - } - } - else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_TypeError, - "an integer is required"); - } - return res; -} -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { - Py_ssize_t ival; - PyObject *x; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(b))) { - if (sizeof(Py_ssize_t) >= sizeof(long)) - return PyInt_AS_LONG(b); - else - return PyInt_AsSsize_t(x); - } -#endif - if (likely(PyLong_CheckExact(b))) { - #if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)b)->ob_digit; - const Py_ssize_t size = Py_SIZE(b); - if (likely(__Pyx_sst_abs(size) <= 1)) { - ival = likely(size) ? digits[0] : 0; - if (size == -1) ival = -ival; - return ival; - } else { - switch (size) { - case 2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - } - } - #endif - return PyLong_AsSsize_t(b); - } - x = PyNumber_Index(b); - if (!x) return -1; - ival = PyInt_AsSsize_t(x); - Py_DECREF(x); - return ival; -} -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { - return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); -} -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { - return PyInt_FromSize_t(ival); -} - - -#endif /* Py_PYTHON_H */ diff --git a/python/gevent/_imap.py b/python/gevent/_imap.py deleted file mode 100644 index e976b67..0000000 --- a/python/gevent/_imap.py +++ /dev/null @@ -1,227 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (c) 2018 gevent -# cython: auto_pickle=False,embedsignature=True,always_allow_keywords=False,infer_types=True - -""" -Iterators across greenlets or AsyncResult objects. - -""" -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function - - -from gevent import _semaphore -from gevent import queue - - -__all__ = [ - 'IMapUnordered', - 'IMap', -] - -locals()['Greenlet'] = __import__('gevent').Greenlet -locals()['Semaphore'] = _semaphore.Semaphore -locals()['UnboundQueue'] = queue.UnboundQueue - - -class Failure(object): - __slots__ = ('exc', 'raise_exception') - - def __init__(self, exc, raise_exception=None): - self.exc = exc - self.raise_exception = raise_exception - - -def _raise_exc(failure): - # For cython. - if failure.raise_exception: - failure.raise_exception() - else: - raise failure.exc - -class IMapUnordered(Greenlet): # pylint:disable=undefined-variable - """ - At iterator of map results. - """ - - def __init__(self, func, iterable, spawn, maxsize=None, _zipped=False): - """ - An iterator that. - - :param callable spawn: The function we use to create new greenlets. - :keyword int maxsize: If given and not-None, specifies the maximum number of - finished results that will be allowed to accumulated awaiting the reader; - more than that number of results will cause map function greenlets to begin - to block. This is most useful is there is a great disparity in the speed of - the mapping code and the consumer and the results consume a great deal of resources. - Using a bound is more computationally expensive than not using a bound. - - .. versionchanged:: 1.1b3 - Added the *maxsize* parameter. - """ - Greenlet.__init__(self) # pylint:disable=undefined-variable - self.spawn = spawn - self._zipped = _zipped - self.func = func - self.iterable = iterable - self.queue = UnboundQueue() # pylint:disable=undefined-variable - - - if maxsize: - # Bounding the queue is not enough if we want to keep from - # accumulating objects; the result value will be around as - # the greenlet's result, blocked on self.queue.put(), and - # we'll go on to spawn another greenlet, which in turn can - # create the result. So we need a semaphore to prevent a - # greenlet from exiting while the queue is full so that we - # don't spawn the next greenlet (assuming that self.spawn - # is of course bounded). (Alternatively we could have the - # greenlet itself do the insert into the pool, but that - # takes some rework). - # - # Given the use of a semaphore at this level, sizing the queue becomes - # redundant, and that lets us avoid having to use self.link() instead - # of self.rawlink() to avoid having blocking methods called in the - # hub greenlet. - self._result_semaphore = Semaphore(maxsize) # pylint:disable=undefined-variable - else: - self._result_semaphore = None - - self._outstanding_tasks = 0 - # The index (zero based) of the maximum number of - # results we will have. - self._max_index = -1 - self.finished = False - - - # We're iterating in a different greenlet than we're running. - def __iter__(self): - return self - - def __next__(self): - if self._result_semaphore is not None: - self._result_semaphore.release() - value = self._inext() - if isinstance(value, Failure): - _raise_exc(value) - return value - - next = __next__ # Py2 - - def _inext(self): - return self.queue.get() - - def _ispawn(self, func, item, item_index): - if self._result_semaphore is not None: - self._result_semaphore.acquire() - self._outstanding_tasks += 1 - g = self.spawn(func, item) if not self._zipped else self.spawn(func, *item) - g._imap_task_index = item_index - g.rawlink(self._on_result) - return g - - def _run(self): # pylint:disable=method-hidden - try: - func = self.func - for item in self.iterable: - self._max_index += 1 - self._ispawn(func, item, self._max_index) - self._on_finish(None) - except BaseException as e: - self._on_finish(e) - raise - finally: - self.spawn = None - self.func = None - self.iterable = None - self._result_semaphore = None - - def _on_result(self, greenlet): - # This method will be called in the hub greenlet (we rawlink) - self._outstanding_tasks -= 1 - count = self._outstanding_tasks - finished = self.finished - ready = self.ready() - put_finished = False - - if ready and count <= 0 and not finished: - finished = self.finished = True - put_finished = True - - if greenlet.successful(): - self.queue.put(self._iqueue_value_for_success(greenlet)) - else: - self.queue.put(self._iqueue_value_for_failure(greenlet)) - - if put_finished: - self.queue.put(self._iqueue_value_for_self_finished()) - - def _on_finish(self, exception): - # Called in this greenlet. - if self.finished: - return - - if exception is not None: - self.finished = True - self.queue.put(self._iqueue_value_for_self_failure(exception)) - return - - if self._outstanding_tasks <= 0: - self.finished = True - self.queue.put(self._iqueue_value_for_self_finished()) - - def _iqueue_value_for_success(self, greenlet): - return greenlet.value - - def _iqueue_value_for_failure(self, greenlet): - return Failure(greenlet.exception, getattr(greenlet, '_raise_exception')) - - def _iqueue_value_for_self_finished(self): - return Failure(StopIteration()) - - def _iqueue_value_for_self_failure(self, exception): - return Failure(exception, self._raise_exception) - - -class IMap(IMapUnordered): - # A specialization of IMapUnordered that returns items - # in the order in which they were generated, not - # the order in which they finish. - - def __init__(self, *args, **kwargs): - # The result dictionary: {index: value} - self._results = {} - - # The index of the result to return next. - self.index = 0 - IMapUnordered.__init__(self, *args, **kwargs) - - def _inext(self): - try: - value = self._results.pop(self.index) - except KeyError: - # Wait for our index to finish. - while 1: - index, value = self.queue.get() - if index == self.index: - break - else: - self._results[index] = value - self.index += 1 - return value - - def _iqueue_value_for_success(self, greenlet): - return (greenlet._imap_task_index, IMapUnordered._iqueue_value_for_success(self, greenlet)) - - def _iqueue_value_for_failure(self, greenlet): - return (greenlet._imap_task_index, IMapUnordered._iqueue_value_for_failure(self, greenlet)) - - def _iqueue_value_for_self_finished(self): - return (self._max_index + 1, IMapUnordered._iqueue_value_for_self_finished(self)) - - def _iqueue_value_for_self_failure(self, exception): - return (self._max_index + 1, IMapUnordered._iqueue_value_for_self_failure(self, exception)) - -from gevent._util import import_c_accel -import_c_accel(globals(), 'gevent.__imap') diff --git a/python/gevent/_interfaces.py b/python/gevent/_interfaces.py deleted file mode 100644 index 099a6e2..0000000 --- a/python/gevent/_interfaces.py +++ /dev/null @@ -1,220 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (c) 2018 gevent contributors. See LICENSE for details. -""" -Interfaces gevent uses that don't belong any one place. - -This is not a public module, these interfaces are not -currently exposed to the public, they mostly exist for -documentation and testing purposes. - -.. versionadded:: 1.3b2 - -""" -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function - - -from gevent._util import Interface -from gevent._util import Attribute - -# pylint:disable=no-method-argument, unused-argument, no-self-argument - -__all__ = [ - 'ILoop', - 'IWatcher', -] - -class ILoop(Interface): - """ - The common interface expected for all event loops. - - .. caution:: - This is an internal, low-level interface. It may change - between minor versions of gevent. - - .. rubric:: Watchers - - The methods that create event loop watchers are `io`, `timer`, - `signal`, `idle`, `prepare`, `check`, `fork`, `async_`, `child`, - `stat`. These all return various types of :class:`IWatcher`. - - All of those methods have one or two common arguments. *ref* is a - boolean saying whether the event loop is allowed to exit even if - this watcher is still started. *priority* is event loop specific. - """ - - default = Attribute("Boolean indicating whether this is the default loop") - - def run(nowait=False, once=False): - """ - Run the event loop. - - This is usually called automatically by the hub greenlet, but - in special cases (when the hub is *not* running) you can use - this to control how the event loop runs (for example, to integrate - it with another event loop). - """ - - def now(): - """ - now() -> float - - Return the loop's notion of the current time. - - This may not necessarily be related to :func:`time.time` (it - may have a different starting point), but it must be expressed - in fractional seconds (the same *units* used by :func:`time.time`). - """ - - def update_now(): - """ - Update the loop's notion of the current time. - - .. versionadded:: 1.3 - In the past, this available as ``update``. This is still available as - an alias but will be removed in the future. - """ - - def destroy(): - """ - Clean up resources used by this loop. - - If you create loops - (especially loops that are not the default) you *should* call - this method when you are done with the loop. - - .. caution:: - - As an implementation note, the libev C loop implementation has a - finalizer (``__del__``) that destroys the object, but the libuv - and libev CFFI implementations do not. The C implementation may change. - - """ - - def io(fd, events, ref=True, priority=None): - """ - Create and return a new IO watcher for the given *fd*. - - *events* is a bitmask specifying which events to watch - for. 1 means read, and 2 means write. - """ - - def timer(after, repeat=0.0, ref=True, priority=None): - """ - Create and return a timer watcher that will fire after *after* seconds. - - If *repeat* is given, the timer will continue to fire every *repeat* seconds. - """ - - def signal(signum, ref=True, priority=None): - """ - Create and return a signal watcher for the signal *signum*, - one of the constants defined in :mod:`signal`. - - This is platform and event loop specific. - """ - - def idle(ref=True, priority=None): - """ - Create and return a watcher that fires when the event loop is idle. - """ - - def prepare(ref=True, priority=None): - """ - Create and return a watcher that fires before the event loop - polls for IO. - - .. caution:: This method is not supported by libuv. - """ - - def check(ref=True, priority=None): - """ - Create and return a watcher that fires after the event loop - polls for IO. - """ - - def fork(ref=True, priority=None): - """ - Create a watcher that fires when the process forks. - - Availability: POSIX - """ - - def async_(ref=True, priority=None): - """ - Create a watcher that fires when triggered, possibly - from another thread. - - .. versionchanged:: 1.3 - This was previously just named ``async``; for compatibility - with Python 3.7 where ``async`` is a keyword it was renamed. - On older versions of Python the old name is still around, but - it will be removed in the future. - """ - - def child(pid, trace=0, ref=True): - """ - Create a watcher that fires for events on the child with process ID *pid*. - - This is platform specific. - """ - - def stat(path, interval=0.0, ref=True, priority=None): - """ - Create a watcher that monitors the filesystem item at *path*. - - If the operating system doesn't support event notifications - from the filesystem, poll for changes every *interval* seconds. - """ - - def run_callback(func, *args): - """ - Run the *func* passing it *args* at the next opportune moment. - - This is a way of handing control to the event loop and deferring - an action. - """ - -class IWatcher(Interface): - """ - An event loop watcher. - - These objects call their *callback* function when the event - loop detects the event has happened. - - .. important:: You *must* call :meth:`close` when you are - done with this object to avoid leaking native resources. - """ - - def start(callback, *args, **kwargs): - """ - Have the event loop begin watching for this event. - - When the event is detected, *callback* will be called with - *args*. - - .. caution:: - - Not all watchers accept ``**kwargs``, - and some watchers define special meanings for certain keyword args. - """ - - def stop(): - """ - Have the event loop stop watching this event. - - In the future you may call :meth:`start` to begin watching - again. - """ - - def close(): - """ - Dispose of any native resources associated with the watcher. - - If we were active, stop. - - Attempting to operate on this object after calling close is - undefined. You should dispose of any references you have to it - after calling this method. - """ diff --git a/python/gevent/_local.cp36-win32.pyd b/python/gevent/_local.cp36-win32.pyd deleted file mode 100644 index 1fa6947dfa53bd3f0f134f2fc4da8e1eecf62f64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 105984 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 RpSL5TkZ^(z|1bXg{{Ut<34s6r diff --git a/python/gevent/_local.pxd b/python/gevent/_local.pxd deleted file mode 100644 index 331ce28..0000000 --- a/python/gevent/_local.pxd +++ /dev/null @@ -1,113 +0,0 @@ -# cython: auto_pickle=False - -cimport cython -from gevent._greenlet cimport Greenlet - -cdef bint _PYPY -cdef ref -cdef copy - -cdef object _marker -cdef str key_prefix -cdef bint _greenlet_imported - - -cdef extern from "greenlet/greenlet.h": - - ctypedef class greenlet.greenlet [object PyGreenlet]: - pass - - # These are actually macros and so much be included - # (defined) in each .pxd, as are the two functions - # that call them. - greenlet PyGreenlet_GetCurrent() - void PyGreenlet_Import() - -cdef inline greenlet getcurrent(): - return PyGreenlet_GetCurrent() - -cdef inline void greenlet_init(): - global _greenlet_imported - if not _greenlet_imported: - PyGreenlet_Import() - _greenlet_imported = True - - -cdef void _init() - -@cython.final -@cython.internal -cdef class _wrefdict(dict): - cdef object __weakref__ - -@cython.final -@cython.internal -cdef class _greenlet_deleted: - cdef object idt - cdef object wrdicts - - -@cython.final -@cython.internal -cdef class _local_deleted: - cdef str key - cdef object wrthread - cdef _greenlet_deleted greenlet_deleted - -@cython.final -@cython.internal -cdef class _localimpl: - cdef str key - cdef dict dicts - cdef tuple localargs - cdef dict localkwargs - cdef tuple localtypeid - cdef object __weakref__ - - -@cython.final -@cython.internal -cdef class _localimpl_dict_entry: - cdef object wrgreenlet - cdef dict localdict - -@cython.locals(localdict=dict, key=str, - greenlet_deleted=_greenlet_deleted, - local_deleted=_local_deleted) -cdef dict _localimpl_create_dict(_localimpl self, - greenlet greenlet, - object idt) - -cdef set _local_attrs - -cdef class local: - cdef _localimpl _local__impl - cdef set _local_type_get_descriptors - cdef set _local_type_set_or_del_descriptors - cdef set _local_type_del_descriptors - cdef set _local_type_set_descriptors - cdef set _local_type_vars - cdef type _local_type - - @cython.locals(entry=_localimpl_dict_entry, - dct=dict, duplicate=dict, - instance=local) - cpdef local __copy__(local self) - - -@cython.locals(impl=_localimpl,dct=dict, - dct=dict, entry=_localimpl_dict_entry) -cdef inline dict _local_get_dict(local self) - -@cython.locals(entry=_localimpl_dict_entry) -cdef _local__copy_dict_from(local self, _localimpl impl, dict duplicate) - -@cython.locals(mro=list, gets=set, dels=set, set_or_del=set, - type_self=type, type_attr=type, - sets=set) -cdef tuple _local_find_descriptors(local self) - -@cython.locals(result=list, local_impl=_localimpl, - entry=_localimpl_dict_entry, k=str, - greenlet_dict=dict) -cpdef all_local_dicts_for_greenlet(greenlet greenlet) diff --git a/python/gevent/_monitor.py b/python/gevent/_monitor.py deleted file mode 100644 index 2c4ef03..0000000 --- a/python/gevent/_monitor.py +++ /dev/null @@ -1,325 +0,0 @@ -# Copyright (c) 2018 gevent. See LICENSE for details. -from __future__ import print_function, absolute_import, division - -import os -import sys - -from weakref import ref as wref - -from greenlet import getcurrent - -from gevent import config as GEVENT_CONFIG -from gevent.monkey import get_original -from gevent.events import notify -from gevent.events import EventLoopBlocked -from gevent.events import MemoryUsageThresholdExceeded -from gevent.events import MemoryUsageUnderThreshold -from gevent.events import IPeriodicMonitorThread -from gevent.events import implementer - -from gevent._tracer import GreenletTracer -from gevent._compat import thread_mod_name -from gevent._compat import perf_counter - - - -__all__ = [ - 'PeriodicMonitoringThread', -] - -get_thread_ident = get_original(thread_mod_name, 'get_ident') -start_new_thread = get_original(thread_mod_name, 'start_new_thread') -thread_sleep = get_original('time', 'sleep') - - - -class MonitorWarning(RuntimeWarning): - """The type of warnings we emit.""" - - -class _MonitorEntry(object): - - __slots__ = ('function', 'period', 'last_run_time') - - def __init__(self, function, period): - self.function = function - self.period = period - self.last_run_time = 0 - - def __eq__(self, other): - return self.function == other.function and self.period == other.period - - def __repr__(self): - return repr((self.function, self.period, self.last_run_time)) - - -@implementer(IPeriodicMonitorThread) -class PeriodicMonitoringThread(object): - # This doesn't extend threading.Thread because that gets monkey-patched. - # We use the low-level 'start_new_thread' primitive instead. - - # The amount of seconds we will sleep when we think we have nothing - # to do. - inactive_sleep_time = 2.0 - - # The absolute minimum we will sleep, regardless of - # what particular monitoring functions want to say. - min_sleep_time = 0.005 - - # The minimum period in seconds at which we will check memory usage. - # Getting memory usage is fairly expensive. - min_memory_monitor_period = 2 - - # A list of _MonitorEntry objects: [(function(hub), period, last_run_time))] - # The first entry is always our entry for self.monitor_blocking - _monitoring_functions = None - - # The calculated min sleep time for the monitoring functions list. - _calculated_sleep_time = None - - # A boolean value that also happens to capture the - # memory usage at the time we exceeded the threshold. Reset - # to 0 when we go back below. - _memory_exceeded = 0 - - # The instance of GreenletTracer we're using - _greenlet_tracer = None - - def __init__(self, hub): - self._hub_wref = wref(hub, self._on_hub_gc) - self.should_run = True - - # Must be installed in the thread that the hub is running in; - # the trace function is threadlocal - assert get_thread_ident() == hub.thread_ident - self._greenlet_tracer = GreenletTracer() - - self._monitoring_functions = [_MonitorEntry(self.monitor_blocking, - GEVENT_CONFIG.max_blocking_time)] - self._calculated_sleep_time = GEVENT_CONFIG.max_blocking_time - # Create the actual monitoring thread. This is effectively a "daemon" - # thread. - self.monitor_thread_ident = start_new_thread(self, ()) - - # We must track the PID to know if your thread has died after a fork - self.pid = os.getpid() - - def _on_fork(self): - # Pseudo-standard method that resolver_ares and threadpool - # also have, called by hub.reinit() - pid = os.getpid() - if pid != self.pid: - self.pid = pid - self.monitor_thread_ident = start_new_thread(self, ()) - - @property - def hub(self): - return self._hub_wref() - - - def monitoring_functions(self): - # Return a list of _MonitorEntry objects - - # Update max_blocking_time each time. - mbt = GEVENT_CONFIG.max_blocking_time # XXX: Events so we know when this changes. - if mbt != self._monitoring_functions[0].period: - self._monitoring_functions[0].period = mbt - self._calculated_sleep_time = min(x.period for x in self._monitoring_functions) - return self._monitoring_functions - - def add_monitoring_function(self, function, period): - if not callable(function): - raise ValueError("function must be callable") - - if period is None: - # Remove. - self._monitoring_functions = [ - x for x in self._monitoring_functions - if x.function != function - ] - elif period <= 0: - raise ValueError("Period must be positive.") - else: - # Add or update period - entry = _MonitorEntry(function, period) - self._monitoring_functions = [ - x if x.function != function else entry - for x in self._monitoring_functions - ] - if entry not in self._monitoring_functions: - self._monitoring_functions.append(entry) - self._calculated_sleep_time = min(x.period for x in self._monitoring_functions) - - def calculate_sleep_time(self): - min_sleep = self._calculated_sleep_time - if min_sleep <= 0: - # Everyone wants to be disabled. Sleep for a longer period of - # time than usual so we don't spin unnecessarily. We might be - # enabled again in the future. - return self.inactive_sleep_time - return max((min_sleep, self.min_sleep_time)) - - def kill(self): - if not self.should_run: - # Prevent overwriting trace functions. - return - # Stop this monitoring thread from running. - self.should_run = False - # Uninstall our tracing hook - self._greenlet_tracer.kill() - - def _on_hub_gc(self, _): - self.kill() - - def __call__(self): - # The function that runs in the monitoring thread. - # We cannot use threading.current_thread because it would - # create an immortal DummyThread object. - getcurrent().gevent_monitoring_thread = wref(self) - - try: - while self.should_run: - functions = self.monitoring_functions() - assert functions - sleep_time = self.calculate_sleep_time() - - thread_sleep(sleep_time) - - # Make sure the hub is still around, and still active, - # and keep it around while we are here. - hub = self.hub - if not hub: - self.kill() - - if self.should_run: - this_run = perf_counter() - for entry in functions: - f = entry.function - period = entry.period - last_run = entry.last_run_time - if period and last_run + period <= this_run: - entry.last_run_time = this_run - f(hub) - del hub # break our reference to hub while we sleep - - except SystemExit: - pass - except: # pylint:disable=bare-except - # We're a daemon thread, so swallow any exceptions that get here - # during interpreter shutdown. - if not sys or not sys.stderr: # pragma: no cover - # Interpreter is shutting down - pass - else: - hub = self.hub - if hub is not None: - # XXX: This tends to do bad things like end the process, because we - # try to switch *threads*, which can't happen. Need something better. - hub.handle_error(self, *sys.exc_info()) - - def monitor_blocking(self, hub): - # Called periodically to see if the trace function has - # fired to switch greenlets. If not, we will print - # the greenlet tree. - - # For tests, we return a true value when we think we found something - # blocking - - did_block = self._greenlet_tracer.did_block_hub(hub) - if not did_block: - return - - active_greenlet = did_block[1] - report = self._greenlet_tracer.did_block_hub_report( - hub, active_greenlet, - dict(greenlet_stacks=False, current_thread_ident=self.monitor_thread_ident)) - - stream = hub.exception_stream - for line in report: - # Printing line by line may interleave with other things, - # but it should also prevent a "reentrant call to print" - # when the report is large. - print(line, file=stream) - - notify(EventLoopBlocked(active_greenlet, GEVENT_CONFIG.max_blocking_time, report)) - return (active_greenlet, report) - - def ignore_current_greenlet_blocking(self): - self._greenlet_tracer.ignore_current_greenlet_blocking() - - def monitor_current_greenlet_blocking(self): - self._greenlet_tracer.monitor_current_greenlet_blocking() - - def _get_process(self): # pylint:disable=method-hidden - try: - # The standard library 'resource' module doesn't provide - # a standard way to get the RSS measure, only the maximum. - # You might be tempted to try to compute something by adding - # together text and data sizes, but on many systems those come back - # zero. So our only option is psutil. - from psutil import Process, AccessDenied - # Make sure it works (why would we be denied access to our own process?) - try: - proc = Process() - proc.memory_full_info() - except AccessDenied: # pragma: no cover - proc = None - except ImportError: - proc = None - - self._get_process = lambda: proc - return proc - - def can_monitor_memory_usage(self): - return self._get_process() is not None - - def install_monitor_memory_usage(self): - # Start monitoring memory usage, if possible. - # If not possible, emit a warning. - if not self.can_monitor_memory_usage(): - import warnings - warnings.warn("Unable to monitor memory usage. Install psutil.", - MonitorWarning) - return - - self.add_monitoring_function(self.monitor_memory_usage, - max(GEVENT_CONFIG.memory_monitor_period, - self.min_memory_monitor_period)) - - def monitor_memory_usage(self, _hub): - max_allowed = GEVENT_CONFIG.max_memory_usage - if not max_allowed: - # They disabled it. - return -1 # value for tests - - rusage = self._get_process().memory_full_info() - # uss only documented available on Windows, Linux, and OS X. - # If not available, fall back to rss as an aproximation. - mem_usage = getattr(rusage, 'uss', 0) or rusage.rss - - event = None # Return value for tests - - if mem_usage > max_allowed: - if mem_usage > self._memory_exceeded: - # We're still growing - event = MemoryUsageThresholdExceeded( - mem_usage, max_allowed, rusage) - notify(event) - self._memory_exceeded = mem_usage - else: - # we're below. Were we above it last time? - if self._memory_exceeded: - event = MemoryUsageUnderThreshold( - mem_usage, max_allowed, rusage, self._memory_exceeded) - notify(event) - self._memory_exceeded = 0 - - return event - - def __repr__(self): - return '<%s at %s in thread %s greenlet %r for %r>' % ( - self.__class__.__name__, - hex(id(self)), - hex(self.monitor_thread_ident), - getcurrent(), - self._hub_wref()) diff --git a/python/gevent/_patcher.py b/python/gevent/_patcher.py deleted file mode 100644 index 2ced50c..0000000 --- a/python/gevent/_patcher.py +++ /dev/null @@ -1,127 +0,0 @@ -# Copyright 2018 gevent. See LICENSE for details. - -# Portions of the following are inspired by code from eventlet. I -# believe they are distinct enough that no eventlet copyright would -# apply (they are not a copy or substantial portion of the eventlot -# code). - -# Added in gevent 1.3a2. Not public in that release. - -from __future__ import absolute_import, print_function - -import importlib -import sys - -from gevent._compat import PY3 -from gevent._compat import iteritems -from gevent._compat import imp_acquire_lock -from gevent._compat import imp_release_lock - - -from gevent.builtins import __import__ as _import - - -MAPPING = { - 'gevent.local': '_threading_local', - 'gevent.socket': 'socket', - 'gevent.select': 'select', - 'gevent.ssl': 'ssl', - 'gevent.thread': '_thread' if PY3 else 'thread', - 'gevent.subprocess': 'subprocess', - 'gevent.os': 'os', - 'gevent.threading': 'threading', - 'gevent.builtins': 'builtins' if PY3 else '__builtin__', - 'gevent.signal': 'signal', - 'gevent.time': 'time', - 'gevent.queue': 'queue' if PY3 else 'Queue', -} - -_PATCH_PREFIX = '__g_patched_module_' - -class _SysModulesPatcher(object): - - def __init__(self, importing): - self._saved = {} - self.importing = importing - self.green_modules = { - stdlib_name: importlib.import_module(gevent_name) - for gevent_name, stdlib_name - in iteritems(MAPPING) - } - self.orig_imported = frozenset(sys.modules) - - def _save(self): - for modname in self.green_modules: - self._saved[modname] = sys.modules.get(modname, None) - - self._saved[self.importing] = sys.modules.get(self.importing, None) - # Anything we've already patched regains its original name during this - # process - for mod_name, mod in iteritems(sys.modules): - if mod_name.startswith(_PATCH_PREFIX): - orig_mod_name = mod_name[len(_PATCH_PREFIX):] - self._saved[mod_name] = sys.modules.get(orig_mod_name, None) - self.green_modules[orig_mod_name] = mod - - def _replace(self): - # Cover the target modules so that when you import the module it - # sees only the patched versions - for name, mod in iteritems(self.green_modules): - sys.modules[name] = mod - - def _restore(self): - for modname, mod in iteritems(self._saved): - if mod is not None: - sys.modules[modname] = mod - else: - try: - del sys.modules[modname] - except KeyError: - pass - # Anything from the same package tree we imported this time - # needs to be saved so we can restore it later, and so it doesn't - # leak into the namespace. - pkg_prefix = self.importing.split('.', 1)[0] - for modname, mod in list(iteritems(sys.modules)): - if (modname not in self.orig_imported - and modname != self.importing - and not modname.startswith(_PATCH_PREFIX) - and modname.startswith(pkg_prefix)): - sys.modules[_PATCH_PREFIX + modname] = mod - del sys.modules[modname] - - def __exit__(self, t, v, tb): - try: - self._restore() - finally: - imp_release_lock() - - def __enter__(self): - imp_acquire_lock() - self._save() - self._replace() - - -def import_patched(module_name): - """ - Import *module_name* with gevent monkey-patches active, - and return the greened module. - - Any sub-modules that were imported by the package are also - saved. - - """ - patched_name = _PATCH_PREFIX + module_name - if patched_name in sys.modules: - return sys.modules[patched_name] - - - # Save the current module state, and restore on exit, - # capturing desirable changes in the modules package. - with _SysModulesPatcher(module_name): - sys.modules.pop(module_name, None) - - module = _import(module_name, {}, {}, module_name.split('.')[:-1]) - sys.modules[patched_name] = module - - return module diff --git a/python/gevent/_queue.cp36-win32.pyd b/python/gevent/_queue.cp36-win32.pyd deleted file mode 100644 index f34627338c8768276e294c8b123ebef530712cbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171520 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 diff --git a/python/gevent/_queue.pxd b/python/gevent/_queue.pxd deleted file mode 100644 index d4d9da7..0000000 --- a/python/gevent/_queue.pxd +++ /dev/null @@ -1,74 +0,0 @@ -cimport cython -from gevent.__waiter cimport Waiter -from gevent._event cimport Event - -cdef _heappush -cdef _heappop -cdef _heapify - -@cython.final -cdef _safe_remove(deq, item) - -@cython.final -@cython.internal -cdef class ItemWaiter(Waiter): - cdef readonly item - cdef readonly queue - -cdef class Queue: - cdef __weakref__ - cdef readonly hub - cdef readonly queue - - cdef getters - cdef putters - - cdef _event_unlock - cdef Py_ssize_t _maxsize - - cpdef _get(self) - cpdef _put(self, item) - cpdef _peek(self) - - cpdef Py_ssize_t qsize(self) - cpdef bint empty(self) - cpdef bint full(self) - - cpdef put(self, item, block=*, timeout=*) - cpdef put_nowait(self, item) - - cdef __get_or_peek(self, method, block, timeout) - - cpdef get(self, block=*, timeout=*) - cpdef get_nowait(self) - cpdef peek(self, block=*, timeout=*) - cpdef peek_nowait(self) - - cdef _schedule_unlock(self) - -@cython.final -cdef class UnboundQueue(Queue): - pass - -cdef class PriorityQueue(Queue): - pass - -cdef class LifoQueue(Queue): - pass - -cdef class JoinableQueue(Queue): - cdef Event _cond - cdef readonly int unfinished_tasks - - -cdef class Channel: - cdef __weakref__ - cdef readonly getters - cdef readonly putters - cdef readonly hub - cdef _event_unlock - - cpdef get(self, block=*, timeout=*) - cpdef get_nowait(self) - - cdef _schedule_unlock(self) diff --git a/python/gevent/_semaphore.c b/python/gevent/_semaphore.c deleted file mode 100644 index 54b9cc2..0000000 --- a/python/gevent/_semaphore.c +++ /dev/null @@ -1,10292 +0,0 @@ -/* Generated by Cython 0.28.5 */ - -/* BEGIN: Cython Metadata -{ - "distutils": { - "depends": [ - "src/gevent/__semaphore.pxd", - "src\\gevent\\__semaphore.pxd" - ], - "include_dirs": [ - "C:\\Python36\\Include", - "deps" - ], - "name": "gevent.__semaphore", - "sources": [ - "src/gevent/_semaphore.py" - ] - }, - "module_name": "gevent.__semaphore" -} -END: Cython Metadata */ - -#define PY_SSIZE_T_CLEAN -#include "Python.h" -#ifndef Py_PYTHON_H - #error Python headers needed to compile C extensions, please install development version of Python. -#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) - #error Cython requires Python 2.6+ or Python 3.3+. -#else -#define CYTHON_ABI "0_28_5" -#define CYTHON_FUTURE_DIVISION 1 -#include <stddef.h> -#ifndef offsetof - #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) -#endif -#if !defined(WIN32) && !defined(MS_WINDOWS) - #ifndef __stdcall - #define __stdcall - #endif - #ifndef __cdecl - #define __cdecl - #endif - #ifndef __fastcall - #define __fastcall - #endif -#endif -#ifndef DL_IMPORT - #define DL_IMPORT(t) t -#endif -#ifndef DL_EXPORT - #define DL_EXPORT(t) t -#endif -#define __PYX_COMMA , -#ifndef HAVE_LONG_LONG - #if PY_VERSION_HEX >= 0x02070000 - #define HAVE_LONG_LONG - #endif -#endif -#ifndef PY_LONG_LONG - #define PY_LONG_LONG LONG_LONG -#endif -#ifndef Py_HUGE_VAL - #define Py_HUGE_VAL HUGE_VAL -#endif -#ifdef PYPY_VERSION - #define CYTHON_COMPILING_IN_PYPY 1 - #define CYTHON_COMPILING_IN_PYSTON 0 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #undef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 0 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #if PY_VERSION_HEX < 0x03050000 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #undef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #undef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 1 - #undef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 0 - #undef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 0 - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 -#elif defined(PYSTON_VERSION) - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_PYSTON 1 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 -#else - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_PYSTON 0 - #define CYTHON_COMPILING_IN_CPYTHON 1 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #if PY_VERSION_HEX < 0x02070000 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #elif !defined(CYTHON_USE_PYTYPE_LOOKUP) - #define CYTHON_USE_PYTYPE_LOOKUP 1 - #endif - #if PY_MAJOR_VERSION < 3 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #if PY_VERSION_HEX < 0x02070000 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #elif !defined(CYTHON_USE_PYLONG_INTERNALS) - #define CYTHON_USE_PYLONG_INTERNALS 1 - #endif - #ifndef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 1 - #endif - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #if PY_VERSION_HEX < 0x030300F0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #elif !defined(CYTHON_USE_UNICODE_WRITER) - #define CYTHON_USE_UNICODE_WRITER 1 - #endif - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #ifndef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 1 - #endif - #ifndef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 1 - #endif - #ifndef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT (0 && PY_VERSION_HEX >= 0x03050000) - #endif - #ifndef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1) - #endif -#endif -#if !defined(CYTHON_FAST_PYCCALL) -#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) -#endif -#if CYTHON_USE_PYLONG_INTERNALS - #include "longintrepr.h" - #undef SHIFT - #undef BASE - #undef MASK -#endif -#ifndef __has_attribute - #define __has_attribute(x) 0 -#endif -#ifndef __has_cpp_attribute - #define __has_cpp_attribute(x) 0 -#endif -#ifndef CYTHON_RESTRICT - #if defined(__GNUC__) - #define CYTHON_RESTRICT __restrict__ - #elif defined(_MSC_VER) && _MSC_VER >= 1400 - #define CYTHON_RESTRICT __restrict - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_RESTRICT restrict - #else - #define CYTHON_RESTRICT - #endif -#endif -#ifndef CYTHON_UNUSED -# if defined(__GNUC__) -# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -#endif -#ifndef CYTHON_MAYBE_UNUSED_VAR -# if defined(__cplusplus) - template<class T> void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } -# else -# define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) -# endif -#endif -#ifndef CYTHON_NCP_UNUSED -# if CYTHON_COMPILING_IN_CPYTHON -# define CYTHON_NCP_UNUSED -# else -# define CYTHON_NCP_UNUSED CYTHON_UNUSED -# endif -#endif -#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) -#ifdef _MSC_VER - #ifndef _MSC_STDINT_H_ - #if _MSC_VER < 1300 - typedef unsigned char uint8_t; - typedef unsigned int uint32_t; - #else - typedef unsigned __int8 uint8_t; - typedef unsigned __int32 uint32_t; - #endif - #endif -#else - #include <stdint.h> -#endif -#ifndef CYTHON_FALLTHROUGH - #if defined(__cplusplus) && __cplusplus >= 201103L - #if __has_cpp_attribute(fallthrough) - #define CYTHON_FALLTHROUGH [[fallthrough]] - #elif __has_cpp_attribute(clang::fallthrough) - #define CYTHON_FALLTHROUGH [[clang::fallthrough]] - #elif __has_cpp_attribute(gnu::fallthrough) - #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] - #endif - #endif - #ifndef CYTHON_FALLTHROUGH - #if __has_attribute(fallthrough) - #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) - #else - #define CYTHON_FALLTHROUGH - #endif - #endif - #if defined(__clang__ ) && defined(__apple_build_version__) - #if __apple_build_version__ < 7000000 - #undef CYTHON_FALLTHROUGH - #define CYTHON_FALLTHROUGH - #endif - #endif -#endif - -#ifndef CYTHON_INLINE - #if defined(__clang__) - #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) - #elif defined(__GNUC__) - #define CYTHON_INLINE __inline__ - #elif defined(_MSC_VER) - #define CYTHON_INLINE __inline - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_INLINE inline - #else - #define CYTHON_INLINE - #endif -#endif - -#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) - #define Py_OptimizeFlag 0 -#endif -#define __PYX_BUILD_PY_SSIZE_T "n" -#define CYTHON_FORMAT_SSIZE_T "z" -#if PY_MAJOR_VERSION < 3 - #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) - #define __Pyx_DefaultClassType PyClass_Type -#else - #define __Pyx_BUILTIN_MODULE_NAME "builtins" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) - #define __Pyx_DefaultClassType PyType_Type -#endif -#ifndef Py_TPFLAGS_CHECKTYPES - #define Py_TPFLAGS_CHECKTYPES 0 -#endif -#ifndef Py_TPFLAGS_HAVE_INDEX - #define Py_TPFLAGS_HAVE_INDEX 0 -#endif -#ifndef Py_TPFLAGS_HAVE_NEWBUFFER - #define Py_TPFLAGS_HAVE_NEWBUFFER 0 -#endif -#ifndef Py_TPFLAGS_HAVE_FINALIZE - #define Py_TPFLAGS_HAVE_FINALIZE 0 -#endif -#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) - #ifndef METH_FASTCALL - #define METH_FASTCALL 0x80 - #endif - typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); - typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, - Py_ssize_t nargs, PyObject *kwnames); -#else - #define __Pyx_PyCFunctionFast _PyCFunctionFast - #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords -#endif -#if CYTHON_FAST_PYCCALL -#define __Pyx_PyFastCFunction_Check(func)\ - ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))))) -#else -#define __Pyx_PyFastCFunction_Check(func) 0 -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) - #define PyObject_Malloc(s) PyMem_Malloc(s) - #define PyObject_Free(p) PyMem_Free(p) - #define PyObject_Realloc(p) PyMem_Realloc(p) -#endif -#if CYTHON_COMPILING_IN_PYSTON - #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) -#else - #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) -#endif -#if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000 - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#elif PY_VERSION_HEX >= 0x03060000 - #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() -#elif PY_VERSION_HEX >= 0x03000000 - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#else - #define __Pyx_PyThreadState_Current _PyThreadState_Current -#endif -#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) -#include "pythread.h" -#define Py_tss_NEEDS_INIT 0 -typedef int Py_tss_t; -static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { - *key = PyThread_create_key(); - return 0; // PyThread_create_key reports success always -} -static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { - Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); - *key = Py_tss_NEEDS_INIT; - return key; -} -static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { - PyObject_Free(key); -} -static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { - return *key != Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { - PyThread_delete_key(*key); - *key = Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { - return PyThread_set_key_value(*key, value); -} -static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { - return PyThread_get_key_value(*key); -} -#endif // TSS (Thread Specific Storage) API -#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) -#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) -#else -#define __Pyx_PyDict_NewPresized(n) PyDict_New() -#endif -#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION - #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) -#else - #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) -#endif -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS -#define __Pyx_PyDict_GetItemStr(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) -#else -#define __Pyx_PyDict_GetItemStr(dict, name) PyDict_GetItem(dict, name) -#endif -#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) - #define CYTHON_PEP393_ENABLED 1 - #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ - 0 : _PyUnicode_Ready((PyObject *)(op))) - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) - #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) - #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) - #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) -#else - #define CYTHON_PEP393_ENABLED 0 - #define PyUnicode_1BYTE_KIND 1 - #define PyUnicode_2BYTE_KIND 2 - #define PyUnicode_4BYTE_KIND 4 - #define __Pyx_PyUnicode_READY(op) (0) - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) - #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) - #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) - #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) -#endif -#if CYTHON_COMPILING_IN_PYPY - #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) -#else - #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ - PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) - #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) - #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) - #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) -#endif -#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) -#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) -#else - #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) -#endif -#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) - #define PyObject_ASCII(o) PyObject_Repr(o) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBaseString_Type PyUnicode_Type - #define PyStringObject PyUnicodeObject - #define PyString_Type PyUnicode_Type - #define PyString_Check PyUnicode_Check - #define PyString_CheckExact PyUnicode_CheckExact - #define PyObject_Unicode PyObject_Str -#endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) - #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) -#else - #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) - #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) -#endif -#ifndef PySet_CheckExact - #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) -#endif -#if CYTHON_ASSUME_SAFE_MACROS - #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) -#else - #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyIntObject PyLongObject - #define PyInt_Type PyLong_Type - #define PyInt_Check(op) PyLong_Check(op) - #define PyInt_CheckExact(op) PyLong_CheckExact(op) - #define PyInt_FromString PyLong_FromString - #define PyInt_FromUnicode PyLong_FromUnicode - #define PyInt_FromLong PyLong_FromLong - #define PyInt_FromSize_t PyLong_FromSize_t - #define PyInt_FromSsize_t PyLong_FromSsize_t - #define PyInt_AsLong PyLong_AsLong - #define PyInt_AS_LONG PyLong_AS_LONG - #define PyInt_AsSsize_t PyLong_AsSsize_t - #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask - #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask - #define PyNumber_Int PyNumber_Long -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBoolObject PyLongObject -#endif -#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY - #ifndef PyUnicode_InternFromString - #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) - #endif -#endif -#if PY_VERSION_HEX < 0x030200A4 - typedef long Py_hash_t; - #define __Pyx_PyInt_FromHash_t PyInt_FromLong - #define __Pyx_PyInt_AsHash_t PyInt_AsLong -#else - #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t - #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t -#endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : (Py_INCREF(func), func)) -#else - #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) -#endif -#if CYTHON_USE_ASYNC_SLOTS - #if PY_VERSION_HEX >= 0x030500B1 - #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods - #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) - #else - #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) - #endif -#else - #define __Pyx_PyType_AsAsync(obj) NULL -#endif -#ifndef __Pyx_PyAsyncMethodsStruct - typedef struct { - unaryfunc am_await; - unaryfunc am_aiter; - unaryfunc am_anext; - } __Pyx_PyAsyncMethodsStruct; -#endif - -#if defined(WIN32) || defined(MS_WINDOWS) - #define _USE_MATH_DEFINES -#endif -#include <math.h> -#ifdef NAN -#define __PYX_NAN() ((float) NAN) -#else -static CYTHON_INLINE float __PYX_NAN() { - float value; - memset(&value, 0xFF, sizeof(value)); - return value; -} -#endif -#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) -#define __Pyx_truncl trunc -#else -#define __Pyx_truncl truncl -#endif - - -#define __PYX_ERR(f_index, lineno, Ln_error) \ -{ \ - __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \ -} - -#ifndef __PYX_EXTERN_C - #ifdef __cplusplus - #define __PYX_EXTERN_C extern "C" - #else - #define __PYX_EXTERN_C extern - #endif -#endif - -#define __PYX_HAVE__gevent____semaphore -#define __PYX_HAVE_API__gevent____semaphore -/* Early includes */ -#include "greenlet/greenlet.h" -#ifdef _OPENMP -#include <omp.h> -#endif /* _OPENMP */ - -#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) -#define CYTHON_WITHOUT_ASSERTIONS -#endif - -typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; - const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; - -#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 -#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0 -#define __PYX_DEFAULT_STRING_ENCODING "" -#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString -#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#define __Pyx_uchar_cast(c) ((unsigned char)c) -#define __Pyx_long_cast(x) ((long)x) -#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ - (sizeof(type) < sizeof(Py_ssize_t)) ||\ - (sizeof(type) > sizeof(Py_ssize_t) &&\ - likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX) &&\ - (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ - v == (type)PY_SSIZE_T_MIN))) ||\ - (sizeof(type) == sizeof(Py_ssize_t) &&\ - (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX))) ) -#if defined (__cplusplus) && __cplusplus >= 201103L - #include <cstdlib> - #define __Pyx_sst_abs(value) std::abs(value) -#elif SIZEOF_INT >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) abs(value) -#elif SIZEOF_LONG >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) labs(value) -#elif defined (_MSC_VER) - #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) -#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define __Pyx_sst_abs(value) llabs(value) -#elif defined (__GNUC__) - #define __Pyx_sst_abs(value) __builtin_llabs(value) -#else - #define __Pyx_sst_abs(value) ((value<0) ? -value : value) -#endif -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); -#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) -#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) -#define __Pyx_PyBytes_FromString PyBytes_FromString -#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); -#if PY_MAJOR_VERSION < 3 - #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#else - #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize -#endif -#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) -#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) -#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) -#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) -#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) -static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { - const Py_UNICODE *u_end = u; - while (*u_end++) ; - return (size_t)(u_end - u - 1); -} -#define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) -#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode -#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode -#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) -#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); -#define __Pyx_PySequence_Tuple(obj)\ - (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); -#if CYTHON_ASSUME_SAFE_MACROS -#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) -#else -#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) -#endif -#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) -#if PY_MAJOR_VERSION >= 3 -#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) -#else -#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) -#endif -#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x)) -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII -static int __Pyx_sys_getdefaultencoding_not_ascii; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - PyObject* ascii_chars_u = NULL; - PyObject* ascii_chars_b = NULL; - const char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - if (strcmp(default_encoding_c, "ascii") == 0) { - __Pyx_sys_getdefaultencoding_not_ascii = 0; - } else { - char ascii_chars[128]; - int c; - for (c = 0; c < 128; c++) { - ascii_chars[c] = c; - } - __Pyx_sys_getdefaultencoding_not_ascii = 1; - ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); - if (!ascii_chars_u) goto bad; - ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); - if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { - PyErr_Format( - PyExc_ValueError, - "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", - default_encoding_c); - goto bad; - } - Py_DECREF(ascii_chars_u); - Py_DECREF(ascii_chars_b); - } - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - Py_XDECREF(ascii_chars_u); - Py_XDECREF(ascii_chars_b); - return -1; -} -#endif -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) -#else -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -static char* __PYX_DEFAULT_STRING_ENCODING; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c)); - if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; - strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - return -1; -} -#endif -#endif - - -/* Test for GCC > 2.95 */ -#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) - #define likely(x) __builtin_expect(!!(x), 1) - #define unlikely(x) __builtin_expect(!!(x), 0) -#else /* !__GNUC__ or GCC < 2.95 */ - #define likely(x) (x) - #define unlikely(x) (x) -#endif /* __GNUC__ */ -static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } - -static PyObject *__pyx_m = NULL; -static PyObject *__pyx_d; -static PyObject *__pyx_b; -static PyObject *__pyx_cython_runtime = NULL; -static PyObject *__pyx_empty_tuple; -static PyObject *__pyx_empty_bytes; -static PyObject *__pyx_empty_unicode; -static int __pyx_lineno; -static int __pyx_clineno = 0; -static const char * __pyx_cfilenm= __FILE__; -static const char *__pyx_filename; - - -static const char *__pyx_f[] = { - "src\\gevent\\_semaphore.py", - "src\\gevent\\__semaphore.pxd", - "src\\gevent\\__greenlet_primitives.pxd", -}; - -/*--- Type declarations ---*/ -struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet; -struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop; -struct __pyx_obj_6gevent_11__semaphore_Semaphore; -struct __pyx_obj_6gevent_11__semaphore_BoundedSemaphore; -struct __pyx_opt_args_6gevent_11__semaphore_9Semaphore_wait; -struct __pyx_opt_args_6gevent_11__semaphore_9Semaphore_acquire; - -/* "gevent/__semaphore.pxd":46 - * cpdef _notify_links(self) - * cdef _do_wait(self, object timeout) - * cpdef int wait(self, object timeout=*) except -1000 # <<<<<<<<<<<<<< - * cpdef bint acquire(self, int blocking=*, object timeout=*) except -1000 - * cpdef __enter__(self) - */ -struct __pyx_opt_args_6gevent_11__semaphore_9Semaphore_wait { - int __pyx_n; - PyObject *timeout; -}; - -/* "gevent/__semaphore.pxd":47 - * cdef _do_wait(self, object timeout) - * cpdef int wait(self, object timeout=*) except -1000 - * cpdef bint acquire(self, int blocking=*, object timeout=*) except -1000 # <<<<<<<<<<<<<< - * cpdef __enter__(self) - * cpdef __exit__(self, object t, object v, object tb) - */ -struct __pyx_opt_args_6gevent_11__semaphore_9Semaphore_acquire { - int __pyx_n; - int blocking; - PyObject *timeout; -}; - -/* "gevent/__greenlet_primitives.pxd":37 - * return PyGreenlet_Switch(self, NULL, NULL) - * - * cdef class TrackedRawGreenlet(greenlet): # <<<<<<<<<<<<<< - * pass - * - */ -struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet { - PyGreenlet __pyx_base; -}; - - -/* "gevent/__greenlet_primitives.pxd":40 - * pass - * - * cdef class SwitchOutGreenletWithLoop(TrackedRawGreenlet): # <<<<<<<<<<<<<< - * cdef public loop - * - */ -struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop { - struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet __pyx_base; - struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_vtab; - PyObject *loop; -}; - - -/* "gevent/__semaphore.pxd":32 - * - * - * cdef class Semaphore: # <<<<<<<<<<<<<< - * cdef public int counter - * cdef readonly list _links - */ -struct __pyx_obj_6gevent_11__semaphore_Semaphore { - PyObject_HEAD - struct __pyx_vtabstruct_6gevent_11__semaphore_Semaphore *__pyx_vtab; - int counter; - PyObject *_links; - PyObject *_notifier; - int _dirty; - PyObject *__weakref__; -}; - - -/* "gevent/__semaphore.pxd":51 - * cpdef __exit__(self, object t, object v, object tb) - * - * cdef class BoundedSemaphore(Semaphore): # <<<<<<<<<<<<<< - * cdef readonly int _initial_value - * - */ -struct __pyx_obj_6gevent_11__semaphore_BoundedSemaphore { - struct __pyx_obj_6gevent_11__semaphore_Semaphore __pyx_base; - int _initial_value; -}; - - - -/* "gevent/__greenlet_primitives.pxd":40 - * pass - * - * cdef class SwitchOutGreenletWithLoop(TrackedRawGreenlet): # <<<<<<<<<<<<<< - * cdef public loop - * - */ - -struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop { - PyObject *(*__pyx_switch)(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *, int __pyx_skip_dispatch); - PyObject *(*switch_out)(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *, int __pyx_skip_dispatch); -}; -static struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_vtabptr_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop; - - -/* "src/gevent/_semaphore.py":21 - * locals()['get_hub'] = __import__('gevent').get_hub - * - * class Semaphore(object): # <<<<<<<<<<<<<< - * """ - * Semaphore(value=1) -> Semaphore - */ - -struct __pyx_vtabstruct_6gevent_11__semaphore_Semaphore { - int (*locked)(struct __pyx_obj_6gevent_11__semaphore_Semaphore *, int __pyx_skip_dispatch); - int (*release)(struct __pyx_obj_6gevent_11__semaphore_Semaphore *, int __pyx_skip_dispatch); - PyObject *(*rawlink)(struct __pyx_obj_6gevent_11__semaphore_Semaphore *, PyObject *, int __pyx_skip_dispatch); - PyObject *(*unlink)(struct __pyx_obj_6gevent_11__semaphore_Semaphore *, PyObject *, int __pyx_skip_dispatch); - PyObject *(*_start_notify)(struct __pyx_obj_6gevent_11__semaphore_Semaphore *, int __pyx_skip_dispatch); - PyObject *(*_notify_links)(struct __pyx_obj_6gevent_11__semaphore_Semaphore *, int __pyx_skip_dispatch); - PyObject *(*_do_wait)(struct __pyx_obj_6gevent_11__semaphore_Semaphore *, PyObject *); - int (*wait)(struct __pyx_obj_6gevent_11__semaphore_Semaphore *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_11__semaphore_9Semaphore_wait *__pyx_optional_args); - int (*acquire)(struct __pyx_obj_6gevent_11__semaphore_Semaphore *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_11__semaphore_9Semaphore_acquire *__pyx_optional_args); - PyObject *(*__pyx___enter__)(struct __pyx_obj_6gevent_11__semaphore_Semaphore *, int __pyx_skip_dispatch); - PyObject *(*__pyx___exit__)(struct __pyx_obj_6gevent_11__semaphore_Semaphore *, PyObject *, PyObject *, PyObject *, int __pyx_skip_dispatch); -}; -static struct __pyx_vtabstruct_6gevent_11__semaphore_Semaphore *__pyx_vtabptr_6gevent_11__semaphore_Semaphore; - - -/* "src/gevent/_semaphore.py":259 - * - * - * class BoundedSemaphore(Semaphore): # <<<<<<<<<<<<<< - * """ - * BoundedSemaphore(value=1) -> BoundedSemaphore - */ - -struct __pyx_vtabstruct_6gevent_11__semaphore_BoundedSemaphore { - struct __pyx_vtabstruct_6gevent_11__semaphore_Semaphore __pyx_base; -}; -static struct __pyx_vtabstruct_6gevent_11__semaphore_BoundedSemaphore *__pyx_vtabptr_6gevent_11__semaphore_BoundedSemaphore; - -/* --- Runtime support code (head) --- */ -/* Refnanny.proto */ -#ifndef CYTHON_REFNANNY - #define CYTHON_REFNANNY 0 -#endif -#if CYTHON_REFNANNY - typedef struct { - void (*INCREF)(void*, PyObject*, int); - void (*DECREF)(void*, PyObject*, int); - void (*GOTREF)(void*, PyObject*, int); - void (*GIVEREF)(void*, PyObject*, int); - void* (*SetupContext)(const char*, int, const char*); - void (*FinishContext)(void**); - } __Pyx_RefNannyAPIStruct; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); - #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; -#ifdef WITH_THREAD - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - if (acquire_gil) {\ - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - PyGILState_Release(__pyx_gilstate_save);\ - } else {\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - } -#else - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) -#endif - #define __Pyx_RefNannyFinishContext()\ - __Pyx_RefNanny->FinishContext(&__pyx_refnanny) - #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) - #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) - #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) - #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0) -#else - #define __Pyx_RefNannyDeclarations - #define __Pyx_RefNannySetupContext(name, acquire_gil) - #define __Pyx_RefNannyFinishContext() - #define __Pyx_INCREF(r) Py_INCREF(r) - #define __Pyx_DECREF(r) Py_DECREF(r) - #define __Pyx_GOTREF(r) - #define __Pyx_GIVEREF(r) - #define __Pyx_XINCREF(r) Py_XINCREF(r) - #define __Pyx_XDECREF(r) Py_XDECREF(r) - #define __Pyx_XGOTREF(r) - #define __Pyx_XGIVEREF(r) -#endif -#define __Pyx_XDECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_XDECREF(tmp);\ - } while (0) -#define __Pyx_DECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_DECREF(tmp);\ - } while (0) -#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) -#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) - -/* PyObjectGetAttrStr.proto */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) -#endif - -/* GetBuiltinName.proto */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name); - -/* RaiseDoubleKeywords.proto */ -static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); - -/* ParseKeywords.proto */ -static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\ - PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\ - const char* function_name); - -/* RaiseArgTupleInvalid.proto */ -static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, - Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); - -/* PyObjectCall.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); -#else -#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) -#endif - -/* PyThreadStateGet.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; -#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; -#define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type -#else -#define __Pyx_PyThreadState_declare -#define __Pyx_PyThreadState_assign -#define __Pyx_PyErr_Occurred() PyErr_Occurred() -#endif - -/* PyErrFetchRestore.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) -#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) -#else -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#endif -#else -#define __Pyx_PyErr_Clear() PyErr_Clear() -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) -#endif - -/* RaiseException.proto */ -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); - -/* PyCFunctionFastCall.proto */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); -#else -#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) -#endif - -/* PyFunctionFastCall.proto */ -#if CYTHON_FAST_PYCALL -#define __Pyx_PyFunction_FastCall(func, args, nargs)\ - __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs); -#else -#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) -#endif -#endif - -/* PyObjectCallMethO.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); -#endif - -/* PyObjectCallOneArg.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); - -/* PyObjectCallNoArg.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); -#else -#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL) -#endif - -/* WriteUnraisableException.proto */ -static void __Pyx_WriteUnraisable(const char *name, int clineno, - int lineno, const char *filename, - int full_traceback, int nogil); - -/* SaveResetException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -#else -#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) -#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) -#endif - -/* GetException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) -static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#else -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); -#endif - -/* GetModuleGlobalName.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name); - -/* SwapException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#else -static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); -#endif - -/* CallableCheck.proto */ -#if CYTHON_USE_TYPE_SLOTS && PY_MAJOR_VERSION >= 3 -#define __Pyx_PyCallable_Check(obj) ((obj)->ob_type->tp_call != NULL) -#else -#define __Pyx_PyCallable_Check(obj) PyCallable_Check(obj) -#endif - -/* ListAppend.proto */ -#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS -static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { - PyListObject* L = (PyListObject*) list; - Py_ssize_t len = Py_SIZE(list); - if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) { - Py_INCREF(x); - PyList_SET_ITEM(list, len, x); - Py_SIZE(list) = len+1; - return 0; - } - return PyList_Append(list, x); -} -#else -#define __Pyx_PyList_Append(L,x) PyList_Append(L,x) -#endif - -/* PyErrExceptionMatches.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) -static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); -#else -#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) -#endif - -/* KeywordStringCheck.proto */ -static int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); - -/* PyObject_GenericGetAttrNoDict.proto */ -#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr -#endif - -/* PyObject_GenericGetAttr.proto */ -#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr -#endif - -/* SetVTable.proto */ -static int __Pyx_SetVtable(PyObject *dict, void *vtable); - -/* GetVTable.proto */ -static void* __Pyx_GetVtable(PyObject *dict); - -/* Import.proto */ -static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); - -/* ImportFrom.proto */ -static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); - -/* FetchCommonType.proto */ -static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); - -/* CythonFunction.proto */ -#define __Pyx_CyFunction_USED 1 -#define __Pyx_CYFUNCTION_STATICMETHOD 0x01 -#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 -#define __Pyx_CYFUNCTION_CCLASS 0x04 -#define __Pyx_CyFunction_GetClosure(f)\ - (((__pyx_CyFunctionObject *) (f))->func_closure) -#define __Pyx_CyFunction_GetClassObj(f)\ - (((__pyx_CyFunctionObject *) (f))->func_classobj) -#define __Pyx_CyFunction_Defaults(type, f)\ - ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) -#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ - ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) -typedef struct { - PyCFunctionObject func; -#if PY_VERSION_HEX < 0x030500A0 - PyObject *func_weakreflist; -#endif - PyObject *func_dict; - PyObject *func_name; - PyObject *func_qualname; - PyObject *func_doc; - PyObject *func_globals; - PyObject *func_code; - PyObject *func_closure; - PyObject *func_classobj; - void *defaults; - int defaults_pyobjects; - int flags; - PyObject *defaults_tuple; - PyObject *defaults_kwdict; - PyObject *(*defaults_getter)(PyObject *); - PyObject *func_annotations; -} __pyx_CyFunctionObject; -static PyTypeObject *__pyx_CyFunctionType = 0; -#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, globals, code)\ - __Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, globals, code) -static PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml, - int flags, PyObject* qualname, - PyObject *self, - PyObject *module, PyObject *globals, - PyObject* code); -static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, - size_t size, - int pyobjects); -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, - PyObject *tuple); -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, - PyObject *dict); -static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, - PyObject *dict); -static int __pyx_CyFunction_init(void); - -/* GetNameInClass.proto */ -static PyObject *__Pyx_GetNameInClass(PyObject *nmspace, PyObject *name); - -/* GetAttr.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *); - -/* Globals.proto */ -static PyObject* __Pyx_Globals(void); - -/* CLineInTraceback.proto */ -#ifdef CYTHON_CLINE_IN_TRACEBACK -#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) -#else -static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); -#endif - -/* CodeObjectCache.proto */ -typedef struct { - PyCodeObject* code_object; - int code_line; -} __Pyx_CodeObjectCacheEntry; -struct __Pyx_CodeObjectCache { - int count; - int max_count; - __Pyx_CodeObjectCacheEntry* entries; -}; -static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; -static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); -static PyCodeObject *__pyx_find_code_object(int code_line); -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); - -/* AddTraceback.proto */ -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename); - -/* CIntToPy.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); - -/* CIntFromPy.proto */ -static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); - -/* CIntToPy.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); - -/* CIntFromPy.proto */ -static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); - -/* FastTypeChecks.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); -#else -#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) -#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) -#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) -#endif -#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) - -/* CheckBinaryVersion.proto */ -static int __Pyx_check_binary_version(void); - -/* PyObjectSetAttrStr.proto */ -#if CYTHON_USE_TYPE_SLOTS -#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o, n, NULL) -static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value); -#else -#define __Pyx_PyObject_DelAttrStr(o,n) PyObject_DelAttr(o,n) -#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v) -#endif - -/* VoidPtrExport.proto */ -static int __Pyx_ExportVoidPtr(PyObject *name, void *p, const char *sig); - -/* FunctionExport.proto */ -static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig); - -/* PyIdentifierFromString.proto */ -#if !defined(__Pyx_PyIdentifier_FromString) -#if PY_MAJOR_VERSION < 3 - #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s) -#else - #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s) -#endif -#endif - -/* ModuleImport.proto */ -static PyObject *__Pyx_ImportModule(const char *name); - -/* TypeImport.proto */ -static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict); - -/* VoidPtrImport.proto */ -static int __Pyx_ImportVoidPtr(PyObject *module, const char *name, void **p, const char *sig); - -/* FunctionImport.proto */ -static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig); - -/* InitStrings.proto */ -static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); - -static int __pyx_f_6gevent_11__semaphore_9Semaphore_locked(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ -static int __pyx_f_6gevent_11__semaphore_9Semaphore_release(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_11__semaphore_9Semaphore__start_notify(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_11__semaphore_9Semaphore__notify_links(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_11__semaphore_9Semaphore_rawlink(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, PyObject *__pyx_v_callback, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_11__semaphore_9Semaphore_unlink(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, PyObject *__pyx_v_callback, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_11__semaphore_9Semaphore__do_wait(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, PyObject *__pyx_v_timeout); /* proto*/ -static int __pyx_f_6gevent_11__semaphore_9Semaphore_wait(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_11__semaphore_9Semaphore_wait *__pyx_optional_args); /* proto*/ -static int __pyx_f_6gevent_11__semaphore_9Semaphore_acquire(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_11__semaphore_9Semaphore_acquire *__pyx_optional_args); /* proto*/ -static PyObject *__pyx_f_6gevent_11__semaphore_9Semaphore___enter__(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_11__semaphore_9Semaphore___exit__(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_t, CYTHON_UNUSED PyObject *__pyx_v_v, CYTHON_UNUSED PyObject *__pyx_v_tb, int __pyx_skip_dispatch); /* proto*/ -static int __pyx_f_6gevent_11__semaphore_16BoundedSemaphore_release(struct __pyx_obj_6gevent_11__semaphore_BoundedSemaphore *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ - -/* Module declarations from 'cython' */ - -/* Module declarations from 'greenlet' */ - -/* Module declarations from 'gevent.__greenlet_primitives' */ -static PyTypeObject *__pyx_ptype_6gevent_21__greenlet_primitives_greenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop = 0; -static PyObject **__pyx_vp_6gevent_21__greenlet_primitives_wref = 0; -#define __pyx_v_6gevent_21__greenlet_primitives_wref (*__pyx_vp_6gevent_21__greenlet_primitives_wref) -static PyObject **__pyx_vp_6gevent_21__greenlet_primitives_BlockingSwitchOutError = 0; -#define __pyx_v_6gevent_21__greenlet_primitives_BlockingSwitchOutError (*__pyx_vp_6gevent_21__greenlet_primitives_BlockingSwitchOutError) -static int *__pyx_vp_6gevent_21__greenlet_primitives__greenlet_imported = 0; -#define __pyx_v_6gevent_21__greenlet_primitives__greenlet_imported (*__pyx_vp_6gevent_21__greenlet_primitives__greenlet_imported) - -/* Module declarations from 'gevent.__hub_local' */ -static PyObject **__pyx_vp_6gevent_11__hub_local__threadlocal = 0; -#define __pyx_v_6gevent_11__hub_local__threadlocal (*__pyx_vp_6gevent_11__hub_local__threadlocal) -static struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *(*__pyx_f_6gevent_11__hub_local_get_hub_noargs)(int __pyx_skip_dispatch); /*proto*/ - -/* Module declarations from 'gevent.__semaphore' */ -static PyTypeObject *__pyx_ptype_6gevent_11__semaphore_greenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_11__semaphore_Semaphore = 0; -static PyTypeObject *__pyx_ptype_6gevent_11__semaphore_BoundedSemaphore = 0; -static PyObject *__pyx_v_6gevent_11__semaphore_Timeout = 0; -static int __pyx_v_6gevent_11__semaphore__greenlet_imported; -static CYTHON_INLINE PyGreenlet *__pyx_f_6gevent_11__semaphore_getcurrent(void); /*proto*/ -static CYTHON_INLINE void __pyx_f_6gevent_11__semaphore_greenlet_init(void); /*proto*/ -static void __pyx_f_6gevent_11__semaphore__init(void); /*proto*/ -#define __Pyx_MODULE_NAME "gevent.__semaphore" -extern int __pyx_module_is_main_gevent____semaphore; -int __pyx_module_is_main_gevent____semaphore = 0; - -/* Implementation of 'gevent.__semaphore' */ -static PyObject *__pyx_builtin___import__; -static PyObject *__pyx_builtin_ValueError; -static PyObject *__pyx_builtin_TypeError; -static PyObject *__pyx_builtin_AttributeError; -static const char __pyx_k_t[] = "t"; -static const char __pyx_k_v[] = "v"; -static const char __pyx_k_tb[] = "tb"; -static const char __pyx_k_all[] = "__all__"; -static const char __pyx_k_sys[] = "sys"; -static const char __pyx_k_exit[] = "__exit__"; -static const char __pyx_k_init[] = "__init__"; -static const char __pyx_k_main[] = "__main__"; -static const char __pyx_k_name[] = "__name__"; -static const char __pyx_k_self[] = "self"; -static const char __pyx_k_test[] = "__test__"; -static const char __pyx_k_wait[] = "wait"; -static const char __pyx_k_class[] = "__class__"; -static const char __pyx_k_enter[] = "__enter__"; -static const char __pyx_k_value[] = "value"; -static const char __pyx_k_cancel[] = "cancel"; -static const char __pyx_k_gevent[] = "gevent"; -static const char __pyx_k_import[] = "__import__"; -static const char __pyx_k_lambda[] = "<lambda>"; -static const char __pyx_k_locked[] = "locked"; -static const char __pyx_k_remove[] = "remove"; -static const char __pyx_k_switch[] = "switch"; -static const char __pyx_k_unlink[] = "unlink"; -static const char __pyx_k_Timeout[] = "Timeout"; -static const char __pyx_k_acquire[] = "acquire"; -static const char __pyx_k_get_hub[] = "get_hub"; -static const char __pyx_k_rawlink[] = "rawlink"; -static const char __pyx_k_release[] = "release"; -static const char __pyx_k_timeout[] = "timeout"; -static const char __pyx_k_blocking[] = "blocking"; -static const char __pyx_k_callback[] = "callback"; -static const char __pyx_k_exc_info[] = "exc_info"; -static const char __pyx_k_greenlet[] = "greenlet"; -static const char __pyx_k_pyx_capi[] = "__pyx_capi__"; -static const char __pyx_k_Semaphore[] = "Semaphore"; -static const char __pyx_k_TypeError[] = "TypeError"; -static const char __pyx_k_ValueError[] = "ValueError"; -static const char __pyx_k_getcurrent[] = "getcurrent"; -static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__"; -static const char __pyx_k_gevent__util[] = "gevent._util"; -static const char __pyx_k_handle_error[] = "handle_error"; -static const char __pyx_k_notify_links[] = "_notify_links"; -static const char __pyx_k_py3k_acquire[] = "_py3k_acquire"; -static const char __pyx_k_run_callback[] = "run_callback"; -static const char __pyx_k_start_notify[] = "_start_notify"; -static const char __pyx_k_greenlet_init[] = "greenlet_init"; -static const char __pyx_k_AttributeError[] = "AttributeError"; -static const char __pyx_k_Semaphore_wait[] = "Semaphore.wait"; -static const char __pyx_k_gevent_timeout[] = "gevent.timeout"; -static const char __pyx_k_import_c_accel[] = "import_c_accel"; -static const char __pyx_k_BoundedSemaphore[] = "BoundedSemaphore"; -static const char __pyx_k_Semaphore___exit[] = "Semaphore.__exit__"; -static const char __pyx_k_Semaphore_locked[] = "Semaphore.locked"; -static const char __pyx_k_Semaphore_unlink[] = "Semaphore.unlink"; -static const char __pyx_k_Expected_callable[] = "Expected callable:"; -static const char __pyx_k_Semaphore___enter[] = "Semaphore.__enter__"; -static const char __pyx_k_Semaphore_acquire[] = "Semaphore.acquire"; -static const char __pyx_k_Semaphore_rawlink[] = "Semaphore.rawlink"; -static const char __pyx_k_Semaphore_release[] = "Semaphore.release"; -static const char __pyx_k_greenlet_imported[] = "_greenlet_imported"; -static const char __pyx_k_OVER_RELEASE_ERROR[] = "_OVER_RELEASE_ERROR"; -static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; -static const char __pyx_k_gevent___semaphore[] = "gevent.__semaphore"; -static const char __pyx_k_start_new_or_dummy[] = "_start_new_or_dummy"; -static const char __pyx_k_s_counter_s__links_s[] = "<%s counter=%s _links[%s]>"; -static const char __pyx_k_Semaphore__notify_links[] = "Semaphore._notify_links"; -static const char __pyx_k_Semaphore__start_notify[] = "Semaphore._start_notify"; -static const char __pyx_k_BoundedSemaphore_release[] = "BoundedSemaphore.release"; -static const char __pyx_k_src_gevent__semaphore_py[] = "src\\gevent\\_semaphore.py"; -static const char __pyx_k_semaphore_initial_value_must_be[] = "semaphore initial value must be >= 0"; -static const char __pyx_k_Invalid_switch_into_Semaphore_wa[] = "Invalid switch into Semaphore.wait/acquire(): %r"; -static const char __pyx_k_Semaphore_released_too_many_time[] = "Semaphore released too many times"; -static PyObject *__pyx_n_s_AttributeError; -static PyObject *__pyx_n_s_BoundedSemaphore; -static PyObject *__pyx_n_s_BoundedSemaphore_release; -static PyObject *__pyx_kp_s_Expected_callable; -static PyObject *__pyx_kp_s_Invalid_switch_into_Semaphore_wa; -static PyObject *__pyx_n_s_OVER_RELEASE_ERROR; -static PyObject *__pyx_n_s_Semaphore; -static PyObject *__pyx_n_s_Semaphore___enter; -static PyObject *__pyx_n_s_Semaphore___exit; -static PyObject *__pyx_n_s_Semaphore__notify_links; -static PyObject *__pyx_n_s_Semaphore__start_notify; -static PyObject *__pyx_n_s_Semaphore_acquire; -static PyObject *__pyx_n_s_Semaphore_locked; -static PyObject *__pyx_n_s_Semaphore_rawlink; -static PyObject *__pyx_n_s_Semaphore_release; -static PyObject *__pyx_kp_s_Semaphore_released_too_many_time; -static PyObject *__pyx_n_s_Semaphore_unlink; -static PyObject *__pyx_n_s_Semaphore_wait; -static PyObject *__pyx_n_s_Timeout; -static PyObject *__pyx_n_s_TypeError; -static PyObject *__pyx_n_s_ValueError; -static PyObject *__pyx_n_s_acquire; -static PyObject *__pyx_n_s_all; -static PyObject *__pyx_n_s_blocking; -static PyObject *__pyx_n_s_callback; -static PyObject *__pyx_n_s_cancel; -static PyObject *__pyx_n_s_class; -static PyObject *__pyx_n_s_cline_in_traceback; -static PyObject *__pyx_n_s_enter; -static PyObject *__pyx_n_s_exc_info; -static PyObject *__pyx_n_s_exit; -static PyObject *__pyx_n_s_get_hub; -static PyObject *__pyx_n_s_getcurrent; -static PyObject *__pyx_n_s_gevent; -static PyObject *__pyx_n_s_gevent___semaphore; -static PyObject *__pyx_n_s_gevent__util; -static PyObject *__pyx_n_s_gevent_timeout; -static PyObject *__pyx_n_s_greenlet; -static PyObject *__pyx_n_s_greenlet_imported; -static PyObject *__pyx_n_s_greenlet_init; -static PyObject *__pyx_n_s_handle_error; -static PyObject *__pyx_n_s_import; -static PyObject *__pyx_n_s_import_c_accel; -static PyObject *__pyx_n_s_init; -static PyObject *__pyx_n_s_lambda; -static PyObject *__pyx_n_s_locked; -static PyObject *__pyx_n_s_main; -static PyObject *__pyx_n_s_name; -static PyObject *__pyx_n_s_notify_links; -static PyObject *__pyx_n_s_py3k_acquire; -static PyObject *__pyx_n_s_pyx_capi; -static PyObject *__pyx_n_s_pyx_vtable; -static PyObject *__pyx_n_s_rawlink; -static PyObject *__pyx_n_s_release; -static PyObject *__pyx_n_s_remove; -static PyObject *__pyx_n_s_run_callback; -static PyObject *__pyx_kp_s_s_counter_s__links_s; -static PyObject *__pyx_n_s_self; -static PyObject *__pyx_kp_s_semaphore_initial_value_must_be; -static PyObject *__pyx_kp_s_src_gevent__semaphore_py; -static PyObject *__pyx_n_s_start_new_or_dummy; -static PyObject *__pyx_n_s_start_notify; -static PyObject *__pyx_n_s_switch; -static PyObject *__pyx_n_s_sys; -static PyObject *__pyx_n_s_t; -static PyObject *__pyx_n_s_tb; -static PyObject *__pyx_n_s_test; -static PyObject *__pyx_n_s_timeout; -static PyObject *__pyx_n_s_unlink; -static PyObject *__pyx_n_s_v; -static PyObject *__pyx_n_s_value; -static PyObject *__pyx_n_s_wait; -static PyObject *__pyx_lambda_funcdef_6gevent_11__semaphore_lambda(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ -static int __pyx_pf_6gevent_11__semaphore_9Semaphore___init__(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static PyObject *__pyx_pf_6gevent_11__semaphore_9Semaphore_2__str__(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_11__semaphore_9Semaphore_4locked(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_11__semaphore_9Semaphore_6release(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_11__semaphore_9Semaphore_8_start_notify(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_11__semaphore_9Semaphore_10_notify_links(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_11__semaphore_9Semaphore_12rawlink(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, PyObject *__pyx_v_callback); /* proto */ -static PyObject *__pyx_pf_6gevent_11__semaphore_9Semaphore_14unlink(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, PyObject *__pyx_v_callback); /* proto */ -static PyObject *__pyx_pf_6gevent_11__semaphore_9Semaphore_16wait(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, PyObject *__pyx_v_timeout); /* proto */ -static PyObject *__pyx_pf_6gevent_11__semaphore_9Semaphore_18acquire(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, int __pyx_v_blocking, PyObject *__pyx_v_timeout); /* proto */ -static PyObject *__pyx_pf_6gevent_11__semaphore_9Semaphore_20__enter__(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_11__semaphore_9Semaphore_22__exit__(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, PyObject *__pyx_v_t, PyObject *__pyx_v_v, PyObject *__pyx_v_tb); /* proto */ -static PyObject *__pyx_pf_6gevent_11__semaphore_9Semaphore_7counter___get__(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_11__semaphore_9Semaphore_7counter_2__set__(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static PyObject *__pyx_pf_6gevent_11__semaphore_9Semaphore_6_links___get__(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_11__semaphore_9Semaphore_9_notifier___get__(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_11__semaphore_9Semaphore_6_dirty___get__(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_11__semaphore_9Semaphore_6_dirty_2__set__(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static int __pyx_pf_6gevent_11__semaphore_16BoundedSemaphore___init__(struct __pyx_obj_6gevent_11__semaphore_BoundedSemaphore *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */ -static PyObject *__pyx_pf_6gevent_11__semaphore_16BoundedSemaphore_2release(struct __pyx_obj_6gevent_11__semaphore_BoundedSemaphore *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_11__semaphore_16BoundedSemaphore_14_initial_value___get__(struct __pyx_obj_6gevent_11__semaphore_BoundedSemaphore *__pyx_v_self); /* proto */ -static PyObject *__pyx_tp_new_6gevent_11__semaphore_Semaphore(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_11__semaphore_BoundedSemaphore(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_int_0; -static PyObject *__pyx_int_1; -static PyObject *__pyx_tuple_; -static PyObject *__pyx_tuple__2; -static PyObject *__pyx_tuple__3; -static PyObject *__pyx_tuple__4; -static PyObject *__pyx_tuple__5; -static PyObject *__pyx_tuple__7; -static PyObject *__pyx_tuple__9; -static PyObject *__pyx_tuple__11; -static PyObject *__pyx_tuple__13; -static PyObject *__pyx_tuple__15; -static PyObject *__pyx_tuple__17; -static PyObject *__pyx_tuple__19; -static PyObject *__pyx_tuple__21; -static PyObject *__pyx_tuple__23; -static PyObject *__pyx_tuple__25; -static PyObject *__pyx_codeobj__6; -static PyObject *__pyx_codeobj__8; -static PyObject *__pyx_codeobj__10; -static PyObject *__pyx_codeobj__12; -static PyObject *__pyx_codeobj__14; -static PyObject *__pyx_codeobj__16; -static PyObject *__pyx_codeobj__18; -static PyObject *__pyx_codeobj__20; -static PyObject *__pyx_codeobj__22; -static PyObject *__pyx_codeobj__24; -static PyObject *__pyx_codeobj__26; -/* Late includes */ - -/* "src/gevent/_semaphore.py":18 - * # error. - * locals()['getcurrent'] = __import__('greenlet').getcurrent - * locals()['greenlet_init'] = lambda: None # <<<<<<<<<<<<<< - * locals()['get_hub'] = __import__('gevent').get_hub - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_11__semaphore_lambda(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyMethodDef __pyx_mdef_6gevent_11__semaphore_lambda = {"lambda", (PyCFunction)__pyx_pw_6gevent_11__semaphore_lambda, METH_NOARGS, 0}; -static PyObject *__pyx_pw_6gevent_11__semaphore_lambda(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("lambda (wrapper)", 0); - __pyx_r = __pyx_lambda_funcdef_6gevent_11__semaphore_lambda(__pyx_self); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_lambda_funcdef_6gevent_11__semaphore_lambda(CYTHON_UNUSED PyObject *__pyx_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("lambda", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_semaphore.py":41 - * """ - * - * def __init__(self, value=1): # <<<<<<<<<<<<<< - * if value < 0: - * raise ValueError("semaphore initial value must be >= 0") - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_11__semaphore_9Semaphore_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_11__semaphore_9Semaphore_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_value = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_value,0}; - PyObject* values[1] = {0}; - values[0] = ((PyObject *)__pyx_int_1); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_value); - if (value) { values[0] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 41, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_value = values[0]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 41, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.__semaphore.Semaphore.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_11__semaphore_9Semaphore___init__(((struct __pyx_obj_6gevent_11__semaphore_Semaphore *)__pyx_v_self), __pyx_v_value); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_11__semaphore_9Semaphore___init__(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - int __pyx_t_3; - __Pyx_RefNannySetupContext("__init__", 0); - - /* "src/gevent/_semaphore.py":42 - * - * def __init__(self, value=1): - * if value < 0: # <<<<<<<<<<<<<< - * raise ValueError("semaphore initial value must be >= 0") - * self.counter = value - */ - __pyx_t_1 = PyObject_RichCompare(__pyx_v_value, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 42, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 42, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(__pyx_t_2)) { - - /* "src/gevent/_semaphore.py":43 - * def __init__(self, value=1): - * if value < 0: - * raise ValueError("semaphore initial value must be >= 0") # <<<<<<<<<<<<<< - * self.counter = value - * self._dirty = False - */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 43, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 43, __pyx_L1_error) - - /* "src/gevent/_semaphore.py":42 - * - * def __init__(self, value=1): - * if value < 0: # <<<<<<<<<<<<<< - * raise ValueError("semaphore initial value must be >= 0") - * self.counter = value - */ - } - - /* "src/gevent/_semaphore.py":44 - * if value < 0: - * raise ValueError("semaphore initial value must be >= 0") - * self.counter = value # <<<<<<<<<<<<<< - * self._dirty = False - * # In PyPy 2.6.1 with Cython 0.23, `cdef public` or `cdef - */ - __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 44, __pyx_L1_error) - __pyx_v_self->counter = __pyx_t_3; - - /* "src/gevent/_semaphore.py":45 - * raise ValueError("semaphore initial value must be >= 0") - * self.counter = value - * self._dirty = False # <<<<<<<<<<<<<< - * # In PyPy 2.6.1 with Cython 0.23, `cdef public` or `cdef - * # readonly` or simply `cdef` attributes of type `object` can appear to leak if - */ - __pyx_v_self->_dirty = 0; - - /* "src/gevent/_semaphore.py":59 - * # CPython ("No attribute...") - * # See https://github.com/gevent/gevent/issues/660 - * self._links = None # <<<<<<<<<<<<<< - * self._notifier = None - * # we don't want to do get_hub() here to allow defining module-level locks - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->_links); - __Pyx_DECREF(__pyx_v_self->_links); - __pyx_v_self->_links = ((PyObject*)Py_None); - - /* "src/gevent/_semaphore.py":60 - * # See https://github.com/gevent/gevent/issues/660 - * self._links = None - * self._notifier = None # <<<<<<<<<<<<<< - * # we don't want to do get_hub() here to allow defining module-level locks - * # without initializing the hub - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->_notifier); - __Pyx_DECREF(__pyx_v_self->_notifier); - __pyx_v_self->_notifier = Py_None; - - /* "src/gevent/_semaphore.py":41 - * """ - * - * def __init__(self, value=1): # <<<<<<<<<<<<<< - * if value < 0: - * raise ValueError("semaphore initial value must be >= 0") - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__semaphore.Semaphore.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_semaphore.py":64 - * # without initializing the hub - * - * def __str__(self): # <<<<<<<<<<<<<< - * params = (self.__class__.__name__, self.counter, len(self._links) if self._links else 0) - * return '<%s counter=%s _links[%s]>' % params - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_3__str__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_3__str__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__str__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_11__semaphore_9Semaphore_2__str__(((struct __pyx_obj_6gevent_11__semaphore_Semaphore *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_11__semaphore_9Semaphore_2__str__(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self) { - PyObject *__pyx_v_params = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - Py_ssize_t __pyx_t_6; - __Pyx_RefNannySetupContext("__str__", 0); - - /* "src/gevent/_semaphore.py":65 - * - * def __str__(self): - * params = (self.__class__.__name__, self.counter, len(self._links) if self._links else 0) # <<<<<<<<<<<<<< - * return '<%s counter=%s _links[%s]>' % params - * - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 65, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 65, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->counter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 65, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = (__pyx_v_self->_links != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_links) != 0); - if (__pyx_t_4) { - __pyx_t_5 = __pyx_v_self->_links; - __Pyx_INCREF(__pyx_t_5); - if (unlikely(__pyx_t_5 == Py_None)) { - PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 65, __pyx_L1_error) - } - __pyx_t_6 = PyList_GET_SIZE(__pyx_t_5); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 65, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 65, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_3 = __pyx_t_5; - __pyx_t_5 = 0; - } else { - __Pyx_INCREF(__pyx_int_0); - __pyx_t_3 = __pyx_int_0; - } - __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 65, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_3); - __pyx_t_2 = 0; - __pyx_t_1 = 0; - __pyx_t_3 = 0; - __pyx_v_params = ((PyObject*)__pyx_t_5); - __pyx_t_5 = 0; - - /* "src/gevent/_semaphore.py":66 - * def __str__(self): - * params = (self.__class__.__name__, self.counter, len(self._links) if self._links else 0) - * return '<%s counter=%s _links[%s]>' % params # <<<<<<<<<<<<<< - * - * def locked(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_s_counter_s__links_s, __pyx_v_params); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 66, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_r = __pyx_t_5; - __pyx_t_5 = 0; - goto __pyx_L0; - - /* "src/gevent/_semaphore.py":64 - * # without initializing the hub - * - * def __str__(self): # <<<<<<<<<<<<<< - * params = (self.__class__.__name__, self.counter, len(self._links) if self._links else 0) - * return '<%s counter=%s _links[%s]>' % params - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent.__semaphore.Semaphore.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_params); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_semaphore.py":68 - * return '<%s counter=%s _links[%s]>' % params - * - * def locked(self): # <<<<<<<<<<<<<< - * """Return a boolean indicating whether the semaphore can be acquired. - * Most useful with binary semaphores.""" - */ - -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_5locked(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static int __pyx_f_6gevent_11__semaphore_9Semaphore_locked(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, int __pyx_skip_dispatch) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - __Pyx_RefNannySetupContext("locked", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_locked); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 68, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_11__semaphore_9Semaphore_5locked)) { - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 68, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 68, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 68, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_5; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/_semaphore.py":71 - * """Return a boolean indicating whether the semaphore can be acquired. - * Most useful with binary semaphores.""" - * return self.counter <= 0 # <<<<<<<<<<<<<< - * - * def release(self): - */ - __pyx_r = (__pyx_v_self->counter <= 0); - goto __pyx_L0; - - /* "src/gevent/_semaphore.py":68 - * return '<%s counter=%s _links[%s]>' % params - * - * def locked(self): # <<<<<<<<<<<<<< - * """Return a boolean indicating whether the semaphore can be acquired. - * Most useful with binary semaphores.""" - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_WriteUnraisable("gevent.__semaphore.Semaphore.locked", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); - __pyx_r = 0; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_5locked(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_11__semaphore_9Semaphore_4locked[] = "Semaphore.locked(self) -> bool\nReturn a boolean indicating whether the semaphore can be acquired.\n Most useful with binary semaphores."; -static PyMethodDef __pyx_mdef_6gevent_11__semaphore_9Semaphore_5locked = {"locked", (PyCFunction)__pyx_pw_6gevent_11__semaphore_9Semaphore_5locked, METH_NOARGS, __pyx_doc_6gevent_11__semaphore_9Semaphore_4locked}; -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_5locked(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("locked (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_11__semaphore_9Semaphore_4locked(((struct __pyx_obj_6gevent_11__semaphore_Semaphore *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_11__semaphore_9Semaphore_4locked(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("locked", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_f_6gevent_11__semaphore_9Semaphore_locked(__pyx_v_self, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 68, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__semaphore.Semaphore.locked", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_semaphore.py":73 - * return self.counter <= 0 - * - * def release(self): # <<<<<<<<<<<<<< - * """ - * Release the semaphore, notifying any waiters if needed. - */ - -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_7release(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static int __pyx_f_6gevent_11__semaphore_9Semaphore_release(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, int __pyx_skip_dispatch) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - __Pyx_RefNannySetupContext("release", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_release); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 73, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_11__semaphore_9Semaphore_7release)) { - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 73, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 73, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 73, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_5; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/_semaphore.py":77 - * Release the semaphore, notifying any waiters if needed. - * """ - * self.counter += 1 # <<<<<<<<<<<<<< - * self._start_notify() - * return self.counter - */ - __pyx_v_self->counter = (__pyx_v_self->counter + 1); - - /* "src/gevent/_semaphore.py":78 - * """ - * self.counter += 1 - * self._start_notify() # <<<<<<<<<<<<<< - * return self.counter - * - */ - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_11__semaphore_Semaphore *)__pyx_v_self->__pyx_vtab)->_start_notify(__pyx_v_self, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 78, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_semaphore.py":79 - * self.counter += 1 - * self._start_notify() - * return self.counter # <<<<<<<<<<<<<< - * - * def _start_notify(self): - */ - __pyx_r = __pyx_v_self->counter; - goto __pyx_L0; - - /* "src/gevent/_semaphore.py":73 - * return self.counter <= 0 - * - * def release(self): # <<<<<<<<<<<<<< - * """ - * Release the semaphore, notifying any waiters if needed. - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent.__semaphore.Semaphore.release", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1000; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_7release(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_11__semaphore_9Semaphore_6release[] = "Semaphore.release(self) -> int\n\n Release the semaphore, notifying any waiters if needed.\n "; -static PyMethodDef __pyx_mdef_6gevent_11__semaphore_9Semaphore_7release = {"release", (PyCFunction)__pyx_pw_6gevent_11__semaphore_9Semaphore_7release, METH_NOARGS, __pyx_doc_6gevent_11__semaphore_9Semaphore_6release}; -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_7release(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("release (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_11__semaphore_9Semaphore_6release(((struct __pyx_obj_6gevent_11__semaphore_Semaphore *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_11__semaphore_9Semaphore_6release(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("release", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_11__semaphore_9Semaphore_release(__pyx_v_self, 1); if (unlikely(__pyx_t_1 == ((int)-1000))) __PYX_ERR(0, 73, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 73, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent.__semaphore.Semaphore.release", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_semaphore.py":81 - * return self.counter - * - * def _start_notify(self): # <<<<<<<<<<<<<< - * if self._links and self.counter > 0 and not self._notifier: - * # We create a new self._notifier each time through the loop, - */ - -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_9_start_notify(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_f_6gevent_11__semaphore_9Semaphore__start_notify(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, int __pyx_skip_dispatch) { - struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_v_hub = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - int __pyx_t_6; - int __pyx_t_7; - PyObject *__pyx_t_8 = NULL; - __Pyx_RefNannySetupContext("_start_notify", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_start_notify); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 81, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_11__semaphore_9Semaphore_9_start_notify)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 81, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 81, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/_semaphore.py":82 - * - * def _start_notify(self): - * if self._links and self.counter > 0 and not self._notifier: # <<<<<<<<<<<<<< - * # We create a new self._notifier each time through the loop, - * # if needed. (it has a __bool__ method that tells whether it has - */ - __pyx_t_6 = (__pyx_v_self->_links != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_links) != 0); - if (__pyx_t_6) { - } else { - __pyx_t_5 = __pyx_t_6; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_6 = ((__pyx_v_self->counter > 0) != 0); - if (__pyx_t_6) { - } else { - __pyx_t_5 = __pyx_t_6; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_self->_notifier); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 82, __pyx_L1_error) - __pyx_t_7 = ((!__pyx_t_6) != 0); - __pyx_t_5 = __pyx_t_7; - __pyx_L4_bool_binop_done:; - if (__pyx_t_5) { - - /* "src/gevent/_semaphore.py":90 - * # with Cython <= 0.23.3. You must use >= 0.23.4. - * # See https://bitbucket.org/pypy/pypy/issues/2149/memory-leak-for-python-subclass-of-cpyext#comment-22371546 - * hub = get_hub() # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * self._notifier = hub.loop.run_callback(self._notify_links) - * - */ - __pyx_t_1 = ((PyObject *)__pyx_f_6gevent_11__hub_local_get_hub_noargs(0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 90, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_hub = ((struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/_semaphore.py":91 - * # See https://bitbucket.org/pypy/pypy/issues/2149/memory-leak-for-python-subclass-of-cpyext#comment-22371546 - * hub = get_hub() # pylint:disable=undefined-variable - * self._notifier = hub.loop.run_callback(self._notify_links) # <<<<<<<<<<<<<< - * - * def _notify_links(self): - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_hub->loop, __pyx_n_s_run_callback); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 91, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_notify_links); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 91, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_4) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 91, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 91, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 91, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - { - __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 91, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_3); - __pyx_t_3 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 91, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->_notifier); - __Pyx_DECREF(__pyx_v_self->_notifier); - __pyx_v_self->_notifier = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/_semaphore.py":82 - * - * def _start_notify(self): - * if self._links and self.counter > 0 and not self._notifier: # <<<<<<<<<<<<<< - * # We create a new self._notifier each time through the loop, - * # if needed. (it has a __bool__ method that tells whether it has - */ - } - - /* "src/gevent/_semaphore.py":81 - * return self.counter - * - * def _start_notify(self): # <<<<<<<<<<<<<< - * if self._links and self.counter > 0 and not self._notifier: - * # We create a new self._notifier each time through the loop, - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_AddTraceback("gevent.__semaphore.Semaphore._start_notify", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_hub); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_9_start_notify(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_11__semaphore_9Semaphore_8_start_notify[] = "Semaphore._start_notify(self)"; -static PyMethodDef __pyx_mdef_6gevent_11__semaphore_9Semaphore_9_start_notify = {"_start_notify", (PyCFunction)__pyx_pw_6gevent_11__semaphore_9Semaphore_9_start_notify, METH_NOARGS, __pyx_doc_6gevent_11__semaphore_9Semaphore_8_start_notify}; -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_9_start_notify(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_start_notify (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_11__semaphore_9Semaphore_8_start_notify(((struct __pyx_obj_6gevent_11__semaphore_Semaphore *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_11__semaphore_9Semaphore_8_start_notify(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_start_notify", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_11__semaphore_9Semaphore__start_notify(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 81, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__semaphore.Semaphore._start_notify", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_semaphore.py":93 - * self._notifier = hub.loop.run_callback(self._notify_links) - * - * def _notify_links(self): # <<<<<<<<<<<<<< - * # Subclasses CANNOT override. This is a cdef method. - * - */ - -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_11_notify_links(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_f_6gevent_11__semaphore_9Semaphore__notify_links(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, int __pyx_skip_dispatch) { - PyObject *__pyx_v_notifier = NULL; - PyObject *__pyx_v_link = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - int __pyx_t_6; - Py_ssize_t __pyx_t_7; - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - PyObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; - PyObject *__pyx_t_13 = NULL; - PyObject *__pyx_t_14 = NULL; - PyObject *__pyx_t_15 = NULL; - int __pyx_t_16; - int __pyx_t_17; - char const *__pyx_t_18; - PyObject *__pyx_t_19 = NULL; - PyObject *__pyx_t_20 = NULL; - PyObject *__pyx_t_21 = NULL; - __Pyx_RefNannySetupContext("_notify_links", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_notify_links); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 93, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_11__semaphore_9Semaphore_11_notify_links)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 93, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 93, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/_semaphore.py":102 - * # no need to keep it around until that point (making it potentially climb - * # into older GC generations, notably on PyPy) - * notifier = self._notifier # <<<<<<<<<<<<<< - * try: - * while True: - */ - __pyx_t_1 = __pyx_v_self->_notifier; - __Pyx_INCREF(__pyx_t_1); - __pyx_v_notifier = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/_semaphore.py":103 - * # into older GC generations, notably on PyPy) - * notifier = self._notifier - * try: # <<<<<<<<<<<<<< - * while True: - * self._dirty = False - */ - /*try:*/ { - - /* "src/gevent/_semaphore.py":104 - * notifier = self._notifier - * try: - * while True: # <<<<<<<<<<<<<< - * self._dirty = False - * if not self._links: - */ - while (1) { - - /* "src/gevent/_semaphore.py":105 - * try: - * while True: - * self._dirty = False # <<<<<<<<<<<<<< - * if not self._links: - * # In case we were manually unlinked before - */ - __pyx_v_self->_dirty = 0; - - /* "src/gevent/_semaphore.py":106 - * while True: - * self._dirty = False - * if not self._links: # <<<<<<<<<<<<<< - * # In case we were manually unlinked before - * # the callback. Which shouldn't happen - */ - __pyx_t_5 = (__pyx_v_self->_links != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_links) != 0); - __pyx_t_6 = ((!__pyx_t_5) != 0); - if (__pyx_t_6) { - - /* "src/gevent/_semaphore.py":109 - * # In case we were manually unlinked before - * # the callback. Which shouldn't happen - * return # <<<<<<<<<<<<<< - * for link in self._links: - * if self.counter <= 0: - */ - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L3_return; - - /* "src/gevent/_semaphore.py":106 - * while True: - * self._dirty = False - * if not self._links: # <<<<<<<<<<<<<< - * # In case we were manually unlinked before - * # the callback. Which shouldn't happen - */ - } - - /* "src/gevent/_semaphore.py":110 - * # the callback. Which shouldn't happen - * return - * for link in self._links: # <<<<<<<<<<<<<< - * if self.counter <= 0: - * return - */ - if (unlikely(__pyx_v_self->_links == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 110, __pyx_L4_error) - } - __pyx_t_1 = __pyx_v_self->_links; __Pyx_INCREF(__pyx_t_1); __pyx_t_7 = 0; - for (;;) { - if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_1)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_7); __Pyx_INCREF(__pyx_t_2); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 110, __pyx_L4_error) - #else - __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 110, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_2); - #endif - __Pyx_XDECREF_SET(__pyx_v_link, __pyx_t_2); - __pyx_t_2 = 0; - - /* "src/gevent/_semaphore.py":111 - * return - * for link in self._links: - * if self.counter <= 0: # <<<<<<<<<<<<<< - * return - * try: - */ - __pyx_t_6 = ((__pyx_v_self->counter <= 0) != 0); - if (__pyx_t_6) { - - /* "src/gevent/_semaphore.py":112 - * for link in self._links: - * if self.counter <= 0: - * return # <<<<<<<<<<<<<< - * try: - * link(self) # Must use Cython >= 0.23.4 on PyPy else this leaks memory - */ - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L3_return; - - /* "src/gevent/_semaphore.py":111 - * return - * for link in self._links: - * if self.counter <= 0: # <<<<<<<<<<<<<< - * return - * try: - */ - } - - /* "src/gevent/_semaphore.py":113 - * if self.counter <= 0: - * return - * try: # <<<<<<<<<<<<<< - * link(self) # Must use Cython >= 0.23.4 on PyPy else this leaks memory - * except: # pylint:disable=bare-except - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10); - __Pyx_XGOTREF(__pyx_t_8); - __Pyx_XGOTREF(__pyx_t_9); - __Pyx_XGOTREF(__pyx_t_10); - /*try:*/ { - - /* "src/gevent/_semaphore.py":114 - * return - * try: - * link(self) # Must use Cython >= 0.23.4 on PyPy else this leaks memory # <<<<<<<<<<<<<< - * except: # pylint:disable=bare-except - * getcurrent().handle_error((link, self), *sys.exc_info()) # pylint:disable=undefined-variable - */ - __Pyx_INCREF(__pyx_v_link); - __pyx_t_3 = __pyx_v_link; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (!__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 114, __pyx_L12_error) - __Pyx_GOTREF(__pyx_t_2); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, ((PyObject *)__pyx_v_self)}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 114, __pyx_L12_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, ((PyObject *)__pyx_v_self)}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 114, __pyx_L12_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 114, __pyx_L12_error) - __Pyx_GOTREF(__pyx_t_11); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_11, 0+1, ((PyObject *)__pyx_v_self)); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_11, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 114, __pyx_L12_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - } - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_semaphore.py":113 - * if self.counter <= 0: - * return - * try: # <<<<<<<<<<<<<< - * link(self) # Must use Cython >= 0.23.4 on PyPy else this leaks memory - * except: # pylint:disable=bare-except - */ - } - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; - goto __pyx_L19_try_end; - __pyx_L12_error:; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_semaphore.py":115 - * try: - * link(self) # Must use Cython >= 0.23.4 on PyPy else this leaks memory - * except: # pylint:disable=bare-except # <<<<<<<<<<<<<< - * getcurrent().handle_error((link, self), *sys.exc_info()) # pylint:disable=undefined-variable - * if self._dirty: - */ - /*except:*/ { - __Pyx_AddTraceback("gevent.__semaphore.Semaphore._notify_links", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_11) < 0) __PYX_ERR(0, 115, __pyx_L14_except_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GOTREF(__pyx_t_11); - - /* "src/gevent/_semaphore.py":116 - * link(self) # Must use Cython >= 0.23.4 on PyPy else this leaks memory - * except: # pylint:disable=bare-except - * getcurrent().handle_error((link, self), *sys.exc_info()) # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * if self._dirty: - * # We mutated self._links so we need to start over - */ - __pyx_t_4 = ((PyObject *)__pyx_f_6gevent_11__semaphore_getcurrent()); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 116, __pyx_L14_except_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_handle_error); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 116, __pyx_L14_except_error) - __Pyx_GOTREF(__pyx_t_12); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 116, __pyx_L14_except_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_INCREF(__pyx_v_link); - __Pyx_GIVEREF(__pyx_v_link); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_link); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_v_self)); - __pyx_t_13 = PyTuple_New(1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 116, __pyx_L14_except_error) - __Pyx_GOTREF(__pyx_t_13); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_4); - __pyx_t_4 = 0; - __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 116, __pyx_L14_except_error) - __Pyx_GOTREF(__pyx_t_14); - __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_exc_info); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 116, __pyx_L14_except_error) - __Pyx_GOTREF(__pyx_t_15); - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_t_14 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_15))) { - __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_15); - if (likely(__pyx_t_14)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15); - __Pyx_INCREF(__pyx_t_14); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_15, function); - } - } - if (__pyx_t_14) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_15, __pyx_t_14); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 116, __pyx_L14_except_error) - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - } else { - __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_15); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 116, __pyx_L14_except_error) - } - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; - __pyx_t_15 = __Pyx_PySequence_Tuple(__pyx_t_4); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 116, __pyx_L14_except_error) - __Pyx_GOTREF(__pyx_t_15); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyNumber_Add(__pyx_t_13, __pyx_t_15); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 116, __pyx_L14_except_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; - __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_4, NULL); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 116, __pyx_L14_except_error) - __Pyx_GOTREF(__pyx_t_15); - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - goto __pyx_L13_exception_handled; - } - __pyx_L14_except_error:; - - /* "src/gevent/_semaphore.py":113 - * if self.counter <= 0: - * return - * try: # <<<<<<<<<<<<<< - * link(self) # Must use Cython >= 0.23.4 on PyPy else this leaks memory - * except: # pylint:disable=bare-except - */ - __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_XGIVEREF(__pyx_t_9); - __Pyx_XGIVEREF(__pyx_t_10); - __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10); - goto __pyx_L4_error; - __pyx_L13_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_XGIVEREF(__pyx_t_9); - __Pyx_XGIVEREF(__pyx_t_10); - __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10); - __pyx_L19_try_end:; - } - - /* "src/gevent/_semaphore.py":117 - * except: # pylint:disable=bare-except - * getcurrent().handle_error((link, self), *sys.exc_info()) # pylint:disable=undefined-variable - * if self._dirty: # <<<<<<<<<<<<<< - * # We mutated self._links so we need to start over - * break - */ - __pyx_t_6 = (__pyx_v_self->_dirty != 0); - if (__pyx_t_6) { - - /* "src/gevent/_semaphore.py":119 - * if self._dirty: - * # We mutated self._links so we need to start over - * break # <<<<<<<<<<<<<< - * if not self._dirty: - * return - */ - goto __pyx_L10_break; - - /* "src/gevent/_semaphore.py":117 - * except: # pylint:disable=bare-except - * getcurrent().handle_error((link, self), *sys.exc_info()) # pylint:disable=undefined-variable - * if self._dirty: # <<<<<<<<<<<<<< - * # We mutated self._links so we need to start over - * break - */ - } - - /* "src/gevent/_semaphore.py":110 - * # the callback. Which shouldn't happen - * return - * for link in self._links: # <<<<<<<<<<<<<< - * if self.counter <= 0: - * return - */ - } - __pyx_L10_break:; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_semaphore.py":120 - * # We mutated self._links so we need to start over - * break - * if not self._dirty: # <<<<<<<<<<<<<< - * return - * finally: - */ - __pyx_t_6 = ((!(__pyx_v_self->_dirty != 0)) != 0); - if (__pyx_t_6) { - - /* "src/gevent/_semaphore.py":121 - * break - * if not self._dirty: - * return # <<<<<<<<<<<<<< - * finally: - * # We should not have created a new notifier even if callbacks - */ - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L3_return; - - /* "src/gevent/_semaphore.py":120 - * # We mutated self._links so we need to start over - * break - * if not self._dirty: # <<<<<<<<<<<<<< - * return - * finally: - */ - } - } - } - - /* "src/gevent/_semaphore.py":126 - * # released us because we loop through *all* of our links on the - * # same callback while self._notifier is still true. - * assert self._notifier is notifier # <<<<<<<<<<<<<< - * self._notifier = None - * - */ - /*finally:*/ { - /*normal exit:*/{ - #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_6 = (__pyx_v_self->_notifier == __pyx_v_notifier); - if (unlikely(!(__pyx_t_6 != 0))) { - PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 126, __pyx_L1_error) - } - } - #endif - - /* "src/gevent/_semaphore.py":127 - * # same callback while self._notifier is still true. - * assert self._notifier is notifier - * self._notifier = None # <<<<<<<<<<<<<< - * - * def rawlink(self, callback): - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->_notifier); - __Pyx_DECREF(__pyx_v_self->_notifier); - __pyx_v_self->_notifier = Py_None; - goto __pyx_L5; - } - __pyx_L4_error:; - /*exception exit:*/{ - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __pyx_t_10 = 0; __pyx_t_9 = 0; __pyx_t_8 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; - __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; - __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; - __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21); - if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_10, &__pyx_t_9, &__pyx_t_8) < 0)) __Pyx_ErrFetch(&__pyx_t_10, &__pyx_t_9, &__pyx_t_8); - __Pyx_XGOTREF(__pyx_t_10); - __Pyx_XGOTREF(__pyx_t_9); - __Pyx_XGOTREF(__pyx_t_8); - __Pyx_XGOTREF(__pyx_t_19); - __Pyx_XGOTREF(__pyx_t_20); - __Pyx_XGOTREF(__pyx_t_21); - __pyx_t_16 = __pyx_lineno; __pyx_t_17 = __pyx_clineno; __pyx_t_18 = __pyx_filename; - { - - /* "src/gevent/_semaphore.py":126 - * # released us because we loop through *all* of our links on the - * # same callback while self._notifier is still true. - * assert self._notifier is notifier # <<<<<<<<<<<<<< - * self._notifier = None - * - */ - #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_6 = (__pyx_v_self->_notifier == __pyx_v_notifier); - if (unlikely(!(__pyx_t_6 != 0))) { - PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 126, __pyx_L25_error) - } - } - #endif - - /* "src/gevent/_semaphore.py":127 - * # same callback while self._notifier is still true. - * assert self._notifier is notifier - * self._notifier = None # <<<<<<<<<<<<<< - * - * def rawlink(self, callback): - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->_notifier); - __Pyx_DECREF(__pyx_v_self->_notifier); - __pyx_v_self->_notifier = Py_None; - } - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_19); - __Pyx_XGIVEREF(__pyx_t_20); - __Pyx_XGIVEREF(__pyx_t_21); - __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_20, __pyx_t_21); - } - __Pyx_XGIVEREF(__pyx_t_10); - __Pyx_XGIVEREF(__pyx_t_9); - __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_ErrRestore(__pyx_t_10, __pyx_t_9, __pyx_t_8); - __pyx_t_10 = 0; __pyx_t_9 = 0; __pyx_t_8 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; - __pyx_lineno = __pyx_t_16; __pyx_clineno = __pyx_t_17; __pyx_filename = __pyx_t_18; - goto __pyx_L1_error; - __pyx_L25_error:; - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_19); - __Pyx_XGIVEREF(__pyx_t_20); - __Pyx_XGIVEREF(__pyx_t_21); - __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_20, __pyx_t_21); - } - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; - goto __pyx_L1_error; - } - __pyx_L3_return: { - __pyx_t_21 = __pyx_r; - __pyx_r = 0; - - /* "src/gevent/_semaphore.py":126 - * # released us because we loop through *all* of our links on the - * # same callback while self._notifier is still true. - * assert self._notifier is notifier # <<<<<<<<<<<<<< - * self._notifier = None - * - */ - #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_6 = (__pyx_v_self->_notifier == __pyx_v_notifier); - if (unlikely(!(__pyx_t_6 != 0))) { - PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 126, __pyx_L1_error) - } - } - #endif - - /* "src/gevent/_semaphore.py":127 - * # same callback while self._notifier is still true. - * assert self._notifier is notifier - * self._notifier = None # <<<<<<<<<<<<<< - * - * def rawlink(self, callback): - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->_notifier); - __Pyx_DECREF(__pyx_v_self->_notifier); - __pyx_v_self->_notifier = Py_None; - __pyx_r = __pyx_t_21; - __pyx_t_21 = 0; - goto __pyx_L0; - } - __pyx_L5:; - } - - /* "src/gevent/_semaphore.py":93 - * self._notifier = hub.loop.run_callback(self._notify_links) - * - * def _notify_links(self): # <<<<<<<<<<<<<< - * # Subclasses CANNOT override. This is a cdef method. - * - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_11); - __Pyx_XDECREF(__pyx_t_12); - __Pyx_XDECREF(__pyx_t_13); - __Pyx_XDECREF(__pyx_t_14); - __Pyx_XDECREF(__pyx_t_15); - __Pyx_AddTraceback("gevent.__semaphore.Semaphore._notify_links", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_notifier); - __Pyx_XDECREF(__pyx_v_link); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_11_notify_links(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_11__semaphore_9Semaphore_10_notify_links[] = "Semaphore._notify_links(self)"; -static PyMethodDef __pyx_mdef_6gevent_11__semaphore_9Semaphore_11_notify_links = {"_notify_links", (PyCFunction)__pyx_pw_6gevent_11__semaphore_9Semaphore_11_notify_links, METH_NOARGS, __pyx_doc_6gevent_11__semaphore_9Semaphore_10_notify_links}; -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_11_notify_links(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_notify_links (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_11__semaphore_9Semaphore_10_notify_links(((struct __pyx_obj_6gevent_11__semaphore_Semaphore *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_11__semaphore_9Semaphore_10_notify_links(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_notify_links", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_11__semaphore_9Semaphore__notify_links(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 93, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__semaphore.Semaphore._notify_links", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_semaphore.py":129 - * self._notifier = None - * - * def rawlink(self, callback): # <<<<<<<<<<<<<< - * """ - * rawlink(callback) -> None - */ - -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_13rawlink(PyObject *__pyx_v_self, PyObject *__pyx_v_callback); /*proto*/ -static PyObject *__pyx_f_6gevent_11__semaphore_9Semaphore_rawlink(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, PyObject *__pyx_v_callback, int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - int __pyx_t_7; - int __pyx_t_8; - __Pyx_RefNannySetupContext("rawlink", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rawlink); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 129, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_11__semaphore_9Semaphore_13rawlink)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (!__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_callback); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 129, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_callback}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 129, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_callback}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 129, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 129, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_INCREF(__pyx_v_callback); - __Pyx_GIVEREF(__pyx_v_callback); - PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_callback); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 129, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/_semaphore.py":141 - * will not need to use it. - * """ - * if not callable(callback): # <<<<<<<<<<<<<< - * raise TypeError('Expected callable:', callback) - * if self._links is None: - */ - __pyx_t_6 = __Pyx_PyCallable_Check(__pyx_v_callback); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 141, __pyx_L1_error) - __pyx_t_7 = ((!(__pyx_t_6 != 0)) != 0); - if (unlikely(__pyx_t_7)) { - - /* "src/gevent/_semaphore.py":142 - * """ - * if not callable(callback): - * raise TypeError('Expected callable:', callback) # <<<<<<<<<<<<<< - * if self._links is None: - * self._links = [callback] - */ - __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 142, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_kp_s_Expected_callable); - __Pyx_GIVEREF(__pyx_kp_s_Expected_callable); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_s_Expected_callable); - __Pyx_INCREF(__pyx_v_callback); - __Pyx_GIVEREF(__pyx_v_callback); - PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_callback); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 142, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 142, __pyx_L1_error) - - /* "src/gevent/_semaphore.py":141 - * will not need to use it. - * """ - * if not callable(callback): # <<<<<<<<<<<<<< - * raise TypeError('Expected callable:', callback) - * if self._links is None: - */ - } - - /* "src/gevent/_semaphore.py":143 - * if not callable(callback): - * raise TypeError('Expected callable:', callback) - * if self._links is None: # <<<<<<<<<<<<<< - * self._links = [callback] - * else: - */ - __pyx_t_7 = (__pyx_v_self->_links == ((PyObject*)Py_None)); - __pyx_t_6 = (__pyx_t_7 != 0); - if (__pyx_t_6) { - - /* "src/gevent/_semaphore.py":144 - * raise TypeError('Expected callable:', callback) - * if self._links is None: - * self._links = [callback] # <<<<<<<<<<<<<< - * else: - * self._links.append(callback) - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 144, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_v_callback); - __Pyx_GIVEREF(__pyx_v_callback); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_v_callback); - __Pyx_GIVEREF(__pyx_t_2); - __Pyx_GOTREF(__pyx_v_self->_links); - __Pyx_DECREF(__pyx_v_self->_links); - __pyx_v_self->_links = ((PyObject*)__pyx_t_2); - __pyx_t_2 = 0; - - /* "src/gevent/_semaphore.py":143 - * if not callable(callback): - * raise TypeError('Expected callable:', callback) - * if self._links is None: # <<<<<<<<<<<<<< - * self._links = [callback] - * else: - */ - goto __pyx_L4; - } - - /* "src/gevent/_semaphore.py":146 - * self._links = [callback] - * else: - * self._links.append(callback) # <<<<<<<<<<<<<< - * self._dirty = True - * - */ - /*else*/ { - if (unlikely(__pyx_v_self->_links == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append"); - __PYX_ERR(0, 146, __pyx_L1_error) - } - __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_self->_links, __pyx_v_callback); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 146, __pyx_L1_error) - } - __pyx_L4:; - - /* "src/gevent/_semaphore.py":147 - * else: - * self._links.append(callback) - * self._dirty = True # <<<<<<<<<<<<<< - * - * def unlink(self, callback): - */ - __pyx_v_self->_dirty = 1; - - /* "src/gevent/_semaphore.py":129 - * self._notifier = None - * - * def rawlink(self, callback): # <<<<<<<<<<<<<< - * """ - * rawlink(callback) -> None - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent.__semaphore.Semaphore.rawlink", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_13rawlink(PyObject *__pyx_v_self, PyObject *__pyx_v_callback); /*proto*/ -static char __pyx_doc_6gevent_11__semaphore_9Semaphore_12rawlink[] = "Semaphore.rawlink(self, callback)\n\n rawlink(callback) -> None\n\n Register a callback to call when a counter is more than zero.\n\n *callback* will be called in the :class:`Hub <gevent.hub.Hub>`, so it must not use blocking gevent API.\n *callback* will be passed one argument: this instance.\n\n This method is normally called automatically by :meth:`acquire` and :meth:`wait`; most code\n will not need to use it.\n "; -static PyMethodDef __pyx_mdef_6gevent_11__semaphore_9Semaphore_13rawlink = {"rawlink", (PyCFunction)__pyx_pw_6gevent_11__semaphore_9Semaphore_13rawlink, METH_O, __pyx_doc_6gevent_11__semaphore_9Semaphore_12rawlink}; -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_13rawlink(PyObject *__pyx_v_self, PyObject *__pyx_v_callback) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("rawlink (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_11__semaphore_9Semaphore_12rawlink(((struct __pyx_obj_6gevent_11__semaphore_Semaphore *)__pyx_v_self), ((PyObject *)__pyx_v_callback)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_11__semaphore_9Semaphore_12rawlink(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, PyObject *__pyx_v_callback) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("rawlink", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_11__semaphore_9Semaphore_rawlink(__pyx_v_self, __pyx_v_callback, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 129, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__semaphore.Semaphore.rawlink", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_semaphore.py":149 - * self._dirty = True - * - * def unlink(self, callback): # <<<<<<<<<<<<<< - * """ - * unlink(callback) -> None - */ - -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_15unlink(PyObject *__pyx_v_self, PyObject *__pyx_v_callback); /*proto*/ -static PyObject *__pyx_f_6gevent_11__semaphore_9Semaphore_unlink(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, PyObject *__pyx_v_callback, int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - int __pyx_t_9; - int __pyx_t_10; - int __pyx_t_11; - __Pyx_RefNannySetupContext("unlink", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_unlink); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 149, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_11__semaphore_9Semaphore_15unlink)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (!__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_callback); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 149, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_callback}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 149, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_callback}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 149, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 149, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_INCREF(__pyx_v_callback); - __Pyx_GIVEREF(__pyx_v_callback); - PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_callback); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 149, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/_semaphore.py":158 - * code will not need to use it. - * """ - * try: # <<<<<<<<<<<<<< - * self._links.remove(callback) - * self._dirty = True - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8); - __Pyx_XGOTREF(__pyx_t_6); - __Pyx_XGOTREF(__pyx_t_7); - __Pyx_XGOTREF(__pyx_t_8); - /*try:*/ { - - /* "src/gevent/_semaphore.py":159 - * """ - * try: - * self._links.remove(callback) # <<<<<<<<<<<<<< - * self._dirty = True - * except (ValueError, AttributeError): - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_links, __pyx_n_s_remove); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 159, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_callback); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 159, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_callback}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 159, __pyx_L3_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_callback}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 159, __pyx_L3_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 159, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(__pyx_v_callback); - __Pyx_GIVEREF(__pyx_v_callback); - PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_callback); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 159, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_semaphore.py":160 - * try: - * self._links.remove(callback) - * self._dirty = True # <<<<<<<<<<<<<< - * except (ValueError, AttributeError): - * pass - */ - __pyx_v_self->_dirty = 1; - - /* "src/gevent/_semaphore.py":158 - * code will not need to use it. - * """ - * try: # <<<<<<<<<<<<<< - * self._links.remove(callback) - * self._dirty = True - */ - } - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - goto __pyx_L8_try_end; - __pyx_L3_error:; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_semaphore.py":161 - * self._links.remove(callback) - * self._dirty = True - * except (ValueError, AttributeError): # <<<<<<<<<<<<<< - * pass - * if not self._links: - */ - __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError) || __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError); - if (__pyx_t_9) { - __Pyx_ErrRestore(0,0,0); - goto __pyx_L4_exception_handled; - } - goto __pyx_L5_except_error; - __pyx_L5_except_error:; - - /* "src/gevent/_semaphore.py":158 - * code will not need to use it. - * """ - * try: # <<<<<<<<<<<<<< - * self._links.remove(callback) - * self._dirty = True - */ - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); - goto __pyx_L1_error; - __pyx_L4_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); - __pyx_L8_try_end:; - } - - /* "src/gevent/_semaphore.py":163 - * except (ValueError, AttributeError): - * pass - * if not self._links: # <<<<<<<<<<<<<< - * self._links = None - * # TODO: Cancel a notifier if there are no links? - */ - __pyx_t_10 = (__pyx_v_self->_links != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_links) != 0); - __pyx_t_11 = ((!__pyx_t_10) != 0); - if (__pyx_t_11) { - - /* "src/gevent/_semaphore.py":164 - * pass - * if not self._links: - * self._links = None # <<<<<<<<<<<<<< - * # TODO: Cancel a notifier if there are no links? - * - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->_links); - __Pyx_DECREF(__pyx_v_self->_links); - __pyx_v_self->_links = ((PyObject*)Py_None); - - /* "src/gevent/_semaphore.py":163 - * except (ValueError, AttributeError): - * pass - * if not self._links: # <<<<<<<<<<<<<< - * self._links = None - * # TODO: Cancel a notifier if there are no links? - */ - } - - /* "src/gevent/_semaphore.py":149 - * self._dirty = True - * - * def unlink(self, callback): # <<<<<<<<<<<<<< - * """ - * unlink(callback) -> None - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent.__semaphore.Semaphore.unlink", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_15unlink(PyObject *__pyx_v_self, PyObject *__pyx_v_callback); /*proto*/ -static char __pyx_doc_6gevent_11__semaphore_9Semaphore_14unlink[] = "Semaphore.unlink(self, callback)\n\n unlink(callback) -> None\n\n Remove the callback set by :meth:`rawlink`.\n\n This method is normally called automatically by :meth:`acquire` and :meth:`wait`; most\n code will not need to use it.\n "; -static PyMethodDef __pyx_mdef_6gevent_11__semaphore_9Semaphore_15unlink = {"unlink", (PyCFunction)__pyx_pw_6gevent_11__semaphore_9Semaphore_15unlink, METH_O, __pyx_doc_6gevent_11__semaphore_9Semaphore_14unlink}; -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_15unlink(PyObject *__pyx_v_self, PyObject *__pyx_v_callback) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("unlink (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_11__semaphore_9Semaphore_14unlink(((struct __pyx_obj_6gevent_11__semaphore_Semaphore *)__pyx_v_self), ((PyObject *)__pyx_v_callback)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_11__semaphore_9Semaphore_14unlink(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, PyObject *__pyx_v_callback) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("unlink", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_11__semaphore_9Semaphore_unlink(__pyx_v_self, __pyx_v_callback, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 149, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__semaphore.Semaphore.unlink", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_semaphore.py":167 - * # TODO: Cancel a notifier if there are no links? - * - * def _do_wait(self, timeout): # <<<<<<<<<<<<<< - * """ - * Wait for up to *timeout* seconds to expire. If timeout - */ - -static PyObject *__pyx_f_6gevent_11__semaphore_9Semaphore__do_wait(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, PyObject *__pyx_v_timeout) { - PyObject *__pyx_v_switch = NULL; - PyObject *__pyx_v_timer = NULL; - PyObject *__pyx_v_result = NULL; - PyObject *__pyx_v_ex = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - int __pyx_t_8; - int __pyx_t_9; - int __pyx_t_10; - int __pyx_t_11; - char const *__pyx_t_12; - PyObject *__pyx_t_13 = NULL; - PyObject *__pyx_t_14 = NULL; - PyObject *__pyx_t_15 = NULL; - char const *__pyx_t_16; - __Pyx_RefNannySetupContext("_do_wait", 0); - - /* "src/gevent/_semaphore.py":173 - * Raises timeout if a different timer expires. - * """ - * switch = getcurrent().switch # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * self.rawlink(switch) - * try: - */ - __pyx_t_1 = ((PyObject *)__pyx_f_6gevent_11__semaphore_getcurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 173, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_switch); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 173, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_switch = __pyx_t_2; - __pyx_t_2 = 0; - - /* "src/gevent/_semaphore.py":174 - * """ - * switch = getcurrent().switch # pylint:disable=undefined-variable - * self.rawlink(switch) # <<<<<<<<<<<<<< - * try: - * timer = Timeout._start_new_or_dummy(timeout) - */ - __pyx_t_2 = ((struct __pyx_vtabstruct_6gevent_11__semaphore_Semaphore *)__pyx_v_self->__pyx_vtab)->rawlink(__pyx_v_self, __pyx_v_switch, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 174, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_semaphore.py":175 - * switch = getcurrent().switch # pylint:disable=undefined-variable - * self.rawlink(switch) - * try: # <<<<<<<<<<<<<< - * timer = Timeout._start_new_or_dummy(timeout) - * try: - */ - /*try:*/ { - - /* "src/gevent/_semaphore.py":176 - * self.rawlink(switch) - * try: - * timer = Timeout._start_new_or_dummy(timeout) # <<<<<<<<<<<<<< - * try: - * try: - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_6gevent_11__semaphore_Timeout, __pyx_n_s_start_new_or_dummy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 176, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - } - } - if (!__pyx_t_3) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_timeout); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_2); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_1)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_timeout}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L4_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_timeout}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L4_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 176, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(__pyx_v_timeout); - __Pyx_GIVEREF(__pyx_v_timeout); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_timeout); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_timer = __pyx_t_2; - __pyx_t_2 = 0; - - /* "src/gevent/_semaphore.py":177 - * try: - * timer = Timeout._start_new_or_dummy(timeout) - * try: # <<<<<<<<<<<<<< - * try: - * result = get_hub().switch() # pylint:disable=undefined-variable - */ - /*try:*/ { - - /* "src/gevent/_semaphore.py":178 - * timer = Timeout._start_new_or_dummy(timeout) - * try: - * try: # <<<<<<<<<<<<<< - * result = get_hub().switch() # pylint:disable=undefined-variable - * assert result is self, 'Invalid switch into Semaphore.wait/acquire(): %r' % (result, ) - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7); - __Pyx_XGOTREF(__pyx_t_5); - __Pyx_XGOTREF(__pyx_t_6); - __Pyx_XGOTREF(__pyx_t_7); - /*try:*/ { - - /* "src/gevent/_semaphore.py":179 - * try: - * try: - * result = get_hub().switch() # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * assert result is self, 'Invalid switch into Semaphore.wait/acquire(): %r' % (result, ) - * except Timeout as ex: - */ - __pyx_t_2 = ((PyObject *)__pyx_f_6gevent_11__hub_local_get_hub_noargs(0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 179, __pyx_L9_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *)((struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *)__pyx_t_2)->__pyx_vtab)->__pyx_switch(((struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *)__pyx_t_2), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 179, __pyx_L9_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_result = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/_semaphore.py":180 - * try: - * result = get_hub().switch() # pylint:disable=undefined-variable - * assert result is self, 'Invalid switch into Semaphore.wait/acquire(): %r' % (result, ) # <<<<<<<<<<<<<< - * except Timeout as ex: - * if ex is not timer: - */ - #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_8 = (__pyx_v_result == ((PyObject *)__pyx_v_self)); - if (unlikely(!(__pyx_t_8 != 0))) { - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 180, __pyx_L9_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_v_result); - __Pyx_GIVEREF(__pyx_v_result); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_result); - __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_switch_into_Semaphore_wa, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 180, __pyx_L9_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - PyErr_SetObject(PyExc_AssertionError, __pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 180, __pyx_L9_error) - } - } - #endif - - /* "src/gevent/_semaphore.py":178 - * timer = Timeout._start_new_or_dummy(timeout) - * try: - * try: # <<<<<<<<<<<<<< - * result = get_hub().switch() # pylint:disable=undefined-variable - * assert result is self, 'Invalid switch into Semaphore.wait/acquire(): %r' % (result, ) - */ - } - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - goto __pyx_L14_try_end; - __pyx_L9_error:; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_semaphore.py":181 - * result = get_hub().switch() # pylint:disable=undefined-variable - * assert result is self, 'Invalid switch into Semaphore.wait/acquire(): %r' % (result, ) - * except Timeout as ex: # <<<<<<<<<<<<<< - * if ex is not timer: - * raise - */ - __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_v_6gevent_11__semaphore_Timeout); - if (__pyx_t_9) { - __Pyx_AddTraceback("gevent.__semaphore.Semaphore._do_wait", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_4) < 0) __PYX_ERR(0, 181, __pyx_L11_except_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_t_4); - __Pyx_INCREF(__pyx_t_1); - __pyx_v_ex = __pyx_t_1; - - /* "src/gevent/_semaphore.py":182 - * assert result is self, 'Invalid switch into Semaphore.wait/acquire(): %r' % (result, ) - * except Timeout as ex: - * if ex is not timer: # <<<<<<<<<<<<<< - * raise - * return ex - */ - __pyx_t_8 = (__pyx_v_ex != __pyx_v_timer); - __pyx_t_10 = (__pyx_t_8 != 0); - if (unlikely(__pyx_t_10)) { - - /* "src/gevent/_semaphore.py":183 - * except Timeout as ex: - * if ex is not timer: - * raise # <<<<<<<<<<<<<< - * return ex - * finally: - */ - __Pyx_GIVEREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_1, __pyx_t_4); - __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_4 = 0; - __PYX_ERR(0, 183, __pyx_L11_except_error) - - /* "src/gevent/_semaphore.py":182 - * assert result is self, 'Invalid switch into Semaphore.wait/acquire(): %r' % (result, ) - * except Timeout as ex: - * if ex is not timer: # <<<<<<<<<<<<<< - * raise - * return ex - */ - } - - /* "src/gevent/_semaphore.py":184 - * if ex is not timer: - * raise - * return ex # <<<<<<<<<<<<<< - * finally: - * timer.cancel() - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_ex); - __pyx_r = __pyx_v_ex; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - goto __pyx_L12_except_return; - } - goto __pyx_L11_except_error; - __pyx_L11_except_error:; - - /* "src/gevent/_semaphore.py":178 - * timer = Timeout._start_new_or_dummy(timeout) - * try: - * try: # <<<<<<<<<<<<<< - * result = get_hub().switch() # pylint:disable=undefined-variable - * assert result is self, 'Invalid switch into Semaphore.wait/acquire(): %r' % (result, ) - */ - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); - goto __pyx_L7_error; - __pyx_L12_except_return:; - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); - goto __pyx_L6_return; - __pyx_L14_try_end:; - } - } - - /* "src/gevent/_semaphore.py":186 - * return ex - * finally: - * timer.cancel() # <<<<<<<<<<<<<< - * finally: - * self.unlink(switch) - */ - /*finally:*/ { - /*normal exit:*/{ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_timer, __pyx_n_s_cancel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 186, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_2)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_2); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - } - } - if (__pyx_t_2) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 186, __pyx_L4_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else { - __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 186, __pyx_L4_error) - } - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - goto __pyx_L8; - } - __pyx_L7_error:; - /*exception exit:*/{ - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15); - if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5); - __Pyx_XGOTREF(__pyx_t_7); - __Pyx_XGOTREF(__pyx_t_6); - __Pyx_XGOTREF(__pyx_t_5); - __Pyx_XGOTREF(__pyx_t_13); - __Pyx_XGOTREF(__pyx_t_14); - __Pyx_XGOTREF(__pyx_t_15); - __pyx_t_9 = __pyx_lineno; __pyx_t_11 = __pyx_clineno; __pyx_t_12 = __pyx_filename; - { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_timer, __pyx_n_s_cancel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 186, __pyx_L19_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_2)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_2); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - } - } - if (__pyx_t_2) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 186, __pyx_L19_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else { - __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 186, __pyx_L19_error) - } - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_13); - __Pyx_XGIVEREF(__pyx_t_14); - __Pyx_XGIVEREF(__pyx_t_15); - __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15); - } - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_ErrRestore(__pyx_t_7, __pyx_t_6, __pyx_t_5); - __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; - __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_11; __pyx_filename = __pyx_t_12; - goto __pyx_L4_error; - __pyx_L19_error:; - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_13); - __Pyx_XGIVEREF(__pyx_t_14); - __Pyx_XGIVEREF(__pyx_t_15); - __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15); - } - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; - goto __pyx_L4_error; - } - __pyx_L6_return: { - __pyx_t_15 = __pyx_r; - __pyx_r = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_timer, __pyx_n_s_cancel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 186, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_2)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_2); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - } - } - if (__pyx_t_2) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 186, __pyx_L4_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else { - __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 186, __pyx_L4_error) - } - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_r = __pyx_t_15; - __pyx_t_15 = 0; - goto __pyx_L3_return; - } - __pyx_L8:; - } - } - - /* "src/gevent/_semaphore.py":188 - * timer.cancel() - * finally: - * self.unlink(switch) # <<<<<<<<<<<<<< - * - * def wait(self, timeout=None): - */ - /*finally:*/ { - /*normal exit:*/{ - __pyx_t_4 = ((struct __pyx_vtabstruct_6gevent_11__semaphore_Semaphore *)__pyx_v_self->__pyx_vtab)->unlink(__pyx_v_self, __pyx_v_switch, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 188, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - goto __pyx_L5; - } - __pyx_L4_error:; - /*exception exit:*/{ - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __pyx_t_15 = 0; __pyx_t_14 = 0; __pyx_t_13 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7); - if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_15, &__pyx_t_14, &__pyx_t_13) < 0)) __Pyx_ErrFetch(&__pyx_t_15, &__pyx_t_14, &__pyx_t_13); - __Pyx_XGOTREF(__pyx_t_15); - __Pyx_XGOTREF(__pyx_t_14); - __Pyx_XGOTREF(__pyx_t_13); - __Pyx_XGOTREF(__pyx_t_5); - __Pyx_XGOTREF(__pyx_t_6); - __Pyx_XGOTREF(__pyx_t_7); - __pyx_t_11 = __pyx_lineno; __pyx_t_9 = __pyx_clineno; __pyx_t_16 = __pyx_filename; - { - __pyx_t_4 = ((struct __pyx_vtabstruct_6gevent_11__semaphore_Semaphore *)__pyx_v_self->__pyx_vtab)->unlink(__pyx_v_self, __pyx_v_switch, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 188, __pyx_L21_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); - } - __Pyx_XGIVEREF(__pyx_t_15); - __Pyx_XGIVEREF(__pyx_t_14); - __Pyx_XGIVEREF(__pyx_t_13); - __Pyx_ErrRestore(__pyx_t_15, __pyx_t_14, __pyx_t_13); - __pyx_t_15 = 0; __pyx_t_14 = 0; __pyx_t_13 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; - __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_9; __pyx_filename = __pyx_t_16; - goto __pyx_L1_error; - __pyx_L21_error:; - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); - } - __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; - __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; - __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; - __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; - goto __pyx_L1_error; - } - __pyx_L3_return: { - __pyx_t_7 = __pyx_r; - __pyx_r = 0; - __pyx_t_4 = ((struct __pyx_vtabstruct_6gevent_11__semaphore_Semaphore *)__pyx_v_self->__pyx_vtab)->unlink(__pyx_v_self, __pyx_v_switch, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 188, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_r = __pyx_t_7; - __pyx_t_7 = 0; - goto __pyx_L0; - } - __pyx_L5:; - } - - /* "src/gevent/_semaphore.py":167 - * # TODO: Cancel a notifier if there are no links? - * - * def _do_wait(self, timeout): # <<<<<<<<<<<<<< - * """ - * Wait for up to *timeout* seconds to expire. If timeout - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent.__semaphore.Semaphore._do_wait", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_switch); - __Pyx_XDECREF(__pyx_v_timer); - __Pyx_XDECREF(__pyx_v_result); - __Pyx_XDECREF(__pyx_v_ex); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_semaphore.py":190 - * self.unlink(switch) - * - * def wait(self, timeout=None): # <<<<<<<<<<<<<< - * """ - * wait(timeout=None) -> int - */ - -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_17wait(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_f_6gevent_11__semaphore_9Semaphore_wait(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_11__semaphore_9Semaphore_wait *__pyx_optional_args) { - PyObject *__pyx_v_timeout = ((PyObject *)Py_None); - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - int __pyx_t_7; - __Pyx_RefNannySetupContext("wait", 0); - if (__pyx_optional_args) { - if (__pyx_optional_args->__pyx_n > 0) { - __pyx_v_timeout = __pyx_optional_args->timeout; - } - } - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_wait); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 190, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_11__semaphore_9Semaphore_17wait)) { - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (!__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_timeout); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 190, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_timeout}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 190, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_timeout}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 190, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 190, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_INCREF(__pyx_v_timeout); - __Pyx_GIVEREF(__pyx_v_timeout); - PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_timeout); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 190, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 190, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_6; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/_semaphore.py":205 - * before blocking. - * """ - * if self.counter > 0: # <<<<<<<<<<<<<< - * return self.counter - * - */ - __pyx_t_7 = ((__pyx_v_self->counter > 0) != 0); - if (__pyx_t_7) { - - /* "src/gevent/_semaphore.py":206 - * """ - * if self.counter > 0: - * return self.counter # <<<<<<<<<<<<<< - * - * self._do_wait(timeout) # return value irrelevant, whether we got it or got a timeout - */ - __pyx_r = __pyx_v_self->counter; - goto __pyx_L0; - - /* "src/gevent/_semaphore.py":205 - * before blocking. - * """ - * if self.counter > 0: # <<<<<<<<<<<<<< - * return self.counter - * - */ - } - - /* "src/gevent/_semaphore.py":208 - * return self.counter - * - * self._do_wait(timeout) # return value irrelevant, whether we got it or got a timeout # <<<<<<<<<<<<<< - * return self.counter - * - */ - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_11__semaphore_Semaphore *)__pyx_v_self->__pyx_vtab)->_do_wait(__pyx_v_self, __pyx_v_timeout); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 208, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_semaphore.py":209 - * - * self._do_wait(timeout) # return value irrelevant, whether we got it or got a timeout - * return self.counter # <<<<<<<<<<<<<< - * - * def acquire(self, blocking=True, timeout=None): - */ - __pyx_r = __pyx_v_self->counter; - goto __pyx_L0; - - /* "src/gevent/_semaphore.py":190 - * self.unlink(switch) - * - * def wait(self, timeout=None): # <<<<<<<<<<<<<< - * """ - * wait(timeout=None) -> int - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent.__semaphore.Semaphore.wait", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1000; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_17wait(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_11__semaphore_9Semaphore_16wait[] = "Semaphore.wait(self, timeout=None) -> int\n\n wait(timeout=None) -> int\n\n Wait until it is possible to acquire this semaphore, or until the optional\n *timeout* elapses.\n\n .. caution:: If this semaphore was initialized with a size of 0,\n this method will block forever if no timeout is given.\n\n :keyword float timeout: If given, specifies the maximum amount of seconds\n this method will block.\n :return: A number indicating how many times the semaphore can be acquired\n before blocking.\n "; -static PyMethodDef __pyx_mdef_6gevent_11__semaphore_9Semaphore_17wait = {"wait", (PyCFunction)__pyx_pw_6gevent_11__semaphore_9Semaphore_17wait, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_11__semaphore_9Semaphore_16wait}; -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_17wait(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_timeout = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("wait (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_timeout,0}; - PyObject* values[1] = {0}; - values[0] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeout); - if (value) { values[0] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "wait") < 0)) __PYX_ERR(0, 190, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_timeout = values[0]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("wait", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 190, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.__semaphore.Semaphore.wait", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_11__semaphore_9Semaphore_16wait(((struct __pyx_obj_6gevent_11__semaphore_Semaphore *)__pyx_v_self), __pyx_v_timeout); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_11__semaphore_9Semaphore_16wait(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, PyObject *__pyx_v_timeout) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - struct __pyx_opt_args_6gevent_11__semaphore_9Semaphore_wait __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("wait", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_2.__pyx_n = 1; - __pyx_t_2.timeout = __pyx_v_timeout; - __pyx_t_1 = __pyx_vtabptr_6gevent_11__semaphore_Semaphore->wait(__pyx_v_self, 1, &__pyx_t_2); if (unlikely(__pyx_t_1 == ((int)-1000))) __PYX_ERR(0, 190, __pyx_L1_error) - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 190, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent.__semaphore.Semaphore.wait", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_semaphore.py":211 - * return self.counter - * - * def acquire(self, blocking=True, timeout=None): # <<<<<<<<<<<<<< - * """ - * acquire(blocking=True, timeout=None) -> bool - */ - -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_19acquire(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_f_6gevent_11__semaphore_9Semaphore_acquire(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_11__semaphore_9Semaphore_acquire *__pyx_optional_args) { - int __pyx_v_blocking = ((int)1); - PyObject *__pyx_v_timeout = ((PyObject *)Py_None); - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - PyObject *__pyx_t_7 = NULL; - int __pyx_t_8; - int __pyx_t_9; - __Pyx_RefNannySetupContext("acquire", 0); - if (__pyx_optional_args) { - if (__pyx_optional_args->__pyx_n > 0) { - __pyx_v_blocking = __pyx_optional_args->blocking; - if (__pyx_optional_args->__pyx_n > 1) { - __pyx_v_timeout = __pyx_optional_args->timeout; - } - } - } - __Pyx_INCREF(__pyx_v_timeout); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_acquire); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 211, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_11__semaphore_9Semaphore_19acquire)) { - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_blocking); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 211, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_4 = __pyx_t_1; __pyx_t_5 = NULL; - __pyx_t_6 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - __pyx_t_6 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_v_timeout}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 211, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_v_timeout}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 211, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - { - __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 211, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (__pyx_t_5) { - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; - } - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3); - __Pyx_INCREF(__pyx_v_timeout); - __Pyx_GIVEREF(__pyx_v_timeout); - PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_timeout); - __pyx_t_3 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 211, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 211, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_8; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/_semaphore.py":232 - * raise a ``Timeout`` exception, if some other caller had already started a timer.) - * """ - * if self.counter > 0: # <<<<<<<<<<<<<< - * self.counter -= 1 - * return True - */ - __pyx_t_8 = ((__pyx_v_self->counter > 0) != 0); - if (__pyx_t_8) { - - /* "src/gevent/_semaphore.py":233 - * """ - * if self.counter > 0: - * self.counter -= 1 # <<<<<<<<<<<<<< - * return True - * - */ - __pyx_v_self->counter = (__pyx_v_self->counter - 1); - - /* "src/gevent/_semaphore.py":234 - * if self.counter > 0: - * self.counter -= 1 - * return True # <<<<<<<<<<<<<< - * - * if not blocking: - */ - __pyx_r = 1; - goto __pyx_L0; - - /* "src/gevent/_semaphore.py":232 - * raise a ``Timeout`` exception, if some other caller had already started a timer.) - * """ - * if self.counter > 0: # <<<<<<<<<<<<<< - * self.counter -= 1 - * return True - */ - } - - /* "src/gevent/_semaphore.py":236 - * return True - * - * if not blocking: # <<<<<<<<<<<<<< - * return False - * - */ - __pyx_t_8 = ((!(__pyx_v_blocking != 0)) != 0); - if (__pyx_t_8) { - - /* "src/gevent/_semaphore.py":237 - * - * if not blocking: - * return False # <<<<<<<<<<<<<< - * - * timeout = self._do_wait(timeout) - */ - __pyx_r = 0; - goto __pyx_L0; - - /* "src/gevent/_semaphore.py":236 - * return True - * - * if not blocking: # <<<<<<<<<<<<<< - * return False - * - */ - } - - /* "src/gevent/_semaphore.py":239 - * return False - * - * timeout = self._do_wait(timeout) # <<<<<<<<<<<<<< - * if timeout is not None: - * # Our timer expired. - */ - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_11__semaphore_Semaphore *)__pyx_v_self->__pyx_vtab)->_do_wait(__pyx_v_self, __pyx_v_timeout); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 239, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF_SET(__pyx_v_timeout, __pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/_semaphore.py":240 - * - * timeout = self._do_wait(timeout) - * if timeout is not None: # <<<<<<<<<<<<<< - * # Our timer expired. - * return False - */ - __pyx_t_8 = (__pyx_v_timeout != Py_None); - __pyx_t_9 = (__pyx_t_8 != 0); - if (__pyx_t_9) { - - /* "src/gevent/_semaphore.py":242 - * if timeout is not None: - * # Our timer expired. - * return False # <<<<<<<<<<<<<< - * - * # Neither our timer no another one expired, so we blocked until - */ - __pyx_r = 0; - goto __pyx_L0; - - /* "src/gevent/_semaphore.py":240 - * - * timeout = self._do_wait(timeout) - * if timeout is not None: # <<<<<<<<<<<<<< - * # Our timer expired. - * return False - */ - } - - /* "src/gevent/_semaphore.py":246 - * # Neither our timer no another one expired, so we blocked until - * # awoke. Therefore, the counter is ours - * self.counter -= 1 # <<<<<<<<<<<<<< - * assert self.counter >= 0 - * return True - */ - __pyx_v_self->counter = (__pyx_v_self->counter - 1); - - /* "src/gevent/_semaphore.py":247 - * # awoke. Therefore, the counter is ours - * self.counter -= 1 - * assert self.counter >= 0 # <<<<<<<<<<<<<< - * return True - * - */ - #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(!Py_OptimizeFlag)) { - if (unlikely(!((__pyx_v_self->counter >= 0) != 0))) { - PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 247, __pyx_L1_error) - } - } - #endif - - /* "src/gevent/_semaphore.py":248 - * self.counter -= 1 - * assert self.counter >= 0 - * return True # <<<<<<<<<<<<<< - * - * _py3k_acquire = acquire # PyPy needs this; it must be static for Cython - */ - __pyx_r = 1; - goto __pyx_L0; - - /* "src/gevent/_semaphore.py":211 - * return self.counter - * - * def acquire(self, blocking=True, timeout=None): # <<<<<<<<<<<<<< - * """ - * acquire(blocking=True, timeout=None) -> bool - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("gevent.__semaphore.Semaphore.acquire", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1000; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_timeout); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_19acquire(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_11__semaphore_9Semaphore_18acquire[] = "Semaphore.acquire(self, int blocking=True, timeout=None) -> bool\n\n acquire(blocking=True, timeout=None) -> bool\n\n Acquire the semaphore.\n\n .. caution:: If this semaphore was initialized with a size of 0,\n this method will block forever (unless a timeout is given or blocking is\n set to false).\n\n :keyword bool blocking: If True (the default), this function will block\n until the semaphore is acquired.\n :keyword float timeout: If given, specifies the maximum amount of seconds\n this method will block.\n :return: A boolean indicating whether the semaphore was acquired.\n If ``blocking`` is True and ``timeout`` is None (the default), then\n (so long as this semaphore was initialized with a size greater than 0)\n this will always return True. If a timeout was given, and it expired before\n the semaphore was acquired, False will be returned. (Note that this can still\n raise a ``Timeout`` exception, if some other caller had already started a timer.)\n "; -static PyMethodDef __pyx_mdef_6gevent_11__semaphore_9Semaphore_19acquire = {"acquire", (PyCFunction)__pyx_pw_6gevent_11__semaphore_9Semaphore_19acquire, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_11__semaphore_9Semaphore_18acquire}; -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_19acquire(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - int __pyx_v_blocking; - PyObject *__pyx_v_timeout = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("acquire (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_blocking,&__pyx_n_s_timeout,0}; - PyObject* values[2] = {0,0}; - values[1] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_blocking); - if (value) { values[0] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeout); - if (value) { values[1] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "acquire") < 0)) __PYX_ERR(0, 211, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - if (values[0]) { - __pyx_v_blocking = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_blocking == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 211, __pyx_L3_error) - } else { - __pyx_v_blocking = ((int)1); - } - __pyx_v_timeout = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("acquire", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 211, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.__semaphore.Semaphore.acquire", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_11__semaphore_9Semaphore_18acquire(((struct __pyx_obj_6gevent_11__semaphore_Semaphore *)__pyx_v_self), __pyx_v_blocking, __pyx_v_timeout); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_11__semaphore_9Semaphore_18acquire(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, int __pyx_v_blocking, PyObject *__pyx_v_timeout) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - struct __pyx_opt_args_6gevent_11__semaphore_9Semaphore_acquire __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("acquire", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_2.__pyx_n = 2; - __pyx_t_2.blocking = __pyx_v_blocking; - __pyx_t_2.timeout = __pyx_v_timeout; - __pyx_t_1 = __pyx_vtabptr_6gevent_11__semaphore_Semaphore->acquire(__pyx_v_self, 1, &__pyx_t_2); if (unlikely(__pyx_t_1 == ((int)-1000))) __PYX_ERR(0, 211, __pyx_L1_error) - __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 211, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent.__semaphore.Semaphore.acquire", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_semaphore.py":252 - * _py3k_acquire = acquire # PyPy needs this; it must be static for Cython - * - * def __enter__(self): # <<<<<<<<<<<<<< - * self.acquire() - * - */ - -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_21__enter__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_f_6gevent_11__semaphore_9Semaphore___enter__(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - __Pyx_RefNannySetupContext("__enter__", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_enter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 252, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_11__semaphore_9Semaphore_21__enter__)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 252, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 252, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/_semaphore.py":253 - * - * def __enter__(self): - * self.acquire() # <<<<<<<<<<<<<< - * - * def __exit__(self, t, v, tb): - */ - __pyx_t_5 = ((struct __pyx_vtabstruct_6gevent_11__semaphore_Semaphore *)__pyx_v_self->__pyx_vtab)->acquire(__pyx_v_self, 0, NULL); if (unlikely(__pyx_t_5 == ((int)-1000))) __PYX_ERR(0, 253, __pyx_L1_error) - - /* "src/gevent/_semaphore.py":252 - * _py3k_acquire = acquire # PyPy needs this; it must be static for Cython - * - * def __enter__(self): # <<<<<<<<<<<<<< - * self.acquire() - * - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent.__semaphore.Semaphore.__enter__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_21__enter__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_11__semaphore_9Semaphore_20__enter__[] = "Semaphore.__enter__(self)"; -static PyMethodDef __pyx_mdef_6gevent_11__semaphore_9Semaphore_21__enter__ = {"__enter__", (PyCFunction)__pyx_pw_6gevent_11__semaphore_9Semaphore_21__enter__, METH_NOARGS, __pyx_doc_6gevent_11__semaphore_9Semaphore_20__enter__}; -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_21__enter__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__enter__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_11__semaphore_9Semaphore_20__enter__(((struct __pyx_obj_6gevent_11__semaphore_Semaphore *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_11__semaphore_9Semaphore_20__enter__(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__enter__", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_11__semaphore_9Semaphore___enter__(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 252, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__semaphore.Semaphore.__enter__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_semaphore.py":255 - * self.acquire() - * - * def __exit__(self, t, v, tb): # <<<<<<<<<<<<<< - * self.release() - * - */ - -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_23__exit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_f_6gevent_11__semaphore_9Semaphore___exit__(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_t, CYTHON_UNUSED PyObject *__pyx_v_v, CYTHON_UNUSED PyObject *__pyx_v_tb, int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - __Pyx_RefNannySetupContext("__exit__", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 255, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_11__semaphore_9Semaphore_23__exit__)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - __pyx_t_5 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_5 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_t, __pyx_v_v, __pyx_v_tb}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 255, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_t, __pyx_v_v, __pyx_v_tb}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 255, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_6 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 255, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (__pyx_t_4) { - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; - } - __Pyx_INCREF(__pyx_v_t); - __Pyx_GIVEREF(__pyx_v_t); - PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_t); - __Pyx_INCREF(__pyx_v_v); - __Pyx_GIVEREF(__pyx_v_v); - PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_v); - __Pyx_INCREF(__pyx_v_tb); - __Pyx_GIVEREF(__pyx_v_tb); - PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_v_tb); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 255, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/_semaphore.py":256 - * - * def __exit__(self, t, v, tb): - * self.release() # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_5 = ((struct __pyx_vtabstruct_6gevent_11__semaphore_Semaphore *)__pyx_v_self->__pyx_vtab)->release(__pyx_v_self, 0); if (unlikely(__pyx_t_5 == ((int)-1000))) __PYX_ERR(0, 256, __pyx_L1_error) - - /* "src/gevent/_semaphore.py":255 - * self.acquire() - * - * def __exit__(self, t, v, tb): # <<<<<<<<<<<<<< - * self.release() - * - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_AddTraceback("gevent.__semaphore.Semaphore.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_23__exit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_11__semaphore_9Semaphore_22__exit__[] = "Semaphore.__exit__(self, t, v, tb)"; -static PyMethodDef __pyx_mdef_6gevent_11__semaphore_9Semaphore_23__exit__ = {"__exit__", (PyCFunction)__pyx_pw_6gevent_11__semaphore_9Semaphore_23__exit__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_11__semaphore_9Semaphore_22__exit__}; -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_23__exit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_t = 0; - PyObject *__pyx_v_v = 0; - PyObject *__pyx_v_tb = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__exit__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_t,&__pyx_n_s_v,&__pyx_n_s_tb,0}; - PyObject* values[3] = {0,0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_v)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); __PYX_ERR(0, 255, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tb)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 2); __PYX_ERR(0, 255, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) __PYX_ERR(0, 255, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - } - __pyx_v_t = values[0]; - __pyx_v_v = values[1]; - __pyx_v_tb = values[2]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 255, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.__semaphore.Semaphore.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_11__semaphore_9Semaphore_22__exit__(((struct __pyx_obj_6gevent_11__semaphore_Semaphore *)__pyx_v_self), __pyx_v_t, __pyx_v_v, __pyx_v_tb); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_11__semaphore_9Semaphore_22__exit__(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, PyObject *__pyx_v_t, PyObject *__pyx_v_v, PyObject *__pyx_v_tb) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__exit__", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_11__semaphore_9Semaphore___exit__(__pyx_v_self, __pyx_v_t, __pyx_v_v, __pyx_v_tb, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 255, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__semaphore.Semaphore.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__semaphore.pxd":33 - * - * cdef class Semaphore: - * cdef public int counter # <<<<<<<<<<<<<< - * cdef readonly list _links - * cdef readonly object _notifier - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_7counter_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_7counter_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_11__semaphore_9Semaphore_7counter___get__(((struct __pyx_obj_6gevent_11__semaphore_Semaphore *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_11__semaphore_9Semaphore_7counter___get__(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->counter); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 33, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__semaphore.Semaphore.counter.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static int __pyx_pw_6gevent_11__semaphore_9Semaphore_7counter_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_6gevent_11__semaphore_9Semaphore_7counter_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_11__semaphore_9Semaphore_7counter_2__set__(((struct __pyx_obj_6gevent_11__semaphore_Semaphore *)__pyx_v_self), ((PyObject *)__pyx_v_value)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_11__semaphore_9Semaphore_7counter_2__set__(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("__set__", 0); - __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 33, __pyx_L1_error) - __pyx_v_self->counter = __pyx_t_1; - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_AddTraceback("gevent.__semaphore.Semaphore.counter.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__semaphore.pxd":34 - * cdef class Semaphore: - * cdef public int counter - * cdef readonly list _links # <<<<<<<<<<<<<< - * cdef readonly object _notifier - * cdef public int _dirty - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_6_links_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_6_links_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_11__semaphore_9Semaphore_6_links___get__(((struct __pyx_obj_6gevent_11__semaphore_Semaphore *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_11__semaphore_9Semaphore_6_links___get__(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->_links); - __pyx_r = __pyx_v_self->_links; - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__semaphore.pxd":35 - * cdef public int counter - * cdef readonly list _links - * cdef readonly object _notifier # <<<<<<<<<<<<<< - * cdef public int _dirty - * cdef object __weakref__ - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_9_notifier_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_9_notifier_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_11__semaphore_9Semaphore_9_notifier___get__(((struct __pyx_obj_6gevent_11__semaphore_Semaphore *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_11__semaphore_9Semaphore_9_notifier___get__(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->_notifier); - __pyx_r = __pyx_v_self->_notifier; - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__semaphore.pxd":36 - * cdef readonly list _links - * cdef readonly object _notifier - * cdef public int _dirty # <<<<<<<<<<<<<< - * cdef object __weakref__ - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_6_dirty_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_11__semaphore_9Semaphore_6_dirty_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_11__semaphore_9Semaphore_6_dirty___get__(((struct __pyx_obj_6gevent_11__semaphore_Semaphore *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_11__semaphore_9Semaphore_6_dirty___get__(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_dirty); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 36, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__semaphore.Semaphore._dirty.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static int __pyx_pw_6gevent_11__semaphore_9Semaphore_6_dirty_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_6gevent_11__semaphore_9Semaphore_6_dirty_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_11__semaphore_9Semaphore_6_dirty_2__set__(((struct __pyx_obj_6gevent_11__semaphore_Semaphore *)__pyx_v_self), ((PyObject *)__pyx_v_value)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_11__semaphore_9Semaphore_6_dirty_2__set__(struct __pyx_obj_6gevent_11__semaphore_Semaphore *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("__set__", 0); - __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 36, __pyx_L1_error) - __pyx_v_self->_dirty = __pyx_t_1; - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_AddTraceback("gevent.__semaphore.Semaphore._dirty.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_semaphore.py":275 - * _OVER_RELEASE_ERROR = ValueError - * - * def __init__(self, *args, **kwargs): # <<<<<<<<<<<<<< - * Semaphore.__init__(self, *args, **kwargs) - * self._initial_value = self.counter - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_11__semaphore_16BoundedSemaphore_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_11__semaphore_16BoundedSemaphore_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_args = 0; - PyObject *__pyx_v_kwargs = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1; - if (unlikely(__pyx_kwds)) { - __pyx_v_kwargs = PyDict_Copy(__pyx_kwds); if (unlikely(!__pyx_v_kwargs)) return -1; - __Pyx_GOTREF(__pyx_v_kwargs); - } else { - __pyx_v_kwargs = NULL; - } - __Pyx_INCREF(__pyx_args); - __pyx_v_args = __pyx_args; - __pyx_r = __pyx_pf_6gevent_11__semaphore_16BoundedSemaphore___init__(((struct __pyx_obj_6gevent_11__semaphore_BoundedSemaphore *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs); - - /* function exit code */ - __Pyx_XDECREF(__pyx_v_args); - __Pyx_XDECREF(__pyx_v_kwargs); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_11__semaphore_16BoundedSemaphore___init__(struct __pyx_obj_6gevent_11__semaphore_BoundedSemaphore *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - __Pyx_RefNannySetupContext("__init__", 0); - - /* "src/gevent/_semaphore.py":276 - * - * def __init__(self, *args, **kwargs): - * Semaphore.__init__(self, *args, **kwargs) # <<<<<<<<<<<<<< - * self._initial_value = self.counter - * - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_6gevent_11__semaphore_Semaphore), __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 276, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 276, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_self)); - __pyx_t_3 = PyNumber_Add(__pyx_t_2, __pyx_v_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 276, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 276, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_semaphore.py":277 - * def __init__(self, *args, **kwargs): - * Semaphore.__init__(self, *args, **kwargs) - * self._initial_value = self.counter # <<<<<<<<<<<<<< - * - * def release(self): - */ - __pyx_t_4 = __pyx_v_self->__pyx_base.counter; - __pyx_v_self->_initial_value = __pyx_t_4; - - /* "src/gevent/_semaphore.py":275 - * _OVER_RELEASE_ERROR = ValueError - * - * def __init__(self, *args, **kwargs): # <<<<<<<<<<<<<< - * Semaphore.__init__(self, *args, **kwargs) - * self._initial_value = self.counter - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent.__semaphore.BoundedSemaphore.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_semaphore.py":279 - * self._initial_value = self.counter - * - * def release(self): # <<<<<<<<<<<<<< - * if self.counter >= self._initial_value: - * raise self._OVER_RELEASE_ERROR("Semaphore released too many times") - */ - -static PyObject *__pyx_pw_6gevent_11__semaphore_16BoundedSemaphore_3release(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static int __pyx_f_6gevent_11__semaphore_16BoundedSemaphore_release(struct __pyx_obj_6gevent_11__semaphore_BoundedSemaphore *__pyx_v_self, int __pyx_skip_dispatch) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - int __pyx_t_6; - __Pyx_RefNannySetupContext("release", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_release); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 279, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_11__semaphore_16BoundedSemaphore_3release)) { - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 279, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 279, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 279, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_5; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/_semaphore.py":280 - * - * def release(self): - * if self.counter >= self._initial_value: # <<<<<<<<<<<<<< - * raise self._OVER_RELEASE_ERROR("Semaphore released too many times") - * Semaphore.release(self) - */ - __pyx_t_6 = ((__pyx_v_self->__pyx_base.counter >= __pyx_v_self->_initial_value) != 0); - if (unlikely(__pyx_t_6)) { - - /* "src/gevent/_semaphore.py":281 - * def release(self): - * if self.counter >= self._initial_value: - * raise self._OVER_RELEASE_ERROR("Semaphore released too many times") # <<<<<<<<<<<<<< - * Semaphore.release(self) - * - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_OVER_RELEASE_ERROR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 281, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 281, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 281, __pyx_L1_error) - - /* "src/gevent/_semaphore.py":280 - * - * def release(self): - * if self.counter >= self._initial_value: # <<<<<<<<<<<<<< - * raise self._OVER_RELEASE_ERROR("Semaphore released too many times") - * Semaphore.release(self) - */ - } - - /* "src/gevent/_semaphore.py":282 - * if self.counter >= self._initial_value: - * raise self._OVER_RELEASE_ERROR("Semaphore released too many times") - * Semaphore.release(self) # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_5 = __pyx_f_6gevent_11__semaphore_9Semaphore_release(((struct __pyx_obj_6gevent_11__semaphore_Semaphore *)__pyx_v_self), 1); if (unlikely(__pyx_t_5 == ((int)-1000))) __PYX_ERR(0, 282, __pyx_L1_error) - - /* "src/gevent/_semaphore.py":279 - * self._initial_value = self.counter - * - * def release(self): # <<<<<<<<<<<<<< - * if self.counter >= self._initial_value: - * raise self._OVER_RELEASE_ERROR("Semaphore released too many times") - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent.__semaphore.BoundedSemaphore.release", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1000; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_11__semaphore_16BoundedSemaphore_3release(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_11__semaphore_16BoundedSemaphore_2release[] = "BoundedSemaphore.release(self) -> int"; -static PyMethodDef __pyx_mdef_6gevent_11__semaphore_16BoundedSemaphore_3release = {"release", (PyCFunction)__pyx_pw_6gevent_11__semaphore_16BoundedSemaphore_3release, METH_NOARGS, __pyx_doc_6gevent_11__semaphore_16BoundedSemaphore_2release}; -static PyObject *__pyx_pw_6gevent_11__semaphore_16BoundedSemaphore_3release(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("release (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_11__semaphore_16BoundedSemaphore_2release(((struct __pyx_obj_6gevent_11__semaphore_BoundedSemaphore *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_11__semaphore_16BoundedSemaphore_2release(struct __pyx_obj_6gevent_11__semaphore_BoundedSemaphore *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("release", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_11__semaphore_16BoundedSemaphore_release(__pyx_v_self, 1); if (unlikely(__pyx_t_1 == ((int)-1000))) __PYX_ERR(0, 279, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 279, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent.__semaphore.BoundedSemaphore.release", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__semaphore.pxd":52 - * - * cdef class BoundedSemaphore(Semaphore): - * cdef readonly int _initial_value # <<<<<<<<<<<<<< - * - * cpdef int release(self) except -1000 - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_11__semaphore_16BoundedSemaphore_14_initial_value_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_11__semaphore_16BoundedSemaphore_14_initial_value_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_11__semaphore_16BoundedSemaphore_14_initial_value___get__(((struct __pyx_obj_6gevent_11__semaphore_BoundedSemaphore *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_11__semaphore_16BoundedSemaphore_14_initial_value___get__(struct __pyx_obj_6gevent_11__semaphore_BoundedSemaphore *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_initial_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 52, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__semaphore.BoundedSemaphore._initial_value.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_semaphore.py":285 - * - * - * def _init(): # <<<<<<<<<<<<<< - * greenlet_init() # pylint:disable=undefined-variable - * - */ - -static void __pyx_f_6gevent_11__semaphore__init(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_init", 0); - - /* "src/gevent/_semaphore.py":286 - * - * def _init(): - * greenlet_init() # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * - * _init() - */ - __pyx_f_6gevent_11__semaphore_greenlet_init(); - - /* "src/gevent/_semaphore.py":285 - * - * - * def _init(): # <<<<<<<<<<<<<< - * greenlet_init() # pylint:disable=undefined-variable - * - */ - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -/* "gevent/__greenlet_primitives.pxd":23 - * - * @cython.final - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - -static CYTHON_INLINE PyGreenlet *__pyx_f_6gevent_21__greenlet_primitives_getcurrent(void) { - PyGreenlet *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("getcurrent", 0); - - /* "gevent/__greenlet_primitives.pxd":24 - * @cython.final - * cdef inline greenlet getcurrent(): - * return PyGreenlet_GetCurrent() # <<<<<<<<<<<<<< - * - * cdef bint _greenlet_imported - */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __pyx_t_1 = ((PyObject *)PyGreenlet_GetCurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 24, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = ((PyGreenlet *)__pyx_t_1); - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "gevent/__greenlet_primitives.pxd":23 - * - * @cython.final - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__greenlet_primitives.getcurrent", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__greenlet_primitives.pxd":28 - * cdef bint _greenlet_imported - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - -static CYTHON_INLINE void __pyx_f_6gevent_21__greenlet_primitives_greenlet_init(void) { - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("greenlet_init", 0); - - /* "gevent/__greenlet_primitives.pxd":30 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - __pyx_t_1 = ((!(__pyx_v_6gevent_21__greenlet_primitives__greenlet_imported != 0)) != 0); - if (__pyx_t_1) { - - /* "gevent/__greenlet_primitives.pxd":31 - * global _greenlet_imported - * if not _greenlet_imported: - * PyGreenlet_Import() # <<<<<<<<<<<<<< - * _greenlet_imported = True - * - */ - PyGreenlet_Import(); - - /* "gevent/__greenlet_primitives.pxd":32 - * if not _greenlet_imported: - * PyGreenlet_Import() - * _greenlet_imported = True # <<<<<<<<<<<<<< - * - * cdef inline object _greenlet_switch(greenlet self): - */ - __pyx_v_6gevent_21__greenlet_primitives__greenlet_imported = 1; - - /* "gevent/__greenlet_primitives.pxd":30 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - } - - /* "gevent/__greenlet_primitives.pxd":28 - * cdef bint _greenlet_imported - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -/* "gevent/__greenlet_primitives.pxd":34 - * _greenlet_imported = True - * - * cdef inline object _greenlet_switch(greenlet self): # <<<<<<<<<<<<<< - * return PyGreenlet_Switch(self, NULL, NULL) - * - */ - -static CYTHON_INLINE PyObject *__pyx_f_6gevent_21__greenlet_primitives__greenlet_switch(PyGreenlet *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_greenlet_switch", 0); - - /* "gevent/__greenlet_primitives.pxd":35 - * - * cdef inline object _greenlet_switch(greenlet self): - * return PyGreenlet_Switch(self, NULL, NULL) # <<<<<<<<<<<<<< - * - * cdef class TrackedRawGreenlet(greenlet): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyGreenlet_Switch(__pyx_v_self, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 35, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "gevent/__greenlet_primitives.pxd":34 - * _greenlet_imported = True - * - * cdef inline object _greenlet_switch(greenlet self): # <<<<<<<<<<<<<< - * return PyGreenlet_Switch(self, NULL, NULL) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__greenlet_primitives._greenlet_switch", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__semaphore.pxd":19 - * void PyGreenlet_Import() - * - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - -static CYTHON_INLINE PyGreenlet *__pyx_f_6gevent_11__semaphore_getcurrent(void) { - PyGreenlet *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("getcurrent", 0); - - /* "gevent/__semaphore.pxd":20 - * - * cdef inline greenlet getcurrent(): - * return PyGreenlet_GetCurrent() # <<<<<<<<<<<<<< - * - * cdef inline void greenlet_init(): - */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __pyx_t_1 = ((PyObject *)PyGreenlet_GetCurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 20, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = ((PyGreenlet *)__pyx_t_1); - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "gevent/__semaphore.pxd":19 - * void PyGreenlet_Import() - * - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__semaphore.getcurrent", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__semaphore.pxd":22 - * return PyGreenlet_GetCurrent() - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - -static CYTHON_INLINE void __pyx_f_6gevent_11__semaphore_greenlet_init(void) { - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("greenlet_init", 0); - - /* "gevent/__semaphore.pxd":24 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - __pyx_t_1 = ((!(__pyx_v_6gevent_11__semaphore__greenlet_imported != 0)) != 0); - if (__pyx_t_1) { - - /* "gevent/__semaphore.pxd":25 - * global _greenlet_imported - * if not _greenlet_imported: - * PyGreenlet_Import() # <<<<<<<<<<<<<< - * _greenlet_imported = True - * - */ - PyGreenlet_Import(); - - /* "gevent/__semaphore.pxd":26 - * if not _greenlet_imported: - * PyGreenlet_Import() - * _greenlet_imported = True # <<<<<<<<<<<<<< - * - * - */ - __pyx_v_6gevent_11__semaphore__greenlet_imported = 1; - - /* "gevent/__semaphore.pxd":24 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - } - - /* "gevent/__semaphore.pxd":22 - * return PyGreenlet_GetCurrent() - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} -static struct __pyx_vtabstruct_6gevent_11__semaphore_Semaphore __pyx_vtable_6gevent_11__semaphore_Semaphore; - -static PyObject *__pyx_tp_new_6gevent_11__semaphore_Semaphore(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - struct __pyx_obj_6gevent_11__semaphore_Semaphore *p; - PyObject *o; - if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { - o = (*t->tp_alloc)(t, 0); - } else { - o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); - } - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_11__semaphore_Semaphore *)o); - p->__pyx_vtab = __pyx_vtabptr_6gevent_11__semaphore_Semaphore; - p->_links = ((PyObject*)Py_None); Py_INCREF(Py_None); - p->_notifier = Py_None; Py_INCREF(Py_None); - return o; -} - -static void __pyx_tp_dealloc_6gevent_11__semaphore_Semaphore(PyObject *o) { - struct __pyx_obj_6gevent_11__semaphore_Semaphore *p = (struct __pyx_obj_6gevent_11__semaphore_Semaphore *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - #endif - PyObject_GC_UnTrack(o); - if (p->__weakref__) PyObject_ClearWeakRefs(o); - Py_CLEAR(p->_links); - Py_CLEAR(p->_notifier); - (*Py_TYPE(o)->tp_free)(o); -} - -static int __pyx_tp_traverse_6gevent_11__semaphore_Semaphore(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_6gevent_11__semaphore_Semaphore *p = (struct __pyx_obj_6gevent_11__semaphore_Semaphore *)o; - if (p->_links) { - e = (*v)(p->_links, a); if (e) return e; - } - if (p->_notifier) { - e = (*v)(p->_notifier, a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_6gevent_11__semaphore_Semaphore(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_6gevent_11__semaphore_Semaphore *p = (struct __pyx_obj_6gevent_11__semaphore_Semaphore *)o; - tmp = ((PyObject*)p->_links); - p->_links = ((PyObject*)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->_notifier); - p->_notifier = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyObject *__pyx_getprop_6gevent_11__semaphore_9Semaphore_counter(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_11__semaphore_9Semaphore_7counter_1__get__(o); -} - -static int __pyx_setprop_6gevent_11__semaphore_9Semaphore_counter(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { - if (v) { - return __pyx_pw_6gevent_11__semaphore_9Semaphore_7counter_3__set__(o, v); - } - else { - PyErr_SetString(PyExc_NotImplementedError, "__del__"); - return -1; - } -} - -static PyObject *__pyx_getprop_6gevent_11__semaphore_9Semaphore__links(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_11__semaphore_9Semaphore_6_links_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_11__semaphore_9Semaphore__notifier(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_11__semaphore_9Semaphore_9_notifier_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_11__semaphore_9Semaphore__dirty(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_11__semaphore_9Semaphore_6_dirty_1__get__(o); -} - -static int __pyx_setprop_6gevent_11__semaphore_9Semaphore__dirty(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { - if (v) { - return __pyx_pw_6gevent_11__semaphore_9Semaphore_6_dirty_3__set__(o, v); - } - else { - PyErr_SetString(PyExc_NotImplementedError, "__del__"); - return -1; - } -} - -static PyMethodDef __pyx_methods_6gevent_11__semaphore_Semaphore[] = { - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_6gevent_11__semaphore_Semaphore[] = { - {(char *)"counter", __pyx_getprop_6gevent_11__semaphore_9Semaphore_counter, __pyx_setprop_6gevent_11__semaphore_9Semaphore_counter, (char *)"counter: 'int'", 0}, - {(char *)"_links", __pyx_getprop_6gevent_11__semaphore_9Semaphore__links, 0, (char *)0, 0}, - {(char *)"_notifier", __pyx_getprop_6gevent_11__semaphore_9Semaphore__notifier, 0, (char *)0, 0}, - {(char *)"_dirty", __pyx_getprop_6gevent_11__semaphore_9Semaphore__dirty, __pyx_setprop_6gevent_11__semaphore_9Semaphore__dirty, (char *)"_dirty: 'int'", 0}, - {0, 0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_11__semaphore_Semaphore = { - PyVarObject_HEAD_INIT(0, 0) - "gevent.__semaphore.Semaphore", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_11__semaphore_Semaphore), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_11__semaphore_Semaphore, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - __pyx_pw_6gevent_11__semaphore_9Semaphore_3__str__, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "Semaphore(value=1)\n\n Semaphore(value=1) -> Semaphore\n\n A semaphore manages a counter representing the number of release()\n calls minus the number of acquire() calls, plus an initial value.\n The acquire() method blocks if necessary until it can return\n without making the counter negative.\n\n If not given, ``value`` defaults to 1.\n\n The semaphore is a context manager and can be used in ``with`` statements.\n\n This Semaphore's ``__exit__`` method does not call the trace function\n on CPython, but does under PyPy.\n\n .. seealso:: :class:`BoundedSemaphore` for a safer version that prevents\n some classes of bugs.\n ", /*tp_doc*/ - __pyx_tp_traverse_6gevent_11__semaphore_Semaphore, /*tp_traverse*/ - __pyx_tp_clear_6gevent_11__semaphore_Semaphore, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_11__semaphore_Semaphore, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_6gevent_11__semaphore_Semaphore, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_11__semaphore_9Semaphore_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_11__semaphore_Semaphore, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; -static struct __pyx_vtabstruct_6gevent_11__semaphore_BoundedSemaphore __pyx_vtable_6gevent_11__semaphore_BoundedSemaphore; - -static PyObject *__pyx_tp_new_6gevent_11__semaphore_BoundedSemaphore(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_obj_6gevent_11__semaphore_BoundedSemaphore *p; - PyObject *o = __pyx_tp_new_6gevent_11__semaphore_Semaphore(t, a, k); - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_11__semaphore_BoundedSemaphore *)o); - p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6gevent_11__semaphore_Semaphore*)__pyx_vtabptr_6gevent_11__semaphore_BoundedSemaphore; - return o; -} - -static PyObject *__pyx_getprop_6gevent_11__semaphore_16BoundedSemaphore__initial_value(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_11__semaphore_16BoundedSemaphore_14_initial_value_1__get__(o); -} - -static PyMethodDef __pyx_methods_6gevent_11__semaphore_BoundedSemaphore[] = { - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_6gevent_11__semaphore_BoundedSemaphore[] = { - {(char *)"_initial_value", __pyx_getprop_6gevent_11__semaphore_16BoundedSemaphore__initial_value, 0, (char *)0, 0}, - {0, 0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_11__semaphore_BoundedSemaphore = { - PyVarObject_HEAD_INIT(0, 0) - "gevent.__semaphore.BoundedSemaphore", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_11__semaphore_BoundedSemaphore), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_11__semaphore_Semaphore, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_11__semaphore_9Semaphore_3__str__, /*tp_str*/ - #else - 0, /*tp_str*/ - #endif - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "BoundedSemaphore(*args, **kwargs)\n\n BoundedSemaphore(value=1) -> BoundedSemaphore\n\n A bounded semaphore checks to make sure its current value doesn't\n exceed its initial value. If it does, :class:`ValueError` is\n raised. In most situations semaphores are used to guard resources\n with limited capacity. If the semaphore is released too many times\n it's a sign of a bug.\n\n If not given, *value* defaults to 1.\n ", /*tp_doc*/ - __pyx_tp_traverse_6gevent_11__semaphore_Semaphore, /*tp_traverse*/ - __pyx_tp_clear_6gevent_11__semaphore_Semaphore, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_11__semaphore_BoundedSemaphore, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_6gevent_11__semaphore_BoundedSemaphore, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_11__semaphore_16BoundedSemaphore_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_11__semaphore_BoundedSemaphore, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; - -static PyMethodDef __pyx_methods[] = { - {0, 0, 0, 0} -}; - -#if PY_MAJOR_VERSION >= 3 -#if CYTHON_PEP489_MULTI_PHASE_INIT -static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ -static int __pyx_pymod_exec___semaphore(PyObject* module); /*proto*/ -static PyModuleDef_Slot __pyx_moduledef_slots[] = { - {Py_mod_create, (void*)__pyx_pymod_create}, - {Py_mod_exec, (void*)__pyx_pymod_exec___semaphore}, - {0, NULL} -}; -#endif - -static struct PyModuleDef __pyx_moduledef = { - PyModuleDef_HEAD_INIT, - "__semaphore", - 0, /* m_doc */ - #if CYTHON_PEP489_MULTI_PHASE_INIT - 0, /* m_size */ - #else - -1, /* m_size */ - #endif - __pyx_methods /* m_methods */, - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_moduledef_slots, /* m_slots */ - #else - NULL, /* m_reload */ - #endif - NULL, /* m_traverse */ - NULL, /* m_clear */ - NULL /* m_free */ -}; -#endif - -static __Pyx_StringTabEntry __pyx_string_tab[] = { - {&__pyx_n_s_AttributeError, __pyx_k_AttributeError, sizeof(__pyx_k_AttributeError), 0, 0, 1, 1}, - {&__pyx_n_s_BoundedSemaphore, __pyx_k_BoundedSemaphore, sizeof(__pyx_k_BoundedSemaphore), 0, 0, 1, 1}, - {&__pyx_n_s_BoundedSemaphore_release, __pyx_k_BoundedSemaphore_release, sizeof(__pyx_k_BoundedSemaphore_release), 0, 0, 1, 1}, - {&__pyx_kp_s_Expected_callable, __pyx_k_Expected_callable, sizeof(__pyx_k_Expected_callable), 0, 0, 1, 0}, - {&__pyx_kp_s_Invalid_switch_into_Semaphore_wa, __pyx_k_Invalid_switch_into_Semaphore_wa, sizeof(__pyx_k_Invalid_switch_into_Semaphore_wa), 0, 0, 1, 0}, - {&__pyx_n_s_OVER_RELEASE_ERROR, __pyx_k_OVER_RELEASE_ERROR, sizeof(__pyx_k_OVER_RELEASE_ERROR), 0, 0, 1, 1}, - {&__pyx_n_s_Semaphore, __pyx_k_Semaphore, sizeof(__pyx_k_Semaphore), 0, 0, 1, 1}, - {&__pyx_n_s_Semaphore___enter, __pyx_k_Semaphore___enter, sizeof(__pyx_k_Semaphore___enter), 0, 0, 1, 1}, - {&__pyx_n_s_Semaphore___exit, __pyx_k_Semaphore___exit, sizeof(__pyx_k_Semaphore___exit), 0, 0, 1, 1}, - {&__pyx_n_s_Semaphore__notify_links, __pyx_k_Semaphore__notify_links, sizeof(__pyx_k_Semaphore__notify_links), 0, 0, 1, 1}, - {&__pyx_n_s_Semaphore__start_notify, __pyx_k_Semaphore__start_notify, sizeof(__pyx_k_Semaphore__start_notify), 0, 0, 1, 1}, - {&__pyx_n_s_Semaphore_acquire, __pyx_k_Semaphore_acquire, sizeof(__pyx_k_Semaphore_acquire), 0, 0, 1, 1}, - {&__pyx_n_s_Semaphore_locked, __pyx_k_Semaphore_locked, sizeof(__pyx_k_Semaphore_locked), 0, 0, 1, 1}, - {&__pyx_n_s_Semaphore_rawlink, __pyx_k_Semaphore_rawlink, sizeof(__pyx_k_Semaphore_rawlink), 0, 0, 1, 1}, - {&__pyx_n_s_Semaphore_release, __pyx_k_Semaphore_release, sizeof(__pyx_k_Semaphore_release), 0, 0, 1, 1}, - {&__pyx_kp_s_Semaphore_released_too_many_time, __pyx_k_Semaphore_released_too_many_time, sizeof(__pyx_k_Semaphore_released_too_many_time), 0, 0, 1, 0}, - {&__pyx_n_s_Semaphore_unlink, __pyx_k_Semaphore_unlink, sizeof(__pyx_k_Semaphore_unlink), 0, 0, 1, 1}, - {&__pyx_n_s_Semaphore_wait, __pyx_k_Semaphore_wait, sizeof(__pyx_k_Semaphore_wait), 0, 0, 1, 1}, - {&__pyx_n_s_Timeout, __pyx_k_Timeout, sizeof(__pyx_k_Timeout), 0, 0, 1, 1}, - {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1}, - {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1}, - {&__pyx_n_s_acquire, __pyx_k_acquire, sizeof(__pyx_k_acquire), 0, 0, 1, 1}, - {&__pyx_n_s_all, __pyx_k_all, sizeof(__pyx_k_all), 0, 0, 1, 1}, - {&__pyx_n_s_blocking, __pyx_k_blocking, sizeof(__pyx_k_blocking), 0, 0, 1, 1}, - {&__pyx_n_s_callback, __pyx_k_callback, sizeof(__pyx_k_callback), 0, 0, 1, 1}, - {&__pyx_n_s_cancel, __pyx_k_cancel, sizeof(__pyx_k_cancel), 0, 0, 1, 1}, - {&__pyx_n_s_class, __pyx_k_class, sizeof(__pyx_k_class), 0, 0, 1, 1}, - {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, - {&__pyx_n_s_enter, __pyx_k_enter, sizeof(__pyx_k_enter), 0, 0, 1, 1}, - {&__pyx_n_s_exc_info, __pyx_k_exc_info, sizeof(__pyx_k_exc_info), 0, 0, 1, 1}, - {&__pyx_n_s_exit, __pyx_k_exit, sizeof(__pyx_k_exit), 0, 0, 1, 1}, - {&__pyx_n_s_get_hub, __pyx_k_get_hub, sizeof(__pyx_k_get_hub), 0, 0, 1, 1}, - {&__pyx_n_s_getcurrent, __pyx_k_getcurrent, sizeof(__pyx_k_getcurrent), 0, 0, 1, 1}, - {&__pyx_n_s_gevent, __pyx_k_gevent, sizeof(__pyx_k_gevent), 0, 0, 1, 1}, - {&__pyx_n_s_gevent___semaphore, __pyx_k_gevent___semaphore, sizeof(__pyx_k_gevent___semaphore), 0, 0, 1, 1}, - {&__pyx_n_s_gevent__util, __pyx_k_gevent__util, sizeof(__pyx_k_gevent__util), 0, 0, 1, 1}, - {&__pyx_n_s_gevent_timeout, __pyx_k_gevent_timeout, sizeof(__pyx_k_gevent_timeout), 0, 0, 1, 1}, - {&__pyx_n_s_greenlet, __pyx_k_greenlet, sizeof(__pyx_k_greenlet), 0, 0, 1, 1}, - {&__pyx_n_s_greenlet_imported, __pyx_k_greenlet_imported, sizeof(__pyx_k_greenlet_imported), 0, 0, 1, 1}, - {&__pyx_n_s_greenlet_init, __pyx_k_greenlet_init, sizeof(__pyx_k_greenlet_init), 0, 0, 1, 1}, - {&__pyx_n_s_handle_error, __pyx_k_handle_error, sizeof(__pyx_k_handle_error), 0, 0, 1, 1}, - {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, - {&__pyx_n_s_import_c_accel, __pyx_k_import_c_accel, sizeof(__pyx_k_import_c_accel), 0, 0, 1, 1}, - {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1}, - {&__pyx_n_s_lambda, __pyx_k_lambda, sizeof(__pyx_k_lambda), 0, 0, 1, 1}, - {&__pyx_n_s_locked, __pyx_k_locked, sizeof(__pyx_k_locked), 0, 0, 1, 1}, - {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, - {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, - {&__pyx_n_s_notify_links, __pyx_k_notify_links, sizeof(__pyx_k_notify_links), 0, 0, 1, 1}, - {&__pyx_n_s_py3k_acquire, __pyx_k_py3k_acquire, sizeof(__pyx_k_py3k_acquire), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_capi, __pyx_k_pyx_capi, sizeof(__pyx_k_pyx_capi), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1}, - {&__pyx_n_s_rawlink, __pyx_k_rawlink, sizeof(__pyx_k_rawlink), 0, 0, 1, 1}, - {&__pyx_n_s_release, __pyx_k_release, sizeof(__pyx_k_release), 0, 0, 1, 1}, - {&__pyx_n_s_remove, __pyx_k_remove, sizeof(__pyx_k_remove), 0, 0, 1, 1}, - {&__pyx_n_s_run_callback, __pyx_k_run_callback, sizeof(__pyx_k_run_callback), 0, 0, 1, 1}, - {&__pyx_kp_s_s_counter_s__links_s, __pyx_k_s_counter_s__links_s, sizeof(__pyx_k_s_counter_s__links_s), 0, 0, 1, 0}, - {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1}, - {&__pyx_kp_s_semaphore_initial_value_must_be, __pyx_k_semaphore_initial_value_must_be, sizeof(__pyx_k_semaphore_initial_value_must_be), 0, 0, 1, 0}, - {&__pyx_kp_s_src_gevent__semaphore_py, __pyx_k_src_gevent__semaphore_py, sizeof(__pyx_k_src_gevent__semaphore_py), 0, 0, 1, 0}, - {&__pyx_n_s_start_new_or_dummy, __pyx_k_start_new_or_dummy, sizeof(__pyx_k_start_new_or_dummy), 0, 0, 1, 1}, - {&__pyx_n_s_start_notify, __pyx_k_start_notify, sizeof(__pyx_k_start_notify), 0, 0, 1, 1}, - {&__pyx_n_s_switch, __pyx_k_switch, sizeof(__pyx_k_switch), 0, 0, 1, 1}, - {&__pyx_n_s_sys, __pyx_k_sys, sizeof(__pyx_k_sys), 0, 0, 1, 1}, - {&__pyx_n_s_t, __pyx_k_t, sizeof(__pyx_k_t), 0, 0, 1, 1}, - {&__pyx_n_s_tb, __pyx_k_tb, sizeof(__pyx_k_tb), 0, 0, 1, 1}, - {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, - {&__pyx_n_s_timeout, __pyx_k_timeout, sizeof(__pyx_k_timeout), 0, 0, 1, 1}, - {&__pyx_n_s_unlink, __pyx_k_unlink, sizeof(__pyx_k_unlink), 0, 0, 1, 1}, - {&__pyx_n_s_v, __pyx_k_v, sizeof(__pyx_k_v), 0, 0, 1, 1}, - {&__pyx_n_s_value, __pyx_k_value, sizeof(__pyx_k_value), 0, 0, 1, 1}, - {&__pyx_n_s_wait, __pyx_k_wait, sizeof(__pyx_k_wait), 0, 0, 1, 1}, - {0, 0, 0, 0, 0, 0, 0} -}; -static int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin___import__ = __Pyx_GetBuiltinName(__pyx_n_s_import); if (!__pyx_builtin___import__) __PYX_ERR(0, 17, __pyx_L1_error) - __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 273, __pyx_L1_error) - __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 142, __pyx_L1_error) - __pyx_builtin_AttributeError = __Pyx_GetBuiltinName(__pyx_n_s_AttributeError); if (!__pyx_builtin_AttributeError) __PYX_ERR(0, 161, __pyx_L1_error) - return 0; - __pyx_L1_error:; - return -1; -} - -static int __Pyx_InitCachedConstants(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - - /* "src/gevent/_semaphore.py":43 - * def __init__(self, value=1): - * if value < 0: - * raise ValueError("semaphore initial value must be >= 0") # <<<<<<<<<<<<<< - * self.counter = value - * self._dirty = False - */ - __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_s_semaphore_initial_value_must_be); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 43, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple_); - __Pyx_GIVEREF(__pyx_tuple_); - - /* "src/gevent/_semaphore.py":281 - * def release(self): - * if self.counter >= self._initial_value: - * raise self._OVER_RELEASE_ERROR("Semaphore released too many times") # <<<<<<<<<<<<<< - * Semaphore.release(self) - * - */ - __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_s_Semaphore_released_too_many_time); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 281, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__2); - __Pyx_GIVEREF(__pyx_tuple__2); - - /* "src/gevent/_semaphore.py":17 - * # is assignment) without generating a 'lvalue is not valid target' - * # error. - * locals()['getcurrent'] = __import__('greenlet').getcurrent # <<<<<<<<<<<<<< - * locals()['greenlet_init'] = lambda: None - * locals()['get_hub'] = __import__('gevent').get_hub - */ - __pyx_tuple__3 = PyTuple_Pack(1, __pyx_n_s_greenlet); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 17, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__3); - __Pyx_GIVEREF(__pyx_tuple__3); - - /* "src/gevent/_semaphore.py":19 - * locals()['getcurrent'] = __import__('greenlet').getcurrent - * locals()['greenlet_init'] = lambda: None - * locals()['get_hub'] = __import__('gevent').get_hub # <<<<<<<<<<<<<< - * - * class Semaphore(object): - */ - __pyx_tuple__4 = PyTuple_Pack(1, __pyx_n_s_gevent); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 19, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__4); - __Pyx_GIVEREF(__pyx_tuple__4); - - /* "src/gevent/_semaphore.py":68 - * return '<%s counter=%s _links[%s]>' % params - * - * def locked(self): # <<<<<<<<<<<<<< - * """Return a boolean indicating whether the semaphore can be acquired. - * Most useful with binary semaphores.""" - */ - __pyx_tuple__5 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 68, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__5); - __Pyx_GIVEREF(__pyx_tuple__5); - __pyx_codeobj__6 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__5, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__semaphore_py, __pyx_n_s_locked, 68, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__6)) __PYX_ERR(0, 68, __pyx_L1_error) - - /* "src/gevent/_semaphore.py":73 - * return self.counter <= 0 - * - * def release(self): # <<<<<<<<<<<<<< - * """ - * Release the semaphore, notifying any waiters if needed. - */ - __pyx_tuple__7 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 73, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__7); - __Pyx_GIVEREF(__pyx_tuple__7); - __pyx_codeobj__8 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__7, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__semaphore_py, __pyx_n_s_release, 73, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__8)) __PYX_ERR(0, 73, __pyx_L1_error) - - /* "src/gevent/_semaphore.py":81 - * return self.counter - * - * def _start_notify(self): # <<<<<<<<<<<<<< - * if self._links and self.counter > 0 and not self._notifier: - * # We create a new self._notifier each time through the loop, - */ - __pyx_tuple__9 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 81, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__9); - __Pyx_GIVEREF(__pyx_tuple__9); - __pyx_codeobj__10 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__9, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__semaphore_py, __pyx_n_s_start_notify, 81, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__10)) __PYX_ERR(0, 81, __pyx_L1_error) - - /* "src/gevent/_semaphore.py":93 - * self._notifier = hub.loop.run_callback(self._notify_links) - * - * def _notify_links(self): # <<<<<<<<<<<<<< - * # Subclasses CANNOT override. This is a cdef method. - * - */ - __pyx_tuple__11 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 93, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__11); - __Pyx_GIVEREF(__pyx_tuple__11); - __pyx_codeobj__12 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__11, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__semaphore_py, __pyx_n_s_notify_links, 93, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__12)) __PYX_ERR(0, 93, __pyx_L1_error) - - /* "src/gevent/_semaphore.py":129 - * self._notifier = None - * - * def rawlink(self, callback): # <<<<<<<<<<<<<< - * """ - * rawlink(callback) -> None - */ - __pyx_tuple__13 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_callback); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 129, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__13); - __Pyx_GIVEREF(__pyx_tuple__13); - __pyx_codeobj__14 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__semaphore_py, __pyx_n_s_rawlink, 129, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__14)) __PYX_ERR(0, 129, __pyx_L1_error) - - /* "src/gevent/_semaphore.py":149 - * self._dirty = True - * - * def unlink(self, callback): # <<<<<<<<<<<<<< - * """ - * unlink(callback) -> None - */ - __pyx_tuple__15 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_callback); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 149, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__15); - __Pyx_GIVEREF(__pyx_tuple__15); - __pyx_codeobj__16 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__15, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__semaphore_py, __pyx_n_s_unlink, 149, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__16)) __PYX_ERR(0, 149, __pyx_L1_error) - - /* "src/gevent/_semaphore.py":190 - * self.unlink(switch) - * - * def wait(self, timeout=None): # <<<<<<<<<<<<<< - * """ - * wait(timeout=None) -> int - */ - __pyx_tuple__17 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_timeout); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 190, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__17); - __Pyx_GIVEREF(__pyx_tuple__17); - __pyx_codeobj__18 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__semaphore_py, __pyx_n_s_wait, 190, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__18)) __PYX_ERR(0, 190, __pyx_L1_error) - - /* "src/gevent/_semaphore.py":211 - * return self.counter - * - * def acquire(self, blocking=True, timeout=None): # <<<<<<<<<<<<<< - * """ - * acquire(blocking=True, timeout=None) -> bool - */ - __pyx_tuple__19 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_blocking, __pyx_n_s_timeout); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 211, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__19); - __Pyx_GIVEREF(__pyx_tuple__19); - __pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__19, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__semaphore_py, __pyx_n_s_acquire, 211, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) __PYX_ERR(0, 211, __pyx_L1_error) - - /* "src/gevent/_semaphore.py":252 - * _py3k_acquire = acquire # PyPy needs this; it must be static for Cython - * - * def __enter__(self): # <<<<<<<<<<<<<< - * self.acquire() - * - */ - __pyx_tuple__21 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 252, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__21); - __Pyx_GIVEREF(__pyx_tuple__21); - __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__semaphore_py, __pyx_n_s_enter, 252, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(0, 252, __pyx_L1_error) - - /* "src/gevent/_semaphore.py":255 - * self.acquire() - * - * def __exit__(self, t, v, tb): # <<<<<<<<<<<<<< - * self.release() - * - */ - __pyx_tuple__23 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_t, __pyx_n_s_v, __pyx_n_s_tb); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 255, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__23); - __Pyx_GIVEREF(__pyx_tuple__23); - __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__semaphore_py, __pyx_n_s_exit, 255, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 255, __pyx_L1_error) - - /* "src/gevent/_semaphore.py":279 - * self._initial_value = self.counter - * - * def release(self): # <<<<<<<<<<<<<< - * if self.counter >= self._initial_value: - * raise self._OVER_RELEASE_ERROR("Semaphore released too many times") - */ - __pyx_tuple__25 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 279, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__25); - __Pyx_GIVEREF(__pyx_tuple__25); - __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__semaphore_py, __pyx_n_s_release, 279, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(0, 279, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_InitGlobals(void) { - if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) - return 0; - __pyx_L1_error:; - return -1; -} - -static int __Pyx_modinit_global_init_code(void); /*proto*/ -static int __Pyx_modinit_variable_export_code(void); /*proto*/ -static int __Pyx_modinit_function_export_code(void); /*proto*/ -static int __Pyx_modinit_type_init_code(void); /*proto*/ -static int __Pyx_modinit_type_import_code(void); /*proto*/ -static int __Pyx_modinit_variable_import_code(void); /*proto*/ -static int __Pyx_modinit_function_import_code(void); /*proto*/ - -static int __Pyx_modinit_global_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); - /*--- Global init code ---*/ - __pyx_v_6gevent_11__semaphore_Timeout = Py_None; Py_INCREF(Py_None); - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_variable_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); - /*--- Variable export code ---*/ - if (__Pyx_ExportVoidPtr(__pyx_n_s_Timeout, (void *)&__pyx_v_6gevent_11__semaphore_Timeout, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_greenlet_imported, (void *)&__pyx_v_6gevent_11__semaphore__greenlet_imported, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_function_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); - /*--- Function export code ---*/ - if (__Pyx_ExportFunction("_init", (void (*)(void))__pyx_f_6gevent_11__semaphore__init, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_type_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); - /*--- Type init code ---*/ - __pyx_ptype_6gevent_11__semaphore_greenlet = __Pyx_ImportType("greenlet", "greenlet", sizeof(PyGreenlet), 0); if (unlikely(!__pyx_ptype_6gevent_11__semaphore_greenlet)) __PYX_ERR(1, 10, __pyx_L1_error) - __pyx_vtabptr_6gevent_11__semaphore_Semaphore = &__pyx_vtable_6gevent_11__semaphore_Semaphore; - __pyx_vtable_6gevent_11__semaphore_Semaphore.locked = (int (*)(struct __pyx_obj_6gevent_11__semaphore_Semaphore *, int __pyx_skip_dispatch))__pyx_f_6gevent_11__semaphore_9Semaphore_locked; - __pyx_vtable_6gevent_11__semaphore_Semaphore.release = (int (*)(struct __pyx_obj_6gevent_11__semaphore_Semaphore *, int __pyx_skip_dispatch))__pyx_f_6gevent_11__semaphore_9Semaphore_release; - __pyx_vtable_6gevent_11__semaphore_Semaphore.rawlink = (PyObject *(*)(struct __pyx_obj_6gevent_11__semaphore_Semaphore *, PyObject *, int __pyx_skip_dispatch))__pyx_f_6gevent_11__semaphore_9Semaphore_rawlink; - __pyx_vtable_6gevent_11__semaphore_Semaphore.unlink = (PyObject *(*)(struct __pyx_obj_6gevent_11__semaphore_Semaphore *, PyObject *, int __pyx_skip_dispatch))__pyx_f_6gevent_11__semaphore_9Semaphore_unlink; - __pyx_vtable_6gevent_11__semaphore_Semaphore._start_notify = (PyObject *(*)(struct __pyx_obj_6gevent_11__semaphore_Semaphore *, int __pyx_skip_dispatch))__pyx_f_6gevent_11__semaphore_9Semaphore__start_notify; - __pyx_vtable_6gevent_11__semaphore_Semaphore._notify_links = (PyObject *(*)(struct __pyx_obj_6gevent_11__semaphore_Semaphore *, int __pyx_skip_dispatch))__pyx_f_6gevent_11__semaphore_9Semaphore__notify_links; - __pyx_vtable_6gevent_11__semaphore_Semaphore._do_wait = (PyObject *(*)(struct __pyx_obj_6gevent_11__semaphore_Semaphore *, PyObject *))__pyx_f_6gevent_11__semaphore_9Semaphore__do_wait; - __pyx_vtable_6gevent_11__semaphore_Semaphore.wait = (int (*)(struct __pyx_obj_6gevent_11__semaphore_Semaphore *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_11__semaphore_9Semaphore_wait *__pyx_optional_args))__pyx_f_6gevent_11__semaphore_9Semaphore_wait; - __pyx_vtable_6gevent_11__semaphore_Semaphore.acquire = (int (*)(struct __pyx_obj_6gevent_11__semaphore_Semaphore *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_11__semaphore_9Semaphore_acquire *__pyx_optional_args))__pyx_f_6gevent_11__semaphore_9Semaphore_acquire; - __pyx_vtable_6gevent_11__semaphore_Semaphore.__pyx___enter__ = (PyObject *(*)(struct __pyx_obj_6gevent_11__semaphore_Semaphore *, int __pyx_skip_dispatch))__pyx_f_6gevent_11__semaphore_9Semaphore___enter__; - __pyx_vtable_6gevent_11__semaphore_Semaphore.__pyx___exit__ = (PyObject *(*)(struct __pyx_obj_6gevent_11__semaphore_Semaphore *, PyObject *, PyObject *, PyObject *, int __pyx_skip_dispatch))__pyx_f_6gevent_11__semaphore_9Semaphore___exit__; - if (PyType_Ready(&__pyx_type_6gevent_11__semaphore_Semaphore) < 0) __PYX_ERR(0, 21, __pyx_L1_error) - __pyx_type_6gevent_11__semaphore_Semaphore.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_11__semaphore_Semaphore.tp_dictoffset && __pyx_type_6gevent_11__semaphore_Semaphore.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_11__semaphore_Semaphore.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - if (__Pyx_SetVtable(__pyx_type_6gevent_11__semaphore_Semaphore.tp_dict, __pyx_vtabptr_6gevent_11__semaphore_Semaphore) < 0) __PYX_ERR(0, 21, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "Semaphore", (PyObject *)&__pyx_type_6gevent_11__semaphore_Semaphore) < 0) __PYX_ERR(0, 21, __pyx_L1_error) - if (__pyx_type_6gevent_11__semaphore_Semaphore.tp_weaklistoffset == 0) __pyx_type_6gevent_11__semaphore_Semaphore.tp_weaklistoffset = offsetof(struct __pyx_obj_6gevent_11__semaphore_Semaphore, __weakref__); - __pyx_ptype_6gevent_11__semaphore_Semaphore = &__pyx_type_6gevent_11__semaphore_Semaphore; - __pyx_vtabptr_6gevent_11__semaphore_BoundedSemaphore = &__pyx_vtable_6gevent_11__semaphore_BoundedSemaphore; - __pyx_vtable_6gevent_11__semaphore_BoundedSemaphore.__pyx_base = *__pyx_vtabptr_6gevent_11__semaphore_Semaphore; - __pyx_vtable_6gevent_11__semaphore_BoundedSemaphore.__pyx_base.release = (int (*)(struct __pyx_obj_6gevent_11__semaphore_Semaphore *, int __pyx_skip_dispatch))__pyx_f_6gevent_11__semaphore_16BoundedSemaphore_release; - __pyx_type_6gevent_11__semaphore_BoundedSemaphore.tp_base = __pyx_ptype_6gevent_11__semaphore_Semaphore; - if (PyType_Ready(&__pyx_type_6gevent_11__semaphore_BoundedSemaphore) < 0) __PYX_ERR(0, 259, __pyx_L1_error) - __pyx_type_6gevent_11__semaphore_BoundedSemaphore.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_11__semaphore_BoundedSemaphore.tp_dictoffset && __pyx_type_6gevent_11__semaphore_BoundedSemaphore.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_11__semaphore_BoundedSemaphore.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - if (__Pyx_SetVtable(__pyx_type_6gevent_11__semaphore_BoundedSemaphore.tp_dict, __pyx_vtabptr_6gevent_11__semaphore_BoundedSemaphore) < 0) __PYX_ERR(0, 259, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "BoundedSemaphore", (PyObject *)&__pyx_type_6gevent_11__semaphore_BoundedSemaphore) < 0) __PYX_ERR(0, 259, __pyx_L1_error) - if (__pyx_type_6gevent_11__semaphore_BoundedSemaphore.tp_weaklistoffset == 0) __pyx_type_6gevent_11__semaphore_BoundedSemaphore.tp_weaklistoffset = offsetof(struct __pyx_obj_6gevent_11__semaphore_BoundedSemaphore, __pyx_base.__weakref__); - __pyx_ptype_6gevent_11__semaphore_BoundedSemaphore = &__pyx_type_6gevent_11__semaphore_BoundedSemaphore; - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_type_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); - /*--- Type import code ---*/ - __pyx_ptype_6gevent_21__greenlet_primitives_greenlet = __Pyx_ImportType("greenlet", "greenlet", sizeof(PyGreenlet), 0); if (unlikely(!__pyx_ptype_6gevent_21__greenlet_primitives_greenlet)) __PYX_ERR(2, 12, __pyx_L1_error) - __pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet = __Pyx_ImportType("gevent.__greenlet_primitives", "TrackedRawGreenlet", sizeof(struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet), 1); if (unlikely(!__pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet)) __PYX_ERR(2, 37, __pyx_L1_error) - __pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop = __Pyx_ImportType("gevent.__greenlet_primitives", "SwitchOutGreenletWithLoop", sizeof(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop), 1); if (unlikely(!__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop)) __PYX_ERR(2, 40, __pyx_L1_error) - __pyx_vtabptr_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop = (struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop*)__Pyx_GetVtable(__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop)) __PYX_ERR(2, 40, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_variable_import_code(void) { - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); - /*--- Variable import code ---*/ - __pyx_t_1 = __Pyx_ImportModule("gevent.__greenlet_primitives"); if (!__pyx_t_1) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_1, "wref", (void **)&__pyx_vp_6gevent_21__greenlet_primitives_wref, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_1, "BlockingSwitchOutError", (void **)&__pyx_vp_6gevent_21__greenlet_primitives_BlockingSwitchOutError, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_1, "_greenlet_imported", (void **)&__pyx_vp_6gevent_21__greenlet_primitives__greenlet_imported, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_2 = __Pyx_ImportModule("gevent.__hub_local"); if (!__pyx_t_2) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_2, "_threadlocal", (void **)&__pyx_vp_6gevent_11__hub_local__threadlocal, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_function_import_code(void) { - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); - /*--- Function import code ---*/ - __pyx_t_1 = __Pyx_ImportModule("gevent.__hub_local"); if (!__pyx_t_1) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportFunction(__pyx_t_1, "get_hub_noargs", (void (**)(void))&__pyx_f_6gevent_11__hub_local_get_hub_noargs, "struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *(int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_RefNannyFinishContext(); - return -1; -} - - -#if PY_MAJOR_VERSION < 3 -#ifdef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC void -#else -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -#endif -#else -#ifdef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC PyObject * -#else -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -#endif -#endif -#ifndef CYTHON_SMALL_CODE -#if defined(__clang__) - #define CYTHON_SMALL_CODE -#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4))) - #define CYTHON_SMALL_CODE __attribute__((cold)) -#else - #define CYTHON_SMALL_CODE -#endif -#endif - - -#if PY_MAJOR_VERSION < 3 -__Pyx_PyMODINIT_FUNC init__semaphore(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC init__semaphore(void) -#else -__Pyx_PyMODINIT_FUNC PyInit___semaphore(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC PyInit___semaphore(void) -#if CYTHON_PEP489_MULTI_PHASE_INIT -{ - return PyModuleDef_Init(&__pyx_moduledef); -} -static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) { - PyObject *value = PyObject_GetAttrString(spec, from_name); - int result = 0; - if (likely(value)) { - result = PyDict_SetItemString(moddict, to_name, value); - Py_DECREF(value); - } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Clear(); - } else { - result = -1; - } - return result; -} -static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) { - PyObject *module = NULL, *moddict, *modname; - if (__pyx_m) - return __Pyx_NewRef(__pyx_m); - modname = PyObject_GetAttrString(spec, "name"); - if (unlikely(!modname)) goto bad; - module = PyModule_NewObject(modname); - Py_DECREF(modname); - if (unlikely(!module)) goto bad; - moddict = PyModule_GetDict(module); - if (unlikely(!moddict)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__") < 0)) goto bad; - return module; -bad: - Py_XDECREF(module); - return NULL; -} - - -static int __pyx_pymod_exec___semaphore(PyObject *__pyx_pyinit_module) -#endif -#endif -{ - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannyDeclarations - #if CYTHON_PEP489_MULTI_PHASE_INIT - if (__pyx_m && __pyx_m == __pyx_pyinit_module) return 0; - #elif PY_MAJOR_VERSION >= 3 - if (__pyx_m) return __Pyx_NewRef(__pyx_m); - #endif - #if CYTHON_REFNANNY -__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); -if (!__Pyx_RefNanny) { - PyErr_Clear(); - __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); - if (!__Pyx_RefNanny) - Py_FatalError("failed to import 'refnanny' module"); -} -#endif - __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit___semaphore(void)", 0); - if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) - #ifdef __Pyx_CyFunction_USED - if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_FusedFunction_USED - if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Coroutine_USED - if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Generator_USED - if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_AsyncGen_USED - if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_StopAsyncIteration_USED - if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - /*--- Library function declarations ---*/ - /*--- Threads initialization code ---*/ - #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS - #ifdef WITH_THREAD /* Python build with threading support? */ - PyEval_InitThreads(); - #endif - #endif - /*--- Module creation code ---*/ - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_m = __pyx_pyinit_module; - Py_INCREF(__pyx_m); - #else - #if PY_MAJOR_VERSION < 3 - __pyx_m = Py_InitModule4("__semaphore", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); - #else - __pyx_m = PyModule_Create(&__pyx_moduledef); - #endif - if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) - Py_INCREF(__pyx_d); - __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) - #if CYTHON_COMPILING_IN_PYPY - Py_INCREF(__pyx_b); - #endif - if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - /*--- Initialize various global constants etc. ---*/ - if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) - if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - if (__pyx_module_is_main_gevent____semaphore) { - if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - } - #if PY_MAJOR_VERSION >= 3 - { - PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) - if (!PyDict_GetItemString(modules, "gevent.__semaphore")) { - if (unlikely(PyDict_SetItemString(modules, "gevent.__semaphore", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) - } - } - #endif - /*--- Builtin init code ---*/ - if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Constants init code ---*/ - if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Global type/function init code ---*/ - (void)__Pyx_modinit_global_init_code(); - if (unlikely(__Pyx_modinit_variable_export_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_function_export_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_type_init_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_type_import_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_variable_import_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_function_import_code() != 0)) goto __pyx_L1_error; - /*--- Execution code ---*/ - #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) - if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - - /* "src/gevent/_semaphore.py":3 - * # cython: auto_pickle=False,embedsignature=True,always_allow_keywords=False - * from __future__ import print_function, absolute_import, division - * import sys # <<<<<<<<<<<<<< - * - * from gevent.timeout import Timeout - */ - __pyx_t_1 = __Pyx_Import(__pyx_n_s_sys, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_1) < 0) __PYX_ERR(0, 3, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_semaphore.py":5 - * import sys - * - * from gevent.timeout import Timeout # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_Timeout); - __Pyx_GIVEREF(__pyx_n_s_Timeout); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_Timeout); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_gevent_timeout, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Timeout); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_v_6gevent_11__semaphore_Timeout); - __Pyx_DECREF_SET(__pyx_v_6gevent_11__semaphore_Timeout, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_semaphore.py":8 - * - * - * __all__ = [ # <<<<<<<<<<<<<< - * 'Semaphore', - * 'BoundedSemaphore', - */ - __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_Semaphore); - __Pyx_GIVEREF(__pyx_n_s_Semaphore); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_Semaphore); - __Pyx_INCREF(__pyx_n_s_BoundedSemaphore); - __Pyx_GIVEREF(__pyx_n_s_BoundedSemaphore); - PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_BoundedSemaphore); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_all, __pyx_t_2) < 0) __PYX_ERR(0, 8, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_semaphore.py":17 - * # is assignment) without generating a 'lvalue is not valid target' - * # error. - * locals()['getcurrent'] = __import__('greenlet').getcurrent # <<<<<<<<<<<<<< - * locals()['greenlet_init'] = lambda: None - * locals()['get_hub'] = __import__('gevent').get_hub - */ - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin___import__, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 17, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_getcurrent); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 17, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_Globals(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 17, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (unlikely(PyDict_SetItem(__pyx_t_2, __pyx_n_s_getcurrent, __pyx_t_1) < 0)) __PYX_ERR(0, 17, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_semaphore.py":18 - * # error. - * locals()['getcurrent'] = __import__('greenlet').getcurrent - * locals()['greenlet_init'] = lambda: None # <<<<<<<<<<<<<< - * locals()['get_hub'] = __import__('gevent').get_hub - * - */ - __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_11__semaphore_lambda, 0, __pyx_n_s_lambda, NULL, __pyx_n_s_gevent___semaphore, __pyx_d, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 18, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_Globals(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 18, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (unlikely(PyDict_SetItem(__pyx_t_2, __pyx_n_s_greenlet_init, __pyx_t_1) < 0)) __PYX_ERR(0, 18, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_semaphore.py":19 - * locals()['getcurrent'] = __import__('greenlet').getcurrent - * locals()['greenlet_init'] = lambda: None - * locals()['get_hub'] = __import__('gevent').get_hub # <<<<<<<<<<<<<< - * - * class Semaphore(object): - */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin___import__, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 19, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_get_hub); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 19, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_Globals(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 19, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (unlikely(PyDict_SetItem(__pyx_t_1, __pyx_n_s_get_hub, __pyx_t_2) < 0)) __PYX_ERR(0, 19, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_semaphore.py":68 - * return '<%s counter=%s _links[%s]>' % params - * - * def locked(self): # <<<<<<<<<<<<<< - * """Return a boolean indicating whether the semaphore can be acquired. - * Most useful with binary semaphores.""" - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_11__semaphore_9Semaphore_5locked, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Semaphore_locked, NULL, __pyx_n_s_gevent___semaphore, __pyx_d, ((PyObject *)__pyx_codeobj__6)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 68, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_11__semaphore_Semaphore->tp_dict, __pyx_n_s_locked, __pyx_t_2) < 0) __PYX_ERR(0, 68, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_11__semaphore_Semaphore); - - /* "src/gevent/_semaphore.py":73 - * return self.counter <= 0 - * - * def release(self): # <<<<<<<<<<<<<< - * """ - * Release the semaphore, notifying any waiters if needed. - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_11__semaphore_9Semaphore_7release, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Semaphore_release, NULL, __pyx_n_s_gevent___semaphore, __pyx_d, ((PyObject *)__pyx_codeobj__8)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 73, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_11__semaphore_Semaphore->tp_dict, __pyx_n_s_release, __pyx_t_2) < 0) __PYX_ERR(0, 73, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_11__semaphore_Semaphore); - - /* "src/gevent/_semaphore.py":81 - * return self.counter - * - * def _start_notify(self): # <<<<<<<<<<<<<< - * if self._links and self.counter > 0 and not self._notifier: - * # We create a new self._notifier each time through the loop, - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_11__semaphore_9Semaphore_9_start_notify, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Semaphore__start_notify, NULL, __pyx_n_s_gevent___semaphore, __pyx_d, ((PyObject *)__pyx_codeobj__10)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 81, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_11__semaphore_Semaphore->tp_dict, __pyx_n_s_start_notify, __pyx_t_2) < 0) __PYX_ERR(0, 81, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_11__semaphore_Semaphore); - - /* "src/gevent/_semaphore.py":93 - * self._notifier = hub.loop.run_callback(self._notify_links) - * - * def _notify_links(self): # <<<<<<<<<<<<<< - * # Subclasses CANNOT override. This is a cdef method. - * - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_11__semaphore_9Semaphore_11_notify_links, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Semaphore__notify_links, NULL, __pyx_n_s_gevent___semaphore, __pyx_d, ((PyObject *)__pyx_codeobj__12)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 93, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_11__semaphore_Semaphore->tp_dict, __pyx_n_s_notify_links, __pyx_t_2) < 0) __PYX_ERR(0, 93, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_11__semaphore_Semaphore); - - /* "src/gevent/_semaphore.py":129 - * self._notifier = None - * - * def rawlink(self, callback): # <<<<<<<<<<<<<< - * """ - * rawlink(callback) -> None - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_11__semaphore_9Semaphore_13rawlink, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Semaphore_rawlink, NULL, __pyx_n_s_gevent___semaphore, __pyx_d, ((PyObject *)__pyx_codeobj__14)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 129, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_11__semaphore_Semaphore->tp_dict, __pyx_n_s_rawlink, __pyx_t_2) < 0) __PYX_ERR(0, 129, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_11__semaphore_Semaphore); - - /* "src/gevent/_semaphore.py":149 - * self._dirty = True - * - * def unlink(self, callback): # <<<<<<<<<<<<<< - * """ - * unlink(callback) -> None - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_11__semaphore_9Semaphore_15unlink, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Semaphore_unlink, NULL, __pyx_n_s_gevent___semaphore, __pyx_d, ((PyObject *)__pyx_codeobj__16)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 149, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_11__semaphore_Semaphore->tp_dict, __pyx_n_s_unlink, __pyx_t_2) < 0) __PYX_ERR(0, 149, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_11__semaphore_Semaphore); - - /* "src/gevent/_semaphore.py":190 - * self.unlink(switch) - * - * def wait(self, timeout=None): # <<<<<<<<<<<<<< - * """ - * wait(timeout=None) -> int - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_11__semaphore_9Semaphore_17wait, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Semaphore_wait, NULL, __pyx_n_s_gevent___semaphore, __pyx_d, ((PyObject *)__pyx_codeobj__18)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 190, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_11__semaphore_Semaphore->tp_dict, __pyx_n_s_wait, __pyx_t_2) < 0) __PYX_ERR(0, 190, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_11__semaphore_Semaphore); - - /* "src/gevent/_semaphore.py":211 - * return self.counter - * - * def acquire(self, blocking=True, timeout=None): # <<<<<<<<<<<<<< - * """ - * acquire(blocking=True, timeout=None) -> bool - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_11__semaphore_9Semaphore_19acquire, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Semaphore_acquire, NULL, __pyx_n_s_gevent___semaphore, __pyx_d, ((PyObject *)__pyx_codeobj__20)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 211, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_11__semaphore_Semaphore->tp_dict, __pyx_n_s_acquire, __pyx_t_2) < 0) __PYX_ERR(0, 211, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_11__semaphore_Semaphore); - - /* "src/gevent/_semaphore.py":250 - * return True - * - * _py3k_acquire = acquire # PyPy needs this; it must be static for Cython # <<<<<<<<<<<<<< - * - * def __enter__(self): - */ - __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6gevent_11__semaphore_Semaphore, __pyx_n_s_acquire); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 250, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_11__semaphore_Semaphore->tp_dict, __pyx_n_s_py3k_acquire, __pyx_t_2) < 0) __PYX_ERR(0, 250, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_11__semaphore_Semaphore); - - /* "src/gevent/_semaphore.py":252 - * _py3k_acquire = acquire # PyPy needs this; it must be static for Cython - * - * def __enter__(self): # <<<<<<<<<<<<<< - * self.acquire() - * - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_11__semaphore_9Semaphore_21__enter__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Semaphore___enter, NULL, __pyx_n_s_gevent___semaphore, __pyx_d, ((PyObject *)__pyx_codeobj__22)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 252, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_11__semaphore_Semaphore->tp_dict, __pyx_n_s_enter, __pyx_t_2) < 0) __PYX_ERR(0, 252, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_11__semaphore_Semaphore); - - /* "src/gevent/_semaphore.py":255 - * self.acquire() - * - * def __exit__(self, t, v, tb): # <<<<<<<<<<<<<< - * self.release() - * - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_11__semaphore_9Semaphore_23__exit__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Semaphore___exit, NULL, __pyx_n_s_gevent___semaphore, __pyx_d, ((PyObject *)__pyx_codeobj__24)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 255, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_11__semaphore_Semaphore->tp_dict, __pyx_n_s_exit, __pyx_t_2) < 0) __PYX_ERR(0, 255, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_11__semaphore_Semaphore); - - /* "src/gevent/_semaphore.py":273 - * - * #: For monkey-patching, allow changing the class of error we raise - * _OVER_RELEASE_ERROR = ValueError # <<<<<<<<<<<<<< - * - * def __init__(self, *args, **kwargs): - */ - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_11__semaphore_BoundedSemaphore->tp_dict, __pyx_n_s_OVER_RELEASE_ERROR, __pyx_builtin_ValueError) < 0) __PYX_ERR(0, 273, __pyx_L1_error) - PyType_Modified(__pyx_ptype_6gevent_11__semaphore_BoundedSemaphore); - - /* "src/gevent/_semaphore.py":279 - * self._initial_value = self.counter - * - * def release(self): # <<<<<<<<<<<<<< - * if self.counter >= self._initial_value: - * raise self._OVER_RELEASE_ERROR("Semaphore released too many times") - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_11__semaphore_16BoundedSemaphore_3release, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BoundedSemaphore_release, NULL, __pyx_n_s_gevent___semaphore, __pyx_d, ((PyObject *)__pyx_codeobj__26)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 279, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_11__semaphore_BoundedSemaphore->tp_dict, __pyx_n_s_release, __pyx_t_2) < 0) __PYX_ERR(0, 279, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_11__semaphore_BoundedSemaphore); - - /* "src/gevent/_semaphore.py":288 - * greenlet_init() # pylint:disable=undefined-variable - * - * _init() # <<<<<<<<<<<<<< - * - * # By building the semaphore with Cython under PyPy, we get - */ - __pyx_f_6gevent_11__semaphore__init(); - - /* "src/gevent/_semaphore.py":302 - * # for PyPy in all cases anyway, so this does nothing. - * - * from gevent._util import import_c_accel # <<<<<<<<<<<<<< - * import_c_accel(globals(), 'gevent.__semaphore') - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 302, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_import_c_accel); - __Pyx_GIVEREF(__pyx_n_s_import_c_accel); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_import_c_accel); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_gevent__util, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 302, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_import_c_accel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 302, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_import_c_accel, __pyx_t_2) < 0) __PYX_ERR(0, 302, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_semaphore.py":303 - * - * from gevent._util import import_c_accel - * import_c_accel(globals(), 'gevent.__semaphore') # <<<<<<<<<<<<<< - */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_import_c_accel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 303, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_Globals(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 303, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 303, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_gevent___semaphore); - __Pyx_GIVEREF(__pyx_n_s_gevent___semaphore); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_gevent___semaphore); - __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 303, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_semaphore.py":1 - * # cython: auto_pickle=False,embedsignature=True,always_allow_keywords=False # <<<<<<<<<<<<<< - * from __future__ import print_function, absolute_import, division - * import sys - */ - __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/__semaphore.pxd":22 - * return PyGreenlet_GetCurrent() - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - - /*--- Wrapped vars code ---*/ - - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - if (__pyx_m) { - if (__pyx_d) { - __Pyx_AddTraceback("init gevent.__semaphore", 0, __pyx_lineno, __pyx_filename); - } - Py_DECREF(__pyx_m); __pyx_m = 0; - } else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_ImportError, "init gevent.__semaphore"); - } - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - #if CYTHON_PEP489_MULTI_PHASE_INIT - return (__pyx_m != NULL) ? 0 : -1; - #elif PY_MAJOR_VERSION >= 3 - return __pyx_m; - #else - return; - #endif -} - -/* --- Runtime support code --- */ -/* Refnanny */ -#if CYTHON_REFNANNY -static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { - PyObject *m = NULL, *p = NULL; - void *r = NULL; - m = PyImport_ImportModule((char *)modname); - if (!m) goto end; - p = PyObject_GetAttrString(m, (char *)"RefNannyAPI"); - if (!p) goto end; - r = PyLong_AsVoidPtr(p); -end: - Py_XDECREF(p); - Py_XDECREF(m); - return (__Pyx_RefNannyAPIStruct *)r; -} -#endif - -/* PyObjectGetAttrStr */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_getattro)) - return tp->tp_getattro(obj, attr_name); -#if PY_MAJOR_VERSION < 3 - if (likely(tp->tp_getattr)) - return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); -#endif - return PyObject_GetAttr(obj, attr_name); -} -#endif - -/* GetBuiltinName */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name) { - PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); - if (unlikely(!result)) { - PyErr_Format(PyExc_NameError, -#if PY_MAJOR_VERSION >= 3 - "name '%U' is not defined", name); -#else - "name '%.200s' is not defined", PyString_AS_STRING(name)); -#endif - } - return result; -} - -/* RaiseDoubleKeywords */ -static void __Pyx_RaiseDoubleKeywordsError( - const char* func_name, - PyObject* kw_name) -{ - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION >= 3 - "%s() got multiple values for keyword argument '%U'", func_name, kw_name); - #else - "%s() got multiple values for keyword argument '%s'", func_name, - PyString_AsString(kw_name)); - #endif -} - -/* ParseKeywords */ -static int __Pyx_ParseOptionalKeywords( - PyObject *kwds, - PyObject **argnames[], - PyObject *kwds2, - PyObject *values[], - Py_ssize_t num_pos_args, - const char* function_name) -{ - PyObject *key = 0, *value = 0; - Py_ssize_t pos = 0; - PyObject*** name; - PyObject*** first_kw_arg = argnames + num_pos_args; - while (PyDict_Next(kwds, &pos, &key, &value)) { - name = first_kw_arg; - while (*name && (**name != key)) name++; - if (*name) { - values[name-argnames] = value; - continue; - } - name = first_kw_arg; - #if PY_MAJOR_VERSION < 3 - if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) { - while (*name) { - if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) - && _PyString_Eq(**name, key)) { - values[name-argnames] = value; - break; - } - name++; - } - if (*name) continue; - else { - PyObject*** argname = argnames; - while (argname != first_kw_arg) { - if ((**argname == key) || ( - (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) - && _PyString_Eq(**argname, key))) { - goto arg_passed_twice; - } - argname++; - } - } - } else - #endif - if (likely(PyUnicode_Check(key))) { - while (*name) { - int cmp = (**name == key) ? 0 : - #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 : - #endif - PyUnicode_Compare(**name, key); - if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; - if (cmp == 0) { - values[name-argnames] = value; - break; - } - name++; - } - if (*name) continue; - else { - PyObject*** argname = argnames; - while (argname != first_kw_arg) { - int cmp = (**argname == key) ? 0 : - #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 : - #endif - PyUnicode_Compare(**argname, key); - if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; - if (cmp == 0) goto arg_passed_twice; - argname++; - } - } - } else - goto invalid_keyword_type; - if (kwds2) { - if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; - } else { - goto invalid_keyword; - } - } - return 0; -arg_passed_twice: - __Pyx_RaiseDoubleKeywordsError(function_name, key); - goto bad; -invalid_keyword_type: - PyErr_Format(PyExc_TypeError, - "%.200s() keywords must be strings", function_name); - goto bad; -invalid_keyword: - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION < 3 - "%.200s() got an unexpected keyword argument '%.200s'", - function_name, PyString_AsString(key)); - #else - "%s() got an unexpected keyword argument '%U'", - function_name, key); - #endif -bad: - return -1; -} - -/* RaiseArgTupleInvalid */ -static void __Pyx_RaiseArgtupleInvalid( - const char* func_name, - int exact, - Py_ssize_t num_min, - Py_ssize_t num_max, - Py_ssize_t num_found) -{ - Py_ssize_t num_expected; - const char *more_or_less; - if (num_found < num_min) { - num_expected = num_min; - more_or_less = "at least"; - } else { - num_expected = num_max; - more_or_less = "at most"; - } - if (exact) { - more_or_less = "exactly"; - } - PyErr_Format(PyExc_TypeError, - "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", - func_name, more_or_less, num_expected, - (num_expected == 1) ? "" : "s", num_found); -} - -/* PyObjectCall */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { - PyObject *result; - ternaryfunc call = func->ob_type->tp_call; - if (unlikely(!call)) - return PyObject_Call(func, arg, kw); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = (*call)(func, arg, kw); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyErrFetchRestore */ -#if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - tmp_type = tstate->curexc_type; - tmp_value = tstate->curexc_value; - tmp_tb = tstate->curexc_traceback; - tstate->curexc_type = type; - tstate->curexc_value = value; - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - *type = tstate->curexc_type; - *value = tstate->curexc_value; - *tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -} -#endif - -/* RaiseException */ -#if PY_MAJOR_VERSION < 3 -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, - CYTHON_UNUSED PyObject *cause) { - __Pyx_PyThreadState_declare - Py_XINCREF(type); - if (!value || value == Py_None) - value = NULL; - else - Py_INCREF(value); - if (!tb || tb == Py_None) - tb = NULL; - else { - Py_INCREF(tb); - if (!PyTraceBack_Check(tb)) { - PyErr_SetString(PyExc_TypeError, - "raise: arg 3 must be a traceback or None"); - goto raise_error; - } - } - if (PyType_Check(type)) { -#if CYTHON_COMPILING_IN_PYPY - if (!value) { - Py_INCREF(Py_None); - value = Py_None; - } -#endif - PyErr_NormalizeException(&type, &value, &tb); - } else { - if (value) { - PyErr_SetString(PyExc_TypeError, - "instance exception may not have a separate value"); - goto raise_error; - } - value = type; - type = (PyObject*) Py_TYPE(type); - Py_INCREF(type); - if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { - PyErr_SetString(PyExc_TypeError, - "raise: exception class must be a subclass of BaseException"); - goto raise_error; - } - } - __Pyx_PyThreadState_assign - __Pyx_ErrRestore(type, value, tb); - return; -raise_error: - Py_XDECREF(value); - Py_XDECREF(type); - Py_XDECREF(tb); - return; -} -#else -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { - PyObject* owned_instance = NULL; - if (tb == Py_None) { - tb = 0; - } else if (tb && !PyTraceBack_Check(tb)) { - PyErr_SetString(PyExc_TypeError, - "raise: arg 3 must be a traceback or None"); - goto bad; - } - if (value == Py_None) - value = 0; - if (PyExceptionInstance_Check(type)) { - if (value) { - PyErr_SetString(PyExc_TypeError, - "instance exception may not have a separate value"); - goto bad; - } - value = type; - type = (PyObject*) Py_TYPE(value); - } else if (PyExceptionClass_Check(type)) { - PyObject *instance_class = NULL; - if (value && PyExceptionInstance_Check(value)) { - instance_class = (PyObject*) Py_TYPE(value); - if (instance_class != type) { - int is_subclass = PyObject_IsSubclass(instance_class, type); - if (!is_subclass) { - instance_class = NULL; - } else if (unlikely(is_subclass == -1)) { - goto bad; - } else { - type = instance_class; - } - } - } - if (!instance_class) { - PyObject *args; - if (!value) - args = PyTuple_New(0); - else if (PyTuple_Check(value)) { - Py_INCREF(value); - args = value; - } else - args = PyTuple_Pack(1, value); - if (!args) - goto bad; - owned_instance = PyObject_Call(type, args, NULL); - Py_DECREF(args); - if (!owned_instance) - goto bad; - value = owned_instance; - if (!PyExceptionInstance_Check(value)) { - PyErr_Format(PyExc_TypeError, - "calling %R should have returned an instance of " - "BaseException, not %R", - type, Py_TYPE(value)); - goto bad; - } - } - } else { - PyErr_SetString(PyExc_TypeError, - "raise: exception class must be a subclass of BaseException"); - goto bad; - } - if (cause) { - PyObject *fixed_cause; - if (cause == Py_None) { - fixed_cause = NULL; - } else if (PyExceptionClass_Check(cause)) { - fixed_cause = PyObject_CallObject(cause, NULL); - if (fixed_cause == NULL) - goto bad; - } else if (PyExceptionInstance_Check(cause)) { - fixed_cause = cause; - Py_INCREF(fixed_cause); - } else { - PyErr_SetString(PyExc_TypeError, - "exception causes must derive from " - "BaseException"); - goto bad; - } - PyException_SetCause(value, fixed_cause); - } - PyErr_SetObject(type, value); - if (tb) { -#if CYTHON_COMPILING_IN_PYPY - PyObject *tmp_type, *tmp_value, *tmp_tb; - PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); - Py_INCREF(tb); - PyErr_Restore(tmp_type, tmp_value, tb); - Py_XDECREF(tmp_tb); -#else - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject* tmp_tb = tstate->curexc_traceback; - if (tb != tmp_tb) { - Py_INCREF(tb); - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_tb); - } -#endif - } -bad: - Py_XDECREF(owned_instance); - return; -} -#endif - -/* PyCFunctionFastCall */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { - PyCFunctionObject *func = (PyCFunctionObject*)func_obj; - PyCFunction meth = PyCFunction_GET_FUNCTION(func); - PyObject *self = PyCFunction_GET_SELF(func); - int flags = PyCFunction_GET_FLAGS(func); - assert(PyCFunction_Check(func)); - assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))); - assert(nargs >= 0); - assert(nargs == 0 || args != NULL); - /* _PyCFunction_FastCallDict() must not be called with an exception set, - because it may clear it (directly or indirectly) and so the - caller loses its exception */ - assert(!PyErr_Occurred()); - if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { - return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL); - } else { - return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs); - } -} -#endif - -/* PyFunctionFastCall */ -#if CYTHON_FAST_PYCALL -#include "frameobject.h" -static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, - PyObject *globals) { - PyFrameObject *f; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject **fastlocals; - Py_ssize_t i; - PyObject *result; - assert(globals != NULL); - /* XXX Perhaps we should create a specialized - PyFrame_New() that doesn't take locals, but does - take builtins without sanity checking them. - */ - assert(tstate != NULL); - f = PyFrame_New(tstate, co, globals, NULL); - if (f == NULL) { - return NULL; - } - fastlocals = f->f_localsplus; - for (i = 0; i < na; i++) { - Py_INCREF(*args); - fastlocals[i] = *args++; - } - result = PyEval_EvalFrameEx(f,0); - ++tstate->recursion_depth; - Py_DECREF(f); - --tstate->recursion_depth; - return result; -} -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs) { - PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); - PyObject *globals = PyFunction_GET_GLOBALS(func); - PyObject *argdefs = PyFunction_GET_DEFAULTS(func); - PyObject *closure; -#if PY_MAJOR_VERSION >= 3 - PyObject *kwdefs; -#endif - PyObject *kwtuple, **k; - PyObject **d; - Py_ssize_t nd; - Py_ssize_t nk; - PyObject *result; - assert(kwargs == NULL || PyDict_Check(kwargs)); - nk = kwargs ? PyDict_Size(kwargs) : 0; - if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { - return NULL; - } - if ( -#if PY_MAJOR_VERSION >= 3 - co->co_kwonlyargcount == 0 && -#endif - likely(kwargs == NULL || nk == 0) && - co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { - if (argdefs == NULL && co->co_argcount == nargs) { - result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); - goto done; - } - else if (nargs == 0 && argdefs != NULL - && co->co_argcount == Py_SIZE(argdefs)) { - /* function called with no arguments, but all parameters have - a default value: use default values as arguments .*/ - args = &PyTuple_GET_ITEM(argdefs, 0); - result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); - goto done; - } - } - if (kwargs != NULL) { - Py_ssize_t pos, i; - kwtuple = PyTuple_New(2 * nk); - if (kwtuple == NULL) { - result = NULL; - goto done; - } - k = &PyTuple_GET_ITEM(kwtuple, 0); - pos = i = 0; - while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { - Py_INCREF(k[i]); - Py_INCREF(k[i+1]); - i += 2; - } - nk = i / 2; - } - else { - kwtuple = NULL; - k = NULL; - } - closure = PyFunction_GET_CLOSURE(func); -#if PY_MAJOR_VERSION >= 3 - kwdefs = PyFunction_GET_KW_DEFAULTS(func); -#endif - if (argdefs != NULL) { - d = &PyTuple_GET_ITEM(argdefs, 0); - nd = Py_SIZE(argdefs); - } - else { - d = NULL; - nd = 0; - } -#if PY_MAJOR_VERSION >= 3 - result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, - args, nargs, - k, (int)nk, - d, (int)nd, kwdefs, closure); -#else - result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, - args, nargs, - k, (int)nk, - d, (int)nd, closure); -#endif - Py_XDECREF(kwtuple); -done: - Py_LeaveRecursiveCall(); - return result; -} -#endif -#endif - -/* PyObjectCallMethO */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { - PyObject *self, *result; - PyCFunction cfunc; - cfunc = PyCFunction_GET_FUNCTION(func); - self = PyCFunction_GET_SELF(func); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = cfunc(self, arg); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCallOneArg */ -#if CYTHON_COMPILING_IN_CPYTHON -static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_New(1); - if (unlikely(!args)) return NULL; - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 0, arg); - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, &arg, 1); - } -#endif - if (likely(PyCFunction_Check(func))) { - if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { - return __Pyx_PyObject_CallMethO(func, arg); -#if CYTHON_FAST_PYCCALL - } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { - return __Pyx_PyCFunction_FastCall(func, &arg, 1); -#endif - } - } - return __Pyx__PyObject_CallOneArg(func, arg); -} -#else -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_Pack(1, arg); - if (unlikely(!args)) return NULL; - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -#endif - -/* PyObjectCallNoArg */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, NULL, 0); - } -#endif -#ifdef __Pyx_CyFunction_USED - if (likely(PyCFunction_Check(func) || __Pyx_TypeCheck(func, __pyx_CyFunctionType))) { -#else - if (likely(PyCFunction_Check(func))) { -#endif - if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { - return __Pyx_PyObject_CallMethO(func, NULL); - } - } - return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL); -} -#endif - -/* WriteUnraisableException */ - static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, - CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename, - int full_traceback, CYTHON_UNUSED int nogil) { - PyObject *old_exc, *old_val, *old_tb; - PyObject *ctx; - __Pyx_PyThreadState_declare -#ifdef WITH_THREAD - PyGILState_STATE state; - if (nogil) - state = PyGILState_Ensure(); -#ifdef _MSC_VER - else state = (PyGILState_STATE)-1; -#endif -#endif - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&old_exc, &old_val, &old_tb); - if (full_traceback) { - Py_XINCREF(old_exc); - Py_XINCREF(old_val); - Py_XINCREF(old_tb); - __Pyx_ErrRestore(old_exc, old_val, old_tb); - PyErr_PrintEx(1); - } - #if PY_MAJOR_VERSION < 3 - ctx = PyString_FromString(name); - #else - ctx = PyUnicode_FromString(name); - #endif - __Pyx_ErrRestore(old_exc, old_val, old_tb); - if (!ctx) { - PyErr_WriteUnraisable(Py_None); - } else { - PyErr_WriteUnraisable(ctx); - Py_DECREF(ctx); - } -#ifdef WITH_THREAD - if (nogil) - PyGILState_Release(state); -#endif -} - -/* SaveResetException */ - #if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - #if PY_VERSION_HEX >= 0x030700A3 - *type = tstate->exc_state.exc_type; - *value = tstate->exc_state.exc_value; - *tb = tstate->exc_state.exc_traceback; - #else - *type = tstate->exc_type; - *value = tstate->exc_value; - *tb = tstate->exc_traceback; - #endif - Py_XINCREF(*type); - Py_XINCREF(*value); - Py_XINCREF(*tb); -} -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - #if PY_VERSION_HEX >= 0x030700A3 - tmp_type = tstate->exc_state.exc_type; - tmp_value = tstate->exc_state.exc_value; - tmp_tb = tstate->exc_state.exc_traceback; - tstate->exc_state.exc_type = type; - tstate->exc_state.exc_value = value; - tstate->exc_state.exc_traceback = tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = type; - tstate->exc_value = value; - tstate->exc_traceback = tb; - #endif - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} -#endif - -/* GetException */ - #if CYTHON_FAST_THREAD_STATE -static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { -#else -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) { -#endif - PyObject *local_type, *local_value, *local_tb; -#if CYTHON_FAST_THREAD_STATE - PyObject *tmp_type, *tmp_value, *tmp_tb; - local_type = tstate->curexc_type; - local_value = tstate->curexc_value; - local_tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -#else - PyErr_Fetch(&local_type, &local_value, &local_tb); -#endif - PyErr_NormalizeException(&local_type, &local_value, &local_tb); -#if CYTHON_FAST_THREAD_STATE - if (unlikely(tstate->curexc_type)) -#else - if (unlikely(PyErr_Occurred())) -#endif - goto bad; - #if PY_MAJOR_VERSION >= 3 - if (local_tb) { - if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) - goto bad; - } - #endif - Py_XINCREF(local_tb); - Py_XINCREF(local_type); - Py_XINCREF(local_value); - *type = local_type; - *value = local_value; - *tb = local_tb; -#if CYTHON_FAST_THREAD_STATE - #if PY_VERSION_HEX >= 0x030700A3 - tmp_type = tstate->exc_state.exc_type; - tmp_value = tstate->exc_state.exc_value; - tmp_tb = tstate->exc_state.exc_traceback; - tstate->exc_state.exc_type = local_type; - tstate->exc_state.exc_value = local_value; - tstate->exc_state.exc_traceback = local_tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = local_type; - tstate->exc_value = local_value; - tstate->exc_traceback = local_tb; - #endif - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -#else - PyErr_SetExcInfo(local_type, local_value, local_tb); -#endif - return 0; -bad: - *type = 0; - *value = 0; - *tb = 0; - Py_XDECREF(local_type); - Py_XDECREF(local_value); - Py_XDECREF(local_tb); - return -1; -} - -/* GetModuleGlobalName */ - static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { - PyObject *result; -#if !CYTHON_AVOID_BORROWED_REFS -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 - result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); - if (likely(result)) { - Py_INCREF(result); - } else if (unlikely(PyErr_Occurred())) { - result = NULL; - } else { -#else - result = PyDict_GetItem(__pyx_d, name); - if (likely(result)) { - Py_INCREF(result); - } else { -#endif -#else - result = PyObject_GetItem(__pyx_d, name); - if (!result) { - PyErr_Clear(); -#endif - result = __Pyx_GetBuiltinName(name); - } - return result; -} - -/* SwapException */ - #if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - #if PY_VERSION_HEX >= 0x030700A3 - tmp_type = tstate->exc_state.exc_type; - tmp_value = tstate->exc_state.exc_value; - tmp_tb = tstate->exc_state.exc_traceback; - tstate->exc_state.exc_type = *type; - tstate->exc_state.exc_value = *value; - tstate->exc_state.exc_traceback = *tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = *type; - tstate->exc_value = *value; - tstate->exc_traceback = *tb; - #endif - *type = tmp_type; - *value = tmp_value; - *tb = tmp_tb; -} -#else -static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); - PyErr_SetExcInfo(*type, *value, *tb); - *type = tmp_type; - *value = tmp_value; - *tb = tmp_tb; -} -#endif - -/* PyErrExceptionMatches */ - #if CYTHON_FAST_THREAD_STATE -static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; i<n; i++) { - if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1; - } -#endif - for (i=0; i<n; i++) { - if (__Pyx_PyErr_GivenExceptionMatches(exc_type, PyTuple_GET_ITEM(tuple, i))) return 1; - } - return 0; -} -static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) { - PyObject *exc_type = tstate->curexc_type; - if (exc_type == err) return 1; - if (unlikely(!exc_type)) return 0; - if (unlikely(PyTuple_Check(err))) - return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); - return __Pyx_PyErr_GivenExceptionMatches(exc_type, err); -} -#endif - -/* KeywordStringCheck */ - static int __Pyx_CheckKeywordStrings( - PyObject *kwdict, - const char* function_name, - int kw_allowed) -{ - PyObject* key = 0; - Py_ssize_t pos = 0; -#if CYTHON_COMPILING_IN_PYPY - if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0)) - goto invalid_keyword; - return 1; -#else - while (PyDict_Next(kwdict, &pos, &key, 0)) { - #if PY_MAJOR_VERSION < 3 - if (unlikely(!PyString_Check(key))) - #endif - if (unlikely(!PyUnicode_Check(key))) - goto invalid_keyword_type; - } - if ((!kw_allowed) && unlikely(key)) - goto invalid_keyword; - return 1; -invalid_keyword_type: - PyErr_Format(PyExc_TypeError, - "%.200s() keywords must be strings", function_name); - return 0; -#endif -invalid_keyword: - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION < 3 - "%.200s() got an unexpected keyword argument '%.200s'", - function_name, PyString_AsString(key)); - #else - "%s() got an unexpected keyword argument '%U'", - function_name, key); - #endif - return 0; -} - -/* PyObject_GenericGetAttrNoDict */ - #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { - PyErr_Format(PyExc_AttributeError, -#if PY_MAJOR_VERSION >= 3 - "'%.50s' object has no attribute '%U'", - tp->tp_name, attr_name); -#else - "'%.50s' object has no attribute '%.400s'", - tp->tp_name, PyString_AS_STRING(attr_name)); -#endif - return NULL; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { - PyObject *descr; - PyTypeObject *tp = Py_TYPE(obj); - if (unlikely(!PyString_Check(attr_name))) { - return PyObject_GenericGetAttr(obj, attr_name); - } - assert(!tp->tp_dictoffset); - descr = _PyType_Lookup(tp, attr_name); - if (unlikely(!descr)) { - return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); - } - Py_INCREF(descr); - #if PY_MAJOR_VERSION < 3 - if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) - #endif - { - descrgetfunc f = Py_TYPE(descr)->tp_descr_get; - if (unlikely(f)) { - PyObject *res = f(descr, obj, (PyObject *)tp); - Py_DECREF(descr); - return res; - } - } - return descr; -} -#endif - -/* PyObject_GenericGetAttr */ - #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) { - if (unlikely(Py_TYPE(obj)->tp_dictoffset)) { - return PyObject_GenericGetAttr(obj, attr_name); - } - return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name); -} -#endif - -/* SetVTable */ - static int __Pyx_SetVtable(PyObject *dict, void *vtable) { -#if PY_VERSION_HEX >= 0x02070000 - PyObject *ob = PyCapsule_New(vtable, 0, 0); -#else - PyObject *ob = PyCObject_FromVoidPtr(vtable, 0); -#endif - if (!ob) - goto bad; - if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0) - goto bad; - Py_DECREF(ob); - return 0; -bad: - Py_XDECREF(ob); - return -1; -} - -/* GetVTable */ - static void* __Pyx_GetVtable(PyObject *dict) { - void* ptr; - PyObject *ob = PyObject_GetItem(dict, __pyx_n_s_pyx_vtable); - if (!ob) - goto bad; -#if PY_VERSION_HEX >= 0x02070000 - ptr = PyCapsule_GetPointer(ob, 0); -#else - ptr = PyCObject_AsVoidPtr(ob); -#endif - if (!ptr && !PyErr_Occurred()) - PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type"); - Py_DECREF(ob); - return ptr; -bad: - Py_XDECREF(ob); - return NULL; -} - -/* Import */ - static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { - PyObject *empty_list = 0; - PyObject *module = 0; - PyObject *global_dict = 0; - PyObject *empty_dict = 0; - PyObject *list; - #if PY_MAJOR_VERSION < 3 - PyObject *py_import; - py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); - if (!py_import) - goto bad; - #endif - if (from_list) - list = from_list; - else { - empty_list = PyList_New(0); - if (!empty_list) - goto bad; - list = empty_list; - } - global_dict = PyModule_GetDict(__pyx_m); - if (!global_dict) - goto bad; - empty_dict = PyDict_New(); - if (!empty_dict) - goto bad; - { - #if PY_MAJOR_VERSION >= 3 - if (level == -1) { - if (strchr(__Pyx_MODULE_NAME, '.')) { - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, 1); - if (!module) { - if (!PyErr_ExceptionMatches(PyExc_ImportError)) - goto bad; - PyErr_Clear(); - } - } - level = 0; - } - #endif - if (!module) { - #if PY_MAJOR_VERSION < 3 - PyObject *py_level = PyInt_FromLong(level); - if (!py_level) - goto bad; - module = PyObject_CallFunctionObjArgs(py_import, - name, global_dict, empty_dict, list, py_level, NULL); - Py_DECREF(py_level); - #else - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, level); - #endif - } - } -bad: - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(py_import); - #endif - Py_XDECREF(empty_list); - Py_XDECREF(empty_dict); - return module; -} - -/* ImportFrom */ - static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { - PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); - if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Format(PyExc_ImportError, - #if PY_MAJOR_VERSION < 3 - "cannot import name %.230s", PyString_AS_STRING(name)); - #else - "cannot import name %S", name); - #endif - } - return value; -} - -/* FetchCommonType */ - static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { - PyObject* fake_module; - PyTypeObject* cached_type = NULL; - fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI); - if (!fake_module) return NULL; - Py_INCREF(fake_module); - cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name); - if (cached_type) { - if (!PyType_Check((PyObject*)cached_type)) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s is not a type object", - type->tp_name); - goto bad; - } - if (cached_type->tp_basicsize != type->tp_basicsize) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s has the wrong size, try recompiling", - type->tp_name); - goto bad; - } - } else { - if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; - PyErr_Clear(); - if (PyType_Ready(type) < 0) goto bad; - if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0) - goto bad; - Py_INCREF(type); - cached_type = type; - } -done: - Py_DECREF(fake_module); - return cached_type; -bad: - Py_XDECREF(cached_type); - cached_type = NULL; - goto done; -} - -/* CythonFunction */ - #include <structmember.h> -static PyObject * -__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure) -{ - if (unlikely(op->func_doc == NULL)) { - if (op->func.m_ml->ml_doc) { -#if PY_MAJOR_VERSION >= 3 - op->func_doc = PyUnicode_FromString(op->func.m_ml->ml_doc); -#else - op->func_doc = PyString_FromString(op->func.m_ml->ml_doc); -#endif - if (unlikely(op->func_doc == NULL)) - return NULL; - } else { - Py_INCREF(Py_None); - return Py_None; - } - } - Py_INCREF(op->func_doc); - return op->func_doc; -} -static int -__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp = op->func_doc; - if (value == NULL) { - value = Py_None; - } - Py_INCREF(value); - op->func_doc = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op) -{ - if (unlikely(op->func_name == NULL)) { -#if PY_MAJOR_VERSION >= 3 - op->func_name = PyUnicode_InternFromString(op->func.m_ml->ml_name); -#else - op->func_name = PyString_InternFromString(op->func.m_ml->ml_name); -#endif - if (unlikely(op->func_name == NULL)) - return NULL; - } - Py_INCREF(op->func_name); - return op->func_name; -} -static int -__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; -#if PY_MAJOR_VERSION >= 3 - if (unlikely(value == NULL || !PyUnicode_Check(value))) { -#else - if (unlikely(value == NULL || !PyString_Check(value))) { -#endif - PyErr_SetString(PyExc_TypeError, - "__name__ must be set to a string object"); - return -1; - } - tmp = op->func_name; - Py_INCREF(value); - op->func_name = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op) -{ - Py_INCREF(op->func_qualname); - return op->func_qualname; -} -static int -__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; -#if PY_MAJOR_VERSION >= 3 - if (unlikely(value == NULL || !PyUnicode_Check(value))) { -#else - if (unlikely(value == NULL || !PyString_Check(value))) { -#endif - PyErr_SetString(PyExc_TypeError, - "__qualname__ must be set to a string object"); - return -1; - } - tmp = op->func_qualname; - Py_INCREF(value); - op->func_qualname = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure) -{ - PyObject *self; - self = m->func_closure; - if (self == NULL) - self = Py_None; - Py_INCREF(self); - return self; -} -static PyObject * -__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op) -{ - if (unlikely(op->func_dict == NULL)) { - op->func_dict = PyDict_New(); - if (unlikely(op->func_dict == NULL)) - return NULL; - } - Py_INCREF(op->func_dict); - return op->func_dict; -} -static int -__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; - if (unlikely(value == NULL)) { - PyErr_SetString(PyExc_TypeError, - "function's dictionary may not be deleted"); - return -1; - } - if (unlikely(!PyDict_Check(value))) { - PyErr_SetString(PyExc_TypeError, - "setting function's dictionary to a non-dict"); - return -1; - } - tmp = op->func_dict; - Py_INCREF(value); - op->func_dict = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op) -{ - Py_INCREF(op->func_globals); - return op->func_globals; -} -static PyObject * -__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op) -{ - Py_INCREF(Py_None); - return Py_None; -} -static PyObject * -__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op) -{ - PyObject* result = (op->func_code) ? op->func_code : Py_None; - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { - int result = 0; - PyObject *res = op->defaults_getter((PyObject *) op); - if (unlikely(!res)) - return -1; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - op->defaults_tuple = PyTuple_GET_ITEM(res, 0); - Py_INCREF(op->defaults_tuple); - op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); - Py_INCREF(op->defaults_kwdict); - #else - op->defaults_tuple = PySequence_ITEM(res, 0); - if (unlikely(!op->defaults_tuple)) result = -1; - else { - op->defaults_kwdict = PySequence_ITEM(res, 1); - if (unlikely(!op->defaults_kwdict)) result = -1; - } - #endif - Py_DECREF(res); - return result; -} -static int -__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value) { - value = Py_None; - } else if (value != Py_None && !PyTuple_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__defaults__ must be set to a tuple object"); - return -1; - } - Py_INCREF(value); - tmp = op->defaults_tuple; - op->defaults_tuple = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) { - PyObject* result = op->defaults_tuple; - if (unlikely(!result)) { - if (op->defaults_getter) { - if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; - result = op->defaults_tuple; - } else { - result = Py_None; - } - } - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value) { - value = Py_None; - } else if (value != Py_None && !PyDict_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__kwdefaults__ must be set to a dict object"); - return -1; - } - Py_INCREF(value); - tmp = op->defaults_kwdict; - op->defaults_kwdict = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) { - PyObject* result = op->defaults_kwdict; - if (unlikely(!result)) { - if (op->defaults_getter) { - if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; - result = op->defaults_kwdict; - } else { - result = Py_None; - } - } - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value || value == Py_None) { - value = NULL; - } else if (!PyDict_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__annotations__ must be set to a dict object"); - return -1; - } - Py_XINCREF(value); - tmp = op->func_annotations; - op->func_annotations = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op) { - PyObject* result = op->func_annotations; - if (unlikely(!result)) { - result = PyDict_New(); - if (unlikely(!result)) return NULL; - op->func_annotations = result; - } - Py_INCREF(result); - return result; -} -static PyGetSetDef __pyx_CyFunction_getsets[] = { - {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, - {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, - {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, - {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, - {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, - {(char *) "__self__", (getter)__Pyx_CyFunction_get_self, 0, 0, 0}, - {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, - {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, - {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, - {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, - {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, - {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, - {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, - {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, - {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, - {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, - {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, - {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, - {0, 0, 0, 0, 0} -}; -static PyMemberDef __pyx_CyFunction_members[] = { - {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), PY_WRITE_RESTRICTED, 0}, - {0, 0, 0, 0, 0} -}; -static PyObject * -__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args) -{ -#if PY_MAJOR_VERSION >= 3 - return PyUnicode_FromString(m->func.m_ml->ml_name); -#else - return PyString_FromString(m->func.m_ml->ml_name); -#endif -} -static PyMethodDef __pyx_CyFunction_methods[] = { - {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, - {0, 0, 0, 0} -}; -#if PY_VERSION_HEX < 0x030500A0 -#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) -#else -#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func.m_weakreflist) -#endif -static PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *ml, int flags, PyObject* qualname, - PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { - __pyx_CyFunctionObject *op = PyObject_GC_New(__pyx_CyFunctionObject, type); - if (op == NULL) - return NULL; - op->flags = flags; - __Pyx_CyFunction_weakreflist(op) = NULL; - op->func.m_ml = ml; - op->func.m_self = (PyObject *) op; - Py_XINCREF(closure); - op->func_closure = closure; - Py_XINCREF(module); - op->func.m_module = module; - op->func_dict = NULL; - op->func_name = NULL; - Py_INCREF(qualname); - op->func_qualname = qualname; - op->func_doc = NULL; - op->func_classobj = NULL; - op->func_globals = globals; - Py_INCREF(op->func_globals); - Py_XINCREF(code); - op->func_code = code; - op->defaults_pyobjects = 0; - op->defaults = NULL; - op->defaults_tuple = NULL; - op->defaults_kwdict = NULL; - op->defaults_getter = NULL; - op->func_annotations = NULL; - PyObject_GC_Track(op); - return (PyObject *) op; -} -static int -__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) -{ - Py_CLEAR(m->func_closure); - Py_CLEAR(m->func.m_module); - Py_CLEAR(m->func_dict); - Py_CLEAR(m->func_name); - Py_CLEAR(m->func_qualname); - Py_CLEAR(m->func_doc); - Py_CLEAR(m->func_globals); - Py_CLEAR(m->func_code); - Py_CLEAR(m->func_classobj); - Py_CLEAR(m->defaults_tuple); - Py_CLEAR(m->defaults_kwdict); - Py_CLEAR(m->func_annotations); - if (m->defaults) { - PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); - int i; - for (i = 0; i < m->defaults_pyobjects; i++) - Py_XDECREF(pydefaults[i]); - PyObject_Free(m->defaults); - m->defaults = NULL; - } - return 0; -} -static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) -{ - if (__Pyx_CyFunction_weakreflist(m) != NULL) - PyObject_ClearWeakRefs((PyObject *) m); - __Pyx_CyFunction_clear(m); - PyObject_GC_Del(m); -} -static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) -{ - PyObject_GC_UnTrack(m); - __Pyx__CyFunction_dealloc(m); -} -static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) -{ - Py_VISIT(m->func_closure); - Py_VISIT(m->func.m_module); - Py_VISIT(m->func_dict); - Py_VISIT(m->func_name); - Py_VISIT(m->func_qualname); - Py_VISIT(m->func_doc); - Py_VISIT(m->func_globals); - Py_VISIT(m->func_code); - Py_VISIT(m->func_classobj); - Py_VISIT(m->defaults_tuple); - Py_VISIT(m->defaults_kwdict); - if (m->defaults) { - PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); - int i; - for (i = 0; i < m->defaults_pyobjects; i++) - Py_VISIT(pydefaults[i]); - } - return 0; -} -static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type) -{ - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) { - Py_INCREF(func); - return func; - } - if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) { - if (type == NULL) - type = (PyObject *)(Py_TYPE(obj)); - return __Pyx_PyMethod_New(func, type, (PyObject *)(Py_TYPE(type))); - } - if (obj == Py_None) - obj = NULL; - return __Pyx_PyMethod_New(func, obj, type); -} -static PyObject* -__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) -{ -#if PY_MAJOR_VERSION >= 3 - return PyUnicode_FromFormat("<cyfunction %U at %p>", - op->func_qualname, (void *)op); -#else - return PyString_FromFormat("<cyfunction %s at %p>", - PyString_AsString(op->func_qualname), (void *)op); -#endif -} -static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { - PyCFunctionObject* f = (PyCFunctionObject*)func; - PyCFunction meth = f->m_ml->ml_meth; - Py_ssize_t size; - switch (f->m_ml->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { - case METH_VARARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) - return (*meth)(self, arg); - break; - case METH_VARARGS | METH_KEYWORDS: - return (*(PyCFunctionWithKeywords)meth)(self, arg, kw); - case METH_NOARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { - size = PyTuple_GET_SIZE(arg); - if (likely(size == 0)) - return (*meth)(self, NULL); - PyErr_Format(PyExc_TypeError, - "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", - f->m_ml->ml_name, size); - return NULL; - } - break; - case METH_O: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { - size = PyTuple_GET_SIZE(arg); - if (likely(size == 1)) { - PyObject *result, *arg0; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - arg0 = PyTuple_GET_ITEM(arg, 0); - #else - arg0 = PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; - #endif - result = (*meth)(self, arg0); - #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) - Py_DECREF(arg0); - #endif - return result; - } - PyErr_Format(PyExc_TypeError, - "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", - f->m_ml->ml_name, size); - return NULL; - } - break; - default: - PyErr_SetString(PyExc_SystemError, "Bad call flags in " - "__Pyx_CyFunction_Call. METH_OLDARGS is no " - "longer supported!"); - return NULL; - } - PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", - f->m_ml->ml_name); - return NULL; -} -static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { - return __Pyx_CyFunction_CallMethod(func, ((PyCFunctionObject*)func)->m_self, arg, kw); -} -static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { - PyObject *result; - __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; - if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { - Py_ssize_t argc; - PyObject *new_args; - PyObject *self; - argc = PyTuple_GET_SIZE(args); - new_args = PyTuple_GetSlice(args, 1, argc); - if (unlikely(!new_args)) - return NULL; - self = PyTuple_GetItem(args, 0); - if (unlikely(!self)) { - Py_DECREF(new_args); - return NULL; - } - result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); - Py_DECREF(new_args); - } else { - result = __Pyx_CyFunction_Call(func, args, kw); - } - return result; -} -static PyTypeObject __pyx_CyFunctionType_type = { - PyVarObject_HEAD_INIT(0, 0) - "cython_function_or_method", - sizeof(__pyx_CyFunctionObject), - 0, - (destructor) __Pyx_CyFunction_dealloc, - 0, - 0, - 0, -#if PY_MAJOR_VERSION < 3 - 0, -#else - 0, -#endif - (reprfunc) __Pyx_CyFunction_repr, - 0, - 0, - 0, - 0, - __Pyx_CyFunction_CallAsMethod, - 0, - 0, - 0, - 0, - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, - 0, - (traverseproc) __Pyx_CyFunction_traverse, - (inquiry) __Pyx_CyFunction_clear, - 0, -#if PY_VERSION_HEX < 0x030500A0 - offsetof(__pyx_CyFunctionObject, func_weakreflist), -#else - offsetof(PyCFunctionObject, m_weakreflist), -#endif - 0, - 0, - __pyx_CyFunction_methods, - __pyx_CyFunction_members, - __pyx_CyFunction_getsets, - 0, - 0, - __Pyx_CyFunction_descr_get, - 0, - offsetof(__pyx_CyFunctionObject, func_dict), - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, -#if PY_VERSION_HEX >= 0x030400a1 - 0, -#endif -}; -static int __pyx_CyFunction_init(void) { - __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); - if (unlikely(__pyx_CyFunctionType == NULL)) { - return -1; - } - return 0; -} -static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults = PyObject_Malloc(size); - if (unlikely(!m->defaults)) - return PyErr_NoMemory(); - memset(m->defaults, 0, size); - m->defaults_pyobjects = pyobjects; - return m->defaults; -} -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults_tuple = tuple; - Py_INCREF(tuple); -} -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults_kwdict = dict; - Py_INCREF(dict); -} -static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->func_annotations = dict; - Py_INCREF(dict); -} - -/* GetNameInClass */ - static PyObject *__Pyx_GetGlobalNameAfterAttributeLookup(PyObject *name) { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) - return NULL; - __Pyx_PyErr_Clear(); - return __Pyx_GetModuleGlobalName(name); -} -static PyObject *__Pyx_GetNameInClass(PyObject *nmspace, PyObject *name) { - PyObject *result; - result = __Pyx_PyObject_GetAttrStr(nmspace, name); - if (!result) { - result = __Pyx_GetGlobalNameAfterAttributeLookup(name); - } - return result; -} - -/* GetAttr */ - static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) { -#if CYTHON_USE_TYPE_SLOTS -#if PY_MAJOR_VERSION >= 3 - if (likely(PyUnicode_Check(n))) -#else - if (likely(PyString_Check(n))) -#endif - return __Pyx_PyObject_GetAttrStr(o, n); -#endif - return PyObject_GetAttr(o, n); -} - -/* Globals */ - static PyObject* __Pyx_Globals(void) { - Py_ssize_t i; - PyObject *names; - PyObject *globals = __pyx_d; - Py_INCREF(globals); - names = PyObject_Dir(__pyx_m); - if (!names) - goto bad; - for (i = PyList_GET_SIZE(names)-1; i >= 0; i--) { -#if CYTHON_COMPILING_IN_PYPY - PyObject* name = PySequence_ITEM(names, i); - if (!name) - goto bad; -#else - PyObject* name = PyList_GET_ITEM(names, i); -#endif - if (!PyDict_Contains(globals, name)) { - PyObject* value = __Pyx_GetAttr(__pyx_m, name); - if (!value) { -#if CYTHON_COMPILING_IN_PYPY - Py_DECREF(name); -#endif - goto bad; - } - if (PyDict_SetItem(globals, name, value) < 0) { -#if CYTHON_COMPILING_IN_PYPY - Py_DECREF(name); -#endif - Py_DECREF(value); - goto bad; - } - } -#if CYTHON_COMPILING_IN_PYPY - Py_DECREF(name); -#endif - } - Py_DECREF(names); - return globals; -bad: - Py_XDECREF(names); - Py_XDECREF(globals); - return NULL; -} - -/* CLineInTraceback */ - #ifndef CYTHON_CLINE_IN_TRACEBACK -static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) { - PyObject *use_cline; - PyObject *ptype, *pvalue, *ptraceback; -#if CYTHON_COMPILING_IN_CPYTHON - PyObject **cython_runtime_dict; -#endif - if (unlikely(!__pyx_cython_runtime)) { - return c_line; - } - __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); -#if CYTHON_COMPILING_IN_CPYTHON - cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); - if (likely(cython_runtime_dict)) { - use_cline = __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback); - } else -#endif - { - PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); - if (use_cline_obj) { - use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; - Py_DECREF(use_cline_obj); - } else { - PyErr_Clear(); - use_cline = NULL; - } - } - if (!use_cline) { - c_line = 0; - PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); - } - else if (PyObject_Not(use_cline) != 0) { - c_line = 0; - } - __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); - return c_line; -} -#endif - -/* CodeObjectCache */ - static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { - int start = 0, mid = 0, end = count - 1; - if (end >= 0 && code_line > entries[end].code_line) { - return count; - } - while (start < end) { - mid = start + (end - start) / 2; - if (code_line < entries[mid].code_line) { - end = mid; - } else if (code_line > entries[mid].code_line) { - start = mid + 1; - } else { - return mid; - } - } - if (code_line <= entries[mid].code_line) { - return mid; - } else { - return mid + 1; - } -} -static PyCodeObject *__pyx_find_code_object(int code_line) { - PyCodeObject* code_object; - int pos; - if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { - return NULL; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { - return NULL; - } - code_object = __pyx_code_cache.entries[pos].code_object; - Py_INCREF(code_object); - return code_object; -} -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { - int pos, i; - __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; - if (unlikely(!code_line)) { - return; - } - if (unlikely(!entries)) { - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); - if (likely(entries)) { - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = 64; - __pyx_code_cache.count = 1; - entries[0].code_line = code_line; - entries[0].code_object = code_object; - Py_INCREF(code_object); - } - return; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { - PyCodeObject* tmp = entries[pos].code_object; - entries[pos].code_object = code_object; - Py_DECREF(tmp); - return; - } - if (__pyx_code_cache.count == __pyx_code_cache.max_count) { - int new_max = __pyx_code_cache.max_count + 64; - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( - __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry)); - if (unlikely(!entries)) { - return; - } - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = new_max; - } - for (i=__pyx_code_cache.count; i>pos; i--) { - entries[i] = entries[i-1]; - } - entries[pos].code_line = code_line; - entries[pos].code_object = code_object; - __pyx_code_cache.count++; - Py_INCREF(code_object); -} - -/* AddTraceback */ - #include "compile.h" -#include "frameobject.h" -#include "traceback.h" -static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( - const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyObject *py_srcfile = 0; - PyObject *py_funcname = 0; - #if PY_MAJOR_VERSION < 3 - py_srcfile = PyString_FromString(filename); - #else - py_srcfile = PyUnicode_FromString(filename); - #endif - if (!py_srcfile) goto bad; - if (c_line) { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #else - py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #endif - } - else { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromString(funcname); - #else - py_funcname = PyUnicode_FromString(funcname); - #endif - } - if (!py_funcname) goto bad; - py_code = __Pyx_PyCode_New( - 0, - 0, - 0, - 0, - 0, - __pyx_empty_bytes, /*PyObject *code,*/ - __pyx_empty_tuple, /*PyObject *consts,*/ - __pyx_empty_tuple, /*PyObject *names,*/ - __pyx_empty_tuple, /*PyObject *varnames,*/ - __pyx_empty_tuple, /*PyObject *freevars,*/ - __pyx_empty_tuple, /*PyObject *cellvars,*/ - py_srcfile, /*PyObject *filename,*/ - py_funcname, /*PyObject *name,*/ - py_line, - __pyx_empty_bytes /*PyObject *lnotab*/ - ); - Py_DECREF(py_srcfile); - Py_DECREF(py_funcname); - return py_code; -bad: - Py_XDECREF(py_srcfile); - Py_XDECREF(py_funcname); - return NULL; -} -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyFrameObject *py_frame = 0; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - if (c_line) { - c_line = __Pyx_CLineForTraceback(tstate, c_line); - } - py_code = __pyx_find_code_object(c_line ? -c_line : py_line); - if (!py_code) { - py_code = __Pyx_CreateCodeObjectForTraceback( - funcname, c_line, py_line, filename); - if (!py_code) goto bad; - __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); - } - py_frame = PyFrame_New( - tstate, /*PyThreadState *tstate,*/ - py_code, /*PyCodeObject *code,*/ - __pyx_d, /*PyObject *globals,*/ - 0 /*PyObject *locals*/ - ); - if (!py_frame) goto bad; - __Pyx_PyFrame_SetLineNumber(py_frame, py_line); - PyTraceBack_Here(py_frame); -bad: - Py_XDECREF(py_code); - Py_XDECREF(py_frame); -} - -/* CIntFromPyVerify */ - #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) -#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) -#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ - {\ - func_type value = func_value;\ - if (sizeof(target_type) < sizeof(func_type)) {\ - if (unlikely(value != (func_type) (target_type) value)) {\ - func_type zero = 0;\ - if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ - return (target_type) -1;\ - if (is_unsigned && unlikely(value < zero))\ - goto raise_neg_overflow;\ - else\ - goto raise_overflow;\ - }\ - }\ - return (target_type) value;\ - } - -/* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { - const int neg_one = (int) -1, const_zero = (int) 0; - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(int) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(int) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -#endif - } - } else { - if (sizeof(int) <= sizeof(long)) { - return PyInt_FromLong((long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); -#endif - } - } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; - return _PyLong_FromByteArray(bytes, sizeof(int), - little, !is_unsigned); - } -} - -/* CIntFromPy */ - static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { - const int neg_one = (int) -1, const_zero = (int) 0; - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(int) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (int) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (int) 0; - case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { - return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { - return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { - return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (int) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(int) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (int) 0; - case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) - case -2: - if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - } -#endif - if (sizeof(int) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - int val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (int) -1; - } - } else { - int val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (int) -1; - val = __Pyx_PyInt_As_int(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to int"); - return (int) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to int"); - return (int) -1; -} - -/* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { - const long neg_one = (long) -1, const_zero = (long) 0; - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(long) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(long) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -#endif - } - } else { - if (sizeof(long) <= sizeof(long)) { - return PyInt_FromLong((long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); -#endif - } - } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; - return _PyLong_FromByteArray(bytes, sizeof(long), - little, !is_unsigned); - } -} - -/* CIntFromPy */ - static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { - const long neg_one = (long) -1, const_zero = (long) 0; - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(long) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (long) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { - return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { - return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { - return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (long) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(long) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) - case -2: - if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - } -#endif - if (sizeof(long) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - long val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (long) -1; - } - } else { - long val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (long) -1; - val = __Pyx_PyInt_As_long(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to long"); - return (long) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to long"); - return (long) -1; -} - -/* FastTypeChecks */ - #if CYTHON_COMPILING_IN_CPYTHON -static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { - while (a) { - a = a->tp_base; - if (a == b) - return 1; - } - return b == &PyBaseObject_Type; -} -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { - PyObject *mro; - if (a == b) return 1; - mro = a->tp_mro; - if (likely(mro)) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(mro); - for (i = 0; i < n; i++) { - if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) - return 1; - } - return 0; - } - return __Pyx_InBases(a, b); -} -#if PY_MAJOR_VERSION == 2 -static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { - PyObject *exception, *value, *tb; - int res; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&exception, &value, &tb); - res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - if (!res) { - res = PyObject_IsSubclass(err, exc_type2); - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - } - __Pyx_ErrRestore(exception, value, tb); - return res; -} -#else -static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { - int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0; - if (!res) { - res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); - } - return res; -} -#endif -static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - assert(PyExceptionClass_Check(exc_type)); - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; i<n; i++) { - if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1; - } -#endif - for (i=0; i<n; i++) { - PyObject *t = PyTuple_GET_ITEM(tuple, i); - #if PY_MAJOR_VERSION < 3 - if (likely(exc_type == t)) return 1; - #endif - if (likely(PyExceptionClass_Check(t))) { - if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1; - } else { - } - } - return 0; -} -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) { - if (likely(err == exc_type)) return 1; - if (likely(PyExceptionClass_Check(err))) { - if (likely(PyExceptionClass_Check(exc_type))) { - return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type); - } else if (likely(PyTuple_Check(exc_type))) { - return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type); - } else { - } - } - return PyErr_GivenExceptionMatches(err, exc_type); -} -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) { - assert(PyExceptionClass_Check(exc_type1)); - assert(PyExceptionClass_Check(exc_type2)); - if (likely(err == exc_type1 || err == exc_type2)) return 1; - if (likely(PyExceptionClass_Check(err))) { - return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2); - } - return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2)); -} -#endif - -/* CheckBinaryVersion */ - static int __Pyx_check_binary_version(void) { - char ctversion[4], rtversion[4]; - PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); - PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); - if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) { - char message[200]; - PyOS_snprintf(message, sizeof(message), - "compiletime version %s of module '%.100s' " - "does not match runtime version %s", - ctversion, __Pyx_MODULE_NAME, rtversion); - return PyErr_WarnEx(NULL, message, 1); - } - return 0; -} - -/* PyObjectSetAttrStr */ - #if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_setattro)) - return tp->tp_setattro(obj, attr_name, value); -#if PY_MAJOR_VERSION < 3 - if (likely(tp->tp_setattr)) - return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value); -#endif - return PyObject_SetAttr(obj, attr_name, value); -} -#endif - -/* VoidPtrExport */ - static int __Pyx_ExportVoidPtr(PyObject *name, void *p, const char *sig) { - PyObject *d; - PyObject *cobj = 0; - d = PyDict_GetItem(__pyx_d, __pyx_n_s_pyx_capi); - Py_XINCREF(d); - if (!d) { - d = PyDict_New(); - if (!d) - goto bad; - if (__Pyx_PyObject_SetAttrStr(__pyx_m, __pyx_n_s_pyx_capi, d) < 0) - goto bad; - } -#if PY_VERSION_HEX >= 0x02070000 - cobj = PyCapsule_New(p, sig, 0); -#else - cobj = PyCObject_FromVoidPtrAndDesc(p, (void *)sig, 0); -#endif - if (!cobj) - goto bad; - if (PyDict_SetItem(d, name, cobj) < 0) - goto bad; - Py_DECREF(cobj); - Py_DECREF(d); - return 0; -bad: - Py_XDECREF(cobj); - Py_XDECREF(d); - return -1; -} - -/* FunctionExport */ - static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) { - PyObject *d = 0; - PyObject *cobj = 0; - union { - void (*fp)(void); - void *p; - } tmp; - d = PyObject_GetAttrString(__pyx_m, (char *)"__pyx_capi__"); - if (!d) { - PyErr_Clear(); - d = PyDict_New(); - if (!d) - goto bad; - Py_INCREF(d); - if (PyModule_AddObject(__pyx_m, (char *)"__pyx_capi__", d) < 0) - goto bad; - } - tmp.fp = f; -#if PY_VERSION_HEX >= 0x02070000 - cobj = PyCapsule_New(tmp.p, sig, 0); -#else - cobj = PyCObject_FromVoidPtrAndDesc(tmp.p, (void *)sig, 0); -#endif - if (!cobj) - goto bad; - if (PyDict_SetItemString(d, name, cobj) < 0) - goto bad; - Py_DECREF(cobj); - Py_DECREF(d); - return 0; -bad: - Py_XDECREF(cobj); - Py_XDECREF(d); - return -1; -} - -/* ModuleImport */ - #ifndef __PYX_HAVE_RT_ImportModule -#define __PYX_HAVE_RT_ImportModule -static PyObject *__Pyx_ImportModule(const char *name) { - PyObject *py_name = 0; - PyObject *py_module = 0; - py_name = __Pyx_PyIdentifier_FromString(name); - if (!py_name) - goto bad; - py_module = PyImport_Import(py_name); - Py_DECREF(py_name); - return py_module; -bad: - Py_XDECREF(py_name); - return 0; -} -#endif - -/* TypeImport */ - #ifndef __PYX_HAVE_RT_ImportType -#define __PYX_HAVE_RT_ImportType -static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, - size_t size, int strict) -{ - PyObject *py_module = 0; - PyObject *result = 0; - PyObject *py_name = 0; - char warning[200]; - Py_ssize_t basicsize; -#ifdef Py_LIMITED_API - PyObject *py_basicsize; -#endif - py_module = __Pyx_ImportModule(module_name); - if (!py_module) - goto bad; - py_name = __Pyx_PyIdentifier_FromString(class_name); - if (!py_name) - goto bad; - result = PyObject_GetAttr(py_module, py_name); - Py_DECREF(py_name); - py_name = 0; - Py_DECREF(py_module); - py_module = 0; - if (!result) - goto bad; - if (!PyType_Check(result)) { - PyErr_Format(PyExc_TypeError, - "%.200s.%.200s is not a type object", - module_name, class_name); - goto bad; - } -#ifndef Py_LIMITED_API - basicsize = ((PyTypeObject *)result)->tp_basicsize; -#else - py_basicsize = PyObject_GetAttrString(result, "__basicsize__"); - if (!py_basicsize) - goto bad; - basicsize = PyLong_AsSsize_t(py_basicsize); - Py_DECREF(py_basicsize); - py_basicsize = 0; - if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred()) - goto bad; -#endif - if (!strict && (size_t)basicsize > size) { - PyOS_snprintf(warning, sizeof(warning), - "%s.%s size changed, may indicate binary incompatibility. Expected %zd, got %zd", - module_name, class_name, basicsize, size); - if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad; - } - else if ((size_t)basicsize != size) { - PyErr_Format(PyExc_ValueError, - "%.200s.%.200s has the wrong size, try recompiling. Expected %zd, got %zd", - module_name, class_name, basicsize, size); - goto bad; - } - return (PyTypeObject *)result; -bad: - Py_XDECREF(py_module); - Py_XDECREF(result); - return NULL; -} -#endif - -/* VoidPtrImport */ - #ifndef __PYX_HAVE_RT_ImportVoidPtr -#define __PYX_HAVE_RT_ImportVoidPtr -static int __Pyx_ImportVoidPtr(PyObject *module, const char *name, void **p, const char *sig) { - PyObject *d = 0; - PyObject *cobj = 0; - d = PyObject_GetAttrString(module, (char *)"__pyx_capi__"); - if (!d) - goto bad; - cobj = PyDict_GetItemString(d, name); - if (!cobj) { - PyErr_Format(PyExc_ImportError, - "%.200s does not export expected C variable %.200s", - PyModule_GetName(module), name); - goto bad; - } -#if PY_VERSION_HEX >= 0x02070000 - if (!PyCapsule_IsValid(cobj, sig)) { - PyErr_Format(PyExc_TypeError, - "C variable %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", - PyModule_GetName(module), name, sig, PyCapsule_GetName(cobj)); - goto bad; - } - *p = PyCapsule_GetPointer(cobj, sig); -#else - {const char *desc, *s1, *s2; - desc = (const char *)PyCObject_GetDesc(cobj); - if (!desc) - goto bad; - s1 = desc; s2 = sig; - while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; } - if (*s1 != *s2) { - PyErr_Format(PyExc_TypeError, - "C variable %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", - PyModule_GetName(module), name, sig, desc); - goto bad; - } - *p = PyCObject_AsVoidPtr(cobj);} -#endif - if (!(*p)) - goto bad; - Py_DECREF(d); - return 0; -bad: - Py_XDECREF(d); - return -1; -} -#endif - -/* FunctionImport */ - #ifndef __PYX_HAVE_RT_ImportFunction -#define __PYX_HAVE_RT_ImportFunction -static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) { - PyObject *d = 0; - PyObject *cobj = 0; - union { - void (*fp)(void); - void *p; - } tmp; - d = PyObject_GetAttrString(module, (char *)"__pyx_capi__"); - if (!d) - goto bad; - cobj = PyDict_GetItemString(d, funcname); - if (!cobj) { - PyErr_Format(PyExc_ImportError, - "%.200s does not export expected C function %.200s", - PyModule_GetName(module), funcname); - goto bad; - } -#if PY_VERSION_HEX >= 0x02070000 - if (!PyCapsule_IsValid(cobj, sig)) { - PyErr_Format(PyExc_TypeError, - "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", - PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj)); - goto bad; - } - tmp.p = PyCapsule_GetPointer(cobj, sig); -#else - {const char *desc, *s1, *s2; - desc = (const char *)PyCObject_GetDesc(cobj); - if (!desc) - goto bad; - s1 = desc; s2 = sig; - while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; } - if (*s1 != *s2) { - PyErr_Format(PyExc_TypeError, - "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", - PyModule_GetName(module), funcname, sig, desc); - goto bad; - } - tmp.p = PyCObject_AsVoidPtr(cobj);} -#endif - *f = tmp.fp; - if (!(*f)) - goto bad; - Py_DECREF(d); - return 0; -bad: - Py_XDECREF(d); - return -1; -} -#endif - -/* InitStrings */ - static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { - while (t->p) { - #if PY_MAJOR_VERSION < 3 - if (t->is_unicode) { - *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); - } else if (t->intern) { - *t->p = PyString_InternFromString(t->s); - } else { - *t->p = PyString_FromStringAndSize(t->s, t->n - 1); - } - #else - if (t->is_unicode | t->is_str) { - if (t->intern) { - *t->p = PyUnicode_InternFromString(t->s); - } else if (t->encoding) { - *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL); - } else { - *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1); - } - } else { - *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1); - } - #endif - if (!*t->p) - return -1; - if (PyObject_Hash(*t->p) == -1) - return -1; - ++t; - } - return 0; -} - -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { - return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); -} -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { - Py_ssize_t ignore; - return __Pyx_PyObject_AsStringAndSize(o, &ignore); -} -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -#if !CYTHON_PEP393_ENABLED -static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - char* defenc_c; - PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); - if (!defenc) return NULL; - defenc_c = PyBytes_AS_STRING(defenc); -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - { - char* end = defenc_c + PyBytes_GET_SIZE(defenc); - char* c; - for (c = defenc_c; c < end; c++) { - if ((unsigned char) (*c) >= 128) { - PyUnicode_AsASCIIString(o); - return NULL; - } - } - } -#endif - *length = PyBytes_GET_SIZE(defenc); - return defenc_c; -} -#else -static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - if (likely(PyUnicode_IS_ASCII(o))) { - *length = PyUnicode_GET_LENGTH(o); - return PyUnicode_AsUTF8(o); - } else { - PyUnicode_AsASCIIString(o); - return NULL; - } -#else - return PyUnicode_AsUTF8AndSize(o, length); -#endif -} -#endif -#endif -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT - if ( -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - __Pyx_sys_getdefaultencoding_not_ascii && -#endif - PyUnicode_Check(o)) { - return __Pyx_PyUnicode_AsStringAndSize(o, length); - } else -#endif -#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) - if (PyByteArray_Check(o)) { - *length = PyByteArray_GET_SIZE(o); - return PyByteArray_AS_STRING(o); - } else -#endif - { - char* result; - int r = PyBytes_AsStringAndSize(o, &result, length); - if (unlikely(r < 0)) { - return NULL; - } else { - return result; - } - } -} -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { - int is_true = x == Py_True; - if (is_true | (x == Py_False) | (x == Py_None)) return is_true; - else return PyObject_IsTrue(x); -} -static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { -#if PY_MAJOR_VERSION >= 3 - if (PyLong_Check(result)) { - if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, - "__int__ returned non-int (type %.200s). " - "The ability to return an instance of a strict subclass of int " - "is deprecated, and may be removed in a future version of Python.", - Py_TYPE(result)->tp_name)) { - Py_DECREF(result); - return NULL; - } - return result; - } -#endif - PyErr_Format(PyExc_TypeError, - "__%.4s__ returned non-%.4s (type %.200s)", - type_name, type_name, Py_TYPE(result)->tp_name); - Py_DECREF(result); - return NULL; -} -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { -#if CYTHON_USE_TYPE_SLOTS - PyNumberMethods *m; -#endif - const char *name = NULL; - PyObject *res = NULL; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x) || PyLong_Check(x))) -#else - if (likely(PyLong_Check(x))) -#endif - return __Pyx_NewRef(x); -#if CYTHON_USE_TYPE_SLOTS - m = Py_TYPE(x)->tp_as_number; - #if PY_MAJOR_VERSION < 3 - if (m && m->nb_int) { - name = "int"; - res = m->nb_int(x); - } - else if (m && m->nb_long) { - name = "long"; - res = m->nb_long(x); - } - #else - if (likely(m && m->nb_int)) { - name = "int"; - res = m->nb_int(x); - } - #endif -#else - if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { - res = PyNumber_Int(x); - } -#endif - if (likely(res)) { -#if PY_MAJOR_VERSION < 3 - if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { -#else - if (unlikely(!PyLong_CheckExact(res))) { -#endif - return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); - } - } - else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_TypeError, - "an integer is required"); - } - return res; -} -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { - Py_ssize_t ival; - PyObject *x; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(b))) { - if (sizeof(Py_ssize_t) >= sizeof(long)) - return PyInt_AS_LONG(b); - else - return PyInt_AsSsize_t(x); - } -#endif - if (likely(PyLong_CheckExact(b))) { - #if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)b)->ob_digit; - const Py_ssize_t size = Py_SIZE(b); - if (likely(__Pyx_sst_abs(size) <= 1)) { - ival = likely(size) ? digits[0] : 0; - if (size == -1) ival = -ival; - return ival; - } else { - switch (size) { - case 2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - } - } - #endif - return PyLong_AsSsize_t(b); - } - x = PyNumber_Index(b); - if (!x) return -1; - ival = PyInt_AsSsize_t(x); - Py_DECREF(x); - return ival; -} -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { - return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); -} -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { - return PyInt_FromSize_t(ival); -} - - -#endif /* Py_PYTHON_H */ diff --git a/python/gevent/_semaphore.py b/python/gevent/_semaphore.py deleted file mode 100644 index d7c67ce..0000000 --- a/python/gevent/_semaphore.py +++ /dev/null @@ -1,303 +0,0 @@ -# cython: auto_pickle=False,embedsignature=True,always_allow_keywords=False -from __future__ import print_function, absolute_import, division -import sys - -from gevent.timeout import Timeout - - -__all__ = [ - 'Semaphore', - 'BoundedSemaphore', -] - -# In Cython, we define these as 'cdef [inline]' functions. The -# compilation unit cannot have a direct assignment to them (import -# is assignment) without generating a 'lvalue is not valid target' -# error. -locals()['getcurrent'] = __import__('greenlet').getcurrent -locals()['greenlet_init'] = lambda: None -locals()['get_hub'] = __import__('gevent').get_hub - -class Semaphore(object): - """ - Semaphore(value=1) -> Semaphore - - A semaphore manages a counter representing the number of release() - calls minus the number of acquire() calls, plus an initial value. - The acquire() method blocks if necessary until it can return - without making the counter negative. - - If not given, ``value`` defaults to 1. - - The semaphore is a context manager and can be used in ``with`` statements. - - This Semaphore's ``__exit__`` method does not call the trace function - on CPython, but does under PyPy. - - .. seealso:: :class:`BoundedSemaphore` for a safer version that prevents - some classes of bugs. - """ - - def __init__(self, value=1): - if value < 0: - raise ValueError("semaphore initial value must be >= 0") - self.counter = value - self._dirty = False - # In PyPy 2.6.1 with Cython 0.23, `cdef public` or `cdef - # readonly` or simply `cdef` attributes of type `object` can appear to leak if - # a Python subclass is used (this is visible simply - # instantiating this subclass if _links=[]). Our _links and - # _notifier are such attributes, and gevent.thread subclasses - # this class. Thus, we carefully manage the lifetime of the - # objects we put in these attributes so that, in the normal - # case of a semaphore used correctly (deallocated when it's not - # locked and no one is waiting), the leak goes away (because - # these objects are back to None). This can also be solved on PyPy - # by simply not declaring these objects in the pxd file, but that doesn't work for - # CPython ("No attribute...") - # See https://github.com/gevent/gevent/issues/660 - self._links = None - self._notifier = None - # we don't want to do get_hub() here to allow defining module-level locks - # without initializing the hub - - def __str__(self): - params = (self.__class__.__name__, self.counter, len(self._links) if self._links else 0) - return '<%s counter=%s _links[%s]>' % params - - def locked(self): - """Return a boolean indicating whether the semaphore can be acquired. - Most useful with binary semaphores.""" - return self.counter <= 0 - - def release(self): - """ - Release the semaphore, notifying any waiters if needed. - """ - self.counter += 1 - self._start_notify() - return self.counter - - def _start_notify(self): - if self._links and self.counter > 0 and not self._notifier: - # We create a new self._notifier each time through the loop, - # if needed. (it has a __bool__ method that tells whether it has - # been run; once it's run once---at the end of the loop---it becomes - # false.) - # NOTE: Passing the bound method will cause a memory leak on PyPy - # with Cython <= 0.23.3. You must use >= 0.23.4. - # See https://bitbucket.org/pypy/pypy/issues/2149/memory-leak-for-python-subclass-of-cpyext#comment-22371546 - hub = get_hub() # pylint:disable=undefined-variable - self._notifier = hub.loop.run_callback(self._notify_links) - - def _notify_links(self): - # Subclasses CANNOT override. This is a cdef method. - - # We release self._notifier here. We are called by it - # at the end of the loop, and it is now false in a boolean way (as soon - # as this method returns). - # If we get acquired/released again, we will create a new one, but there's - # no need to keep it around until that point (making it potentially climb - # into older GC generations, notably on PyPy) - notifier = self._notifier - try: - while True: - self._dirty = False - if not self._links: - # In case we were manually unlinked before - # the callback. Which shouldn't happen - return - for link in self._links: - if self.counter <= 0: - return - try: - link(self) # Must use Cython >= 0.23.4 on PyPy else this leaks memory - except: # pylint:disable=bare-except - getcurrent().handle_error((link, self), *sys.exc_info()) # pylint:disable=undefined-variable - if self._dirty: - # We mutated self._links so we need to start over - break - if not self._dirty: - return - finally: - # We should not have created a new notifier even if callbacks - # released us because we loop through *all* of our links on the - # same callback while self._notifier is still true. - assert self._notifier is notifier - self._notifier = None - - def rawlink(self, callback): - """ - rawlink(callback) -> None - - Register a callback to call when a counter is more than zero. - - *callback* will be called in the :class:`Hub <gevent.hub.Hub>`, so it must not use blocking gevent API. - *callback* will be passed one argument: this instance. - - This method is normally called automatically by :meth:`acquire` and :meth:`wait`; most code - will not need to use it. - """ - if not callable(callback): - raise TypeError('Expected callable:', callback) - if self._links is None: - self._links = [callback] - else: - self._links.append(callback) - self._dirty = True - - def unlink(self, callback): - """ - unlink(callback) -> None - - Remove the callback set by :meth:`rawlink`. - - This method is normally called automatically by :meth:`acquire` and :meth:`wait`; most - code will not need to use it. - """ - try: - self._links.remove(callback) - self._dirty = True - except (ValueError, AttributeError): - pass - if not self._links: - self._links = None - # TODO: Cancel a notifier if there are no links? - - def _do_wait(self, timeout): - """ - Wait for up to *timeout* seconds to expire. If timeout - elapses, return the exception. Otherwise, return None. - Raises timeout if a different timer expires. - """ - switch = getcurrent().switch # pylint:disable=undefined-variable - self.rawlink(switch) - try: - timer = Timeout._start_new_or_dummy(timeout) - try: - try: - result = get_hub().switch() # pylint:disable=undefined-variable - assert result is self, 'Invalid switch into Semaphore.wait/acquire(): %r' % (result, ) - except Timeout as ex: - if ex is not timer: - raise - return ex - finally: - timer.cancel() - finally: - self.unlink(switch) - - def wait(self, timeout=None): - """ - wait(timeout=None) -> int - - Wait until it is possible to acquire this semaphore, or until the optional - *timeout* elapses. - - .. caution:: If this semaphore was initialized with a size of 0, - this method will block forever if no timeout is given. - - :keyword float timeout: If given, specifies the maximum amount of seconds - this method will block. - :return: A number indicating how many times the semaphore can be acquired - before blocking. - """ - if self.counter > 0: - return self.counter - - self._do_wait(timeout) # return value irrelevant, whether we got it or got a timeout - return self.counter - - def acquire(self, blocking=True, timeout=None): - """ - acquire(blocking=True, timeout=None) -> bool - - Acquire the semaphore. - - .. caution:: If this semaphore was initialized with a size of 0, - this method will block forever (unless a timeout is given or blocking is - set to false). - - :keyword bool blocking: If True (the default), this function will block - until the semaphore is acquired. - :keyword float timeout: If given, specifies the maximum amount of seconds - this method will block. - :return: A boolean indicating whether the semaphore was acquired. - If ``blocking`` is True and ``timeout`` is None (the default), then - (so long as this semaphore was initialized with a size greater than 0) - this will always return True. If a timeout was given, and it expired before - the semaphore was acquired, False will be returned. (Note that this can still - raise a ``Timeout`` exception, if some other caller had already started a timer.) - """ - if self.counter > 0: - self.counter -= 1 - return True - - if not blocking: - return False - - timeout = self._do_wait(timeout) - if timeout is not None: - # Our timer expired. - return False - - # Neither our timer no another one expired, so we blocked until - # awoke. Therefore, the counter is ours - self.counter -= 1 - assert self.counter >= 0 - return True - - _py3k_acquire = acquire # PyPy needs this; it must be static for Cython - - def __enter__(self): - self.acquire() - - def __exit__(self, t, v, tb): - self.release() - - -class BoundedSemaphore(Semaphore): - """ - BoundedSemaphore(value=1) -> BoundedSemaphore - - A bounded semaphore checks to make sure its current value doesn't - exceed its initial value. If it does, :class:`ValueError` is - raised. In most situations semaphores are used to guard resources - with limited capacity. If the semaphore is released too many times - it's a sign of a bug. - - If not given, *value* defaults to 1. - """ - - #: For monkey-patching, allow changing the class of error we raise - _OVER_RELEASE_ERROR = ValueError - - def __init__(self, *args, **kwargs): - Semaphore.__init__(self, *args, **kwargs) - self._initial_value = self.counter - - def release(self): - if self.counter >= self._initial_value: - raise self._OVER_RELEASE_ERROR("Semaphore released too many times") - Semaphore.release(self) - - -def _init(): - greenlet_init() # pylint:disable=undefined-variable - -_init() - -# By building the semaphore with Cython under PyPy, we get -# atomic operations (specifically, exiting/releasing), at the -# cost of some speed (one trivial semaphore micro-benchmark put the pure-python version -# at around 1s and the compiled version at around 4s). Some clever subclassing -# and having only the bare minimum be in cython might help reduce that penalty. -# NOTE: You must use version 0.23.4 or later to avoid a memory leak. -# https://mail.python.org/pipermail/cython-devel/2015-October/004571.html -# However, that's all for naught on up to and including PyPy 4.0.1 which -# have some serious crashing bugs with GC interacting with cython. -# It hasn't been tested since then, and PURE_PYTHON is assumed to be true -# for PyPy in all cases anyway, so this does nothing. - -from gevent._util import import_c_accel -import_c_accel(globals(), 'gevent.__semaphore') diff --git a/python/gevent/_socket2.py b/python/gevent/_socket2.py deleted file mode 100644 index d2377b2..0000000 --- a/python/gevent/_socket2.py +++ /dev/null @@ -1,473 +0,0 @@ -# Copyright (c) 2009-2014 Denis Bilenko and gevent contributors. See LICENSE for details. -""" -Python 2 socket module. -""" -from __future__ import absolute_import - -# Our import magic sadly makes this warning useless -# pylint: disable=undefined-variable - -from gevent import _socketcommon -from gevent._util import copy_globals -from gevent._compat import PYPY -from gevent.timeout import Timeout - -copy_globals(_socketcommon, globals(), - names_to_ignore=_socketcommon.__py3_imports__ + _socketcommon.__extensions__, - dunder_names_to_keep=()) - -__socket__ = _socketcommon.__socket__ -__implements__ = _socketcommon._implements -__extensions__ = _socketcommon.__extensions__ -__imports__ = [i for i in _socketcommon.__imports__ if i not in _socketcommon.__py3_imports__] -__dns__ = _socketcommon.__dns__ -try: - _fileobject = __socket__._fileobject - _socketmethods = __socket__._socketmethods -except AttributeError: - # Allow this module to be imported under Python 3 - # for building the docs - _fileobject = object - _socketmethods = ('bind', 'connect', 'connect_ex', - 'fileno', 'listen', 'getpeername', - 'getsockname', 'getsockopt', - 'setsockopt', 'sendall', - 'setblocking', 'settimeout', - 'gettimeout', 'shutdown') -else: - # Python 2 doesn't natively support with statements on _fileobject; - # but it eases our test cases if we can do the same with on both Py3 - # and Py2. Implementation copied from Python 3 - assert not hasattr(_fileobject, '__enter__') - # we could either patch in place: - #_fileobject.__enter__ = lambda self: self - #_fileobject.__exit__ = lambda self, *args: self.close() if not self.closed else None - # or we could subclass. subclassing has the benefit of not - # changing the behaviour of the stdlib if we're just imported; OTOH, - # under Python 2.6/2.7, test_urllib2net.py asserts that the class IS - # socket._fileobject (sigh), so we have to work around that. - - # We also make it call our custom socket closing method that disposes - # if IO watchers but not the actual socket itself. - - # Python 2 relies on reference counting to close sockets, so this is all - # very ugly and fragile. - - class _fileobject(_fileobject): # pylint:disable=function-redefined - - def __enter__(self): - return self - - def __exit__(self, *args): - if not self.closed: - self.close() - - def close(self): - if self._sock is not None: - self._sock._drop_events() - super(_fileobject, self).close() - - -def _get_memory(data): - try: - mv = memoryview(data) - if mv.shape: - return mv - # No shape, probably working with a ctypes object, - # or something else exotic that supports the buffer interface - return mv.tobytes() - except TypeError: - # fixes "python2.7 array.array doesn't support memoryview used in - # gevent.socket.send" issue - # (http://code.google.com/p/gevent/issues/detail?id=94) - return buffer(data) - - -class _closedsocket(object): - __slots__ = [] - - def _dummy(*args, **kwargs): # pylint:disable=no-method-argument,unused-argument - raise error(EBADF, 'Bad file descriptor') - # All _delegate_methods must also be initialized here. - send = recv = recv_into = sendto = recvfrom = recvfrom_into = _dummy - - if PYPY: - - def _drop(self): - pass - - def _reuse(self): - pass - - __getattr__ = _dummy - - -timeout_default = object() - -from gevent._hub_primitives import wait_on_socket as _wait_on_socket - -class socket(object): - """ - gevent `socket.socket <https://docs.python.org/2/library/socket.html#socket-objects>`_ - for Python 2. - - This object should have the same API as the standard library socket linked to above. Not all - methods are specifically documented here; when they are they may point out a difference - to be aware of or may document a method the standard library does not. - """ - - # pylint:disable=too-many-public-methods - - def __init__(self, family=AF_INET, type=SOCK_STREAM, proto=0, _sock=None): - if _sock is None: - self._sock = _realsocket(family, type, proto) - self.timeout = _socket.getdefaulttimeout() - else: - if hasattr(_sock, '_sock'): - # passed a gevent socket - self._sock = _sock._sock - self.timeout = getattr(_sock, 'timeout', False) - if self.timeout is False: - self.timeout = _socket.getdefaulttimeout() - else: - # passed a native socket - self._sock = _sock - self.timeout = _socket.getdefaulttimeout() - if PYPY: - self._sock._reuse() - self._sock.setblocking(0) - fileno = self._sock.fileno() - self.hub = get_hub() - io = self.hub.loop.io - self._read_event = io(fileno, 1) - self._write_event = io(fileno, 2) - - def __repr__(self): - return '<%s at %s %s>' % (type(self).__name__, hex(id(self)), self._formatinfo()) - - def __str__(self): - return '<%s %s>' % (type(self).__name__, self._formatinfo()) - - def _formatinfo(self): - # pylint:disable=broad-except - try: - fileno = self.fileno() - except Exception as ex: - fileno = str(ex) - try: - sockname = self.getsockname() - sockname = '%s:%s' % sockname - except Exception: - sockname = None - try: - peername = self.getpeername() - peername = '%s:%s' % peername - except Exception: - peername = None - result = 'fileno=%s' % fileno - if sockname is not None: - result += ' sock=' + str(sockname) - if peername is not None: - result += ' peer=' + str(peername) - if getattr(self, 'timeout', None) is not None: - result += ' timeout=' + str(self.timeout) - return result - - def _get_ref(self): - return self._read_event.ref or self._write_event.ref - - def _set_ref(self, value): - self._read_event.ref = value - self._write_event.ref = value - - ref = property(_get_ref, _set_ref) - - _wait = _wait_on_socket - - def accept(self): - sock = self._sock - while True: - try: - client_socket, address = sock.accept() - break - except error as ex: - if ex.args[0] != EWOULDBLOCK or self.timeout == 0.0: - raise - sys.exc_clear() - self._wait(self._read_event) - sockobj = socket(_sock=client_socket) - if PYPY: - client_socket._drop() - return sockobj, address - - def _drop_events(self, cancel_wait_ex=cancel_wait_ex): - if self._read_event is not None: - self.hub.cancel_wait(self._read_event, cancel_wait_ex, True) - self._read_event = None - if self._write_event is not None: - self.hub.cancel_wait(self._write_event, cancel_wait_ex, True) - self._write_event = None - - - def close(self, _closedsocket=_closedsocket): - # This function should not reference any globals. See Python issue #808164. - - # Also break any reference to the loop.io objects. Our fileno, which they were - # tied to, is now free to be reused, so these objects are no longer functional. - self._drop_events() - s = self._sock - self._sock = _closedsocket() - if PYPY: - s._drop() - - @property - def closed(self): - return isinstance(self._sock, _closedsocket) - - def connect(self, address): - if self.timeout == 0.0: - return self._sock.connect(address) - sock = self._sock - address = _socketcommon._resolve_addr(sock, address) - - timer = Timeout._start_new_or_dummy(self.timeout, timeout('timed out')) - try: - while True: - err = sock.getsockopt(SOL_SOCKET, SO_ERROR) - if err: - raise error(err, strerror(err)) - result = sock.connect_ex(address) - if not result or result == EISCONN: - break - elif (result in (EWOULDBLOCK, EINPROGRESS, EALREADY)) or (result == EINVAL and is_windows): - self._wait(self._write_event) - else: - raise error(result, strerror(result)) - finally: - timer.close() - - def connect_ex(self, address): - try: - return self.connect(address) or 0 - except timeout: - return EAGAIN - except error as ex: - if type(ex) is error: # pylint:disable=unidiomatic-typecheck - return ex.args[0] - raise # gaierror is not silenced by connect_ex - - def dup(self): - """dup() -> socket object - - Return a new socket object connected to the same system resource. - Note, that the new socket does not inherit the timeout.""" - return socket(_sock=self._sock) - - def makefile(self, mode='r', bufsize=-1): - # Two things to look out for: - # 1) Closing the original socket object should not close the - # fileobject (hence creating a new socket instance); - # An alternate approach is what _socket3.py does, which is to - # keep count of the times makefile objects have been opened (Py3's - # SocketIO helps with that). But the newly created socket, which - # has its own read/write watchers, does need those to be closed - # when the fileobject is; our custom subclass does that. Note that - # we can't pass the 'close=True' argument, as that causes reference counts - # to get screwed up, and Python2 sockets rely on those. - # 2) The resulting fileobject must keep the timeout in order - # to be compatible with the stdlib's socket.makefile. - # Pass self as _sock to preserve timeout. - fobj = _fileobject(type(self)(_sock=self), mode, bufsize) - if PYPY: - self._sock._drop() - return fobj - - def recv(self, *args): - sock = self._sock # keeping the reference so that fd is not closed during waiting - while True: - try: - return sock.recv(*args) - except error as ex: - if ex.args[0] != EWOULDBLOCK or self.timeout == 0.0: - raise - # QQQ without clearing exc_info test__refcount.test_clean_exit fails - sys.exc_clear() - self._wait(self._read_event) - - def recvfrom(self, *args): - sock = self._sock - while True: - try: - return sock.recvfrom(*args) - except error as ex: - if ex.args[0] != EWOULDBLOCK or self.timeout == 0.0: - raise - sys.exc_clear() - self._wait(self._read_event) - - def recvfrom_into(self, *args): - sock = self._sock - while True: - try: - return sock.recvfrom_into(*args) - except error as ex: - if ex.args[0] != EWOULDBLOCK or self.timeout == 0.0: - raise - sys.exc_clear() - self._wait(self._read_event) - - def recv_into(self, *args): - sock = self._sock - while True: - try: - return sock.recv_into(*args) - except error as ex: - if ex.args[0] != EWOULDBLOCK or self.timeout == 0.0: - raise - sys.exc_clear() - self._wait(self._read_event) - - def send(self, data, flags=0, timeout=timeout_default): - sock = self._sock - if timeout is timeout_default: - timeout = self.timeout - try: - return sock.send(data, flags) - except error as ex: - if ex.args[0] not in _socketcommon.GSENDAGAIN or timeout == 0.0: - raise - sys.exc_clear() - self._wait(self._write_event) - try: - return sock.send(data, flags) - except error as ex2: - if ex2.args[0] == EWOULDBLOCK: - return 0 - raise - - def sendall(self, data, flags=0): - if isinstance(data, unicode): - data = data.encode() - # this sendall is also reused by gevent.ssl.SSLSocket subclass, - # so it should not call self._sock methods directly - data_memory = _get_memory(data) - return _socketcommon._sendall(self, data_memory, flags) - - def sendto(self, *args): - sock = self._sock - try: - return sock.sendto(*args) - except error as ex: - if ex.args[0] != EWOULDBLOCK or self.timeout == 0.0: - raise - sys.exc_clear() - self._wait(self._write_event) - try: - return sock.sendto(*args) - except error as ex2: - if ex2.args[0] == EWOULDBLOCK: - return 0 - raise - - def setblocking(self, flag): - if flag: - self.timeout = None - else: - self.timeout = 0.0 - - def settimeout(self, howlong): - if howlong is not None: - try: - f = howlong.__float__ - except AttributeError: - raise TypeError('a float is required') - howlong = f() - if howlong < 0.0: - raise ValueError('Timeout value out of range') - self.__dict__['timeout'] = howlong # avoid recursion with any property on self.timeout - - def gettimeout(self): - return self.__dict__['timeout'] # avoid recursion with any property on self.timeout - - def shutdown(self, how): - if how == 0: # SHUT_RD - self.hub.cancel_wait(self._read_event, cancel_wait_ex) - elif how == 1: # SHUT_WR - self.hub.cancel_wait(self._write_event, cancel_wait_ex) - else: - self.hub.cancel_wait(self._read_event, cancel_wait_ex) - self.hub.cancel_wait(self._write_event, cancel_wait_ex) - self._sock.shutdown(how) - - family = property(lambda self: self._sock.family) - type = property(lambda self: self._sock.type) - proto = property(lambda self: self._sock.proto) - - def fileno(self): - return self._sock.fileno() - - def getsockname(self): - return self._sock.getsockname() - - def getpeername(self): - return self._sock.getpeername() - - # delegate the functions that we haven't implemented to the real socket object - - _s = "def %s(self, *args): return self._sock.%s(*args)\n\n" - _m = None - for _m in set(_socketmethods) - set(locals()): - exec(_s % (_m, _m,)) - del _m, _s - - if PYPY: - - def _reuse(self): - self._sock._reuse() - - def _drop(self): - self._sock._drop() - - -SocketType = socket - -if hasattr(_socket, 'socketpair'): - - def socketpair(family=getattr(_socket, 'AF_UNIX', _socket.AF_INET), - type=_socket.SOCK_STREAM, proto=0): - one, two = _socket.socketpair(family, type, proto) - result = socket(_sock=one), socket(_sock=two) - if PYPY: - one._drop() - two._drop() - return result -elif 'socketpair' in __implements__: - __implements__.remove('socketpair') - -if hasattr(_socket, 'fromfd'): - - def fromfd(fd, family, type, proto=0): - s = _socket.fromfd(fd, family, type, proto) - result = socket(_sock=s) - if PYPY: - s._drop() - return result - -elif 'fromfd' in __implements__: - __implements__.remove('fromfd') - -if hasattr(__socket__, 'ssl'): - - def ssl(sock, keyfile=None, certfile=None): - # deprecated in 2.7.9 but still present; - # sometimes backported by distros. See ssl.py - # Note that we import gevent.ssl, not _ssl2, to get the correct - # version. - from gevent import ssl as _sslmod - # wrap_socket is 2.7.9/backport, sslwrap_simple is older. They take - # the same arguments. - wrap = getattr(_sslmod, 'wrap_socket', None) or getattr(_sslmod, 'sslwrap_simple') - return wrap(sock, keyfile, certfile) - __implements__.append('ssl') - -__all__ = __implements__ + __extensions__ + __imports__ diff --git a/python/gevent/_socket3.py b/python/gevent/_socket3.py deleted file mode 100644 index 973b5a9..0000000 --- a/python/gevent/_socket3.py +++ /dev/null @@ -1,756 +0,0 @@ -# Port of Python 3.3's socket module to gevent -""" -Python 3 socket module. -""" -# Our import magic sadly makes this warning useless -# pylint: disable=undefined-variable -# pylint: disable=too-many-statements,too-many-branches -# pylint: disable=too-many-public-methods,unused-argument -from __future__ import absolute_import -import io -import os -import sys - -from gevent import _socketcommon -from gevent._util import copy_globals -from gevent._compat import PYPY -from gevent.timeout import Timeout -import _socket -from os import dup - - -copy_globals(_socketcommon, globals(), - names_to_ignore=_socketcommon.__extensions__, - dunder_names_to_keep=()) - -try: - from errno import EHOSTUNREACH - from errno import ECONNREFUSED -except ImportError: - EHOSTUNREACH = -1 - ECONNREFUSED = -1 - - -__socket__ = _socketcommon.__socket__ -__implements__ = _socketcommon._implements -__extensions__ = _socketcommon.__extensions__ -__imports__ = _socketcommon.__imports__ -__dns__ = _socketcommon.__dns__ - - -SocketIO = __socket__.SocketIO # pylint:disable=no-member - - -def _get_memory(data): - mv = memoryview(data) - if mv.shape: - return mv - # No shape, probably working with a ctypes object, - # or something else exotic that supports the buffer interface - return mv.tobytes() - -timeout_default = object() - - -class _wrefsocket(_socket.socket): - # Plain stdlib socket.socket objects subclass _socket.socket - # and add weakref ability. The ssl module, for one, counts on this. - # We don't create socket.socket objects (because they may have been - # monkey patched to be the object from this module), but we still - # need to make sure what we do create can be weakrefd. - - __slots__ = ("__weakref__", ) - - if PYPY: - # server.py unwraps the socket object to get the raw _sock; - # it depends on having a timeout property alias, which PyPy does not - # provide. - timeout = property(lambda s: s.gettimeout(), - lambda s, nv: s.settimeout(nv)) - -from gevent._hub_primitives import wait_on_socket as _wait_on_socket - -class socket(object): - """ - gevent `socket.socket <https://docs.python.org/3/library/socket.html#socket-objects>`_ - for Python 3. - - This object should have the same API as the standard library socket linked to above. Not all - methods are specifically documented here; when they are they may point out a difference - to be aware of or may document a method the standard library does not. - """ - - # Subclasses can set this to customize the type of the - # native _socket.socket we create. It MUST be a subclass - # of _wrefsocket. (gevent internal usage only) - _gevent_sock_class = _wrefsocket - - _io_refs = 0 - _closed = False - _read_event = None - _write_event = None - - - # Take the same approach as socket2: wrap a real socket object, - # don't subclass it. This lets code that needs the raw _sock (not tied to the hub) - # get it. This shows up in tests like test__example_udp_server. - - if sys.version_info[:2] < (3, 7): - def __init__(self, family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None): - self._sock = self._gevent_sock_class(family, type, proto, fileno) - self.timeout = None - self.__init_common() - else: - # In 3.7, socket changed to auto-detecting family, type, and proto - # when given a fileno. - def __init__(self, family=-1, type=-1, proto=-1, fileno=None): - if fileno is None: - if family == -1: - family = AF_INET - if type == -1: - type = SOCK_STREAM - if proto == -1: - proto = 0 - self._sock = self._gevent_sock_class(family, type, proto, fileno) - self.timeout = None - self.__init_common() - - def __init_common(self): - _socket.socket.setblocking(self._sock, False) - fileno = _socket.socket.fileno(self._sock) - self.hub = get_hub() - io_class = self.hub.loop.io - self._read_event = io_class(fileno, 1) - self._write_event = io_class(fileno, 2) - self.timeout = _socket.getdefaulttimeout() - - def __getattr__(self, name): - return getattr(self._sock, name) - - if hasattr(_socket, 'SOCK_NONBLOCK'): - # Only defined under Linux - @property - def type(self): - # See https://github.com/gevent/gevent/pull/399 - if self.timeout != 0.0: - return self._sock.type & ~_socket.SOCK_NONBLOCK # pylint:disable=no-member - return self._sock.type - - def getblocking(self): - """ - Returns whether the socket will approximate blocking - behaviour. - - .. versionadded:: 1.3a2 - Added in Python 3.7. - """ - return self.timeout != 0.0 - - def __enter__(self): - return self - - def __exit__(self, *args): - if not self._closed: - self.close() - - def __repr__(self): - """Wrap __repr__() to reveal the real class name.""" - try: - s = _socket.socket.__repr__(self._sock) - except Exception as ex: # pylint:disable=broad-except - # Observed on Windows Py3.3, printing the repr of a socket - # that just suffered a ConnectionResetError [WinError 10054]: - # "OverflowError: no printf formatter to display the socket descriptor in decimal" - # Not sure what the actual cause is or if there's a better way to handle this - s = '<socket [%r]>' % ex - - if s.startswith("<socket object"): - s = "<%s.%s%s%s" % (self.__class__.__module__, - self.__class__.__name__, - getattr(self, '_closed', False) and " [closed] " or "", - s[7:]) - return s - - def __getstate__(self): - raise TypeError("Cannot serialize socket object") - - def _get_ref(self): - return self._read_event.ref or self._write_event.ref - - def _set_ref(self, value): - self._read_event.ref = value - self._write_event.ref = value - - ref = property(_get_ref, _set_ref) - - _wait = _wait_on_socket - - def dup(self): - """dup() -> socket object - - Return a new socket object connected to the same system resource. - """ - fd = dup(self.fileno()) - sock = self.__class__(self.family, self.type, self.proto, fileno=fd) - sock.settimeout(self.gettimeout()) - return sock - - def accept(self): - """accept() -> (socket object, address info) - - Wait for an incoming connection. Return a new socket - representing the connection, and the address of the client. - For IP sockets, the address info is a pair (hostaddr, port). - """ - while True: - try: - fd, addr = self._accept() - break - except BlockingIOError: - if self.timeout == 0.0: - raise - self._wait(self._read_event) - sock = socket(self.family, self.type, self.proto, fileno=fd) - # Python Issue #7995: if no default timeout is set and the listening - # socket had a (non-zero) timeout, force the new socket in blocking - # mode to override platform-specific socket flags inheritance. - # XXX do we need to do this? - if getdefaulttimeout() is None and self.gettimeout(): - sock.setblocking(True) - return sock, addr - - def makefile(self, mode="r", buffering=None, *, - encoding=None, errors=None, newline=None): - """Return an I/O stream connected to the socket - - The arguments are as for io.open() after the filename, - except the only mode characters supported are 'r', 'w' and 'b'. - The semantics are similar too. - """ - # (XXX refactor to share code?) - for c in mode: - if c not in {"r", "w", "b"}: - raise ValueError("invalid mode %r (only r, w, b allowed)") - writing = "w" in mode - reading = "r" in mode or not writing - assert reading or writing - binary = "b" in mode - rawmode = "" - if reading: - rawmode += "r" - if writing: - rawmode += "w" - raw = SocketIO(self, rawmode) - self._io_refs += 1 - if buffering is None: - buffering = -1 - if buffering < 0: - buffering = io.DEFAULT_BUFFER_SIZE - if buffering == 0: - if not binary: - raise ValueError("unbuffered streams must be binary") - return raw - if reading and writing: - buffer = io.BufferedRWPair(raw, raw, buffering) - elif reading: - buffer = io.BufferedReader(raw, buffering) - else: - assert writing - buffer = io.BufferedWriter(raw, buffering) - if binary: - return buffer - text = io.TextIOWrapper(buffer, encoding, errors, newline) - text.mode = mode - return text - - def _decref_socketios(self): - # Called by SocketIO when it is closed. - if self._io_refs > 0: - self._io_refs -= 1 - if self._closed: - self.close() - - def _drop_events(self): - if self._read_event is not None: - self.hub.cancel_wait(self._read_event, cancel_wait_ex, True) - self._read_event = None - if self._write_event is not None: - self.hub.cancel_wait(self._write_event, cancel_wait_ex, True) - self._write_event = None - - def _real_close(self, _ss=_socket.socket, cancel_wait_ex=cancel_wait_ex): - # This function should not reference any globals. See Python issue #808164. - - # Break any reference to the loop.io objects. Our fileno, - # which they were tied to, is now free to be reused, so these - # objects are no longer functional. - self._drop_events() - - _ss.close(self._sock) - - # Break any references to the underlying socket object. Tested - # by test__refcount. (Why does this matter?). Be sure to - # preserve our same family/type/proto if possible (if we - # don't, we can get TypeError instead of OSError; see - # test_socket.SendmsgUDP6Test.testSendmsgAfterClose)... but - # this isn't always possible (see test_socket.test_unknown_socket_family_repr) - # TODO: Can we use a simpler proxy, like _socket2 does? - try: - self._sock = self._gevent_sock_class(self.family, self.type, self.proto) - except OSError: - pass - else: - _ss.close(self._sock) - - - def close(self): - # This function should not reference any globals. See Python issue #808164. - self._closed = True - if self._io_refs <= 0: - self._real_close() - - @property - def closed(self): - return self._closed - - def detach(self): - """detach() -> file descriptor - - Close the socket object without closing the underlying file descriptor. - The object cannot be used after this call, but the file descriptor - can be reused for other purposes. The file descriptor is returned. - """ - self._closed = True - return self._sock.detach() - - def connect(self, address): - if self.timeout == 0.0: - return _socket.socket.connect(self._sock, address) - address = _socketcommon._resolve_addr(self._sock, address) - - with Timeout._start_new_or_dummy(self.timeout, timeout("timed out")): - while True: - err = self.getsockopt(SOL_SOCKET, SO_ERROR) - if err: - raise error(err, strerror(err)) - result = _socket.socket.connect_ex(self._sock, address) - - if not result or result == EISCONN: - break - elif (result in (EWOULDBLOCK, EINPROGRESS, EALREADY)) or (result == EINVAL and is_windows): - self._wait(self._write_event) - else: - if (isinstance(address, tuple) - and address[0] == 'fe80::1' - and result == EHOSTUNREACH): - # On Python 3.7 on mac, we see EHOSTUNREACH - # returned for this link-local address, but it really is - # supposed to be ECONNREFUSED according to the standard library - # tests (test_socket.NetworkConnectionNoServer.test_create_connection) - # (On previous versions, that code passed the '127.0.0.1' IPv4 address, so - # ipv6 link locals were never a factor; 3.7 passes 'localhost'.) - # It is something of a mystery how the stdlib socket code doesn't - # produce EHOSTUNREACH---I (JAM) can't see how socketmodule.c would avoid - # that. The normal connect just calls connect_ex much like we do. - result = ECONNREFUSED - raise error(result, strerror(result)) - - def connect_ex(self, address): - try: - return self.connect(address) or 0 - except timeout: - return EAGAIN - except gaierror: # pylint:disable=try-except-raise - # gaierror/overflowerror/typerror is not silenced by connect_ex; - # gaierror extends OSError (aka error) so catch it first - raise - except error as ex: - # error is now OSError and it has various subclasses. - # Only those that apply to actually connecting are silenced by - # connect_ex. - if ex.errno: - return ex.errno - raise # pragma: no cover - - def recv(self, *args): - while True: - try: - return _socket.socket.recv(self._sock, *args) - except error as ex: - if ex.args[0] != EWOULDBLOCK or self.timeout == 0.0: - raise - self._wait(self._read_event) - - if hasattr(_socket.socket, 'recvmsg'): - # Only on Unix; PyPy 3.5 5.10.0 provides sendmsg and recvmsg, but not - # recvmsg_into (at least on os x) - - def recvmsg(self, *args): - while True: - try: - return _socket.socket.recvmsg(self._sock, *args) - except error as ex: - if ex.args[0] != EWOULDBLOCK or self.timeout == 0.0: - raise - self._wait(self._read_event) - - if hasattr(_socket.socket, 'recvmsg_into'): - - def recvmsg_into(self, *args): - while True: - try: - return _socket.socket.recvmsg_into(self._sock, *args) - except error as ex: - if ex.args[0] != EWOULDBLOCK or self.timeout == 0.0: - raise - self._wait(self._read_event) - - def recvfrom(self, *args): - while True: - try: - return _socket.socket.recvfrom(self._sock, *args) - except error as ex: - if ex.args[0] != EWOULDBLOCK or self.timeout == 0.0: - raise - self._wait(self._read_event) - - def recvfrom_into(self, *args): - while True: - try: - return _socket.socket.recvfrom_into(self._sock, *args) - except error as ex: - if ex.args[0] != EWOULDBLOCK or self.timeout == 0.0: - raise - self._wait(self._read_event) - - def recv_into(self, *args): - while True: - try: - return _socket.socket.recv_into(self._sock, *args) - except error as ex: - if ex.args[0] != EWOULDBLOCK or self.timeout == 0.0: - raise - self._wait(self._read_event) - - def send(self, data, flags=0, timeout=timeout_default): - if timeout is timeout_default: - timeout = self.timeout - try: - return _socket.socket.send(self._sock, data, flags) - except error as ex: - if ex.args[0] not in _socketcommon.GSENDAGAIN or timeout == 0.0: - raise - self._wait(self._write_event) - try: - return _socket.socket.send(self._sock, data, flags) - except error as ex2: - if ex2.args[0] == EWOULDBLOCK: - return 0 - raise - - def sendall(self, data, flags=0): - # XXX Now that we run on PyPy3, see the notes in _socket2.py's sendall() - # and implement that here if needed. - # PyPy3 is not optimized for performance yet, and is known to be slower than - # PyPy2, so it's possibly premature to do this. However, there is a 3.5 test case that - # possibly exposes this in a severe way. - data_memory = _get_memory(data) - return _socketcommon._sendall(self, data_memory, flags) - - def sendto(self, *args): - try: - return _socket.socket.sendto(self._sock, *args) - except error as ex: - if ex.args[0] != EWOULDBLOCK or self.timeout == 0.0: - raise - self._wait(self._write_event) - try: - return _socket.socket.sendto(self._sock, *args) - except error as ex2: - if ex2.args[0] == EWOULDBLOCK: - return 0 - raise - - if hasattr(_socket.socket, 'sendmsg'): - # Only on Unix - def sendmsg(self, buffers, ancdata=(), flags=0, address=None): - try: - return _socket.socket.sendmsg(self._sock, buffers, ancdata, flags, address) - except error as ex: - if flags & getattr(_socket, 'MSG_DONTWAIT', 0): - # Enable non-blocking behaviour - # XXX: Do all platforms that have sendmsg have MSG_DONTWAIT? - raise - - if ex.args[0] != EWOULDBLOCK or self.timeout == 0.0: - raise - self._wait(self._write_event) - try: - return _socket.socket.sendmsg(self._sock, buffers, ancdata, flags, address) - except error as ex2: - if ex2.args[0] == EWOULDBLOCK: - return 0 - raise - - def setblocking(self, flag): - # Beginning in 3.6.0b3 this is supposed to raise - # if the file descriptor is closed, but the test for it - # involves closing the fileno directly. Since we - # don't touch the fileno here, it doesn't make sense for - # us. - if flag: - self.timeout = None - else: - self.timeout = 0.0 - - def settimeout(self, howlong): - if howlong is not None: - try: - f = howlong.__float__ - except AttributeError: - raise TypeError('a float is required') - howlong = f() - if howlong < 0.0: - raise ValueError('Timeout value out of range') - self.__dict__['timeout'] = howlong - - def gettimeout(self): - return self.__dict__['timeout'] - - def shutdown(self, how): - if how == 0: # SHUT_RD - self.hub.cancel_wait(self._read_event, cancel_wait_ex) - elif how == 1: # SHUT_WR - self.hub.cancel_wait(self._write_event, cancel_wait_ex) - else: - self.hub.cancel_wait(self._read_event, cancel_wait_ex) - self.hub.cancel_wait(self._write_event, cancel_wait_ex) - self._sock.shutdown(how) - - # sendfile: new in 3.5. But there's no real reason to not - # support it everywhere. Note that we can't use os.sendfile() - # because it's not cooperative. - def _sendfile_use_sendfile(self, file, offset=0, count=None): - # This is called directly by tests - raise __socket__._GiveupOnSendfile() # pylint:disable=no-member - - def _sendfile_use_send(self, file, offset=0, count=None): - self._check_sendfile_params(file, offset, count) - if self.gettimeout() == 0: - raise ValueError("non-blocking sockets are not supported") - if offset: - file.seek(offset) - blocksize = min(count, 8192) if count else 8192 - total_sent = 0 - # localize variable access to minimize overhead - file_read = file.read - sock_send = self.send - try: - while True: - if count: - blocksize = min(count - total_sent, blocksize) - if blocksize <= 0: - break - data = memoryview(file_read(blocksize)) - if not data: - break # EOF - while True: - try: - sent = sock_send(data) - except BlockingIOError: - continue - else: - total_sent += sent - if sent < len(data): - data = data[sent:] - else: - break - return total_sent - finally: - if total_sent > 0 and hasattr(file, 'seek'): - file.seek(offset + total_sent) - - def _check_sendfile_params(self, file, offset, count): - if 'b' not in getattr(file, 'mode', 'b'): - raise ValueError("file should be opened in binary mode") - if not self.type & SOCK_STREAM: - raise ValueError("only SOCK_STREAM type sockets are supported") - if count is not None: - if not isinstance(count, int): - raise TypeError( - "count must be a positive integer (got {!r})".format(count)) - if count <= 0: - raise ValueError( - "count must be a positive integer (got {!r})".format(count)) - - def sendfile(self, file, offset=0, count=None): - """sendfile(file[, offset[, count]]) -> sent - - Send a file until EOF is reached by using high-performance - os.sendfile() and return the total number of bytes which - were sent. - *file* must be a regular file object opened in binary mode. - If os.sendfile() is not available (e.g. Windows) or file is - not a regular file socket.send() will be used instead. - *offset* tells from where to start reading the file. - If specified, *count* is the total number of bytes to transmit - as opposed to sending the file until EOF is reached. - File position is updated on return or also in case of error in - which case file.tell() can be used to figure out the number of - bytes which were sent. - The socket must be of SOCK_STREAM type. - Non-blocking sockets are not supported. - - .. versionadded:: 1.1rc4 - Added in Python 3.5, but available under all Python 3 versions in - gevent. - """ - return self._sendfile_use_send(file, offset, count) - - # get/set_inheritable new in 3.4 - if hasattr(os, 'get_inheritable') or hasattr(os, 'get_handle_inheritable'): - # pylint:disable=no-member - if os.name == 'nt': - def get_inheritable(self): - return os.get_handle_inheritable(self.fileno()) - - def set_inheritable(self, inheritable): - os.set_handle_inheritable(self.fileno(), inheritable) - else: - def get_inheritable(self): - return os.get_inheritable(self.fileno()) - - def set_inheritable(self, inheritable): - os.set_inheritable(self.fileno(), inheritable) - _added = "\n\n.. versionadded:: 1.1rc4 Added in Python 3.4" - get_inheritable.__doc__ = "Get the inheritable flag of the socket" + _added - set_inheritable.__doc__ = "Set the inheritable flag of the socket" + _added - del _added - - -if sys.version_info[:2] == (3, 4) and sys.version_info[:3] <= (3, 4, 2): - # Python 3.4, up to and including 3.4.2, had a bug where the - # SocketType enumeration overwrote the SocketType class imported - # from _socket. This was fixed in 3.4.3 (http://bugs.python.org/issue20386 - # and https://github.com/python/cpython/commit/0d2f85f38a9691efdfd1e7285c4262cab7f17db7). - # Prior to that, if we replace SocketType with our own class, the implementation - # of socket.type breaks with "OSError: [Errno 97] Address family not supported by protocol". - # Therefore, on these old versions, we must preserve it as an enum; while this - # seems like it could lead to non-green behaviour, code on those versions - # cannot possibly be using SocketType as a class anyway. - SocketType = __socket__.SocketType # pylint:disable=no-member - # Fixup __all__; note that we get exec'd multiple times during unit tests - if 'SocketType' in __implements__: - __implements__.remove('SocketType') - if 'SocketType' not in __imports__: - __imports__.append('SocketType') -else: - SocketType = socket - - -def fromfd(fd, family, type, proto=0): - """ fromfd(fd, family, type[, proto]) -> socket object - - Create a socket object from a duplicate of the given file - descriptor. The remaining arguments are the same as for socket(). - """ - nfd = dup(fd) - return socket(family, type, proto, nfd) - - -if hasattr(_socket.socket, "share"): - def fromshare(info): - """ fromshare(info) -> socket object - - Create a socket object from a the bytes object returned by - socket.share(pid). - """ - return socket(0, 0, 0, info) - - __implements__.append('fromshare') - -if hasattr(_socket, "socketpair"): - - def socketpair(family=None, type=SOCK_STREAM, proto=0): - """socketpair([family[, type[, proto]]]) -> (socket object, socket object) - - Create a pair of socket objects from the sockets returned by the platform - socketpair() function. - The arguments are the same as for socket() except the default family is - AF_UNIX if defined on the platform; otherwise, the default is AF_INET. - - .. versionchanged:: 1.2 - All Python 3 versions on Windows supply this function (natively - supplied by Python 3.5 and above). - """ - if family is None: - try: - family = AF_UNIX - except NameError: - family = AF_INET - a, b = _socket.socketpair(family, type, proto) - a = socket(family, type, proto, a.detach()) - b = socket(family, type, proto, b.detach()) - return a, b - -else: # pragma: no cover - # Origin: https://gist.github.com/4325783, by Geert Jansen. Public domain. - - # gevent: taken from 3.6 release. Expected to be used only on Win. Added to Win/3.5 - # gevent: for < 3.5, pass the default value of 128 to lsock.listen() - # (3.5+ uses this as a default and the original code passed no value) - - _LOCALHOST = '127.0.0.1' - _LOCALHOST_V6 = '::1' - - def socketpair(family=AF_INET, type=SOCK_STREAM, proto=0): - if family == AF_INET: - host = _LOCALHOST - elif family == AF_INET6: - host = _LOCALHOST_V6 - else: - raise ValueError("Only AF_INET and AF_INET6 socket address families " - "are supported") - if type != SOCK_STREAM: - raise ValueError("Only SOCK_STREAM socket type is supported") - if proto != 0: - raise ValueError("Only protocol zero is supported") - - # We create a connected TCP socket. Note the trick with - # setblocking(False) that prevents us from having to create a thread. - lsock = socket(family, type, proto) - try: - lsock.bind((host, 0)) - lsock.listen(128) - # On IPv6, ignore flow_info and scope_id - addr, port = lsock.getsockname()[:2] - csock = socket(family, type, proto) - try: - csock.setblocking(False) - try: - csock.connect((addr, port)) - except (BlockingIOError, InterruptedError): - pass - csock.setblocking(True) - ssock, _ = lsock.accept() - except: - csock.close() - raise - finally: - lsock.close() - return (ssock, csock) - - if sys.version_info[:2] < (3, 5): - # Not provided natively - if 'socketpair' in __implements__: - # Multiple imports can cause this to be missing if _socketcommon - # was successfully imported, leading to subsequent imports to cause - # ValueError - __implements__.remove('socketpair') - - -if hasattr(__socket__, 'close'): # Python 3.7b1+ - close = __socket__.close # pylint:disable=no-member - __imports__ += ['close'] - -__all__ = __implements__ + __extensions__ + __imports__ diff --git a/python/gevent/_socketcommon.py b/python/gevent/_socketcommon.py deleted file mode 100644 index c1c778f..0000000 --- a/python/gevent/_socketcommon.py +++ /dev/null @@ -1,382 +0,0 @@ -# Copyright (c) 2009-2014 Denis Bilenko and gevent contributors. See LICENSE for details. -from __future__ import absolute_import - -# standard functions and classes that this module re-implements in a gevent-aware way: -_implements = [ - 'create_connection', - 'socket', - 'SocketType', - 'fromfd', - 'socketpair', -] - -__dns__ = [ - 'getaddrinfo', - 'gethostbyname', - 'gethostbyname_ex', - 'gethostbyaddr', - 'getnameinfo', - 'getfqdn', -] - -_implements += __dns__ - -# non-standard functions that this module provides: -__extensions__ = [ - 'cancel_wait', - 'wait_read', - 'wait_write', - 'wait_readwrite', -] - -# standard functions and classes that this module re-imports -__imports__ = [ - 'error', - 'gaierror', - 'herror', - 'htonl', - 'htons', - 'ntohl', - 'ntohs', - 'inet_aton', - 'inet_ntoa', - 'inet_pton', - 'inet_ntop', - 'timeout', - 'gethostname', - 'getprotobyname', - 'getservbyname', - 'getservbyport', - 'getdefaulttimeout', - 'setdefaulttimeout', - # Windows: - 'errorTab', -] - -__py3_imports__ = [ - # Python 3 - 'AddressFamily', - 'SocketKind', - 'CMSG_LEN', - 'CMSG_SPACE', - 'dup', - 'if_indextoname', - 'if_nameindex', - 'if_nametoindex', - 'sethostname', -] - -__imports__.extend(__py3_imports__) - -import time -import sys -from gevent._hub_local import get_hub_noargs as get_hub -from gevent._compat import string_types, integer_types, PY3 -from gevent._util import copy_globals - -is_windows = sys.platform == 'win32' -is_macos = sys.platform == 'darwin' - -# pylint:disable=no-name-in-module,unused-import -if is_windows: - # no such thing as WSAEPERM or error code 10001 according to winsock.h or MSDN - from errno import WSAEINVAL as EINVAL - from errno import WSAEWOULDBLOCK as EWOULDBLOCK - from errno import WSAEINPROGRESS as EINPROGRESS - from errno import WSAEALREADY as EALREADY - from errno import WSAEISCONN as EISCONN - from gevent.win32util import formatError as strerror - EAGAIN = EWOULDBLOCK -else: - from errno import EINVAL - from errno import EWOULDBLOCK - from errno import EINPROGRESS - from errno import EALREADY - from errno import EAGAIN - from errno import EISCONN - from os import strerror - -try: - from errno import EBADF -except ImportError: - EBADF = 9 - -# macOS can return EPROTOTYPE when writing to a socket that is shutting -# Down. Retrying the write should return the expected EPIPE error. -# Downstream classes (like pywsgi) know how to handle/ignore EPIPE. -# This set is used by socket.send() to decide whether the write should -# be retried. The default is to retry only on EWOULDBLOCK. Here we add -# EPROTOTYPE on macOS to handle this platform-specific race condition. -GSENDAGAIN = (EWOULDBLOCK,) -if is_macos: - from errno import EPROTOTYPE - GSENDAGAIN += (EPROTOTYPE,) - -import _socket -_realsocket = _socket.socket -import socket as __socket__ - -_name = _value = None -__imports__ = copy_globals(__socket__, globals(), - only_names=__imports__, - ignore_missing_names=True) - -for _name in __socket__.__all__: - _value = getattr(__socket__, _name) - if isinstance(_value, (integer_types, string_types)): - globals()[_name] = _value - __imports__.append(_name) - -del _name, _value - -_timeout_error = timeout # pylint: disable=undefined-variable - -from gevent import _hub_primitives -_hub_primitives.set_default_timeout_error(_timeout_error) - -wait = _hub_primitives.wait_on_watcher -wait_read = _hub_primitives.wait_read -wait_write = _hub_primitives.wait_write -wait_readwrite = _hub_primitives.wait_readwrite - -#: The exception raised by default on a call to :func:`cancel_wait` -class cancel_wait_ex(error): # pylint: disable=undefined-variable - def __init__(self): - super(cancel_wait_ex, self).__init__( - EBADF, - 'File descriptor was closed in another greenlet') - - -def cancel_wait(watcher, error=cancel_wait_ex): - """See :meth:`gevent.hub.Hub.cancel_wait`""" - get_hub().cancel_wait(watcher, error) - - -def gethostbyname(hostname): - """ - gethostbyname(host) -> address - - Return the IP address (a string of the form '255.255.255.255') for a host. - - .. seealso:: :doc:`/dns` - """ - return get_hub().resolver.gethostbyname(hostname) - - -def gethostbyname_ex(hostname): - """ - gethostbyname_ex(host) -> (name, aliaslist, addresslist) - - Return the true host name, a list of aliases, and a list of IP addresses, - for a host. The host argument is a string giving a host name or IP number. - Resolve host and port into list of address info entries. - - .. seealso:: :doc:`/dns` - """ - return get_hub().resolver.gethostbyname_ex(hostname) - - -def getaddrinfo(host, port, family=0, socktype=0, proto=0, flags=0): - """ - Resolve host and port into list of address info entries. - - Translate the host/port argument into a sequence of 5-tuples that contain - all the necessary arguments for creating a socket connected to that service. - host is a domain name, a string representation of an IPv4/v6 address or - None. port is a string service name such as 'http', a numeric port number or - None. By passing None as the value of host and port, you can pass NULL to - the underlying C API. - - The family, type and proto arguments can be optionally specified in order to - narrow the list of addresses returned. Passing zero as a value for each of - these arguments selects the full range of results. - - .. seealso:: :doc:`/dns` - """ - return get_hub().resolver.getaddrinfo(host, port, family, socktype, proto, flags) - -if PY3: - # The name of the socktype param changed to type in Python 3. - # See https://github.com/gevent/gevent/issues/960 - # Using inspect here to directly detect the condition is painful because we have to - # wrap it with a try/except TypeError because not all Python 2 - # versions can get the args of a builtin; we also have to use a with to suppress - # the deprecation warning. - d = getaddrinfo.__doc__ - - def getaddrinfo(host, port, family=0, type=0, proto=0, flags=0): # pylint:disable=function-redefined - return get_hub().resolver.getaddrinfo(host, port, family, type, proto, flags) - getaddrinfo.__doc__ = d - del d - - -def gethostbyaddr(ip_address): - """ - gethostbyaddr(ip_address) -> (name, aliaslist, addresslist) - - Return the true host name, a list of aliases, and a list of IP addresses, - for a host. The host argument is a string giving a host name or IP number. - - .. seealso:: :doc:`/dns` - """ - return get_hub().resolver.gethostbyaddr(ip_address) - - -def getnameinfo(sockaddr, flags): - """ - getnameinfo(sockaddr, flags) -> (host, port) - - Get host and port for a sockaddr. - - .. seealso:: :doc:`/dns` - """ - return get_hub().resolver.getnameinfo(sockaddr, flags) - - -def getfqdn(name=''): - """Get fully qualified domain name from name. - - An empty argument is interpreted as meaning the local host. - - First the hostname returned by gethostbyaddr() is checked, then - possibly existing aliases. In case no FQDN is available, hostname - from gethostname() is returned. - """ - # pylint: disable=undefined-variable - name = name.strip() - if not name or name == '0.0.0.0': - name = gethostname() - try: - hostname, aliases, _ = gethostbyaddr(name) - except error: - pass - else: - aliases.insert(0, hostname) - for name in aliases: # EWW! pylint:disable=redefined-argument-from-local - if isinstance(name, bytes): - if b'.' in name: - break - elif '.' in name: - break - else: - name = hostname - return name - -def __send_chunk(socket, data_memory, flags, timeleft, end, timeout=_timeout_error): - """ - Send the complete contents of ``data_memory`` before returning. - This is the core loop around :meth:`send`. - - :param timeleft: Either ``None`` if there is no timeout involved, - or a float indicating the timeout to use. - :param end: Either ``None`` if there is no timeout involved, or - a float giving the absolute end time. - :return: An updated value for ``timeleft`` (or None) - :raises timeout: If ``timeleft`` was given and elapsed while - sending this chunk. - """ - data_sent = 0 - len_data_memory = len(data_memory) - started_timer = 0 - while data_sent < len_data_memory: - chunk = data_memory[data_sent:] - if timeleft is None: - data_sent += socket.send(chunk, flags) - elif started_timer and timeleft <= 0: - # Check before sending to guarantee a check - # happens even if each chunk successfully sends its data - # (especially important for SSL sockets since they have large - # buffers). But only do this if we've actually tried to - # send something once to avoid spurious timeouts on non-blocking - # sockets. - raise timeout('timed out') - else: - started_timer = 1 - data_sent += socket.send(chunk, flags, timeout=timeleft) - timeleft = end - time.time() - - return timeleft - -def _sendall(socket, data_memory, flags, - SOL_SOCKET=__socket__.SOL_SOCKET, # pylint:disable=no-member - SO_SNDBUF=__socket__.SO_SNDBUF): # pylint:disable=no-member - """ - Send the *data_memory* (which should be a memoryview) - using the gevent *socket*, performing well on PyPy. - """ - - # On PyPy up through 5.10.0, both PyPy2 and PyPy3, subviews - # (slices) of a memoryview() object copy the underlying bytes the - # first time the builtin socket.send() method is called. On a - # non-blocking socket (that thus calls socket.send() many times) - # with a large input, this results in many repeated copies of an - # ever smaller string, depending on the networking buffering. For - # example, if each send() can process 1MB of a 50MB input, and we - # naively pass the entire remaining subview each time, we'd copy - # 49MB, 48MB, 47MB, etc, thus completely killing performance. To - # workaround this problem, we work in reasonable, fixed-size - # chunks. This results in a 10x improvement to bench_sendall.py, - # while having no measurable impact on CPython (since it doesn't - # copy at all the only extra overhead is a few python function - # calls, which is negligible for large inputs). - - # On one macOS machine, PyPy3 5.10.1 produced ~ 67.53 MB/s before this change, - # and ~ 616.01 MB/s after. - - # See https://bitbucket.org/pypy/pypy/issues/2091/non-blocking-socketsend-slow-gevent - - # Too small of a chunk (the socket's buf size is usually too - # small) results in reduced perf due to *too many* calls to send and too many - # small copies. With a buffer of 143K (the default on my system), for - # example, bench_sendall.py yields ~264MB/s, while using 1MB yields - # ~653MB/s (matching CPython). 1MB is arbitrary and might be better - # chosen, say, to match a page size? - - len_data_memory = len(data_memory) - if not len_data_memory: - # Don't try to send empty data at all, no point, and breaks ssl - # See issue 719 - return 0 - - - chunk_size = max(socket.getsockopt(SOL_SOCKET, SO_SNDBUF), 1024 * 1024) - - data_sent = 0 - end = None - timeleft = None - if socket.timeout is not None: - timeleft = socket.timeout - end = time.time() + timeleft - - while data_sent < len_data_memory: - chunk_end = min(data_sent + chunk_size, len_data_memory) - chunk = data_memory[data_sent:chunk_end] - - timeleft = __send_chunk(socket, chunk, flags, timeleft, end) - data_sent += len(chunk) # Guaranteed it sent the whole thing - -# pylint:disable=no-member -_RESOLVABLE_FAMILIES = (__socket__.AF_INET,) -if __socket__.has_ipv6: - _RESOLVABLE_FAMILIES += (__socket__.AF_INET6,) - -def _resolve_addr(sock, address): - # Internal method: resolve the AF_INET[6] address using - # getaddrinfo. - if sock.family not in _RESOLVABLE_FAMILIES or not isinstance(address, tuple): - return address - # address is (host, port) (ipv4) or (host, port, flowinfo, scopeid) (ipv6). - - # We don't pass the port to getaddrinfo because the C - # socket module doesn't either (on some systems its - # illegal to do that without also passing socket type and - # protocol). Instead we join the port back at the end. - # See https://github.com/gevent/gevent/issues/1252 - host, port = address[:2] - r = getaddrinfo(host, None, sock.family) - address = r[0][-1] - if len(address) == 2: - address = (address[0], port) - else: - address = (address[0], port, address[2], address[3]) - return address diff --git a/python/gevent/_ssl2.py b/python/gevent/_ssl2.py deleted file mode 100644 index 051e364..0000000 --- a/python/gevent/_ssl2.py +++ /dev/null @@ -1,441 +0,0 @@ -# Wrapper module for _ssl. Written by Bill Janssen. -# Ported to gevent by Denis Bilenko. -""" -SSL wrapper for socket objects on Python 2.7.8 and below. - -For the documentation, refer to :mod:`ssl` module manual. - -This module implements cooperative SSL socket wrappers. - -.. deprecated:: 1.3 - This module is not secure. Support for Python versions - with only this level of SSL will be dropped in gevent 1.4. -""" - -from __future__ import absolute_import -# Our import magic sadly makes this warning useless -# pylint: disable=undefined-variable,arguments-differ,no-member - -import ssl as __ssl__ - -_ssl = __ssl__._ssl - -import sys -import errno -from gevent._socket2 import socket -from gevent.socket import _fileobject, timeout_default -from gevent.socket import error as socket_error, EWOULDBLOCK -from gevent.socket import timeout as _socket_timeout -from gevent._compat import PYPY -from gevent._util import copy_globals - - -__implements__ = [ - 'SSLSocket', - 'wrap_socket', - 'get_server_certificate', - 'sslwrap_simple', -] - -# Import all symbols from Python's ssl.py, except those that we are implementing -# and "private" symbols. -__imports__ = copy_globals(__ssl__, globals(), - # SSLSocket *must* subclass gevent.socket.socket; see issue 597 - names_to_ignore=__implements__ + ['socket'], - dunder_names_to_keep=()) - - -# Py2.6 can get RAND_status added twice -__all__ = list(set(__implements__) | set(__imports__)) -if 'namedtuple' in __all__: - __all__.remove('namedtuple') - -class SSLSocket(socket): - """ - gevent `ssl.SSLSocket <https://docs.python.org/2.6/library/ssl.html#sslsocket-objects>`_ - for Pythons < 2.7.9. - """ - - def __init__(self, sock, keyfile=None, certfile=None, - server_side=False, cert_reqs=CERT_NONE, - ssl_version=PROTOCOL_SSLv23, ca_certs=None, - do_handshake_on_connect=True, - suppress_ragged_eofs=True, - ciphers=None): - socket.__init__(self, _sock=sock) - - if PYPY: - sock._drop() - - if certfile and not keyfile: - keyfile = certfile - # see if it's connected - try: - socket.getpeername(self) - except socket_error as e: - if e.args[0] != errno.ENOTCONN: - raise - # no, no connection yet - self._sslobj = None - else: - # yes, create the SSL object - if ciphers is None: - self._sslobj = _ssl.sslwrap(self._sock, server_side, - keyfile, certfile, - cert_reqs, ssl_version, ca_certs) - else: - self._sslobj = _ssl.sslwrap(self._sock, server_side, - keyfile, certfile, - cert_reqs, ssl_version, ca_certs, - ciphers) - if do_handshake_on_connect: - self.do_handshake() - self.keyfile = keyfile - self.certfile = certfile - self.cert_reqs = cert_reqs - self.ssl_version = ssl_version - self.ca_certs = ca_certs - self.ciphers = ciphers - self.do_handshake_on_connect = do_handshake_on_connect - self.suppress_ragged_eofs = suppress_ragged_eofs - self._makefile_refs = 0 - - def read(self, len=1024): - """Read up to LEN bytes and return them. - Return zero-length string on EOF.""" - while True: - try: - return self._sslobj.read(len) - except SSLError as ex: - if ex.args[0] == SSL_ERROR_EOF and self.suppress_ragged_eofs: - return '' - if ex.args[0] == SSL_ERROR_WANT_READ: - if self.timeout == 0.0: - raise - sys.exc_clear() - self._wait(self._read_event, timeout_exc=_SSLErrorReadTimeout) - elif ex.args[0] == SSL_ERROR_WANT_WRITE: - if self.timeout == 0.0: - raise - sys.exc_clear() - # note: using _SSLErrorReadTimeout rather than _SSLErrorWriteTimeout below is intentional - self._wait(self._write_event, timeout_exc=_SSLErrorReadTimeout) - else: - raise - - def write(self, data): - """Write DATA to the underlying SSL channel. Returns - number of bytes of DATA actually transmitted.""" - while True: - try: - return self._sslobj.write(data) - except SSLError as ex: - if ex.args[0] == SSL_ERROR_WANT_READ: - if self.timeout == 0.0: - raise - sys.exc_clear() - self._wait(self._read_event, timeout_exc=_SSLErrorWriteTimeout) - elif ex.args[0] == SSL_ERROR_WANT_WRITE: - if self.timeout == 0.0: - raise - sys.exc_clear() - self._wait(self._write_event, timeout_exc=_SSLErrorWriteTimeout) - else: - raise - - def getpeercert(self, binary_form=False): - """Returns a formatted version of the data in the - certificate provided by the other end of the SSL channel. - Return None if no certificate was provided, {} if a - certificate was provided, but not validated.""" - return self._sslobj.peer_certificate(binary_form) - - def cipher(self): - if not self._sslobj: - return None - return self._sslobj.cipher() - - def send(self, data, flags=0, timeout=timeout_default): - if timeout is timeout_default: - timeout = self.timeout - if self._sslobj: - if flags != 0: - raise ValueError( - "non-zero flags not allowed in calls to send() on %s" % - self.__class__) - while True: - try: - v = self._sslobj.write(data) - except SSLError as x: - if x.args[0] == SSL_ERROR_WANT_READ: - if self.timeout == 0.0: - return 0 - sys.exc_clear() - self._wait(self._read_event) - elif x.args[0] == SSL_ERROR_WANT_WRITE: - if self.timeout == 0.0: - return 0 - sys.exc_clear() - self._wait(self._write_event) - else: - raise - else: - return v - else: - return socket.send(self, data, flags, timeout) - # is it possible for sendall() to send some data without encryption if another end shut down SSL? - - def sendall(self, data, flags=0): - try: - socket.sendall(self, data) - except _socket_timeout as ex: - if self.timeout == 0.0: - # Python 2 simply *hangs* in this case, which is bad, but - # Python 3 raises SSLWantWriteError. We do the same. - raise SSLError(SSL_ERROR_WANT_WRITE) - # Convert the socket.timeout back to the sslerror - raise SSLError(*ex.args) - - def sendto(self, *args): - if self._sslobj: - raise ValueError("sendto not allowed on instances of %s" % - self.__class__) - else: - return socket.sendto(self, *args) - - def recv(self, buflen=1024, flags=0): - if self._sslobj: - if flags != 0: - raise ValueError( - "non-zero flags not allowed in calls to recv() on %s" % - self.__class__) - # QQQ Shouldn't we wrap the SSL_WANT_READ errors as socket.timeout errors to match socket.recv's behavior? - return self.read(buflen) - return socket.recv(self, buflen, flags) - - def recv_into(self, buffer, nbytes=None, flags=0): - if buffer and (nbytes is None): - nbytes = len(buffer) - elif nbytes is None: - nbytes = 1024 - if self._sslobj: - if flags != 0: - raise ValueError( - "non-zero flags not allowed in calls to recv_into() on %s" % - self.__class__) - while True: - try: - tmp_buffer = self.read(nbytes) - v = len(tmp_buffer) - buffer[:v] = tmp_buffer - return v - except SSLError as x: - if x.args[0] == SSL_ERROR_WANT_READ: - if self.timeout == 0.0: - raise - sys.exc_clear() - self._wait(self._read_event) - continue - else: - raise - else: - return socket.recv_into(self, buffer, nbytes, flags) - - def recvfrom(self, *args): - if self._sslobj: - raise ValueError("recvfrom not allowed on instances of %s" % - self.__class__) - else: - return socket.recvfrom(self, *args) - - def recvfrom_into(self, *args): - if self._sslobj: - raise ValueError("recvfrom_into not allowed on instances of %s" % - self.__class__) - else: - return socket.recvfrom_into(self, *args) - - def pending(self): - if self._sslobj: - return self._sslobj.pending() - return 0 - - def _sslobj_shutdown(self): - while True: - try: - return self._sslobj.shutdown() - except SSLError as ex: - if ex.args[0] == SSL_ERROR_EOF and self.suppress_ragged_eofs: - return '' - if ex.args[0] == SSL_ERROR_WANT_READ: - if self.timeout == 0.0: - raise - sys.exc_clear() - self._wait(self._read_event, timeout_exc=_SSLErrorReadTimeout) - elif ex.args[0] == SSL_ERROR_WANT_WRITE: - if self.timeout == 0.0: - raise - sys.exc_clear() - self._wait(self._write_event, timeout_exc=_SSLErrorWriteTimeout) - else: - raise - - def unwrap(self): - if not self._sslobj: - raise ValueError("No SSL wrapper around " + str(self)) - s = self._sslobj_shutdown() - self._sslobj = None - return socket(_sock=s) - - def shutdown(self, how): - self._sslobj = None - socket.shutdown(self, how) - - def close(self): - if self._makefile_refs < 1: - self._sslobj = None - socket.close(self) - else: - self._makefile_refs -= 1 - - if PYPY: - - def _reuse(self): - self._makefile_refs += 1 - - def _drop(self): - if self._makefile_refs < 1: - self.close() - else: - self._makefile_refs -= 1 - - def do_handshake(self): - """Perform a TLS/SSL handshake.""" - while True: - try: - return self._sslobj.do_handshake() - except SSLError as ex: - if ex.args[0] == SSL_ERROR_WANT_READ: - if self.timeout == 0.0: - raise - sys.exc_clear() - self._wait(self._read_event, timeout_exc=_SSLErrorHandshakeTimeout) - elif ex.args[0] == SSL_ERROR_WANT_WRITE: - if self.timeout == 0.0: - raise - sys.exc_clear() - self._wait(self._write_event, timeout_exc=_SSLErrorHandshakeTimeout) - else: - raise - - def connect(self, addr): - """Connects to remote ADDR, and then wraps the connection in - an SSL channel.""" - # Here we assume that the socket is client-side, and not - # connected at the time of the call. We connect it, then wrap it. - if self._sslobj: - raise ValueError("attempt to connect already-connected SSLSocket!") - socket.connect(self, addr) - if self.ciphers is None: - self._sslobj = _ssl.sslwrap(self._sock, False, self.keyfile, self.certfile, - self.cert_reqs, self.ssl_version, - self.ca_certs) - else: - self._sslobj = _ssl.sslwrap(self._sock, False, self.keyfile, self.certfile, - self.cert_reqs, self.ssl_version, - self.ca_certs, self.ciphers) - if self.do_handshake_on_connect: - self.do_handshake() - - def accept(self): - """Accepts a new connection from a remote client, and returns - a tuple containing that new connection wrapped with a server-side - SSL channel, and the address of the remote client.""" - sock = self._sock - while True: - try: - client_socket, address = sock.accept() - break - except socket_error as ex: - if ex.args[0] != EWOULDBLOCK or self.timeout == 0.0: - raise - sys.exc_clear() - self._wait(self._read_event) - - sslobj = SSLSocket(client_socket, - keyfile=self.keyfile, - certfile=self.certfile, - server_side=True, - cert_reqs=self.cert_reqs, - ssl_version=self.ssl_version, - ca_certs=self.ca_certs, - do_handshake_on_connect=self.do_handshake_on_connect, - suppress_ragged_eofs=self.suppress_ragged_eofs, - ciphers=self.ciphers) - - return sslobj, address - - def makefile(self, mode='r', bufsize=-1): - """Make and return a file-like object that - works with the SSL connection. Just use the code - from the socket module.""" - if not PYPY: - self._makefile_refs += 1 - # close=True so as to decrement the reference count when done with - # the file-like object. - return _fileobject(self, mode, bufsize, close=True) - -if PYPY or not hasattr(SSLSocket, 'timeout'): - # PyPy (and certain versions of CPython) doesn't have a direct - # 'timeout' property on raw sockets, because that's not part of - # the documented specification. We may wind up wrapping a raw - # socket (when ssl is used with PyWSGI) or a gevent socket, which - # does have a read/write timeout property as an alias for - # get/settimeout, so make sure that's always the case because - # pywsgi can depend on that. - SSLSocket.timeout = property(lambda self: self.gettimeout(), - lambda self, value: self.settimeout(value)) - - -_SSLErrorReadTimeout = SSLError('The read operation timed out') -_SSLErrorWriteTimeout = SSLError('The write operation timed out') -_SSLErrorHandshakeTimeout = SSLError('The handshake operation timed out') - - -def wrap_socket(sock, keyfile=None, certfile=None, - server_side=False, cert_reqs=CERT_NONE, - ssl_version=PROTOCOL_SSLv23, ca_certs=None, - do_handshake_on_connect=True, - suppress_ragged_eofs=True, ciphers=None): - """Create a new :class:`SSLSocket` instance.""" - return SSLSocket(sock, keyfile=keyfile, certfile=certfile, - server_side=server_side, cert_reqs=cert_reqs, - ssl_version=ssl_version, ca_certs=ca_certs, - do_handshake_on_connect=do_handshake_on_connect, - suppress_ragged_eofs=suppress_ragged_eofs, - ciphers=ciphers) - - -def get_server_certificate(addr, ssl_version=PROTOCOL_SSLv23, ca_certs=None): - """Retrieve the certificate from the server at the specified address, - and return it as a PEM-encoded string. - If 'ca_certs' is specified, validate the server cert against it. - If 'ssl_version' is specified, use it in the connection attempt.""" - - if ca_certs is not None: - cert_reqs = CERT_REQUIRED - else: - cert_reqs = CERT_NONE - s = wrap_socket(socket(), ssl_version=ssl_version, - cert_reqs=cert_reqs, ca_certs=ca_certs) - s.connect(addr) - dercert = s.getpeercert(True) - s.close() - return DER_cert_to_PEM_cert(dercert) - - -def sslwrap_simple(sock, keyfile=None, certfile=None): - """A replacement for the old socket.ssl function. Designed - for compatibility with Python 2.5 and earlier. Will disappear in - Python 3.0.""" - return SSLSocket(sock, keyfile, certfile) diff --git a/python/gevent/_ssl3.py b/python/gevent/_ssl3.py deleted file mode 100644 index 71e2f76..0000000 --- a/python/gevent/_ssl3.py +++ /dev/null @@ -1,712 +0,0 @@ -# Wrapper module for _ssl. Written by Bill Janssen. -# Ported to gevent by Denis Bilenko. -"""SSL wrapper for socket objects on Python 3. - -For the documentation, refer to :mod:`ssl` module manual. - -This module implements cooperative SSL socket wrappers. -""" -# Our import magic sadly makes this warning useless -# pylint: disable=undefined-variable -# pylint:disable=no-member - -from __future__ import absolute_import -import ssl as __ssl__ - -_ssl = __ssl__._ssl - -import errno -from gevent.socket import socket, timeout_default -from gevent.socket import error as socket_error -from gevent.socket import timeout as _socket_timeout -from gevent._util import copy_globals - -from weakref import ref as _wref - -__implements__ = [ - 'SSLContext', - 'SSLSocket', - 'wrap_socket', - 'get_server_certificate', -] - -# Import all symbols from Python's ssl.py, except those that we are implementing -# and "private" symbols. -__imports__ = copy_globals(__ssl__, globals(), - # SSLSocket *must* subclass gevent.socket.socket; see issue 597 - names_to_ignore=__implements__ + ['socket'], - dunder_names_to_keep=()) - -__all__ = __implements__ + __imports__ -if 'namedtuple' in __all__: - __all__.remove('namedtuple') - -orig_SSLContext = __ssl__.SSLContext # pylint:disable=no-member - - -class SSLContext(orig_SSLContext): - - # Added in Python 3.7 - sslsocket_class = None # SSLSocket is assigned later - - def wrap_socket(self, sock, server_side=False, - do_handshake_on_connect=True, - suppress_ragged_eofs=True, - server_hostname=None, - session=None): - # pylint:disable=arguments-differ,not-callable - # (3.6 adds session) - # Sadly, using *args and **kwargs doesn't work - return self.sslsocket_class( - sock=sock, server_side=server_side, - do_handshake_on_connect=do_handshake_on_connect, - suppress_ragged_eofs=suppress_ragged_eofs, - server_hostname=server_hostname, - _context=self, - _session=session) - - if not hasattr(orig_SSLContext, 'check_hostname'): - # Python 3.3 lacks this - check_hostname = False - - if hasattr(orig_SSLContext.options, 'setter'): - # In 3.6, these became properties. They want to access the - # property __set__ method in the superclass, and they do so by using - # super(SSLContext, SSLContext). But we rebind SSLContext when we monkey - # patch, which causes infinite recursion. - # https://github.com/python/cpython/commit/328067c468f82e4ec1b5c510a4e84509e010f296 - # pylint:disable=no-member - @orig_SSLContext.options.setter - def options(self, value): - super(orig_SSLContext, orig_SSLContext).options.__set__(self, value) - - @orig_SSLContext.verify_flags.setter - def verify_flags(self, value): - super(orig_SSLContext, orig_SSLContext).verify_flags.__set__(self, value) - - @orig_SSLContext.verify_mode.setter - def verify_mode(self, value): - super(orig_SSLContext, orig_SSLContext).verify_mode.__set__(self, value) - - if hasattr(orig_SSLContext, 'minimum_version'): - # Like the above, added in 3.7 - @orig_SSLContext.minimum_version.setter - def minimum_version(self, value): - super(orig_SSLContext, orig_SSLContext).minimum_version.__set__(self, value) - - @orig_SSLContext.maximum_version.setter - def maximum_version(self, value): - super(orig_SSLContext, orig_SSLContext).maximum_version.__set__(self, value) - - -class _contextawaresock(socket._gevent_sock_class): # Python 2: pylint:disable=slots-on-old-class - # We have to pass the raw stdlib socket to SSLContext.wrap_socket. - # That method in turn can pass that object on to things like SNI callbacks. - # It wouldn't have access to any of the attributes on the SSLSocket, like - # context, that it's supposed to (see test_ssl.test_sni_callback). Our - # solution is to keep a weak reference to the SSLSocket on the raw - # socket and delegate. - - # We keep it in a slot to avoid having the ability to set any attributes - # we're not prepared for (because we don't know what to delegate.) - - __slots__ = ('_sslsock',) - - @property - def context(self): - return self._sslsock().context - - @context.setter - def context(self, ctx): - self._sslsock().context = ctx - - @property - def session(self): - """The SSLSession for client socket.""" - return self._sslsock().session - - @session.setter - def session(self, session): - self._sslsock().session = session - - def __getattr__(self, name): - try: - return getattr(self._sslsock(), name) - except RuntimeError: - # XXX: If the attribute doesn't exist, - # we infinitely recurse - pass - raise AttributeError(name) - -try: - _SSLObject_factory = SSLObject -except NameError: - # 3.4 and below do not have SSLObject, something - # we magically import through copy_globals - pass -else: - if hasattr(SSLObject, '_create'): - # 3.7 is making thing difficult and won't let you - # actually construct an object - def _SSLObject_factory(sslobj, owner=None, session=None): - s = SSLObject.__new__(SSLObject) - s._sslobj = sslobj - s._sslobj.owner = owner or s - if session is not None: - s._sslobj.session = session - return s - -class SSLSocket(socket): - """ - gevent `ssl.SSLSocket <https://docs.python.org/3/library/ssl.html#ssl-sockets>`_ - for Python 3. - """ - - # pylint:disable=too-many-instance-attributes,too-many-public-methods - - _gevent_sock_class = _contextawaresock - - def __init__(self, sock=None, keyfile=None, certfile=None, - server_side=False, cert_reqs=CERT_NONE, - ssl_version=PROTOCOL_SSLv23, ca_certs=None, - do_handshake_on_connect=True, - family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None, - suppress_ragged_eofs=True, npn_protocols=None, ciphers=None, - server_hostname=None, - _session=None, # 3.6 - _context=None): - - # pylint:disable=too-many-locals,too-many-statements,too-many-branches - if _context: - self._context = _context - else: - if server_side and not certfile: - raise ValueError("certfile must be specified for server-side " - "operations") - if keyfile and not certfile: - raise ValueError("certfile must be specified") - if certfile and not keyfile: - keyfile = certfile - self._context = SSLContext(ssl_version) - self._context.verify_mode = cert_reqs - if ca_certs: - self._context.load_verify_locations(ca_certs) - if certfile: - self._context.load_cert_chain(certfile, keyfile) - if npn_protocols: - self._context.set_npn_protocols(npn_protocols) - if ciphers: - self._context.set_ciphers(ciphers) - self.keyfile = keyfile - self.certfile = certfile - self.cert_reqs = cert_reqs - self.ssl_version = ssl_version - self.ca_certs = ca_certs - self.ciphers = ciphers - # Can't use sock.type as other flags (such as SOCK_NONBLOCK) get - # mixed in. - if sock.getsockopt(SOL_SOCKET, SO_TYPE) != SOCK_STREAM: - raise NotImplementedError("only stream sockets are supported") - if server_side: - if server_hostname: - raise ValueError("server_hostname can only be specified " - "in client mode") - if _session is not None: - raise ValueError("session can only be specified " - "in client mode") - if self._context.check_hostname and not server_hostname: - raise ValueError("check_hostname requires server_hostname") - self._session = _session - self.server_side = server_side - self.server_hostname = server_hostname - self.do_handshake_on_connect = do_handshake_on_connect - self.suppress_ragged_eofs = suppress_ragged_eofs - connected = False - if sock is not None: - socket.__init__(self, - family=sock.family, - type=sock.type, - proto=sock.proto, - fileno=sock.fileno()) - self.settimeout(sock.gettimeout()) - # see if it's connected - try: - sock.getpeername() - except socket_error as e: - if e.errno != errno.ENOTCONN: - raise - else: - connected = True - sock.detach() - elif fileno is not None: - socket.__init__(self, fileno=fileno) - else: - socket.__init__(self, family=family, type=type, proto=proto) - - self._sock._sslsock = _wref(self) - self._closed = False - self._sslobj = None - self._connected = connected - if connected: - # create the SSL object - try: - self._sslobj = self._context._wrap_socket(self._sock, server_side, - server_hostname) - if _session is not None: # 3.6+ - self._sslobj = _SSLObject_factory(self._sslobj, owner=self, - session=self._session) - if do_handshake_on_connect: - timeout = self.gettimeout() - if timeout == 0.0: - # non-blocking - raise ValueError("do_handshake_on_connect should not be specified for non-blocking sockets") - self.do_handshake() - - except socket_error as x: - self.close() - raise x - - @property - def context(self): - return self._context - - @context.setter - def context(self, ctx): - self._context = ctx - self._sslobj.context = ctx - - @property - def session(self): - """The SSLSession for client socket.""" - if self._sslobj is not None: - return self._sslobj.session - - @session.setter - def session(self, session): - self._session = session - if self._sslobj is not None: - self._sslobj.session = session - - @property - def session_reused(self): - """Was the client session reused during handshake""" - if self._sslobj is not None: - return self._sslobj.session_reused - - def dup(self): - raise NotImplementedError("Can't dup() %s instances" % - self.__class__.__name__) - - def _checkClosed(self, msg=None): - # raise an exception here if you wish to check for spurious closes - pass - - def _check_connected(self): - if not self._connected: - # getpeername() will raise ENOTCONN if the socket is really - # not connected; note that we can be connected even without - # _connected being set, e.g. if connect() first returned - # EAGAIN. - self.getpeername() - - def read(self, len=1024, buffer=None): - """Read up to LEN bytes and return them. - Return zero-length string on EOF.""" - # pylint:disable=too-many-branches - self._checkClosed() - - while True: - if not self._sslobj: - raise ValueError("Read on closed or unwrapped SSL socket.") - if len == 0: - return b'' if buffer is None else 0 - # Negative lengths are handled natively when the buffer is None - # to raise a ValueError - try: - if buffer is not None: - return self._sslobj.read(len, buffer) - return self._sslobj.read(len or 1024) - except SSLWantReadError: - if self.timeout == 0.0: - raise - self._wait(self._read_event, timeout_exc=_SSLErrorReadTimeout) - except SSLWantWriteError: - if self.timeout == 0.0: - raise - # note: using _SSLErrorReadTimeout rather than _SSLErrorWriteTimeout below is intentional - self._wait(self._write_event, timeout_exc=_SSLErrorReadTimeout) - except SSLError as ex: - if ex.args[0] == SSL_ERROR_EOF and self.suppress_ragged_eofs: - if buffer is None: - return b'' - return 0 - raise - - def write(self, data): - """Write DATA to the underlying SSL channel. Returns - number of bytes of DATA actually transmitted.""" - self._checkClosed() - - while True: - if not self._sslobj: - raise ValueError("Write on closed or unwrapped SSL socket.") - - try: - return self._sslobj.write(data) - except SSLError as ex: - if ex.args[0] == SSL_ERROR_WANT_READ: - if self.timeout == 0.0: - raise - self._wait(self._read_event, timeout_exc=_SSLErrorWriteTimeout) - elif ex.args[0] == SSL_ERROR_WANT_WRITE: - if self.timeout == 0.0: - raise - self._wait(self._write_event, timeout_exc=_SSLErrorWriteTimeout) - else: - raise - - def getpeercert(self, binary_form=False): - """Returns a formatted version of the data in the - certificate provided by the other end of the SSL channel. - Return None if no certificate was provided, {} if a - certificate was provided, but not validated.""" - - self._checkClosed() - self._check_connected() - try: - c = self._sslobj.peer_certificate - except AttributeError: - # 3.6 - c = self._sslobj.getpeercert - - return c(binary_form) - - def selected_npn_protocol(self): - self._checkClosed() - if not self._sslobj or not _ssl.HAS_NPN: - return None - return self._sslobj.selected_npn_protocol() - - if hasattr(_ssl, 'HAS_ALPN'): - # 3.5+ - def selected_alpn_protocol(self): - self._checkClosed() - if not self._sslobj or not _ssl.HAS_ALPN: # pylint:disable=no-member - return None - return self._sslobj.selected_alpn_protocol() - - def shared_ciphers(self): - """Return a list of ciphers shared by the client during the handshake or - None if this is not a valid server connection. - """ - return self._sslobj.shared_ciphers() - - def version(self): - """Return a string identifying the protocol version used by the - current SSL channel. """ - if not self._sslobj: - return None - return self._sslobj.version() - - # We inherit sendfile from super(); it always uses `send` - - def cipher(self): - self._checkClosed() - if not self._sslobj: - return None - return self._sslobj.cipher() - - def compression(self): - self._checkClosed() - if not self._sslobj: - return None - return self._sslobj.compression() - - def send(self, data, flags=0, timeout=timeout_default): - self._checkClosed() - if timeout is timeout_default: - timeout = self.timeout - if self._sslobj: - if flags != 0: - raise ValueError( - "non-zero flags not allowed in calls to send() on %s" % - self.__class__) - while True: - try: - return self._sslobj.write(data) - except SSLWantReadError: - if self.timeout == 0.0: - return 0 - self._wait(self._read_event) - except SSLWantWriteError: - if self.timeout == 0.0: - return 0 - self._wait(self._write_event) - else: - return socket.send(self, data, flags, timeout) - - def sendto(self, data, flags_or_addr, addr=None): - self._checkClosed() - if self._sslobj: - raise ValueError("sendto not allowed on instances of %s" % - self.__class__) - elif addr is None: - return socket.sendto(self, data, flags_or_addr) - else: - return socket.sendto(self, data, flags_or_addr, addr) - - def sendmsg(self, *args, **kwargs): - # Ensure programs don't send data unencrypted if they try to - # use this method. - raise NotImplementedError("sendmsg not allowed on instances of %s" % - self.__class__) - - def sendall(self, data, flags=0): - self._checkClosed() - if self._sslobj: - if flags != 0: - raise ValueError( - "non-zero flags not allowed in calls to sendall() on %s" % - self.__class__) - - try: - return socket.sendall(self, data, flags) - except _socket_timeout: - if self.timeout == 0.0: - # Raised by the stdlib on non-blocking sockets - raise SSLWantWriteError("The operation did not complete (write)") - raise - - def recv(self, buflen=1024, flags=0): - self._checkClosed() - if self._sslobj: - if flags != 0: - raise ValueError( - "non-zero flags not allowed in calls to recv() on %s" % - self.__class__) - if buflen == 0: - # https://github.com/python/cpython/commit/00915577dd84ba75016400793bf547666e6b29b5 - # Python #23804 - return b'' - return self.read(buflen) - return socket.recv(self, buflen, flags) - - def recv_into(self, buffer, nbytes=None, flags=0): - self._checkClosed() - if buffer and (nbytes is None): - nbytes = len(buffer) - elif nbytes is None: - nbytes = 1024 - if self._sslobj: - if flags != 0: - raise ValueError("non-zero flags not allowed in calls to recv_into() on %s" % self.__class__) - return self.read(nbytes, buffer) - return socket.recv_into(self, buffer, nbytes, flags) - - def recvfrom(self, buflen=1024, flags=0): - self._checkClosed() - if self._sslobj: - raise ValueError("recvfrom not allowed on instances of %s" % - self.__class__) - else: - return socket.recvfrom(self, buflen, flags) - - def recvfrom_into(self, buffer, nbytes=None, flags=0): - self._checkClosed() - if self._sslobj: - raise ValueError("recvfrom_into not allowed on instances of %s" % - self.__class__) - else: - return socket.recvfrom_into(self, buffer, nbytes, flags) - - def recvmsg(self, *args, **kwargs): - raise NotImplementedError("recvmsg not allowed on instances of %s" % - self.__class__) - - def recvmsg_into(self, *args, **kwargs): - raise NotImplementedError("recvmsg_into not allowed on instances of " - "%s" % self.__class__) - - def pending(self): - self._checkClosed() - if self._sslobj: - return self._sslobj.pending() - return 0 - - def shutdown(self, how): - self._checkClosed() - self._sslobj = None - socket.shutdown(self, how) - - def unwrap(self): - if not self._sslobj: - raise ValueError("No SSL wrapper around " + str(self)) - - while True: - try: - s = self._sslobj.shutdown() - break - except SSLWantReadError: - # Callers of this method expect to get a socket - # back, so we can't simply return 0, we have - # to let these be raised - if self.timeout == 0.0: - raise - self._wait(self._read_event) - except SSLWantWriteError: - if self.timeout == 0.0: - raise - self._wait(self._write_event) - - self._sslobj = None - - # The return value of shutting down the SSLObject is the - # original wrapped socket passed to _wrap_socket, i.e., - # _contextawaresock. But that object doesn't have the - # gevent wrapper around it so it can't be used. We have to - # wrap it back up with a gevent wrapper. - assert s is self._sock - # In the stdlib, SSLSocket subclasses socket.socket and passes itself - # to _wrap_socket, so it gets itself back. We can't do that, we have to - # pass our subclass of _socket.socket, _contextawaresock. - # So ultimately we should return ourself. - - # See test_ftplib.py:TestTLS_FTPClass.test_ccc - return self - - def _real_close(self): - self._sslobj = None - # self._closed = True - socket._real_close(self) - - def do_handshake(self): - """Perform a TLS/SSL handshake.""" - self._check_connected() - while True: - try: - self._sslobj.do_handshake() - break - except SSLWantReadError: - if self.timeout == 0.0: - raise - self._wait(self._read_event, timeout_exc=_SSLErrorHandshakeTimeout) - except SSLWantWriteError: - if self.timeout == 0.0: - raise - self._wait(self._write_event, timeout_exc=_SSLErrorHandshakeTimeout) - - if sys.version_info[:2] < (3, 7) and self._context.check_hostname: - # In Python 3.7, the underlying OpenSSL name matching is used. - # The version implemented in Python doesn't understand IDNA encoding. - if not self.server_hostname: - raise ValueError("check_hostname needs server_hostname " - "argument") - match_hostname(self.getpeercert(), self.server_hostname) - - def _real_connect(self, addr, connect_ex): - if self.server_side: - raise ValueError("can't connect in server-side mode") - # Here we assume that the socket is client-side, and not - # connected at the time of the call. We connect it, then wrap it. - if self._connected: - raise ValueError("attempt to connect already-connected SSLSocket!") - self._sslobj = self._context._wrap_socket(self._sock, False, self.server_hostname) - if self._session is not None: # 3.6+ - self._sslobj = _SSLObject_factory(self._sslobj, owner=self, session=self._session) - try: - if connect_ex: - rc = socket.connect_ex(self, addr) - else: - rc = None - socket.connect(self, addr) - if not rc: - if self.do_handshake_on_connect: - self.do_handshake() - self._connected = True - return rc - except socket_error: - self._sslobj = None - raise - - def connect(self, addr): - """Connects to remote ADDR, and then wraps the connection in - an SSL channel.""" - self._real_connect(addr, False) - - def connect_ex(self, addr): - """Connects to remote ADDR, and then wraps the connection in - an SSL channel.""" - return self._real_connect(addr, True) - - def accept(self): - """Accepts a new connection from a remote client, and returns - a tuple containing that new connection wrapped with a server-side - SSL channel, and the address of the remote client.""" - - newsock, addr = socket.accept(self) - newsock._drop_events() - newsock = self._context.wrap_socket(newsock, - do_handshake_on_connect=self.do_handshake_on_connect, - suppress_ragged_eofs=self.suppress_ragged_eofs, - server_side=True) - return newsock, addr - - def get_channel_binding(self, cb_type="tls-unique"): - """Get channel binding data for current connection. Raise ValueError - if the requested `cb_type` is not supported. Return bytes of the data - or None if the data is not available (e.g. before the handshake). - """ - if hasattr(self._sslobj, 'get_channel_binding'): - # 3.7+, and sslobj is not None - return self._sslobj.get_channel_binding(cb_type) - if cb_type not in CHANNEL_BINDING_TYPES: - raise ValueError("Unsupported channel binding type") - if cb_type != "tls-unique": - raise NotImplementedError("{0} channel binding type not implemented".format(cb_type)) - if self._sslobj is None: - return None - return self._sslobj.tls_unique_cb() - - -# Python does not support forward declaration of types -SSLContext.sslsocket_class = SSLSocket - -# Python 3.2 onwards raise normal timeout errors, not SSLError. -# See https://bugs.python.org/issue10272 -_SSLErrorReadTimeout = _socket_timeout('The read operation timed out') -_SSLErrorWriteTimeout = _socket_timeout('The write operation timed out') -_SSLErrorHandshakeTimeout = _socket_timeout('The handshake operation timed out') - - -def wrap_socket(sock, keyfile=None, certfile=None, - server_side=False, cert_reqs=CERT_NONE, - ssl_version=PROTOCOL_SSLv23, ca_certs=None, - do_handshake_on_connect=True, - suppress_ragged_eofs=True, - ciphers=None): - - return SSLSocket(sock=sock, keyfile=keyfile, certfile=certfile, - server_side=server_side, cert_reqs=cert_reqs, - ssl_version=ssl_version, ca_certs=ca_certs, - do_handshake_on_connect=do_handshake_on_connect, - suppress_ragged_eofs=suppress_ragged_eofs, - ciphers=ciphers) - - -def get_server_certificate(addr, ssl_version=PROTOCOL_SSLv23, ca_certs=None): - """Retrieve the certificate from the server at the specified address, - and return it as a PEM-encoded string. - If 'ca_certs' is specified, validate the server cert against it. - If 'ssl_version' is specified, use it in the connection attempt.""" - - _, _ = addr - if ca_certs is not None: - cert_reqs = CERT_REQUIRED - else: - cert_reqs = CERT_NONE - s = create_connection(addr) - s = wrap_socket(s, ssl_version=ssl_version, - cert_reqs=cert_reqs, ca_certs=ca_certs) - dercert = s.getpeercert(True) - s.close() - return DER_cert_to_PEM_cert(dercert) diff --git a/python/gevent/_sslgte279.py b/python/gevent/_sslgte279.py deleted file mode 100644 index 5580762..0000000 --- a/python/gevent/_sslgte279.py +++ /dev/null @@ -1,714 +0,0 @@ -# Wrapper module for _ssl. Written by Bill Janssen. -# Ported to gevent by Denis Bilenko. -"""SSL wrapper for socket objects on Python 2.7.9 and above. - -For the documentation, refer to :mod:`ssl` module manual. - -This module implements cooperative SSL socket wrappers. -""" - -from __future__ import absolute_import -# Our import magic sadly makes this warning useless -# pylint: disable=undefined-variable -# pylint: disable=too-many-instance-attributes,too-many-locals,too-many-statements,too-many-branches -# pylint: disable=arguments-differ,too-many-public-methods - -import ssl as __ssl__ - -_ssl = __ssl__._ssl # pylint:disable=no-member - -import errno -from gevent._socket2 import socket -from gevent.socket import timeout_default -from gevent.socket import create_connection -from gevent.socket import error as socket_error -from gevent.socket import timeout as _socket_timeout -from gevent._compat import PYPY -from gevent._util import copy_globals - -__implements__ = [ - 'SSLContext', - 'SSLSocket', - 'wrap_socket', - 'get_server_certificate', - 'create_default_context', - '_create_unverified_context', - '_create_default_https_context', - '_create_stdlib_context', -] - -# Import all symbols from Python's ssl.py, except those that we are implementing -# and "private" symbols. -__imports__ = copy_globals(__ssl__, globals(), - # SSLSocket *must* subclass gevent.socket.socket; see issue 597 and 801 - names_to_ignore=__implements__ + ['socket', 'create_connection'], - dunder_names_to_keep=()) - -try: - _delegate_methods -except NameError: # PyPy doesn't expose this detail - _delegate_methods = ('recv', 'recvfrom', 'recv_into', 'recvfrom_into', 'send', 'sendto') - -__all__ = __implements__ + __imports__ -if 'namedtuple' in __all__: - __all__.remove('namedtuple') - -orig_SSLContext = __ssl__.SSLContext # pylint: disable=no-member - - -class SSLContext(orig_SSLContext): - def wrap_socket(self, sock, server_side=False, - do_handshake_on_connect=True, - suppress_ragged_eofs=True, - server_hostname=None): - return SSLSocket(sock=sock, server_side=server_side, - do_handshake_on_connect=do_handshake_on_connect, - suppress_ragged_eofs=suppress_ragged_eofs, - server_hostname=server_hostname, - _context=self) - - -def create_default_context(purpose=Purpose.SERVER_AUTH, cafile=None, - capath=None, cadata=None): - """Create a SSLContext object with default settings. - - NOTE: The protocol and settings may change anytime without prior - deprecation. The values represent a fair balance between maximum - compatibility and security. - """ - if not isinstance(purpose, _ASN1Object): - raise TypeError(purpose) - - context = SSLContext(PROTOCOL_SSLv23) - - # SSLv2 considered harmful. - context.options |= OP_NO_SSLv2 - - # SSLv3 has problematic security and is only required for really old - # clients such as IE6 on Windows XP - context.options |= OP_NO_SSLv3 - - # disable compression to prevent CRIME attacks (OpenSSL 1.0+) - context.options |= getattr(_ssl, "OP_NO_COMPRESSION", 0) - - if purpose == Purpose.SERVER_AUTH: - # verify certs and host name in client mode - context.verify_mode = CERT_REQUIRED - context.check_hostname = True # pylint: disable=attribute-defined-outside-init - elif purpose == Purpose.CLIENT_AUTH: - # Prefer the server's ciphers by default so that we get stronger - # encryption - context.options |= getattr(_ssl, "OP_CIPHER_SERVER_PREFERENCE", 0) - - # Use single use keys in order to improve forward secrecy - context.options |= getattr(_ssl, "OP_SINGLE_DH_USE", 0) - context.options |= getattr(_ssl, "OP_SINGLE_ECDH_USE", 0) - - # disallow ciphers with known vulnerabilities - context.set_ciphers(_RESTRICTED_SERVER_CIPHERS) - - if cafile or capath or cadata: - context.load_verify_locations(cafile, capath, cadata) - elif context.verify_mode != CERT_NONE: - # no explicit cafile, capath or cadata but the verify mode is - # CERT_OPTIONAL or CERT_REQUIRED. Let's try to load default system - # root CA certificates for the given purpose. This may fail silently. - context.load_default_certs(purpose) - return context - -def _create_unverified_context(protocol=PROTOCOL_SSLv23, cert_reqs=None, - check_hostname=False, purpose=Purpose.SERVER_AUTH, - certfile=None, keyfile=None, - cafile=None, capath=None, cadata=None): - """Create a SSLContext object for Python stdlib modules - - All Python stdlib modules shall use this function to create SSLContext - objects in order to keep common settings in one place. The configuration - is less restrict than create_default_context()'s to increase backward - compatibility. - """ - if not isinstance(purpose, _ASN1Object): - raise TypeError(purpose) - - context = SSLContext(protocol) - # SSLv2 considered harmful. - context.options |= OP_NO_SSLv2 - # SSLv3 has problematic security and is only required for really old - # clients such as IE6 on Windows XP - context.options |= OP_NO_SSLv3 - - if cert_reqs is not None: - context.verify_mode = cert_reqs - context.check_hostname = check_hostname # pylint: disable=attribute-defined-outside-init - - if keyfile and not certfile: - raise ValueError("certfile must be specified") - if certfile or keyfile: - context.load_cert_chain(certfile, keyfile) - - # load CA root certs - if cafile or capath or cadata: - context.load_verify_locations(cafile, capath, cadata) - elif context.verify_mode != CERT_NONE: - # no explicit cafile, capath or cadata but the verify mode is - # CERT_OPTIONAL or CERT_REQUIRED. Let's try to load default system - # root CA certificates for the given purpose. This may fail silently. - context.load_default_certs(purpose) - - return context - -# Used by http.client if no context is explicitly passed. -_create_default_https_context = create_default_context - - -# Backwards compatibility alias, even though it's not a public name. -_create_stdlib_context = _create_unverified_context - -class SSLSocket(socket): - """ - gevent `ssl.SSLSocket <https://docs.python.org/2/library/ssl.html#ssl-sockets>`_ - for Pythons >= 2.7.9 but less than 3. - """ - - def __init__(self, sock=None, keyfile=None, certfile=None, - server_side=False, cert_reqs=CERT_NONE, - ssl_version=PROTOCOL_SSLv23, ca_certs=None, - do_handshake_on_connect=True, - family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None, - suppress_ragged_eofs=True, npn_protocols=None, ciphers=None, - server_hostname=None, - _context=None): - # fileno is ignored - # pylint: disable=unused-argument - if _context: - self._context = _context - else: - if server_side and not certfile: - raise ValueError("certfile must be specified for server-side " - "operations") - if keyfile and not certfile: - raise ValueError("certfile must be specified") - if certfile and not keyfile: - keyfile = certfile - self._context = SSLContext(ssl_version) - self._context.verify_mode = cert_reqs - if ca_certs: - self._context.load_verify_locations(ca_certs) - if certfile: - self._context.load_cert_chain(certfile, keyfile) - if npn_protocols: - self._context.set_npn_protocols(npn_protocols) - if ciphers: - self._context.set_ciphers(ciphers) - self.keyfile = keyfile - self.certfile = certfile - self.cert_reqs = cert_reqs - self.ssl_version = ssl_version - self.ca_certs = ca_certs - self.ciphers = ciphers - # Can't use sock.type as other flags (such as SOCK_NONBLOCK) get - # mixed in. - if sock.getsockopt(SOL_SOCKET, SO_TYPE) != SOCK_STREAM: - raise NotImplementedError("only stream sockets are supported") - - if PYPY: - socket.__init__(self, _sock=sock) - sock._drop() - else: - # CPython: XXX: Must pass the underlying socket, not our - # potential wrapper; test___example_servers fails the SSL test - # with a client-side EOF error. (Why?) - socket.__init__(self, _sock=sock._sock) - - # The initializer for socket overrides the methods send(), recv(), etc. - # in the instance, which we don't need -- but we want to provide the - # methods defined in SSLSocket. - for attr in _delegate_methods: - try: - delattr(self, attr) - except AttributeError: - pass - if server_side and server_hostname: - raise ValueError("server_hostname can only be specified " - "in client mode") - if self._context.check_hostname and not server_hostname: - raise ValueError("check_hostname requires server_hostname") - self.server_side = server_side - self.server_hostname = server_hostname - self.do_handshake_on_connect = do_handshake_on_connect - self.suppress_ragged_eofs = suppress_ragged_eofs - self.settimeout(sock.gettimeout()) - - # See if we are connected - try: - self.getpeername() - except socket_error as e: - if e.errno != errno.ENOTCONN: - raise - connected = False - else: - connected = True - - self._makefile_refs = 0 - self._closed = False - self._sslobj = None - self._connected = connected - if connected: - # create the SSL object - try: - self._sslobj = self._context._wrap_socket(self._sock, server_side, - server_hostname, ssl_sock=self) - if do_handshake_on_connect: - timeout = self.gettimeout() - if timeout == 0.0: - # non-blocking - raise ValueError("do_handshake_on_connect should not be specified for non-blocking sockets") - self.do_handshake() - - except socket_error as x: - self.close() - raise x - - - @property - def context(self): - return self._context - - @context.setter - def context(self, ctx): - self._context = ctx - self._sslobj.context = ctx - - def dup(self): - raise NotImplementedError("Can't dup() %s instances" % - self.__class__.__name__) - - def _checkClosed(self, msg=None): - # raise an exception here if you wish to check for spurious closes - pass - - def _check_connected(self): - if not self._connected: - # getpeername() will raise ENOTCONN if the socket is really - # not connected; note that we can be connected even without - # _connected being set, e.g. if connect() first returned - # EAGAIN. - self.getpeername() - - def read(self, len=1024, buffer=None): - """Read up to LEN bytes and return them. - Return zero-length string on EOF.""" - self._checkClosed() - - while 1: - if not self._sslobj: - raise ValueError("Read on closed or unwrapped SSL socket.") - if len == 0: - return b'' if buffer is None else 0 - if len < 0 and buffer is None: - # This is handled natively in python 2.7.12+ - raise ValueError("Negative read length") - try: - if buffer is not None: - return self._sslobj.read(len, buffer) - return self._sslobj.read(len or 1024) - except SSLWantReadError: - if self.timeout == 0.0: - raise - self._wait(self._read_event, timeout_exc=_SSLErrorReadTimeout) - except SSLWantWriteError: - if self.timeout == 0.0: - raise - # note: using _SSLErrorReadTimeout rather than _SSLErrorWriteTimeout below is intentional - self._wait(self._write_event, timeout_exc=_SSLErrorReadTimeout) - except SSLError as ex: - if ex.args[0] == SSL_ERROR_EOF and self.suppress_ragged_eofs: - if buffer is not None: - return 0 - return b'' - raise - - def write(self, data): - """Write DATA to the underlying SSL channel. Returns - number of bytes of DATA actually transmitted.""" - self._checkClosed() - - while 1: - if not self._sslobj: - raise ValueError("Write on closed or unwrapped SSL socket.") - - try: - return self._sslobj.write(data) - except SSLError as ex: - if ex.args[0] == SSL_ERROR_WANT_READ: - if self.timeout == 0.0: - raise - self._wait(self._read_event, timeout_exc=_SSLErrorWriteTimeout) - elif ex.args[0] == SSL_ERROR_WANT_WRITE: - if self.timeout == 0.0: - raise - self._wait(self._write_event, timeout_exc=_SSLErrorWriteTimeout) - else: - raise - - def getpeercert(self, binary_form=False): - """Returns a formatted version of the data in the - certificate provided by the other end of the SSL channel. - Return None if no certificate was provided, {} if a - certificate was provided, but not validated.""" - - self._checkClosed() - self._check_connected() - return self._sslobj.peer_certificate(binary_form) - - def selected_npn_protocol(self): - self._checkClosed() - if not self._sslobj or not _ssl.HAS_NPN: - return None - return self._sslobj.selected_npn_protocol() - - if hasattr(_ssl, 'HAS_ALPN'): - # 2.7.10+ - def selected_alpn_protocol(self): - self._checkClosed() - if not self._sslobj or not _ssl.HAS_ALPN: # pylint:disable=no-member - return None - return self._sslobj.selected_alpn_protocol() - - def cipher(self): - self._checkClosed() - if not self._sslobj: - return None - return self._sslobj.cipher() - - def compression(self): - self._checkClosed() - if not self._sslobj: - return None - return self._sslobj.compression() - - def __check_flags(self, meth, flags): - if flags != 0: - raise ValueError( - "non-zero flags not allowed in calls to %s on %s" % - (meth, self.__class__)) - - def send(self, data, flags=0, timeout=timeout_default): - self._checkClosed() - self.__check_flags('send', flags) - - if timeout is timeout_default: - timeout = self.timeout - - if not self._sslobj: - return socket.send(self, data, flags, timeout) - - while True: - try: - return self._sslobj.write(data) - except SSLWantReadError: - if self.timeout == 0.0: - return 0 - self._wait(self._read_event) - except SSLWantWriteError: - if self.timeout == 0.0: - return 0 - self._wait(self._write_event) - - def sendto(self, data, flags_or_addr, addr=None): - self._checkClosed() - if self._sslobj: - raise ValueError("sendto not allowed on instances of %s" % - self.__class__) - elif addr is None: - return socket.sendto(self, data, flags_or_addr) - else: - return socket.sendto(self, data, flags_or_addr, addr) - - def sendmsg(self, *args, **kwargs): - # Ensure programs don't send data unencrypted if they try to - # use this method. - raise NotImplementedError("sendmsg not allowed on instances of %s" % - self.__class__) - - def sendall(self, data, flags=0): - self._checkClosed() - self.__check_flags('sendall', flags) - - try: - socket.sendall(self, data) - except _socket_timeout as ex: - if self.timeout == 0.0: - # Python 2 simply *hangs* in this case, which is bad, but - # Python 3 raises SSLWantWriteError. We do the same. - raise SSLWantWriteError("The operation did not complete (write)") - # Convert the socket.timeout back to the sslerror - raise SSLError(*ex.args) - - def recv(self, buflen=1024, flags=0): - self._checkClosed() - if self._sslobj: - if flags != 0: - raise ValueError( - "non-zero flags not allowed in calls to recv() on %s" % - self.__class__) - if buflen == 0: - return b'' - return self.read(buflen) - return socket.recv(self, buflen, flags) - - def recv_into(self, buffer, nbytes=None, flags=0): - self._checkClosed() - if buffer is not None and (nbytes is None): - # Fix for python bug #23804: bool(bytearray()) is False, - # but we should read 0 bytes. - nbytes = len(buffer) - elif nbytes is None: - nbytes = 1024 - if self._sslobj: - if flags != 0: - raise ValueError( - "non-zero flags not allowed in calls to recv_into() on %s" % - self.__class__) - return self.read(nbytes, buffer) - return socket.recv_into(self, buffer, nbytes, flags) - - def recvfrom(self, buflen=1024, flags=0): - self._checkClosed() - if self._sslobj: - raise ValueError("recvfrom not allowed on instances of %s" % - self.__class__) - return socket.recvfrom(self, buflen, flags) - - def recvfrom_into(self, buffer, nbytes=None, flags=0): - self._checkClosed() - if self._sslobj: - raise ValueError("recvfrom_into not allowed on instances of %s" % - self.__class__) - else: - return socket.recvfrom_into(self, buffer, nbytes, flags) - - def recvmsg(self, *args, **kwargs): - raise NotImplementedError("recvmsg not allowed on instances of %s" % - self.__class__) - - def recvmsg_into(self, *args, **kwargs): - raise NotImplementedError("recvmsg_into not allowed on instances of " - "%s" % self.__class__) - - def pending(self): - self._checkClosed() - if self._sslobj: - return self._sslobj.pending() - return 0 - - def shutdown(self, how): - self._checkClosed() - self._sslobj = None - socket.shutdown(self, how) - - def close(self): - if self._makefile_refs < 1: - self._sslobj = None - socket.close(self) - else: - self._makefile_refs -= 1 - - if PYPY: - - def _reuse(self): - self._makefile_refs += 1 - - def _drop(self): - if self._makefile_refs < 1: - self.close() - else: - self._makefile_refs -= 1 - - def _sslobj_shutdown(self): - while True: - try: - return self._sslobj.shutdown() - except SSLError as ex: - if ex.args[0] == SSL_ERROR_EOF and self.suppress_ragged_eofs: - return '' - if ex.args[0] == SSL_ERROR_WANT_READ: - if self.timeout == 0.0: - raise - sys.exc_clear() - self._wait(self._read_event, timeout_exc=_SSLErrorReadTimeout) - elif ex.args[0] == SSL_ERROR_WANT_WRITE: - if self.timeout == 0.0: - raise - sys.exc_clear() - self._wait(self._write_event, timeout_exc=_SSLErrorWriteTimeout) - else: - raise - - def unwrap(self): - if not self._sslobj: - raise ValueError("No SSL wrapper around " + str(self)) - - s = self._sslobj_shutdown() - self._sslobj = None - # match _ssl2; critical to drop/reuse here on PyPy - # XXX: _ssl3 returns an SSLSocket. Is that what the standard lib does on - # Python 2? Should we do that? - return socket(_sock=s) - - def _real_close(self): - self._sslobj = None - socket._real_close(self) # pylint: disable=no-member - - def do_handshake(self): - """Perform a TLS/SSL handshake.""" - self._check_connected() - while True: - try: - self._sslobj.do_handshake() - break - except SSLWantReadError: - if self.timeout == 0.0: - raise - self._wait(self._read_event, timeout_exc=_SSLErrorHandshakeTimeout) - except SSLWantWriteError: - if self.timeout == 0.0: - raise - self._wait(self._write_event, timeout_exc=_SSLErrorHandshakeTimeout) - - if self._context.check_hostname: - if not self.server_hostname: - raise ValueError("check_hostname needs server_hostname " - "argument") - match_hostname(self.getpeercert(), self.server_hostname) - - def _real_connect(self, addr, connect_ex): - if self.server_side: - raise ValueError("can't connect in server-side mode") - # Here we assume that the socket is client-side, and not - # connected at the time of the call. We connect it, then wrap it. - if self._connected: - raise ValueError("attempt to connect already-connected SSLSocket!") - self._sslobj = self._context._wrap_socket(self._sock, False, self.server_hostname, ssl_sock=self) - try: - if connect_ex: - rc = socket.connect_ex(self, addr) - else: - rc = None - socket.connect(self, addr) - if not rc: - self._connected = True - if self.do_handshake_on_connect: - self.do_handshake() - return rc - except socket_error: - self._sslobj = None - raise - - def connect(self, addr): - """Connects to remote ADDR, and then wraps the connection in - an SSL channel.""" - self._real_connect(addr, False) - - def connect_ex(self, addr): - """Connects to remote ADDR, and then wraps the connection in - an SSL channel.""" - return self._real_connect(addr, True) - - def accept(self): - """Accepts a new connection from a remote client, and returns - a tuple containing that new connection wrapped with a server-side - SSL channel, and the address of the remote client.""" - - newsock, addr = socket.accept(self) - newsock._drop_events() - newsock = self._context.wrap_socket(newsock, - do_handshake_on_connect=self.do_handshake_on_connect, - suppress_ragged_eofs=self.suppress_ragged_eofs, - server_side=True) - return newsock, addr - - def makefile(self, mode='r', bufsize=-1): - - """Make and return a file-like object that - works with the SSL connection. Just use the code - from the socket module.""" - if not PYPY: - self._makefile_refs += 1 - # close=True so as to decrement the reference count when done with - # the file-like object. - return _fileobject(self, mode, bufsize, close=True) - - def get_channel_binding(self, cb_type="tls-unique"): - """Get channel binding data for current connection. Raise ValueError - if the requested `cb_type` is not supported. Return bytes of the data - or None if the data is not available (e.g. before the handshake). - """ - if cb_type not in CHANNEL_BINDING_TYPES: - raise ValueError("Unsupported channel binding type") - if cb_type != "tls-unique": - raise NotImplementedError( - "{0} channel binding type not implemented" - .format(cb_type)) - if self._sslobj is None: - return None - return self._sslobj.tls_unique_cb() - - def version(self): - """ - Return a string identifying the protocol version used by the - current SSL channel, or None if there is no established channel. - """ - if self._sslobj is None: - return None - return self._sslobj.version() - -if PYPY or not hasattr(SSLSocket, 'timeout'): - # PyPy (and certain versions of CPython) doesn't have a direct - # 'timeout' property on raw sockets, because that's not part of - # the documented specification. We may wind up wrapping a raw - # socket (when ssl is used with PyWSGI) or a gevent socket, which - # does have a read/write timeout property as an alias for - # get/settimeout, so make sure that's always the case because - # pywsgi can depend on that. - SSLSocket.timeout = property(lambda self: self.gettimeout(), - lambda self, value: self.settimeout(value)) - - - -_SSLErrorReadTimeout = SSLError('The read operation timed out') -_SSLErrorWriteTimeout = SSLError('The write operation timed out') -_SSLErrorHandshakeTimeout = SSLError('The handshake operation timed out') - -def wrap_socket(sock, keyfile=None, certfile=None, - server_side=False, cert_reqs=CERT_NONE, - ssl_version=PROTOCOL_SSLv23, ca_certs=None, - do_handshake_on_connect=True, - suppress_ragged_eofs=True, - ciphers=None): - - return SSLSocket(sock=sock, keyfile=keyfile, certfile=certfile, - server_side=server_side, cert_reqs=cert_reqs, - ssl_version=ssl_version, ca_certs=ca_certs, - do_handshake_on_connect=do_handshake_on_connect, - suppress_ragged_eofs=suppress_ragged_eofs, - ciphers=ciphers) - -def get_server_certificate(addr, ssl_version=PROTOCOL_SSLv23, ca_certs=None): - """Retrieve the certificate from the server at the specified address, - and return it as a PEM-encoded string. - If 'ca_certs' is specified, validate the server cert against it. - If 'ssl_version' is specified, use it in the connection attempt.""" - - _, _ = addr - if ca_certs is not None: - cert_reqs = CERT_REQUIRED - else: - cert_reqs = CERT_NONE - context = _create_stdlib_context(ssl_version, - cert_reqs=cert_reqs, - cafile=ca_certs) - with closing(create_connection(addr)) as sock: - with closing(context.wrap_socket(sock)) as sslsock: - dercert = sslsock.getpeercert(True) - return DER_cert_to_PEM_cert(dercert) diff --git a/python/gevent/_tblib.py b/python/gevent/_tblib.py deleted file mode 100644 index 1336401..0000000 --- a/python/gevent/_tblib.py +++ /dev/null @@ -1,432 +0,0 @@ -# -*- coding: utf-8 -*- -# A vendored version of part of https://github.com/ionelmc/python-tblib -# pylint:disable=redefined-outer-name,reimported,function-redefined,bare-except,no-else-return,broad-except -#### -# Copyright (c) 2013-2016, Ionel Cristian Mărieș -# All rights reserved. - -# Redistribution and use in source and binary forms, with or without modification, are permitted provided that the -# following conditions are met: - -# 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following -# disclaimer. - -# 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided with the distribution. - -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -#### - -# cpython.py - -""" -Taken verbatim from Jinja2. - -https://github.com/mitsuhiko/jinja2/blob/master/jinja2/debug.py#L267 -""" -# pylint:disable=consider-using-dict-comprehension -#import platform # XXX: gevent cannot import platform at the top level; interferes with monkey patching -import sys - - -def _init_ugly_crap(): - """This function implements a few ugly things so that we can patch the - traceback objects. The function returned allows resetting `tb_next` on - any python traceback object. Do not attempt to use this on non cpython - interpreters - """ - import ctypes - from types import TracebackType - - # figure out side of _Py_ssize_t - if hasattr(ctypes.pythonapi, 'Py_InitModule4_64'): - _Py_ssize_t = ctypes.c_int64 - else: - _Py_ssize_t = ctypes.c_int - - # regular python - class _PyObject(ctypes.Structure): - pass - - _PyObject._fields_ = [ - ('ob_refcnt', _Py_ssize_t), - ('ob_type', ctypes.POINTER(_PyObject)) - ] - - # python with trace - if hasattr(sys, 'getobjects'): - class _PyObject(ctypes.Structure): - pass - - _PyObject._fields_ = [ - ('_ob_next', ctypes.POINTER(_PyObject)), - ('_ob_prev', ctypes.POINTER(_PyObject)), - ('ob_refcnt', _Py_ssize_t), - ('ob_type', ctypes.POINTER(_PyObject)) - ] - - class _Traceback(_PyObject): - pass - - _Traceback._fields_ = [ - ('tb_next', ctypes.POINTER(_Traceback)), - ('tb_frame', ctypes.POINTER(_PyObject)), - ('tb_lasti', ctypes.c_int), - ('tb_lineno', ctypes.c_int) - ] - - def tb_set_next(tb, next): - """Set the tb_next attribute of a traceback object.""" - if not (isinstance(tb, TracebackType) and (next is None or isinstance(next, TracebackType))): - raise TypeError('tb_set_next arguments must be traceback objects') - obj = _Traceback.from_address(id(tb)) - if tb.tb_next is not None: - old = _Traceback.from_address(id(tb.tb_next)) - old.ob_refcnt -= 1 - if next is None: - obj.tb_next = ctypes.POINTER(_Traceback)() - else: - next = _Traceback.from_address(id(next)) - next.ob_refcnt += 1 - obj.tb_next = ctypes.pointer(next) - - return tb_set_next - - -tb_set_next = None -#try: -# if platform.python_implementation() == 'CPython': -# tb_set_next = _init_ugly_crap() -#except Exception as exc: -# sys.stderr.write("Failed to initialize cpython support: {!r}".format(exc)) -#del _init_ugly_crap - -# __init__.py -import re -from types import CodeType -from types import TracebackType - -try: - from __pypy__ import tproxy -except ImportError: - tproxy = None - -__version__ = '1.3.0' -__all__ = ('Traceback',) - -PY3 = sys.version_info[0] == 3 -FRAME_RE = re.compile(r'^\s*File "(?P<co_filename>.+)", line (?P<tb_lineno>\d+)(, in (?P<co_name>.+))?$') - - -class _AttrDict(dict): - __slots__ = () - __getattr__ = dict.__getitem__ - - -# noinspection PyPep8Naming -class __traceback_maker(Exception): - pass - - -class TracebackParseError(Exception): - pass - - -class Code(object): - def __init__(self, code): - self.co_filename = code.co_filename - self.co_name = code.co_name - # gevent: copy more attributes - self.co_nlocals = code.co_nlocals - self.co_stacksize = code.co_stacksize - self.co_flags = code.co_flags - self.co_firstlineno = code.co_firstlineno - - -class Frame(object): - def __init__(self, frame): - self.f_globals = dict([ - (k, v) - for k, v in frame.f_globals.items() - if k in ("__file__", "__name__") - ]) - self.f_code = Code(frame.f_code) - - def clear(self): - # For compatibility with PyPy 3.5; - # clear was added to frame in Python 3.4 - # and is called by traceback.clear_frames(), which - # in turn is called by unittest.TestCase.assertRaises - pass - -class Traceback(object): - - tb_next = None - - def __init__(self, tb): - self.tb_frame = Frame(tb.tb_frame) - # noinspection SpellCheckingInspection - self.tb_lineno = int(tb.tb_lineno) - - # Build in place to avoid exceeding the recursion limit - tb = tb.tb_next - prev_traceback = self - cls = type(self) - while tb is not None: - traceback = object.__new__(cls) - traceback.tb_frame = Frame(tb.tb_frame) - traceback.tb_lineno = int(tb.tb_lineno) - prev_traceback.tb_next = traceback - prev_traceback = traceback - tb = tb.tb_next - - def as_traceback(self): - if tproxy: - return tproxy(TracebackType, self.__tproxy_handler) - if not tb_set_next: - raise RuntimeError("Cannot re-create traceback !") - - current = self - top_tb = None - tb = None - while current: - f_code = current.tb_frame.f_code - code = compile('\n' * (current.tb_lineno - 1) + 'raise __traceback_maker', current.tb_frame.f_code.co_filename, 'exec') - if PY3: - code = CodeType( - 0, code.co_kwonlyargcount, - code.co_nlocals, code.co_stacksize, code.co_flags, - code.co_code, code.co_consts, code.co_names, code.co_varnames, - f_code.co_filename, f_code.co_name, - code.co_firstlineno, code.co_lnotab, (), () - ) - else: - code = CodeType( - 0, - code.co_nlocals, code.co_stacksize, code.co_flags, - code.co_code, code.co_consts, code.co_names, code.co_varnames, - f_code.co_filename.encode(), f_code.co_name.encode(), - code.co_firstlineno, code.co_lnotab, (), () - ) - - # noinspection PyBroadException - try: - exec(code, current.tb_frame.f_globals, {}) - except: - next_tb = sys.exc_info()[2].tb_next - if top_tb is None: - top_tb = next_tb - if tb is not None: - tb_set_next(tb, next_tb) - tb = next_tb - del next_tb - - current = current.tb_next - try: - return top_tb - finally: - del top_tb - del tb - - - # noinspection SpellCheckingInspection - def __tproxy_handler(self, operation, *args, **kwargs): - if operation in ('__getattribute__', '__getattr__'): - if args[0] == 'tb_next': - return self.tb_next and self.tb_next.as_traceback() - else: - return getattr(self, args[0]) - else: - return getattr(self, operation)(*args, **kwargs) - - def to_dict(self): - """Convert a Traceback into a dictionary representation""" - if self.tb_next is None: - tb_next = None - else: - tb_next = self.tb_next.to_dict() - - code = { - 'co_filename': self.tb_frame.f_code.co_filename, - 'co_name': self.tb_frame.f_code.co_name, - } - frame = { - 'f_globals': self.tb_frame.f_globals, - 'f_code': code, - } - return { - 'tb_frame': frame, - 'tb_lineno': self.tb_lineno, - 'tb_next': tb_next, - } - - @classmethod - def from_dict(cls, dct): - if dct['tb_next']: - tb_next = cls.from_dict(dct['tb_next']) - else: - tb_next = None - - code = _AttrDict( - co_filename=dct['tb_frame']['f_code']['co_filename'], - co_name=dct['tb_frame']['f_code']['co_name'], - ) - frame = _AttrDict( - f_globals=dct['tb_frame']['f_globals'], - f_code=code, - ) - tb = _AttrDict( - tb_frame=frame, - tb_lineno=dct['tb_lineno'], - tb_next=tb_next, - ) - return cls(tb) - - @classmethod - def from_string(cls, string, strict=True): - frames = [] - header = strict - - for line in string.splitlines(): - line = line.rstrip() - if header: - if line == 'Traceback (most recent call last):': - header = False - continue - frame_match = FRAME_RE.match(line) - if frame_match: - frames.append(frame_match.groupdict()) - elif line.startswith(' '): - pass - elif strict: - break # traceback ended - - if frames: - previous = None - for frame in reversed(frames): - previous = _AttrDict( - frame, - tb_frame=_AttrDict( - frame, - f_globals=_AttrDict( - __file__=frame['co_filename'], - __name__='?', - ), - f_code=_AttrDict(frame), - ), - tb_next=previous, - ) - return cls(previous) - else: - raise TracebackParseError("Could not find any frames in %r." % string) - -# pickling_support.py - - -def unpickle_traceback(tb_frame, tb_lineno, tb_next): - ret = object.__new__(Traceback) - ret.tb_frame = tb_frame - ret.tb_lineno = tb_lineno - ret.tb_next = tb_next - return ret.as_traceback() - - -def pickle_traceback(tb): - return unpickle_traceback, (Frame(tb.tb_frame), tb.tb_lineno, tb.tb_next and Traceback(tb.tb_next)) - - -def install(): - try: - import copy_reg - except ImportError: - import copyreg as copy_reg - - copy_reg.pickle(TracebackType, pickle_traceback) - -# Added by gevent - -# We have to defer the initialization, and especially the import of platform, -# until runtime. If we're monkey patched, we need to be sure to use -# the original __import__ to avoid switching through the hub due to -# import locks on Python 2. See also builtins.py for details. - - -def _unlocked_imports(f): - def g(a): - if sys is None: # pragma: no cover - # interpreter shutdown on Py2 - return - - gb = None - if 'gevent.builtins' in sys.modules: - gb = sys.modules['gevent.builtins'] - gb._unlock_imports() - try: - return f(a) - finally: - if gb is not None: - gb._lock_imports() - g.__name__ = f.__name__ - g.__module__ = f.__module__ - return g - - -def _import_dump_load(): - global dumps - global loads - try: - import cPickle as pickle - except ImportError: - import pickle - dumps = pickle.dumps - loads = pickle.loads - -dumps = loads = None - -_installed = False - - -def _init(): - global _installed - global tb_set_next - if _installed: - return - - _installed = True - import platform - try: - if platform.python_implementation() == 'CPython': - tb_set_next = _init_ugly_crap() - except Exception as exc: - sys.stderr.write("Failed to initialize cpython support: {!r}".format(exc)) - - try: - from __pypy__ import tproxy - except ImportError: - tproxy = None - - if not tb_set_next and not tproxy: - raise ImportError("Cannot use tblib. Runtime not supported.") - _import_dump_load() - install() - - -@_unlocked_imports -def dump_traceback(tb): - # Both _init and dump/load have to be unlocked, because - # copy_reg and pickle can do imports to resolve class names; those - # class names are in this module and greenlet safe though - _init() - return dumps(tb) - - -@_unlocked_imports -def load_traceback(s): - _init() - return loads(s) diff --git a/python/gevent/_threading.py b/python/gevent/_threading.py deleted file mode 100644 index 9258dfb..0000000 --- a/python/gevent/_threading.py +++ /dev/null @@ -1,168 +0,0 @@ -"""A clone of threading module (version 2.7.2) that always -targets real OS threads. (Unlike 'threading' which flips between -green and OS threads based on whether the monkey patching is in effect -or not). - -This module is missing 'Thread' class, but includes 'Queue'. -""" -from __future__ import absolute_import - -from collections import deque - -from gevent import monkey -from gevent._compat import thread_mod_name - - -__all__ = [ - 'Lock', - 'Queue', -] - - -start_new_thread, Lock, get_thread_ident, = monkey.get_original(thread_mod_name, [ - 'start_new_thread', 'allocate_lock', 'get_ident', -]) - - -# pylint 2.0.dev2 things collections.dequeue.popleft() doesn't return -# pylint:disable=assignment-from-no-return - - -class _Condition(object): - # pylint:disable=method-hidden - - def __init__(self, lock): - self.__lock = lock - self.__waiters = [] - - # If the lock defines _release_save() and/or _acquire_restore(), - # these override the default implementations (which just call - # release() and acquire() on the lock). Ditto for _is_owned(). - try: - self._release_save = lock._release_save - except AttributeError: - pass - try: - self._acquire_restore = lock._acquire_restore - except AttributeError: - pass - try: - self._is_owned = lock._is_owned - except AttributeError: - pass - - def __enter__(self): - return self.__lock.__enter__() - - def __exit__(self, t, v, tb): - return self.__lock.__exit__(t, v, tb) - - def __repr__(self): - return "<Condition(%s, %d)>" % (self.__lock, len(self.__waiters)) - - def _release_save(self): - self.__lock.release() # No state to save - - def _acquire_restore(self, x): # pylint:disable=unused-argument - self.__lock.acquire() # Ignore saved state - - def _is_owned(self): - # Return True if lock is owned by current_thread. - # This method is called only if __lock doesn't have _is_owned(). - if self.__lock.acquire(0): - self.__lock.release() - return False - return True - - def wait(self): - # The condition MUST be owned, but we don't check that. - waiter = Lock() - waiter.acquire() - self.__waiters.append(waiter) - saved_state = self._release_save() - try: # restore state no matter what (e.g., KeyboardInterrupt) - waiter.acquire() # Block on the native lock - finally: - self._acquire_restore(saved_state) - - def notify_one(self): - # The condition MUST be owned, but we don't check that. - try: - waiter = self.__waiters.pop() - except IndexError: - # Nobody around - pass - else: - waiter.release() - - -class Queue(object): - """Create a queue object. - - The queue is always infinite size. - """ - - __slots__ = ('_queue', '_mutex', '_not_empty', 'unfinished_tasks') - - def __init__(self): - self._queue = deque() - # mutex must be held whenever the queue is mutating. All methods - # that acquire mutex must release it before returning. mutex - # is shared between the three conditions, so acquiring and - # releasing the conditions also acquires and releases mutex. - self._mutex = Lock() - # Notify not_empty whenever an item is added to the queue; a - # thread waiting to get is notified then. - self._not_empty = _Condition(self._mutex) - - self.unfinished_tasks = 0 - - def task_done(self): - """Indicate that a formerly enqueued task is complete. - - Used by Queue consumer threads. For each get() used to fetch a task, - a subsequent call to task_done() tells the queue that the processing - on the task is complete. - - If a join() is currently blocking, it will resume when all items - have been processed (meaning that a task_done() call was received - for every item that had been put() into the queue). - - Raises a ValueError if called more times than there were items - placed in the queue. - """ - with self._mutex: - unfinished = self.unfinished_tasks - 1 - if unfinished <= 0: - if unfinished < 0: - raise ValueError('task_done() called too many times') - self.unfinished_tasks = unfinished - - def qsize(self, len=len): - """Return the approximate size of the queue (not reliable!).""" - return len(self._queue) - - def empty(self): - """Return True if the queue is empty, False otherwise (not reliable!).""" - return not self.qsize() - - def full(self): - """Return True if the queue is full, False otherwise (not reliable!).""" - return False - - def put(self, item): - """Put an item into the queue. - """ - with self._not_empty: - self._queue.append(item) - self.unfinished_tasks += 1 - self._not_empty.notify_one() - - def get(self): - """Remove and return an item from the queue. - """ - with self._not_empty: - while not self._queue: - self._not_empty.wait() - item = self._queue.popleft() - return item diff --git a/python/gevent/_tracer.c b/python/gevent/_tracer.c deleted file mode 100644 index caef6dd..0000000 --- a/python/gevent/_tracer.c +++ /dev/null @@ -1,9571 +0,0 @@ -/* Generated by Cython 0.28.5 */ - -/* BEGIN: Cython Metadata -{ - "distutils": { - "depends": [ - "src/gevent/__tracer.pxd", - "src\\gevent\\__tracer.pxd" - ], - "include_dirs": [ - "C:\\Python36\\Include", - "deps" - ], - "name": "gevent.__tracer", - "sources": [ - "src/gevent/_tracer.py" - ] - }, - "module_name": "gevent.__tracer" -} -END: Cython Metadata */ - -#define PY_SSIZE_T_CLEAN -#include "Python.h" -#ifndef Py_PYTHON_H - #error Python headers needed to compile C extensions, please install development version of Python. -#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) - #error Cython requires Python 2.6+ or Python 3.3+. -#else -#define CYTHON_ABI "0_28_5" -#define CYTHON_FUTURE_DIVISION 1 -#include <stddef.h> -#ifndef offsetof - #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) -#endif -#if !defined(WIN32) && !defined(MS_WINDOWS) - #ifndef __stdcall - #define __stdcall - #endif - #ifndef __cdecl - #define __cdecl - #endif - #ifndef __fastcall - #define __fastcall - #endif -#endif -#ifndef DL_IMPORT - #define DL_IMPORT(t) t -#endif -#ifndef DL_EXPORT - #define DL_EXPORT(t) t -#endif -#define __PYX_COMMA , -#ifndef HAVE_LONG_LONG - #if PY_VERSION_HEX >= 0x02070000 - #define HAVE_LONG_LONG - #endif -#endif -#ifndef PY_LONG_LONG - #define PY_LONG_LONG LONG_LONG -#endif -#ifndef Py_HUGE_VAL - #define Py_HUGE_VAL HUGE_VAL -#endif -#ifdef PYPY_VERSION - #define CYTHON_COMPILING_IN_PYPY 1 - #define CYTHON_COMPILING_IN_PYSTON 0 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #undef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 0 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #if PY_VERSION_HEX < 0x03050000 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #undef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #undef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 1 - #undef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 0 - #undef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 0 - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 -#elif defined(PYSTON_VERSION) - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_PYSTON 1 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 -#else - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_PYSTON 0 - #define CYTHON_COMPILING_IN_CPYTHON 1 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #if PY_VERSION_HEX < 0x02070000 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #elif !defined(CYTHON_USE_PYTYPE_LOOKUP) - #define CYTHON_USE_PYTYPE_LOOKUP 1 - #endif - #if PY_MAJOR_VERSION < 3 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #if PY_VERSION_HEX < 0x02070000 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #elif !defined(CYTHON_USE_PYLONG_INTERNALS) - #define CYTHON_USE_PYLONG_INTERNALS 1 - #endif - #ifndef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 1 - #endif - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #if PY_VERSION_HEX < 0x030300F0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #elif !defined(CYTHON_USE_UNICODE_WRITER) - #define CYTHON_USE_UNICODE_WRITER 1 - #endif - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #ifndef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 1 - #endif - #ifndef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 1 - #endif - #ifndef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT (0 && PY_VERSION_HEX >= 0x03050000) - #endif - #ifndef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1) - #endif -#endif -#if !defined(CYTHON_FAST_PYCCALL) -#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) -#endif -#if CYTHON_USE_PYLONG_INTERNALS - #include "longintrepr.h" - #undef SHIFT - #undef BASE - #undef MASK -#endif -#ifndef __has_attribute - #define __has_attribute(x) 0 -#endif -#ifndef __has_cpp_attribute - #define __has_cpp_attribute(x) 0 -#endif -#ifndef CYTHON_RESTRICT - #if defined(__GNUC__) - #define CYTHON_RESTRICT __restrict__ - #elif defined(_MSC_VER) && _MSC_VER >= 1400 - #define CYTHON_RESTRICT __restrict - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_RESTRICT restrict - #else - #define CYTHON_RESTRICT - #endif -#endif -#ifndef CYTHON_UNUSED -# if defined(__GNUC__) -# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -#endif -#ifndef CYTHON_MAYBE_UNUSED_VAR -# if defined(__cplusplus) - template<class T> void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } -# else -# define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) -# endif -#endif -#ifndef CYTHON_NCP_UNUSED -# if CYTHON_COMPILING_IN_CPYTHON -# define CYTHON_NCP_UNUSED -# else -# define CYTHON_NCP_UNUSED CYTHON_UNUSED -# endif -#endif -#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) -#ifdef _MSC_VER - #ifndef _MSC_STDINT_H_ - #if _MSC_VER < 1300 - typedef unsigned char uint8_t; - typedef unsigned int uint32_t; - #else - typedef unsigned __int8 uint8_t; - typedef unsigned __int32 uint32_t; - #endif - #endif -#else - #include <stdint.h> -#endif -#ifndef CYTHON_FALLTHROUGH - #if defined(__cplusplus) && __cplusplus >= 201103L - #if __has_cpp_attribute(fallthrough) - #define CYTHON_FALLTHROUGH [[fallthrough]] - #elif __has_cpp_attribute(clang::fallthrough) - #define CYTHON_FALLTHROUGH [[clang::fallthrough]] - #elif __has_cpp_attribute(gnu::fallthrough) - #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] - #endif - #endif - #ifndef CYTHON_FALLTHROUGH - #if __has_attribute(fallthrough) - #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) - #else - #define CYTHON_FALLTHROUGH - #endif - #endif - #if defined(__clang__ ) && defined(__apple_build_version__) - #if __apple_build_version__ < 7000000 - #undef CYTHON_FALLTHROUGH - #define CYTHON_FALLTHROUGH - #endif - #endif -#endif - -#ifndef CYTHON_INLINE - #if defined(__clang__) - #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) - #elif defined(__GNUC__) - #define CYTHON_INLINE __inline__ - #elif defined(_MSC_VER) - #define CYTHON_INLINE __inline - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_INLINE inline - #else - #define CYTHON_INLINE - #endif -#endif - -#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) - #define Py_OptimizeFlag 0 -#endif -#define __PYX_BUILD_PY_SSIZE_T "n" -#define CYTHON_FORMAT_SSIZE_T "z" -#if PY_MAJOR_VERSION < 3 - #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) - #define __Pyx_DefaultClassType PyClass_Type -#else - #define __Pyx_BUILTIN_MODULE_NAME "builtins" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) - #define __Pyx_DefaultClassType PyType_Type -#endif -#ifndef Py_TPFLAGS_CHECKTYPES - #define Py_TPFLAGS_CHECKTYPES 0 -#endif -#ifndef Py_TPFLAGS_HAVE_INDEX - #define Py_TPFLAGS_HAVE_INDEX 0 -#endif -#ifndef Py_TPFLAGS_HAVE_NEWBUFFER - #define Py_TPFLAGS_HAVE_NEWBUFFER 0 -#endif -#ifndef Py_TPFLAGS_HAVE_FINALIZE - #define Py_TPFLAGS_HAVE_FINALIZE 0 -#endif -#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) - #ifndef METH_FASTCALL - #define METH_FASTCALL 0x80 - #endif - typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); - typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, - Py_ssize_t nargs, PyObject *kwnames); -#else - #define __Pyx_PyCFunctionFast _PyCFunctionFast - #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords -#endif -#if CYTHON_FAST_PYCCALL -#define __Pyx_PyFastCFunction_Check(func)\ - ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))))) -#else -#define __Pyx_PyFastCFunction_Check(func) 0 -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) - #define PyObject_Malloc(s) PyMem_Malloc(s) - #define PyObject_Free(p) PyMem_Free(p) - #define PyObject_Realloc(p) PyMem_Realloc(p) -#endif -#if CYTHON_COMPILING_IN_PYSTON - #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) -#else - #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) -#endif -#if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000 - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#elif PY_VERSION_HEX >= 0x03060000 - #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() -#elif PY_VERSION_HEX >= 0x03000000 - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#else - #define __Pyx_PyThreadState_Current _PyThreadState_Current -#endif -#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) -#include "pythread.h" -#define Py_tss_NEEDS_INIT 0 -typedef int Py_tss_t; -static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { - *key = PyThread_create_key(); - return 0; // PyThread_create_key reports success always -} -static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { - Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); - *key = Py_tss_NEEDS_INIT; - return key; -} -static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { - PyObject_Free(key); -} -static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { - return *key != Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { - PyThread_delete_key(*key); - *key = Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { - return PyThread_set_key_value(*key, value); -} -static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { - return PyThread_get_key_value(*key); -} -#endif // TSS (Thread Specific Storage) API -#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) -#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) -#else -#define __Pyx_PyDict_NewPresized(n) PyDict_New() -#endif -#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION - #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) -#else - #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) -#endif -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS -#define __Pyx_PyDict_GetItemStr(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) -#else -#define __Pyx_PyDict_GetItemStr(dict, name) PyDict_GetItem(dict, name) -#endif -#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) - #define CYTHON_PEP393_ENABLED 1 - #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ - 0 : _PyUnicode_Ready((PyObject *)(op))) - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) - #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) - #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) - #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) -#else - #define CYTHON_PEP393_ENABLED 0 - #define PyUnicode_1BYTE_KIND 1 - #define PyUnicode_2BYTE_KIND 2 - #define PyUnicode_4BYTE_KIND 4 - #define __Pyx_PyUnicode_READY(op) (0) - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) - #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) - #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) - #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) -#endif -#if CYTHON_COMPILING_IN_PYPY - #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) -#else - #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ - PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) - #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) - #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) - #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) -#endif -#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) -#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) -#else - #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) -#endif -#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) - #define PyObject_ASCII(o) PyObject_Repr(o) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBaseString_Type PyUnicode_Type - #define PyStringObject PyUnicodeObject - #define PyString_Type PyUnicode_Type - #define PyString_Check PyUnicode_Check - #define PyString_CheckExact PyUnicode_CheckExact - #define PyObject_Unicode PyObject_Str -#endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) - #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) -#else - #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) - #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) -#endif -#ifndef PySet_CheckExact - #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) -#endif -#if CYTHON_ASSUME_SAFE_MACROS - #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) -#else - #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyIntObject PyLongObject - #define PyInt_Type PyLong_Type - #define PyInt_Check(op) PyLong_Check(op) - #define PyInt_CheckExact(op) PyLong_CheckExact(op) - #define PyInt_FromString PyLong_FromString - #define PyInt_FromUnicode PyLong_FromUnicode - #define PyInt_FromLong PyLong_FromLong - #define PyInt_FromSize_t PyLong_FromSize_t - #define PyInt_FromSsize_t PyLong_FromSsize_t - #define PyInt_AsLong PyLong_AsLong - #define PyInt_AS_LONG PyLong_AS_LONG - #define PyInt_AsSsize_t PyLong_AsSsize_t - #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask - #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask - #define PyNumber_Int PyNumber_Long -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBoolObject PyLongObject -#endif -#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY - #ifndef PyUnicode_InternFromString - #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) - #endif -#endif -#if PY_VERSION_HEX < 0x030200A4 - typedef long Py_hash_t; - #define __Pyx_PyInt_FromHash_t PyInt_FromLong - #define __Pyx_PyInt_AsHash_t PyInt_AsLong -#else - #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t - #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t -#endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : (Py_INCREF(func), func)) -#else - #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) -#endif -#if CYTHON_USE_ASYNC_SLOTS - #if PY_VERSION_HEX >= 0x030500B1 - #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods - #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) - #else - #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) - #endif -#else - #define __Pyx_PyType_AsAsync(obj) NULL -#endif -#ifndef __Pyx_PyAsyncMethodsStruct - typedef struct { - unaryfunc am_await; - unaryfunc am_aiter; - unaryfunc am_anext; - } __Pyx_PyAsyncMethodsStruct; -#endif - -#if defined(WIN32) || defined(MS_WINDOWS) - #define _USE_MATH_DEFINES -#endif -#include <math.h> -#ifdef NAN -#define __PYX_NAN() ((float) NAN) -#else -static CYTHON_INLINE float __PYX_NAN() { - float value; - memset(&value, 0xFF, sizeof(value)); - return value; -} -#endif -#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) -#define __Pyx_truncl trunc -#else -#define __Pyx_truncl truncl -#endif - - -#define __PYX_ERR(f_index, lineno, Ln_error) \ -{ \ - __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \ -} - -#ifndef __PYX_EXTERN_C - #ifdef __cplusplus - #define __PYX_EXTERN_C extern "C" - #else - #define __PYX_EXTERN_C extern - #endif -#endif - -#define __PYX_HAVE__gevent____tracer -#define __PYX_HAVE_API__gevent____tracer -/* Early includes */ -#ifdef _OPENMP -#include <omp.h> -#endif /* _OPENMP */ - -#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) -#define CYTHON_WITHOUT_ASSERTIONS -#endif - -typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; - const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; - -#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 -#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0 -#define __PYX_DEFAULT_STRING_ENCODING "" -#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString -#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#define __Pyx_uchar_cast(c) ((unsigned char)c) -#define __Pyx_long_cast(x) ((long)x) -#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ - (sizeof(type) < sizeof(Py_ssize_t)) ||\ - (sizeof(type) > sizeof(Py_ssize_t) &&\ - likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX) &&\ - (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ - v == (type)PY_SSIZE_T_MIN))) ||\ - (sizeof(type) == sizeof(Py_ssize_t) &&\ - (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX))) ) -#if defined (__cplusplus) && __cplusplus >= 201103L - #include <cstdlib> - #define __Pyx_sst_abs(value) std::abs(value) -#elif SIZEOF_INT >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) abs(value) -#elif SIZEOF_LONG >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) labs(value) -#elif defined (_MSC_VER) - #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) -#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define __Pyx_sst_abs(value) llabs(value) -#elif defined (__GNUC__) - #define __Pyx_sst_abs(value) __builtin_llabs(value) -#else - #define __Pyx_sst_abs(value) ((value<0) ? -value : value) -#endif -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); -#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) -#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) -#define __Pyx_PyBytes_FromString PyBytes_FromString -#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); -#if PY_MAJOR_VERSION < 3 - #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#else - #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize -#endif -#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) -#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) -#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) -#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) -#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) -static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { - const Py_UNICODE *u_end = u; - while (*u_end++) ; - return (size_t)(u_end - u - 1); -} -#define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) -#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode -#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode -#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) -#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); -#define __Pyx_PySequence_Tuple(obj)\ - (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); -#if CYTHON_ASSUME_SAFE_MACROS -#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) -#else -#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) -#endif -#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) -#if PY_MAJOR_VERSION >= 3 -#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) -#else -#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) -#endif -#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x)) -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII -static int __Pyx_sys_getdefaultencoding_not_ascii; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - PyObject* ascii_chars_u = NULL; - PyObject* ascii_chars_b = NULL; - const char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - if (strcmp(default_encoding_c, "ascii") == 0) { - __Pyx_sys_getdefaultencoding_not_ascii = 0; - } else { - char ascii_chars[128]; - int c; - for (c = 0; c < 128; c++) { - ascii_chars[c] = c; - } - __Pyx_sys_getdefaultencoding_not_ascii = 1; - ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); - if (!ascii_chars_u) goto bad; - ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); - if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { - PyErr_Format( - PyExc_ValueError, - "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", - default_encoding_c); - goto bad; - } - Py_DECREF(ascii_chars_u); - Py_DECREF(ascii_chars_b); - } - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - Py_XDECREF(ascii_chars_u); - Py_XDECREF(ascii_chars_b); - return -1; -} -#endif -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) -#else -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -static char* __PYX_DEFAULT_STRING_ENCODING; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c)); - if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; - strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - return -1; -} -#endif -#endif - - -/* Test for GCC > 2.95 */ -#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) - #define likely(x) __builtin_expect(!!(x), 1) - #define unlikely(x) __builtin_expect(!!(x), 0) -#else /* !__GNUC__ or GCC < 2.95 */ - #define likely(x) (x) - #define unlikely(x) (x) -#endif /* __GNUC__ */ -static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } - -static PyObject *__pyx_m = NULL; -static PyObject *__pyx_d; -static PyObject *__pyx_b; -static PyObject *__pyx_cython_runtime = NULL; -static PyObject *__pyx_empty_tuple; -static PyObject *__pyx_empty_bytes; -static PyObject *__pyx_empty_unicode; -static int __pyx_lineno; -static int __pyx_clineno = 0; -static const char * __pyx_cfilenm= __FILE__; -static const char *__pyx_filename; - - -static const char *__pyx_f[] = { - "src\\gevent\\_tracer.py", - "src\\gevent\\__tracer.pxd", -}; - -/*--- Type declarations ---*/ -struct __pyx_obj_6gevent_8__tracer_GreenletTracer; -struct __pyx_obj_6gevent_8__tracer__HubTracer; -struct __pyx_obj_6gevent_8__tracer_HubSwitchTracer; -struct __pyx_obj_6gevent_8__tracer_MaxSwitchTracer; - -/* "gevent/__tracer.pxd":15 - * - * - * cdef class GreenletTracer: # <<<<<<<<<<<<<< - * cpdef readonly object active_greenlet - * cpdef readonly object previous_trace_function - */ -struct __pyx_obj_6gevent_8__tracer_GreenletTracer { - PyObject_HEAD - struct __pyx_vtabstruct_6gevent_8__tracer_GreenletTracer *__pyx_vtab; - PyObject *active_greenlet; - PyObject *previous_trace_function; - Py_ssize_t greenlet_switch_counter; - int _killed; -}; - - -/* "gevent/__tracer.pxd":30 - * - * @cython.internal - * cdef class _HubTracer(GreenletTracer): # <<<<<<<<<<<<<< - * cpdef readonly object hub - * cpdef readonly double max_blocking_time - */ -struct __pyx_obj_6gevent_8__tracer__HubTracer { - struct __pyx_obj_6gevent_8__tracer_GreenletTracer __pyx_base; - PyObject *hub; - double max_blocking_time; -}; - - -/* "gevent/__tracer.pxd":35 - * - * - * cdef class HubSwitchTracer(_HubTracer): # <<<<<<<<<<<<<< - * cpdef readonly double last_entered_hub - * - */ -struct __pyx_obj_6gevent_8__tracer_HubSwitchTracer { - struct __pyx_obj_6gevent_8__tracer__HubTracer __pyx_base; - double last_entered_hub; -}; - - -/* "gevent/__tracer.pxd":38 - * cpdef readonly double last_entered_hub - * - * cdef class MaxSwitchTracer(_HubTracer): # <<<<<<<<<<<<<< - * cpdef readonly double max_blocking - * cpdef readonly double last_switch - */ -struct __pyx_obj_6gevent_8__tracer_MaxSwitchTracer { - struct __pyx_obj_6gevent_8__tracer__HubTracer __pyx_base; - double max_blocking; - double last_switch; -}; - - - -/* "src/gevent/_tracer.py":27 - * - * - * class GreenletTracer(object): # <<<<<<<<<<<<<< - * def __init__(self): - * # A counter, incremented by the greenlet trace function - */ - -struct __pyx_vtabstruct_6gevent_8__tracer_GreenletTracer { - PyObject *(*_trace)(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *, PyObject *, PyObject *, int __pyx_skip_dispatch); - PyObject *(*did_block_hub)(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *, PyObject *, int __pyx_skip_dispatch); - PyObject *(*kill)(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *, int __pyx_skip_dispatch); -}; -static struct __pyx_vtabstruct_6gevent_8__tracer_GreenletTracer *__pyx_vtabptr_6gevent_8__tracer_GreenletTracer; - - -/* "src/gevent/_tracer.py":122 - * - * - * class _HubTracer(GreenletTracer): # <<<<<<<<<<<<<< - * def __init__(self, hub, max_blocking_time): - * GreenletTracer.__init__(self) - */ - -struct __pyx_vtabstruct_6gevent_8__tracer__HubTracer { - struct __pyx_vtabstruct_6gevent_8__tracer_GreenletTracer __pyx_base; -}; -static struct __pyx_vtabstruct_6gevent_8__tracer__HubTracer *__pyx_vtabptr_6gevent_8__tracer__HubTracer; - - -/* "src/gevent/_tracer.py":133 - * - * - * class HubSwitchTracer(_HubTracer): # <<<<<<<<<<<<<< - * # A greenlet tracer that records the last time we switched *into* the hub. - * - */ - -struct __pyx_vtabstruct_6gevent_8__tracer_HubSwitchTracer { - struct __pyx_vtabstruct_6gevent_8__tracer__HubTracer __pyx_base; -}; -static struct __pyx_vtabstruct_6gevent_8__tracer_HubSwitchTracer *__pyx_vtabptr_6gevent_8__tracer_HubSwitchTracer; - - -/* "src/gevent/_tracer.py":150 - * - * - * class MaxSwitchTracer(_HubTracer): # <<<<<<<<<<<<<< - * # A greenlet tracer that records the maximum time between switches, - * # not including time spent in the hub. - */ - -struct __pyx_vtabstruct_6gevent_8__tracer_MaxSwitchTracer { - struct __pyx_vtabstruct_6gevent_8__tracer__HubTracer __pyx_base; -}; -static struct __pyx_vtabstruct_6gevent_8__tracer_MaxSwitchTracer *__pyx_vtabptr_6gevent_8__tracer_MaxSwitchTracer; - -/* --- Runtime support code (head) --- */ -/* Refnanny.proto */ -#ifndef CYTHON_REFNANNY - #define CYTHON_REFNANNY 0 -#endif -#if CYTHON_REFNANNY - typedef struct { - void (*INCREF)(void*, PyObject*, int); - void (*DECREF)(void*, PyObject*, int); - void (*GOTREF)(void*, PyObject*, int); - void (*GIVEREF)(void*, PyObject*, int); - void* (*SetupContext)(const char*, int, const char*); - void (*FinishContext)(void**); - } __Pyx_RefNannyAPIStruct; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); - #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; -#ifdef WITH_THREAD - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - if (acquire_gil) {\ - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - PyGILState_Release(__pyx_gilstate_save);\ - } else {\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - } -#else - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) -#endif - #define __Pyx_RefNannyFinishContext()\ - __Pyx_RefNanny->FinishContext(&__pyx_refnanny) - #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) - #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) - #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) - #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0) -#else - #define __Pyx_RefNannyDeclarations - #define __Pyx_RefNannySetupContext(name, acquire_gil) - #define __Pyx_RefNannyFinishContext() - #define __Pyx_INCREF(r) Py_INCREF(r) - #define __Pyx_DECREF(r) Py_DECREF(r) - #define __Pyx_GOTREF(r) - #define __Pyx_GIVEREF(r) - #define __Pyx_XINCREF(r) Py_XINCREF(r) - #define __Pyx_XDECREF(r) Py_XDECREF(r) - #define __Pyx_XGOTREF(r) - #define __Pyx_XGIVEREF(r) -#endif -#define __Pyx_XDECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_XDECREF(tmp);\ - } while (0) -#define __Pyx_DECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_DECREF(tmp);\ - } while (0) -#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) -#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) - -/* PyObjectGetAttrStr.proto */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) -#endif - -/* GetBuiltinName.proto */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name); - -/* RaiseArgTupleInvalid.proto */ -static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, - Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); - -/* KeywordStringCheck.proto */ -static int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); - -/* PyCFunctionFastCall.proto */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); -#else -#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) -#endif - -/* PyFunctionFastCall.proto */ -#if CYTHON_FAST_PYCALL -#define __Pyx_PyFunction_FastCall(func, args, nargs)\ - __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs); -#else -#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) -#endif -#endif - -/* PyObjectCall.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); -#else -#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) -#endif - -/* PyObjectCallMethO.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); -#endif - -/* PyObjectCallOneArg.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); - -/* PyObjectCallNoArg.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); -#else -#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL) -#endif - -/* IncludeStringH.proto */ -#include <string.h> - -/* BytesEquals.proto */ -static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); - -/* UnicodeEquals.proto */ -static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals); - -/* StrEquals.proto */ -#if PY_MAJOR_VERSION >= 3 -#define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals -#else -#define __Pyx_PyString_Equals __Pyx_PyBytes_Equals -#endif - -/* GetItemInt.proto */ -#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ - (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ - __Pyx_GetItemInt_Generic(o, to_py_func(i)))) -#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ - (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, - int wraparound, int boundscheck); -#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ - (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, - int wraparound, int boundscheck); -static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, - int is_list, int wraparound, int boundscheck); - -/* RaiseDoubleKeywords.proto */ -static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); - -/* ParseKeywords.proto */ -static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\ - PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\ - const char* function_name); - -/* ArgTypeTest.proto */ -#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\ - ((likely((Py_TYPE(obj) == type) | (none_allowed && (obj == Py_None)))) ? 1 :\ - __Pyx__ArgTypeTest(obj, type, name, exact)) -static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact); - -/* ListAppend.proto */ -#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS -static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { - PyListObject* L = (PyListObject*) list; - Py_ssize_t len = Py_SIZE(list); - if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) { - Py_INCREF(x); - PyList_SET_ITEM(list, len, x); - Py_SIZE(list) = len+1; - return 0; - } - return PyList_Append(list, x); -} -#else -#define __Pyx_PyList_Append(L,x) PyList_Append(L,x) -#endif - -/* ObjectGetItem.proto */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key); -#else -#define __Pyx_PyObject_GetItem(obj, key) PyObject_GetItem(obj, key) -#endif - -/* PyThreadStateGet.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; -#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; -#define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type -#else -#define __Pyx_PyThreadState_declare -#define __Pyx_PyThreadState_assign -#define __Pyx_PyErr_Occurred() PyErr_Occurred() -#endif - -/* SaveResetException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -#else -#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) -#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) -#endif - -/* PyErrExceptionMatches.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) -static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); -#else -#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) -#endif - -/* GetException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) -static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#else -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); -#endif - -/* StringJoin.proto */ -#if PY_MAJOR_VERSION < 3 -#define __Pyx_PyString_Join __Pyx_PyBytes_Join -#define __Pyx_PyBaseString_Join(s, v) (PyUnicode_CheckExact(s) ? PyUnicode_Join(s, v) : __Pyx_PyBytes_Join(s, v)) -#else -#define __Pyx_PyString_Join PyUnicode_Join -#define __Pyx_PyBaseString_Join PyUnicode_Join -#endif -#if CYTHON_COMPILING_IN_CPYTHON - #if PY_MAJOR_VERSION < 3 - #define __Pyx_PyBytes_Join _PyString_Join - #else - #define __Pyx_PyBytes_Join _PyBytes_Join - #endif -#else -static CYTHON_INLINE PyObject* __Pyx_PyBytes_Join(PyObject* sep, PyObject* values); -#endif - -/* ListExtend.proto */ -static CYTHON_INLINE int __Pyx_PyList_Extend(PyObject* L, PyObject* v) { -#if CYTHON_COMPILING_IN_CPYTHON - PyObject* none = _PyList_Extend((PyListObject*)L, v); - if (unlikely(!none)) - return -1; - Py_DECREF(none); - return 0; -#else - return PyList_SetSlice(L, PY_SSIZE_T_MAX, PY_SSIZE_T_MAX, v); -#endif -} - -/* PyObject_GenericGetAttrNoDict.proto */ -#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr -#endif - -/* PyObject_GenericGetAttr.proto */ -#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr -#endif - -/* SetVTable.proto */ -static int __Pyx_SetVtable(PyObject *dict, void *vtable); - -/* Import.proto */ -static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); - -/* ImportFrom.proto */ -static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); - -/* FetchCommonType.proto */ -static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); - -/* CythonFunction.proto */ -#define __Pyx_CyFunction_USED 1 -#define __Pyx_CYFUNCTION_STATICMETHOD 0x01 -#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 -#define __Pyx_CYFUNCTION_CCLASS 0x04 -#define __Pyx_CyFunction_GetClosure(f)\ - (((__pyx_CyFunctionObject *) (f))->func_closure) -#define __Pyx_CyFunction_GetClassObj(f)\ - (((__pyx_CyFunctionObject *) (f))->func_classobj) -#define __Pyx_CyFunction_Defaults(type, f)\ - ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) -#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ - ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) -typedef struct { - PyCFunctionObject func; -#if PY_VERSION_HEX < 0x030500A0 - PyObject *func_weakreflist; -#endif - PyObject *func_dict; - PyObject *func_name; - PyObject *func_qualname; - PyObject *func_doc; - PyObject *func_globals; - PyObject *func_code; - PyObject *func_closure; - PyObject *func_classobj; - void *defaults; - int defaults_pyobjects; - int flags; - PyObject *defaults_tuple; - PyObject *defaults_kwdict; - PyObject *(*defaults_getter)(PyObject *); - PyObject *func_annotations; -} __pyx_CyFunctionObject; -static PyTypeObject *__pyx_CyFunctionType = 0; -#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, globals, code)\ - __Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, globals, code) -static PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml, - int flags, PyObject* qualname, - PyObject *self, - PyObject *module, PyObject *globals, - PyObject* code); -static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, - size_t size, - int pyobjects); -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, - PyObject *tuple); -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, - PyObject *dict); -static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, - PyObject *dict); -static int __pyx_CyFunction_init(void); - -/* GetModuleGlobalName.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name); - -/* GetAttr.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *); - -/* Globals.proto */ -static PyObject* __Pyx_Globals(void); - -/* PyErrFetchRestore.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) -#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) -#else -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#endif -#else -#define __Pyx_PyErr_Clear() PyErr_Clear() -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) -#endif - -/* CLineInTraceback.proto */ -#ifdef CYTHON_CLINE_IN_TRACEBACK -#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) -#else -static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); -#endif - -/* CodeObjectCache.proto */ -typedef struct { - PyCodeObject* code_object; - int code_line; -} __Pyx_CodeObjectCacheEntry; -struct __Pyx_CodeObjectCache { - int count; - int max_count; - __Pyx_CodeObjectCacheEntry* entries; -}; -static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; -static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); -static PyCodeObject *__pyx_find_code_object(int code_line); -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); - -/* AddTraceback.proto */ -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename); - -/* CIntToPy.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); - -/* CIntFromPy.proto */ -static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); - -/* CIntFromPy.proto */ -static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); - -/* FastTypeChecks.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); -#else -#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) -#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) -#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) -#endif -#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) - -/* CheckBinaryVersion.proto */ -static int __Pyx_check_binary_version(void); - -/* PyObjectSetAttrStr.proto */ -#if CYTHON_USE_TYPE_SLOTS -#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o, n, NULL) -static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value); -#else -#define __Pyx_PyObject_DelAttrStr(o,n) PyObject_DelAttr(o,n) -#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v) -#endif - -/* VoidPtrExport.proto */ -static int __Pyx_ExportVoidPtr(PyObject *name, void *p, const char *sig); - -/* InitStrings.proto */ -static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); - -static PyObject *__pyx_f_6gevent_8__tracer_14GreenletTracer_kill(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_8__tracer_14GreenletTracer__trace(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *__pyx_v_self, PyObject *__pyx_v_event, PyObject *__pyx_v_args, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_8__tracer_14GreenletTracer_did_block_hub(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *__pyx_v_self, PyObject *__pyx_v_hub, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_8__tracer_10_HubTracer_kill(struct __pyx_obj_6gevent_8__tracer__HubTracer *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_8__tracer_15HubSwitchTracer__trace(struct __pyx_obj_6gevent_8__tracer_HubSwitchTracer *__pyx_v_self, PyObject *__pyx_v_event, PyObject *__pyx_v_args, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_8__tracer_15HubSwitchTracer_did_block_hub(struct __pyx_obj_6gevent_8__tracer_HubSwitchTracer *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_hub, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_8__tracer_15MaxSwitchTracer__trace(struct __pyx_obj_6gevent_8__tracer_MaxSwitchTracer *__pyx_v_self, PyObject *__pyx_v_event, PyObject *__pyx_v_args, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_8__tracer_15MaxSwitchTracer_did_block_hub(struct __pyx_obj_6gevent_8__tracer_MaxSwitchTracer *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_hub, int __pyx_skip_dispatch); /* proto*/ - -/* Module declarations from 'cython' */ - -/* Module declarations from 'gevent.__tracer' */ -static PyTypeObject *__pyx_ptype_6gevent_8__tracer_GreenletTracer = 0; -static PyTypeObject *__pyx_ptype_6gevent_8__tracer__HubTracer = 0; -static PyTypeObject *__pyx_ptype_6gevent_8__tracer_HubSwitchTracer = 0; -static PyTypeObject *__pyx_ptype_6gevent_8__tracer_MaxSwitchTracer = 0; -static PyObject *__pyx_v_6gevent_8__tracer_sys = 0; -static PyObject *__pyx_v_6gevent_8__tracer_traceback = 0; -static PyObject *__pyx_v_6gevent_8__tracer_settrace = 0; -static PyObject *__pyx_v_6gevent_8__tracer_getcurrent = 0; -static PyObject *__pyx_v_6gevent_8__tracer_format_run_info = 0; -static PyObject *__pyx_v_6gevent_8__tracer_perf_counter = 0; -static PyObject *__pyx_v_6gevent_8__tracer_gmctime = 0; -#define __Pyx_MODULE_NAME "gevent.__tracer" -extern int __pyx_module_is_main_gevent____tracer; -int __pyx_module_is_main_gevent____tracer = 0; - -/* Implementation of 'gevent.__tracer' */ -static PyObject *__pyx_builtin_KeyError; -static PyObject *__pyx_builtin_hex; -#if PY_MAJOR_VERSION >= 3 -static const char __pyx_k_[] = "================================================================================"; -#endif -#if PY_MAJOR_VERSION < 3 -static const char __pyx_k_b[] = "b'================================================================================'"; -#endif -static const char __pyx_k__2[] = ""; -static const char __pyx_k_all[] = "__all__"; -static const char __pyx_k_hex[] = "hex"; -static const char __pyx_k_hub[] = "hub"; -static const char __pyx_k_sys[] = "sys"; -static const char __pyx_k_Info[] = "Info:"; -static const char __pyx_k_args[] = "args"; -static const char __pyx_k_init[] = "__init__"; -static const char __pyx_k_join[] = "join"; -static const char __pyx_k_kill[] = "kill"; -static const char __pyx_k_main[] = "__main__"; -static const char __pyx_k_self[] = "self"; -static const char __pyx_k_test[] = "__test__"; -static const char __pyx_k_event[] = "event"; -static const char __pyx_k_frame[] = "frame"; -static const char __pyx_k_stack[] = "stack"; -static const char __pyx_k_throw[] = "throw"; -static const char __pyx_k_trace[] = "_trace"; -static const char __pyx_k_import[] = "__import__"; -static const char __pyx_k_report[] = "report"; -static const char __pyx_k_switch[] = "switch"; -static const char __pyx_k_gmctime[] = "gmctime"; -static const char __pyx_k_KeyError[] = "KeyError"; -static const char __pyx_k_greenlet[] = "greenlet"; -static const char __pyx_k_pyx_capi[] = "__pyx_capi__"; -static const char __pyx_k_settrace[] = "settrace"; -static const char __pyx_k_traceback[] = "traceback"; -static const char __pyx_k_getcurrent[] = "getcurrent"; -static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__"; -static const char __pyx_k_gevent_util[] = "gevent.util"; -static const char __pyx_k_format_stack[] = "format_stack"; -static const char __pyx_k_gevent__util[] = "gevent._util"; -static const char __pyx_k_perf_counter[] = "perf_counter"; -static const char __pyx_k_thread_ident[] = "thread_ident"; -static const char __pyx_k_Reported_by_s[] = " Reported by %s"; -static const char __pyx_k_did_block_hub[] = "did_block_hub"; -static const char __pyx_k_format_kwargs[] = "format_kwargs"; -static const char __pyx_k_GreenletTracer[] = "GreenletTracer"; -static const char __pyx_k_HubTracer_kill[] = "_HubTracer.kill"; -static const char __pyx_k_current_frames[] = "_current_frames"; -static const char __pyx_k_gevent__compat[] = "gevent._compat"; -static const char __pyx_k_import_c_accel[] = "import_c_accel"; -static const char __pyx_k_HubSwitchTracer[] = "HubSwitchTracer"; -static const char __pyx_k_MaxSwitchTracer[] = "MaxSwitchTracer"; -static const char __pyx_k_active_greenlet[] = "active_greenlet"; -static const char __pyx_k_format_run_info[] = "format_run_info"; -static const char __pyx_k_gevent___tracer[] = "gevent.__tracer"; -static const char __pyx_k_max_blocking_time[] = "max_blocking_time"; -static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; -static const char __pyx_k_GreenletTracer_kill[] = "GreenletTracer.kill"; -static const char __pyx_k_did_block_hub_report[] = "did_block_hub_report"; -static const char __pyx_k_GreenletTracer__trace[] = "GreenletTracer._trace"; -static const char __pyx_k_src_gevent__tracer_py[] = "src\\gevent\\_tracer.py"; -static const char __pyx_k_HubSwitchTracer__trace[] = "HubSwitchTracer._trace"; -static const char __pyx_k_MaxSwitchTracer__trace[] = "MaxSwitchTracer._trace"; -static const char __pyx_k_GreenletTracer_did_block_hub[] = "GreenletTracer.did_block_hub"; -static const char __pyx_k_Blocked_Stack_for_thread_id_s[] = "Blocked Stack (for thread id %s):"; -static const char __pyx_k_HubSwitchTracer_did_block_hub[] = "HubSwitchTracer.did_block_hub"; -static const char __pyx_k_MaxSwitchTracer_did_block_hub[] = "MaxSwitchTracer.did_block_hub"; -static const char __pyx_k_Unknown_No_thread_found_for_hub[] = "Unknown: No thread found for hub %r\n"; -static const char __pyx_k_s_Greenlet_s_appears_to_be_bloc[] = "\n%s : Greenlet %s appears to be blocked"; -static const char __pyx_k_GreenletTracer_did_block_hub_rep[] = "GreenletTracer.did_block_hub_report"; -static const char __pyx_k_GreenletTracer_ignore_current_gr[] = "GreenletTracer.ignore_current_greenlet_blocking"; -static const char __pyx_k_GreenletTracer_monitor_current_g[] = "GreenletTracer.monitor_current_greenlet_blocking"; -static const char __pyx_k_ignore_current_greenlet_blocking[] = "ignore_current_greenlet_blocking"; -static const char __pyx_k_monitor_current_greenlet_blockin[] = "monitor_current_greenlet_blocking"; -static PyObject *__pyx_kp_s_Blocked_Stack_for_thread_id_s; -static PyObject *__pyx_n_s_GreenletTracer; -static PyObject *__pyx_n_s_GreenletTracer__trace; -static PyObject *__pyx_n_s_GreenletTracer_did_block_hub; -static PyObject *__pyx_n_s_GreenletTracer_did_block_hub_rep; -static PyObject *__pyx_n_s_GreenletTracer_ignore_current_gr; -static PyObject *__pyx_n_s_GreenletTracer_kill; -static PyObject *__pyx_n_s_GreenletTracer_monitor_current_g; -static PyObject *__pyx_n_s_HubSwitchTracer; -static PyObject *__pyx_n_s_HubSwitchTracer__trace; -static PyObject *__pyx_n_s_HubSwitchTracer_did_block_hub; -static PyObject *__pyx_n_s_HubTracer_kill; -static PyObject *__pyx_kp_s_Info; -static PyObject *__pyx_n_s_KeyError; -static PyObject *__pyx_n_s_MaxSwitchTracer; -static PyObject *__pyx_n_s_MaxSwitchTracer__trace; -static PyObject *__pyx_n_s_MaxSwitchTracer_did_block_hub; -static PyObject *__pyx_kp_s_Reported_by_s; -static PyObject *__pyx_kp_s_Unknown_No_thread_found_for_hub; -static PyObject *__pyx_kp_s__2; -static PyObject *__pyx_n_s_active_greenlet; -static PyObject *__pyx_n_s_all; -static PyObject *__pyx_n_s_args; -static PyObject *__pyx_kp_s_b; -static PyObject *__pyx_n_s_cline_in_traceback; -static PyObject *__pyx_n_s_current_frames; -static PyObject *__pyx_n_s_did_block_hub; -static PyObject *__pyx_n_s_did_block_hub_report; -static PyObject *__pyx_n_s_event; -static PyObject *__pyx_n_s_format_kwargs; -static PyObject *__pyx_n_s_format_run_info; -static PyObject *__pyx_n_s_format_stack; -static PyObject *__pyx_n_s_frame; -static PyObject *__pyx_n_s_getcurrent; -static PyObject *__pyx_n_s_gevent___tracer; -static PyObject *__pyx_n_s_gevent__compat; -static PyObject *__pyx_n_s_gevent__util; -static PyObject *__pyx_n_s_gevent_util; -static PyObject *__pyx_n_s_gmctime; -static PyObject *__pyx_n_s_greenlet; -static PyObject *__pyx_n_s_hex; -static PyObject *__pyx_n_s_hub; -static PyObject *__pyx_n_s_ignore_current_greenlet_blocking; -static PyObject *__pyx_n_s_import; -static PyObject *__pyx_n_s_import_c_accel; -static PyObject *__pyx_n_s_init; -static PyObject *__pyx_n_s_join; -static PyObject *__pyx_n_s_kill; -static PyObject *__pyx_n_s_main; -static PyObject *__pyx_n_s_max_blocking_time; -static PyObject *__pyx_n_s_monitor_current_greenlet_blockin; -static PyObject *__pyx_n_s_perf_counter; -static PyObject *__pyx_n_s_pyx_capi; -static PyObject *__pyx_n_s_pyx_vtable; -static PyObject *__pyx_n_s_report; -static PyObject *__pyx_kp_s_s_Greenlet_s_appears_to_be_bloc; -static PyObject *__pyx_n_s_self; -static PyObject *__pyx_n_s_settrace; -static PyObject *__pyx_kp_s_src_gevent__tracer_py; -static PyObject *__pyx_n_s_stack; -static PyObject *__pyx_n_s_switch; -static PyObject *__pyx_n_s_sys; -static PyObject *__pyx_n_s_test; -static PyObject *__pyx_n_s_thread_ident; -static PyObject *__pyx_n_s_throw; -static PyObject *__pyx_n_s_trace; -static PyObject *__pyx_n_s_traceback; -static int __pyx_pf_6gevent_8__tracer_14GreenletTracer___init__(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_8__tracer_14GreenletTracer_2kill(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_8__tracer_14GreenletTracer_4_trace(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *__pyx_v_self, PyObject *__pyx_v_event, PyObject *__pyx_v_args); /* proto */ -static PyObject *__pyx_pf_6gevent_8__tracer_14GreenletTracer_6__call__(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *__pyx_v_self, PyObject *__pyx_v_event, PyObject *__pyx_v_args); /* proto */ -static PyObject *__pyx_pf_6gevent_8__tracer_14GreenletTracer_8did_block_hub(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *__pyx_v_self, PyObject *__pyx_v_hub); /* proto */ -static PyObject *__pyx_pf_6gevent_8__tracer_14GreenletTracer_10ignore_current_greenlet_blocking(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_8__tracer_14GreenletTracer_12monitor_current_greenlet_blocking(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_8__tracer_14GreenletTracer_14did_block_hub_report(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *__pyx_v_self, PyObject *__pyx_v_hub, PyObject *__pyx_v_active_greenlet, PyObject *__pyx_v_format_kwargs); /* proto */ -static PyObject *__pyx_pf_6gevent_8__tracer_14GreenletTracer_15active_greenlet___get__(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_8__tracer_14GreenletTracer_23previous_trace_function___get__(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_8__tracer_14GreenletTracer_23greenlet_switch_counter___get__(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_8__tracer_10_HubTracer___init__(struct __pyx_obj_6gevent_8__tracer__HubTracer *__pyx_v_self, PyObject *__pyx_v_hub, PyObject *__pyx_v_max_blocking_time); /* proto */ -static PyObject *__pyx_pf_6gevent_8__tracer_10_HubTracer_2kill(struct __pyx_obj_6gevent_8__tracer__HubTracer *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_8__tracer_10_HubTracer_3hub___get__(struct __pyx_obj_6gevent_8__tracer__HubTracer *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_8__tracer_10_HubTracer_17max_blocking_time___get__(struct __pyx_obj_6gevent_8__tracer__HubTracer *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_8__tracer_15HubSwitchTracer___init__(struct __pyx_obj_6gevent_8__tracer_HubSwitchTracer *__pyx_v_self, PyObject *__pyx_v_hub, PyObject *__pyx_v_max_blocking_time); /* proto */ -static PyObject *__pyx_pf_6gevent_8__tracer_15HubSwitchTracer_2_trace(struct __pyx_obj_6gevent_8__tracer_HubSwitchTracer *__pyx_v_self, PyObject *__pyx_v_event, PyObject *__pyx_v_args); /* proto */ -static PyObject *__pyx_pf_6gevent_8__tracer_15HubSwitchTracer_4did_block_hub(struct __pyx_obj_6gevent_8__tracer_HubSwitchTracer *__pyx_v_self, PyObject *__pyx_v_hub); /* proto */ -static PyObject *__pyx_pf_6gevent_8__tracer_15HubSwitchTracer_16last_entered_hub___get__(struct __pyx_obj_6gevent_8__tracer_HubSwitchTracer *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_8__tracer_15MaxSwitchTracer___init__(struct __pyx_obj_6gevent_8__tracer_MaxSwitchTracer *__pyx_v_self, PyObject *__pyx_v_hub, PyObject *__pyx_v_max_blocking_time); /* proto */ -static PyObject *__pyx_pf_6gevent_8__tracer_15MaxSwitchTracer_2_trace(struct __pyx_obj_6gevent_8__tracer_MaxSwitchTracer *__pyx_v_self, PyObject *__pyx_v_event, PyObject *__pyx_v_args); /* proto */ -static PyObject *__pyx_pf_6gevent_8__tracer_15MaxSwitchTracer_4did_block_hub(struct __pyx_obj_6gevent_8__tracer_MaxSwitchTracer *__pyx_v_self, PyObject *__pyx_v_hub); /* proto */ -static PyObject *__pyx_pf_6gevent_8__tracer_15MaxSwitchTracer_12max_blocking___get__(struct __pyx_obj_6gevent_8__tracer_MaxSwitchTracer *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_8__tracer_15MaxSwitchTracer_11last_switch___get__(struct __pyx_obj_6gevent_8__tracer_MaxSwitchTracer *__pyx_v_self); /* proto */ -static PyObject *__pyx_tp_new_6gevent_8__tracer_GreenletTracer(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_8__tracer__HubTracer(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_8__tracer_HubSwitchTracer(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_8__tracer_MaxSwitchTracer(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tuple__3; -static PyObject *__pyx_tuple__5; -static PyObject *__pyx_tuple__7; -static PyObject *__pyx_tuple__9; -static PyObject *__pyx_tuple__11; -static PyObject *__pyx_tuple__13; -static PyObject *__pyx_tuple__15; -static PyObject *__pyx_tuple__17; -static PyObject *__pyx_tuple__19; -static PyObject *__pyx_tuple__21; -static PyObject *__pyx_tuple__23; -static PyObject *__pyx_codeobj__4; -static PyObject *__pyx_codeobj__6; -static PyObject *__pyx_codeobj__8; -static PyObject *__pyx_codeobj__10; -static PyObject *__pyx_codeobj__12; -static PyObject *__pyx_codeobj__14; -static PyObject *__pyx_codeobj__16; -static PyObject *__pyx_codeobj__18; -static PyObject *__pyx_codeobj__20; -static PyObject *__pyx_codeobj__22; -static PyObject *__pyx_codeobj__24; -/* Late includes */ - -/* "src/gevent/_tracer.py":28 - * - * class GreenletTracer(object): - * def __init__(self): # <<<<<<<<<<<<<< - * # A counter, incremented by the greenlet trace function - * # we install on every greenlet switch. This is reset when the - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_8__tracer_14GreenletTracer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_8__tracer_14GreenletTracer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;} - if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1; - __pyx_r = __pyx_pf_6gevent_8__tracer_14GreenletTracer___init__(((struct __pyx_obj_6gevent_8__tracer_GreenletTracer *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_8__tracer_14GreenletTracer___init__(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *__pyx_v_self) { - PyObject *__pyx_v_prev_trace = NULL; - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("__init__", 0); - - /* "src/gevent/_tracer.py":33 - * # periodic monitoring thread runs. - * - * self.greenlet_switch_counter = 0 # <<<<<<<<<<<<<< - * - * # The greenlet last switched to. - */ - __pyx_v_self->greenlet_switch_counter = 0; - - /* "src/gevent/_tracer.py":36 - * - * # The greenlet last switched to. - * self.active_greenlet = None # <<<<<<<<<<<<<< - * - * # The trace function that was previously installed, - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->active_greenlet); - __Pyx_DECREF(__pyx_v_self->active_greenlet); - __pyx_v_self->active_greenlet = Py_None; - - /* "src/gevent/_tracer.py":43 - * # calling a bound method (at least when compiled with cython) - * # even when it redirects to another function. - * prev_trace = settrace(self) # <<<<<<<<<<<<<< - * - * self.previous_trace_function = prev_trace - */ - __Pyx_INCREF(__pyx_v_6gevent_8__tracer_settrace); - __pyx_t_2 = __pyx_v_6gevent_8__tracer_settrace; __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 43, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_self)}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 43, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_self)}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 43, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 43, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)__pyx_v_self)); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 43, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_prev_trace = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/_tracer.py":45 - * prev_trace = settrace(self) - * - * self.previous_trace_function = prev_trace # <<<<<<<<<<<<<< - * - * self._killed = False - */ - __Pyx_INCREF(__pyx_v_prev_trace); - __Pyx_GIVEREF(__pyx_v_prev_trace); - __Pyx_GOTREF(__pyx_v_self->previous_trace_function); - __Pyx_DECREF(__pyx_v_self->previous_trace_function); - __pyx_v_self->previous_trace_function = __pyx_v_prev_trace; - - /* "src/gevent/_tracer.py":47 - * self.previous_trace_function = prev_trace - * - * self._killed = False # <<<<<<<<<<<<<< - * - * def kill(self): - */ - __pyx_v_self->_killed = 0; - - /* "src/gevent/_tracer.py":28 - * - * class GreenletTracer(object): - * def __init__(self): # <<<<<<<<<<<<<< - * # A counter, incremented by the greenlet trace function - * # we install on every greenlet switch. This is reset when the - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent.__tracer.GreenletTracer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_prev_trace); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_tracer.py":49 - * self._killed = False - * - * def kill(self): # <<<<<<<<<<<<<< - * # Must be called in the monitored thread. - * if not self._killed: - */ - -static PyObject *__pyx_pw_6gevent_8__tracer_14GreenletTracer_3kill(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_f_6gevent_8__tracer_14GreenletTracer_kill(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *__pyx_v_self, int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - __Pyx_RefNannySetupContext("kill", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_kill); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 49, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_8__tracer_14GreenletTracer_3kill)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 49, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 49, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/_tracer.py":51 - * def kill(self): - * # Must be called in the monitored thread. - * if not self._killed: # <<<<<<<<<<<<<< - * self._killed = True - * settrace(self.previous_trace_function) - */ - __pyx_t_5 = ((!(__pyx_v_self->_killed != 0)) != 0); - if (__pyx_t_5) { - - /* "src/gevent/_tracer.py":52 - * # Must be called in the monitored thread. - * if not self._killed: - * self._killed = True # <<<<<<<<<<<<<< - * settrace(self.previous_trace_function) - * self.previous_trace_function = None - */ - __pyx_v_self->_killed = 1; - - /* "src/gevent/_tracer.py":53 - * if not self._killed: - * self._killed = True - * settrace(self.previous_trace_function) # <<<<<<<<<<<<<< - * self.previous_trace_function = None - * - */ - __Pyx_INCREF(__pyx_v_6gevent_8__tracer_settrace); - __pyx_t_2 = __pyx_v_6gevent_8__tracer_settrace; __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_self->previous_trace_function); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 53, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_self->previous_trace_function}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 53, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_self->previous_trace_function}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 53, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 53, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(__pyx_v_self->previous_trace_function); - __Pyx_GIVEREF(__pyx_v_self->previous_trace_function); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_self->previous_trace_function); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 53, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_tracer.py":54 - * self._killed = True - * settrace(self.previous_trace_function) - * self.previous_trace_function = None # <<<<<<<<<<<<<< - * - * def _trace(self, event, args): - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->previous_trace_function); - __Pyx_DECREF(__pyx_v_self->previous_trace_function); - __pyx_v_self->previous_trace_function = Py_None; - - /* "src/gevent/_tracer.py":51 - * def kill(self): - * # Must be called in the monitored thread. - * if not self._killed: # <<<<<<<<<<<<<< - * self._killed = True - * settrace(self.previous_trace_function) - */ - } - - /* "src/gevent/_tracer.py":49 - * self._killed = False - * - * def kill(self): # <<<<<<<<<<<<<< - * # Must be called in the monitored thread. - * if not self._killed: - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent.__tracer.GreenletTracer.kill", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__tracer_14GreenletTracer_3kill(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_8__tracer_14GreenletTracer_2kill[] = "GreenletTracer.kill(self)"; -static PyMethodDef __pyx_mdef_6gevent_8__tracer_14GreenletTracer_3kill = {"kill", (PyCFunction)__pyx_pw_6gevent_8__tracer_14GreenletTracer_3kill, METH_NOARGS, __pyx_doc_6gevent_8__tracer_14GreenletTracer_2kill}; -static PyObject *__pyx_pw_6gevent_8__tracer_14GreenletTracer_3kill(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("kill (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8__tracer_14GreenletTracer_2kill(((struct __pyx_obj_6gevent_8__tracer_GreenletTracer *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8__tracer_14GreenletTracer_2kill(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("kill", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_8__tracer_14GreenletTracer_kill(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 49, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__tracer.GreenletTracer.kill", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_tracer.py":56 - * self.previous_trace_function = None - * - * def _trace(self, event, args): # <<<<<<<<<<<<<< - * # This function runs in the thread we are monitoring. - * self.greenlet_switch_counter += 1 - */ - -static PyObject *__pyx_pw_6gevent_8__tracer_14GreenletTracer_5_trace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_f_6gevent_8__tracer_14GreenletTracer__trace(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *__pyx_v_self, PyObject *__pyx_v_event, PyObject *__pyx_v_args, int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - int __pyx_t_8; - int __pyx_t_9; - int __pyx_t_10; - __Pyx_RefNannySetupContext("_trace", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_8__tracer_14GreenletTracer_5_trace)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - __pyx_t_5 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_5 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_event, __pyx_v_args}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_event, __pyx_v_args}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (__pyx_t_4) { - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; - } - __Pyx_INCREF(__pyx_v_event); - __Pyx_GIVEREF(__pyx_v_event); - PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_event); - __Pyx_INCREF(__pyx_v_args); - __Pyx_GIVEREF(__pyx_v_args); - PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_args); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/_tracer.py":58 - * def _trace(self, event, args): - * # This function runs in the thread we are monitoring. - * self.greenlet_switch_counter += 1 # <<<<<<<<<<<<<< - * if event in ('switch', 'throw'): - * # args is (origin, target). This is the only defined - */ - __pyx_v_self->greenlet_switch_counter = (__pyx_v_self->greenlet_switch_counter + 1); - - /* "src/gevent/_tracer.py":59 - * # This function runs in the thread we are monitoring. - * self.greenlet_switch_counter += 1 - * if event in ('switch', 'throw'): # <<<<<<<<<<<<<< - * # args is (origin, target). This is the only defined - * # case - */ - __Pyx_INCREF(__pyx_v_event); - __pyx_t_7 = __pyx_v_event; - __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_t_7, __pyx_n_s_switch, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 59, __pyx_L1_error) - __pyx_t_10 = (__pyx_t_9 != 0); - if (!__pyx_t_10) { - } else { - __pyx_t_8 = __pyx_t_10; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_10 = (__Pyx_PyString_Equals(__pyx_t_7, __pyx_n_s_throw, Py_EQ)); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 59, __pyx_L1_error) - __pyx_t_9 = (__pyx_t_10 != 0); - __pyx_t_8 = __pyx_t_9; - __pyx_L4_bool_binop_done:; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_9 = (__pyx_t_8 != 0); - if (__pyx_t_9) { - - /* "src/gevent/_tracer.py":62 - * # args is (origin, target). This is the only defined - * # case - * self.active_greenlet = args[1] # <<<<<<<<<<<<<< - * else: - * self.active_greenlet = None - */ - if (unlikely(__pyx_v_args == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 62, __pyx_L1_error) - } - __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 62, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->active_greenlet); - __Pyx_DECREF(__pyx_v_self->active_greenlet); - __pyx_v_self->active_greenlet = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/_tracer.py":59 - * # This function runs in the thread we are monitoring. - * self.greenlet_switch_counter += 1 - * if event in ('switch', 'throw'): # <<<<<<<<<<<<<< - * # args is (origin, target). This is the only defined - * # case - */ - goto __pyx_L3; - } - - /* "src/gevent/_tracer.py":64 - * self.active_greenlet = args[1] - * else: - * self.active_greenlet = None # <<<<<<<<<<<<<< - * if self.previous_trace_function is not None: - * self.previous_trace_function(event, args) - */ - /*else*/ { - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->active_greenlet); - __Pyx_DECREF(__pyx_v_self->active_greenlet); - __pyx_v_self->active_greenlet = Py_None; - } - __pyx_L3:; - - /* "src/gevent/_tracer.py":65 - * else: - * self.active_greenlet = None - * if self.previous_trace_function is not None: # <<<<<<<<<<<<<< - * self.previous_trace_function(event, args) - * - */ - __pyx_t_9 = (__pyx_v_self->previous_trace_function != Py_None); - __pyx_t_8 = (__pyx_t_9 != 0); - if (__pyx_t_8) { - - /* "src/gevent/_tracer.py":66 - * self.active_greenlet = None - * if self.previous_trace_function is not None: - * self.previous_trace_function(event, args) # <<<<<<<<<<<<<< - * - * def __call__(self, event, args): - */ - __Pyx_INCREF(__pyx_v_self->previous_trace_function); - __pyx_t_2 = __pyx_v_self->previous_trace_function; __pyx_t_3 = NULL; - __pyx_t_5 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_5 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_event, __pyx_v_args}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 66, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_event, __pyx_v_args}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 66, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 66, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (__pyx_t_3) { - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL; - } - __Pyx_INCREF(__pyx_v_event); - __Pyx_GIVEREF(__pyx_v_event); - PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_event); - __Pyx_INCREF(__pyx_v_args); - __Pyx_GIVEREF(__pyx_v_args); - PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_args); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 66, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_tracer.py":65 - * else: - * self.active_greenlet = None - * if self.previous_trace_function is not None: # <<<<<<<<<<<<<< - * self.previous_trace_function(event, args) - * - */ - } - - /* "src/gevent/_tracer.py":56 - * self.previous_trace_function = None - * - * def _trace(self, event, args): # <<<<<<<<<<<<<< - * # This function runs in the thread we are monitoring. - * self.greenlet_switch_counter += 1 - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("gevent.__tracer.GreenletTracer._trace", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__tracer_14GreenletTracer_5_trace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_8__tracer_14GreenletTracer_4_trace[] = "GreenletTracer._trace(self, str event, tuple args)"; -static PyMethodDef __pyx_mdef_6gevent_8__tracer_14GreenletTracer_5_trace = {"_trace", (PyCFunction)__pyx_pw_6gevent_8__tracer_14GreenletTracer_5_trace, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_8__tracer_14GreenletTracer_4_trace}; -static PyObject *__pyx_pw_6gevent_8__tracer_14GreenletTracer_5_trace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_event = 0; - PyObject *__pyx_v_args = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_trace (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_event,&__pyx_n_s_args,0}; - PyObject* values[2] = {0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_event)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_args)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("_trace", 1, 2, 2, 1); __PYX_ERR(0, 56, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_trace") < 0)) __PYX_ERR(0, 56, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - } - __pyx_v_event = ((PyObject*)values[0]); - __pyx_v_args = ((PyObject*)values[1]); - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("_trace", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 56, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.__tracer.GreenletTracer._trace", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_event), (&PyString_Type), 1, "event", 1))) __PYX_ERR(0, 56, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_args), (&PyTuple_Type), 1, "args", 1))) __PYX_ERR(0, 56, __pyx_L1_error) - __pyx_r = __pyx_pf_6gevent_8__tracer_14GreenletTracer_4_trace(((struct __pyx_obj_6gevent_8__tracer_GreenletTracer *)__pyx_v_self), __pyx_v_event, __pyx_v_args); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = NULL; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8__tracer_14GreenletTracer_4_trace(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *__pyx_v_self, PyObject *__pyx_v_event, PyObject *__pyx_v_args) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_trace", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_8__tracer_14GreenletTracer__trace(__pyx_v_self, __pyx_v_event, __pyx_v_args, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__tracer.GreenletTracer._trace", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_tracer.py":68 - * self.previous_trace_function(event, args) - * - * def __call__(self, event, args): # <<<<<<<<<<<<<< - * return self._trace(event, args) - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__tracer_14GreenletTracer_7__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_8__tracer_14GreenletTracer_7__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_event = 0; - PyObject *__pyx_v_args = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__call__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_event,&__pyx_n_s_args,0}; - PyObject* values[2] = {0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_event)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_args)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__call__", 1, 2, 2, 1); __PYX_ERR(0, 68, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__call__") < 0)) __PYX_ERR(0, 68, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - } - __pyx_v_event = values[0]; - __pyx_v_args = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__call__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 68, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.__tracer.GreenletTracer.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_8__tracer_14GreenletTracer_6__call__(((struct __pyx_obj_6gevent_8__tracer_GreenletTracer *)__pyx_v_self), __pyx_v_event, __pyx_v_args); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8__tracer_14GreenletTracer_6__call__(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *__pyx_v_self, PyObject *__pyx_v_event, PyObject *__pyx_v_args) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__call__", 0); - - /* "src/gevent/_tracer.py":69 - * - * def __call__(self, event, args): - * return self._trace(event, args) # <<<<<<<<<<<<<< - * - * def did_block_hub(self, hub): - */ - __Pyx_XDECREF(__pyx_r); - if (!(likely(PyString_CheckExact(__pyx_v_event))||((__pyx_v_event) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_v_event)->tp_name), 0))) __PYX_ERR(0, 69, __pyx_L1_error) - if (!(likely(PyTuple_CheckExact(__pyx_v_args))||((__pyx_v_args) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_args)->tp_name), 0))) __PYX_ERR(0, 69, __pyx_L1_error) - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_8__tracer_GreenletTracer *)__pyx_v_self->__pyx_vtab)->_trace(__pyx_v_self, ((PyObject*)__pyx_v_event), ((PyObject*)__pyx_v_args), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/_tracer.py":68 - * self.previous_trace_function(event, args) - * - * def __call__(self, event, args): # <<<<<<<<<<<<<< - * return self._trace(event, args) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__tracer.GreenletTracer.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_tracer.py":71 - * return self._trace(event, args) - * - * def did_block_hub(self, hub): # <<<<<<<<<<<<<< - * # Check to see if we have blocked since the last call to this - * # method. Returns a true value if we blocked (not in the hub), - */ - -static PyObject *__pyx_pw_6gevent_8__tracer_14GreenletTracer_9did_block_hub(PyObject *__pyx_v_self, PyObject *__pyx_v_hub); /*proto*/ -static PyObject *__pyx_f_6gevent_8__tracer_14GreenletTracer_did_block_hub(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *__pyx_v_self, PyObject *__pyx_v_hub, int __pyx_skip_dispatch) { - int __pyx_v_did_switch; - PyObject *__pyx_v_active_greenlet = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - int __pyx_t_7; - int __pyx_t_8; - __Pyx_RefNannySetupContext("did_block_hub", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_did_block_hub); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 71, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_8__tracer_14GreenletTracer_9did_block_hub)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (!__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_hub); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 71, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_hub}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 71, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_hub}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 71, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 71, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_INCREF(__pyx_v_hub); - __Pyx_GIVEREF(__pyx_v_hub); - PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_hub); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 71, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/_tracer.py":82 - * # annoying false positives. - * - * active_greenlet = self.active_greenlet # <<<<<<<<<<<<<< - * did_switch = self.greenlet_switch_counter != 0 - * self.greenlet_switch_counter = 0 - */ - __pyx_t_1 = __pyx_v_self->active_greenlet; - __Pyx_INCREF(__pyx_t_1); - __pyx_v_active_greenlet = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/_tracer.py":83 - * - * active_greenlet = self.active_greenlet - * did_switch = self.greenlet_switch_counter != 0 # <<<<<<<<<<<<<< - * self.greenlet_switch_counter = 0 - * - */ - __pyx_v_did_switch = (__pyx_v_self->greenlet_switch_counter != 0); - - /* "src/gevent/_tracer.py":84 - * active_greenlet = self.active_greenlet - * did_switch = self.greenlet_switch_counter != 0 - * self.greenlet_switch_counter = 0 # <<<<<<<<<<<<<< - * - * if did_switch or active_greenlet is None or active_greenlet is hub: - */ - __pyx_v_self->greenlet_switch_counter = 0; - - /* "src/gevent/_tracer.py":86 - * self.greenlet_switch_counter = 0 - * - * if did_switch or active_greenlet is None or active_greenlet is hub: # <<<<<<<<<<<<<< - * # Either we switched, or nothing is running (we got a - * # trace event we don't know about or were requested to - */ - __pyx_t_7 = (__pyx_v_did_switch != 0); - if (!__pyx_t_7) { - } else { - __pyx_t_6 = __pyx_t_7; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_7 = (__pyx_v_active_greenlet == Py_None); - __pyx_t_8 = (__pyx_t_7 != 0); - if (!__pyx_t_8) { - } else { - __pyx_t_6 = __pyx_t_8; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_8 = (__pyx_v_active_greenlet == __pyx_v_hub); - __pyx_t_7 = (__pyx_t_8 != 0); - __pyx_t_6 = __pyx_t_7; - __pyx_L4_bool_binop_done:; - if (__pyx_t_6) { - - /* "src/gevent/_tracer.py":91 - * # ignore), or we spent the whole time in the hub, blocked - * # for IO. Nothing to report. - * return False # <<<<<<<<<<<<<< - * return True, active_greenlet - * - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(Py_False); - __pyx_r = Py_False; - goto __pyx_L0; - - /* "src/gevent/_tracer.py":86 - * self.greenlet_switch_counter = 0 - * - * if did_switch or active_greenlet is None or active_greenlet is hub: # <<<<<<<<<<<<<< - * # Either we switched, or nothing is running (we got a - * # trace event we don't know about or were requested to - */ - } - - /* "src/gevent/_tracer.py":92 - * # for IO. Nothing to report. - * return False - * return True, active_greenlet # <<<<<<<<<<<<<< - * - * def ignore_current_greenlet_blocking(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 92, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(Py_True); - __Pyx_GIVEREF(Py_True); - PyTuple_SET_ITEM(__pyx_t_1, 0, Py_True); - __Pyx_INCREF(__pyx_v_active_greenlet); - __Pyx_GIVEREF(__pyx_v_active_greenlet); - PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_active_greenlet); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/_tracer.py":71 - * return self._trace(event, args) - * - * def did_block_hub(self, hub): # <<<<<<<<<<<<<< - * # Check to see if we have blocked since the last call to this - * # method. Returns a true value if we blocked (not in the hub), - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent.__tracer.GreenletTracer.did_block_hub", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_active_greenlet); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__tracer_14GreenletTracer_9did_block_hub(PyObject *__pyx_v_self, PyObject *__pyx_v_hub); /*proto*/ -static char __pyx_doc_6gevent_8__tracer_14GreenletTracer_8did_block_hub[] = "GreenletTracer.did_block_hub(self, hub)"; -static PyMethodDef __pyx_mdef_6gevent_8__tracer_14GreenletTracer_9did_block_hub = {"did_block_hub", (PyCFunction)__pyx_pw_6gevent_8__tracer_14GreenletTracer_9did_block_hub, METH_O, __pyx_doc_6gevent_8__tracer_14GreenletTracer_8did_block_hub}; -static PyObject *__pyx_pw_6gevent_8__tracer_14GreenletTracer_9did_block_hub(PyObject *__pyx_v_self, PyObject *__pyx_v_hub) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("did_block_hub (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8__tracer_14GreenletTracer_8did_block_hub(((struct __pyx_obj_6gevent_8__tracer_GreenletTracer *)__pyx_v_self), ((PyObject *)__pyx_v_hub)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8__tracer_14GreenletTracer_8did_block_hub(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *__pyx_v_self, PyObject *__pyx_v_hub) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("did_block_hub", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_8__tracer_14GreenletTracer_did_block_hub(__pyx_v_self, __pyx_v_hub, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 71, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__tracer.GreenletTracer.did_block_hub", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_tracer.py":94 - * return True, active_greenlet - * - * def ignore_current_greenlet_blocking(self): # <<<<<<<<<<<<<< - * # Don't pay attention to the current greenlet. - * self.active_greenlet = None - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__tracer_14GreenletTracer_11ignore_current_greenlet_blocking(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_8__tracer_14GreenletTracer_10ignore_current_greenlet_blocking[] = "GreenletTracer.ignore_current_greenlet_blocking(self)"; -static PyMethodDef __pyx_mdef_6gevent_8__tracer_14GreenletTracer_11ignore_current_greenlet_blocking = {"ignore_current_greenlet_blocking", (PyCFunction)__pyx_pw_6gevent_8__tracer_14GreenletTracer_11ignore_current_greenlet_blocking, METH_NOARGS, __pyx_doc_6gevent_8__tracer_14GreenletTracer_10ignore_current_greenlet_blocking}; -static PyObject *__pyx_pw_6gevent_8__tracer_14GreenletTracer_11ignore_current_greenlet_blocking(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("ignore_current_greenlet_blocking (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8__tracer_14GreenletTracer_10ignore_current_greenlet_blocking(((struct __pyx_obj_6gevent_8__tracer_GreenletTracer *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8__tracer_14GreenletTracer_10ignore_current_greenlet_blocking(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("ignore_current_greenlet_blocking", 0); - - /* "src/gevent/_tracer.py":96 - * def ignore_current_greenlet_blocking(self): - * # Don't pay attention to the current greenlet. - * self.active_greenlet = None # <<<<<<<<<<<<<< - * - * def monitor_current_greenlet_blocking(self): - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->active_greenlet); - __Pyx_DECREF(__pyx_v_self->active_greenlet); - __pyx_v_self->active_greenlet = Py_None; - - /* "src/gevent/_tracer.py":94 - * return True, active_greenlet - * - * def ignore_current_greenlet_blocking(self): # <<<<<<<<<<<<<< - * # Don't pay attention to the current greenlet. - * self.active_greenlet = None - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_tracer.py":98 - * self.active_greenlet = None - * - * def monitor_current_greenlet_blocking(self): # <<<<<<<<<<<<<< - * self.active_greenlet = getcurrent() - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__tracer_14GreenletTracer_13monitor_current_greenlet_blocking(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_8__tracer_14GreenletTracer_12monitor_current_greenlet_blocking[] = "GreenletTracer.monitor_current_greenlet_blocking(self)"; -static PyMethodDef __pyx_mdef_6gevent_8__tracer_14GreenletTracer_13monitor_current_greenlet_blocking = {"monitor_current_greenlet_blocking", (PyCFunction)__pyx_pw_6gevent_8__tracer_14GreenletTracer_13monitor_current_greenlet_blocking, METH_NOARGS, __pyx_doc_6gevent_8__tracer_14GreenletTracer_12monitor_current_greenlet_blocking}; -static PyObject *__pyx_pw_6gevent_8__tracer_14GreenletTracer_13monitor_current_greenlet_blocking(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("monitor_current_greenlet_blocking (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8__tracer_14GreenletTracer_12monitor_current_greenlet_blocking(((struct __pyx_obj_6gevent_8__tracer_GreenletTracer *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8__tracer_14GreenletTracer_12monitor_current_greenlet_blocking(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("monitor_current_greenlet_blocking", 0); - - /* "src/gevent/_tracer.py":99 - * - * def monitor_current_greenlet_blocking(self): - * self.active_greenlet = getcurrent() # <<<<<<<<<<<<<< - * - * def did_block_hub_report(self, hub, active_greenlet, format_kwargs): - */ - __Pyx_INCREF(__pyx_v_6gevent_8__tracer_getcurrent); - __pyx_t_2 = __pyx_v_6gevent_8__tracer_getcurrent; __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 99, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 99, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->active_greenlet); - __Pyx_DECREF(__pyx_v_self->active_greenlet); - __pyx_v_self->active_greenlet = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/_tracer.py":98 - * self.active_greenlet = None - * - * def monitor_current_greenlet_blocking(self): # <<<<<<<<<<<<<< - * self.active_greenlet = getcurrent() - * - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent.__tracer.GreenletTracer.monitor_current_greenlet_blocking", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_tracer.py":101 - * self.active_greenlet = getcurrent() - * - * def did_block_hub_report(self, hub, active_greenlet, format_kwargs): # <<<<<<<<<<<<<< - * report = ['=' * 80, - * '\n%s : Greenlet %s appears to be blocked' % - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__tracer_14GreenletTracer_15did_block_hub_report(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_8__tracer_14GreenletTracer_14did_block_hub_report[] = "GreenletTracer.did_block_hub_report(self, hub, active_greenlet, format_kwargs)"; -static PyMethodDef __pyx_mdef_6gevent_8__tracer_14GreenletTracer_15did_block_hub_report = {"did_block_hub_report", (PyCFunction)__pyx_pw_6gevent_8__tracer_14GreenletTracer_15did_block_hub_report, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_8__tracer_14GreenletTracer_14did_block_hub_report}; -static PyObject *__pyx_pw_6gevent_8__tracer_14GreenletTracer_15did_block_hub_report(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_hub = 0; - PyObject *__pyx_v_active_greenlet = 0; - PyObject *__pyx_v_format_kwargs = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("did_block_hub_report (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_hub,&__pyx_n_s_active_greenlet,&__pyx_n_s_format_kwargs,0}; - PyObject* values[3] = {0,0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_hub)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_active_greenlet)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("did_block_hub_report", 1, 3, 3, 1); __PYX_ERR(0, 101, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_format_kwargs)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("did_block_hub_report", 1, 3, 3, 2); __PYX_ERR(0, 101, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "did_block_hub_report") < 0)) __PYX_ERR(0, 101, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - } - __pyx_v_hub = values[0]; - __pyx_v_active_greenlet = values[1]; - __pyx_v_format_kwargs = values[2]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("did_block_hub_report", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 101, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.__tracer.GreenletTracer.did_block_hub_report", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_8__tracer_14GreenletTracer_14did_block_hub_report(((struct __pyx_obj_6gevent_8__tracer_GreenletTracer *)__pyx_v_self), __pyx_v_hub, __pyx_v_active_greenlet, __pyx_v_format_kwargs); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8__tracer_14GreenletTracer_14did_block_hub_report(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *__pyx_v_self, PyObject *__pyx_v_hub, PyObject *__pyx_v_active_greenlet, PyObject *__pyx_v_format_kwargs) { - PyObject *__pyx_v_report = NULL; - PyObject *__pyx_v_frame = NULL; - PyObject *__pyx_v_stack = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - int __pyx_t_9; - PyObject *__pyx_t_10 = NULL; - __Pyx_RefNannySetupContext("did_block_hub_report", 0); - - /* "src/gevent/_tracer.py":104 - * report = ['=' * 80, - * '\n%s : Greenlet %s appears to be blocked' % - * (gmctime(), active_greenlet)] # <<<<<<<<<<<<<< - * report.append(" Reported by %s" % (self,)) - * try: - */ - __Pyx_INCREF(__pyx_v_6gevent_8__tracer_gmctime); - __pyx_t_2 = __pyx_v_6gevent_8__tracer_gmctime; __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 104, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 104, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 104, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); - __Pyx_INCREF(__pyx_v_active_greenlet); - __Pyx_GIVEREF(__pyx_v_active_greenlet); - PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_active_greenlet); - __pyx_t_1 = 0; - - /* "src/gevent/_tracer.py":103 - * def did_block_hub_report(self, hub, active_greenlet, format_kwargs): - * report = ['=' * 80, - * '\n%s : Greenlet %s appears to be blocked' % # <<<<<<<<<<<<<< - * (gmctime(), active_greenlet)] - * report.append(" Reported by %s" % (self,)) - */ - __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_s_Greenlet_s_appears_to_be_bloc, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 103, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_tracer.py":102 - * - * def did_block_hub_report(self, hub, active_greenlet, format_kwargs): - * report = ['=' * 80, # <<<<<<<<<<<<<< - * '\n%s : Greenlet %s appears to be blocked' % - * (gmctime(), active_greenlet)] - */ - __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 102, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_kp_s_b); - __Pyx_GIVEREF(__pyx_kp_s_b); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_kp_s_b); - __Pyx_GIVEREF(__pyx_t_1); - PyList_SET_ITEM(__pyx_t_2, 1, __pyx_t_1); - __pyx_t_1 = 0; - __pyx_v_report = ((PyObject*)__pyx_t_2); - __pyx_t_2 = 0; - - /* "src/gevent/_tracer.py":105 - * '\n%s : Greenlet %s appears to be blocked' % - * (gmctime(), active_greenlet)] - * report.append(" Reported by %s" % (self,)) # <<<<<<<<<<<<<< - * try: - * frame = sys._current_frames()[hub.thread_ident] - */ - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 105, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_self)); - __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Reported_by_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 105, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_report, __pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 105, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_tracer.py":106 - * (gmctime(), active_greenlet)] - * report.append(" Reported by %s" % (self,)) - * try: # <<<<<<<<<<<<<< - * frame = sys._current_frames()[hub.thread_ident] - * except KeyError: - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7); - __Pyx_XGOTREF(__pyx_t_5); - __Pyx_XGOTREF(__pyx_t_6); - __Pyx_XGOTREF(__pyx_t_7); - /*try:*/ { - - /* "src/gevent/_tracer.py":107 - * report.append(" Reported by %s" % (self,)) - * try: - * frame = sys._current_frames()[hub.thread_ident] # <<<<<<<<<<<<<< - * except KeyError: - * # The thread holding the hub has died. Perhaps we shouldn't - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_6gevent_8__tracer_sys, __pyx_n_s_current_frames); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 107, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 107, __pyx_L3_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 107, __pyx_L3_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_hub, __pyx_n_s_thread_ident); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 107, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 107, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_frame = __pyx_t_3; - __pyx_t_3 = 0; - - /* "src/gevent/_tracer.py":106 - * (gmctime(), active_greenlet)] - * report.append(" Reported by %s" % (self,)) - * try: # <<<<<<<<<<<<<< - * frame = sys._current_frames()[hub.thread_ident] - * except KeyError: - */ - } - - /* "src/gevent/_tracer.py":113 - * stack = ["Unknown: No thread found for hub %r\n" % (hub,)] - * else: - * stack = traceback.format_stack(frame) # <<<<<<<<<<<<<< - * report.append('Blocked Stack (for thread id %s):' % (hex(hub.thread_ident),)) - * report.append(''.join(stack)) - */ - /*else:*/ { - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_6gevent_8__tracer_traceback, __pyx_n_s_format_stack); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 113, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_1)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_1); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_1) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_frame); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_3); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_v_frame}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L5_except_error) - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_GOTREF(__pyx_t_3); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_v_frame}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L5_except_error) - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_GOTREF(__pyx_t_3); - } else - #endif - { - __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 113, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1); __pyx_t_1 = NULL; - __Pyx_INCREF(__pyx_v_frame); - __Pyx_GIVEREF(__pyx_v_frame); - PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_v_frame); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_stack = __pyx_t_3; - __pyx_t_3 = 0; - } - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - goto __pyx_L8_try_end; - __pyx_L3_error:; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "src/gevent/_tracer.py":108 - * try: - * frame = sys._current_frames()[hub.thread_ident] - * except KeyError: # <<<<<<<<<<<<<< - * # The thread holding the hub has died. Perhaps we shouldn't - * # even report this? - */ - __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError); - if (__pyx_t_9) { - __Pyx_AddTraceback("gevent.__tracer.GreenletTracer.did_block_hub_report", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_8) < 0) __PYX_ERR(0, 108, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GOTREF(__pyx_t_8); - - /* "src/gevent/_tracer.py":111 - * # The thread holding the hub has died. Perhaps we shouldn't - * # even report this? - * stack = ["Unknown: No thread found for hub %r\n" % (hub,)] # <<<<<<<<<<<<<< - * else: - * stack = traceback.format_stack(frame) - */ - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 111, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_v_hub); - __Pyx_GIVEREF(__pyx_v_hub); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_hub); - __pyx_t_10 = __Pyx_PyString_Format(__pyx_kp_s_Unknown_No_thread_found_for_hub, __pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 111, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_10); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 111, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_10); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_t_10); - __pyx_t_10 = 0; - __pyx_v_stack = __pyx_t_1; - __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - goto __pyx_L4_exception_handled; - } - goto __pyx_L5_except_error; - __pyx_L5_except_error:; - - /* "src/gevent/_tracer.py":106 - * (gmctime(), active_greenlet)] - * report.append(" Reported by %s" % (self,)) - * try: # <<<<<<<<<<<<<< - * frame = sys._current_frames()[hub.thread_ident] - * except KeyError: - */ - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); - goto __pyx_L1_error; - __pyx_L4_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); - __pyx_L8_try_end:; - } - - /* "src/gevent/_tracer.py":114 - * else: - * stack = traceback.format_stack(frame) - * report.append('Blocked Stack (for thread id %s):' % (hex(hub.thread_ident),)) # <<<<<<<<<<<<<< - * report.append(''.join(stack)) - * report.append("Info:") - */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_hub, __pyx_n_s_thread_ident); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 114, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_hex, __pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 114, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 114, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_Blocked_Stack_for_thread_id_s, __pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 114, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_report, __pyx_t_2); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 114, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_tracer.py":115 - * stack = traceback.format_stack(frame) - * report.append('Blocked Stack (for thread id %s):' % (hex(hub.thread_ident),)) - * report.append(''.join(stack)) # <<<<<<<<<<<<<< - * report.append("Info:") - * report.extend(format_run_info(**format_kwargs)) - */ - __pyx_t_2 = __Pyx_PyString_Join(__pyx_kp_s__2, __pyx_v_stack); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 115, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_report, __pyx_t_2); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 115, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_tracer.py":116 - * report.append('Blocked Stack (for thread id %s):' % (hex(hub.thread_ident),)) - * report.append(''.join(stack)) - * report.append("Info:") # <<<<<<<<<<<<<< - * report.extend(format_run_info(**format_kwargs)) - * - */ - __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_report, __pyx_kp_s_Info); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 116, __pyx_L1_error) - - /* "src/gevent/_tracer.py":117 - * report.append(''.join(stack)) - * report.append("Info:") - * report.extend(format_run_info(**format_kwargs)) # <<<<<<<<<<<<<< - * - * return report - */ - if (unlikely(__pyx_v_format_kwargs == Py_None)) { - PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType"); - __PYX_ERR(0, 117, __pyx_L1_error) - } - if (likely(PyDict_CheckExact(__pyx_v_format_kwargs))) { - __pyx_t_2 = PyDict_Copy(__pyx_v_format_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 117, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - } else { - __pyx_t_2 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_format_kwargs, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 117, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - } - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_v_6gevent_8__tracer_format_run_info, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 117, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __Pyx_PyList_Extend(__pyx_v_report, __pyx_t_8); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 117, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - - /* "src/gevent/_tracer.py":119 - * report.extend(format_run_info(**format_kwargs)) - * - * return report # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_report); - __pyx_r = __pyx_v_report; - goto __pyx_L0; - - /* "src/gevent/_tracer.py":101 - * self.active_greenlet = getcurrent() - * - * def did_block_hub_report(self, hub, active_greenlet, format_kwargs): # <<<<<<<<<<<<<< - * report = ['=' * 80, - * '\n%s : Greenlet %s appears to be blocked' % - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_XDECREF(__pyx_t_10); - __Pyx_AddTraceback("gevent.__tracer.GreenletTracer.did_block_hub_report", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_report); - __Pyx_XDECREF(__pyx_v_frame); - __Pyx_XDECREF(__pyx_v_stack); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__tracer.pxd":16 - * - * cdef class GreenletTracer: - * cpdef readonly object active_greenlet # <<<<<<<<<<<<<< - * cpdef readonly object previous_trace_function - * cpdef readonly Py_ssize_t greenlet_switch_counter - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__tracer_14GreenletTracer_15active_greenlet_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_8__tracer_14GreenletTracer_15active_greenlet_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8__tracer_14GreenletTracer_15active_greenlet___get__(((struct __pyx_obj_6gevent_8__tracer_GreenletTracer *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8__tracer_14GreenletTracer_15active_greenlet___get__(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->active_greenlet); - __pyx_r = __pyx_v_self->active_greenlet; - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__tracer.pxd":17 - * cdef class GreenletTracer: - * cpdef readonly object active_greenlet - * cpdef readonly object previous_trace_function # <<<<<<<<<<<<<< - * cpdef readonly Py_ssize_t greenlet_switch_counter - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__tracer_14GreenletTracer_23previous_trace_function_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_8__tracer_14GreenletTracer_23previous_trace_function_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8__tracer_14GreenletTracer_23previous_trace_function___get__(((struct __pyx_obj_6gevent_8__tracer_GreenletTracer *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8__tracer_14GreenletTracer_23previous_trace_function___get__(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->previous_trace_function); - __pyx_r = __pyx_v_self->previous_trace_function; - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__tracer.pxd":18 - * cpdef readonly object active_greenlet - * cpdef readonly object previous_trace_function - * cpdef readonly Py_ssize_t greenlet_switch_counter # <<<<<<<<<<<<<< - * - * cdef bint _killed - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__tracer_14GreenletTracer_23greenlet_switch_counter_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_8__tracer_14GreenletTracer_23greenlet_switch_counter_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8__tracer_14GreenletTracer_23greenlet_switch_counter___get__(((struct __pyx_obj_6gevent_8__tracer_GreenletTracer *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8__tracer_14GreenletTracer_23greenlet_switch_counter___get__(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->greenlet_switch_counter); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 18, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__tracer.GreenletTracer.greenlet_switch_counter.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_tracer.py":123 - * - * class _HubTracer(GreenletTracer): - * def __init__(self, hub, max_blocking_time): # <<<<<<<<<<<<<< - * GreenletTracer.__init__(self) - * self.max_blocking_time = max_blocking_time - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_8__tracer_10_HubTracer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_8__tracer_10_HubTracer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_hub = 0; - PyObject *__pyx_v_max_blocking_time = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_hub,&__pyx_n_s_max_blocking_time,0}; - PyObject* values[2] = {0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_hub)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_blocking_time)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 123, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 123, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - } - __pyx_v_hub = values[0]; - __pyx_v_max_blocking_time = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 123, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.__tracer._HubTracer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_8__tracer_10_HubTracer___init__(((struct __pyx_obj_6gevent_8__tracer__HubTracer *)__pyx_v_self), __pyx_v_hub, __pyx_v_max_blocking_time); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_8__tracer_10_HubTracer___init__(struct __pyx_obj_6gevent_8__tracer__HubTracer *__pyx_v_self, PyObject *__pyx_v_hub, PyObject *__pyx_v_max_blocking_time) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - double __pyx_t_5; - __Pyx_RefNannySetupContext("__init__", 0); - - /* "src/gevent/_tracer.py":124 - * class _HubTracer(GreenletTracer): - * def __init__(self, hub, max_blocking_time): - * GreenletTracer.__init__(self) # <<<<<<<<<<<<<< - * self.max_blocking_time = max_blocking_time - * self.hub = hub - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_6gevent_8__tracer_GreenletTracer), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 124, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_self)}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 124, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_self)}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 124, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 124, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)__pyx_v_self)); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 124, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_tracer.py":125 - * def __init__(self, hub, max_blocking_time): - * GreenletTracer.__init__(self) - * self.max_blocking_time = max_blocking_time # <<<<<<<<<<<<<< - * self.hub = hub - * - */ - __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_max_blocking_time); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 125, __pyx_L1_error) - __pyx_v_self->max_blocking_time = __pyx_t_5; - - /* "src/gevent/_tracer.py":126 - * GreenletTracer.__init__(self) - * self.max_blocking_time = max_blocking_time - * self.hub = hub # <<<<<<<<<<<<<< - * - * def kill(self): - */ - __Pyx_INCREF(__pyx_v_hub); - __Pyx_GIVEREF(__pyx_v_hub); - __Pyx_GOTREF(__pyx_v_self->hub); - __Pyx_DECREF(__pyx_v_self->hub); - __pyx_v_self->hub = __pyx_v_hub; - - /* "src/gevent/_tracer.py":123 - * - * class _HubTracer(GreenletTracer): - * def __init__(self, hub, max_blocking_time): # <<<<<<<<<<<<<< - * GreenletTracer.__init__(self) - * self.max_blocking_time = max_blocking_time - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent.__tracer._HubTracer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_tracer.py":128 - * self.hub = hub - * - * def kill(self): # <<<<<<<<<<<<<< - * self.hub = None - * GreenletTracer.kill(self) - */ - -static PyObject *__pyx_pw_6gevent_8__tracer_10_HubTracer_3kill(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_f_6gevent_8__tracer_10_HubTracer_kill(struct __pyx_obj_6gevent_8__tracer__HubTracer *__pyx_v_self, int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("kill", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_kill); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 128, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_8__tracer_10_HubTracer_3kill)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 128, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 128, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/_tracer.py":129 - * - * def kill(self): - * self.hub = None # <<<<<<<<<<<<<< - * GreenletTracer.kill(self) - * - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->hub); - __Pyx_DECREF(__pyx_v_self->hub); - __pyx_v_self->hub = Py_None; - - /* "src/gevent/_tracer.py":130 - * def kill(self): - * self.hub = None - * GreenletTracer.kill(self) # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_1 = __pyx_f_6gevent_8__tracer_14GreenletTracer_kill(((struct __pyx_obj_6gevent_8__tracer_GreenletTracer *)__pyx_v_self), 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 130, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_tracer.py":128 - * self.hub = hub - * - * def kill(self): # <<<<<<<<<<<<<< - * self.hub = None - * GreenletTracer.kill(self) - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent.__tracer._HubTracer.kill", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__tracer_10_HubTracer_3kill(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_8__tracer_10_HubTracer_2kill[] = "_HubTracer.kill(self)"; -static PyMethodDef __pyx_mdef_6gevent_8__tracer_10_HubTracer_3kill = {"kill", (PyCFunction)__pyx_pw_6gevent_8__tracer_10_HubTracer_3kill, METH_NOARGS, __pyx_doc_6gevent_8__tracer_10_HubTracer_2kill}; -static PyObject *__pyx_pw_6gevent_8__tracer_10_HubTracer_3kill(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("kill (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8__tracer_10_HubTracer_2kill(((struct __pyx_obj_6gevent_8__tracer__HubTracer *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8__tracer_10_HubTracer_2kill(struct __pyx_obj_6gevent_8__tracer__HubTracer *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("kill", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_8__tracer_10_HubTracer_kill(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 128, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__tracer._HubTracer.kill", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__tracer.pxd":31 - * @cython.internal - * cdef class _HubTracer(GreenletTracer): - * cpdef readonly object hub # <<<<<<<<<<<<<< - * cpdef readonly double max_blocking_time - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__tracer_10_HubTracer_3hub_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_8__tracer_10_HubTracer_3hub_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8__tracer_10_HubTracer_3hub___get__(((struct __pyx_obj_6gevent_8__tracer__HubTracer *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8__tracer_10_HubTracer_3hub___get__(struct __pyx_obj_6gevent_8__tracer__HubTracer *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->hub); - __pyx_r = __pyx_v_self->hub; - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__tracer.pxd":32 - * cdef class _HubTracer(GreenletTracer): - * cpdef readonly object hub - * cpdef readonly double max_blocking_time # <<<<<<<<<<<<<< - * - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__tracer_10_HubTracer_17max_blocking_time_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_8__tracer_10_HubTracer_17max_blocking_time_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8__tracer_10_HubTracer_17max_blocking_time___get__(((struct __pyx_obj_6gevent_8__tracer__HubTracer *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8__tracer_10_HubTracer_17max_blocking_time___get__(struct __pyx_obj_6gevent_8__tracer__HubTracer *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->max_blocking_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 32, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__tracer._HubTracer.max_blocking_time.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_tracer.py":136 - * # A greenlet tracer that records the last time we switched *into* the hub. - * - * def __init__(self, hub, max_blocking_time): # <<<<<<<<<<<<<< - * _HubTracer.__init__(self, hub, max_blocking_time) - * self.last_entered_hub = 0 - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_8__tracer_15HubSwitchTracer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_8__tracer_15HubSwitchTracer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_hub = 0; - PyObject *__pyx_v_max_blocking_time = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_hub,&__pyx_n_s_max_blocking_time,0}; - PyObject* values[2] = {0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_hub)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_blocking_time)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 136, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 136, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - } - __pyx_v_hub = values[0]; - __pyx_v_max_blocking_time = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 136, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.__tracer.HubSwitchTracer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_8__tracer_15HubSwitchTracer___init__(((struct __pyx_obj_6gevent_8__tracer_HubSwitchTracer *)__pyx_v_self), __pyx_v_hub, __pyx_v_max_blocking_time); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_8__tracer_15HubSwitchTracer___init__(struct __pyx_obj_6gevent_8__tracer_HubSwitchTracer *__pyx_v_self, PyObject *__pyx_v_hub, PyObject *__pyx_v_max_blocking_time) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - __Pyx_RefNannySetupContext("__init__", 0); - - /* "src/gevent/_tracer.py":137 - * - * def __init__(self, hub, max_blocking_time): - * _HubTracer.__init__(self, hub, max_blocking_time) # <<<<<<<<<<<<<< - * self.last_entered_hub = 0 - * - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_6gevent_8__tracer__HubTracer), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 137, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - __pyx_t_4 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_4 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[4] = {__pyx_t_3, ((PyObject *)__pyx_v_self), __pyx_v_hub, __pyx_v_max_blocking_time}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 137, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[4] = {__pyx_t_3, ((PyObject *)__pyx_v_self), __pyx_v_hub, __pyx_v_max_blocking_time}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 137, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_5 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 137, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (__pyx_t_3) { - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; - } - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, ((PyObject *)__pyx_v_self)); - __Pyx_INCREF(__pyx_v_hub); - __Pyx_GIVEREF(__pyx_v_hub); - PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_hub); - __Pyx_INCREF(__pyx_v_max_blocking_time); - __Pyx_GIVEREF(__pyx_v_max_blocking_time); - PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_max_blocking_time); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 137, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_tracer.py":138 - * def __init__(self, hub, max_blocking_time): - * _HubTracer.__init__(self, hub, max_blocking_time) - * self.last_entered_hub = 0 # <<<<<<<<<<<<<< - * - * def _trace(self, event, args): - */ - __pyx_v_self->last_entered_hub = 0.0; - - /* "src/gevent/_tracer.py":136 - * # A greenlet tracer that records the last time we switched *into* the hub. - * - * def __init__(self, hub, max_blocking_time): # <<<<<<<<<<<<<< - * _HubTracer.__init__(self, hub, max_blocking_time) - * self.last_entered_hub = 0 - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent.__tracer.HubSwitchTracer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_tracer.py":140 - * self.last_entered_hub = 0 - * - * def _trace(self, event, args): # <<<<<<<<<<<<<< - * GreenletTracer._trace(self, event, args) - * if self.active_greenlet is self.hub: - */ - -static PyObject *__pyx_pw_6gevent_8__tracer_15HubSwitchTracer_3_trace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_f_6gevent_8__tracer_15HubSwitchTracer__trace(struct __pyx_obj_6gevent_8__tracer_HubSwitchTracer *__pyx_v_self, PyObject *__pyx_v_event, PyObject *__pyx_v_args, int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - int __pyx_t_7; - int __pyx_t_8; - double __pyx_t_9; - __Pyx_RefNannySetupContext("_trace", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_8__tracer_15HubSwitchTracer_3_trace)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - __pyx_t_5 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_5 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_event, __pyx_v_args}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_event, __pyx_v_args}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (__pyx_t_4) { - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; - } - __Pyx_INCREF(__pyx_v_event); - __Pyx_GIVEREF(__pyx_v_event); - PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_event); - __Pyx_INCREF(__pyx_v_args); - __Pyx_GIVEREF(__pyx_v_args); - PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_args); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/_tracer.py":141 - * - * def _trace(self, event, args): - * GreenletTracer._trace(self, event, args) # <<<<<<<<<<<<<< - * if self.active_greenlet is self.hub: - * self.last_entered_hub = perf_counter() - */ - __pyx_t_1 = __pyx_f_6gevent_8__tracer_14GreenletTracer__trace(((struct __pyx_obj_6gevent_8__tracer_GreenletTracer *)__pyx_v_self), __pyx_v_event, __pyx_v_args, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 141, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_tracer.py":142 - * def _trace(self, event, args): - * GreenletTracer._trace(self, event, args) - * if self.active_greenlet is self.hub: # <<<<<<<<<<<<<< - * self.last_entered_hub = perf_counter() - * - */ - __pyx_t_7 = (__pyx_v_self->__pyx_base.__pyx_base.active_greenlet == __pyx_v_self->__pyx_base.hub); - __pyx_t_8 = (__pyx_t_7 != 0); - if (__pyx_t_8) { - - /* "src/gevent/_tracer.py":143 - * GreenletTracer._trace(self, event, args) - * if self.active_greenlet is self.hub: - * self.last_entered_hub = perf_counter() # <<<<<<<<<<<<<< - * - * def did_block_hub(self, hub): - */ - __Pyx_INCREF(__pyx_v_6gevent_8__tracer_perf_counter); - __pyx_t_2 = __pyx_v_6gevent_8__tracer_perf_counter; __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 143, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 143, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_9 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_9 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 143, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_self->last_entered_hub = __pyx_t_9; - - /* "src/gevent/_tracer.py":142 - * def _trace(self, event, args): - * GreenletTracer._trace(self, event, args) - * if self.active_greenlet is self.hub: # <<<<<<<<<<<<<< - * self.last_entered_hub = perf_counter() - * - */ - } - - /* "src/gevent/_tracer.py":140 - * self.last_entered_hub = 0 - * - * def _trace(self, event, args): # <<<<<<<<<<<<<< - * GreenletTracer._trace(self, event, args) - * if self.active_greenlet is self.hub: - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_AddTraceback("gevent.__tracer.HubSwitchTracer._trace", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__tracer_15HubSwitchTracer_3_trace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_8__tracer_15HubSwitchTracer_2_trace[] = "HubSwitchTracer._trace(self, str event, tuple args)"; -static PyMethodDef __pyx_mdef_6gevent_8__tracer_15HubSwitchTracer_3_trace = {"_trace", (PyCFunction)__pyx_pw_6gevent_8__tracer_15HubSwitchTracer_3_trace, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_8__tracer_15HubSwitchTracer_2_trace}; -static PyObject *__pyx_pw_6gevent_8__tracer_15HubSwitchTracer_3_trace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_event = 0; - PyObject *__pyx_v_args = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_trace (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_event,&__pyx_n_s_args,0}; - PyObject* values[2] = {0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_event)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_args)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("_trace", 1, 2, 2, 1); __PYX_ERR(0, 140, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_trace") < 0)) __PYX_ERR(0, 140, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - } - __pyx_v_event = ((PyObject*)values[0]); - __pyx_v_args = ((PyObject*)values[1]); - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("_trace", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 140, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.__tracer.HubSwitchTracer._trace", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_event), (&PyString_Type), 1, "event", 1))) __PYX_ERR(0, 140, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_args), (&PyTuple_Type), 1, "args", 1))) __PYX_ERR(0, 140, __pyx_L1_error) - __pyx_r = __pyx_pf_6gevent_8__tracer_15HubSwitchTracer_2_trace(((struct __pyx_obj_6gevent_8__tracer_HubSwitchTracer *)__pyx_v_self), __pyx_v_event, __pyx_v_args); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = NULL; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8__tracer_15HubSwitchTracer_2_trace(struct __pyx_obj_6gevent_8__tracer_HubSwitchTracer *__pyx_v_self, PyObject *__pyx_v_event, PyObject *__pyx_v_args) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_trace", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_8__tracer_15HubSwitchTracer__trace(__pyx_v_self, __pyx_v_event, __pyx_v_args, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__tracer.HubSwitchTracer._trace", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_tracer.py":145 - * self.last_entered_hub = perf_counter() - * - * def did_block_hub(self, hub): # <<<<<<<<<<<<<< - * if perf_counter() - self.last_entered_hub > self.max_blocking_time: - * return True, self.active_greenlet - */ - -static PyObject *__pyx_pw_6gevent_8__tracer_15HubSwitchTracer_5did_block_hub(PyObject *__pyx_v_self, PyObject *__pyx_v_hub); /*proto*/ -static PyObject *__pyx_f_6gevent_8__tracer_15HubSwitchTracer_did_block_hub(struct __pyx_obj_6gevent_8__tracer_HubSwitchTracer *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_hub, int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - __Pyx_RefNannySetupContext("did_block_hub", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_did_block_hub); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 145, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_8__tracer_15HubSwitchTracer_5did_block_hub)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (!__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_hub); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 145, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_hub}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 145, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_hub}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 145, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 145, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_INCREF(__pyx_v_hub); - __Pyx_GIVEREF(__pyx_v_hub); - PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_hub); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 145, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/_tracer.py":146 - * - * def did_block_hub(self, hub): - * if perf_counter() - self.last_entered_hub > self.max_blocking_time: # <<<<<<<<<<<<<< - * return True, self.active_greenlet - * - */ - __Pyx_INCREF(__pyx_v_6gevent_8__tracer_perf_counter); - __pyx_t_2 = __pyx_v_6gevent_8__tracer_perf_counter; __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 146, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 146, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyFloat_FromDouble(__pyx_v_self->last_entered_hub); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 146, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyNumber_Subtract(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 146, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyFloat_FromDouble(__pyx_v_self->__pyx_base.max_blocking_time); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 146, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyObject_RichCompare(__pyx_t_3, __pyx_t_2, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 146, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 146, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (__pyx_t_6) { - - /* "src/gevent/_tracer.py":147 - * def did_block_hub(self, hub): - * if perf_counter() - self.last_entered_hub > self.max_blocking_time: - * return True, self.active_greenlet # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 147, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(Py_True); - __Pyx_GIVEREF(Py_True); - PyTuple_SET_ITEM(__pyx_t_1, 0, Py_True); - __Pyx_INCREF(__pyx_v_self->__pyx_base.__pyx_base.active_greenlet); - __Pyx_GIVEREF(__pyx_v_self->__pyx_base.__pyx_base.active_greenlet); - PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->__pyx_base.__pyx_base.active_greenlet); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/_tracer.py":146 - * - * def did_block_hub(self, hub): - * if perf_counter() - self.last_entered_hub > self.max_blocking_time: # <<<<<<<<<<<<<< - * return True, self.active_greenlet - * - */ - } - - /* "src/gevent/_tracer.py":145 - * self.last_entered_hub = perf_counter() - * - * def did_block_hub(self, hub): # <<<<<<<<<<<<<< - * if perf_counter() - self.last_entered_hub > self.max_blocking_time: - * return True, self.active_greenlet - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent.__tracer.HubSwitchTracer.did_block_hub", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__tracer_15HubSwitchTracer_5did_block_hub(PyObject *__pyx_v_self, PyObject *__pyx_v_hub); /*proto*/ -static char __pyx_doc_6gevent_8__tracer_15HubSwitchTracer_4did_block_hub[] = "HubSwitchTracer.did_block_hub(self, hub)"; -static PyMethodDef __pyx_mdef_6gevent_8__tracer_15HubSwitchTracer_5did_block_hub = {"did_block_hub", (PyCFunction)__pyx_pw_6gevent_8__tracer_15HubSwitchTracer_5did_block_hub, METH_O, __pyx_doc_6gevent_8__tracer_15HubSwitchTracer_4did_block_hub}; -static PyObject *__pyx_pw_6gevent_8__tracer_15HubSwitchTracer_5did_block_hub(PyObject *__pyx_v_self, PyObject *__pyx_v_hub) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("did_block_hub (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8__tracer_15HubSwitchTracer_4did_block_hub(((struct __pyx_obj_6gevent_8__tracer_HubSwitchTracer *)__pyx_v_self), ((PyObject *)__pyx_v_hub)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8__tracer_15HubSwitchTracer_4did_block_hub(struct __pyx_obj_6gevent_8__tracer_HubSwitchTracer *__pyx_v_self, PyObject *__pyx_v_hub) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("did_block_hub", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_8__tracer_15HubSwitchTracer_did_block_hub(__pyx_v_self, __pyx_v_hub, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 145, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__tracer.HubSwitchTracer.did_block_hub", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__tracer.pxd":36 - * - * cdef class HubSwitchTracer(_HubTracer): - * cpdef readonly double last_entered_hub # <<<<<<<<<<<<<< - * - * cdef class MaxSwitchTracer(_HubTracer): - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__tracer_15HubSwitchTracer_16last_entered_hub_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_8__tracer_15HubSwitchTracer_16last_entered_hub_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8__tracer_15HubSwitchTracer_16last_entered_hub___get__(((struct __pyx_obj_6gevent_8__tracer_HubSwitchTracer *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8__tracer_15HubSwitchTracer_16last_entered_hub___get__(struct __pyx_obj_6gevent_8__tracer_HubSwitchTracer *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->last_entered_hub); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 36, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__tracer.HubSwitchTracer.last_entered_hub.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_tracer.py":154 - * # not including time spent in the hub. - * - * def __init__(self, hub, max_blocking_time): # <<<<<<<<<<<<<< - * _HubTracer.__init__(self, hub, max_blocking_time) - * self.last_switch = perf_counter() - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_8__tracer_15MaxSwitchTracer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_8__tracer_15MaxSwitchTracer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_hub = 0; - PyObject *__pyx_v_max_blocking_time = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_hub,&__pyx_n_s_max_blocking_time,0}; - PyObject* values[2] = {0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_hub)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_blocking_time)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 154, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 154, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - } - __pyx_v_hub = values[0]; - __pyx_v_max_blocking_time = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 154, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.__tracer.MaxSwitchTracer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_8__tracer_15MaxSwitchTracer___init__(((struct __pyx_obj_6gevent_8__tracer_MaxSwitchTracer *)__pyx_v_self), __pyx_v_hub, __pyx_v_max_blocking_time); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_8__tracer_15MaxSwitchTracer___init__(struct __pyx_obj_6gevent_8__tracer_MaxSwitchTracer *__pyx_v_self, PyObject *__pyx_v_hub, PyObject *__pyx_v_max_blocking_time) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - double __pyx_t_6; - __Pyx_RefNannySetupContext("__init__", 0); - - /* "src/gevent/_tracer.py":155 - * - * def __init__(self, hub, max_blocking_time): - * _HubTracer.__init__(self, hub, max_blocking_time) # <<<<<<<<<<<<<< - * self.last_switch = perf_counter() - * self.max_blocking = 0 - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_6gevent_8__tracer__HubTracer), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 155, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - __pyx_t_4 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_4 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[4] = {__pyx_t_3, ((PyObject *)__pyx_v_self), __pyx_v_hub, __pyx_v_max_blocking_time}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 155, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[4] = {__pyx_t_3, ((PyObject *)__pyx_v_self), __pyx_v_hub, __pyx_v_max_blocking_time}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 155, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_5 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 155, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (__pyx_t_3) { - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; - } - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, ((PyObject *)__pyx_v_self)); - __Pyx_INCREF(__pyx_v_hub); - __Pyx_GIVEREF(__pyx_v_hub); - PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_hub); - __Pyx_INCREF(__pyx_v_max_blocking_time); - __Pyx_GIVEREF(__pyx_v_max_blocking_time); - PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_max_blocking_time); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 155, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_tracer.py":156 - * def __init__(self, hub, max_blocking_time): - * _HubTracer.__init__(self, hub, max_blocking_time) - * self.last_switch = perf_counter() # <<<<<<<<<<<<<< - * self.max_blocking = 0 - * - */ - __Pyx_INCREF(__pyx_v_6gevent_8__tracer_perf_counter); - __pyx_t_2 = __pyx_v_6gevent_8__tracer_perf_counter; __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_5) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 156, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 156, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 156, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_self->last_switch = __pyx_t_6; - - /* "src/gevent/_tracer.py":157 - * _HubTracer.__init__(self, hub, max_blocking_time) - * self.last_switch = perf_counter() - * self.max_blocking = 0 # <<<<<<<<<<<<<< - * - * def _trace(self, event, args): - */ - __pyx_v_self->max_blocking = 0.0; - - /* "src/gevent/_tracer.py":154 - * # not including time spent in the hub. - * - * def __init__(self, hub, max_blocking_time): # <<<<<<<<<<<<<< - * _HubTracer.__init__(self, hub, max_blocking_time) - * self.last_switch = perf_counter() - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent.__tracer.MaxSwitchTracer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_tracer.py":159 - * self.max_blocking = 0 - * - * def _trace(self, event, args): # <<<<<<<<<<<<<< - * old_active = self.active_greenlet - * GreenletTracer._trace(self, event, args) - */ - -static PyObject *__pyx_pw_6gevent_8__tracer_15MaxSwitchTracer_3_trace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_f_6gevent_8__tracer_15MaxSwitchTracer__trace(struct __pyx_obj_6gevent_8__tracer_MaxSwitchTracer *__pyx_v_self, PyObject *__pyx_v_event, PyObject *__pyx_v_args, int __pyx_skip_dispatch) { - double __pyx_v_switched_at; - PyObject *__pyx_v_old_active = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - int __pyx_t_7; - int __pyx_t_8; - int __pyx_t_9; - double __pyx_t_10; - double __pyx_t_11; - double __pyx_t_12; - __Pyx_RefNannySetupContext("_trace", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trace); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 159, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_8__tracer_15MaxSwitchTracer_3_trace)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - __pyx_t_5 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_5 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_event, __pyx_v_args}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 159, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_event, __pyx_v_args}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 159, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 159, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (__pyx_t_4) { - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; - } - __Pyx_INCREF(__pyx_v_event); - __Pyx_GIVEREF(__pyx_v_event); - PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_event); - __Pyx_INCREF(__pyx_v_args); - __Pyx_GIVEREF(__pyx_v_args); - PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_args); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 159, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/_tracer.py":160 - * - * def _trace(self, event, args): - * old_active = self.active_greenlet # <<<<<<<<<<<<<< - * GreenletTracer._trace(self, event, args) - * if old_active is not self.hub and old_active is not None: - */ - __pyx_t_1 = __pyx_v_self->__pyx_base.__pyx_base.active_greenlet; - __Pyx_INCREF(__pyx_t_1); - __pyx_v_old_active = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/_tracer.py":161 - * def _trace(self, event, args): - * old_active = self.active_greenlet - * GreenletTracer._trace(self, event, args) # <<<<<<<<<<<<<< - * if old_active is not self.hub and old_active is not None: - * # If we're switching out of the hub, the blocking - */ - __pyx_t_1 = __pyx_f_6gevent_8__tracer_14GreenletTracer__trace(((struct __pyx_obj_6gevent_8__tracer_GreenletTracer *)__pyx_v_self), __pyx_v_event, __pyx_v_args, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 161, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_tracer.py":162 - * old_active = self.active_greenlet - * GreenletTracer._trace(self, event, args) - * if old_active is not self.hub and old_active is not None: # <<<<<<<<<<<<<< - * # If we're switching out of the hub, the blocking - * # time doesn't count. - */ - __pyx_t_8 = (__pyx_v_old_active != __pyx_v_self->__pyx_base.hub); - __pyx_t_9 = (__pyx_t_8 != 0); - if (__pyx_t_9) { - } else { - __pyx_t_7 = __pyx_t_9; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_9 = (__pyx_v_old_active != Py_None); - __pyx_t_8 = (__pyx_t_9 != 0); - __pyx_t_7 = __pyx_t_8; - __pyx_L4_bool_binop_done:; - if (__pyx_t_7) { - - /* "src/gevent/_tracer.py":165 - * # If we're switching out of the hub, the blocking - * # time doesn't count. - * switched_at = perf_counter() # <<<<<<<<<<<<<< - * self.max_blocking = max(self.max_blocking, - * switched_at - self.last_switch) - */ - __Pyx_INCREF(__pyx_v_6gevent_8__tracer_perf_counter); - __pyx_t_2 = __pyx_v_6gevent_8__tracer_perf_counter; __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 165, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 165, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_10 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_10 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 165, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_switched_at = __pyx_t_10; - - /* "src/gevent/_tracer.py":167 - * switched_at = perf_counter() - * self.max_blocking = max(self.max_blocking, - * switched_at - self.last_switch) # <<<<<<<<<<<<<< - * - * def did_block_hub(self, hub): - */ - __pyx_t_10 = (__pyx_v_switched_at - __pyx_v_self->last_switch); - - /* "src/gevent/_tracer.py":166 - * # time doesn't count. - * switched_at = perf_counter() - * self.max_blocking = max(self.max_blocking, # <<<<<<<<<<<<<< - * switched_at - self.last_switch) - * - */ - __pyx_t_11 = __pyx_v_self->max_blocking; - - /* "src/gevent/_tracer.py":167 - * switched_at = perf_counter() - * self.max_blocking = max(self.max_blocking, - * switched_at - self.last_switch) # <<<<<<<<<<<<<< - * - * def did_block_hub(self, hub): - */ - if (((__pyx_t_10 > __pyx_t_11) != 0)) { - __pyx_t_12 = __pyx_t_10; - } else { - __pyx_t_12 = __pyx_t_11; - } - - /* "src/gevent/_tracer.py":166 - * # time doesn't count. - * switched_at = perf_counter() - * self.max_blocking = max(self.max_blocking, # <<<<<<<<<<<<<< - * switched_at - self.last_switch) - * - */ - __pyx_v_self->max_blocking = __pyx_t_12; - - /* "src/gevent/_tracer.py":162 - * old_active = self.active_greenlet - * GreenletTracer._trace(self, event, args) - * if old_active is not self.hub and old_active is not None: # <<<<<<<<<<<<<< - * # If we're switching out of the hub, the blocking - * # time doesn't count. - */ - } - - /* "src/gevent/_tracer.py":159 - * self.max_blocking = 0 - * - * def _trace(self, event, args): # <<<<<<<<<<<<<< - * old_active = self.active_greenlet - * GreenletTracer._trace(self, event, args) - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_AddTraceback("gevent.__tracer.MaxSwitchTracer._trace", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_old_active); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__tracer_15MaxSwitchTracer_3_trace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_8__tracer_15MaxSwitchTracer_2_trace[] = "MaxSwitchTracer._trace(self, str event, tuple args)"; -static PyMethodDef __pyx_mdef_6gevent_8__tracer_15MaxSwitchTracer_3_trace = {"_trace", (PyCFunction)__pyx_pw_6gevent_8__tracer_15MaxSwitchTracer_3_trace, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_8__tracer_15MaxSwitchTracer_2_trace}; -static PyObject *__pyx_pw_6gevent_8__tracer_15MaxSwitchTracer_3_trace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_event = 0; - PyObject *__pyx_v_args = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_trace (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_event,&__pyx_n_s_args,0}; - PyObject* values[2] = {0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_event)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_args)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("_trace", 1, 2, 2, 1); __PYX_ERR(0, 159, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_trace") < 0)) __PYX_ERR(0, 159, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - } - __pyx_v_event = ((PyObject*)values[0]); - __pyx_v_args = ((PyObject*)values[1]); - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("_trace", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 159, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.__tracer.MaxSwitchTracer._trace", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_event), (&PyString_Type), 1, "event", 1))) __PYX_ERR(0, 159, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_args), (&PyTuple_Type), 1, "args", 1))) __PYX_ERR(0, 159, __pyx_L1_error) - __pyx_r = __pyx_pf_6gevent_8__tracer_15MaxSwitchTracer_2_trace(((struct __pyx_obj_6gevent_8__tracer_MaxSwitchTracer *)__pyx_v_self), __pyx_v_event, __pyx_v_args); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = NULL; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8__tracer_15MaxSwitchTracer_2_trace(struct __pyx_obj_6gevent_8__tracer_MaxSwitchTracer *__pyx_v_self, PyObject *__pyx_v_event, PyObject *__pyx_v_args) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_trace", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_8__tracer_15MaxSwitchTracer__trace(__pyx_v_self, __pyx_v_event, __pyx_v_args, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 159, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__tracer.MaxSwitchTracer._trace", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_tracer.py":169 - * switched_at - self.last_switch) - * - * def did_block_hub(self, hub): # <<<<<<<<<<<<<< - * if self.max_blocking == 0: - * # We never switched. Check the time now - */ - -static PyObject *__pyx_pw_6gevent_8__tracer_15MaxSwitchTracer_5did_block_hub(PyObject *__pyx_v_self, PyObject *__pyx_v_hub); /*proto*/ -static PyObject *__pyx_f_6gevent_8__tracer_15MaxSwitchTracer_did_block_hub(struct __pyx_obj_6gevent_8__tracer_MaxSwitchTracer *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_hub, int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - double __pyx_t_7; - __Pyx_RefNannySetupContext("did_block_hub", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_did_block_hub); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 169, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_8__tracer_15MaxSwitchTracer_5did_block_hub)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (!__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_hub); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 169, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_hub}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 169, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_hub}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 169, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 169, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_INCREF(__pyx_v_hub); - __Pyx_GIVEREF(__pyx_v_hub); - PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_hub); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 169, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/_tracer.py":170 - * - * def did_block_hub(self, hub): - * if self.max_blocking == 0: # <<<<<<<<<<<<<< - * # We never switched. Check the time now - * self.max_blocking = perf_counter() - self.last_switch - */ - __pyx_t_6 = ((__pyx_v_self->max_blocking == 0.0) != 0); - if (__pyx_t_6) { - - /* "src/gevent/_tracer.py":172 - * if self.max_blocking == 0: - * # We never switched. Check the time now - * self.max_blocking = perf_counter() - self.last_switch # <<<<<<<<<<<<<< - * - * if self.max_blocking > self.max_blocking_time: - */ - __Pyx_INCREF(__pyx_v_6gevent_8__tracer_perf_counter); - __pyx_t_2 = __pyx_v_6gevent_8__tracer_perf_counter; __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 172, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 172, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyFloat_FromDouble(__pyx_v_self->last_switch); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 172, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyNumber_Subtract(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 172, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_7 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_7 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 172, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_v_self->max_blocking = __pyx_t_7; - - /* "src/gevent/_tracer.py":170 - * - * def did_block_hub(self, hub): - * if self.max_blocking == 0: # <<<<<<<<<<<<<< - * # We never switched. Check the time now - * self.max_blocking = perf_counter() - self.last_switch - */ - } - - /* "src/gevent/_tracer.py":174 - * self.max_blocking = perf_counter() - self.last_switch - * - * if self.max_blocking > self.max_blocking_time: # <<<<<<<<<<<<<< - * return True, self.active_greenlet - * - */ - __pyx_t_6 = ((__pyx_v_self->max_blocking > __pyx_v_self->__pyx_base.max_blocking_time) != 0); - if (__pyx_t_6) { - - /* "src/gevent/_tracer.py":175 - * - * if self.max_blocking > self.max_blocking_time: - * return True, self.active_greenlet # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 175, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_INCREF(Py_True); - __Pyx_GIVEREF(Py_True); - PyTuple_SET_ITEM(__pyx_t_3, 0, Py_True); - __Pyx_INCREF(__pyx_v_self->__pyx_base.__pyx_base.active_greenlet); - __Pyx_GIVEREF(__pyx_v_self->__pyx_base.__pyx_base.active_greenlet); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->__pyx_base.__pyx_base.active_greenlet); - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - - /* "src/gevent/_tracer.py":174 - * self.max_blocking = perf_counter() - self.last_switch - * - * if self.max_blocking > self.max_blocking_time: # <<<<<<<<<<<<<< - * return True, self.active_greenlet - * - */ - } - - /* "src/gevent/_tracer.py":169 - * switched_at - self.last_switch) - * - * def did_block_hub(self, hub): # <<<<<<<<<<<<<< - * if self.max_blocking == 0: - * # We never switched. Check the time now - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent.__tracer.MaxSwitchTracer.did_block_hub", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__tracer_15MaxSwitchTracer_5did_block_hub(PyObject *__pyx_v_self, PyObject *__pyx_v_hub); /*proto*/ -static char __pyx_doc_6gevent_8__tracer_15MaxSwitchTracer_4did_block_hub[] = "MaxSwitchTracer.did_block_hub(self, hub)"; -static PyMethodDef __pyx_mdef_6gevent_8__tracer_15MaxSwitchTracer_5did_block_hub = {"did_block_hub", (PyCFunction)__pyx_pw_6gevent_8__tracer_15MaxSwitchTracer_5did_block_hub, METH_O, __pyx_doc_6gevent_8__tracer_15MaxSwitchTracer_4did_block_hub}; -static PyObject *__pyx_pw_6gevent_8__tracer_15MaxSwitchTracer_5did_block_hub(PyObject *__pyx_v_self, PyObject *__pyx_v_hub) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("did_block_hub (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8__tracer_15MaxSwitchTracer_4did_block_hub(((struct __pyx_obj_6gevent_8__tracer_MaxSwitchTracer *)__pyx_v_self), ((PyObject *)__pyx_v_hub)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8__tracer_15MaxSwitchTracer_4did_block_hub(struct __pyx_obj_6gevent_8__tracer_MaxSwitchTracer *__pyx_v_self, PyObject *__pyx_v_hub) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("did_block_hub", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_8__tracer_15MaxSwitchTracer_did_block_hub(__pyx_v_self, __pyx_v_hub, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 169, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__tracer.MaxSwitchTracer.did_block_hub", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__tracer.pxd":39 - * - * cdef class MaxSwitchTracer(_HubTracer): - * cpdef readonly double max_blocking # <<<<<<<<<<<<<< - * cpdef readonly double last_switch - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__tracer_15MaxSwitchTracer_12max_blocking_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_8__tracer_15MaxSwitchTracer_12max_blocking_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8__tracer_15MaxSwitchTracer_12max_blocking___get__(((struct __pyx_obj_6gevent_8__tracer_MaxSwitchTracer *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8__tracer_15MaxSwitchTracer_12max_blocking___get__(struct __pyx_obj_6gevent_8__tracer_MaxSwitchTracer *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->max_blocking); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 39, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__tracer.MaxSwitchTracer.max_blocking.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__tracer.pxd":40 - * cdef class MaxSwitchTracer(_HubTracer): - * cpdef readonly double max_blocking - * cpdef readonly double last_switch # <<<<<<<<<<<<<< - * - * @cython.locals(switched_at=double) - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__tracer_15MaxSwitchTracer_11last_switch_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_8__tracer_15MaxSwitchTracer_11last_switch_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8__tracer_15MaxSwitchTracer_11last_switch___get__(((struct __pyx_obj_6gevent_8__tracer_MaxSwitchTracer *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8__tracer_15MaxSwitchTracer_11last_switch___get__(struct __pyx_obj_6gevent_8__tracer_MaxSwitchTracer *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->last_switch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 40, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__tracer.MaxSwitchTracer.last_switch.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} -static struct __pyx_vtabstruct_6gevent_8__tracer_GreenletTracer __pyx_vtable_6gevent_8__tracer_GreenletTracer; - -static PyObject *__pyx_tp_new_6gevent_8__tracer_GreenletTracer(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - struct __pyx_obj_6gevent_8__tracer_GreenletTracer *p; - PyObject *o; - if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { - o = (*t->tp_alloc)(t, 0); - } else { - o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); - } - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_8__tracer_GreenletTracer *)o); - p->__pyx_vtab = __pyx_vtabptr_6gevent_8__tracer_GreenletTracer; - p->active_greenlet = Py_None; Py_INCREF(Py_None); - p->previous_trace_function = Py_None; Py_INCREF(Py_None); - return o; -} - -static void __pyx_tp_dealloc_6gevent_8__tracer_GreenletTracer(PyObject *o) { - struct __pyx_obj_6gevent_8__tracer_GreenletTracer *p = (struct __pyx_obj_6gevent_8__tracer_GreenletTracer *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - #endif - PyObject_GC_UnTrack(o); - Py_CLEAR(p->active_greenlet); - Py_CLEAR(p->previous_trace_function); - (*Py_TYPE(o)->tp_free)(o); -} - -static int __pyx_tp_traverse_6gevent_8__tracer_GreenletTracer(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_6gevent_8__tracer_GreenletTracer *p = (struct __pyx_obj_6gevent_8__tracer_GreenletTracer *)o; - if (p->active_greenlet) { - e = (*v)(p->active_greenlet, a); if (e) return e; - } - if (p->previous_trace_function) { - e = (*v)(p->previous_trace_function, a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_6gevent_8__tracer_GreenletTracer(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_6gevent_8__tracer_GreenletTracer *p = (struct __pyx_obj_6gevent_8__tracer_GreenletTracer *)o; - tmp = ((PyObject*)p->active_greenlet); - p->active_greenlet = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->previous_trace_function); - p->previous_trace_function = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyObject *__pyx_getprop_6gevent_8__tracer_14GreenletTracer_active_greenlet(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_8__tracer_14GreenletTracer_15active_greenlet_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_8__tracer_14GreenletTracer_previous_trace_function(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_8__tracer_14GreenletTracer_23previous_trace_function_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_8__tracer_14GreenletTracer_greenlet_switch_counter(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_8__tracer_14GreenletTracer_23greenlet_switch_counter_1__get__(o); -} - -static PyMethodDef __pyx_methods_6gevent_8__tracer_GreenletTracer[] = { - {"ignore_current_greenlet_blocking", (PyCFunction)__pyx_pw_6gevent_8__tracer_14GreenletTracer_11ignore_current_greenlet_blocking, METH_NOARGS, __pyx_doc_6gevent_8__tracer_14GreenletTracer_10ignore_current_greenlet_blocking}, - {"monitor_current_greenlet_blocking", (PyCFunction)__pyx_pw_6gevent_8__tracer_14GreenletTracer_13monitor_current_greenlet_blocking, METH_NOARGS, __pyx_doc_6gevent_8__tracer_14GreenletTracer_12monitor_current_greenlet_blocking}, - {"did_block_hub_report", (PyCFunction)__pyx_pw_6gevent_8__tracer_14GreenletTracer_15did_block_hub_report, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_8__tracer_14GreenletTracer_14did_block_hub_report}, - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_6gevent_8__tracer_GreenletTracer[] = { - {(char *)"active_greenlet", __pyx_getprop_6gevent_8__tracer_14GreenletTracer_active_greenlet, 0, (char *)0, 0}, - {(char *)"previous_trace_function", __pyx_getprop_6gevent_8__tracer_14GreenletTracer_previous_trace_function, 0, (char *)0, 0}, - {(char *)"greenlet_switch_counter", __pyx_getprop_6gevent_8__tracer_14GreenletTracer_greenlet_switch_counter, 0, (char *)0, 0}, - {0, 0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_8__tracer_GreenletTracer = { - PyVarObject_HEAD_INIT(0, 0) - "gevent.__tracer.GreenletTracer", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_8__tracer_GreenletTracer), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_8__tracer_GreenletTracer, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - __pyx_pw_6gevent_8__tracer_14GreenletTracer_7__call__, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "GreenletTracer()", /*tp_doc*/ - __pyx_tp_traverse_6gevent_8__tracer_GreenletTracer, /*tp_traverse*/ - __pyx_tp_clear_6gevent_8__tracer_GreenletTracer, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_8__tracer_GreenletTracer, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_6gevent_8__tracer_GreenletTracer, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_8__tracer_14GreenletTracer_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_8__tracer_GreenletTracer, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; -static struct __pyx_vtabstruct_6gevent_8__tracer__HubTracer __pyx_vtable_6gevent_8__tracer__HubTracer; - -static PyObject *__pyx_tp_new_6gevent_8__tracer__HubTracer(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_obj_6gevent_8__tracer__HubTracer *p; - PyObject *o = __pyx_tp_new_6gevent_8__tracer_GreenletTracer(t, a, k); - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_8__tracer__HubTracer *)o); - p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6gevent_8__tracer_GreenletTracer*)__pyx_vtabptr_6gevent_8__tracer__HubTracer; - p->hub = Py_None; Py_INCREF(Py_None); - return o; -} - -static void __pyx_tp_dealloc_6gevent_8__tracer__HubTracer(PyObject *o) { - struct __pyx_obj_6gevent_8__tracer__HubTracer *p = (struct __pyx_obj_6gevent_8__tracer__HubTracer *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - #endif - PyObject_GC_UnTrack(o); - Py_CLEAR(p->hub); - PyObject_GC_Track(o); - __pyx_tp_dealloc_6gevent_8__tracer_GreenletTracer(o); -} - -static int __pyx_tp_traverse_6gevent_8__tracer__HubTracer(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_6gevent_8__tracer__HubTracer *p = (struct __pyx_obj_6gevent_8__tracer__HubTracer *)o; - e = __pyx_tp_traverse_6gevent_8__tracer_GreenletTracer(o, v, a); if (e) return e; - if (p->hub) { - e = (*v)(p->hub, a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_6gevent_8__tracer__HubTracer(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_6gevent_8__tracer__HubTracer *p = (struct __pyx_obj_6gevent_8__tracer__HubTracer *)o; - __pyx_tp_clear_6gevent_8__tracer_GreenletTracer(o); - tmp = ((PyObject*)p->hub); - p->hub = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyObject *__pyx_getprop_6gevent_8__tracer_10_HubTracer_hub(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_8__tracer_10_HubTracer_3hub_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_8__tracer_10_HubTracer_max_blocking_time(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_8__tracer_10_HubTracer_17max_blocking_time_1__get__(o); -} - -static PyMethodDef __pyx_methods_6gevent_8__tracer__HubTracer[] = { - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_6gevent_8__tracer__HubTracer[] = { - {(char *)"hub", __pyx_getprop_6gevent_8__tracer_10_HubTracer_hub, 0, (char *)0, 0}, - {(char *)"max_blocking_time", __pyx_getprop_6gevent_8__tracer_10_HubTracer_max_blocking_time, 0, (char *)0, 0}, - {0, 0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_8__tracer__HubTracer = { - PyVarObject_HEAD_INIT(0, 0) - "gevent.__tracer._HubTracer", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_8__tracer__HubTracer), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_8__tracer__HubTracer, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_8__tracer_14GreenletTracer_7__call__, /*tp_call*/ - #else - 0, /*tp_call*/ - #endif - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "_HubTracer(hub, max_blocking_time)", /*tp_doc*/ - __pyx_tp_traverse_6gevent_8__tracer__HubTracer, /*tp_traverse*/ - __pyx_tp_clear_6gevent_8__tracer__HubTracer, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_8__tracer__HubTracer, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_6gevent_8__tracer__HubTracer, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_8__tracer_10_HubTracer_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_8__tracer__HubTracer, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; -static struct __pyx_vtabstruct_6gevent_8__tracer_HubSwitchTracer __pyx_vtable_6gevent_8__tracer_HubSwitchTracer; - -static PyObject *__pyx_tp_new_6gevent_8__tracer_HubSwitchTracer(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_obj_6gevent_8__tracer_HubSwitchTracer *p; - PyObject *o = __pyx_tp_new_6gevent_8__tracer__HubTracer(t, a, k); - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_8__tracer_HubSwitchTracer *)o); - p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6gevent_8__tracer_GreenletTracer*)__pyx_vtabptr_6gevent_8__tracer_HubSwitchTracer; - return o; -} - -static PyObject *__pyx_getprop_6gevent_8__tracer_15HubSwitchTracer_last_entered_hub(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_8__tracer_15HubSwitchTracer_16last_entered_hub_1__get__(o); -} - -static PyMethodDef __pyx_methods_6gevent_8__tracer_HubSwitchTracer[] = { - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_6gevent_8__tracer_HubSwitchTracer[] = { - {(char *)"last_entered_hub", __pyx_getprop_6gevent_8__tracer_15HubSwitchTracer_last_entered_hub, 0, (char *)0, 0}, - {0, 0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_8__tracer_HubSwitchTracer = { - PyVarObject_HEAD_INIT(0, 0) - "gevent.__tracer.HubSwitchTracer", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_8__tracer_HubSwitchTracer), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_8__tracer__HubTracer, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_8__tracer_14GreenletTracer_7__call__, /*tp_call*/ - #else - 0, /*tp_call*/ - #endif - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "HubSwitchTracer(hub, max_blocking_time)", /*tp_doc*/ - __pyx_tp_traverse_6gevent_8__tracer__HubTracer, /*tp_traverse*/ - __pyx_tp_clear_6gevent_8__tracer__HubTracer, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_8__tracer_HubSwitchTracer, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_6gevent_8__tracer_HubSwitchTracer, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_8__tracer_15HubSwitchTracer_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_8__tracer_HubSwitchTracer, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; -static struct __pyx_vtabstruct_6gevent_8__tracer_MaxSwitchTracer __pyx_vtable_6gevent_8__tracer_MaxSwitchTracer; - -static PyObject *__pyx_tp_new_6gevent_8__tracer_MaxSwitchTracer(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_obj_6gevent_8__tracer_MaxSwitchTracer *p; - PyObject *o = __pyx_tp_new_6gevent_8__tracer__HubTracer(t, a, k); - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_8__tracer_MaxSwitchTracer *)o); - p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6gevent_8__tracer_GreenletTracer*)__pyx_vtabptr_6gevent_8__tracer_MaxSwitchTracer; - return o; -} - -static PyObject *__pyx_getprop_6gevent_8__tracer_15MaxSwitchTracer_max_blocking(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_8__tracer_15MaxSwitchTracer_12max_blocking_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_8__tracer_15MaxSwitchTracer_last_switch(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_8__tracer_15MaxSwitchTracer_11last_switch_1__get__(o); -} - -static PyMethodDef __pyx_methods_6gevent_8__tracer_MaxSwitchTracer[] = { - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_6gevent_8__tracer_MaxSwitchTracer[] = { - {(char *)"max_blocking", __pyx_getprop_6gevent_8__tracer_15MaxSwitchTracer_max_blocking, 0, (char *)0, 0}, - {(char *)"last_switch", __pyx_getprop_6gevent_8__tracer_15MaxSwitchTracer_last_switch, 0, (char *)0, 0}, - {0, 0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_8__tracer_MaxSwitchTracer = { - PyVarObject_HEAD_INIT(0, 0) - "gevent.__tracer.MaxSwitchTracer", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_8__tracer_MaxSwitchTracer), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_8__tracer__HubTracer, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_8__tracer_14GreenletTracer_7__call__, /*tp_call*/ - #else - 0, /*tp_call*/ - #endif - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "MaxSwitchTracer(hub, max_blocking_time)", /*tp_doc*/ - __pyx_tp_traverse_6gevent_8__tracer__HubTracer, /*tp_traverse*/ - __pyx_tp_clear_6gevent_8__tracer__HubTracer, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_8__tracer_MaxSwitchTracer, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_6gevent_8__tracer_MaxSwitchTracer, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_8__tracer_15MaxSwitchTracer_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_8__tracer_MaxSwitchTracer, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; - -static PyMethodDef __pyx_methods[] = { - {0, 0, 0, 0} -}; - -#if PY_MAJOR_VERSION >= 3 -#if CYTHON_PEP489_MULTI_PHASE_INIT -static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ -static int __pyx_pymod_exec___tracer(PyObject* module); /*proto*/ -static PyModuleDef_Slot __pyx_moduledef_slots[] = { - {Py_mod_create, (void*)__pyx_pymod_create}, - {Py_mod_exec, (void*)__pyx_pymod_exec___tracer}, - {0, NULL} -}; -#endif - -static struct PyModuleDef __pyx_moduledef = { - PyModuleDef_HEAD_INIT, - "__tracer", - 0, /* m_doc */ - #if CYTHON_PEP489_MULTI_PHASE_INIT - 0, /* m_size */ - #else - -1, /* m_size */ - #endif - __pyx_methods /* m_methods */, - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_moduledef_slots, /* m_slots */ - #else - NULL, /* m_reload */ - #endif - NULL, /* m_traverse */ - NULL, /* m_clear */ - NULL /* m_free */ -}; -#endif - -static __Pyx_StringTabEntry __pyx_string_tab[] = { - {&__pyx_kp_s_Blocked_Stack_for_thread_id_s, __pyx_k_Blocked_Stack_for_thread_id_s, sizeof(__pyx_k_Blocked_Stack_for_thread_id_s), 0, 0, 1, 0}, - {&__pyx_n_s_GreenletTracer, __pyx_k_GreenletTracer, sizeof(__pyx_k_GreenletTracer), 0, 0, 1, 1}, - {&__pyx_n_s_GreenletTracer__trace, __pyx_k_GreenletTracer__trace, sizeof(__pyx_k_GreenletTracer__trace), 0, 0, 1, 1}, - {&__pyx_n_s_GreenletTracer_did_block_hub, __pyx_k_GreenletTracer_did_block_hub, sizeof(__pyx_k_GreenletTracer_did_block_hub), 0, 0, 1, 1}, - {&__pyx_n_s_GreenletTracer_did_block_hub_rep, __pyx_k_GreenletTracer_did_block_hub_rep, sizeof(__pyx_k_GreenletTracer_did_block_hub_rep), 0, 0, 1, 1}, - {&__pyx_n_s_GreenletTracer_ignore_current_gr, __pyx_k_GreenletTracer_ignore_current_gr, sizeof(__pyx_k_GreenletTracer_ignore_current_gr), 0, 0, 1, 1}, - {&__pyx_n_s_GreenletTracer_kill, __pyx_k_GreenletTracer_kill, sizeof(__pyx_k_GreenletTracer_kill), 0, 0, 1, 1}, - {&__pyx_n_s_GreenletTracer_monitor_current_g, __pyx_k_GreenletTracer_monitor_current_g, sizeof(__pyx_k_GreenletTracer_monitor_current_g), 0, 0, 1, 1}, - {&__pyx_n_s_HubSwitchTracer, __pyx_k_HubSwitchTracer, sizeof(__pyx_k_HubSwitchTracer), 0, 0, 1, 1}, - {&__pyx_n_s_HubSwitchTracer__trace, __pyx_k_HubSwitchTracer__trace, sizeof(__pyx_k_HubSwitchTracer__trace), 0, 0, 1, 1}, - {&__pyx_n_s_HubSwitchTracer_did_block_hub, __pyx_k_HubSwitchTracer_did_block_hub, sizeof(__pyx_k_HubSwitchTracer_did_block_hub), 0, 0, 1, 1}, - {&__pyx_n_s_HubTracer_kill, __pyx_k_HubTracer_kill, sizeof(__pyx_k_HubTracer_kill), 0, 0, 1, 1}, - {&__pyx_kp_s_Info, __pyx_k_Info, sizeof(__pyx_k_Info), 0, 0, 1, 0}, - {&__pyx_n_s_KeyError, __pyx_k_KeyError, sizeof(__pyx_k_KeyError), 0, 0, 1, 1}, - {&__pyx_n_s_MaxSwitchTracer, __pyx_k_MaxSwitchTracer, sizeof(__pyx_k_MaxSwitchTracer), 0, 0, 1, 1}, - {&__pyx_n_s_MaxSwitchTracer__trace, __pyx_k_MaxSwitchTracer__trace, sizeof(__pyx_k_MaxSwitchTracer__trace), 0, 0, 1, 1}, - {&__pyx_n_s_MaxSwitchTracer_did_block_hub, __pyx_k_MaxSwitchTracer_did_block_hub, sizeof(__pyx_k_MaxSwitchTracer_did_block_hub), 0, 0, 1, 1}, - {&__pyx_kp_s_Reported_by_s, __pyx_k_Reported_by_s, sizeof(__pyx_k_Reported_by_s), 0, 0, 1, 0}, - {&__pyx_kp_s_Unknown_No_thread_found_for_hub, __pyx_k_Unknown_No_thread_found_for_hub, sizeof(__pyx_k_Unknown_No_thread_found_for_hub), 0, 0, 1, 0}, - {&__pyx_kp_s__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 0, 1, 0}, - {&__pyx_n_s_active_greenlet, __pyx_k_active_greenlet, sizeof(__pyx_k_active_greenlet), 0, 0, 1, 1}, - {&__pyx_n_s_all, __pyx_k_all, sizeof(__pyx_k_all), 0, 0, 1, 1}, - {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1}, - #if PY_MAJOR_VERSION >= 3 - {&__pyx_kp_s_b, __pyx_k_, sizeof(__pyx_k_), 0, 1, 0, 0}, - #else - {&__pyx_kp_s_b, __pyx_k_b, sizeof(__pyx_k_b), 0, 0, 1, 0}, - #endif - {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, - {&__pyx_n_s_current_frames, __pyx_k_current_frames, sizeof(__pyx_k_current_frames), 0, 0, 1, 1}, - {&__pyx_n_s_did_block_hub, __pyx_k_did_block_hub, sizeof(__pyx_k_did_block_hub), 0, 0, 1, 1}, - {&__pyx_n_s_did_block_hub_report, __pyx_k_did_block_hub_report, sizeof(__pyx_k_did_block_hub_report), 0, 0, 1, 1}, - {&__pyx_n_s_event, __pyx_k_event, sizeof(__pyx_k_event), 0, 0, 1, 1}, - {&__pyx_n_s_format_kwargs, __pyx_k_format_kwargs, sizeof(__pyx_k_format_kwargs), 0, 0, 1, 1}, - {&__pyx_n_s_format_run_info, __pyx_k_format_run_info, sizeof(__pyx_k_format_run_info), 0, 0, 1, 1}, - {&__pyx_n_s_format_stack, __pyx_k_format_stack, sizeof(__pyx_k_format_stack), 0, 0, 1, 1}, - {&__pyx_n_s_frame, __pyx_k_frame, sizeof(__pyx_k_frame), 0, 0, 1, 1}, - {&__pyx_n_s_getcurrent, __pyx_k_getcurrent, sizeof(__pyx_k_getcurrent), 0, 0, 1, 1}, - {&__pyx_n_s_gevent___tracer, __pyx_k_gevent___tracer, sizeof(__pyx_k_gevent___tracer), 0, 0, 1, 1}, - {&__pyx_n_s_gevent__compat, __pyx_k_gevent__compat, sizeof(__pyx_k_gevent__compat), 0, 0, 1, 1}, - {&__pyx_n_s_gevent__util, __pyx_k_gevent__util, sizeof(__pyx_k_gevent__util), 0, 0, 1, 1}, - {&__pyx_n_s_gevent_util, __pyx_k_gevent_util, sizeof(__pyx_k_gevent_util), 0, 0, 1, 1}, - {&__pyx_n_s_gmctime, __pyx_k_gmctime, sizeof(__pyx_k_gmctime), 0, 0, 1, 1}, - {&__pyx_n_s_greenlet, __pyx_k_greenlet, sizeof(__pyx_k_greenlet), 0, 0, 1, 1}, - {&__pyx_n_s_hex, __pyx_k_hex, sizeof(__pyx_k_hex), 0, 0, 1, 1}, - {&__pyx_n_s_hub, __pyx_k_hub, sizeof(__pyx_k_hub), 0, 0, 1, 1}, - {&__pyx_n_s_ignore_current_greenlet_blocking, __pyx_k_ignore_current_greenlet_blocking, sizeof(__pyx_k_ignore_current_greenlet_blocking), 0, 0, 1, 1}, - {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, - {&__pyx_n_s_import_c_accel, __pyx_k_import_c_accel, sizeof(__pyx_k_import_c_accel), 0, 0, 1, 1}, - {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1}, - {&__pyx_n_s_join, __pyx_k_join, sizeof(__pyx_k_join), 0, 0, 1, 1}, - {&__pyx_n_s_kill, __pyx_k_kill, sizeof(__pyx_k_kill), 0, 0, 1, 1}, - {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, - {&__pyx_n_s_max_blocking_time, __pyx_k_max_blocking_time, sizeof(__pyx_k_max_blocking_time), 0, 0, 1, 1}, - {&__pyx_n_s_monitor_current_greenlet_blockin, __pyx_k_monitor_current_greenlet_blockin, sizeof(__pyx_k_monitor_current_greenlet_blockin), 0, 0, 1, 1}, - {&__pyx_n_s_perf_counter, __pyx_k_perf_counter, sizeof(__pyx_k_perf_counter), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_capi, __pyx_k_pyx_capi, sizeof(__pyx_k_pyx_capi), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1}, - {&__pyx_n_s_report, __pyx_k_report, sizeof(__pyx_k_report), 0, 0, 1, 1}, - {&__pyx_kp_s_s_Greenlet_s_appears_to_be_bloc, __pyx_k_s_Greenlet_s_appears_to_be_bloc, sizeof(__pyx_k_s_Greenlet_s_appears_to_be_bloc), 0, 0, 1, 0}, - {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1}, - {&__pyx_n_s_settrace, __pyx_k_settrace, sizeof(__pyx_k_settrace), 0, 0, 1, 1}, - {&__pyx_kp_s_src_gevent__tracer_py, __pyx_k_src_gevent__tracer_py, sizeof(__pyx_k_src_gevent__tracer_py), 0, 0, 1, 0}, - {&__pyx_n_s_stack, __pyx_k_stack, sizeof(__pyx_k_stack), 0, 0, 1, 1}, - {&__pyx_n_s_switch, __pyx_k_switch, sizeof(__pyx_k_switch), 0, 0, 1, 1}, - {&__pyx_n_s_sys, __pyx_k_sys, sizeof(__pyx_k_sys), 0, 0, 1, 1}, - {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, - {&__pyx_n_s_thread_ident, __pyx_k_thread_ident, sizeof(__pyx_k_thread_ident), 0, 0, 1, 1}, - {&__pyx_n_s_throw, __pyx_k_throw, sizeof(__pyx_k_throw), 0, 0, 1, 1}, - {&__pyx_n_s_trace, __pyx_k_trace, sizeof(__pyx_k_trace), 0, 0, 1, 1}, - {&__pyx_n_s_traceback, __pyx_k_traceback, sizeof(__pyx_k_traceback), 0, 0, 1, 1}, - {0, 0, 0, 0, 0, 0, 0} -}; -static int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin_KeyError = __Pyx_GetBuiltinName(__pyx_n_s_KeyError); if (!__pyx_builtin_KeyError) __PYX_ERR(0, 108, __pyx_L1_error) - __pyx_builtin_hex = __Pyx_GetBuiltinName(__pyx_n_s_hex); if (!__pyx_builtin_hex) __PYX_ERR(0, 114, __pyx_L1_error) - return 0; - __pyx_L1_error:; - return -1; -} - -static int __Pyx_InitCachedConstants(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - - /* "src/gevent/_tracer.py":49 - * self._killed = False - * - * def kill(self): # <<<<<<<<<<<<<< - * # Must be called in the monitored thread. - * if not self._killed: - */ - __pyx_tuple__3 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 49, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__3); - __Pyx_GIVEREF(__pyx_tuple__3); - __pyx_codeobj__4 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__3, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__tracer_py, __pyx_n_s_kill, 49, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__4)) __PYX_ERR(0, 49, __pyx_L1_error) - - /* "src/gevent/_tracer.py":56 - * self.previous_trace_function = None - * - * def _trace(self, event, args): # <<<<<<<<<<<<<< - * # This function runs in the thread we are monitoring. - * self.greenlet_switch_counter += 1 - */ - __pyx_tuple__5 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_event, __pyx_n_s_args); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__5); - __Pyx_GIVEREF(__pyx_tuple__5); - __pyx_codeobj__6 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__5, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__tracer_py, __pyx_n_s_trace, 56, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__6)) __PYX_ERR(0, 56, __pyx_L1_error) - - /* "src/gevent/_tracer.py":71 - * return self._trace(event, args) - * - * def did_block_hub(self, hub): # <<<<<<<<<<<<<< - * # Check to see if we have blocked since the last call to this - * # method. Returns a true value if we blocked (not in the hub), - */ - __pyx_tuple__7 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_hub); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 71, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__7); - __Pyx_GIVEREF(__pyx_tuple__7); - __pyx_codeobj__8 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__7, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__tracer_py, __pyx_n_s_did_block_hub, 71, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__8)) __PYX_ERR(0, 71, __pyx_L1_error) - - /* "src/gevent/_tracer.py":94 - * return True, active_greenlet - * - * def ignore_current_greenlet_blocking(self): # <<<<<<<<<<<<<< - * # Don't pay attention to the current greenlet. - * self.active_greenlet = None - */ - __pyx_tuple__9 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 94, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__9); - __Pyx_GIVEREF(__pyx_tuple__9); - __pyx_codeobj__10 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__9, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__tracer_py, __pyx_n_s_ignore_current_greenlet_blocking, 94, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__10)) __PYX_ERR(0, 94, __pyx_L1_error) - - /* "src/gevent/_tracer.py":98 - * self.active_greenlet = None - * - * def monitor_current_greenlet_blocking(self): # <<<<<<<<<<<<<< - * self.active_greenlet = getcurrent() - * - */ - __pyx_tuple__11 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 98, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__11); - __Pyx_GIVEREF(__pyx_tuple__11); - __pyx_codeobj__12 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__11, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__tracer_py, __pyx_n_s_monitor_current_greenlet_blockin, 98, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__12)) __PYX_ERR(0, 98, __pyx_L1_error) - - /* "src/gevent/_tracer.py":101 - * self.active_greenlet = getcurrent() - * - * def did_block_hub_report(self, hub, active_greenlet, format_kwargs): # <<<<<<<<<<<<<< - * report = ['=' * 80, - * '\n%s : Greenlet %s appears to be blocked' % - */ - __pyx_tuple__13 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_hub, __pyx_n_s_active_greenlet, __pyx_n_s_format_kwargs, __pyx_n_s_report, __pyx_n_s_frame, __pyx_n_s_stack); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 101, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__13); - __Pyx_GIVEREF(__pyx_tuple__13); - __pyx_codeobj__14 = (PyObject*)__Pyx_PyCode_New(4, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__tracer_py, __pyx_n_s_did_block_hub_report, 101, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__14)) __PYX_ERR(0, 101, __pyx_L1_error) - - /* "src/gevent/_tracer.py":128 - * self.hub = hub - * - * def kill(self): # <<<<<<<<<<<<<< - * self.hub = None - * GreenletTracer.kill(self) - */ - __pyx_tuple__15 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 128, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__15); - __Pyx_GIVEREF(__pyx_tuple__15); - __pyx_codeobj__16 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__15, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__tracer_py, __pyx_n_s_kill, 128, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__16)) __PYX_ERR(0, 128, __pyx_L1_error) - - /* "src/gevent/_tracer.py":140 - * self.last_entered_hub = 0 - * - * def _trace(self, event, args): # <<<<<<<<<<<<<< - * GreenletTracer._trace(self, event, args) - * if self.active_greenlet is self.hub: - */ - __pyx_tuple__17 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_event, __pyx_n_s_args); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__17); - __Pyx_GIVEREF(__pyx_tuple__17); - __pyx_codeobj__18 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__tracer_py, __pyx_n_s_trace, 140, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__18)) __PYX_ERR(0, 140, __pyx_L1_error) - - /* "src/gevent/_tracer.py":145 - * self.last_entered_hub = perf_counter() - * - * def did_block_hub(self, hub): # <<<<<<<<<<<<<< - * if perf_counter() - self.last_entered_hub > self.max_blocking_time: - * return True, self.active_greenlet - */ - __pyx_tuple__19 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_hub); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 145, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__19); - __Pyx_GIVEREF(__pyx_tuple__19); - __pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__19, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__tracer_py, __pyx_n_s_did_block_hub, 145, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) __PYX_ERR(0, 145, __pyx_L1_error) - - /* "src/gevent/_tracer.py":159 - * self.max_blocking = 0 - * - * def _trace(self, event, args): # <<<<<<<<<<<<<< - * old_active = self.active_greenlet - * GreenletTracer._trace(self, event, args) - */ - __pyx_tuple__21 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_event, __pyx_n_s_args); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 159, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__21); - __Pyx_GIVEREF(__pyx_tuple__21); - __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__tracer_py, __pyx_n_s_trace, 159, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(0, 159, __pyx_L1_error) - - /* "src/gevent/_tracer.py":169 - * switched_at - self.last_switch) - * - * def did_block_hub(self, hub): # <<<<<<<<<<<<<< - * if self.max_blocking == 0: - * # We never switched. Check the time now - */ - __pyx_tuple__23 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_hub); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 169, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__23); - __Pyx_GIVEREF(__pyx_tuple__23); - __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__tracer_py, __pyx_n_s_did_block_hub, 169, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 169, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_InitGlobals(void) { - if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - return 0; - __pyx_L1_error:; - return -1; -} - -static int __Pyx_modinit_global_init_code(void); /*proto*/ -static int __Pyx_modinit_variable_export_code(void); /*proto*/ -static int __Pyx_modinit_function_export_code(void); /*proto*/ -static int __Pyx_modinit_type_init_code(void); /*proto*/ -static int __Pyx_modinit_type_import_code(void); /*proto*/ -static int __Pyx_modinit_variable_import_code(void); /*proto*/ -static int __Pyx_modinit_function_import_code(void); /*proto*/ - -static int __Pyx_modinit_global_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); - /*--- Global init code ---*/ - __pyx_v_6gevent_8__tracer_sys = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_8__tracer_traceback = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_8__tracer_settrace = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_8__tracer_getcurrent = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_8__tracer_format_run_info = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_8__tracer_perf_counter = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_8__tracer_gmctime = Py_None; Py_INCREF(Py_None); - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_variable_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); - /*--- Variable export code ---*/ - if (__Pyx_ExportVoidPtr(__pyx_n_s_sys, (void *)&__pyx_v_6gevent_8__tracer_sys, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_traceback, (void *)&__pyx_v_6gevent_8__tracer_traceback, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_settrace, (void *)&__pyx_v_6gevent_8__tracer_settrace, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_getcurrent, (void *)&__pyx_v_6gevent_8__tracer_getcurrent, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_format_run_info, (void *)&__pyx_v_6gevent_8__tracer_format_run_info, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_perf_counter, (void *)&__pyx_v_6gevent_8__tracer_perf_counter, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_gmctime, (void *)&__pyx_v_6gevent_8__tracer_gmctime, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_function_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); - /*--- Function export code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_type_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); - /*--- Type init code ---*/ - __pyx_vtabptr_6gevent_8__tracer_GreenletTracer = &__pyx_vtable_6gevent_8__tracer_GreenletTracer; - __pyx_vtable_6gevent_8__tracer_GreenletTracer._trace = (PyObject *(*)(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *, PyObject *, PyObject *, int __pyx_skip_dispatch))__pyx_f_6gevent_8__tracer_14GreenletTracer__trace; - __pyx_vtable_6gevent_8__tracer_GreenletTracer.did_block_hub = (PyObject *(*)(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *, PyObject *, int __pyx_skip_dispatch))__pyx_f_6gevent_8__tracer_14GreenletTracer_did_block_hub; - __pyx_vtable_6gevent_8__tracer_GreenletTracer.kill = (PyObject *(*)(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *, int __pyx_skip_dispatch))__pyx_f_6gevent_8__tracer_14GreenletTracer_kill; - if (PyType_Ready(&__pyx_type_6gevent_8__tracer_GreenletTracer) < 0) __PYX_ERR(0, 27, __pyx_L1_error) - __pyx_type_6gevent_8__tracer_GreenletTracer.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_8__tracer_GreenletTracer.tp_dictoffset && __pyx_type_6gevent_8__tracer_GreenletTracer.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_8__tracer_GreenletTracer.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - if (__Pyx_SetVtable(__pyx_type_6gevent_8__tracer_GreenletTracer.tp_dict, __pyx_vtabptr_6gevent_8__tracer_GreenletTracer) < 0) __PYX_ERR(0, 27, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "GreenletTracer", (PyObject *)&__pyx_type_6gevent_8__tracer_GreenletTracer) < 0) __PYX_ERR(0, 27, __pyx_L1_error) - __pyx_ptype_6gevent_8__tracer_GreenletTracer = &__pyx_type_6gevent_8__tracer_GreenletTracer; - __pyx_vtabptr_6gevent_8__tracer__HubTracer = &__pyx_vtable_6gevent_8__tracer__HubTracer; - __pyx_vtable_6gevent_8__tracer__HubTracer.__pyx_base = *__pyx_vtabptr_6gevent_8__tracer_GreenletTracer; - __pyx_vtable_6gevent_8__tracer__HubTracer.__pyx_base.kill = (PyObject *(*)(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *, int __pyx_skip_dispatch))__pyx_f_6gevent_8__tracer_10_HubTracer_kill; - __pyx_type_6gevent_8__tracer__HubTracer.tp_base = __pyx_ptype_6gevent_8__tracer_GreenletTracer; - if (PyType_Ready(&__pyx_type_6gevent_8__tracer__HubTracer) < 0) __PYX_ERR(0, 122, __pyx_L1_error) - __pyx_type_6gevent_8__tracer__HubTracer.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_8__tracer__HubTracer.tp_dictoffset && __pyx_type_6gevent_8__tracer__HubTracer.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_8__tracer__HubTracer.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - if (__Pyx_SetVtable(__pyx_type_6gevent_8__tracer__HubTracer.tp_dict, __pyx_vtabptr_6gevent_8__tracer__HubTracer) < 0) __PYX_ERR(0, 122, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "_HubTracer", (PyObject *)&__pyx_type_6gevent_8__tracer__HubTracer) < 0) __PYX_ERR(0, 122, __pyx_L1_error) - __pyx_ptype_6gevent_8__tracer__HubTracer = &__pyx_type_6gevent_8__tracer__HubTracer; - __pyx_vtabptr_6gevent_8__tracer_HubSwitchTracer = &__pyx_vtable_6gevent_8__tracer_HubSwitchTracer; - __pyx_vtable_6gevent_8__tracer_HubSwitchTracer.__pyx_base = *__pyx_vtabptr_6gevent_8__tracer__HubTracer; - __pyx_vtable_6gevent_8__tracer_HubSwitchTracer.__pyx_base.__pyx_base._trace = (PyObject *(*)(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *, PyObject *, PyObject *, int __pyx_skip_dispatch))__pyx_f_6gevent_8__tracer_15HubSwitchTracer__trace; - __pyx_vtable_6gevent_8__tracer_HubSwitchTracer.__pyx_base.__pyx_base.did_block_hub = (PyObject *(*)(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *, PyObject *, int __pyx_skip_dispatch))__pyx_f_6gevent_8__tracer_15HubSwitchTracer_did_block_hub; - __pyx_type_6gevent_8__tracer_HubSwitchTracer.tp_base = __pyx_ptype_6gevent_8__tracer__HubTracer; - if (PyType_Ready(&__pyx_type_6gevent_8__tracer_HubSwitchTracer) < 0) __PYX_ERR(0, 133, __pyx_L1_error) - __pyx_type_6gevent_8__tracer_HubSwitchTracer.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_8__tracer_HubSwitchTracer.tp_dictoffset && __pyx_type_6gevent_8__tracer_HubSwitchTracer.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_8__tracer_HubSwitchTracer.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - if (__Pyx_SetVtable(__pyx_type_6gevent_8__tracer_HubSwitchTracer.tp_dict, __pyx_vtabptr_6gevent_8__tracer_HubSwitchTracer) < 0) __PYX_ERR(0, 133, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "HubSwitchTracer", (PyObject *)&__pyx_type_6gevent_8__tracer_HubSwitchTracer) < 0) __PYX_ERR(0, 133, __pyx_L1_error) - __pyx_ptype_6gevent_8__tracer_HubSwitchTracer = &__pyx_type_6gevent_8__tracer_HubSwitchTracer; - __pyx_vtabptr_6gevent_8__tracer_MaxSwitchTracer = &__pyx_vtable_6gevent_8__tracer_MaxSwitchTracer; - __pyx_vtable_6gevent_8__tracer_MaxSwitchTracer.__pyx_base = *__pyx_vtabptr_6gevent_8__tracer__HubTracer; - __pyx_vtable_6gevent_8__tracer_MaxSwitchTracer.__pyx_base.__pyx_base._trace = (PyObject *(*)(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *, PyObject *, PyObject *, int __pyx_skip_dispatch))__pyx_f_6gevent_8__tracer_15MaxSwitchTracer__trace; - __pyx_vtable_6gevent_8__tracer_MaxSwitchTracer.__pyx_base.__pyx_base.did_block_hub = (PyObject *(*)(struct __pyx_obj_6gevent_8__tracer_GreenletTracer *, PyObject *, int __pyx_skip_dispatch))__pyx_f_6gevent_8__tracer_15MaxSwitchTracer_did_block_hub; - __pyx_type_6gevent_8__tracer_MaxSwitchTracer.tp_base = __pyx_ptype_6gevent_8__tracer__HubTracer; - if (PyType_Ready(&__pyx_type_6gevent_8__tracer_MaxSwitchTracer) < 0) __PYX_ERR(0, 150, __pyx_L1_error) - __pyx_type_6gevent_8__tracer_MaxSwitchTracer.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_8__tracer_MaxSwitchTracer.tp_dictoffset && __pyx_type_6gevent_8__tracer_MaxSwitchTracer.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_8__tracer_MaxSwitchTracer.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - if (__Pyx_SetVtable(__pyx_type_6gevent_8__tracer_MaxSwitchTracer.tp_dict, __pyx_vtabptr_6gevent_8__tracer_MaxSwitchTracer) < 0) __PYX_ERR(0, 150, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "MaxSwitchTracer", (PyObject *)&__pyx_type_6gevent_8__tracer_MaxSwitchTracer) < 0) __PYX_ERR(0, 150, __pyx_L1_error) - __pyx_ptype_6gevent_8__tracer_MaxSwitchTracer = &__pyx_type_6gevent_8__tracer_MaxSwitchTracer; - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_type_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); - /*--- Type import code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_variable_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); - /*--- Variable import code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_function_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); - /*--- Function import code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - - -#if PY_MAJOR_VERSION < 3 -#ifdef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC void -#else -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -#endif -#else -#ifdef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC PyObject * -#else -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -#endif -#endif -#ifndef CYTHON_SMALL_CODE -#if defined(__clang__) - #define CYTHON_SMALL_CODE -#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4))) - #define CYTHON_SMALL_CODE __attribute__((cold)) -#else - #define CYTHON_SMALL_CODE -#endif -#endif - - -#if PY_MAJOR_VERSION < 3 -__Pyx_PyMODINIT_FUNC init__tracer(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC init__tracer(void) -#else -__Pyx_PyMODINIT_FUNC PyInit___tracer(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC PyInit___tracer(void) -#if CYTHON_PEP489_MULTI_PHASE_INIT -{ - return PyModuleDef_Init(&__pyx_moduledef); -} -static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) { - PyObject *value = PyObject_GetAttrString(spec, from_name); - int result = 0; - if (likely(value)) { - result = PyDict_SetItemString(moddict, to_name, value); - Py_DECREF(value); - } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Clear(); - } else { - result = -1; - } - return result; -} -static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) { - PyObject *module = NULL, *moddict, *modname; - if (__pyx_m) - return __Pyx_NewRef(__pyx_m); - modname = PyObject_GetAttrString(spec, "name"); - if (unlikely(!modname)) goto bad; - module = PyModule_NewObject(modname); - Py_DECREF(modname); - if (unlikely(!module)) goto bad; - moddict = PyModule_GetDict(module); - if (unlikely(!moddict)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__") < 0)) goto bad; - return module; -bad: - Py_XDECREF(module); - return NULL; -} - - -static int __pyx_pymod_exec___tracer(PyObject *__pyx_pyinit_module) -#endif -#endif -{ - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannyDeclarations - #if CYTHON_PEP489_MULTI_PHASE_INIT - if (__pyx_m && __pyx_m == __pyx_pyinit_module) return 0; - #elif PY_MAJOR_VERSION >= 3 - if (__pyx_m) return __Pyx_NewRef(__pyx_m); - #endif - #if CYTHON_REFNANNY -__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); -if (!__Pyx_RefNanny) { - PyErr_Clear(); - __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); - if (!__Pyx_RefNanny) - Py_FatalError("failed to import 'refnanny' module"); -} -#endif - __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit___tracer(void)", 0); - if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) - #ifdef __Pyx_CyFunction_USED - if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_FusedFunction_USED - if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Coroutine_USED - if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Generator_USED - if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_AsyncGen_USED - if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_StopAsyncIteration_USED - if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - /*--- Library function declarations ---*/ - /*--- Threads initialization code ---*/ - #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS - #ifdef WITH_THREAD /* Python build with threading support? */ - PyEval_InitThreads(); - #endif - #endif - /*--- Module creation code ---*/ - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_m = __pyx_pyinit_module; - Py_INCREF(__pyx_m); - #else - #if PY_MAJOR_VERSION < 3 - __pyx_m = Py_InitModule4("__tracer", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); - #else - __pyx_m = PyModule_Create(&__pyx_moduledef); - #endif - if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) - Py_INCREF(__pyx_d); - __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) - #if CYTHON_COMPILING_IN_PYPY - Py_INCREF(__pyx_b); - #endif - if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - /*--- Initialize various global constants etc. ---*/ - if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) - if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - if (__pyx_module_is_main_gevent____tracer) { - if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - } - #if PY_MAJOR_VERSION >= 3 - { - PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) - if (!PyDict_GetItemString(modules, "gevent.__tracer")) { - if (unlikely(PyDict_SetItemString(modules, "gevent.__tracer", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) - } - } - #endif - /*--- Builtin init code ---*/ - if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Constants init code ---*/ - if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Global type/function init code ---*/ - (void)__Pyx_modinit_global_init_code(); - if (unlikely(__Pyx_modinit_variable_export_code() != 0)) goto __pyx_L1_error; - (void)__Pyx_modinit_function_export_code(); - if (unlikely(__Pyx_modinit_type_init_code() != 0)) goto __pyx_L1_error; - (void)__Pyx_modinit_type_import_code(); - (void)__Pyx_modinit_variable_import_code(); - (void)__Pyx_modinit_function_import_code(); - /*--- Execution code ---*/ - #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) - if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - - /* "src/gevent/_tracer.py":5 - * from __future__ import print_function, absolute_import, division - * - * import sys # <<<<<<<<<<<<<< - * import traceback - * - */ - __pyx_t_1 = __Pyx_Import(__pyx_n_s_sys, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_v_6gevent_8__tracer_sys); - __Pyx_DECREF_SET(__pyx_v_6gevent_8__tracer_sys, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/_tracer.py":6 - * - * import sys - * import traceback # <<<<<<<<<<<<<< - * - * from greenlet import settrace - */ - __pyx_t_1 = __Pyx_Import(__pyx_n_s_traceback, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_v_6gevent_8__tracer_traceback); - __Pyx_DECREF_SET(__pyx_v_6gevent_8__tracer_traceback, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/_tracer.py":8 - * import traceback - * - * from greenlet import settrace # <<<<<<<<<<<<<< - * from greenlet import getcurrent - * - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_settrace); - __Pyx_GIVEREF(__pyx_n_s_settrace); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_settrace); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_greenlet, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_settrace); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_v_6gevent_8__tracer_settrace); - __Pyx_DECREF_SET(__pyx_v_6gevent_8__tracer_settrace, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_tracer.py":9 - * - * from greenlet import settrace - * from greenlet import getcurrent # <<<<<<<<<<<<<< - * - * from gevent.util import format_run_info - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_getcurrent); - __Pyx_GIVEREF(__pyx_n_s_getcurrent); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_getcurrent); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_greenlet, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_getcurrent); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_v_6gevent_8__tracer_getcurrent); - __Pyx_DECREF_SET(__pyx_v_6gevent_8__tracer_getcurrent, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_tracer.py":11 - * from greenlet import getcurrent - * - * from gevent.util import format_run_info # <<<<<<<<<<<<<< - * - * from gevent._compat import perf_counter - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_format_run_info); - __Pyx_GIVEREF(__pyx_n_s_format_run_info); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_format_run_info); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_gevent_util, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_format_run_info); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_v_6gevent_8__tracer_format_run_info); - __Pyx_DECREF_SET(__pyx_v_6gevent_8__tracer_format_run_info, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_tracer.py":13 - * from gevent.util import format_run_info - * - * from gevent._compat import perf_counter # <<<<<<<<<<<<<< - * from gevent._util import gmctime - * - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_perf_counter); - __Pyx_GIVEREF(__pyx_n_s_perf_counter); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_perf_counter); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_gevent__compat, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_perf_counter); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_v_6gevent_8__tracer_perf_counter); - __Pyx_DECREF_SET(__pyx_v_6gevent_8__tracer_perf_counter, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_tracer.py":14 - * - * from gevent._compat import perf_counter - * from gevent._util import gmctime # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_gmctime); - __Pyx_GIVEREF(__pyx_n_s_gmctime); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_gmctime); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_gevent__util, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_gmctime); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_v_6gevent_8__tracer_gmctime); - __Pyx_DECREF_SET(__pyx_v_6gevent_8__tracer_gmctime, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_tracer.py":17 - * - * - * __all__ = [ # <<<<<<<<<<<<<< - * 'GreenletTracer', - * 'HubSwitchTracer', - */ - __pyx_t_2 = PyList_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 17, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_GreenletTracer); - __Pyx_GIVEREF(__pyx_n_s_GreenletTracer); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_GreenletTracer); - __Pyx_INCREF(__pyx_n_s_HubSwitchTracer); - __Pyx_GIVEREF(__pyx_n_s_HubSwitchTracer); - PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_HubSwitchTracer); - __Pyx_INCREF(__pyx_n_s_MaxSwitchTracer); - __Pyx_GIVEREF(__pyx_n_s_MaxSwitchTracer); - PyList_SET_ITEM(__pyx_t_2, 2, __pyx_n_s_MaxSwitchTracer); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_all, __pyx_t_2) < 0) __PYX_ERR(0, 17, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_tracer.py":49 - * self._killed = False - * - * def kill(self): # <<<<<<<<<<<<<< - * # Must be called in the monitored thread. - * if not self._killed: - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_8__tracer_14GreenletTracer_3kill, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_GreenletTracer_kill, NULL, __pyx_n_s_gevent___tracer, __pyx_d, ((PyObject *)__pyx_codeobj__4)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 49, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_8__tracer_GreenletTracer->tp_dict, __pyx_n_s_kill, __pyx_t_2) < 0) __PYX_ERR(0, 49, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_8__tracer_GreenletTracer); - - /* "src/gevent/_tracer.py":56 - * self.previous_trace_function = None - * - * def _trace(self, event, args): # <<<<<<<<<<<<<< - * # This function runs in the thread we are monitoring. - * self.greenlet_switch_counter += 1 - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_8__tracer_14GreenletTracer_5_trace, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_GreenletTracer__trace, NULL, __pyx_n_s_gevent___tracer, __pyx_d, ((PyObject *)__pyx_codeobj__6)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_8__tracer_GreenletTracer->tp_dict, __pyx_n_s_trace, __pyx_t_2) < 0) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_8__tracer_GreenletTracer); - - /* "src/gevent/_tracer.py":71 - * return self._trace(event, args) - * - * def did_block_hub(self, hub): # <<<<<<<<<<<<<< - * # Check to see if we have blocked since the last call to this - * # method. Returns a true value if we blocked (not in the hub), - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_8__tracer_14GreenletTracer_9did_block_hub, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_GreenletTracer_did_block_hub, NULL, __pyx_n_s_gevent___tracer, __pyx_d, ((PyObject *)__pyx_codeobj__8)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 71, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_8__tracer_GreenletTracer->tp_dict, __pyx_n_s_did_block_hub, __pyx_t_2) < 0) __PYX_ERR(0, 71, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_8__tracer_GreenletTracer); - - /* "src/gevent/_tracer.py":94 - * return True, active_greenlet - * - * def ignore_current_greenlet_blocking(self): # <<<<<<<<<<<<<< - * # Don't pay attention to the current greenlet. - * self.active_greenlet = None - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_8__tracer_14GreenletTracer_11ignore_current_greenlet_blocking, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_GreenletTracer_ignore_current_gr, NULL, __pyx_n_s_gevent___tracer, __pyx_d, ((PyObject *)__pyx_codeobj__10)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 94, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_8__tracer_GreenletTracer->tp_dict, __pyx_n_s_ignore_current_greenlet_blocking, __pyx_t_2) < 0) __PYX_ERR(0, 94, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_8__tracer_GreenletTracer); - - /* "src/gevent/_tracer.py":98 - * self.active_greenlet = None - * - * def monitor_current_greenlet_blocking(self): # <<<<<<<<<<<<<< - * self.active_greenlet = getcurrent() - * - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_8__tracer_14GreenletTracer_13monitor_current_greenlet_blocking, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_GreenletTracer_monitor_current_g, NULL, __pyx_n_s_gevent___tracer, __pyx_d, ((PyObject *)__pyx_codeobj__12)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 98, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_8__tracer_GreenletTracer->tp_dict, __pyx_n_s_monitor_current_greenlet_blockin, __pyx_t_2) < 0) __PYX_ERR(0, 98, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_8__tracer_GreenletTracer); - - /* "src/gevent/_tracer.py":101 - * self.active_greenlet = getcurrent() - * - * def did_block_hub_report(self, hub, active_greenlet, format_kwargs): # <<<<<<<<<<<<<< - * report = ['=' * 80, - * '\n%s : Greenlet %s appears to be blocked' % - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_8__tracer_14GreenletTracer_15did_block_hub_report, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_GreenletTracer_did_block_hub_rep, NULL, __pyx_n_s_gevent___tracer, __pyx_d, ((PyObject *)__pyx_codeobj__14)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 101, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_8__tracer_GreenletTracer->tp_dict, __pyx_n_s_did_block_hub_report, __pyx_t_2) < 0) __PYX_ERR(0, 101, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_8__tracer_GreenletTracer); - - /* "src/gevent/_tracer.py":128 - * self.hub = hub - * - * def kill(self): # <<<<<<<<<<<<<< - * self.hub = None - * GreenletTracer.kill(self) - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_8__tracer_10_HubTracer_3kill, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_HubTracer_kill, NULL, __pyx_n_s_gevent___tracer, __pyx_d, ((PyObject *)__pyx_codeobj__16)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 128, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_8__tracer__HubTracer->tp_dict, __pyx_n_s_kill, __pyx_t_2) < 0) __PYX_ERR(0, 128, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_8__tracer__HubTracer); - - /* "src/gevent/_tracer.py":140 - * self.last_entered_hub = 0 - * - * def _trace(self, event, args): # <<<<<<<<<<<<<< - * GreenletTracer._trace(self, event, args) - * if self.active_greenlet is self.hub: - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_8__tracer_15HubSwitchTracer_3_trace, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_HubSwitchTracer__trace, NULL, __pyx_n_s_gevent___tracer, __pyx_d, ((PyObject *)__pyx_codeobj__18)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_8__tracer_HubSwitchTracer->tp_dict, __pyx_n_s_trace, __pyx_t_2) < 0) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_8__tracer_HubSwitchTracer); - - /* "src/gevent/_tracer.py":145 - * self.last_entered_hub = perf_counter() - * - * def did_block_hub(self, hub): # <<<<<<<<<<<<<< - * if perf_counter() - self.last_entered_hub > self.max_blocking_time: - * return True, self.active_greenlet - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_8__tracer_15HubSwitchTracer_5did_block_hub, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_HubSwitchTracer_did_block_hub, NULL, __pyx_n_s_gevent___tracer, __pyx_d, ((PyObject *)__pyx_codeobj__20)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 145, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_8__tracer_HubSwitchTracer->tp_dict, __pyx_n_s_did_block_hub, __pyx_t_2) < 0) __PYX_ERR(0, 145, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_8__tracer_HubSwitchTracer); - - /* "src/gevent/_tracer.py":159 - * self.max_blocking = 0 - * - * def _trace(self, event, args): # <<<<<<<<<<<<<< - * old_active = self.active_greenlet - * GreenletTracer._trace(self, event, args) - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_8__tracer_15MaxSwitchTracer_3_trace, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MaxSwitchTracer__trace, NULL, __pyx_n_s_gevent___tracer, __pyx_d, ((PyObject *)__pyx_codeobj__22)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 159, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_8__tracer_MaxSwitchTracer->tp_dict, __pyx_n_s_trace, __pyx_t_2) < 0) __PYX_ERR(0, 159, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_8__tracer_MaxSwitchTracer); - - /* "src/gevent/_tracer.py":169 - * switched_at - self.last_switch) - * - * def did_block_hub(self, hub): # <<<<<<<<<<<<<< - * if self.max_blocking == 0: - * # We never switched. Check the time now - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_8__tracer_15MaxSwitchTracer_5did_block_hub, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MaxSwitchTracer_did_block_hub, NULL, __pyx_n_s_gevent___tracer, __pyx_d, ((PyObject *)__pyx_codeobj__24)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 169, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_8__tracer_MaxSwitchTracer->tp_dict, __pyx_n_s_did_block_hub, __pyx_t_2) < 0) __PYX_ERR(0, 169, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_8__tracer_MaxSwitchTracer); - - /* "src/gevent/_tracer.py":178 - * - * - * from gevent._util import import_c_accel # <<<<<<<<<<<<<< - * import_c_accel(globals(), 'gevent.__tracer') - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 178, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_import_c_accel); - __Pyx_GIVEREF(__pyx_n_s_import_c_accel); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_import_c_accel); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_gevent__util, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 178, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_import_c_accel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 178, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_import_c_accel, __pyx_t_2) < 0) __PYX_ERR(0, 178, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_tracer.py":179 - * - * from gevent._util import import_c_accel - * import_c_accel(globals(), 'gevent.__tracer') # <<<<<<<<<<<<<< - */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_import_c_accel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 179, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_Globals(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 179, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 179, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_gevent___tracer); - __Pyx_GIVEREF(__pyx_n_s_gevent___tracer); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_gevent___tracer); - __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 179, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_tracer.py":1 - * # Copyright (c) 2018 gevent. See LICENSE for details. # <<<<<<<<<<<<<< - * # cython: auto_pickle=False,embedsignature=True,always_allow_keywords=False - * from __future__ import print_function, absolute_import, division - */ - __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /*--- Wrapped vars code ---*/ - - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - if (__pyx_m) { - if (__pyx_d) { - __Pyx_AddTraceback("init gevent.__tracer", 0, __pyx_lineno, __pyx_filename); - } - Py_DECREF(__pyx_m); __pyx_m = 0; - } else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_ImportError, "init gevent.__tracer"); - } - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - #if CYTHON_PEP489_MULTI_PHASE_INIT - return (__pyx_m != NULL) ? 0 : -1; - #elif PY_MAJOR_VERSION >= 3 - return __pyx_m; - #else - return; - #endif -} - -/* --- Runtime support code --- */ -/* Refnanny */ -#if CYTHON_REFNANNY -static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { - PyObject *m = NULL, *p = NULL; - void *r = NULL; - m = PyImport_ImportModule((char *)modname); - if (!m) goto end; - p = PyObject_GetAttrString(m, (char *)"RefNannyAPI"); - if (!p) goto end; - r = PyLong_AsVoidPtr(p); -end: - Py_XDECREF(p); - Py_XDECREF(m); - return (__Pyx_RefNannyAPIStruct *)r; -} -#endif - -/* PyObjectGetAttrStr */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_getattro)) - return tp->tp_getattro(obj, attr_name); -#if PY_MAJOR_VERSION < 3 - if (likely(tp->tp_getattr)) - return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); -#endif - return PyObject_GetAttr(obj, attr_name); -} -#endif - -/* GetBuiltinName */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name) { - PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); - if (unlikely(!result)) { - PyErr_Format(PyExc_NameError, -#if PY_MAJOR_VERSION >= 3 - "name '%U' is not defined", name); -#else - "name '%.200s' is not defined", PyString_AS_STRING(name)); -#endif - } - return result; -} - -/* RaiseArgTupleInvalid */ -static void __Pyx_RaiseArgtupleInvalid( - const char* func_name, - int exact, - Py_ssize_t num_min, - Py_ssize_t num_max, - Py_ssize_t num_found) -{ - Py_ssize_t num_expected; - const char *more_or_less; - if (num_found < num_min) { - num_expected = num_min; - more_or_less = "at least"; - } else { - num_expected = num_max; - more_or_less = "at most"; - } - if (exact) { - more_or_less = "exactly"; - } - PyErr_Format(PyExc_TypeError, - "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", - func_name, more_or_less, num_expected, - (num_expected == 1) ? "" : "s", num_found); -} - -/* KeywordStringCheck */ -static int __Pyx_CheckKeywordStrings( - PyObject *kwdict, - const char* function_name, - int kw_allowed) -{ - PyObject* key = 0; - Py_ssize_t pos = 0; -#if CYTHON_COMPILING_IN_PYPY - if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0)) - goto invalid_keyword; - return 1; -#else - while (PyDict_Next(kwdict, &pos, &key, 0)) { - #if PY_MAJOR_VERSION < 3 - if (unlikely(!PyString_Check(key))) - #endif - if (unlikely(!PyUnicode_Check(key))) - goto invalid_keyword_type; - } - if ((!kw_allowed) && unlikely(key)) - goto invalid_keyword; - return 1; -invalid_keyword_type: - PyErr_Format(PyExc_TypeError, - "%.200s() keywords must be strings", function_name); - return 0; -#endif -invalid_keyword: - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION < 3 - "%.200s() got an unexpected keyword argument '%.200s'", - function_name, PyString_AsString(key)); - #else - "%s() got an unexpected keyword argument '%U'", - function_name, key); - #endif - return 0; -} - -/* PyCFunctionFastCall */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { - PyCFunctionObject *func = (PyCFunctionObject*)func_obj; - PyCFunction meth = PyCFunction_GET_FUNCTION(func); - PyObject *self = PyCFunction_GET_SELF(func); - int flags = PyCFunction_GET_FLAGS(func); - assert(PyCFunction_Check(func)); - assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))); - assert(nargs >= 0); - assert(nargs == 0 || args != NULL); - /* _PyCFunction_FastCallDict() must not be called with an exception set, - because it may clear it (directly or indirectly) and so the - caller loses its exception */ - assert(!PyErr_Occurred()); - if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { - return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL); - } else { - return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs); - } -} -#endif - -/* PyFunctionFastCall */ -#if CYTHON_FAST_PYCALL -#include "frameobject.h" -static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, - PyObject *globals) { - PyFrameObject *f; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject **fastlocals; - Py_ssize_t i; - PyObject *result; - assert(globals != NULL); - /* XXX Perhaps we should create a specialized - PyFrame_New() that doesn't take locals, but does - take builtins without sanity checking them. - */ - assert(tstate != NULL); - f = PyFrame_New(tstate, co, globals, NULL); - if (f == NULL) { - return NULL; - } - fastlocals = f->f_localsplus; - for (i = 0; i < na; i++) { - Py_INCREF(*args); - fastlocals[i] = *args++; - } - result = PyEval_EvalFrameEx(f,0); - ++tstate->recursion_depth; - Py_DECREF(f); - --tstate->recursion_depth; - return result; -} -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs) { - PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); - PyObject *globals = PyFunction_GET_GLOBALS(func); - PyObject *argdefs = PyFunction_GET_DEFAULTS(func); - PyObject *closure; -#if PY_MAJOR_VERSION >= 3 - PyObject *kwdefs; -#endif - PyObject *kwtuple, **k; - PyObject **d; - Py_ssize_t nd; - Py_ssize_t nk; - PyObject *result; - assert(kwargs == NULL || PyDict_Check(kwargs)); - nk = kwargs ? PyDict_Size(kwargs) : 0; - if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { - return NULL; - } - if ( -#if PY_MAJOR_VERSION >= 3 - co->co_kwonlyargcount == 0 && -#endif - likely(kwargs == NULL || nk == 0) && - co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { - if (argdefs == NULL && co->co_argcount == nargs) { - result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); - goto done; - } - else if (nargs == 0 && argdefs != NULL - && co->co_argcount == Py_SIZE(argdefs)) { - /* function called with no arguments, but all parameters have - a default value: use default values as arguments .*/ - args = &PyTuple_GET_ITEM(argdefs, 0); - result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); - goto done; - } - } - if (kwargs != NULL) { - Py_ssize_t pos, i; - kwtuple = PyTuple_New(2 * nk); - if (kwtuple == NULL) { - result = NULL; - goto done; - } - k = &PyTuple_GET_ITEM(kwtuple, 0); - pos = i = 0; - while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { - Py_INCREF(k[i]); - Py_INCREF(k[i+1]); - i += 2; - } - nk = i / 2; - } - else { - kwtuple = NULL; - k = NULL; - } - closure = PyFunction_GET_CLOSURE(func); -#if PY_MAJOR_VERSION >= 3 - kwdefs = PyFunction_GET_KW_DEFAULTS(func); -#endif - if (argdefs != NULL) { - d = &PyTuple_GET_ITEM(argdefs, 0); - nd = Py_SIZE(argdefs); - } - else { - d = NULL; - nd = 0; - } -#if PY_MAJOR_VERSION >= 3 - result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, - args, nargs, - k, (int)nk, - d, (int)nd, kwdefs, closure); -#else - result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, - args, nargs, - k, (int)nk, - d, (int)nd, closure); -#endif - Py_XDECREF(kwtuple); -done: - Py_LeaveRecursiveCall(); - return result; -} -#endif -#endif - -/* PyObjectCall */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { - PyObject *result; - ternaryfunc call = func->ob_type->tp_call; - if (unlikely(!call)) - return PyObject_Call(func, arg, kw); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = (*call)(func, arg, kw); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCallMethO */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { - PyObject *self, *result; - PyCFunction cfunc; - cfunc = PyCFunction_GET_FUNCTION(func); - self = PyCFunction_GET_SELF(func); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = cfunc(self, arg); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCallOneArg */ -#if CYTHON_COMPILING_IN_CPYTHON -static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_New(1); - if (unlikely(!args)) return NULL; - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 0, arg); - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, &arg, 1); - } -#endif - if (likely(PyCFunction_Check(func))) { - if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { - return __Pyx_PyObject_CallMethO(func, arg); -#if CYTHON_FAST_PYCCALL - } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { - return __Pyx_PyCFunction_FastCall(func, &arg, 1); -#endif - } - } - return __Pyx__PyObject_CallOneArg(func, arg); -} -#else -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_Pack(1, arg); - if (unlikely(!args)) return NULL; - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -#endif - -/* PyObjectCallNoArg */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, NULL, 0); - } -#endif -#ifdef __Pyx_CyFunction_USED - if (likely(PyCFunction_Check(func) || __Pyx_TypeCheck(func, __pyx_CyFunctionType))) { -#else - if (likely(PyCFunction_Check(func))) { -#endif - if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { - return __Pyx_PyObject_CallMethO(func, NULL); - } - } - return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL); -} -#endif - -/* BytesEquals */ - static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { -#if CYTHON_COMPILING_IN_PYPY - return PyObject_RichCompareBool(s1, s2, equals); -#else - if (s1 == s2) { - return (equals == Py_EQ); - } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) { - const char *ps1, *ps2; - Py_ssize_t length = PyBytes_GET_SIZE(s1); - if (length != PyBytes_GET_SIZE(s2)) - return (equals == Py_NE); - ps1 = PyBytes_AS_STRING(s1); - ps2 = PyBytes_AS_STRING(s2); - if (ps1[0] != ps2[0]) { - return (equals == Py_NE); - } else if (length == 1) { - return (equals == Py_EQ); - } else { - int result; -#if CYTHON_USE_UNICODE_INTERNALS - Py_hash_t hash1, hash2; - hash1 = ((PyBytesObject*)s1)->ob_shash; - hash2 = ((PyBytesObject*)s2)->ob_shash; - if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { - return (equals == Py_NE); - } -#endif - result = memcmp(ps1, ps2, (size_t)length); - return (equals == Py_EQ) ? (result == 0) : (result != 0); - } - } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) { - return (equals == Py_NE); - } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) { - return (equals == Py_NE); - } else { - int result; - PyObject* py_result = PyObject_RichCompare(s1, s2, equals); - if (!py_result) - return -1; - result = __Pyx_PyObject_IsTrue(py_result); - Py_DECREF(py_result); - return result; - } -#endif -} - -/* UnicodeEquals */ - static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { -#if CYTHON_COMPILING_IN_PYPY - return PyObject_RichCompareBool(s1, s2, equals); -#else -#if PY_MAJOR_VERSION < 3 - PyObject* owned_ref = NULL; -#endif - int s1_is_unicode, s2_is_unicode; - if (s1 == s2) { - goto return_eq; - } - s1_is_unicode = PyUnicode_CheckExact(s1); - s2_is_unicode = PyUnicode_CheckExact(s2); -#if PY_MAJOR_VERSION < 3 - if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) { - owned_ref = PyUnicode_FromObject(s2); - if (unlikely(!owned_ref)) - return -1; - s2 = owned_ref; - s2_is_unicode = 1; - } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) { - owned_ref = PyUnicode_FromObject(s1); - if (unlikely(!owned_ref)) - return -1; - s1 = owned_ref; - s1_is_unicode = 1; - } else if (((!s2_is_unicode) & (!s1_is_unicode))) { - return __Pyx_PyBytes_Equals(s1, s2, equals); - } -#endif - if (s1_is_unicode & s2_is_unicode) { - Py_ssize_t length; - int kind; - void *data1, *data2; - if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0)) - return -1; - length = __Pyx_PyUnicode_GET_LENGTH(s1); - if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) { - goto return_ne; - } -#if CYTHON_USE_UNICODE_INTERNALS - { - Py_hash_t hash1, hash2; - #if CYTHON_PEP393_ENABLED - hash1 = ((PyASCIIObject*)s1)->hash; - hash2 = ((PyASCIIObject*)s2)->hash; - #else - hash1 = ((PyUnicodeObject*)s1)->hash; - hash2 = ((PyUnicodeObject*)s2)->hash; - #endif - if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { - goto return_ne; - } - } -#endif - kind = __Pyx_PyUnicode_KIND(s1); - if (kind != __Pyx_PyUnicode_KIND(s2)) { - goto return_ne; - } - data1 = __Pyx_PyUnicode_DATA(s1); - data2 = __Pyx_PyUnicode_DATA(s2); - if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) { - goto return_ne; - } else if (length == 1) { - goto return_eq; - } else { - int result = memcmp(data1, data2, (size_t)(length * kind)); - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(owned_ref); - #endif - return (equals == Py_EQ) ? (result == 0) : (result != 0); - } - } else if ((s1 == Py_None) & s2_is_unicode) { - goto return_ne; - } else if ((s2 == Py_None) & s1_is_unicode) { - goto return_ne; - } else { - int result; - PyObject* py_result = PyObject_RichCompare(s1, s2, equals); - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(owned_ref); - #endif - if (!py_result) - return -1; - result = __Pyx_PyObject_IsTrue(py_result); - Py_DECREF(py_result); - return result; - } -return_eq: - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(owned_ref); - #endif - return (equals == Py_EQ); -return_ne: - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(owned_ref); - #endif - return (equals == Py_NE); -#endif -} - -/* GetItemInt */ - static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { - PyObject *r; - if (!j) return NULL; - r = PyObject_GetItem(o, j); - Py_DECREF(j); - return r; -} -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - Py_ssize_t wrapped_i = i; - if (wraparound & unlikely(i < 0)) { - wrapped_i += PyList_GET_SIZE(o); - } - if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyList_GET_SIZE(o)))) { - PyObject *r = PyList_GET_ITEM(o, wrapped_i); - Py_INCREF(r); - return r; - } - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -#else - return PySequence_GetItem(o, i); -#endif -} -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - Py_ssize_t wrapped_i = i; - if (wraparound & unlikely(i < 0)) { - wrapped_i += PyTuple_GET_SIZE(o); - } - if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyTuple_GET_SIZE(o)))) { - PyObject *r = PyTuple_GET_ITEM(o, wrapped_i); - Py_INCREF(r); - return r; - } - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -#else - return PySequence_GetItem(o, i); -#endif -} -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS - if (is_list || PyList_CheckExact(o)) { - Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); - if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) { - PyObject *r = PyList_GET_ITEM(o, n); - Py_INCREF(r); - return r; - } - } - else if (PyTuple_CheckExact(o)) { - Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); - if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) { - PyObject *r = PyTuple_GET_ITEM(o, n); - Py_INCREF(r); - return r; - } - } else { - PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; - if (likely(m && m->sq_item)) { - if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { - Py_ssize_t l = m->sq_length(o); - if (likely(l >= 0)) { - i += l; - } else { - if (!PyErr_ExceptionMatches(PyExc_OverflowError)) - return NULL; - PyErr_Clear(); - } - } - return m->sq_item(o, i); - } - } -#else - if (is_list || PySequence_Check(o)) { - return PySequence_GetItem(o, i); - } -#endif - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -} - -/* RaiseDoubleKeywords */ - static void __Pyx_RaiseDoubleKeywordsError( - const char* func_name, - PyObject* kw_name) -{ - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION >= 3 - "%s() got multiple values for keyword argument '%U'", func_name, kw_name); - #else - "%s() got multiple values for keyword argument '%s'", func_name, - PyString_AsString(kw_name)); - #endif -} - -/* ParseKeywords */ - static int __Pyx_ParseOptionalKeywords( - PyObject *kwds, - PyObject **argnames[], - PyObject *kwds2, - PyObject *values[], - Py_ssize_t num_pos_args, - const char* function_name) -{ - PyObject *key = 0, *value = 0; - Py_ssize_t pos = 0; - PyObject*** name; - PyObject*** first_kw_arg = argnames + num_pos_args; - while (PyDict_Next(kwds, &pos, &key, &value)) { - name = first_kw_arg; - while (*name && (**name != key)) name++; - if (*name) { - values[name-argnames] = value; - continue; - } - name = first_kw_arg; - #if PY_MAJOR_VERSION < 3 - if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) { - while (*name) { - if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) - && _PyString_Eq(**name, key)) { - values[name-argnames] = value; - break; - } - name++; - } - if (*name) continue; - else { - PyObject*** argname = argnames; - while (argname != first_kw_arg) { - if ((**argname == key) || ( - (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) - && _PyString_Eq(**argname, key))) { - goto arg_passed_twice; - } - argname++; - } - } - } else - #endif - if (likely(PyUnicode_Check(key))) { - while (*name) { - int cmp = (**name == key) ? 0 : - #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 : - #endif - PyUnicode_Compare(**name, key); - if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; - if (cmp == 0) { - values[name-argnames] = value; - break; - } - name++; - } - if (*name) continue; - else { - PyObject*** argname = argnames; - while (argname != first_kw_arg) { - int cmp = (**argname == key) ? 0 : - #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 : - #endif - PyUnicode_Compare(**argname, key); - if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; - if (cmp == 0) goto arg_passed_twice; - argname++; - } - } - } else - goto invalid_keyword_type; - if (kwds2) { - if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; - } else { - goto invalid_keyword; - } - } - return 0; -arg_passed_twice: - __Pyx_RaiseDoubleKeywordsError(function_name, key); - goto bad; -invalid_keyword_type: - PyErr_Format(PyExc_TypeError, - "%.200s() keywords must be strings", function_name); - goto bad; -invalid_keyword: - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION < 3 - "%.200s() got an unexpected keyword argument '%.200s'", - function_name, PyString_AsString(key)); - #else - "%s() got an unexpected keyword argument '%U'", - function_name, key); - #endif -bad: - return -1; -} - -/* ArgTypeTest */ - static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact) -{ - if (unlikely(!type)) { - PyErr_SetString(PyExc_SystemError, "Missing type object"); - return 0; - } - else if (exact) { - #if PY_MAJOR_VERSION == 2 - if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1; - #endif - } - else { - if (likely(__Pyx_TypeCheck(obj, type))) return 1; - } - PyErr_Format(PyExc_TypeError, - "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)", - name, type->tp_name, Py_TYPE(obj)->tp_name); - return 0; -} - -/* ObjectGetItem */ - #if CYTHON_USE_TYPE_SLOTS -static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) { - PyObject *runerr; - Py_ssize_t key_value; - PySequenceMethods *m = Py_TYPE(obj)->tp_as_sequence; - if (unlikely(!(m && m->sq_item))) { - PyErr_Format(PyExc_TypeError, "'%.200s' object is not subscriptable", Py_TYPE(obj)->tp_name); - return NULL; - } - key_value = __Pyx_PyIndex_AsSsize_t(index); - if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) { - return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1); - } - if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) { - PyErr_Clear(); - PyErr_Format(PyExc_IndexError, "cannot fit '%.200s' into an index-sized integer", Py_TYPE(index)->tp_name); - } - return NULL; -} -static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) { - PyMappingMethods *m = Py_TYPE(obj)->tp_as_mapping; - if (likely(m && m->mp_subscript)) { - return m->mp_subscript(obj, key); - } - return __Pyx_PyObject_GetIndex(obj, key); -} -#endif - -/* SaveResetException */ - #if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - #if PY_VERSION_HEX >= 0x030700A3 - *type = tstate->exc_state.exc_type; - *value = tstate->exc_state.exc_value; - *tb = tstate->exc_state.exc_traceback; - #else - *type = tstate->exc_type; - *value = tstate->exc_value; - *tb = tstate->exc_traceback; - #endif - Py_XINCREF(*type); - Py_XINCREF(*value); - Py_XINCREF(*tb); -} -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - #if PY_VERSION_HEX >= 0x030700A3 - tmp_type = tstate->exc_state.exc_type; - tmp_value = tstate->exc_state.exc_value; - tmp_tb = tstate->exc_state.exc_traceback; - tstate->exc_state.exc_type = type; - tstate->exc_state.exc_value = value; - tstate->exc_state.exc_traceback = tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = type; - tstate->exc_value = value; - tstate->exc_traceback = tb; - #endif - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} -#endif - -/* PyErrExceptionMatches */ - #if CYTHON_FAST_THREAD_STATE -static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; i<n; i++) { - if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1; - } -#endif - for (i=0; i<n; i++) { - if (__Pyx_PyErr_GivenExceptionMatches(exc_type, PyTuple_GET_ITEM(tuple, i))) return 1; - } - return 0; -} -static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) { - PyObject *exc_type = tstate->curexc_type; - if (exc_type == err) return 1; - if (unlikely(!exc_type)) return 0; - if (unlikely(PyTuple_Check(err))) - return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); - return __Pyx_PyErr_GivenExceptionMatches(exc_type, err); -} -#endif - -/* GetException */ - #if CYTHON_FAST_THREAD_STATE -static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { -#else -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) { -#endif - PyObject *local_type, *local_value, *local_tb; -#if CYTHON_FAST_THREAD_STATE - PyObject *tmp_type, *tmp_value, *tmp_tb; - local_type = tstate->curexc_type; - local_value = tstate->curexc_value; - local_tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -#else - PyErr_Fetch(&local_type, &local_value, &local_tb); -#endif - PyErr_NormalizeException(&local_type, &local_value, &local_tb); -#if CYTHON_FAST_THREAD_STATE - if (unlikely(tstate->curexc_type)) -#else - if (unlikely(PyErr_Occurred())) -#endif - goto bad; - #if PY_MAJOR_VERSION >= 3 - if (local_tb) { - if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) - goto bad; - } - #endif - Py_XINCREF(local_tb); - Py_XINCREF(local_type); - Py_XINCREF(local_value); - *type = local_type; - *value = local_value; - *tb = local_tb; -#if CYTHON_FAST_THREAD_STATE - #if PY_VERSION_HEX >= 0x030700A3 - tmp_type = tstate->exc_state.exc_type; - tmp_value = tstate->exc_state.exc_value; - tmp_tb = tstate->exc_state.exc_traceback; - tstate->exc_state.exc_type = local_type; - tstate->exc_state.exc_value = local_value; - tstate->exc_state.exc_traceback = local_tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = local_type; - tstate->exc_value = local_value; - tstate->exc_traceback = local_tb; - #endif - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -#else - PyErr_SetExcInfo(local_type, local_value, local_tb); -#endif - return 0; -bad: - *type = 0; - *value = 0; - *tb = 0; - Py_XDECREF(local_type); - Py_XDECREF(local_value); - Py_XDECREF(local_tb); - return -1; -} - -/* StringJoin */ - #if !CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyBytes_Join(PyObject* sep, PyObject* values) { - return PyObject_CallMethodObjArgs(sep, __pyx_n_s_join, values, NULL); -} -#endif - -/* PyObject_GenericGetAttrNoDict */ - #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { - PyErr_Format(PyExc_AttributeError, -#if PY_MAJOR_VERSION >= 3 - "'%.50s' object has no attribute '%U'", - tp->tp_name, attr_name); -#else - "'%.50s' object has no attribute '%.400s'", - tp->tp_name, PyString_AS_STRING(attr_name)); -#endif - return NULL; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { - PyObject *descr; - PyTypeObject *tp = Py_TYPE(obj); - if (unlikely(!PyString_Check(attr_name))) { - return PyObject_GenericGetAttr(obj, attr_name); - } - assert(!tp->tp_dictoffset); - descr = _PyType_Lookup(tp, attr_name); - if (unlikely(!descr)) { - return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); - } - Py_INCREF(descr); - #if PY_MAJOR_VERSION < 3 - if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) - #endif - { - descrgetfunc f = Py_TYPE(descr)->tp_descr_get; - if (unlikely(f)) { - PyObject *res = f(descr, obj, (PyObject *)tp); - Py_DECREF(descr); - return res; - } - } - return descr; -} -#endif - -/* PyObject_GenericGetAttr */ - #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) { - if (unlikely(Py_TYPE(obj)->tp_dictoffset)) { - return PyObject_GenericGetAttr(obj, attr_name); - } - return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name); -} -#endif - -/* SetVTable */ - static int __Pyx_SetVtable(PyObject *dict, void *vtable) { -#if PY_VERSION_HEX >= 0x02070000 - PyObject *ob = PyCapsule_New(vtable, 0, 0); -#else - PyObject *ob = PyCObject_FromVoidPtr(vtable, 0); -#endif - if (!ob) - goto bad; - if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0) - goto bad; - Py_DECREF(ob); - return 0; -bad: - Py_XDECREF(ob); - return -1; -} - -/* Import */ - static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { - PyObject *empty_list = 0; - PyObject *module = 0; - PyObject *global_dict = 0; - PyObject *empty_dict = 0; - PyObject *list; - #if PY_MAJOR_VERSION < 3 - PyObject *py_import; - py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); - if (!py_import) - goto bad; - #endif - if (from_list) - list = from_list; - else { - empty_list = PyList_New(0); - if (!empty_list) - goto bad; - list = empty_list; - } - global_dict = PyModule_GetDict(__pyx_m); - if (!global_dict) - goto bad; - empty_dict = PyDict_New(); - if (!empty_dict) - goto bad; - { - #if PY_MAJOR_VERSION >= 3 - if (level == -1) { - if (strchr(__Pyx_MODULE_NAME, '.')) { - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, 1); - if (!module) { - if (!PyErr_ExceptionMatches(PyExc_ImportError)) - goto bad; - PyErr_Clear(); - } - } - level = 0; - } - #endif - if (!module) { - #if PY_MAJOR_VERSION < 3 - PyObject *py_level = PyInt_FromLong(level); - if (!py_level) - goto bad; - module = PyObject_CallFunctionObjArgs(py_import, - name, global_dict, empty_dict, list, py_level, NULL); - Py_DECREF(py_level); - #else - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, level); - #endif - } - } -bad: - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(py_import); - #endif - Py_XDECREF(empty_list); - Py_XDECREF(empty_dict); - return module; -} - -/* ImportFrom */ - static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { - PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); - if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Format(PyExc_ImportError, - #if PY_MAJOR_VERSION < 3 - "cannot import name %.230s", PyString_AS_STRING(name)); - #else - "cannot import name %S", name); - #endif - } - return value; -} - -/* FetchCommonType */ - static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { - PyObject* fake_module; - PyTypeObject* cached_type = NULL; - fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI); - if (!fake_module) return NULL; - Py_INCREF(fake_module); - cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name); - if (cached_type) { - if (!PyType_Check((PyObject*)cached_type)) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s is not a type object", - type->tp_name); - goto bad; - } - if (cached_type->tp_basicsize != type->tp_basicsize) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s has the wrong size, try recompiling", - type->tp_name); - goto bad; - } - } else { - if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; - PyErr_Clear(); - if (PyType_Ready(type) < 0) goto bad; - if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0) - goto bad; - Py_INCREF(type); - cached_type = type; - } -done: - Py_DECREF(fake_module); - return cached_type; -bad: - Py_XDECREF(cached_type); - cached_type = NULL; - goto done; -} - -/* CythonFunction */ - #include <structmember.h> -static PyObject * -__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure) -{ - if (unlikely(op->func_doc == NULL)) { - if (op->func.m_ml->ml_doc) { -#if PY_MAJOR_VERSION >= 3 - op->func_doc = PyUnicode_FromString(op->func.m_ml->ml_doc); -#else - op->func_doc = PyString_FromString(op->func.m_ml->ml_doc); -#endif - if (unlikely(op->func_doc == NULL)) - return NULL; - } else { - Py_INCREF(Py_None); - return Py_None; - } - } - Py_INCREF(op->func_doc); - return op->func_doc; -} -static int -__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp = op->func_doc; - if (value == NULL) { - value = Py_None; - } - Py_INCREF(value); - op->func_doc = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op) -{ - if (unlikely(op->func_name == NULL)) { -#if PY_MAJOR_VERSION >= 3 - op->func_name = PyUnicode_InternFromString(op->func.m_ml->ml_name); -#else - op->func_name = PyString_InternFromString(op->func.m_ml->ml_name); -#endif - if (unlikely(op->func_name == NULL)) - return NULL; - } - Py_INCREF(op->func_name); - return op->func_name; -} -static int -__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; -#if PY_MAJOR_VERSION >= 3 - if (unlikely(value == NULL || !PyUnicode_Check(value))) { -#else - if (unlikely(value == NULL || !PyString_Check(value))) { -#endif - PyErr_SetString(PyExc_TypeError, - "__name__ must be set to a string object"); - return -1; - } - tmp = op->func_name; - Py_INCREF(value); - op->func_name = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op) -{ - Py_INCREF(op->func_qualname); - return op->func_qualname; -} -static int -__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; -#if PY_MAJOR_VERSION >= 3 - if (unlikely(value == NULL || !PyUnicode_Check(value))) { -#else - if (unlikely(value == NULL || !PyString_Check(value))) { -#endif - PyErr_SetString(PyExc_TypeError, - "__qualname__ must be set to a string object"); - return -1; - } - tmp = op->func_qualname; - Py_INCREF(value); - op->func_qualname = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure) -{ - PyObject *self; - self = m->func_closure; - if (self == NULL) - self = Py_None; - Py_INCREF(self); - return self; -} -static PyObject * -__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op) -{ - if (unlikely(op->func_dict == NULL)) { - op->func_dict = PyDict_New(); - if (unlikely(op->func_dict == NULL)) - return NULL; - } - Py_INCREF(op->func_dict); - return op->func_dict; -} -static int -__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; - if (unlikely(value == NULL)) { - PyErr_SetString(PyExc_TypeError, - "function's dictionary may not be deleted"); - return -1; - } - if (unlikely(!PyDict_Check(value))) { - PyErr_SetString(PyExc_TypeError, - "setting function's dictionary to a non-dict"); - return -1; - } - tmp = op->func_dict; - Py_INCREF(value); - op->func_dict = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op) -{ - Py_INCREF(op->func_globals); - return op->func_globals; -} -static PyObject * -__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op) -{ - Py_INCREF(Py_None); - return Py_None; -} -static PyObject * -__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op) -{ - PyObject* result = (op->func_code) ? op->func_code : Py_None; - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { - int result = 0; - PyObject *res = op->defaults_getter((PyObject *) op); - if (unlikely(!res)) - return -1; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - op->defaults_tuple = PyTuple_GET_ITEM(res, 0); - Py_INCREF(op->defaults_tuple); - op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); - Py_INCREF(op->defaults_kwdict); - #else - op->defaults_tuple = PySequence_ITEM(res, 0); - if (unlikely(!op->defaults_tuple)) result = -1; - else { - op->defaults_kwdict = PySequence_ITEM(res, 1); - if (unlikely(!op->defaults_kwdict)) result = -1; - } - #endif - Py_DECREF(res); - return result; -} -static int -__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value) { - value = Py_None; - } else if (value != Py_None && !PyTuple_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__defaults__ must be set to a tuple object"); - return -1; - } - Py_INCREF(value); - tmp = op->defaults_tuple; - op->defaults_tuple = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) { - PyObject* result = op->defaults_tuple; - if (unlikely(!result)) { - if (op->defaults_getter) { - if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; - result = op->defaults_tuple; - } else { - result = Py_None; - } - } - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value) { - value = Py_None; - } else if (value != Py_None && !PyDict_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__kwdefaults__ must be set to a dict object"); - return -1; - } - Py_INCREF(value); - tmp = op->defaults_kwdict; - op->defaults_kwdict = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) { - PyObject* result = op->defaults_kwdict; - if (unlikely(!result)) { - if (op->defaults_getter) { - if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; - result = op->defaults_kwdict; - } else { - result = Py_None; - } - } - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value || value == Py_None) { - value = NULL; - } else if (!PyDict_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__annotations__ must be set to a dict object"); - return -1; - } - Py_XINCREF(value); - tmp = op->func_annotations; - op->func_annotations = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op) { - PyObject* result = op->func_annotations; - if (unlikely(!result)) { - result = PyDict_New(); - if (unlikely(!result)) return NULL; - op->func_annotations = result; - } - Py_INCREF(result); - return result; -} -static PyGetSetDef __pyx_CyFunction_getsets[] = { - {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, - {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, - {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, - {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, - {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, - {(char *) "__self__", (getter)__Pyx_CyFunction_get_self, 0, 0, 0}, - {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, - {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, - {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, - {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, - {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, - {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, - {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, - {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, - {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, - {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, - {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, - {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, - {0, 0, 0, 0, 0} -}; -static PyMemberDef __pyx_CyFunction_members[] = { - {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), PY_WRITE_RESTRICTED, 0}, - {0, 0, 0, 0, 0} -}; -static PyObject * -__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args) -{ -#if PY_MAJOR_VERSION >= 3 - return PyUnicode_FromString(m->func.m_ml->ml_name); -#else - return PyString_FromString(m->func.m_ml->ml_name); -#endif -} -static PyMethodDef __pyx_CyFunction_methods[] = { - {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, - {0, 0, 0, 0} -}; -#if PY_VERSION_HEX < 0x030500A0 -#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) -#else -#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func.m_weakreflist) -#endif -static PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *ml, int flags, PyObject* qualname, - PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { - __pyx_CyFunctionObject *op = PyObject_GC_New(__pyx_CyFunctionObject, type); - if (op == NULL) - return NULL; - op->flags = flags; - __Pyx_CyFunction_weakreflist(op) = NULL; - op->func.m_ml = ml; - op->func.m_self = (PyObject *) op; - Py_XINCREF(closure); - op->func_closure = closure; - Py_XINCREF(module); - op->func.m_module = module; - op->func_dict = NULL; - op->func_name = NULL; - Py_INCREF(qualname); - op->func_qualname = qualname; - op->func_doc = NULL; - op->func_classobj = NULL; - op->func_globals = globals; - Py_INCREF(op->func_globals); - Py_XINCREF(code); - op->func_code = code; - op->defaults_pyobjects = 0; - op->defaults = NULL; - op->defaults_tuple = NULL; - op->defaults_kwdict = NULL; - op->defaults_getter = NULL; - op->func_annotations = NULL; - PyObject_GC_Track(op); - return (PyObject *) op; -} -static int -__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) -{ - Py_CLEAR(m->func_closure); - Py_CLEAR(m->func.m_module); - Py_CLEAR(m->func_dict); - Py_CLEAR(m->func_name); - Py_CLEAR(m->func_qualname); - Py_CLEAR(m->func_doc); - Py_CLEAR(m->func_globals); - Py_CLEAR(m->func_code); - Py_CLEAR(m->func_classobj); - Py_CLEAR(m->defaults_tuple); - Py_CLEAR(m->defaults_kwdict); - Py_CLEAR(m->func_annotations); - if (m->defaults) { - PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); - int i; - for (i = 0; i < m->defaults_pyobjects; i++) - Py_XDECREF(pydefaults[i]); - PyObject_Free(m->defaults); - m->defaults = NULL; - } - return 0; -} -static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) -{ - if (__Pyx_CyFunction_weakreflist(m) != NULL) - PyObject_ClearWeakRefs((PyObject *) m); - __Pyx_CyFunction_clear(m); - PyObject_GC_Del(m); -} -static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) -{ - PyObject_GC_UnTrack(m); - __Pyx__CyFunction_dealloc(m); -} -static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) -{ - Py_VISIT(m->func_closure); - Py_VISIT(m->func.m_module); - Py_VISIT(m->func_dict); - Py_VISIT(m->func_name); - Py_VISIT(m->func_qualname); - Py_VISIT(m->func_doc); - Py_VISIT(m->func_globals); - Py_VISIT(m->func_code); - Py_VISIT(m->func_classobj); - Py_VISIT(m->defaults_tuple); - Py_VISIT(m->defaults_kwdict); - if (m->defaults) { - PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); - int i; - for (i = 0; i < m->defaults_pyobjects; i++) - Py_VISIT(pydefaults[i]); - } - return 0; -} -static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type) -{ - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) { - Py_INCREF(func); - return func; - } - if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) { - if (type == NULL) - type = (PyObject *)(Py_TYPE(obj)); - return __Pyx_PyMethod_New(func, type, (PyObject *)(Py_TYPE(type))); - } - if (obj == Py_None) - obj = NULL; - return __Pyx_PyMethod_New(func, obj, type); -} -static PyObject* -__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) -{ -#if PY_MAJOR_VERSION >= 3 - return PyUnicode_FromFormat("<cyfunction %U at %p>", - op->func_qualname, (void *)op); -#else - return PyString_FromFormat("<cyfunction %s at %p>", - PyString_AsString(op->func_qualname), (void *)op); -#endif -} -static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { - PyCFunctionObject* f = (PyCFunctionObject*)func; - PyCFunction meth = f->m_ml->ml_meth; - Py_ssize_t size; - switch (f->m_ml->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { - case METH_VARARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) - return (*meth)(self, arg); - break; - case METH_VARARGS | METH_KEYWORDS: - return (*(PyCFunctionWithKeywords)meth)(self, arg, kw); - case METH_NOARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { - size = PyTuple_GET_SIZE(arg); - if (likely(size == 0)) - return (*meth)(self, NULL); - PyErr_Format(PyExc_TypeError, - "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", - f->m_ml->ml_name, size); - return NULL; - } - break; - case METH_O: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { - size = PyTuple_GET_SIZE(arg); - if (likely(size == 1)) { - PyObject *result, *arg0; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - arg0 = PyTuple_GET_ITEM(arg, 0); - #else - arg0 = PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; - #endif - result = (*meth)(self, arg0); - #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) - Py_DECREF(arg0); - #endif - return result; - } - PyErr_Format(PyExc_TypeError, - "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", - f->m_ml->ml_name, size); - return NULL; - } - break; - default: - PyErr_SetString(PyExc_SystemError, "Bad call flags in " - "__Pyx_CyFunction_Call. METH_OLDARGS is no " - "longer supported!"); - return NULL; - } - PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", - f->m_ml->ml_name); - return NULL; -} -static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { - return __Pyx_CyFunction_CallMethod(func, ((PyCFunctionObject*)func)->m_self, arg, kw); -} -static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { - PyObject *result; - __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; - if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { - Py_ssize_t argc; - PyObject *new_args; - PyObject *self; - argc = PyTuple_GET_SIZE(args); - new_args = PyTuple_GetSlice(args, 1, argc); - if (unlikely(!new_args)) - return NULL; - self = PyTuple_GetItem(args, 0); - if (unlikely(!self)) { - Py_DECREF(new_args); - return NULL; - } - result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); - Py_DECREF(new_args); - } else { - result = __Pyx_CyFunction_Call(func, args, kw); - } - return result; -} -static PyTypeObject __pyx_CyFunctionType_type = { - PyVarObject_HEAD_INIT(0, 0) - "cython_function_or_method", - sizeof(__pyx_CyFunctionObject), - 0, - (destructor) __Pyx_CyFunction_dealloc, - 0, - 0, - 0, -#if PY_MAJOR_VERSION < 3 - 0, -#else - 0, -#endif - (reprfunc) __Pyx_CyFunction_repr, - 0, - 0, - 0, - 0, - __Pyx_CyFunction_CallAsMethod, - 0, - 0, - 0, - 0, - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, - 0, - (traverseproc) __Pyx_CyFunction_traverse, - (inquiry) __Pyx_CyFunction_clear, - 0, -#if PY_VERSION_HEX < 0x030500A0 - offsetof(__pyx_CyFunctionObject, func_weakreflist), -#else - offsetof(PyCFunctionObject, m_weakreflist), -#endif - 0, - 0, - __pyx_CyFunction_methods, - __pyx_CyFunction_members, - __pyx_CyFunction_getsets, - 0, - 0, - __Pyx_CyFunction_descr_get, - 0, - offsetof(__pyx_CyFunctionObject, func_dict), - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, -#if PY_VERSION_HEX >= 0x030400a1 - 0, -#endif -}; -static int __pyx_CyFunction_init(void) { - __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); - if (unlikely(__pyx_CyFunctionType == NULL)) { - return -1; - } - return 0; -} -static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults = PyObject_Malloc(size); - if (unlikely(!m->defaults)) - return PyErr_NoMemory(); - memset(m->defaults, 0, size); - m->defaults_pyobjects = pyobjects; - return m->defaults; -} -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults_tuple = tuple; - Py_INCREF(tuple); -} -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults_kwdict = dict; - Py_INCREF(dict); -} -static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->func_annotations = dict; - Py_INCREF(dict); -} - -/* GetModuleGlobalName */ - static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { - PyObject *result; -#if !CYTHON_AVOID_BORROWED_REFS -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 - result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); - if (likely(result)) { - Py_INCREF(result); - } else if (unlikely(PyErr_Occurred())) { - result = NULL; - } else { -#else - result = PyDict_GetItem(__pyx_d, name); - if (likely(result)) { - Py_INCREF(result); - } else { -#endif -#else - result = PyObject_GetItem(__pyx_d, name); - if (!result) { - PyErr_Clear(); -#endif - result = __Pyx_GetBuiltinName(name); - } - return result; -} - -/* GetAttr */ - static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) { -#if CYTHON_USE_TYPE_SLOTS -#if PY_MAJOR_VERSION >= 3 - if (likely(PyUnicode_Check(n))) -#else - if (likely(PyString_Check(n))) -#endif - return __Pyx_PyObject_GetAttrStr(o, n); -#endif - return PyObject_GetAttr(o, n); -} - -/* Globals */ - static PyObject* __Pyx_Globals(void) { - Py_ssize_t i; - PyObject *names; - PyObject *globals = __pyx_d; - Py_INCREF(globals); - names = PyObject_Dir(__pyx_m); - if (!names) - goto bad; - for (i = PyList_GET_SIZE(names)-1; i >= 0; i--) { -#if CYTHON_COMPILING_IN_PYPY - PyObject* name = PySequence_ITEM(names, i); - if (!name) - goto bad; -#else - PyObject* name = PyList_GET_ITEM(names, i); -#endif - if (!PyDict_Contains(globals, name)) { - PyObject* value = __Pyx_GetAttr(__pyx_m, name); - if (!value) { -#if CYTHON_COMPILING_IN_PYPY - Py_DECREF(name); -#endif - goto bad; - } - if (PyDict_SetItem(globals, name, value) < 0) { -#if CYTHON_COMPILING_IN_PYPY - Py_DECREF(name); -#endif - Py_DECREF(value); - goto bad; - } - } -#if CYTHON_COMPILING_IN_PYPY - Py_DECREF(name); -#endif - } - Py_DECREF(names); - return globals; -bad: - Py_XDECREF(names); - Py_XDECREF(globals); - return NULL; -} - -/* PyErrFetchRestore */ - #if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - tmp_type = tstate->curexc_type; - tmp_value = tstate->curexc_value; - tmp_tb = tstate->curexc_traceback; - tstate->curexc_type = type; - tstate->curexc_value = value; - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - *type = tstate->curexc_type; - *value = tstate->curexc_value; - *tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -} -#endif - -/* CLineInTraceback */ - #ifndef CYTHON_CLINE_IN_TRACEBACK -static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) { - PyObject *use_cline; - PyObject *ptype, *pvalue, *ptraceback; -#if CYTHON_COMPILING_IN_CPYTHON - PyObject **cython_runtime_dict; -#endif - if (unlikely(!__pyx_cython_runtime)) { - return c_line; - } - __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); -#if CYTHON_COMPILING_IN_CPYTHON - cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); - if (likely(cython_runtime_dict)) { - use_cline = __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback); - } else -#endif - { - PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); - if (use_cline_obj) { - use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; - Py_DECREF(use_cline_obj); - } else { - PyErr_Clear(); - use_cline = NULL; - } - } - if (!use_cline) { - c_line = 0; - PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); - } - else if (PyObject_Not(use_cline) != 0) { - c_line = 0; - } - __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); - return c_line; -} -#endif - -/* CodeObjectCache */ - static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { - int start = 0, mid = 0, end = count - 1; - if (end >= 0 && code_line > entries[end].code_line) { - return count; - } - while (start < end) { - mid = start + (end - start) / 2; - if (code_line < entries[mid].code_line) { - end = mid; - } else if (code_line > entries[mid].code_line) { - start = mid + 1; - } else { - return mid; - } - } - if (code_line <= entries[mid].code_line) { - return mid; - } else { - return mid + 1; - } -} -static PyCodeObject *__pyx_find_code_object(int code_line) { - PyCodeObject* code_object; - int pos; - if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { - return NULL; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { - return NULL; - } - code_object = __pyx_code_cache.entries[pos].code_object; - Py_INCREF(code_object); - return code_object; -} -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { - int pos, i; - __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; - if (unlikely(!code_line)) { - return; - } - if (unlikely(!entries)) { - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); - if (likely(entries)) { - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = 64; - __pyx_code_cache.count = 1; - entries[0].code_line = code_line; - entries[0].code_object = code_object; - Py_INCREF(code_object); - } - return; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { - PyCodeObject* tmp = entries[pos].code_object; - entries[pos].code_object = code_object; - Py_DECREF(tmp); - return; - } - if (__pyx_code_cache.count == __pyx_code_cache.max_count) { - int new_max = __pyx_code_cache.max_count + 64; - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( - __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry)); - if (unlikely(!entries)) { - return; - } - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = new_max; - } - for (i=__pyx_code_cache.count; i>pos; i--) { - entries[i] = entries[i-1]; - } - entries[pos].code_line = code_line; - entries[pos].code_object = code_object; - __pyx_code_cache.count++; - Py_INCREF(code_object); -} - -/* AddTraceback */ - #include "compile.h" -#include "frameobject.h" -#include "traceback.h" -static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( - const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyObject *py_srcfile = 0; - PyObject *py_funcname = 0; - #if PY_MAJOR_VERSION < 3 - py_srcfile = PyString_FromString(filename); - #else - py_srcfile = PyUnicode_FromString(filename); - #endif - if (!py_srcfile) goto bad; - if (c_line) { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #else - py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #endif - } - else { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromString(funcname); - #else - py_funcname = PyUnicode_FromString(funcname); - #endif - } - if (!py_funcname) goto bad; - py_code = __Pyx_PyCode_New( - 0, - 0, - 0, - 0, - 0, - __pyx_empty_bytes, /*PyObject *code,*/ - __pyx_empty_tuple, /*PyObject *consts,*/ - __pyx_empty_tuple, /*PyObject *names,*/ - __pyx_empty_tuple, /*PyObject *varnames,*/ - __pyx_empty_tuple, /*PyObject *freevars,*/ - __pyx_empty_tuple, /*PyObject *cellvars,*/ - py_srcfile, /*PyObject *filename,*/ - py_funcname, /*PyObject *name,*/ - py_line, - __pyx_empty_bytes /*PyObject *lnotab*/ - ); - Py_DECREF(py_srcfile); - Py_DECREF(py_funcname); - return py_code; -bad: - Py_XDECREF(py_srcfile); - Py_XDECREF(py_funcname); - return NULL; -} -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyFrameObject *py_frame = 0; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - if (c_line) { - c_line = __Pyx_CLineForTraceback(tstate, c_line); - } - py_code = __pyx_find_code_object(c_line ? -c_line : py_line); - if (!py_code) { - py_code = __Pyx_CreateCodeObjectForTraceback( - funcname, c_line, py_line, filename); - if (!py_code) goto bad; - __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); - } - py_frame = PyFrame_New( - tstate, /*PyThreadState *tstate,*/ - py_code, /*PyCodeObject *code,*/ - __pyx_d, /*PyObject *globals,*/ - 0 /*PyObject *locals*/ - ); - if (!py_frame) goto bad; - __Pyx_PyFrame_SetLineNumber(py_frame, py_line); - PyTraceBack_Here(py_frame); -bad: - Py_XDECREF(py_code); - Py_XDECREF(py_frame); -} - -/* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { - const long neg_one = (long) -1, const_zero = (long) 0; - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(long) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(long) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -#endif - } - } else { - if (sizeof(long) <= sizeof(long)) { - return PyInt_FromLong((long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); -#endif - } - } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; - return _PyLong_FromByteArray(bytes, sizeof(long), - little, !is_unsigned); - } -} - -/* CIntFromPyVerify */ - #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) -#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) -#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ - {\ - func_type value = func_value;\ - if (sizeof(target_type) < sizeof(func_type)) {\ - if (unlikely(value != (func_type) (target_type) value)) {\ - func_type zero = 0;\ - if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ - return (target_type) -1;\ - if (is_unsigned && unlikely(value < zero))\ - goto raise_neg_overflow;\ - else\ - goto raise_overflow;\ - }\ - }\ - return (target_type) value;\ - } - -/* CIntFromPy */ - static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { - const long neg_one = (long) -1, const_zero = (long) 0; - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(long) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (long) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { - return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { - return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { - return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (long) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(long) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) - case -2: - if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - } -#endif - if (sizeof(long) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - long val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (long) -1; - } - } else { - long val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (long) -1; - val = __Pyx_PyInt_As_long(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to long"); - return (long) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to long"); - return (long) -1; -} - -/* CIntFromPy */ - static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { - const int neg_one = (int) -1, const_zero = (int) 0; - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(int) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (int) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (int) 0; - case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { - return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { - return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { - return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (int) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(int) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (int) 0; - case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) - case -2: - if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - } -#endif - if (sizeof(int) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - int val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (int) -1; - } - } else { - int val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (int) -1; - val = __Pyx_PyInt_As_int(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to int"); - return (int) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to int"); - return (int) -1; -} - -/* FastTypeChecks */ - #if CYTHON_COMPILING_IN_CPYTHON -static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { - while (a) { - a = a->tp_base; - if (a == b) - return 1; - } - return b == &PyBaseObject_Type; -} -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { - PyObject *mro; - if (a == b) return 1; - mro = a->tp_mro; - if (likely(mro)) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(mro); - for (i = 0; i < n; i++) { - if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) - return 1; - } - return 0; - } - return __Pyx_InBases(a, b); -} -#if PY_MAJOR_VERSION == 2 -static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { - PyObject *exception, *value, *tb; - int res; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&exception, &value, &tb); - res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - if (!res) { - res = PyObject_IsSubclass(err, exc_type2); - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - } - __Pyx_ErrRestore(exception, value, tb); - return res; -} -#else -static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { - int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0; - if (!res) { - res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); - } - return res; -} -#endif -static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - assert(PyExceptionClass_Check(exc_type)); - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; i<n; i++) { - if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1; - } -#endif - for (i=0; i<n; i++) { - PyObject *t = PyTuple_GET_ITEM(tuple, i); - #if PY_MAJOR_VERSION < 3 - if (likely(exc_type == t)) return 1; - #endif - if (likely(PyExceptionClass_Check(t))) { - if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1; - } else { - } - } - return 0; -} -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) { - if (likely(err == exc_type)) return 1; - if (likely(PyExceptionClass_Check(err))) { - if (likely(PyExceptionClass_Check(exc_type))) { - return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type); - } else if (likely(PyTuple_Check(exc_type))) { - return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type); - } else { - } - } - return PyErr_GivenExceptionMatches(err, exc_type); -} -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) { - assert(PyExceptionClass_Check(exc_type1)); - assert(PyExceptionClass_Check(exc_type2)); - if (likely(err == exc_type1 || err == exc_type2)) return 1; - if (likely(PyExceptionClass_Check(err))) { - return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2); - } - return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2)); -} -#endif - -/* CheckBinaryVersion */ - static int __Pyx_check_binary_version(void) { - char ctversion[4], rtversion[4]; - PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); - PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); - if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) { - char message[200]; - PyOS_snprintf(message, sizeof(message), - "compiletime version %s of module '%.100s' " - "does not match runtime version %s", - ctversion, __Pyx_MODULE_NAME, rtversion); - return PyErr_WarnEx(NULL, message, 1); - } - return 0; -} - -/* PyObjectSetAttrStr */ - #if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_setattro)) - return tp->tp_setattro(obj, attr_name, value); -#if PY_MAJOR_VERSION < 3 - if (likely(tp->tp_setattr)) - return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value); -#endif - return PyObject_SetAttr(obj, attr_name, value); -} -#endif - -/* VoidPtrExport */ - static int __Pyx_ExportVoidPtr(PyObject *name, void *p, const char *sig) { - PyObject *d; - PyObject *cobj = 0; - d = PyDict_GetItem(__pyx_d, __pyx_n_s_pyx_capi); - Py_XINCREF(d); - if (!d) { - d = PyDict_New(); - if (!d) - goto bad; - if (__Pyx_PyObject_SetAttrStr(__pyx_m, __pyx_n_s_pyx_capi, d) < 0) - goto bad; - } -#if PY_VERSION_HEX >= 0x02070000 - cobj = PyCapsule_New(p, sig, 0); -#else - cobj = PyCObject_FromVoidPtrAndDesc(p, (void *)sig, 0); -#endif - if (!cobj) - goto bad; - if (PyDict_SetItem(d, name, cobj) < 0) - goto bad; - Py_DECREF(cobj); - Py_DECREF(d); - return 0; -bad: - Py_XDECREF(cobj); - Py_XDECREF(d); - return -1; -} - -/* InitStrings */ - static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { - while (t->p) { - #if PY_MAJOR_VERSION < 3 - if (t->is_unicode) { - *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); - } else if (t->intern) { - *t->p = PyString_InternFromString(t->s); - } else { - *t->p = PyString_FromStringAndSize(t->s, t->n - 1); - } - #else - if (t->is_unicode | t->is_str) { - if (t->intern) { - *t->p = PyUnicode_InternFromString(t->s); - } else if (t->encoding) { - *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL); - } else { - *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1); - } - } else { - *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1); - } - #endif - if (!*t->p) - return -1; - if (PyObject_Hash(*t->p) == -1) - return -1; - ++t; - } - return 0; -} - -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { - return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); -} -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { - Py_ssize_t ignore; - return __Pyx_PyObject_AsStringAndSize(o, &ignore); -} -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -#if !CYTHON_PEP393_ENABLED -static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - char* defenc_c; - PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); - if (!defenc) return NULL; - defenc_c = PyBytes_AS_STRING(defenc); -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - { - char* end = defenc_c + PyBytes_GET_SIZE(defenc); - char* c; - for (c = defenc_c; c < end; c++) { - if ((unsigned char) (*c) >= 128) { - PyUnicode_AsASCIIString(o); - return NULL; - } - } - } -#endif - *length = PyBytes_GET_SIZE(defenc); - return defenc_c; -} -#else -static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - if (likely(PyUnicode_IS_ASCII(o))) { - *length = PyUnicode_GET_LENGTH(o); - return PyUnicode_AsUTF8(o); - } else { - PyUnicode_AsASCIIString(o); - return NULL; - } -#else - return PyUnicode_AsUTF8AndSize(o, length); -#endif -} -#endif -#endif -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT - if ( -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - __Pyx_sys_getdefaultencoding_not_ascii && -#endif - PyUnicode_Check(o)) { - return __Pyx_PyUnicode_AsStringAndSize(o, length); - } else -#endif -#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) - if (PyByteArray_Check(o)) { - *length = PyByteArray_GET_SIZE(o); - return PyByteArray_AS_STRING(o); - } else -#endif - { - char* result; - int r = PyBytes_AsStringAndSize(o, &result, length); - if (unlikely(r < 0)) { - return NULL; - } else { - return result; - } - } -} -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { - int is_true = x == Py_True; - if (is_true | (x == Py_False) | (x == Py_None)) return is_true; - else return PyObject_IsTrue(x); -} -static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { -#if PY_MAJOR_VERSION >= 3 - if (PyLong_Check(result)) { - if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, - "__int__ returned non-int (type %.200s). " - "The ability to return an instance of a strict subclass of int " - "is deprecated, and may be removed in a future version of Python.", - Py_TYPE(result)->tp_name)) { - Py_DECREF(result); - return NULL; - } - return result; - } -#endif - PyErr_Format(PyExc_TypeError, - "__%.4s__ returned non-%.4s (type %.200s)", - type_name, type_name, Py_TYPE(result)->tp_name); - Py_DECREF(result); - return NULL; -} -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { -#if CYTHON_USE_TYPE_SLOTS - PyNumberMethods *m; -#endif - const char *name = NULL; - PyObject *res = NULL; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x) || PyLong_Check(x))) -#else - if (likely(PyLong_Check(x))) -#endif - return __Pyx_NewRef(x); -#if CYTHON_USE_TYPE_SLOTS - m = Py_TYPE(x)->tp_as_number; - #if PY_MAJOR_VERSION < 3 - if (m && m->nb_int) { - name = "int"; - res = m->nb_int(x); - } - else if (m && m->nb_long) { - name = "long"; - res = m->nb_long(x); - } - #else - if (likely(m && m->nb_int)) { - name = "int"; - res = m->nb_int(x); - } - #endif -#else - if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { - res = PyNumber_Int(x); - } -#endif - if (likely(res)) { -#if PY_MAJOR_VERSION < 3 - if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { -#else - if (unlikely(!PyLong_CheckExact(res))) { -#endif - return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); - } - } - else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_TypeError, - "an integer is required"); - } - return res; -} -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { - Py_ssize_t ival; - PyObject *x; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(b))) { - if (sizeof(Py_ssize_t) >= sizeof(long)) - return PyInt_AS_LONG(b); - else - return PyInt_AsSsize_t(x); - } -#endif - if (likely(PyLong_CheckExact(b))) { - #if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)b)->ob_digit; - const Py_ssize_t size = Py_SIZE(b); - if (likely(__Pyx_sst_abs(size) <= 1)) { - ival = likely(size) ? digits[0] : 0; - if (size == -1) ival = -ival; - return ival; - } else { - switch (size) { - case 2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - } - } - #endif - return PyLong_AsSsize_t(b); - } - x = PyNumber_Index(b); - if (!x) return -1; - ival = PyInt_AsSsize_t(x); - Py_DECREF(x); - return ival; -} -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { - return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); -} -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { - return PyInt_FromSize_t(ival); -} - - -#endif /* Py_PYTHON_H */ diff --git a/python/gevent/_tracer.py b/python/gevent/_tracer.py deleted file mode 100644 index 98307ab..0000000 --- a/python/gevent/_tracer.py +++ /dev/null @@ -1,179 +0,0 @@ -# Copyright (c) 2018 gevent. See LICENSE for details. -# cython: auto_pickle=False,embedsignature=True,always_allow_keywords=False -from __future__ import print_function, absolute_import, division - -import sys -import traceback - -from greenlet import settrace -from greenlet import getcurrent - -from gevent.util import format_run_info - -from gevent._compat import perf_counter -from gevent._util import gmctime - - -__all__ = [ - 'GreenletTracer', - 'HubSwitchTracer', - 'MaxSwitchTracer', -] - -# Recall these classes are cython compiled, so -# class variable declarations are bad. - - -class GreenletTracer(object): - def __init__(self): - # A counter, incremented by the greenlet trace function - # we install on every greenlet switch. This is reset when the - # periodic monitoring thread runs. - - self.greenlet_switch_counter = 0 - - # The greenlet last switched to. - self.active_greenlet = None - - # The trace function that was previously installed, - # if any. - # NOTE: Calling a class instance is cheaper than - # calling a bound method (at least when compiled with cython) - # even when it redirects to another function. - prev_trace = settrace(self) - - self.previous_trace_function = prev_trace - - self._killed = False - - def kill(self): - # Must be called in the monitored thread. - if not self._killed: - self._killed = True - settrace(self.previous_trace_function) - self.previous_trace_function = None - - def _trace(self, event, args): - # This function runs in the thread we are monitoring. - self.greenlet_switch_counter += 1 - if event in ('switch', 'throw'): - # args is (origin, target). This is the only defined - # case - self.active_greenlet = args[1] - else: - self.active_greenlet = None - if self.previous_trace_function is not None: - self.previous_trace_function(event, args) - - def __call__(self, event, args): - return self._trace(event, args) - - def did_block_hub(self, hub): - # Check to see if we have blocked since the last call to this - # method. Returns a true value if we blocked (not in the hub), - # a false value if everything is fine. - - # This may be called in the same thread being traced or a - # different thread; if a different thread, there is a race - # condition with this being incremented in the thread we're - # monitoring, but probably not often enough to lead to - # annoying false positives. - - active_greenlet = self.active_greenlet - did_switch = self.greenlet_switch_counter != 0 - self.greenlet_switch_counter = 0 - - if did_switch or active_greenlet is None or active_greenlet is hub: - # Either we switched, or nothing is running (we got a - # trace event we don't know about or were requested to - # ignore), or we spent the whole time in the hub, blocked - # for IO. Nothing to report. - return False - return True, active_greenlet - - def ignore_current_greenlet_blocking(self): - # Don't pay attention to the current greenlet. - self.active_greenlet = None - - def monitor_current_greenlet_blocking(self): - self.active_greenlet = getcurrent() - - def did_block_hub_report(self, hub, active_greenlet, format_kwargs): - report = ['=' * 80, - '\n%s : Greenlet %s appears to be blocked' % - (gmctime(), active_greenlet)] - report.append(" Reported by %s" % (self,)) - try: - frame = sys._current_frames()[hub.thread_ident] - except KeyError: - # The thread holding the hub has died. Perhaps we shouldn't - # even report this? - stack = ["Unknown: No thread found for hub %r\n" % (hub,)] - else: - stack = traceback.format_stack(frame) - report.append('Blocked Stack (for thread id %s):' % (hex(hub.thread_ident),)) - report.append(''.join(stack)) - report.append("Info:") - report.extend(format_run_info(**format_kwargs)) - - return report - - -class _HubTracer(GreenletTracer): - def __init__(self, hub, max_blocking_time): - GreenletTracer.__init__(self) - self.max_blocking_time = max_blocking_time - self.hub = hub - - def kill(self): - self.hub = None - GreenletTracer.kill(self) - - -class HubSwitchTracer(_HubTracer): - # A greenlet tracer that records the last time we switched *into* the hub. - - def __init__(self, hub, max_blocking_time): - _HubTracer.__init__(self, hub, max_blocking_time) - self.last_entered_hub = 0 - - def _trace(self, event, args): - GreenletTracer._trace(self, event, args) - if self.active_greenlet is self.hub: - self.last_entered_hub = perf_counter() - - def did_block_hub(self, hub): - if perf_counter() - self.last_entered_hub > self.max_blocking_time: - return True, self.active_greenlet - - -class MaxSwitchTracer(_HubTracer): - # A greenlet tracer that records the maximum time between switches, - # not including time spent in the hub. - - def __init__(self, hub, max_blocking_time): - _HubTracer.__init__(self, hub, max_blocking_time) - self.last_switch = perf_counter() - self.max_blocking = 0 - - def _trace(self, event, args): - old_active = self.active_greenlet - GreenletTracer._trace(self, event, args) - if old_active is not self.hub and old_active is not None: - # If we're switching out of the hub, the blocking - # time doesn't count. - switched_at = perf_counter() - self.max_blocking = max(self.max_blocking, - switched_at - self.last_switch) - - def did_block_hub(self, hub): - if self.max_blocking == 0: - # We never switched. Check the time now - self.max_blocking = perf_counter() - self.last_switch - - if self.max_blocking > self.max_blocking_time: - return True, self.active_greenlet - - -from gevent._util import import_c_accel -import_c_accel(globals(), 'gevent.__tracer') diff --git a/python/gevent/_util.py b/python/gevent/_util.py deleted file mode 100644 index 4397aa3..0000000 --- a/python/gevent/_util.py +++ /dev/null @@ -1,178 +0,0 @@ -# -*- coding: utf-8 -*- -""" -internal gevent utilities, not for external use. -""" - -from __future__ import print_function, absolute_import, division - -from functools import update_wrapper - -from gevent._compat import iteritems - - -class _NONE(object): - """ - A special object you must never pass to any gevent API. - Used as a marker object for keyword arguments that cannot have the - builtin None (because that might be a valid value). - """ - __slots__ = () - - def __repr__(self): - return '<default value>' - -_NONE = _NONE() - -def copy_globals(source, - globs, - only_names=None, - ignore_missing_names=False, - names_to_ignore=(), - dunder_names_to_keep=('__implements__', '__all__', '__imports__'), - cleanup_globs=True): - """ - Copy attributes defined in ``source.__dict__`` to the dictionary - in globs (which should be the caller's :func:`globals`). - - Names that start with ``__`` are ignored (unless they are in - *dunder_names_to_keep*). Anything found in *names_to_ignore* is - also ignored. - - If *only_names* is given, only those attributes will be - considered. In this case, *ignore_missing_names* says whether or - not to raise an :exc:`AttributeError` if one of those names can't - be found. - - If *cleanup_globs* has a true value, then common things imported but - not used at runtime are removed, including this function. - - Returns a list of the names copied; this should be assigned to ``__imports__``. - """ - if only_names: - if ignore_missing_names: - items = ((k, getattr(source, k, _NONE)) for k in only_names) - else: - items = ((k, getattr(source, k)) for k in only_names) - else: - items = iteritems(source.__dict__) - - copied = [] - for key, value in items: - if value is _NONE: - continue - if key in names_to_ignore: - continue - if key.startswith("__") and key not in dunder_names_to_keep: - continue - globs[key] = value - copied.append(key) - - if cleanup_globs: - if 'copy_globals' in globs: - del globs['copy_globals'] - - return copied - -def import_c_accel(globs, cname): - """ - Import the C-accelerator for the __name__ - and copy its globals. - """ - - name = globs.get('__name__') - - if not name or name == cname: - # Do nothing if we're being exec'd as a file (no name) - # or we're running from the C extension - return - - - from gevent._compat import PURE_PYTHON - if PURE_PYTHON: - return - - import importlib - import warnings - with warnings.catch_warnings(): - # Python 3.7 likes to produce - # "ImportWarning: can't resolve - # package from __spec__ or __package__, falling back on - # __name__ and __path__" - # when we load cython compiled files. This is probably a bug in - # Cython, but it doesn't seem to have any consequences, it's - # just annoying to see and can mess up our unittests. - warnings.simplefilter('ignore', ImportWarning) - mod = importlib.import_module(cname) - - # By adopting the entire __dict__, we get a more accurate - # __file__ and module repr, plus we don't leak any imported - # things we no longer need. - globs.clear() - globs.update(mod.__dict__) - - if 'import_c_accel' in globs: - del globs['import_c_accel'] - - -class Lazy(object): - """ - A non-data descriptor used just like @property. The - difference is the function value is assigned to the instance - dict the first time it is accessed and then the function is never - called agoin. - """ - def __init__(self, func): - self.data = (func, func.__name__) - update_wrapper(self, func) - - def __get__(self, inst, class_): - if inst is None: - return self - - func, name = self.data - value = func(inst) - inst.__dict__[name] = value - return value - -class readproperty(object): - """ - A non-data descriptor like @property. The difference is that - when the property is assigned to, it is cached in the instance - and the function is not called on that instance again. - """ - - def __init__(self, func): - self.func = func - update_wrapper(self, func) - - def __get__(self, inst, class_): - if inst is None: - return self - - return self.func(inst) - -def gmctime(): - """ - Returns the current time as a string in RFC3339 format. - """ - import time - return time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime()) - -try: - from zope.interface import Interface - from zope.interface import implementer - from zope.interface import Attribute -except ImportError: - class Interface(object): - pass - def implementer(_iface): - def dec(c): - return c - return dec - - def Attribute(s): - return s - -Interface = Interface -implementer = implementer -Attribute = Attribute diff --git a/python/gevent/_util_py2.py b/python/gevent/_util_py2.py deleted file mode 100644 index 02332e3..0000000 --- a/python/gevent/_util_py2.py +++ /dev/null @@ -1,23 +0,0 @@ -import sys - -__all__ = ['reraise'] - - -def exec_(_code_, _globs_=None, _locs_=None): - """Execute code in a namespace.""" - if _globs_ is None: - frame = sys._getframe(1) - _globs_ = frame.f_globals - if _locs_ is None: - _locs_ = frame.f_locals - del frame - elif _locs_ is None: - _locs_ = _globs_ - exec("""exec _code_ in _globs_, _locs_""") - -exec_("""def reraise(tp, value, tb=None): - try: - raise tp, value, tb - finally: - tb = None -""") diff --git a/python/gevent/_waiter.c b/python/gevent/_waiter.c deleted file mode 100644 index 374a500..0000000 --- a/python/gevent/_waiter.c +++ /dev/null @@ -1,8782 +0,0 @@ -/* Generated by Cython 0.28.5 */ - -/* BEGIN: Cython Metadata -{ - "distutils": { - "depends": [ - "src/gevent/__waiter.pxd", - "src\\gevent\\__waiter.pxd" - ], - "include_dirs": [ - "C:\\Python36\\Include", - "deps" - ], - "name": "gevent.__waiter", - "sources": [ - "src/gevent/_waiter.py" - ] - }, - "module_name": "gevent.__waiter" -} -END: Cython Metadata */ - -#define PY_SSIZE_T_CLEAN -#include "Python.h" -#ifndef Py_PYTHON_H - #error Python headers needed to compile C extensions, please install development version of Python. -#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) - #error Cython requires Python 2.6+ or Python 3.3+. -#else -#define CYTHON_ABI "0_28_5" -#define CYTHON_FUTURE_DIVISION 1 -#include <stddef.h> -#ifndef offsetof - #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) -#endif -#if !defined(WIN32) && !defined(MS_WINDOWS) - #ifndef __stdcall - #define __stdcall - #endif - #ifndef __cdecl - #define __cdecl - #endif - #ifndef __fastcall - #define __fastcall - #endif -#endif -#ifndef DL_IMPORT - #define DL_IMPORT(t) t -#endif -#ifndef DL_EXPORT - #define DL_EXPORT(t) t -#endif -#define __PYX_COMMA , -#ifndef HAVE_LONG_LONG - #if PY_VERSION_HEX >= 0x02070000 - #define HAVE_LONG_LONG - #endif -#endif -#ifndef PY_LONG_LONG - #define PY_LONG_LONG LONG_LONG -#endif -#ifndef Py_HUGE_VAL - #define Py_HUGE_VAL HUGE_VAL -#endif -#ifdef PYPY_VERSION - #define CYTHON_COMPILING_IN_PYPY 1 - #define CYTHON_COMPILING_IN_PYSTON 0 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #undef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 0 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #if PY_VERSION_HEX < 0x03050000 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #undef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #undef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 1 - #undef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 0 - #undef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 0 - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 -#elif defined(PYSTON_VERSION) - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_PYSTON 1 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 -#else - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_PYSTON 0 - #define CYTHON_COMPILING_IN_CPYTHON 1 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #if PY_VERSION_HEX < 0x02070000 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #elif !defined(CYTHON_USE_PYTYPE_LOOKUP) - #define CYTHON_USE_PYTYPE_LOOKUP 1 - #endif - #if PY_MAJOR_VERSION < 3 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #if PY_VERSION_HEX < 0x02070000 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #elif !defined(CYTHON_USE_PYLONG_INTERNALS) - #define CYTHON_USE_PYLONG_INTERNALS 1 - #endif - #ifndef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 1 - #endif - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #if PY_VERSION_HEX < 0x030300F0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #elif !defined(CYTHON_USE_UNICODE_WRITER) - #define CYTHON_USE_UNICODE_WRITER 1 - #endif - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #ifndef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 1 - #endif - #ifndef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 1 - #endif - #ifndef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT (0 && PY_VERSION_HEX >= 0x03050000) - #endif - #ifndef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1) - #endif -#endif -#if !defined(CYTHON_FAST_PYCCALL) -#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) -#endif -#if CYTHON_USE_PYLONG_INTERNALS - #include "longintrepr.h" - #undef SHIFT - #undef BASE - #undef MASK -#endif -#ifndef __has_attribute - #define __has_attribute(x) 0 -#endif -#ifndef __has_cpp_attribute - #define __has_cpp_attribute(x) 0 -#endif -#ifndef CYTHON_RESTRICT - #if defined(__GNUC__) - #define CYTHON_RESTRICT __restrict__ - #elif defined(_MSC_VER) && _MSC_VER >= 1400 - #define CYTHON_RESTRICT __restrict - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_RESTRICT restrict - #else - #define CYTHON_RESTRICT - #endif -#endif -#ifndef CYTHON_UNUSED -# if defined(__GNUC__) -# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -#endif -#ifndef CYTHON_MAYBE_UNUSED_VAR -# if defined(__cplusplus) - template<class T> void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } -# else -# define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) -# endif -#endif -#ifndef CYTHON_NCP_UNUSED -# if CYTHON_COMPILING_IN_CPYTHON -# define CYTHON_NCP_UNUSED -# else -# define CYTHON_NCP_UNUSED CYTHON_UNUSED -# endif -#endif -#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) -#ifdef _MSC_VER - #ifndef _MSC_STDINT_H_ - #if _MSC_VER < 1300 - typedef unsigned char uint8_t; - typedef unsigned int uint32_t; - #else - typedef unsigned __int8 uint8_t; - typedef unsigned __int32 uint32_t; - #endif - #endif -#else - #include <stdint.h> -#endif -#ifndef CYTHON_FALLTHROUGH - #if defined(__cplusplus) && __cplusplus >= 201103L - #if __has_cpp_attribute(fallthrough) - #define CYTHON_FALLTHROUGH [[fallthrough]] - #elif __has_cpp_attribute(clang::fallthrough) - #define CYTHON_FALLTHROUGH [[clang::fallthrough]] - #elif __has_cpp_attribute(gnu::fallthrough) - #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] - #endif - #endif - #ifndef CYTHON_FALLTHROUGH - #if __has_attribute(fallthrough) - #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) - #else - #define CYTHON_FALLTHROUGH - #endif - #endif - #if defined(__clang__ ) && defined(__apple_build_version__) - #if __apple_build_version__ < 7000000 - #undef CYTHON_FALLTHROUGH - #define CYTHON_FALLTHROUGH - #endif - #endif -#endif - -#ifndef CYTHON_INLINE - #if defined(__clang__) - #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) - #elif defined(__GNUC__) - #define CYTHON_INLINE __inline__ - #elif defined(_MSC_VER) - #define CYTHON_INLINE __inline - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_INLINE inline - #else - #define CYTHON_INLINE - #endif -#endif - -#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) - #define Py_OptimizeFlag 0 -#endif -#define __PYX_BUILD_PY_SSIZE_T "n" -#define CYTHON_FORMAT_SSIZE_T "z" -#if PY_MAJOR_VERSION < 3 - #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) - #define __Pyx_DefaultClassType PyClass_Type -#else - #define __Pyx_BUILTIN_MODULE_NAME "builtins" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) - #define __Pyx_DefaultClassType PyType_Type -#endif -#ifndef Py_TPFLAGS_CHECKTYPES - #define Py_TPFLAGS_CHECKTYPES 0 -#endif -#ifndef Py_TPFLAGS_HAVE_INDEX - #define Py_TPFLAGS_HAVE_INDEX 0 -#endif -#ifndef Py_TPFLAGS_HAVE_NEWBUFFER - #define Py_TPFLAGS_HAVE_NEWBUFFER 0 -#endif -#ifndef Py_TPFLAGS_HAVE_FINALIZE - #define Py_TPFLAGS_HAVE_FINALIZE 0 -#endif -#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) - #ifndef METH_FASTCALL - #define METH_FASTCALL 0x80 - #endif - typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); - typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, - Py_ssize_t nargs, PyObject *kwnames); -#else - #define __Pyx_PyCFunctionFast _PyCFunctionFast - #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords -#endif -#if CYTHON_FAST_PYCCALL -#define __Pyx_PyFastCFunction_Check(func)\ - ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))))) -#else -#define __Pyx_PyFastCFunction_Check(func) 0 -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) - #define PyObject_Malloc(s) PyMem_Malloc(s) - #define PyObject_Free(p) PyMem_Free(p) - #define PyObject_Realloc(p) PyMem_Realloc(p) -#endif -#if CYTHON_COMPILING_IN_PYSTON - #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) -#else - #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) -#endif -#if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000 - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#elif PY_VERSION_HEX >= 0x03060000 - #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() -#elif PY_VERSION_HEX >= 0x03000000 - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#else - #define __Pyx_PyThreadState_Current _PyThreadState_Current -#endif -#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) -#include "pythread.h" -#define Py_tss_NEEDS_INIT 0 -typedef int Py_tss_t; -static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { - *key = PyThread_create_key(); - return 0; // PyThread_create_key reports success always -} -static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { - Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); - *key = Py_tss_NEEDS_INIT; - return key; -} -static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { - PyObject_Free(key); -} -static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { - return *key != Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { - PyThread_delete_key(*key); - *key = Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { - return PyThread_set_key_value(*key, value); -} -static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { - return PyThread_get_key_value(*key); -} -#endif // TSS (Thread Specific Storage) API -#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) -#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) -#else -#define __Pyx_PyDict_NewPresized(n) PyDict_New() -#endif -#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION - #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) -#else - #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) -#endif -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS -#define __Pyx_PyDict_GetItemStr(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) -#else -#define __Pyx_PyDict_GetItemStr(dict, name) PyDict_GetItem(dict, name) -#endif -#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) - #define CYTHON_PEP393_ENABLED 1 - #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ - 0 : _PyUnicode_Ready((PyObject *)(op))) - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) - #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) - #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) - #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) -#else - #define CYTHON_PEP393_ENABLED 0 - #define PyUnicode_1BYTE_KIND 1 - #define PyUnicode_2BYTE_KIND 2 - #define PyUnicode_4BYTE_KIND 4 - #define __Pyx_PyUnicode_READY(op) (0) - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) - #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) - #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) - #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) -#endif -#if CYTHON_COMPILING_IN_PYPY - #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) -#else - #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ - PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) - #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) - #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) - #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) -#endif -#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) -#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) -#else - #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) -#endif -#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) - #define PyObject_ASCII(o) PyObject_Repr(o) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBaseString_Type PyUnicode_Type - #define PyStringObject PyUnicodeObject - #define PyString_Type PyUnicode_Type - #define PyString_Check PyUnicode_Check - #define PyString_CheckExact PyUnicode_CheckExact - #define PyObject_Unicode PyObject_Str -#endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) - #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) -#else - #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) - #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) -#endif -#ifndef PySet_CheckExact - #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) -#endif -#if CYTHON_ASSUME_SAFE_MACROS - #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) -#else - #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyIntObject PyLongObject - #define PyInt_Type PyLong_Type - #define PyInt_Check(op) PyLong_Check(op) - #define PyInt_CheckExact(op) PyLong_CheckExact(op) - #define PyInt_FromString PyLong_FromString - #define PyInt_FromUnicode PyLong_FromUnicode - #define PyInt_FromLong PyLong_FromLong - #define PyInt_FromSize_t PyLong_FromSize_t - #define PyInt_FromSsize_t PyLong_FromSsize_t - #define PyInt_AsLong PyLong_AsLong - #define PyInt_AS_LONG PyLong_AS_LONG - #define PyInt_AsSsize_t PyLong_AsSsize_t - #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask - #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask - #define PyNumber_Int PyNumber_Long -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBoolObject PyLongObject -#endif -#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY - #ifndef PyUnicode_InternFromString - #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) - #endif -#endif -#if PY_VERSION_HEX < 0x030200A4 - typedef long Py_hash_t; - #define __Pyx_PyInt_FromHash_t PyInt_FromLong - #define __Pyx_PyInt_AsHash_t PyInt_AsLong -#else - #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t - #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t -#endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : (Py_INCREF(func), func)) -#else - #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) -#endif -#if CYTHON_USE_ASYNC_SLOTS - #if PY_VERSION_HEX >= 0x030500B1 - #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods - #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) - #else - #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) - #endif -#else - #define __Pyx_PyType_AsAsync(obj) NULL -#endif -#ifndef __Pyx_PyAsyncMethodsStruct - typedef struct { - unaryfunc am_await; - unaryfunc am_aiter; - unaryfunc am_anext; - } __Pyx_PyAsyncMethodsStruct; -#endif - -#if defined(WIN32) || defined(MS_WINDOWS) - #define _USE_MATH_DEFINES -#endif -#include <math.h> -#ifdef NAN -#define __PYX_NAN() ((float) NAN) -#else -static CYTHON_INLINE float __PYX_NAN() { - float value; - memset(&value, 0xFF, sizeof(value)); - return value; -} -#endif -#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) -#define __Pyx_truncl trunc -#else -#define __Pyx_truncl truncl -#endif - - -#define __PYX_ERR(f_index, lineno, Ln_error) \ -{ \ - __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \ -} - -#ifndef __PYX_EXTERN_C - #ifdef __cplusplus - #define __PYX_EXTERN_C extern "C" - #else - #define __PYX_EXTERN_C extern - #endif -#endif - -#define __PYX_HAVE__gevent____waiter -#define __PYX_HAVE_API__gevent____waiter -/* Early includes */ -#include "greenlet/greenlet.h" -#ifdef _OPENMP -#include <omp.h> -#endif /* _OPENMP */ - -#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) -#define CYTHON_WITHOUT_ASSERTIONS -#endif - -typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; - const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; - -#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 -#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0 -#define __PYX_DEFAULT_STRING_ENCODING "" -#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString -#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#define __Pyx_uchar_cast(c) ((unsigned char)c) -#define __Pyx_long_cast(x) ((long)x) -#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ - (sizeof(type) < sizeof(Py_ssize_t)) ||\ - (sizeof(type) > sizeof(Py_ssize_t) &&\ - likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX) &&\ - (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ - v == (type)PY_SSIZE_T_MIN))) ||\ - (sizeof(type) == sizeof(Py_ssize_t) &&\ - (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX))) ) -#if defined (__cplusplus) && __cplusplus >= 201103L - #include <cstdlib> - #define __Pyx_sst_abs(value) std::abs(value) -#elif SIZEOF_INT >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) abs(value) -#elif SIZEOF_LONG >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) labs(value) -#elif defined (_MSC_VER) - #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) -#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define __Pyx_sst_abs(value) llabs(value) -#elif defined (__GNUC__) - #define __Pyx_sst_abs(value) __builtin_llabs(value) -#else - #define __Pyx_sst_abs(value) ((value<0) ? -value : value) -#endif -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); -#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) -#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) -#define __Pyx_PyBytes_FromString PyBytes_FromString -#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); -#if PY_MAJOR_VERSION < 3 - #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#else - #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize -#endif -#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) -#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) -#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) -#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) -#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) -static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { - const Py_UNICODE *u_end = u; - while (*u_end++) ; - return (size_t)(u_end - u - 1); -} -#define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) -#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode -#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode -#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) -#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); -#define __Pyx_PySequence_Tuple(obj)\ - (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); -#if CYTHON_ASSUME_SAFE_MACROS -#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) -#else -#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) -#endif -#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) -#if PY_MAJOR_VERSION >= 3 -#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) -#else -#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) -#endif -#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x)) -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII -static int __Pyx_sys_getdefaultencoding_not_ascii; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - PyObject* ascii_chars_u = NULL; - PyObject* ascii_chars_b = NULL; - const char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - if (strcmp(default_encoding_c, "ascii") == 0) { - __Pyx_sys_getdefaultencoding_not_ascii = 0; - } else { - char ascii_chars[128]; - int c; - for (c = 0; c < 128; c++) { - ascii_chars[c] = c; - } - __Pyx_sys_getdefaultencoding_not_ascii = 1; - ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); - if (!ascii_chars_u) goto bad; - ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); - if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { - PyErr_Format( - PyExc_ValueError, - "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", - default_encoding_c); - goto bad; - } - Py_DECREF(ascii_chars_u); - Py_DECREF(ascii_chars_b); - } - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - Py_XDECREF(ascii_chars_u); - Py_XDECREF(ascii_chars_b); - return -1; -} -#endif -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) -#else -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -static char* __PYX_DEFAULT_STRING_ENCODING; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c)); - if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; - strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - return -1; -} -#endif -#endif - - -/* Test for GCC > 2.95 */ -#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) - #define likely(x) __builtin_expect(!!(x), 1) - #define unlikely(x) __builtin_expect(!!(x), 0) -#else /* !__GNUC__ or GCC < 2.95 */ - #define likely(x) (x) - #define unlikely(x) (x) -#endif /* __GNUC__ */ -static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } - -static PyObject *__pyx_m = NULL; -static PyObject *__pyx_d; -static PyObject *__pyx_b; -static PyObject *__pyx_cython_runtime = NULL; -static PyObject *__pyx_empty_tuple; -static PyObject *__pyx_empty_bytes; -static PyObject *__pyx_empty_unicode; -static int __pyx_lineno; -static int __pyx_clineno = 0; -static const char * __pyx_cfilenm= __FILE__; -static const char *__pyx_filename; - - -static const char *__pyx_f[] = { - "src\\gevent\\_waiter.py", - "src\\gevent\\__greenlet_primitives.pxd", - "src\\gevent\\__waiter.pxd", -}; - -/*--- Type declarations ---*/ -struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet; -struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop; -struct __pyx_obj_6gevent_8__waiter_Waiter; -struct __pyx_obj_6gevent_8__waiter_MultipleWaiter; - -/* "gevent/__greenlet_primitives.pxd":37 - * return PyGreenlet_Switch(self, NULL, NULL) - * - * cdef class TrackedRawGreenlet(greenlet): # <<<<<<<<<<<<<< - * pass - * - */ -struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet { - PyGreenlet __pyx_base; -}; - - -/* "gevent/__greenlet_primitives.pxd":40 - * pass - * - * cdef class SwitchOutGreenletWithLoop(TrackedRawGreenlet): # <<<<<<<<<<<<<< - * cdef public loop - * - */ -struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop { - struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet __pyx_base; - struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_vtab; - PyObject *loop; -}; - - -/* "gevent/__waiter.pxd":33 - * _greenlet_imported = True - * - * cdef class Waiter: # <<<<<<<<<<<<<< - * cdef readonly SwitchOutGreenletWithLoop hub - * cdef readonly greenlet greenlet - */ -struct __pyx_obj_6gevent_8__waiter_Waiter { - PyObject_HEAD - struct __pyx_vtabstruct_6gevent_8__waiter_Waiter *__pyx_vtab; - struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *hub; - PyGreenlet *greenlet; - PyObject *value; - PyObject *_exception; -}; - - -/* "gevent/__waiter.pxd":47 - * @cython.final - * @cython.internal - * cdef class MultipleWaiter(Waiter): # <<<<<<<<<<<<<< - * cdef list _values - */ -struct __pyx_obj_6gevent_8__waiter_MultipleWaiter { - struct __pyx_obj_6gevent_8__waiter_Waiter __pyx_base; - PyObject *_values; -}; - - - -/* "gevent/__greenlet_primitives.pxd":40 - * pass - * - * cdef class SwitchOutGreenletWithLoop(TrackedRawGreenlet): # <<<<<<<<<<<<<< - * cdef public loop - * - */ - -struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop { - PyObject *(*__pyx_switch)(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *, int __pyx_skip_dispatch); - PyObject *(*switch_out)(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *, int __pyx_skip_dispatch); -}; -static struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_vtabptr_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop; - - -/* "src/gevent/_waiter.py":27 - * - * - * class Waiter(object): # <<<<<<<<<<<<<< - * """ - * A low level communication utility for greenlets. - */ - -struct __pyx_vtabstruct_6gevent_8__waiter_Waiter { - PyObject *(*get)(struct __pyx_obj_6gevent_8__waiter_Waiter *, int __pyx_skip_dispatch); - PyObject *(*clear)(struct __pyx_obj_6gevent_8__waiter_Waiter *, int __pyx_skip_dispatch); -}; -static struct __pyx_vtabstruct_6gevent_8__waiter_Waiter *__pyx_vtabptr_6gevent_8__waiter_Waiter; - - -/* "src/gevent/_waiter.py":166 - * - * - * class MultipleWaiter(Waiter): # <<<<<<<<<<<<<< - * """ - * An internal extension of Waiter that can be used if multiple objects - */ - -struct __pyx_vtabstruct_6gevent_8__waiter_MultipleWaiter { - struct __pyx_vtabstruct_6gevent_8__waiter_Waiter __pyx_base; -}; -static struct __pyx_vtabstruct_6gevent_8__waiter_MultipleWaiter *__pyx_vtabptr_6gevent_8__waiter_MultipleWaiter; - -/* --- Runtime support code (head) --- */ -/* Refnanny.proto */ -#ifndef CYTHON_REFNANNY - #define CYTHON_REFNANNY 0 -#endif -#if CYTHON_REFNANNY - typedef struct { - void (*INCREF)(void*, PyObject*, int); - void (*DECREF)(void*, PyObject*, int); - void (*GOTREF)(void*, PyObject*, int); - void (*GIVEREF)(void*, PyObject*, int); - void* (*SetupContext)(const char*, int, const char*); - void (*FinishContext)(void**); - } __Pyx_RefNannyAPIStruct; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); - #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; -#ifdef WITH_THREAD - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - if (acquire_gil) {\ - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - PyGILState_Release(__pyx_gilstate_save);\ - } else {\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - } -#else - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) -#endif - #define __Pyx_RefNannyFinishContext()\ - __Pyx_RefNanny->FinishContext(&__pyx_refnanny) - #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) - #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) - #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) - #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0) -#else - #define __Pyx_RefNannyDeclarations - #define __Pyx_RefNannySetupContext(name, acquire_gil) - #define __Pyx_RefNannyFinishContext() - #define __Pyx_INCREF(r) Py_INCREF(r) - #define __Pyx_DECREF(r) Py_DECREF(r) - #define __Pyx_GOTREF(r) - #define __Pyx_GIVEREF(r) - #define __Pyx_XINCREF(r) Py_XINCREF(r) - #define __Pyx_XDECREF(r) Py_XDECREF(r) - #define __Pyx_XGOTREF(r) - #define __Pyx_XGIVEREF(r) -#endif -#define __Pyx_XDECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_XDECREF(tmp);\ - } while (0) -#define __Pyx_DECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_DECREF(tmp);\ - } while (0) -#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) -#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) - -/* PyObjectGetAttrStr.proto */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) -#endif - -/* GetBuiltinName.proto */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name); - -/* RaiseDoubleKeywords.proto */ -static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); - -/* ParseKeywords.proto */ -static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\ - PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\ - const char* function_name); - -/* RaiseArgTupleInvalid.proto */ -static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, - Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); - -/* ExtTypeTest.proto */ -static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); - -/* PyCFunctionFastCall.proto */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); -#else -#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) -#endif - -/* PyFunctionFastCall.proto */ -#if CYTHON_FAST_PYCALL -#define __Pyx_PyFunction_FastCall(func, args, nargs)\ - __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs); -#else -#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) -#endif -#endif - -/* PyObjectCall.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); -#else -#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) -#endif - -/* PyObjectCallMethO.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); -#endif - -/* PyObjectCallOneArg.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); - -/* PyObjectCallNoArg.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); -#else -#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL) -#endif - -/* PyThreadStateGet.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; -#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; -#define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type -#else -#define __Pyx_PyThreadState_declare -#define __Pyx_PyThreadState_assign -#define __Pyx_PyErr_Occurred() PyErr_Occurred() -#endif - -/* PyErrFetchRestore.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) -#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) -#else -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#endif -#else -#define __Pyx_PyErr_Clear() PyErr_Clear() -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) -#endif - -/* RaiseException.proto */ -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); - -/* SaveResetException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -#else -#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) -#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) -#endif - -/* GetException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) -static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#else -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); -#endif - -/* KeywordStringCheck.proto */ -static int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); - -/* SwapException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#else -static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); -#endif - -/* ListAppend.proto */ -#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS -static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { - PyListObject* L = (PyListObject*) list; - Py_ssize_t len = Py_SIZE(list); - if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) { - Py_INCREF(x); - PyList_SET_ITEM(list, len, x); - Py_SIZE(list) = len+1; - return 0; - } - return PyList_Append(list, x); -} -#else -#define __Pyx_PyList_Append(L,x) PyList_Append(L,x) -#endif - -/* PyObjectCallMethod1.proto */ -static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg); -static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg); - -/* pop_index.proto */ -static PyObject* __Pyx__PyObject_PopNewIndex(PyObject* L, PyObject* py_ix); -static PyObject* __Pyx__PyObject_PopIndex(PyObject* L, PyObject* py_ix); -#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS -static PyObject* __Pyx__PyList_PopIndex(PyObject* L, PyObject* py_ix, Py_ssize_t ix); -#define __Pyx_PyObject_PopIndex(L, py_ix, ix, is_signed, type, to_py_func) (\ - (likely(PyList_CheckExact(L) && __Pyx_fits_Py_ssize_t(ix, type, is_signed))) ?\ - __Pyx__PyList_PopIndex(L, py_ix, ix) : (\ - (unlikely(py_ix == Py_None)) ? __Pyx__PyObject_PopNewIndex(L, to_py_func(ix)) :\ - __Pyx__PyObject_PopIndex(L, py_ix))) -#define __Pyx_PyList_PopIndex(L, py_ix, ix, is_signed, type, to_py_func) (\ - __Pyx_fits_Py_ssize_t(ix, type, is_signed) ?\ - __Pyx__PyList_PopIndex(L, py_ix, ix) : (\ - (unlikely(py_ix == Py_None)) ? __Pyx__PyObject_PopNewIndex(L, to_py_func(ix)) :\ - __Pyx__PyObject_PopIndex(L, py_ix))) -#else -#define __Pyx_PyList_PopIndex(L, py_ix, ix, is_signed, type, to_py_func)\ - __Pyx_PyObject_PopIndex(L, py_ix, ix, is_signed, type, to_py_func) -#define __Pyx_PyObject_PopIndex(L, py_ix, ix, is_signed, type, to_py_func) (\ - (unlikely(py_ix == Py_None)) ? __Pyx__PyObject_PopNewIndex(L, to_py_func(ix)) :\ - __Pyx__PyObject_PopIndex(L, py_ix)) -#endif - -/* PyObject_GenericGetAttrNoDict.proto */ -#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr -#endif - -/* PyObject_GenericGetAttr.proto */ -#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr -#endif - -/* SetVTable.proto */ -static int __Pyx_SetVtable(PyObject *dict, void *vtable); - -/* GetVTable.proto */ -static void* __Pyx_GetVtable(PyObject *dict); - -/* Import.proto */ -static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); - -/* ImportFrom.proto */ -static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); - -/* FetchCommonType.proto */ -static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); - -/* CythonFunction.proto */ -#define __Pyx_CyFunction_USED 1 -#define __Pyx_CYFUNCTION_STATICMETHOD 0x01 -#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 -#define __Pyx_CYFUNCTION_CCLASS 0x04 -#define __Pyx_CyFunction_GetClosure(f)\ - (((__pyx_CyFunctionObject *) (f))->func_closure) -#define __Pyx_CyFunction_GetClassObj(f)\ - (((__pyx_CyFunctionObject *) (f))->func_classobj) -#define __Pyx_CyFunction_Defaults(type, f)\ - ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) -#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ - ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) -typedef struct { - PyCFunctionObject func; -#if PY_VERSION_HEX < 0x030500A0 - PyObject *func_weakreflist; -#endif - PyObject *func_dict; - PyObject *func_name; - PyObject *func_qualname; - PyObject *func_doc; - PyObject *func_globals; - PyObject *func_code; - PyObject *func_closure; - PyObject *func_classobj; - void *defaults; - int defaults_pyobjects; - int flags; - PyObject *defaults_tuple; - PyObject *defaults_kwdict; - PyObject *(*defaults_getter)(PyObject *); - PyObject *func_annotations; -} __pyx_CyFunctionObject; -static PyTypeObject *__pyx_CyFunctionType = 0; -#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, globals, code)\ - __Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, globals, code) -static PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml, - int flags, PyObject* qualname, - PyObject *self, - PyObject *module, PyObject *globals, - PyObject* code); -static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, - size_t size, - int pyobjects); -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, - PyObject *tuple); -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, - PyObject *dict); -static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, - PyObject *dict); -static int __pyx_CyFunction_init(void); - -/* GetModuleGlobalName.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name); - -/* GetAttr.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *); - -/* Globals.proto */ -static PyObject* __Pyx_Globals(void); - -/* CLineInTraceback.proto */ -#ifdef CYTHON_CLINE_IN_TRACEBACK -#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) -#else -static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); -#endif - -/* CodeObjectCache.proto */ -typedef struct { - PyCodeObject* code_object; - int code_line; -} __Pyx_CodeObjectCacheEntry; -struct __Pyx_CodeObjectCache { - int count; - int max_count; - __Pyx_CodeObjectCacheEntry* entries; -}; -static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; -static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); -static PyCodeObject *__pyx_find_code_object(int code_line); -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); - -/* AddTraceback.proto */ -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename); - -/* CIntToPy.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); - -/* CIntFromPy.proto */ -static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); - -/* CIntFromPy.proto */ -static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); - -/* FastTypeChecks.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); -#else -#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) -#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) -#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) -#endif -#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) - -/* CheckBinaryVersion.proto */ -static int __Pyx_check_binary_version(void); - -/* PyObjectSetAttrStr.proto */ -#if CYTHON_USE_TYPE_SLOTS -#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o, n, NULL) -static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value); -#else -#define __Pyx_PyObject_DelAttrStr(o,n) PyObject_DelAttr(o,n) -#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v) -#endif - -/* VoidPtrExport.proto */ -static int __Pyx_ExportVoidPtr(PyObject *name, void *p, const char *sig); - -/* PyIdentifierFromString.proto */ -#if !defined(__Pyx_PyIdentifier_FromString) -#if PY_MAJOR_VERSION < 3 - #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s) -#else - #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s) -#endif -#endif - -/* ModuleImport.proto */ -static PyObject *__Pyx_ImportModule(const char *name); - -/* TypeImport.proto */ -static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict); - -/* VoidPtrImport.proto */ -static int __Pyx_ImportVoidPtr(PyObject *module, const char *name, void **p, const char *sig); - -/* FunctionImport.proto */ -static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig); - -/* InitStrings.proto */ -static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); - -static PyObject *__pyx_f_6gevent_8__waiter_6Waiter_clear(struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_8__waiter_6Waiter_get(struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_8__waiter_14MultipleWaiter_get(struct __pyx_obj_6gevent_8__waiter_MultipleWaiter *__pyx_v_self, CYTHON_UNUSED int __pyx_skip_dispatch); /* proto*/ - -/* Module declarations from 'cython' */ - -/* Module declarations from 'greenlet' */ - -/* Module declarations from 'gevent.__greenlet_primitives' */ -static PyTypeObject *__pyx_ptype_6gevent_21__greenlet_primitives_greenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop = 0; -static PyObject **__pyx_vp_6gevent_21__greenlet_primitives_wref = 0; -#define __pyx_v_6gevent_21__greenlet_primitives_wref (*__pyx_vp_6gevent_21__greenlet_primitives_wref) -static PyObject **__pyx_vp_6gevent_21__greenlet_primitives_BlockingSwitchOutError = 0; -#define __pyx_v_6gevent_21__greenlet_primitives_BlockingSwitchOutError (*__pyx_vp_6gevent_21__greenlet_primitives_BlockingSwitchOutError) -static int *__pyx_vp_6gevent_21__greenlet_primitives__greenlet_imported = 0; -#define __pyx_v_6gevent_21__greenlet_primitives__greenlet_imported (*__pyx_vp_6gevent_21__greenlet_primitives__greenlet_imported) - -/* Module declarations from 'gevent.__hub_local' */ -static PyObject **__pyx_vp_6gevent_11__hub_local__threadlocal = 0; -#define __pyx_v_6gevent_11__hub_local__threadlocal (*__pyx_vp_6gevent_11__hub_local__threadlocal) -static struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *(*__pyx_f_6gevent_11__hub_local_get_hub_noargs)(int __pyx_skip_dispatch); /*proto*/ - -/* Module declarations from 'gevent.__waiter' */ -static PyTypeObject *__pyx_ptype_6gevent_8__waiter_greenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_8__waiter_Waiter = 0; -static PyTypeObject *__pyx_ptype_6gevent_8__waiter_MultipleWaiter = 0; -static PyObject *__pyx_v_6gevent_8__waiter_sys = 0; -static PyObject *__pyx_v_6gevent_8__waiter_ConcurrentObjectUseError = 0; -static int __pyx_v_6gevent_8__waiter__greenlet_imported; -static PyObject *__pyx_v_6gevent_8__waiter__NONE = 0; -static CYTHON_INLINE PyGreenlet *__pyx_f_6gevent_8__waiter_getcurrent(void); /*proto*/ -static CYTHON_INLINE void __pyx_f_6gevent_8__waiter_greenlet_init(void); /*proto*/ -#define __Pyx_MODULE_NAME "gevent.__waiter" -extern int __pyx_module_is_main_gevent____waiter; -int __pyx_module_is_main_gevent____waiter = 0; - -/* Implementation of 'gevent.__waiter' */ -static PyObject *__pyx_builtin_object; -static PyObject *__pyx_builtin___import__; -static PyObject *__pyx_builtin_AssertionError; -static const char __pyx_k_all[] = "__all__"; -static const char __pyx_k_get[] = "get"; -static const char __pyx_k_hub[] = "hub"; -static const char __pyx_k_pop[] = "pop"; -static const char __pyx_k_sys[] = "sys"; -static const char __pyx_k_NONE[] = "_NONE"; -static const char __pyx_k_args[] = "args"; -static const char __pyx_k_init[] = "__init__"; -static const char __pyx_k_main[] = "__main__"; -static const char __pyx_k_name[] = "__name__"; -static const char __pyx_k_self[] = "self"; -static const char __pyx_k_test[] = "__test__"; -static const char __pyx_k_clear[] = "clear"; -static const char __pyx_k_ready[] = "ready"; -static const char __pyx_k_slots[] = "__slots__"; -static const char __pyx_k_throw[] = "throw"; -static const char __pyx_k_value[] = "value"; -static const char __pyx_k_Waiter[] = "Waiter"; -static const char __pyx_k_import[] = "__import__"; -static const char __pyx_k_init_2[] = "_init"; -static const char __pyx_k_lambda[] = "<lambda>"; -static const char __pyx_k_object[] = "object"; -static const char __pyx_k_source[] = "source"; -static const char __pyx_k_switch[] = "switch"; -static const char __pyx_k_values[] = "_values"; -static const char __pyx_k_exc_info[] = "exc_info"; -static const char __pyx_k_greenlet[] = "greenlet"; -static const char __pyx_k_pyx_capi[] = "__pyx_capi__"; -static const char __pyx_k_exception[] = "exception"; -static const char __pyx_k_Waiter_get[] = "Waiter.get"; -static const char __pyx_k_getcurrent[] = "getcurrent"; -static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__"; -static const char __pyx_k_successful[] = "successful"; -static const char __pyx_k_throw_args[] = "throw_args"; -static const char __pyx_k_exception_2[] = "_exception"; -static const char __pyx_k_switch_args[] = "switch_args"; -static const char __pyx_k_Waiter_clear[] = "Waiter.clear"; -static const char __pyx_k_Waiter_ready[] = "Waiter.ready"; -static const char __pyx_k_Waiter_throw[] = "Waiter.throw"; -static const char __pyx_k_gevent__util[] = "gevent._util"; -static const char __pyx_k_handle_error[] = "handle_error"; -static const char __pyx_k_s_greenlet_s[] = "<%s greenlet=%s>"; -static const char __pyx_k_Waiter_switch[] = "Waiter.switch"; -static const char __pyx_k_greenlet_init[] = "greenlet_init"; -static const char __pyx_k_AssertionError[] = "AssertionError"; -static const char __pyx_k_get_hub_noargs[] = "get_hub_noargs"; -static const char __pyx_k_import_c_accel[] = "import_c_accel"; -static const char __pyx_k_gevent___waiter[] = "gevent.__waiter"; -static const char __pyx_k_Waiter_successful[] = "Waiter.successful"; -static const char __pyx_k_gevent__hub_local[] = "gevent._hub_local"; -static const char __pyx_k_gevent_exceptions[] = "gevent.exceptions"; -static const char __pyx_k_greenlet_imported[] = "_greenlet_imported"; -static const char __pyx_k_MultipleWaiter_get[] = "MultipleWaiter.get"; -static const char __pyx_k_Waiter_switch_args[] = "Waiter.switch_args"; -static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; -static const char __pyx_k_s_greenlet_s_value_r[] = "<%s greenlet=%s value=%r>"; -static const char __pyx_k_MultipleWaiter_switch[] = "MultipleWaiter.switch"; -static const char __pyx_k_src_gevent__waiter_py[] = "src\\gevent\\_waiter.py"; -static const char __pyx_k_s_greenlet_s_exc_info_r[] = "<%s greenlet=%s exc_info=%r>"; -static const char __pyx_k_ConcurrentObjectUseError[] = "ConcurrentObjectUseError"; -static const char __pyx_k_Low_level_waiting_primitives[] = "\nLow-level waiting primitives.\n\n"; -static const char __pyx_k_Can_only_use_Waiter_switch_metho[] = "Can only use Waiter.switch method from the Hub greenlet"; -static const char __pyx_k_This_Waiter_is_already_used_by_r[] = "This Waiter is already used by %r"; -static PyObject *__pyx_n_s_AssertionError; -static PyObject *__pyx_kp_s_Can_only_use_Waiter_switch_metho; -static PyObject *__pyx_n_s_ConcurrentObjectUseError; -static PyObject *__pyx_n_s_MultipleWaiter_get; -static PyObject *__pyx_n_s_MultipleWaiter_switch; -static PyObject *__pyx_n_s_NONE; -static PyObject *__pyx_kp_s_This_Waiter_is_already_used_by_r; -static PyObject *__pyx_n_s_Waiter; -static PyObject *__pyx_n_s_Waiter_clear; -static PyObject *__pyx_n_s_Waiter_get; -static PyObject *__pyx_n_s_Waiter_ready; -static PyObject *__pyx_n_s_Waiter_successful; -static PyObject *__pyx_n_s_Waiter_switch; -static PyObject *__pyx_n_s_Waiter_switch_args; -static PyObject *__pyx_n_s_Waiter_throw; -static PyObject *__pyx_n_s_all; -static PyObject *__pyx_n_s_args; -static PyObject *__pyx_n_s_clear; -static PyObject *__pyx_n_s_cline_in_traceback; -static PyObject *__pyx_n_s_exc_info; -static PyObject *__pyx_n_s_exception; -static PyObject *__pyx_n_s_exception_2; -static PyObject *__pyx_n_s_get; -static PyObject *__pyx_n_s_get_hub_noargs; -static PyObject *__pyx_n_s_getcurrent; -static PyObject *__pyx_n_s_gevent___waiter; -static PyObject *__pyx_n_s_gevent__hub_local; -static PyObject *__pyx_n_s_gevent__util; -static PyObject *__pyx_n_s_gevent_exceptions; -static PyObject *__pyx_n_s_greenlet; -static PyObject *__pyx_n_s_greenlet_imported; -static PyObject *__pyx_n_s_greenlet_init; -static PyObject *__pyx_n_s_handle_error; -static PyObject *__pyx_n_s_hub; -static PyObject *__pyx_n_s_import; -static PyObject *__pyx_n_s_import_c_accel; -static PyObject *__pyx_n_s_init; -static PyObject *__pyx_n_s_init_2; -static PyObject *__pyx_n_s_lambda; -static PyObject *__pyx_n_s_main; -static PyObject *__pyx_n_s_name; -static PyObject *__pyx_n_s_object; -static PyObject *__pyx_n_s_pop; -static PyObject *__pyx_n_s_pyx_capi; -static PyObject *__pyx_n_s_pyx_vtable; -static PyObject *__pyx_n_s_ready; -static PyObject *__pyx_kp_s_s_greenlet_s; -static PyObject *__pyx_kp_s_s_greenlet_s_exc_info_r; -static PyObject *__pyx_kp_s_s_greenlet_s_value_r; -static PyObject *__pyx_n_s_self; -static PyObject *__pyx_n_s_slots; -static PyObject *__pyx_n_s_source; -static PyObject *__pyx_kp_s_src_gevent__waiter_py; -static PyObject *__pyx_n_s_successful; -static PyObject *__pyx_n_s_switch; -static PyObject *__pyx_n_s_switch_args; -static PyObject *__pyx_n_s_sys; -static PyObject *__pyx_n_s_test; -static PyObject *__pyx_n_s_throw; -static PyObject *__pyx_n_s_throw_args; -static PyObject *__pyx_n_s_value; -static PyObject *__pyx_n_s_values; -static PyObject *__pyx_lambda_funcdef_6gevent_8__waiter_lambda(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ -static int __pyx_pf_6gevent_8__waiter_6Waiter___init__(struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_self, PyObject *__pyx_v_hub); /* proto */ -static PyObject *__pyx_pf_6gevent_8__waiter_6Waiter_2clear(struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_8__waiter_6Waiter_4__str__(struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_8__waiter_6Waiter_6ready(struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_8__waiter_6Waiter_8successful(struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_8__waiter_6Waiter_8exc_info___get__(struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_8__waiter_6Waiter_10switch(struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static PyObject *__pyx_pf_6gevent_8__waiter_6Waiter_12switch_args(struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_self, PyObject *__pyx_v_args); /* proto */ -static PyObject *__pyx_pf_6gevent_8__waiter_6Waiter_14throw(struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_self, PyObject *__pyx_v_throw_args); /* proto */ -static PyObject *__pyx_pf_6gevent_8__waiter_6Waiter_16get(struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_8__waiter_6Waiter_18__call__(struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_self, PyObject *__pyx_v_source); /* proto */ -static PyObject *__pyx_pf_6gevent_8__waiter_6Waiter_3hub___get__(struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_8__waiter_6Waiter_8greenlet___get__(struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_8__waiter_6Waiter_5value___get__(struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_8__waiter_14MultipleWaiter___init__(struct __pyx_obj_6gevent_8__waiter_MultipleWaiter *__pyx_v_self, PyObject *__pyx_v_hub); /* proto */ -static PyObject *__pyx_pf_6gevent_8__waiter_14MultipleWaiter_2switch(struct __pyx_obj_6gevent_8__waiter_MultipleWaiter *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static PyObject *__pyx_pf_6gevent_8__waiter_14MultipleWaiter_4get(struct __pyx_obj_6gevent_8__waiter_MultipleWaiter *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_8__waiter__init(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ -static PyObject *__pyx_tp_new_6gevent_8__waiter_Waiter(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_8__waiter_MultipleWaiter(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_int_0; -static PyObject *__pyx_tuple_; -static PyObject *__pyx_tuple__2; -static PyObject *__pyx_tuple__3; -static PyObject *__pyx_tuple__4; -static PyObject *__pyx_tuple__6; -static PyObject *__pyx_tuple__8; -static PyObject *__pyx_tuple__10; -static PyObject *__pyx_tuple__12; -static PyObject *__pyx_tuple__14; -static PyObject *__pyx_tuple__16; -static PyObject *__pyx_tuple__18; -static PyObject *__pyx_tuple__20; -static PyObject *__pyx_codeobj__5; -static PyObject *__pyx_codeobj__7; -static PyObject *__pyx_codeobj__9; -static PyObject *__pyx_codeobj__11; -static PyObject *__pyx_codeobj__13; -static PyObject *__pyx_codeobj__15; -static PyObject *__pyx_codeobj__17; -static PyObject *__pyx_codeobj__19; -static PyObject *__pyx_codeobj__21; -static PyObject *__pyx_codeobj__22; -/* Late includes */ - -/* "src/gevent/_waiter.py":24 - * - * locals()['getcurrent'] = __import__('greenlet').getcurrent - * locals()['greenlet_init'] = lambda: None # <<<<<<<<<<<<<< - * - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__waiter_2lambda(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyMethodDef __pyx_mdef_6gevent_8__waiter_2lambda = {"lambda", (PyCFunction)__pyx_pw_6gevent_8__waiter_2lambda, METH_NOARGS, 0}; -static PyObject *__pyx_pw_6gevent_8__waiter_2lambda(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("lambda (wrapper)", 0); - __pyx_r = __pyx_lambda_funcdef_6gevent_8__waiter_lambda(__pyx_self); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_lambda_funcdef_6gevent_8__waiter_lambda(CYTHON_UNUSED PyObject *__pyx_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("lambda", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_waiter.py":70 - * __slots__ = ['hub', 'greenlet', 'value', '_exception'] - * - * def __init__(self, hub=None): # <<<<<<<<<<<<<< - * self.hub = get_hub() if hub is None else hub - * self.greenlet = None - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_8__waiter_6Waiter_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_8__waiter_6Waiter_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_hub = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_hub,0}; - PyObject* values[1] = {0}; - values[0] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_hub); - if (value) { values[0] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 70, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_hub = values[0]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 70, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.__waiter.Waiter.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_8__waiter_6Waiter___init__(((struct __pyx_obj_6gevent_8__waiter_Waiter *)__pyx_v_self), __pyx_v_hub); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_8__waiter_6Waiter___init__(struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_self, PyObject *__pyx_v_hub) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("__init__", 0); - - /* "src/gevent/_waiter.py":71 - * - * def __init__(self, hub=None): - * self.hub = get_hub() if hub is None else hub # <<<<<<<<<<<<<< - * self.greenlet = None - * self.value = None - */ - __pyx_t_2 = (__pyx_v_hub == Py_None); - if ((__pyx_t_2 != 0)) { - __pyx_t_3 = ((PyObject *)__pyx_f_6gevent_11__hub_local_get_hub_noargs(0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 71, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = __pyx_t_3; - __pyx_t_3 = 0; - } else { - if (!(likely(((__pyx_v_hub) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_hub, __pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop))))) __PYX_ERR(0, 71, __pyx_L1_error) - __Pyx_INCREF(__pyx_v_hub); - __pyx_t_1 = __pyx_v_hub; - } - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->hub); - __Pyx_DECREF(((PyObject *)__pyx_v_self->hub)); - __pyx_v_self->hub = ((struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/_waiter.py":72 - * def __init__(self, hub=None): - * self.hub = get_hub() if hub is None else hub - * self.greenlet = None # <<<<<<<<<<<<<< - * self.value = None - * self._exception = _NONE - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->greenlet); - __Pyx_DECREF(((PyObject *)__pyx_v_self->greenlet)); - __pyx_v_self->greenlet = ((PyGreenlet *)Py_None); - - /* "src/gevent/_waiter.py":73 - * self.hub = get_hub() if hub is None else hub - * self.greenlet = None - * self.value = None # <<<<<<<<<<<<<< - * self._exception = _NONE - * - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->value); - __Pyx_DECREF(__pyx_v_self->value); - __pyx_v_self->value = Py_None; - - /* "src/gevent/_waiter.py":74 - * self.greenlet = None - * self.value = None - * self._exception = _NONE # <<<<<<<<<<<<<< - * - * def clear(self): - */ - __Pyx_INCREF(__pyx_v_6gevent_8__waiter__NONE); - __Pyx_GIVEREF(__pyx_v_6gevent_8__waiter__NONE); - __Pyx_GOTREF(__pyx_v_self->_exception); - __Pyx_DECREF(__pyx_v_self->_exception); - __pyx_v_self->_exception = __pyx_v_6gevent_8__waiter__NONE; - - /* "src/gevent/_waiter.py":70 - * __slots__ = ['hub', 'greenlet', 'value', '_exception'] - * - * def __init__(self, hub=None): # <<<<<<<<<<<<<< - * self.hub = get_hub() if hub is None else hub - * self.greenlet = None - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent.__waiter.Waiter.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_waiter.py":76 - * self._exception = _NONE - * - * def clear(self): # <<<<<<<<<<<<<< - * self.greenlet = None - * self.value = None - */ - -static PyObject *__pyx_pw_6gevent_8__waiter_6Waiter_3clear(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_f_6gevent_8__waiter_6Waiter_clear(struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_self, int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("clear", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_clear); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 76, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_8__waiter_6Waiter_3clear)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 76, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 76, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/_waiter.py":77 - * - * def clear(self): - * self.greenlet = None # <<<<<<<<<<<<<< - * self.value = None - * self._exception = _NONE - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->greenlet); - __Pyx_DECREF(((PyObject *)__pyx_v_self->greenlet)); - __pyx_v_self->greenlet = ((PyGreenlet *)Py_None); - - /* "src/gevent/_waiter.py":78 - * def clear(self): - * self.greenlet = None - * self.value = None # <<<<<<<<<<<<<< - * self._exception = _NONE - * - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->value); - __Pyx_DECREF(__pyx_v_self->value); - __pyx_v_self->value = Py_None; - - /* "src/gevent/_waiter.py":79 - * self.greenlet = None - * self.value = None - * self._exception = _NONE # <<<<<<<<<<<<<< - * - * def __str__(self): - */ - __Pyx_INCREF(__pyx_v_6gevent_8__waiter__NONE); - __Pyx_GIVEREF(__pyx_v_6gevent_8__waiter__NONE); - __Pyx_GOTREF(__pyx_v_self->_exception); - __Pyx_DECREF(__pyx_v_self->_exception); - __pyx_v_self->_exception = __pyx_v_6gevent_8__waiter__NONE; - - /* "src/gevent/_waiter.py":76 - * self._exception = _NONE - * - * def clear(self): # <<<<<<<<<<<<<< - * self.greenlet = None - * self.value = None - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent.__waiter.Waiter.clear", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__waiter_6Waiter_3clear(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_8__waiter_6Waiter_2clear[] = "Waiter.clear(self)"; -static PyMethodDef __pyx_mdef_6gevent_8__waiter_6Waiter_3clear = {"clear", (PyCFunction)__pyx_pw_6gevent_8__waiter_6Waiter_3clear, METH_NOARGS, __pyx_doc_6gevent_8__waiter_6Waiter_2clear}; -static PyObject *__pyx_pw_6gevent_8__waiter_6Waiter_3clear(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("clear (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8__waiter_6Waiter_2clear(((struct __pyx_obj_6gevent_8__waiter_Waiter *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8__waiter_6Waiter_2clear(struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("clear", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_8__waiter_6Waiter_clear(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 76, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__waiter.Waiter.clear", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_waiter.py":81 - * self._exception = _NONE - * - * def __str__(self): # <<<<<<<<<<<<<< - * if self._exception is _NONE: - * return '<%s greenlet=%s>' % (type(self).__name__, self.greenlet) - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__waiter_6Waiter_5__str__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_8__waiter_6Waiter_5__str__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__str__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8__waiter_6Waiter_4__str__(((struct __pyx_obj_6gevent_8__waiter_Waiter *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8__waiter_6Waiter_4__str__(struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - __Pyx_RefNannySetupContext("__str__", 0); - - /* "src/gevent/_waiter.py":82 - * - * def __str__(self): - * if self._exception is _NONE: # <<<<<<<<<<<<<< - * return '<%s greenlet=%s>' % (type(self).__name__, self.greenlet) - * if self._exception is None: - */ - __pyx_t_1 = (__pyx_v_self->_exception == __pyx_v_6gevent_8__waiter__NONE); - __pyx_t_2 = (__pyx_t_1 != 0); - if (__pyx_t_2) { - - /* "src/gevent/_waiter.py":83 - * def __str__(self): - * if self._exception is _NONE: - * return '<%s greenlet=%s>' % (type(self).__name__, self.greenlet) # <<<<<<<<<<<<<< - * if self._exception is None: - * return '<%s greenlet=%s value=%r>' % (type(self).__name__, self.greenlet, self.value) - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 83, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 83, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); - __Pyx_INCREF(((PyObject *)__pyx_v_self->greenlet)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self->greenlet)); - PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_v_self->greenlet)); - __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_s_greenlet_s, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 83, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - - /* "src/gevent/_waiter.py":82 - * - * def __str__(self): - * if self._exception is _NONE: # <<<<<<<<<<<<<< - * return '<%s greenlet=%s>' % (type(self).__name__, self.greenlet) - * if self._exception is None: - */ - } - - /* "src/gevent/_waiter.py":84 - * if self._exception is _NONE: - * return '<%s greenlet=%s>' % (type(self).__name__, self.greenlet) - * if self._exception is None: # <<<<<<<<<<<<<< - * return '<%s greenlet=%s value=%r>' % (type(self).__name__, self.greenlet, self.value) - * return '<%s greenlet=%s exc_info=%r>' % (type(self).__name__, self.greenlet, self.exc_info) - */ - __pyx_t_2 = (__pyx_v_self->_exception == Py_None); - __pyx_t_1 = (__pyx_t_2 != 0); - if (__pyx_t_1) { - - /* "src/gevent/_waiter.py":85 - * return '<%s greenlet=%s>' % (type(self).__name__, self.greenlet) - * if self._exception is None: - * return '<%s greenlet=%s value=%r>' % (type(self).__name__, self.greenlet, self.value) # <<<<<<<<<<<<<< - * return '<%s greenlet=%s exc_info=%r>' % (type(self).__name__, self.greenlet, self.exc_info) - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 85, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 85, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); - __Pyx_INCREF(((PyObject *)__pyx_v_self->greenlet)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self->greenlet)); - PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_v_self->greenlet)); - __Pyx_INCREF(__pyx_v_self->value); - __Pyx_GIVEREF(__pyx_v_self->value); - PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_self->value); - __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_s_greenlet_s_value_r, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 85, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - - /* "src/gevent/_waiter.py":84 - * if self._exception is _NONE: - * return '<%s greenlet=%s>' % (type(self).__name__, self.greenlet) - * if self._exception is None: # <<<<<<<<<<<<<< - * return '<%s greenlet=%s value=%r>' % (type(self).__name__, self.greenlet, self.value) - * return '<%s greenlet=%s exc_info=%r>' % (type(self).__name__, self.greenlet, self.exc_info) - */ - } - - /* "src/gevent/_waiter.py":86 - * if self._exception is None: - * return '<%s greenlet=%s value=%r>' % (type(self).__name__, self.greenlet, self.value) - * return '<%s greenlet=%s exc_info=%r>' % (type(self).__name__, self.greenlet, self.exc_info) # <<<<<<<<<<<<<< - * - * def ready(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 86, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_exc_info); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 86, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 86, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); - __Pyx_INCREF(((PyObject *)__pyx_v_self->greenlet)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self->greenlet)); - PyTuple_SET_ITEM(__pyx_t_5, 1, ((PyObject *)__pyx_v_self->greenlet)); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4); - __pyx_t_3 = 0; - __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_s_greenlet_s_exc_info_r, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 86, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_r = __pyx_t_4; - __pyx_t_4 = 0; - goto __pyx_L0; - - /* "src/gevent/_waiter.py":81 - * self._exception = _NONE - * - * def __str__(self): # <<<<<<<<<<<<<< - * if self._exception is _NONE: - * return '<%s greenlet=%s>' % (type(self).__name__, self.greenlet) - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent.__waiter.Waiter.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_waiter.py":88 - * return '<%s greenlet=%s exc_info=%r>' % (type(self).__name__, self.greenlet, self.exc_info) - * - * def ready(self): # <<<<<<<<<<<<<< - * """Return true if and only if it holds a value or an exception""" - * return self._exception is not _NONE - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__waiter_6Waiter_7ready(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_8__waiter_6Waiter_6ready[] = "Waiter.ready(self)\nReturn true if and only if it holds a value or an exception"; -static PyMethodDef __pyx_mdef_6gevent_8__waiter_6Waiter_7ready = {"ready", (PyCFunction)__pyx_pw_6gevent_8__waiter_6Waiter_7ready, METH_NOARGS, __pyx_doc_6gevent_8__waiter_6Waiter_6ready}; -static PyObject *__pyx_pw_6gevent_8__waiter_6Waiter_7ready(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("ready (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8__waiter_6Waiter_6ready(((struct __pyx_obj_6gevent_8__waiter_Waiter *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8__waiter_6Waiter_6ready(struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("ready", 0); - - /* "src/gevent/_waiter.py":90 - * def ready(self): - * """Return true if and only if it holds a value or an exception""" - * return self._exception is not _NONE # <<<<<<<<<<<<<< - * - * def successful(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = (__pyx_v_self->_exception != __pyx_v_6gevent_8__waiter__NONE); - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 90, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "src/gevent/_waiter.py":88 - * return '<%s greenlet=%s exc_info=%r>' % (type(self).__name__, self.greenlet, self.exc_info) - * - * def ready(self): # <<<<<<<<<<<<<< - * """Return true if and only if it holds a value or an exception""" - * return self._exception is not _NONE - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent.__waiter.Waiter.ready", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_waiter.py":92 - * return self._exception is not _NONE - * - * def successful(self): # <<<<<<<<<<<<<< - * """Return true if and only if it is ready and holds a value""" - * return self._exception is None - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__waiter_6Waiter_9successful(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_8__waiter_6Waiter_8successful[] = "Waiter.successful(self)\nReturn true if and only if it is ready and holds a value"; -static PyMethodDef __pyx_mdef_6gevent_8__waiter_6Waiter_9successful = {"successful", (PyCFunction)__pyx_pw_6gevent_8__waiter_6Waiter_9successful, METH_NOARGS, __pyx_doc_6gevent_8__waiter_6Waiter_8successful}; -static PyObject *__pyx_pw_6gevent_8__waiter_6Waiter_9successful(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("successful (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8__waiter_6Waiter_8successful(((struct __pyx_obj_6gevent_8__waiter_Waiter *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8__waiter_6Waiter_8successful(struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("successful", 0); - - /* "src/gevent/_waiter.py":94 - * def successful(self): - * """Return true if and only if it is ready and holds a value""" - * return self._exception is None # <<<<<<<<<<<<<< - * - * @property - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = (__pyx_v_self->_exception == Py_None); - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 94, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "src/gevent/_waiter.py":92 - * return self._exception is not _NONE - * - * def successful(self): # <<<<<<<<<<<<<< - * """Return true if and only if it is ready and holds a value""" - * return self._exception is None - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent.__waiter.Waiter.successful", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_waiter.py":97 - * - * @property - * def exc_info(self): # <<<<<<<<<<<<<< - * "Holds the exception info passed to :meth:`throw` if :meth:`throw` was called. Otherwise ``None``." - * if self._exception is not _NONE: - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__waiter_6Waiter_8exc_info_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_8__waiter_6Waiter_8exc_info_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8__waiter_6Waiter_8exc_info___get__(((struct __pyx_obj_6gevent_8__waiter_Waiter *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8__waiter_6Waiter_8exc_info___get__(struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - __Pyx_RefNannySetupContext("__get__", 0); - - /* "src/gevent/_waiter.py":99 - * def exc_info(self): - * "Holds the exception info passed to :meth:`throw` if :meth:`throw` was called. Otherwise ``None``." - * if self._exception is not _NONE: # <<<<<<<<<<<<<< - * return self._exception - * - */ - __pyx_t_1 = (__pyx_v_self->_exception != __pyx_v_6gevent_8__waiter__NONE); - __pyx_t_2 = (__pyx_t_1 != 0); - if (__pyx_t_2) { - - /* "src/gevent/_waiter.py":100 - * "Holds the exception info passed to :meth:`throw` if :meth:`throw` was called. Otherwise ``None``." - * if self._exception is not _NONE: - * return self._exception # <<<<<<<<<<<<<< - * - * def switch(self, value): - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->_exception); - __pyx_r = __pyx_v_self->_exception; - goto __pyx_L0; - - /* "src/gevent/_waiter.py":99 - * def exc_info(self): - * "Holds the exception info passed to :meth:`throw` if :meth:`throw` was called. Otherwise ``None``." - * if self._exception is not _NONE: # <<<<<<<<<<<<<< - * return self._exception - * - */ - } - - /* "src/gevent/_waiter.py":97 - * - * @property - * def exc_info(self): # <<<<<<<<<<<<<< - * "Holds the exception info passed to :meth:`throw` if :meth:`throw` was called. Otherwise ``None``." - * if self._exception is not _NONE: - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_waiter.py":102 - * return self._exception - * - * def switch(self, value): # <<<<<<<<<<<<<< - * """ - * Switch to the greenlet if one's available. Otherwise store the - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__waiter_6Waiter_11switch(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static char __pyx_doc_6gevent_8__waiter_6Waiter_10switch[] = "Waiter.switch(self, value)\n\n Switch to the greenlet if one's available. Otherwise store the\n *value*.\n\n .. versionchanged:: 1.3b1\n The *value* is no longer optional.\n "; -static PyMethodDef __pyx_mdef_6gevent_8__waiter_6Waiter_11switch = {"switch", (PyCFunction)__pyx_pw_6gevent_8__waiter_6Waiter_11switch, METH_O, __pyx_doc_6gevent_8__waiter_6Waiter_10switch}; -static PyObject *__pyx_pw_6gevent_8__waiter_6Waiter_11switch(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("switch (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8__waiter_6Waiter_10switch(((struct __pyx_obj_6gevent_8__waiter_Waiter *)__pyx_v_self), ((PyObject *)__pyx_v_value)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8__waiter_6Waiter_10switch(struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_self, PyObject *__pyx_v_value) { - PyGreenlet *__pyx_v_greenlet = NULL; - PyObject *__pyx_v_switch = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - PyObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; - PyObject *__pyx_t_13 = NULL; - __Pyx_RefNannySetupContext("switch", 0); - - /* "src/gevent/_waiter.py":110 - * The *value* is no longer optional. - * """ - * greenlet = self.greenlet # <<<<<<<<<<<<<< - * if greenlet is None: - * self.value = value - */ - __pyx_t_1 = ((PyObject *)__pyx_v_self->greenlet); - __Pyx_INCREF(__pyx_t_1); - __pyx_v_greenlet = ((PyGreenlet *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/_waiter.py":111 - * """ - * greenlet = self.greenlet - * if greenlet is None: # <<<<<<<<<<<<<< - * self.value = value - * self._exception = None - */ - __pyx_t_2 = (((PyObject *)__pyx_v_greenlet) == Py_None); - __pyx_t_3 = (__pyx_t_2 != 0); - if (__pyx_t_3) { - - /* "src/gevent/_waiter.py":112 - * greenlet = self.greenlet - * if greenlet is None: - * self.value = value # <<<<<<<<<<<<<< - * self._exception = None - * else: - */ - __Pyx_INCREF(__pyx_v_value); - __Pyx_GIVEREF(__pyx_v_value); - __Pyx_GOTREF(__pyx_v_self->value); - __Pyx_DECREF(__pyx_v_self->value); - __pyx_v_self->value = __pyx_v_value; - - /* "src/gevent/_waiter.py":113 - * if greenlet is None: - * self.value = value - * self._exception = None # <<<<<<<<<<<<<< - * else: - * if getcurrent() is not self.hub: # pylint:disable=undefined-variable - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->_exception); - __Pyx_DECREF(__pyx_v_self->_exception); - __pyx_v_self->_exception = Py_None; - - /* "src/gevent/_waiter.py":111 - * """ - * greenlet = self.greenlet - * if greenlet is None: # <<<<<<<<<<<<<< - * self.value = value - * self._exception = None - */ - goto __pyx_L3; - } - - /* "src/gevent/_waiter.py":115 - * self._exception = None - * else: - * if getcurrent() is not self.hub: # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * raise AssertionError("Can only use Waiter.switch method from the Hub greenlet") - * switch = greenlet.switch - */ - /*else*/ { - __pyx_t_1 = ((PyObject *)__pyx_f_6gevent_8__waiter_getcurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 115, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = (__pyx_t_1 != ((PyObject *)__pyx_v_self->hub)); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_2 = (__pyx_t_3 != 0); - if (unlikely(__pyx_t_2)) { - - /* "src/gevent/_waiter.py":116 - * else: - * if getcurrent() is not self.hub: # pylint:disable=undefined-variable - * raise AssertionError("Can only use Waiter.switch method from the Hub greenlet") # <<<<<<<<<<<<<< - * switch = greenlet.switch - * try: - */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_AssertionError, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 116, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 116, __pyx_L1_error) - - /* "src/gevent/_waiter.py":115 - * self._exception = None - * else: - * if getcurrent() is not self.hub: # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * raise AssertionError("Can only use Waiter.switch method from the Hub greenlet") - * switch = greenlet.switch - */ - } - - /* "src/gevent/_waiter.py":117 - * if getcurrent() is not self.hub: # pylint:disable=undefined-variable - * raise AssertionError("Can only use Waiter.switch method from the Hub greenlet") - * switch = greenlet.switch # <<<<<<<<<<<<<< - * try: - * switch(value) - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_greenlet), __pyx_n_s_switch); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 117, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_switch = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/_waiter.py":118 - * raise AssertionError("Can only use Waiter.switch method from the Hub greenlet") - * switch = greenlet.switch - * try: # <<<<<<<<<<<<<< - * switch(value) - * except: # pylint:disable=bare-except - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6); - __Pyx_XGOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_t_5); - __Pyx_XGOTREF(__pyx_t_6); - /*try:*/ { - - /* "src/gevent/_waiter.py":119 - * switch = greenlet.switch - * try: - * switch(value) # <<<<<<<<<<<<<< - * except: # pylint:disable=bare-except - * self.hub.handle_error(switch, *sys.exc_info()) - */ - __Pyx_INCREF(__pyx_v_switch); - __pyx_t_7 = __pyx_v_switch; __pyx_t_8 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { - __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); - if (likely(__pyx_t_8)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); - __Pyx_INCREF(__pyx_t_8); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_7, function); - } - } - if (!__pyx_t_8) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 119, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_7)) { - PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_v_value}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 119, __pyx_L5_error) - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { - PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_v_value}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 119, __pyx_L5_error) - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 119, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL; - __Pyx_INCREF(__pyx_v_value); - __Pyx_GIVEREF(__pyx_v_value); - PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_value); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 119, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - } - } - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_waiter.py":118 - * raise AssertionError("Can only use Waiter.switch method from the Hub greenlet") - * switch = greenlet.switch - * try: # <<<<<<<<<<<<<< - * switch(value) - * except: # pylint:disable=bare-except - */ - } - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - goto __pyx_L10_try_end; - __pyx_L5_error:; - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_waiter.py":120 - * try: - * switch(value) - * except: # pylint:disable=bare-except # <<<<<<<<<<<<<< - * self.hub.handle_error(switch, *sys.exc_info()) - * - */ - /*except:*/ { - __Pyx_AddTraceback("gevent.__waiter.Waiter.switch", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_7, &__pyx_t_9) < 0) __PYX_ERR(0, 120, __pyx_L7_except_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_t_7); - __Pyx_GOTREF(__pyx_t_9); - - /* "src/gevent/_waiter.py":121 - * switch(value) - * except: # pylint:disable=bare-except - * self.hub.handle_error(switch, *sys.exc_info()) # <<<<<<<<<<<<<< - * - * def switch_args(self, *args): - */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->hub), __pyx_n_s_handle_error); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 121, __pyx_L7_except_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 121, __pyx_L7_except_error) - __Pyx_GOTREF(__pyx_t_10); - __Pyx_INCREF(__pyx_v_switch); - __Pyx_GIVEREF(__pyx_v_switch); - PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_switch); - __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_6gevent_8__waiter_sys, __pyx_n_s_exc_info); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 121, __pyx_L7_except_error) - __Pyx_GOTREF(__pyx_t_12); - __pyx_t_13 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_12))) { - __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12); - if (likely(__pyx_t_13)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); - __Pyx_INCREF(__pyx_t_13); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_12, function); - } - } - if (__pyx_t_13) { - __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 121, __pyx_L7_except_error) - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - } else { - __pyx_t_11 = __Pyx_PyObject_CallNoArg(__pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 121, __pyx_L7_except_error) - } - __Pyx_GOTREF(__pyx_t_11); - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __pyx_t_12 = __Pyx_PySequence_Tuple(__pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 121, __pyx_L7_except_error) - __Pyx_GOTREF(__pyx_t_12); - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_11 = PyNumber_Add(__pyx_t_10, __pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 121, __pyx_L7_except_error) - __Pyx_GOTREF(__pyx_t_11); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 121, __pyx_L7_except_error) - __Pyx_GOTREF(__pyx_t_12); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - goto __pyx_L6_exception_handled; - } - __pyx_L7_except_error:; - - /* "src/gevent/_waiter.py":118 - * raise AssertionError("Can only use Waiter.switch method from the Hub greenlet") - * switch = greenlet.switch - * try: # <<<<<<<<<<<<<< - * switch(value) - * except: # pylint:disable=bare-except - */ - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); - goto __pyx_L1_error; - __pyx_L6_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); - __pyx_L10_try_end:; - } - } - __pyx_L3:; - - /* "src/gevent/_waiter.py":102 - * return self._exception - * - * def switch(self, value): # <<<<<<<<<<<<<< - * """ - * Switch to the greenlet if one's available. Otherwise store the - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_XDECREF(__pyx_t_9); - __Pyx_XDECREF(__pyx_t_10); - __Pyx_XDECREF(__pyx_t_11); - __Pyx_XDECREF(__pyx_t_12); - __Pyx_XDECREF(__pyx_t_13); - __Pyx_AddTraceback("gevent.__waiter.Waiter.switch", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_greenlet); - __Pyx_XDECREF(__pyx_v_switch); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_waiter.py":123 - * self.hub.handle_error(switch, *sys.exc_info()) - * - * def switch_args(self, *args): # <<<<<<<<<<<<<< - * return self.switch(args) - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__waiter_6Waiter_13switch_args(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_8__waiter_6Waiter_12switch_args[] = "Waiter.switch_args(self, *args)"; -static PyMethodDef __pyx_mdef_6gevent_8__waiter_6Waiter_13switch_args = {"switch_args", (PyCFunction)__pyx_pw_6gevent_8__waiter_6Waiter_13switch_args, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_8__waiter_6Waiter_12switch_args}; -static PyObject *__pyx_pw_6gevent_8__waiter_6Waiter_13switch_args(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_args = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("switch_args (wrapper)", 0); - if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "switch_args", 0))) return NULL; - __Pyx_INCREF(__pyx_args); - __pyx_v_args = __pyx_args; - __pyx_r = __pyx_pf_6gevent_8__waiter_6Waiter_12switch_args(((struct __pyx_obj_6gevent_8__waiter_Waiter *)__pyx_v_self), __pyx_v_args); - - /* function exit code */ - __Pyx_XDECREF(__pyx_v_args); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8__waiter_6Waiter_12switch_args(struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_self, PyObject *__pyx_v_args) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("switch_args", 0); - - /* "src/gevent/_waiter.py":124 - * - * def switch_args(self, *args): - * return self.switch(args) # <<<<<<<<<<<<<< - * - * def throw(self, *throw_args): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_switch); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_args); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 124, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_args}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 124, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_args}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 124, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 124, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(__pyx_v_args); - __Pyx_GIVEREF(__pyx_v_args); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_args); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 124, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/_waiter.py":123 - * self.hub.handle_error(switch, *sys.exc_info()) - * - * def switch_args(self, *args): # <<<<<<<<<<<<<< - * return self.switch(args) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent.__waiter.Waiter.switch_args", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_waiter.py":126 - * return self.switch(args) - * - * def throw(self, *throw_args): # <<<<<<<<<<<<<< - * """Switch to the greenlet with the exception. If there's no greenlet, store the exception.""" - * greenlet = self.greenlet - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__waiter_6Waiter_15throw(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_8__waiter_6Waiter_14throw[] = "Waiter.throw(self, *throw_args)\nSwitch to the greenlet with the exception. If there's no greenlet, store the exception."; -static PyMethodDef __pyx_mdef_6gevent_8__waiter_6Waiter_15throw = {"throw", (PyCFunction)__pyx_pw_6gevent_8__waiter_6Waiter_15throw, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_8__waiter_6Waiter_14throw}; -static PyObject *__pyx_pw_6gevent_8__waiter_6Waiter_15throw(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_throw_args = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("throw (wrapper)", 0); - if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "throw", 0))) return NULL; - __Pyx_INCREF(__pyx_args); - __pyx_v_throw_args = __pyx_args; - __pyx_r = __pyx_pf_6gevent_8__waiter_6Waiter_14throw(((struct __pyx_obj_6gevent_8__waiter_Waiter *)__pyx_v_self), __pyx_v_throw_args); - - /* function exit code */ - __Pyx_XDECREF(__pyx_v_throw_args); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8__waiter_6Waiter_14throw(struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_self, PyObject *__pyx_v_throw_args) { - PyGreenlet *__pyx_v_greenlet = NULL; - PyObject *__pyx_v_throw = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - PyObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; - PyObject *__pyx_t_13 = NULL; - __Pyx_RefNannySetupContext("throw", 0); - - /* "src/gevent/_waiter.py":128 - * def throw(self, *throw_args): - * """Switch to the greenlet with the exception. If there's no greenlet, store the exception.""" - * greenlet = self.greenlet # <<<<<<<<<<<<<< - * if greenlet is None: - * self._exception = throw_args - */ - __pyx_t_1 = ((PyObject *)__pyx_v_self->greenlet); - __Pyx_INCREF(__pyx_t_1); - __pyx_v_greenlet = ((PyGreenlet *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/_waiter.py":129 - * """Switch to the greenlet with the exception. If there's no greenlet, store the exception.""" - * greenlet = self.greenlet - * if greenlet is None: # <<<<<<<<<<<<<< - * self._exception = throw_args - * else: - */ - __pyx_t_2 = (((PyObject *)__pyx_v_greenlet) == Py_None); - __pyx_t_3 = (__pyx_t_2 != 0); - if (__pyx_t_3) { - - /* "src/gevent/_waiter.py":130 - * greenlet = self.greenlet - * if greenlet is None: - * self._exception = throw_args # <<<<<<<<<<<<<< - * else: - * if getcurrent() is not self.hub: # pylint:disable=undefined-variable - */ - __Pyx_INCREF(__pyx_v_throw_args); - __Pyx_GIVEREF(__pyx_v_throw_args); - __Pyx_GOTREF(__pyx_v_self->_exception); - __Pyx_DECREF(__pyx_v_self->_exception); - __pyx_v_self->_exception = __pyx_v_throw_args; - - /* "src/gevent/_waiter.py":129 - * """Switch to the greenlet with the exception. If there's no greenlet, store the exception.""" - * greenlet = self.greenlet - * if greenlet is None: # <<<<<<<<<<<<<< - * self._exception = throw_args - * else: - */ - goto __pyx_L3; - } - - /* "src/gevent/_waiter.py":132 - * self._exception = throw_args - * else: - * if getcurrent() is not self.hub: # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * raise AssertionError("Can only use Waiter.switch method from the Hub greenlet") - * throw = greenlet.throw - */ - /*else*/ { - __pyx_t_1 = ((PyObject *)__pyx_f_6gevent_8__waiter_getcurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 132, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = (__pyx_t_1 != ((PyObject *)__pyx_v_self->hub)); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_2 = (__pyx_t_3 != 0); - if (unlikely(__pyx_t_2)) { - - /* "src/gevent/_waiter.py":133 - * else: - * if getcurrent() is not self.hub: # pylint:disable=undefined-variable - * raise AssertionError("Can only use Waiter.switch method from the Hub greenlet") # <<<<<<<<<<<<<< - * throw = greenlet.throw - * try: - */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_AssertionError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 133, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 133, __pyx_L1_error) - - /* "src/gevent/_waiter.py":132 - * self._exception = throw_args - * else: - * if getcurrent() is not self.hub: # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * raise AssertionError("Can only use Waiter.switch method from the Hub greenlet") - * throw = greenlet.throw - */ - } - - /* "src/gevent/_waiter.py":134 - * if getcurrent() is not self.hub: # pylint:disable=undefined-variable - * raise AssertionError("Can only use Waiter.switch method from the Hub greenlet") - * throw = greenlet.throw # <<<<<<<<<<<<<< - * try: - * throw(*throw_args) - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_greenlet), __pyx_n_s_throw); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 134, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_throw = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/_waiter.py":135 - * raise AssertionError("Can only use Waiter.switch method from the Hub greenlet") - * throw = greenlet.throw - * try: # <<<<<<<<<<<<<< - * throw(*throw_args) - * except: # pylint:disable=bare-except - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6); - __Pyx_XGOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_t_5); - __Pyx_XGOTREF(__pyx_t_6); - /*try:*/ { - - /* "src/gevent/_waiter.py":136 - * throw = greenlet.throw - * try: - * throw(*throw_args) # <<<<<<<<<<<<<< - * except: # pylint:disable=bare-except - * self.hub.handle_error(throw, *sys.exc_info()) - */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_v_throw, __pyx_v_throw_args, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 136, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_waiter.py":135 - * raise AssertionError("Can only use Waiter.switch method from the Hub greenlet") - * throw = greenlet.throw - * try: # <<<<<<<<<<<<<< - * throw(*throw_args) - * except: # pylint:disable=bare-except - */ - } - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - goto __pyx_L10_try_end; - __pyx_L5_error:; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_waiter.py":137 - * try: - * throw(*throw_args) - * except: # pylint:disable=bare-except # <<<<<<<<<<<<<< - * self.hub.handle_error(throw, *sys.exc_info()) - * - */ - /*except:*/ { - __Pyx_AddTraceback("gevent.__waiter.Waiter.throw", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(0, 137, __pyx_L7_except_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_t_7); - __Pyx_GOTREF(__pyx_t_8); - - /* "src/gevent/_waiter.py":138 - * throw(*throw_args) - * except: # pylint:disable=bare-except - * self.hub.handle_error(throw, *sys.exc_info()) # <<<<<<<<<<<<<< - * - * def get(self): - */ - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->hub), __pyx_n_s_handle_error); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 138, __pyx_L7_except_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 138, __pyx_L7_except_error) - __Pyx_GOTREF(__pyx_t_10); - __Pyx_INCREF(__pyx_v_throw); - __Pyx_GIVEREF(__pyx_v_throw); - PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_throw); - __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_6gevent_8__waiter_sys, __pyx_n_s_exc_info); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 138, __pyx_L7_except_error) - __Pyx_GOTREF(__pyx_t_12); - __pyx_t_13 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_12))) { - __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12); - if (likely(__pyx_t_13)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); - __Pyx_INCREF(__pyx_t_13); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_12, function); - } - } - if (__pyx_t_13) { - __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 138, __pyx_L7_except_error) - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - } else { - __pyx_t_11 = __Pyx_PyObject_CallNoArg(__pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 138, __pyx_L7_except_error) - } - __Pyx_GOTREF(__pyx_t_11); - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __pyx_t_12 = __Pyx_PySequence_Tuple(__pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 138, __pyx_L7_except_error) - __Pyx_GOTREF(__pyx_t_12); - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_11 = PyNumber_Add(__pyx_t_10, __pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 138, __pyx_L7_except_error) - __Pyx_GOTREF(__pyx_t_11); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_11, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 138, __pyx_L7_except_error) - __Pyx_GOTREF(__pyx_t_12); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - goto __pyx_L6_exception_handled; - } - __pyx_L7_except_error:; - - /* "src/gevent/_waiter.py":135 - * raise AssertionError("Can only use Waiter.switch method from the Hub greenlet") - * throw = greenlet.throw - * try: # <<<<<<<<<<<<<< - * throw(*throw_args) - * except: # pylint:disable=bare-except - */ - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); - goto __pyx_L1_error; - __pyx_L6_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); - __pyx_L10_try_end:; - } - } - __pyx_L3:; - - /* "src/gevent/_waiter.py":126 - * return self.switch(args) - * - * def throw(self, *throw_args): # <<<<<<<<<<<<<< - * """Switch to the greenlet with the exception. If there's no greenlet, store the exception.""" - * greenlet = self.greenlet - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_XDECREF(__pyx_t_9); - __Pyx_XDECREF(__pyx_t_10); - __Pyx_XDECREF(__pyx_t_11); - __Pyx_XDECREF(__pyx_t_12); - __Pyx_XDECREF(__pyx_t_13); - __Pyx_AddTraceback("gevent.__waiter.Waiter.throw", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_greenlet); - __Pyx_XDECREF(__pyx_v_throw); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_waiter.py":140 - * self.hub.handle_error(throw, *sys.exc_info()) - * - * def get(self): # <<<<<<<<<<<<<< - * """If a value/an exception is stored, return/raise it. Otherwise until switch() or throw() is called.""" - * if self._exception is not _NONE: - */ - -static PyObject *__pyx_pw_6gevent_8__waiter_6Waiter_17get(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_f_6gevent_8__waiter_6Waiter_get(struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_self, int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - int __pyx_t_6; - PyObject *__pyx_t_7 = NULL; - int __pyx_t_8; - int __pyx_t_9; - char const *__pyx_t_10; - PyObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; - PyObject *__pyx_t_13 = NULL; - PyObject *__pyx_t_14 = NULL; - PyObject *__pyx_t_15 = NULL; - PyObject *__pyx_t_16 = NULL; - __Pyx_RefNannySetupContext("get", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_8__waiter_6Waiter_17get)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 140, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/_waiter.py":142 - * def get(self): - * """If a value/an exception is stored, return/raise it. Otherwise until switch() or throw() is called.""" - * if self._exception is not _NONE: # <<<<<<<<<<<<<< - * if self._exception is None: - * return self.value - */ - __pyx_t_5 = (__pyx_v_self->_exception != __pyx_v_6gevent_8__waiter__NONE); - __pyx_t_6 = (__pyx_t_5 != 0); - if (__pyx_t_6) { - - /* "src/gevent/_waiter.py":143 - * """If a value/an exception is stored, return/raise it. Otherwise until switch() or throw() is called.""" - * if self._exception is not _NONE: - * if self._exception is None: # <<<<<<<<<<<<<< - * return self.value - * getcurrent().throw(*self._exception) # pylint:disable=undefined-variable - */ - __pyx_t_6 = (__pyx_v_self->_exception == Py_None); - __pyx_t_5 = (__pyx_t_6 != 0); - if (__pyx_t_5) { - - /* "src/gevent/_waiter.py":144 - * if self._exception is not _NONE: - * if self._exception is None: - * return self.value # <<<<<<<<<<<<<< - * getcurrent().throw(*self._exception) # pylint:disable=undefined-variable - * else: - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->value); - __pyx_r = __pyx_v_self->value; - goto __pyx_L0; - - /* "src/gevent/_waiter.py":143 - * """If a value/an exception is stored, return/raise it. Otherwise until switch() or throw() is called.""" - * if self._exception is not _NONE: - * if self._exception is None: # <<<<<<<<<<<<<< - * return self.value - * getcurrent().throw(*self._exception) # pylint:disable=undefined-variable - */ - } - - /* "src/gevent/_waiter.py":145 - * if self._exception is None: - * return self.value - * getcurrent().throw(*self._exception) # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * else: - * if self.greenlet is not None: - */ - __pyx_t_1 = ((PyObject *)__pyx_f_6gevent_8__waiter_getcurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 145, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_throw); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 145, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PySequence_Tuple(__pyx_v_self->_exception); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 145, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 145, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "src/gevent/_waiter.py":142 - * def get(self): - * """If a value/an exception is stored, return/raise it. Otherwise until switch() or throw() is called.""" - * if self._exception is not _NONE: # <<<<<<<<<<<<<< - * if self._exception is None: - * return self.value - */ - goto __pyx_L3; - } - - /* "src/gevent/_waiter.py":147 - * getcurrent().throw(*self._exception) # pylint:disable=undefined-variable - * else: - * if self.greenlet is not None: # <<<<<<<<<<<<<< - * raise ConcurrentObjectUseError('This Waiter is already used by %r' % (self.greenlet, )) - * self.greenlet = getcurrent() # pylint:disable=undefined-variable - */ - /*else*/ { - __pyx_t_5 = (((PyObject *)__pyx_v_self->greenlet) != Py_None); - __pyx_t_6 = (__pyx_t_5 != 0); - if (unlikely(__pyx_t_6)) { - - /* "src/gevent/_waiter.py":148 - * else: - * if self.greenlet is not None: - * raise ConcurrentObjectUseError('This Waiter is already used by %r' % (self.greenlet, )) # <<<<<<<<<<<<<< - * self.greenlet = getcurrent() # pylint:disable=undefined-variable - * try: - */ - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 148, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(((PyObject *)__pyx_v_self->greenlet)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self->greenlet)); - PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self->greenlet)); - __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_This_Waiter_is_already_used_by_r, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 148, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_INCREF(__pyx_v_6gevent_8__waiter_ConcurrentObjectUseError); - __pyx_t_1 = __pyx_v_6gevent_8__waiter_ConcurrentObjectUseError; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - } - } - if (!__pyx_t_4) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 148, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GOTREF(__pyx_t_3); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_1)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 148, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 148, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else - #endif - { - __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 148, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 148, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 148, __pyx_L1_error) - - /* "src/gevent/_waiter.py":147 - * getcurrent().throw(*self._exception) # pylint:disable=undefined-variable - * else: - * if self.greenlet is not None: # <<<<<<<<<<<<<< - * raise ConcurrentObjectUseError('This Waiter is already used by %r' % (self.greenlet, )) - * self.greenlet = getcurrent() # pylint:disable=undefined-variable - */ - } - - /* "src/gevent/_waiter.py":149 - * if self.greenlet is not None: - * raise ConcurrentObjectUseError('This Waiter is already used by %r' % (self.greenlet, )) - * self.greenlet = getcurrent() # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * try: - * return self.hub.switch() - */ - __pyx_t_3 = ((PyObject *)__pyx_f_6gevent_8__waiter_getcurrent()); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 149, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_3); - __Pyx_GOTREF(__pyx_v_self->greenlet); - __Pyx_DECREF(((PyObject *)__pyx_v_self->greenlet)); - __pyx_v_self->greenlet = ((PyGreenlet *)__pyx_t_3); - __pyx_t_3 = 0; - - /* "src/gevent/_waiter.py":150 - * raise ConcurrentObjectUseError('This Waiter is already used by %r' % (self.greenlet, )) - * self.greenlet = getcurrent() # pylint:disable=undefined-variable - * try: # <<<<<<<<<<<<<< - * return self.hub.switch() - * finally: - */ - /*try:*/ { - - /* "src/gevent/_waiter.py":151 - * self.greenlet = getcurrent() # pylint:disable=undefined-variable - * try: - * return self.hub.switch() # <<<<<<<<<<<<<< - * finally: - * self.greenlet = None - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = ((struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *)__pyx_v_self->hub->__pyx_vtab)->__pyx_switch(__pyx_v_self->hub, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 151, __pyx_L7_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L6_return; - } - - /* "src/gevent/_waiter.py":153 - * return self.hub.switch() - * finally: - * self.greenlet = None # <<<<<<<<<<<<<< - * - * def __call__(self, source): - */ - /*finally:*/ { - __pyx_L7_error:; - /*exception exit:*/{ - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16); - if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13) < 0)) __Pyx_ErrFetch(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13); - __Pyx_XGOTREF(__pyx_t_11); - __Pyx_XGOTREF(__pyx_t_12); - __Pyx_XGOTREF(__pyx_t_13); - __Pyx_XGOTREF(__pyx_t_14); - __Pyx_XGOTREF(__pyx_t_15); - __Pyx_XGOTREF(__pyx_t_16); - __pyx_t_8 = __pyx_lineno; __pyx_t_9 = __pyx_clineno; __pyx_t_10 = __pyx_filename; - { - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->greenlet); - __Pyx_DECREF(((PyObject *)__pyx_v_self->greenlet)); - __pyx_v_self->greenlet = ((PyGreenlet *)Py_None); - } - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_14); - __Pyx_XGIVEREF(__pyx_t_15); - __Pyx_XGIVEREF(__pyx_t_16); - __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16); - } - __Pyx_XGIVEREF(__pyx_t_11); - __Pyx_XGIVEREF(__pyx_t_12); - __Pyx_XGIVEREF(__pyx_t_13); - __Pyx_ErrRestore(__pyx_t_11, __pyx_t_12, __pyx_t_13); - __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; - __pyx_lineno = __pyx_t_8; __pyx_clineno = __pyx_t_9; __pyx_filename = __pyx_t_10; - goto __pyx_L1_error; - } - __pyx_L6_return: { - __pyx_t_16 = __pyx_r; - __pyx_r = 0; - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->greenlet); - __Pyx_DECREF(((PyObject *)__pyx_v_self->greenlet)); - __pyx_v_self->greenlet = ((PyGreenlet *)Py_None); - __pyx_r = __pyx_t_16; - __pyx_t_16 = 0; - goto __pyx_L0; - } - } - } - __pyx_L3:; - - /* "src/gevent/_waiter.py":140 - * self.hub.handle_error(throw, *sys.exc_info()) - * - * def get(self): # <<<<<<<<<<<<<< - * """If a value/an exception is stored, return/raise it. Otherwise until switch() or throw() is called.""" - * if self._exception is not _NONE: - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("gevent.__waiter.Waiter.get", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__waiter_6Waiter_17get(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_8__waiter_6Waiter_16get[] = "Waiter.get(self)\nIf a value/an exception is stored, return/raise it. Otherwise until switch() or throw() is called."; -static PyMethodDef __pyx_mdef_6gevent_8__waiter_6Waiter_17get = {"get", (PyCFunction)__pyx_pw_6gevent_8__waiter_6Waiter_17get, METH_NOARGS, __pyx_doc_6gevent_8__waiter_6Waiter_16get}; -static PyObject *__pyx_pw_6gevent_8__waiter_6Waiter_17get(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("get (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8__waiter_6Waiter_16get(((struct __pyx_obj_6gevent_8__waiter_Waiter *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8__waiter_6Waiter_16get(struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("get", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_8__waiter_6Waiter_get(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__waiter.Waiter.get", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_waiter.py":155 - * self.greenlet = None - * - * def __call__(self, source): # <<<<<<<<<<<<<< - * if source.exception is None: - * self.switch(source.value) - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__waiter_6Waiter_19__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_8__waiter_6Waiter_19__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_source = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__call__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0}; - PyObject* values[1] = {0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_source)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__call__") < 0)) __PYX_ERR(0, 155, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 1) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - } - __pyx_v_source = values[0]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__call__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 155, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.__waiter.Waiter.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_8__waiter_6Waiter_18__call__(((struct __pyx_obj_6gevent_8__waiter_Waiter *)__pyx_v_self), __pyx_v_source); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8__waiter_6Waiter_18__call__(struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_self, PyObject *__pyx_v_source) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - __Pyx_RefNannySetupContext("__call__", 0); - - /* "src/gevent/_waiter.py":156 - * - * def __call__(self, source): - * if source.exception is None: # <<<<<<<<<<<<<< - * self.switch(source.value) - * else: - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_source, __pyx_n_s_exception); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 156, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = (__pyx_t_1 == Py_None); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_3 = (__pyx_t_2 != 0); - if (__pyx_t_3) { - - /* "src/gevent/_waiter.py":157 - * def __call__(self, source): - * if source.exception is None: - * self.switch(source.value) # <<<<<<<<<<<<<< - * else: - * self.throw(source.exception) - */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_switch); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 157, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_source, __pyx_n_s_value); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 157, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (!__pyx_t_6) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 157, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 157, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 157, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else - #endif - { - __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 157, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL; - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5); - __pyx_t_5 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 157, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_waiter.py":156 - * - * def __call__(self, source): - * if source.exception is None: # <<<<<<<<<<<<<< - * self.switch(source.value) - * else: - */ - goto __pyx_L3; - } - - /* "src/gevent/_waiter.py":159 - * self.switch(source.value) - * else: - * self.throw(source.exception) # <<<<<<<<<<<<<< - * - * # can also have a debugging version, that wraps the value in a tuple (self, value) in switch() - */ - /*else*/ { - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_throw); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 159, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_source, __pyx_n_s_exception); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 159, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (!__pyx_t_5) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 159, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_7}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 159, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_7}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 159, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } else - #endif - { - __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 159, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL; - __Pyx_GIVEREF(__pyx_t_7); - PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_7); - __pyx_t_7 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 159, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __pyx_L3:; - - /* "src/gevent/_waiter.py":155 - * self.greenlet = None - * - * def __call__(self, source): # <<<<<<<<<<<<<< - * if source.exception is None: - * self.switch(source.value) - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("gevent.__waiter.Waiter.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__waiter.pxd":34 - * - * cdef class Waiter: - * cdef readonly SwitchOutGreenletWithLoop hub # <<<<<<<<<<<<<< - * cdef readonly greenlet greenlet - * cdef readonly value - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__waiter_6Waiter_3hub_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_8__waiter_6Waiter_3hub_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8__waiter_6Waiter_3hub___get__(((struct __pyx_obj_6gevent_8__waiter_Waiter *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8__waiter_6Waiter_3hub___get__(struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_v_self->hub)); - __pyx_r = ((PyObject *)__pyx_v_self->hub); - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__waiter.pxd":35 - * cdef class Waiter: - * cdef readonly SwitchOutGreenletWithLoop hub - * cdef readonly greenlet greenlet # <<<<<<<<<<<<<< - * cdef readonly value - * cdef _exception - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__waiter_6Waiter_8greenlet_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_8__waiter_6Waiter_8greenlet_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8__waiter_6Waiter_8greenlet___get__(((struct __pyx_obj_6gevent_8__waiter_Waiter *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8__waiter_6Waiter_8greenlet___get__(struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_v_self->greenlet)); - __pyx_r = ((PyObject *)__pyx_v_self->greenlet); - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__waiter.pxd":36 - * cdef readonly SwitchOutGreenletWithLoop hub - * cdef readonly greenlet greenlet - * cdef readonly value # <<<<<<<<<<<<<< - * cdef _exception - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__waiter_6Waiter_5value_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_8__waiter_6Waiter_5value_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8__waiter_6Waiter_5value___get__(((struct __pyx_obj_6gevent_8__waiter_Waiter *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8__waiter_6Waiter_5value___get__(struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->value); - __pyx_r = __pyx_v_self->value; - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_waiter.py":177 - * __slots__ = ['_values'] - * - * def __init__(self, hub=None): # <<<<<<<<<<<<<< - * Waiter.__init__(self, hub) - * # we typically expect a relatively small number of these to be outstanding. - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_8__waiter_14MultipleWaiter_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_8__waiter_14MultipleWaiter_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_hub = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_hub,0}; - PyObject* values[1] = {0}; - values[0] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_hub); - if (value) { values[0] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 177, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_hub = values[0]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 177, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.__waiter.MultipleWaiter.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_8__waiter_14MultipleWaiter___init__(((struct __pyx_obj_6gevent_8__waiter_MultipleWaiter *)__pyx_v_self), __pyx_v_hub); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_8__waiter_14MultipleWaiter___init__(struct __pyx_obj_6gevent_8__waiter_MultipleWaiter *__pyx_v_self, PyObject *__pyx_v_hub) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - __Pyx_RefNannySetupContext("__init__", 0); - - /* "src/gevent/_waiter.py":178 - * - * def __init__(self, hub=None): - * Waiter.__init__(self, hub) # <<<<<<<<<<<<<< - * # we typically expect a relatively small number of these to be outstanding. - * # since we pop from the left, a deque might be slightly - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_6gevent_8__waiter_Waiter), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 178, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - __pyx_t_4 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_4 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, ((PyObject *)__pyx_v_self), __pyx_v_hub}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 178, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, ((PyObject *)__pyx_v_self), __pyx_v_hub}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 178, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 178, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (__pyx_t_3) { - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; - } - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, ((PyObject *)__pyx_v_self)); - __Pyx_INCREF(__pyx_v_hub); - __Pyx_GIVEREF(__pyx_v_hub); - PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_hub); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 178, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_waiter.py":184 - * # we can help it to better support monkey-patching, and delaying the import - * # here can be impractical (see https://github.com/gevent/gevent/issues/652) - * self._values = list() # <<<<<<<<<<<<<< - * - * def switch(self, value): - */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 184, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->_values); - __Pyx_DECREF(__pyx_v_self->_values); - __pyx_v_self->_values = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/_waiter.py":177 - * __slots__ = ['_values'] - * - * def __init__(self, hub=None): # <<<<<<<<<<<<<< - * Waiter.__init__(self, hub) - * # we typically expect a relatively small number of these to be outstanding. - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent.__waiter.MultipleWaiter.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_waiter.py":186 - * self._values = list() - * - * def switch(self, value): # <<<<<<<<<<<<<< - * self._values.append(value) - * Waiter.switch(self, True) - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__waiter_14MultipleWaiter_3switch(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static char __pyx_doc_6gevent_8__waiter_14MultipleWaiter_2switch[] = "MultipleWaiter.switch(self, value)"; -static PyMethodDef __pyx_mdef_6gevent_8__waiter_14MultipleWaiter_3switch = {"switch", (PyCFunction)__pyx_pw_6gevent_8__waiter_14MultipleWaiter_3switch, METH_O, __pyx_doc_6gevent_8__waiter_14MultipleWaiter_2switch}; -static PyObject *__pyx_pw_6gevent_8__waiter_14MultipleWaiter_3switch(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("switch (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8__waiter_14MultipleWaiter_2switch(((struct __pyx_obj_6gevent_8__waiter_MultipleWaiter *)__pyx_v_self), ((PyObject *)__pyx_v_value)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8__waiter_14MultipleWaiter_2switch(struct __pyx_obj_6gevent_8__waiter_MultipleWaiter *__pyx_v_self, PyObject *__pyx_v_value) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - __Pyx_RefNannySetupContext("switch", 0); - - /* "src/gevent/_waiter.py":187 - * - * def switch(self, value): - * self._values.append(value) # <<<<<<<<<<<<<< - * Waiter.switch(self, True) - * - */ - if (unlikely(__pyx_v_self->_values == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append"); - __PYX_ERR(0, 187, __pyx_L1_error) - } - __pyx_t_1 = __Pyx_PyList_Append(__pyx_v_self->_values, __pyx_v_value); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 187, __pyx_L1_error) - - /* "src/gevent/_waiter.py":188 - * def switch(self, value): - * self._values.append(value) - * Waiter.switch(self, True) # <<<<<<<<<<<<<< - * - * def get(self): - */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_6gevent_8__waiter_Waiter), __pyx_n_s_switch); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 188, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = NULL; - __pyx_t_5 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_5 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[3] = {__pyx_t_4, ((PyObject *)__pyx_v_self), Py_True}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 188, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[3] = {__pyx_t_4, ((PyObject *)__pyx_v_self), Py_True}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 188, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 188, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (__pyx_t_4) { - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; - } - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, ((PyObject *)__pyx_v_self)); - __Pyx_INCREF(Py_True); - __Pyx_GIVEREF(Py_True); - PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, Py_True); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 188, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_waiter.py":186 - * self._values = list() - * - * def switch(self, value): # <<<<<<<<<<<<<< - * self._values.append(value) - * Waiter.switch(self, True) - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_AddTraceback("gevent.__waiter.MultipleWaiter.switch", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_waiter.py":190 - * Waiter.switch(self, True) - * - * def get(self): # <<<<<<<<<<<<<< - * if not self._values: - * Waiter.get(self) - */ - -static PyObject *__pyx_pw_6gevent_8__waiter_14MultipleWaiter_5get(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_f_6gevent_8__waiter_14MultipleWaiter_get(struct __pyx_obj_6gevent_8__waiter_MultipleWaiter *__pyx_v_self, CYTHON_UNUSED int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("get", 0); - - /* "src/gevent/_waiter.py":191 - * - * def get(self): - * if not self._values: # <<<<<<<<<<<<<< - * Waiter.get(self) - * Waiter.clear(self) - */ - __pyx_t_1 = (__pyx_v_self->_values != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_values) != 0); - __pyx_t_2 = ((!__pyx_t_1) != 0); - if (__pyx_t_2) { - - /* "src/gevent/_waiter.py":192 - * def get(self): - * if not self._values: - * Waiter.get(self) # <<<<<<<<<<<<<< - * Waiter.clear(self) - * - */ - __pyx_t_3 = __pyx_f_6gevent_8__waiter_6Waiter_get(((struct __pyx_obj_6gevent_8__waiter_Waiter *)__pyx_v_self), 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 192, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "src/gevent/_waiter.py":193 - * if not self._values: - * Waiter.get(self) - * Waiter.clear(self) # <<<<<<<<<<<<<< - * - * return self._values.pop(0) - */ - __pyx_t_3 = __pyx_f_6gevent_8__waiter_6Waiter_clear(((struct __pyx_obj_6gevent_8__waiter_Waiter *)__pyx_v_self), 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 193, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "src/gevent/_waiter.py":191 - * - * def get(self): - * if not self._values: # <<<<<<<<<<<<<< - * Waiter.get(self) - * Waiter.clear(self) - */ - } - - /* "src/gevent/_waiter.py":195 - * Waiter.clear(self) - * - * return self._values.pop(0) # <<<<<<<<<<<<<< - * - * def _init(): - */ - __Pyx_XDECREF(__pyx_r); - if (unlikely(__pyx_v_self->_values == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop"); - __PYX_ERR(0, 195, __pyx_L1_error) - } - __pyx_t_3 = __Pyx_PyList_PopIndex(__pyx_v_self->_values, __pyx_int_0, 0, 1, Py_ssize_t, PyInt_FromSsize_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 195, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - - /* "src/gevent/_waiter.py":190 - * Waiter.switch(self, True) - * - * def get(self): # <<<<<<<<<<<<<< - * if not self._values: - * Waiter.get(self) - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent.__waiter.MultipleWaiter.get", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__waiter_14MultipleWaiter_5get(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_8__waiter_14MultipleWaiter_4get[] = "MultipleWaiter.get(self)"; -static PyMethodDef __pyx_mdef_6gevent_8__waiter_14MultipleWaiter_5get = {"get", (PyCFunction)__pyx_pw_6gevent_8__waiter_14MultipleWaiter_5get, METH_NOARGS, __pyx_doc_6gevent_8__waiter_14MultipleWaiter_4get}; -static PyObject *__pyx_pw_6gevent_8__waiter_14MultipleWaiter_5get(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("get (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8__waiter_14MultipleWaiter_4get(((struct __pyx_obj_6gevent_8__waiter_MultipleWaiter *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8__waiter_14MultipleWaiter_4get(struct __pyx_obj_6gevent_8__waiter_MultipleWaiter *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("get", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_8__waiter_14MultipleWaiter_get(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 190, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__waiter.MultipleWaiter.get", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/_waiter.py":197 - * return self._values.pop(0) - * - * def _init(): # <<<<<<<<<<<<<< - * greenlet_init() # pylint:disable=undefined-variable - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8__waiter_1_init(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_8__waiter__init[] = "_init()"; -static PyMethodDef __pyx_mdef_6gevent_8__waiter_1_init = {"_init", (PyCFunction)__pyx_pw_6gevent_8__waiter_1_init, METH_NOARGS, __pyx_doc_6gevent_8__waiter__init}; -static PyObject *__pyx_pw_6gevent_8__waiter_1_init(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_init (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8__waiter__init(__pyx_self); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8__waiter__init(CYTHON_UNUSED PyObject *__pyx_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_init", 0); - - /* "src/gevent/_waiter.py":198 - * - * def _init(): - * greenlet_init() # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * - * _init() - */ - __pyx_f_6gevent_8__waiter_greenlet_init(); - - /* "src/gevent/_waiter.py":197 - * return self._values.pop(0) - * - * def _init(): # <<<<<<<<<<<<<< - * greenlet_init() # pylint:disable=undefined-variable - * - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__greenlet_primitives.pxd":23 - * - * @cython.final - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - -static CYTHON_INLINE PyGreenlet *__pyx_f_6gevent_21__greenlet_primitives_getcurrent(void) { - PyGreenlet *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("getcurrent", 0); - - /* "gevent/__greenlet_primitives.pxd":24 - * @cython.final - * cdef inline greenlet getcurrent(): - * return PyGreenlet_GetCurrent() # <<<<<<<<<<<<<< - * - * cdef bint _greenlet_imported - */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __pyx_t_1 = ((PyObject *)PyGreenlet_GetCurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 24, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = ((PyGreenlet *)__pyx_t_1); - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "gevent/__greenlet_primitives.pxd":23 - * - * @cython.final - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__greenlet_primitives.getcurrent", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__greenlet_primitives.pxd":28 - * cdef bint _greenlet_imported - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - -static CYTHON_INLINE void __pyx_f_6gevent_21__greenlet_primitives_greenlet_init(void) { - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("greenlet_init", 0); - - /* "gevent/__greenlet_primitives.pxd":30 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - __pyx_t_1 = ((!(__pyx_v_6gevent_21__greenlet_primitives__greenlet_imported != 0)) != 0); - if (__pyx_t_1) { - - /* "gevent/__greenlet_primitives.pxd":31 - * global _greenlet_imported - * if not _greenlet_imported: - * PyGreenlet_Import() # <<<<<<<<<<<<<< - * _greenlet_imported = True - * - */ - PyGreenlet_Import(); - - /* "gevent/__greenlet_primitives.pxd":32 - * if not _greenlet_imported: - * PyGreenlet_Import() - * _greenlet_imported = True # <<<<<<<<<<<<<< - * - * cdef inline object _greenlet_switch(greenlet self): - */ - __pyx_v_6gevent_21__greenlet_primitives__greenlet_imported = 1; - - /* "gevent/__greenlet_primitives.pxd":30 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - } - - /* "gevent/__greenlet_primitives.pxd":28 - * cdef bint _greenlet_imported - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -/* "gevent/__greenlet_primitives.pxd":34 - * _greenlet_imported = True - * - * cdef inline object _greenlet_switch(greenlet self): # <<<<<<<<<<<<<< - * return PyGreenlet_Switch(self, NULL, NULL) - * - */ - -static CYTHON_INLINE PyObject *__pyx_f_6gevent_21__greenlet_primitives__greenlet_switch(PyGreenlet *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_greenlet_switch", 0); - - /* "gevent/__greenlet_primitives.pxd":35 - * - * cdef inline object _greenlet_switch(greenlet self): - * return PyGreenlet_Switch(self, NULL, NULL) # <<<<<<<<<<<<<< - * - * cdef class TrackedRawGreenlet(greenlet): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyGreenlet_Switch(__pyx_v_self, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 35, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "gevent/__greenlet_primitives.pxd":34 - * _greenlet_imported = True - * - * cdef inline object _greenlet_switch(greenlet self): # <<<<<<<<<<<<<< - * return PyGreenlet_Switch(self, NULL, NULL) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__greenlet_primitives._greenlet_switch", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__waiter.pxd":24 - * void PyGreenlet_Import() - * - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - -static CYTHON_INLINE PyGreenlet *__pyx_f_6gevent_8__waiter_getcurrent(void) { - PyGreenlet *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("getcurrent", 0); - - /* "gevent/__waiter.pxd":25 - * - * cdef inline greenlet getcurrent(): - * return PyGreenlet_GetCurrent() # <<<<<<<<<<<<<< - * - * cdef inline void greenlet_init(): - */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __pyx_t_1 = ((PyObject *)PyGreenlet_GetCurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 25, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = ((PyGreenlet *)__pyx_t_1); - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "gevent/__waiter.pxd":24 - * void PyGreenlet_Import() - * - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__waiter.getcurrent", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__waiter.pxd":27 - * return PyGreenlet_GetCurrent() - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - -static CYTHON_INLINE void __pyx_f_6gevent_8__waiter_greenlet_init(void) { - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("greenlet_init", 0); - - /* "gevent/__waiter.pxd":29 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - __pyx_t_1 = ((!(__pyx_v_6gevent_8__waiter__greenlet_imported != 0)) != 0); - if (__pyx_t_1) { - - /* "gevent/__waiter.pxd":30 - * global _greenlet_imported - * if not _greenlet_imported: - * PyGreenlet_Import() # <<<<<<<<<<<<<< - * _greenlet_imported = True - * - */ - PyGreenlet_Import(); - - /* "gevent/__waiter.pxd":31 - * if not _greenlet_imported: - * PyGreenlet_Import() - * _greenlet_imported = True # <<<<<<<<<<<<<< - * - * cdef class Waiter: - */ - __pyx_v_6gevent_8__waiter__greenlet_imported = 1; - - /* "gevent/__waiter.pxd":29 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - } - - /* "gevent/__waiter.pxd":27 - * return PyGreenlet_GetCurrent() - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} -static struct __pyx_vtabstruct_6gevent_8__waiter_Waiter __pyx_vtable_6gevent_8__waiter_Waiter; - -static PyObject *__pyx_tp_new_6gevent_8__waiter_Waiter(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - struct __pyx_obj_6gevent_8__waiter_Waiter *p; - PyObject *o; - if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { - o = (*t->tp_alloc)(t, 0); - } else { - o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); - } - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_8__waiter_Waiter *)o); - p->__pyx_vtab = __pyx_vtabptr_6gevent_8__waiter_Waiter; - p->hub = ((struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *)Py_None); Py_INCREF(Py_None); - p->greenlet = ((PyGreenlet *)Py_None); Py_INCREF(Py_None); - p->value = Py_None; Py_INCREF(Py_None); - p->_exception = Py_None; Py_INCREF(Py_None); - return o; -} - -static void __pyx_tp_dealloc_6gevent_8__waiter_Waiter(PyObject *o) { - struct __pyx_obj_6gevent_8__waiter_Waiter *p = (struct __pyx_obj_6gevent_8__waiter_Waiter *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - #endif - PyObject_GC_UnTrack(o); - Py_CLEAR(p->hub); - Py_CLEAR(p->greenlet); - Py_CLEAR(p->value); - Py_CLEAR(p->_exception); - (*Py_TYPE(o)->tp_free)(o); -} - -static int __pyx_tp_traverse_6gevent_8__waiter_Waiter(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_6gevent_8__waiter_Waiter *p = (struct __pyx_obj_6gevent_8__waiter_Waiter *)o; - if (p->hub) { - e = (*v)(((PyObject *)p->hub), a); if (e) return e; - } - if (p->greenlet) { - e = (*v)(((PyObject *)p->greenlet), a); if (e) return e; - } - if (p->value) { - e = (*v)(p->value, a); if (e) return e; - } - if (p->_exception) { - e = (*v)(p->_exception, a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_6gevent_8__waiter_Waiter(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_6gevent_8__waiter_Waiter *p = (struct __pyx_obj_6gevent_8__waiter_Waiter *)o; - tmp = ((PyObject*)p->hub); - p->hub = ((struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->greenlet); - p->greenlet = ((PyGreenlet *)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->value); - p->value = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->_exception); - p->_exception = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyObject *__pyx_getprop_6gevent_8__waiter_6Waiter_exc_info(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_8__waiter_6Waiter_8exc_info_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_8__waiter_6Waiter_hub(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_8__waiter_6Waiter_3hub_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_8__waiter_6Waiter_greenlet(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_8__waiter_6Waiter_8greenlet_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_8__waiter_6Waiter_value(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_8__waiter_6Waiter_5value_1__get__(o); -} - -static PyMethodDef __pyx_methods_6gevent_8__waiter_Waiter[] = { - {"ready", (PyCFunction)__pyx_pw_6gevent_8__waiter_6Waiter_7ready, METH_NOARGS, __pyx_doc_6gevent_8__waiter_6Waiter_6ready}, - {"successful", (PyCFunction)__pyx_pw_6gevent_8__waiter_6Waiter_9successful, METH_NOARGS, __pyx_doc_6gevent_8__waiter_6Waiter_8successful}, - {"switch", (PyCFunction)__pyx_pw_6gevent_8__waiter_6Waiter_11switch, METH_O, __pyx_doc_6gevent_8__waiter_6Waiter_10switch}, - {"switch_args", (PyCFunction)__pyx_pw_6gevent_8__waiter_6Waiter_13switch_args, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_8__waiter_6Waiter_12switch_args}, - {"throw", (PyCFunction)__pyx_pw_6gevent_8__waiter_6Waiter_15throw, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_8__waiter_6Waiter_14throw}, - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_6gevent_8__waiter_Waiter[] = { - {(char *)"exc_info", __pyx_getprop_6gevent_8__waiter_6Waiter_exc_info, 0, (char *)"Holds the exception info passed to :meth:`throw` if :meth:`throw` was called. Otherwise ``None``.", 0}, - {(char *)"hub", __pyx_getprop_6gevent_8__waiter_6Waiter_hub, 0, (char *)0, 0}, - {(char *)"greenlet", __pyx_getprop_6gevent_8__waiter_6Waiter_greenlet, 0, (char *)0, 0}, - {(char *)"value", __pyx_getprop_6gevent_8__waiter_6Waiter_value, 0, (char *)0, 0}, - {0, 0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_8__waiter_Waiter = { - PyVarObject_HEAD_INIT(0, 0) - "gevent.__waiter.Waiter", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_8__waiter_Waiter), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_8__waiter_Waiter, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - __pyx_pw_6gevent_8__waiter_6Waiter_19__call__, /*tp_call*/ - __pyx_pw_6gevent_8__waiter_6Waiter_5__str__, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "Waiter(hub=None)\n\n A low level communication utility for greenlets.\n\n Waiter is a wrapper around greenlet's ``switch()`` and ``throw()`` calls that makes them somewhat safer:\n\n * switching will occur only if the waiting greenlet is executing :meth:`get` method currently;\n * any error raised in the greenlet is handled inside :meth:`switch` and :meth:`throw`\n * if :meth:`switch`/:meth:`throw` is called before the receiver calls :meth:`get`, then :class:`Waiter`\n will store the value/exception. The following :meth:`get` will return the value/raise the exception.\n\n The :meth:`switch` and :meth:`throw` methods must only be called from the :class:`Hub` greenlet.\n The :meth:`get` method must be called from a greenlet other than :class:`Hub`.\n\n >>> result = Waiter()\n >>> timer = get_hub().loop.timer(0.1)\n >>> timer.start(result.switch, 'hello from Waiter')\n >>> result.get() # blocks for 0.1 seconds\n 'hello from Waiter'\n >>> timer.close()\n\n If switch is called before the greenlet gets a chance to call :meth:`get` then\n :class:`Waiter` stores the value.\n\n >>> result = Waiter()\n >>> timer = get_hub().loop.timer(0.1)\n >>> timer.start(result.switch, 'hi from Waiter')\n >>> sleep(0.2)\n >>> result.get() # returns immediately without blocking\n 'hi from Waiter'\n >>> timer.close()\n\n .. warning::\n\n This a limited and dangerous way to communicate between\n greenlets. It can easily leave a greenlet unscheduled forever\n if used incorrectly. Consider using safer classes such as\n :class:`gevent.event.Event`, :class:`gevent.event.AsyncResult`,\n or :class:`gevent.queue.Queue`.\n ", /*tp_doc*/ - __pyx_tp_traverse_6gevent_8__waiter_Waiter, /*tp_traverse*/ - __pyx_tp_clear_6gevent_8__waiter_Waiter, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_8__waiter_Waiter, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_6gevent_8__waiter_Waiter, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_8__waiter_6Waiter_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_8__waiter_Waiter, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; -static struct __pyx_vtabstruct_6gevent_8__waiter_MultipleWaiter __pyx_vtable_6gevent_8__waiter_MultipleWaiter; - -static PyObject *__pyx_tp_new_6gevent_8__waiter_MultipleWaiter(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_obj_6gevent_8__waiter_MultipleWaiter *p; - PyObject *o = __pyx_tp_new_6gevent_8__waiter_Waiter(t, a, k); - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_8__waiter_MultipleWaiter *)o); - p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6gevent_8__waiter_Waiter*)__pyx_vtabptr_6gevent_8__waiter_MultipleWaiter; - p->_values = ((PyObject*)Py_None); Py_INCREF(Py_None); - return o; -} - -static void __pyx_tp_dealloc_6gevent_8__waiter_MultipleWaiter(PyObject *o) { - struct __pyx_obj_6gevent_8__waiter_MultipleWaiter *p = (struct __pyx_obj_6gevent_8__waiter_MultipleWaiter *)o; - PyObject_GC_UnTrack(o); - Py_CLEAR(p->_values); - PyObject_GC_Track(o); - __pyx_tp_dealloc_6gevent_8__waiter_Waiter(o); -} - -static int __pyx_tp_traverse_6gevent_8__waiter_MultipleWaiter(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_6gevent_8__waiter_MultipleWaiter *p = (struct __pyx_obj_6gevent_8__waiter_MultipleWaiter *)o; - e = __pyx_tp_traverse_6gevent_8__waiter_Waiter(o, v, a); if (e) return e; - if (p->_values) { - e = (*v)(p->_values, a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_6gevent_8__waiter_MultipleWaiter(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_6gevent_8__waiter_MultipleWaiter *p = (struct __pyx_obj_6gevent_8__waiter_MultipleWaiter *)o; - __pyx_tp_clear_6gevent_8__waiter_Waiter(o); - tmp = ((PyObject*)p->_values); - p->_values = ((PyObject*)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyMethodDef __pyx_methods_6gevent_8__waiter_MultipleWaiter[] = { - {"switch", (PyCFunction)__pyx_pw_6gevent_8__waiter_14MultipleWaiter_3switch, METH_O, __pyx_doc_6gevent_8__waiter_14MultipleWaiter_2switch}, - {0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_8__waiter_MultipleWaiter = { - PyVarObject_HEAD_INIT(0, 0) - "gevent.__waiter.MultipleWaiter", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_8__waiter_MultipleWaiter), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_8__waiter_MultipleWaiter, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_8__waiter_6Waiter_19__call__, /*tp_call*/ - #else - 0, /*tp_call*/ - #endif - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_8__waiter_6Waiter_5__str__, /*tp_str*/ - #else - 0, /*tp_str*/ - #endif - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "MultipleWaiter(hub=None)\n\n An internal extension of Waiter that can be used if multiple objects\n must be waited on, and there is a chance that in between waits greenlets\n might be switched out. All greenlets that switch to this waiter\n will have their value returned.\n\n This does not handle exceptions or throw methods.\n ", /*tp_doc*/ - __pyx_tp_traverse_6gevent_8__waiter_MultipleWaiter, /*tp_traverse*/ - __pyx_tp_clear_6gevent_8__waiter_MultipleWaiter, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_8__waiter_MultipleWaiter, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_8__waiter_14MultipleWaiter_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_8__waiter_MultipleWaiter, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; - -static PyMethodDef __pyx_methods[] = { - {0, 0, 0, 0} -}; - -#if PY_MAJOR_VERSION >= 3 -#if CYTHON_PEP489_MULTI_PHASE_INIT -static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ -static int __pyx_pymod_exec___waiter(PyObject* module); /*proto*/ -static PyModuleDef_Slot __pyx_moduledef_slots[] = { - {Py_mod_create, (void*)__pyx_pymod_create}, - {Py_mod_exec, (void*)__pyx_pymod_exec___waiter}, - {0, NULL} -}; -#endif - -static struct PyModuleDef __pyx_moduledef = { - PyModuleDef_HEAD_INIT, - "__waiter", - __pyx_k_Low_level_waiting_primitives, /* m_doc */ - #if CYTHON_PEP489_MULTI_PHASE_INIT - 0, /* m_size */ - #else - -1, /* m_size */ - #endif - __pyx_methods /* m_methods */, - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_moduledef_slots, /* m_slots */ - #else - NULL, /* m_reload */ - #endif - NULL, /* m_traverse */ - NULL, /* m_clear */ - NULL /* m_free */ -}; -#endif - -static __Pyx_StringTabEntry __pyx_string_tab[] = { - {&__pyx_n_s_AssertionError, __pyx_k_AssertionError, sizeof(__pyx_k_AssertionError), 0, 0, 1, 1}, - {&__pyx_kp_s_Can_only_use_Waiter_switch_metho, __pyx_k_Can_only_use_Waiter_switch_metho, sizeof(__pyx_k_Can_only_use_Waiter_switch_metho), 0, 0, 1, 0}, - {&__pyx_n_s_ConcurrentObjectUseError, __pyx_k_ConcurrentObjectUseError, sizeof(__pyx_k_ConcurrentObjectUseError), 0, 0, 1, 1}, - {&__pyx_n_s_MultipleWaiter_get, __pyx_k_MultipleWaiter_get, sizeof(__pyx_k_MultipleWaiter_get), 0, 0, 1, 1}, - {&__pyx_n_s_MultipleWaiter_switch, __pyx_k_MultipleWaiter_switch, sizeof(__pyx_k_MultipleWaiter_switch), 0, 0, 1, 1}, - {&__pyx_n_s_NONE, __pyx_k_NONE, sizeof(__pyx_k_NONE), 0, 0, 1, 1}, - {&__pyx_kp_s_This_Waiter_is_already_used_by_r, __pyx_k_This_Waiter_is_already_used_by_r, sizeof(__pyx_k_This_Waiter_is_already_used_by_r), 0, 0, 1, 0}, - {&__pyx_n_s_Waiter, __pyx_k_Waiter, sizeof(__pyx_k_Waiter), 0, 0, 1, 1}, - {&__pyx_n_s_Waiter_clear, __pyx_k_Waiter_clear, sizeof(__pyx_k_Waiter_clear), 0, 0, 1, 1}, - {&__pyx_n_s_Waiter_get, __pyx_k_Waiter_get, sizeof(__pyx_k_Waiter_get), 0, 0, 1, 1}, - {&__pyx_n_s_Waiter_ready, __pyx_k_Waiter_ready, sizeof(__pyx_k_Waiter_ready), 0, 0, 1, 1}, - {&__pyx_n_s_Waiter_successful, __pyx_k_Waiter_successful, sizeof(__pyx_k_Waiter_successful), 0, 0, 1, 1}, - {&__pyx_n_s_Waiter_switch, __pyx_k_Waiter_switch, sizeof(__pyx_k_Waiter_switch), 0, 0, 1, 1}, - {&__pyx_n_s_Waiter_switch_args, __pyx_k_Waiter_switch_args, sizeof(__pyx_k_Waiter_switch_args), 0, 0, 1, 1}, - {&__pyx_n_s_Waiter_throw, __pyx_k_Waiter_throw, sizeof(__pyx_k_Waiter_throw), 0, 0, 1, 1}, - {&__pyx_n_s_all, __pyx_k_all, sizeof(__pyx_k_all), 0, 0, 1, 1}, - {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1}, - {&__pyx_n_s_clear, __pyx_k_clear, sizeof(__pyx_k_clear), 0, 0, 1, 1}, - {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, - {&__pyx_n_s_exc_info, __pyx_k_exc_info, sizeof(__pyx_k_exc_info), 0, 0, 1, 1}, - {&__pyx_n_s_exception, __pyx_k_exception, sizeof(__pyx_k_exception), 0, 0, 1, 1}, - {&__pyx_n_s_exception_2, __pyx_k_exception_2, sizeof(__pyx_k_exception_2), 0, 0, 1, 1}, - {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1}, - {&__pyx_n_s_get_hub_noargs, __pyx_k_get_hub_noargs, sizeof(__pyx_k_get_hub_noargs), 0, 0, 1, 1}, - {&__pyx_n_s_getcurrent, __pyx_k_getcurrent, sizeof(__pyx_k_getcurrent), 0, 0, 1, 1}, - {&__pyx_n_s_gevent___waiter, __pyx_k_gevent___waiter, sizeof(__pyx_k_gevent___waiter), 0, 0, 1, 1}, - {&__pyx_n_s_gevent__hub_local, __pyx_k_gevent__hub_local, sizeof(__pyx_k_gevent__hub_local), 0, 0, 1, 1}, - {&__pyx_n_s_gevent__util, __pyx_k_gevent__util, sizeof(__pyx_k_gevent__util), 0, 0, 1, 1}, - {&__pyx_n_s_gevent_exceptions, __pyx_k_gevent_exceptions, sizeof(__pyx_k_gevent_exceptions), 0, 0, 1, 1}, - {&__pyx_n_s_greenlet, __pyx_k_greenlet, sizeof(__pyx_k_greenlet), 0, 0, 1, 1}, - {&__pyx_n_s_greenlet_imported, __pyx_k_greenlet_imported, sizeof(__pyx_k_greenlet_imported), 0, 0, 1, 1}, - {&__pyx_n_s_greenlet_init, __pyx_k_greenlet_init, sizeof(__pyx_k_greenlet_init), 0, 0, 1, 1}, - {&__pyx_n_s_handle_error, __pyx_k_handle_error, sizeof(__pyx_k_handle_error), 0, 0, 1, 1}, - {&__pyx_n_s_hub, __pyx_k_hub, sizeof(__pyx_k_hub), 0, 0, 1, 1}, - {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, - {&__pyx_n_s_import_c_accel, __pyx_k_import_c_accel, sizeof(__pyx_k_import_c_accel), 0, 0, 1, 1}, - {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1}, - {&__pyx_n_s_init_2, __pyx_k_init_2, sizeof(__pyx_k_init_2), 0, 0, 1, 1}, - {&__pyx_n_s_lambda, __pyx_k_lambda, sizeof(__pyx_k_lambda), 0, 0, 1, 1}, - {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, - {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, - {&__pyx_n_s_object, __pyx_k_object, sizeof(__pyx_k_object), 0, 0, 1, 1}, - {&__pyx_n_s_pop, __pyx_k_pop, sizeof(__pyx_k_pop), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_capi, __pyx_k_pyx_capi, sizeof(__pyx_k_pyx_capi), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1}, - {&__pyx_n_s_ready, __pyx_k_ready, sizeof(__pyx_k_ready), 0, 0, 1, 1}, - {&__pyx_kp_s_s_greenlet_s, __pyx_k_s_greenlet_s, sizeof(__pyx_k_s_greenlet_s), 0, 0, 1, 0}, - {&__pyx_kp_s_s_greenlet_s_exc_info_r, __pyx_k_s_greenlet_s_exc_info_r, sizeof(__pyx_k_s_greenlet_s_exc_info_r), 0, 0, 1, 0}, - {&__pyx_kp_s_s_greenlet_s_value_r, __pyx_k_s_greenlet_s_value_r, sizeof(__pyx_k_s_greenlet_s_value_r), 0, 0, 1, 0}, - {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1}, - {&__pyx_n_s_slots, __pyx_k_slots, sizeof(__pyx_k_slots), 0, 0, 1, 1}, - {&__pyx_n_s_source, __pyx_k_source, sizeof(__pyx_k_source), 0, 0, 1, 1}, - {&__pyx_kp_s_src_gevent__waiter_py, __pyx_k_src_gevent__waiter_py, sizeof(__pyx_k_src_gevent__waiter_py), 0, 0, 1, 0}, - {&__pyx_n_s_successful, __pyx_k_successful, sizeof(__pyx_k_successful), 0, 0, 1, 1}, - {&__pyx_n_s_switch, __pyx_k_switch, sizeof(__pyx_k_switch), 0, 0, 1, 1}, - {&__pyx_n_s_switch_args, __pyx_k_switch_args, sizeof(__pyx_k_switch_args), 0, 0, 1, 1}, - {&__pyx_n_s_sys, __pyx_k_sys, sizeof(__pyx_k_sys), 0, 0, 1, 1}, - {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, - {&__pyx_n_s_throw, __pyx_k_throw, sizeof(__pyx_k_throw), 0, 0, 1, 1}, - {&__pyx_n_s_throw_args, __pyx_k_throw_args, sizeof(__pyx_k_throw_args), 0, 0, 1, 1}, - {&__pyx_n_s_value, __pyx_k_value, sizeof(__pyx_k_value), 0, 0, 1, 1}, - {&__pyx_n_s_values, __pyx_k_values, sizeof(__pyx_k_values), 0, 0, 1, 1}, - {0, 0, 0, 0, 0, 0, 0} -}; -static int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin_object = __Pyx_GetBuiltinName(__pyx_n_s_object); if (!__pyx_builtin_object) __PYX_ERR(0, 21, __pyx_L1_error) - __pyx_builtin___import__ = __Pyx_GetBuiltinName(__pyx_n_s_import); if (!__pyx_builtin___import__) __PYX_ERR(0, 23, __pyx_L1_error) - __pyx_builtin_AssertionError = __Pyx_GetBuiltinName(__pyx_n_s_AssertionError); if (!__pyx_builtin_AssertionError) __PYX_ERR(0, 116, __pyx_L1_error) - return 0; - __pyx_L1_error:; - return -1; -} - -static int __Pyx_InitCachedConstants(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - - /* "src/gevent/_waiter.py":116 - * else: - * if getcurrent() is not self.hub: # pylint:disable=undefined-variable - * raise AssertionError("Can only use Waiter.switch method from the Hub greenlet") # <<<<<<<<<<<<<< - * switch = greenlet.switch - * try: - */ - __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_s_Can_only_use_Waiter_switch_metho); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 116, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple_); - __Pyx_GIVEREF(__pyx_tuple_); - - /* "src/gevent/_waiter.py":133 - * else: - * if getcurrent() is not self.hub: # pylint:disable=undefined-variable - * raise AssertionError("Can only use Waiter.switch method from the Hub greenlet") # <<<<<<<<<<<<<< - * throw = greenlet.throw - * try: - */ - __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_s_Can_only_use_Waiter_switch_metho); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 133, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__2); - __Pyx_GIVEREF(__pyx_tuple__2); - - /* "src/gevent/_waiter.py":23 - * _NONE = object() - * - * locals()['getcurrent'] = __import__('greenlet').getcurrent # <<<<<<<<<<<<<< - * locals()['greenlet_init'] = lambda: None - * - */ - __pyx_tuple__3 = PyTuple_Pack(1, __pyx_n_s_greenlet); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 23, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__3); - __Pyx_GIVEREF(__pyx_tuple__3); - - /* "src/gevent/_waiter.py":76 - * self._exception = _NONE - * - * def clear(self): # <<<<<<<<<<<<<< - * self.greenlet = None - * self.value = None - */ - __pyx_tuple__4 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 76, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__4); - __Pyx_GIVEREF(__pyx_tuple__4); - __pyx_codeobj__5 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__4, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__waiter_py, __pyx_n_s_clear, 76, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__5)) __PYX_ERR(0, 76, __pyx_L1_error) - - /* "src/gevent/_waiter.py":88 - * return '<%s greenlet=%s exc_info=%r>' % (type(self).__name__, self.greenlet, self.exc_info) - * - * def ready(self): # <<<<<<<<<<<<<< - * """Return true if and only if it holds a value or an exception""" - * return self._exception is not _NONE - */ - __pyx_tuple__6 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 88, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__6); - __Pyx_GIVEREF(__pyx_tuple__6); - __pyx_codeobj__7 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__6, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__waiter_py, __pyx_n_s_ready, 88, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__7)) __PYX_ERR(0, 88, __pyx_L1_error) - - /* "src/gevent/_waiter.py":92 - * return self._exception is not _NONE - * - * def successful(self): # <<<<<<<<<<<<<< - * """Return true if and only if it is ready and holds a value""" - * return self._exception is None - */ - __pyx_tuple__8 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 92, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__8); - __Pyx_GIVEREF(__pyx_tuple__8); - __pyx_codeobj__9 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__8, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__waiter_py, __pyx_n_s_successful, 92, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__9)) __PYX_ERR(0, 92, __pyx_L1_error) - - /* "src/gevent/_waiter.py":102 - * return self._exception - * - * def switch(self, value): # <<<<<<<<<<<<<< - * """ - * Switch to the greenlet if one's available. Otherwise store the - */ - __pyx_tuple__10 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_value, __pyx_n_s_greenlet, __pyx_n_s_switch); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 102, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__10); - __Pyx_GIVEREF(__pyx_tuple__10); - __pyx_codeobj__11 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__waiter_py, __pyx_n_s_switch, 102, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__11)) __PYX_ERR(0, 102, __pyx_L1_error) - - /* "src/gevent/_waiter.py":123 - * self.hub.handle_error(switch, *sys.exc_info()) - * - * def switch_args(self, *args): # <<<<<<<<<<<<<< - * return self.switch(args) - * - */ - __pyx_tuple__12 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_args); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 123, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__12); - __Pyx_GIVEREF(__pyx_tuple__12); - __pyx_codeobj__13 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__12, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__waiter_py, __pyx_n_s_switch_args, 123, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__13)) __PYX_ERR(0, 123, __pyx_L1_error) - - /* "src/gevent/_waiter.py":126 - * return self.switch(args) - * - * def throw(self, *throw_args): # <<<<<<<<<<<<<< - * """Switch to the greenlet with the exception. If there's no greenlet, store the exception.""" - * greenlet = self.greenlet - */ - __pyx_tuple__14 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_throw_args, __pyx_n_s_greenlet, __pyx_n_s_throw); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 126, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__14); - __Pyx_GIVEREF(__pyx_tuple__14); - __pyx_codeobj__15 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__14, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__waiter_py, __pyx_n_s_throw, 126, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__15)) __PYX_ERR(0, 126, __pyx_L1_error) - - /* "src/gevent/_waiter.py":140 - * self.hub.handle_error(throw, *sys.exc_info()) - * - * def get(self): # <<<<<<<<<<<<<< - * """If a value/an exception is stored, return/raise it. Otherwise until switch() or throw() is called.""" - * if self._exception is not _NONE: - */ - __pyx_tuple__16 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__16); - __Pyx_GIVEREF(__pyx_tuple__16); - __pyx_codeobj__17 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__16, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__waiter_py, __pyx_n_s_get, 140, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__17)) __PYX_ERR(0, 140, __pyx_L1_error) - - /* "src/gevent/_waiter.py":186 - * self._values = list() - * - * def switch(self, value): # <<<<<<<<<<<<<< - * self._values.append(value) - * Waiter.switch(self, True) - */ - __pyx_tuple__18 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_value); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 186, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__18); - __Pyx_GIVEREF(__pyx_tuple__18); - __pyx_codeobj__19 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__waiter_py, __pyx_n_s_switch, 186, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__19)) __PYX_ERR(0, 186, __pyx_L1_error) - - /* "src/gevent/_waiter.py":190 - * Waiter.switch(self, True) - * - * def get(self): # <<<<<<<<<<<<<< - * if not self._values: - * Waiter.get(self) - */ - __pyx_tuple__20 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 190, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__20); - __Pyx_GIVEREF(__pyx_tuple__20); - __pyx_codeobj__21 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__20, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__waiter_py, __pyx_n_s_get, 190, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__21)) __PYX_ERR(0, 190, __pyx_L1_error) - - /* "src/gevent/_waiter.py":197 - * return self._values.pop(0) - * - * def _init(): # <<<<<<<<<<<<<< - * greenlet_init() # pylint:disable=undefined-variable - * - */ - __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__waiter_py, __pyx_n_s_init_2, 197, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(0, 197, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_InitGlobals(void) { - if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) - return 0; - __pyx_L1_error:; - return -1; -} - -static int __Pyx_modinit_global_init_code(void); /*proto*/ -static int __Pyx_modinit_variable_export_code(void); /*proto*/ -static int __Pyx_modinit_function_export_code(void); /*proto*/ -static int __Pyx_modinit_type_init_code(void); /*proto*/ -static int __Pyx_modinit_type_import_code(void); /*proto*/ -static int __Pyx_modinit_variable_import_code(void); /*proto*/ -static int __Pyx_modinit_function_import_code(void); /*proto*/ - -static int __Pyx_modinit_global_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); - /*--- Global init code ---*/ - __pyx_v_6gevent_8__waiter_sys = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_8__waiter_ConcurrentObjectUseError = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_8__waiter__NONE = Py_None; Py_INCREF(Py_None); - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_variable_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); - /*--- Variable export code ---*/ - if (__Pyx_ExportVoidPtr(__pyx_n_s_sys, (void *)&__pyx_v_6gevent_8__waiter_sys, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_ConcurrentObjectUseError, (void *)&__pyx_v_6gevent_8__waiter_ConcurrentObjectUseError, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_greenlet_imported, (void *)&__pyx_v_6gevent_8__waiter__greenlet_imported, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_NONE, (void *)&__pyx_v_6gevent_8__waiter__NONE, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_function_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); - /*--- Function export code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_type_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); - /*--- Type init code ---*/ - __pyx_ptype_6gevent_8__waiter_greenlet = __Pyx_ImportType("greenlet", "greenlet", sizeof(PyGreenlet), 0); if (unlikely(!__pyx_ptype_6gevent_8__waiter_greenlet)) __PYX_ERR(2, 15, __pyx_L1_error) - __pyx_vtabptr_6gevent_8__waiter_Waiter = &__pyx_vtable_6gevent_8__waiter_Waiter; - __pyx_vtable_6gevent_8__waiter_Waiter.get = (PyObject *(*)(struct __pyx_obj_6gevent_8__waiter_Waiter *, int __pyx_skip_dispatch))__pyx_f_6gevent_8__waiter_6Waiter_get; - __pyx_vtable_6gevent_8__waiter_Waiter.clear = (PyObject *(*)(struct __pyx_obj_6gevent_8__waiter_Waiter *, int __pyx_skip_dispatch))__pyx_f_6gevent_8__waiter_6Waiter_clear; - if (PyType_Ready(&__pyx_type_6gevent_8__waiter_Waiter) < 0) __PYX_ERR(0, 27, __pyx_L1_error) - __pyx_type_6gevent_8__waiter_Waiter.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_8__waiter_Waiter.tp_dictoffset && __pyx_type_6gevent_8__waiter_Waiter.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_8__waiter_Waiter.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - if (__Pyx_SetVtable(__pyx_type_6gevent_8__waiter_Waiter.tp_dict, __pyx_vtabptr_6gevent_8__waiter_Waiter) < 0) __PYX_ERR(0, 27, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "Waiter", (PyObject *)&__pyx_type_6gevent_8__waiter_Waiter) < 0) __PYX_ERR(0, 27, __pyx_L1_error) - __pyx_ptype_6gevent_8__waiter_Waiter = &__pyx_type_6gevent_8__waiter_Waiter; - __pyx_vtabptr_6gevent_8__waiter_MultipleWaiter = &__pyx_vtable_6gevent_8__waiter_MultipleWaiter; - __pyx_vtable_6gevent_8__waiter_MultipleWaiter.__pyx_base = *__pyx_vtabptr_6gevent_8__waiter_Waiter; - __pyx_vtable_6gevent_8__waiter_MultipleWaiter.__pyx_base.get = (PyObject *(*)(struct __pyx_obj_6gevent_8__waiter_Waiter *, int __pyx_skip_dispatch))__pyx_f_6gevent_8__waiter_14MultipleWaiter_get; - __pyx_type_6gevent_8__waiter_MultipleWaiter.tp_base = __pyx_ptype_6gevent_8__waiter_Waiter; - if (PyType_Ready(&__pyx_type_6gevent_8__waiter_MultipleWaiter) < 0) __PYX_ERR(0, 166, __pyx_L1_error) - __pyx_type_6gevent_8__waiter_MultipleWaiter.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_8__waiter_MultipleWaiter.tp_dictoffset && __pyx_type_6gevent_8__waiter_MultipleWaiter.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_8__waiter_MultipleWaiter.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; - } - if (__Pyx_SetVtable(__pyx_type_6gevent_8__waiter_MultipleWaiter.tp_dict, __pyx_vtabptr_6gevent_8__waiter_MultipleWaiter) < 0) __PYX_ERR(0, 166, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "MultipleWaiter", (PyObject *)&__pyx_type_6gevent_8__waiter_MultipleWaiter) < 0) __PYX_ERR(0, 166, __pyx_L1_error) - __pyx_ptype_6gevent_8__waiter_MultipleWaiter = &__pyx_type_6gevent_8__waiter_MultipleWaiter; - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_type_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); - /*--- Type import code ---*/ - __pyx_ptype_6gevent_21__greenlet_primitives_greenlet = __Pyx_ImportType("greenlet", "greenlet", sizeof(PyGreenlet), 0); if (unlikely(!__pyx_ptype_6gevent_21__greenlet_primitives_greenlet)) __PYX_ERR(1, 12, __pyx_L1_error) - __pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet = __Pyx_ImportType("gevent.__greenlet_primitives", "TrackedRawGreenlet", sizeof(struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet), 1); if (unlikely(!__pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet)) __PYX_ERR(1, 37, __pyx_L1_error) - __pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop = __Pyx_ImportType("gevent.__greenlet_primitives", "SwitchOutGreenletWithLoop", sizeof(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop), 1); if (unlikely(!__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop)) __PYX_ERR(1, 40, __pyx_L1_error) - __pyx_vtabptr_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop = (struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop*)__Pyx_GetVtable(__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop)) __PYX_ERR(1, 40, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_variable_import_code(void) { - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); - /*--- Variable import code ---*/ - __pyx_t_1 = __Pyx_ImportModule("gevent.__greenlet_primitives"); if (!__pyx_t_1) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_1, "wref", (void **)&__pyx_vp_6gevent_21__greenlet_primitives_wref, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_1, "BlockingSwitchOutError", (void **)&__pyx_vp_6gevent_21__greenlet_primitives_BlockingSwitchOutError, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_1, "_greenlet_imported", (void **)&__pyx_vp_6gevent_21__greenlet_primitives__greenlet_imported, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_2 = __Pyx_ImportModule("gevent.__hub_local"); if (!__pyx_t_2) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_2, "_threadlocal", (void **)&__pyx_vp_6gevent_11__hub_local__threadlocal, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_function_import_code(void) { - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); - /*--- Function import code ---*/ - __pyx_t_1 = __Pyx_ImportModule("gevent.__hub_local"); if (!__pyx_t_1) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportFunction(__pyx_t_1, "get_hub_noargs", (void (**)(void))&__pyx_f_6gevent_11__hub_local_get_hub_noargs, "struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *(int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_RefNannyFinishContext(); - return -1; -} - - -#if PY_MAJOR_VERSION < 3 -#ifdef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC void -#else -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -#endif -#else -#ifdef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC PyObject * -#else -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -#endif -#endif -#ifndef CYTHON_SMALL_CODE -#if defined(__clang__) - #define CYTHON_SMALL_CODE -#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4))) - #define CYTHON_SMALL_CODE __attribute__((cold)) -#else - #define CYTHON_SMALL_CODE -#endif -#endif - - -#if PY_MAJOR_VERSION < 3 -__Pyx_PyMODINIT_FUNC init__waiter(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC init__waiter(void) -#else -__Pyx_PyMODINIT_FUNC PyInit___waiter(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC PyInit___waiter(void) -#if CYTHON_PEP489_MULTI_PHASE_INIT -{ - return PyModuleDef_Init(&__pyx_moduledef); -} -static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) { - PyObject *value = PyObject_GetAttrString(spec, from_name); - int result = 0; - if (likely(value)) { - result = PyDict_SetItemString(moddict, to_name, value); - Py_DECREF(value); - } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Clear(); - } else { - result = -1; - } - return result; -} -static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) { - PyObject *module = NULL, *moddict, *modname; - if (__pyx_m) - return __Pyx_NewRef(__pyx_m); - modname = PyObject_GetAttrString(spec, "name"); - if (unlikely(!modname)) goto bad; - module = PyModule_NewObject(modname); - Py_DECREF(modname); - if (unlikely(!module)) goto bad; - moddict = PyModule_GetDict(module); - if (unlikely(!moddict)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__") < 0)) goto bad; - return module; -bad: - Py_XDECREF(module); - return NULL; -} - - -static int __pyx_pymod_exec___waiter(PyObject *__pyx_pyinit_module) -#endif -#endif -{ - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannyDeclarations - #if CYTHON_PEP489_MULTI_PHASE_INIT - if (__pyx_m && __pyx_m == __pyx_pyinit_module) return 0; - #elif PY_MAJOR_VERSION >= 3 - if (__pyx_m) return __Pyx_NewRef(__pyx_m); - #endif - #if CYTHON_REFNANNY -__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); -if (!__Pyx_RefNanny) { - PyErr_Clear(); - __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); - if (!__Pyx_RefNanny) - Py_FatalError("failed to import 'refnanny' module"); -} -#endif - __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit___waiter(void)", 0); - if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) - #ifdef __Pyx_CyFunction_USED - if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_FusedFunction_USED - if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Coroutine_USED - if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Generator_USED - if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_AsyncGen_USED - if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_StopAsyncIteration_USED - if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - /*--- Library function declarations ---*/ - /*--- Threads initialization code ---*/ - #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS - #ifdef WITH_THREAD /* Python build with threading support? */ - PyEval_InitThreads(); - #endif - #endif - /*--- Module creation code ---*/ - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_m = __pyx_pyinit_module; - Py_INCREF(__pyx_m); - #else - #if PY_MAJOR_VERSION < 3 - __pyx_m = Py_InitModule4("__waiter", __pyx_methods, __pyx_k_Low_level_waiting_primitives, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); - #else - __pyx_m = PyModule_Create(&__pyx_moduledef); - #endif - if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) - Py_INCREF(__pyx_d); - __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) - #if CYTHON_COMPILING_IN_PYPY - Py_INCREF(__pyx_b); - #endif - if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - /*--- Initialize various global constants etc. ---*/ - if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) - if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - if (__pyx_module_is_main_gevent____waiter) { - if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - } - #if PY_MAJOR_VERSION >= 3 - { - PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) - if (!PyDict_GetItemString(modules, "gevent.__waiter")) { - if (unlikely(PyDict_SetItemString(modules, "gevent.__waiter", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) - } - } - #endif - /*--- Builtin init code ---*/ - if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Constants init code ---*/ - if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Global type/function init code ---*/ - (void)__Pyx_modinit_global_init_code(); - if (unlikely(__Pyx_modinit_variable_export_code() != 0)) goto __pyx_L1_error; - (void)__Pyx_modinit_function_export_code(); - if (unlikely(__Pyx_modinit_type_init_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_type_import_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_variable_import_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_function_import_code() != 0)) goto __pyx_L1_error; - /*--- Execution code ---*/ - #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) - if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - - /* "src/gevent/_waiter.py":12 - * from __future__ import print_function - * - * import sys # <<<<<<<<<<<<<< - * - * from gevent._hub_local import get_hub_noargs as get_hub - */ - __pyx_t_1 = __Pyx_Import(__pyx_n_s_sys, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_v_6gevent_8__waiter_sys); - __Pyx_DECREF_SET(__pyx_v_6gevent_8__waiter_sys, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/_waiter.py":14 - * import sys - * - * from gevent._hub_local import get_hub_noargs as get_hub # <<<<<<<<<<<<<< - * from gevent.exceptions import ConcurrentObjectUseError - * - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_get_hub_noargs); - __Pyx_GIVEREF(__pyx_n_s_get_hub_noargs); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_get_hub_noargs); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_gevent__hub_local, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_get_hub_noargs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_hub_noargs, __pyx_t_1) < 0) __PYX_ERR(0, 14, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_waiter.py":15 - * - * from gevent._hub_local import get_hub_noargs as get_hub - * from gevent.exceptions import ConcurrentObjectUseError # <<<<<<<<<<<<<< - * - * __all__ = [ - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_ConcurrentObjectUseError); - __Pyx_GIVEREF(__pyx_n_s_ConcurrentObjectUseError); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_ConcurrentObjectUseError); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_gevent_exceptions, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_ConcurrentObjectUseError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_v_6gevent_8__waiter_ConcurrentObjectUseError); - __Pyx_DECREF_SET(__pyx_v_6gevent_8__waiter_ConcurrentObjectUseError, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_waiter.py":17 - * from gevent.exceptions import ConcurrentObjectUseError - * - * __all__ = [ # <<<<<<<<<<<<<< - * 'Waiter', - * ] - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 17, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_Waiter); - __Pyx_GIVEREF(__pyx_n_s_Waiter); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_Waiter); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_all, __pyx_t_1) < 0) __PYX_ERR(0, 17, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_waiter.py":21 - * ] - * - * _NONE = object() # <<<<<<<<<<<<<< - * - * locals()['getcurrent'] = __import__('greenlet').getcurrent - */ - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_builtin_object); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 21, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_v_6gevent_8__waiter__NONE); - __Pyx_DECREF_SET(__pyx_v_6gevent_8__waiter__NONE, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/_waiter.py":23 - * _NONE = object() - * - * locals()['getcurrent'] = __import__('greenlet').getcurrent # <<<<<<<<<<<<<< - * locals()['greenlet_init'] = lambda: None - * - */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin___import__, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_getcurrent); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 23, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_Globals(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (unlikely(PyDict_SetItem(__pyx_t_1, __pyx_n_s_getcurrent, __pyx_t_2) < 0)) __PYX_ERR(0, 23, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_waiter.py":24 - * - * locals()['getcurrent'] = __import__('greenlet').getcurrent - * locals()['greenlet_init'] = lambda: None # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_8__waiter_2lambda, 0, __pyx_n_s_lambda, NULL, __pyx_n_s_gevent___waiter, __pyx_d, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 24, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_Globals(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 24, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (unlikely(PyDict_SetItem(__pyx_t_1, __pyx_n_s_greenlet_init, __pyx_t_2) < 0)) __PYX_ERR(0, 24, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_waiter.py":68 - * """ - * - * __slots__ = ['hub', 'greenlet', 'value', '_exception'] # <<<<<<<<<<<<<< - * - * def __init__(self, hub=None): - */ - __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 68, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_hub); - __Pyx_GIVEREF(__pyx_n_s_hub); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_hub); - __Pyx_INCREF(__pyx_n_s_greenlet); - __Pyx_GIVEREF(__pyx_n_s_greenlet); - PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_greenlet); - __Pyx_INCREF(__pyx_n_s_value); - __Pyx_GIVEREF(__pyx_n_s_value); - PyList_SET_ITEM(__pyx_t_2, 2, __pyx_n_s_value); - __Pyx_INCREF(__pyx_n_s_exception_2); - __Pyx_GIVEREF(__pyx_n_s_exception_2); - PyList_SET_ITEM(__pyx_t_2, 3, __pyx_n_s_exception_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_8__waiter_Waiter->tp_dict, __pyx_n_s_slots, __pyx_t_2) < 0) __PYX_ERR(0, 68, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_8__waiter_Waiter); - - /* "src/gevent/_waiter.py":76 - * self._exception = _NONE - * - * def clear(self): # <<<<<<<<<<<<<< - * self.greenlet = None - * self.value = None - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_8__waiter_6Waiter_3clear, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Waiter_clear, NULL, __pyx_n_s_gevent___waiter, __pyx_d, ((PyObject *)__pyx_codeobj__5)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 76, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_8__waiter_Waiter->tp_dict, __pyx_n_s_clear, __pyx_t_2) < 0) __PYX_ERR(0, 76, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_8__waiter_Waiter); - - /* "src/gevent/_waiter.py":88 - * return '<%s greenlet=%s exc_info=%r>' % (type(self).__name__, self.greenlet, self.exc_info) - * - * def ready(self): # <<<<<<<<<<<<<< - * """Return true if and only if it holds a value or an exception""" - * return self._exception is not _NONE - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_8__waiter_6Waiter_7ready, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Waiter_ready, NULL, __pyx_n_s_gevent___waiter, __pyx_d, ((PyObject *)__pyx_codeobj__7)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 88, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_8__waiter_Waiter->tp_dict, __pyx_n_s_ready, __pyx_t_2) < 0) __PYX_ERR(0, 88, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_8__waiter_Waiter); - - /* "src/gevent/_waiter.py":92 - * return self._exception is not _NONE - * - * def successful(self): # <<<<<<<<<<<<<< - * """Return true if and only if it is ready and holds a value""" - * return self._exception is None - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_8__waiter_6Waiter_9successful, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Waiter_successful, NULL, __pyx_n_s_gevent___waiter, __pyx_d, ((PyObject *)__pyx_codeobj__9)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 92, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_8__waiter_Waiter->tp_dict, __pyx_n_s_successful, __pyx_t_2) < 0) __PYX_ERR(0, 92, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_8__waiter_Waiter); - - /* "src/gevent/_waiter.py":102 - * return self._exception - * - * def switch(self, value): # <<<<<<<<<<<<<< - * """ - * Switch to the greenlet if one's available. Otherwise store the - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_8__waiter_6Waiter_11switch, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Waiter_switch, NULL, __pyx_n_s_gevent___waiter, __pyx_d, ((PyObject *)__pyx_codeobj__11)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 102, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_8__waiter_Waiter->tp_dict, __pyx_n_s_switch, __pyx_t_2) < 0) __PYX_ERR(0, 102, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_8__waiter_Waiter); - - /* "src/gevent/_waiter.py":123 - * self.hub.handle_error(switch, *sys.exc_info()) - * - * def switch_args(self, *args): # <<<<<<<<<<<<<< - * return self.switch(args) - * - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_8__waiter_6Waiter_13switch_args, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Waiter_switch_args, NULL, __pyx_n_s_gevent___waiter, __pyx_d, ((PyObject *)__pyx_codeobj__13)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 123, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_8__waiter_Waiter->tp_dict, __pyx_n_s_switch_args, __pyx_t_2) < 0) __PYX_ERR(0, 123, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_8__waiter_Waiter); - - /* "src/gevent/_waiter.py":126 - * return self.switch(args) - * - * def throw(self, *throw_args): # <<<<<<<<<<<<<< - * """Switch to the greenlet with the exception. If there's no greenlet, store the exception.""" - * greenlet = self.greenlet - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_8__waiter_6Waiter_15throw, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Waiter_throw, NULL, __pyx_n_s_gevent___waiter, __pyx_d, ((PyObject *)__pyx_codeobj__15)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 126, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_8__waiter_Waiter->tp_dict, __pyx_n_s_throw, __pyx_t_2) < 0) __PYX_ERR(0, 126, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_8__waiter_Waiter); - - /* "src/gevent/_waiter.py":140 - * self.hub.handle_error(throw, *sys.exc_info()) - * - * def get(self): # <<<<<<<<<<<<<< - * """If a value/an exception is stored, return/raise it. Otherwise until switch() or throw() is called.""" - * if self._exception is not _NONE: - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_8__waiter_6Waiter_17get, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Waiter_get, NULL, __pyx_n_s_gevent___waiter, __pyx_d, ((PyObject *)__pyx_codeobj__17)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_8__waiter_Waiter->tp_dict, __pyx_n_s_get, __pyx_t_2) < 0) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_8__waiter_Waiter); - - /* "src/gevent/_waiter.py":175 - * This does not handle exceptions or throw methods. - * """ - * __slots__ = ['_values'] # <<<<<<<<<<<<<< - * - * def __init__(self, hub=None): - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_values); - __Pyx_GIVEREF(__pyx_n_s_values); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_values); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_8__waiter_MultipleWaiter->tp_dict, __pyx_n_s_slots, __pyx_t_2) < 0) __PYX_ERR(0, 175, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_8__waiter_MultipleWaiter); - - /* "src/gevent/_waiter.py":186 - * self._values = list() - * - * def switch(self, value): # <<<<<<<<<<<<<< - * self._values.append(value) - * Waiter.switch(self, True) - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_8__waiter_14MultipleWaiter_3switch, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MultipleWaiter_switch, NULL, __pyx_n_s_gevent___waiter, __pyx_d, ((PyObject *)__pyx_codeobj__19)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 186, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_8__waiter_MultipleWaiter->tp_dict, __pyx_n_s_switch, __pyx_t_2) < 0) __PYX_ERR(0, 186, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_8__waiter_MultipleWaiter); - - /* "src/gevent/_waiter.py":190 - * Waiter.switch(self, True) - * - * def get(self): # <<<<<<<<<<<<<< - * if not self._values: - * Waiter.get(self) - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_8__waiter_14MultipleWaiter_5get, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MultipleWaiter_get, NULL, __pyx_n_s_gevent___waiter, __pyx_d, ((PyObject *)__pyx_codeobj__21)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 190, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_8__waiter_MultipleWaiter->tp_dict, __pyx_n_s_get, __pyx_t_2) < 0) __PYX_ERR(0, 190, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_8__waiter_MultipleWaiter); - - /* "src/gevent/_waiter.py":197 - * return self._values.pop(0) - * - * def _init(): # <<<<<<<<<<<<<< - * greenlet_init() # pylint:disable=undefined-variable - * - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_8__waiter_1_init, 0, __pyx_n_s_init_2, NULL, __pyx_n_s_gevent___waiter, __pyx_d, ((PyObject *)__pyx_codeobj__22)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 197, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_init_2, __pyx_t_2) < 0) __PYX_ERR(0, 197, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_waiter.py":200 - * greenlet_init() # pylint:disable=undefined-variable - * - * _init() # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_init_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 200, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 200, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_waiter.py":203 - * - * - * from gevent._util import import_c_accel # <<<<<<<<<<<<<< - * import_c_accel(globals(), 'gevent.__waiter') - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 203, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_import_c_accel); - __Pyx_GIVEREF(__pyx_n_s_import_c_accel); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_import_c_accel); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_gevent__util, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 203, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_import_c_accel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 203, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_import_c_accel, __pyx_t_1) < 0) __PYX_ERR(0, 203, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/_waiter.py":204 - * - * from gevent._util import import_c_accel - * import_c_accel(globals(), 'gevent.__waiter') # <<<<<<<<<<<<<< - */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_import_c_accel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 204, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_Globals(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 204, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 204, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); - __Pyx_INCREF(__pyx_n_s_gevent___waiter); - __Pyx_GIVEREF(__pyx_n_s_gevent___waiter); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_gevent___waiter); - __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 204, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/_waiter.py":1 - * # -*- coding: utf-8 -*- # <<<<<<<<<<<<<< - * # copyright 2018 gevent - * # cython: auto_pickle=False,embedsignature=True,always_allow_keywords=False - */ - __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "gevent/__waiter.pxd":27 - * return PyGreenlet_GetCurrent() - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - - /*--- Wrapped vars code ---*/ - - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - if (__pyx_m) { - if (__pyx_d) { - __Pyx_AddTraceback("init gevent.__waiter", 0, __pyx_lineno, __pyx_filename); - } - Py_DECREF(__pyx_m); __pyx_m = 0; - } else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_ImportError, "init gevent.__waiter"); - } - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - #if CYTHON_PEP489_MULTI_PHASE_INIT - return (__pyx_m != NULL) ? 0 : -1; - #elif PY_MAJOR_VERSION >= 3 - return __pyx_m; - #else - return; - #endif -} - -/* --- Runtime support code --- */ -/* Refnanny */ -#if CYTHON_REFNANNY -static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { - PyObject *m = NULL, *p = NULL; - void *r = NULL; - m = PyImport_ImportModule((char *)modname); - if (!m) goto end; - p = PyObject_GetAttrString(m, (char *)"RefNannyAPI"); - if (!p) goto end; - r = PyLong_AsVoidPtr(p); -end: - Py_XDECREF(p); - Py_XDECREF(m); - return (__Pyx_RefNannyAPIStruct *)r; -} -#endif - -/* PyObjectGetAttrStr */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_getattro)) - return tp->tp_getattro(obj, attr_name); -#if PY_MAJOR_VERSION < 3 - if (likely(tp->tp_getattr)) - return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); -#endif - return PyObject_GetAttr(obj, attr_name); -} -#endif - -/* GetBuiltinName */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name) { - PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); - if (unlikely(!result)) { - PyErr_Format(PyExc_NameError, -#if PY_MAJOR_VERSION >= 3 - "name '%U' is not defined", name); -#else - "name '%.200s' is not defined", PyString_AS_STRING(name)); -#endif - } - return result; -} - -/* RaiseDoubleKeywords */ -static void __Pyx_RaiseDoubleKeywordsError( - const char* func_name, - PyObject* kw_name) -{ - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION >= 3 - "%s() got multiple values for keyword argument '%U'", func_name, kw_name); - #else - "%s() got multiple values for keyword argument '%s'", func_name, - PyString_AsString(kw_name)); - #endif -} - -/* ParseKeywords */ -static int __Pyx_ParseOptionalKeywords( - PyObject *kwds, - PyObject **argnames[], - PyObject *kwds2, - PyObject *values[], - Py_ssize_t num_pos_args, - const char* function_name) -{ - PyObject *key = 0, *value = 0; - Py_ssize_t pos = 0; - PyObject*** name; - PyObject*** first_kw_arg = argnames + num_pos_args; - while (PyDict_Next(kwds, &pos, &key, &value)) { - name = first_kw_arg; - while (*name && (**name != key)) name++; - if (*name) { - values[name-argnames] = value; - continue; - } - name = first_kw_arg; - #if PY_MAJOR_VERSION < 3 - if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) { - while (*name) { - if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) - && _PyString_Eq(**name, key)) { - values[name-argnames] = value; - break; - } - name++; - } - if (*name) continue; - else { - PyObject*** argname = argnames; - while (argname != first_kw_arg) { - if ((**argname == key) || ( - (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) - && _PyString_Eq(**argname, key))) { - goto arg_passed_twice; - } - argname++; - } - } - } else - #endif - if (likely(PyUnicode_Check(key))) { - while (*name) { - int cmp = (**name == key) ? 0 : - #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 : - #endif - PyUnicode_Compare(**name, key); - if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; - if (cmp == 0) { - values[name-argnames] = value; - break; - } - name++; - } - if (*name) continue; - else { - PyObject*** argname = argnames; - while (argname != first_kw_arg) { - int cmp = (**argname == key) ? 0 : - #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 : - #endif - PyUnicode_Compare(**argname, key); - if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; - if (cmp == 0) goto arg_passed_twice; - argname++; - } - } - } else - goto invalid_keyword_type; - if (kwds2) { - if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; - } else { - goto invalid_keyword; - } - } - return 0; -arg_passed_twice: - __Pyx_RaiseDoubleKeywordsError(function_name, key); - goto bad; -invalid_keyword_type: - PyErr_Format(PyExc_TypeError, - "%.200s() keywords must be strings", function_name); - goto bad; -invalid_keyword: - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION < 3 - "%.200s() got an unexpected keyword argument '%.200s'", - function_name, PyString_AsString(key)); - #else - "%s() got an unexpected keyword argument '%U'", - function_name, key); - #endif -bad: - return -1; -} - -/* RaiseArgTupleInvalid */ -static void __Pyx_RaiseArgtupleInvalid( - const char* func_name, - int exact, - Py_ssize_t num_min, - Py_ssize_t num_max, - Py_ssize_t num_found) -{ - Py_ssize_t num_expected; - const char *more_or_less; - if (num_found < num_min) { - num_expected = num_min; - more_or_less = "at least"; - } else { - num_expected = num_max; - more_or_less = "at most"; - } - if (exact) { - more_or_less = "exactly"; - } - PyErr_Format(PyExc_TypeError, - "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", - func_name, more_or_less, num_expected, - (num_expected == 1) ? "" : "s", num_found); -} - -/* ExtTypeTest */ -static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { - if (unlikely(!type)) { - PyErr_SetString(PyExc_SystemError, "Missing type object"); - return 0; - } - if (likely(__Pyx_TypeCheck(obj, type))) - return 1; - PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s", - Py_TYPE(obj)->tp_name, type->tp_name); - return 0; -} - -/* PyCFunctionFastCall */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { - PyCFunctionObject *func = (PyCFunctionObject*)func_obj; - PyCFunction meth = PyCFunction_GET_FUNCTION(func); - PyObject *self = PyCFunction_GET_SELF(func); - int flags = PyCFunction_GET_FLAGS(func); - assert(PyCFunction_Check(func)); - assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))); - assert(nargs >= 0); - assert(nargs == 0 || args != NULL); - /* _PyCFunction_FastCallDict() must not be called with an exception set, - because it may clear it (directly or indirectly) and so the - caller loses its exception */ - assert(!PyErr_Occurred()); - if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { - return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL); - } else { - return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs); - } -} -#endif - -/* PyFunctionFastCall */ -#if CYTHON_FAST_PYCALL -#include "frameobject.h" -static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, - PyObject *globals) { - PyFrameObject *f; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject **fastlocals; - Py_ssize_t i; - PyObject *result; - assert(globals != NULL); - /* XXX Perhaps we should create a specialized - PyFrame_New() that doesn't take locals, but does - take builtins without sanity checking them. - */ - assert(tstate != NULL); - f = PyFrame_New(tstate, co, globals, NULL); - if (f == NULL) { - return NULL; - } - fastlocals = f->f_localsplus; - for (i = 0; i < na; i++) { - Py_INCREF(*args); - fastlocals[i] = *args++; - } - result = PyEval_EvalFrameEx(f,0); - ++tstate->recursion_depth; - Py_DECREF(f); - --tstate->recursion_depth; - return result; -} -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs) { - PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); - PyObject *globals = PyFunction_GET_GLOBALS(func); - PyObject *argdefs = PyFunction_GET_DEFAULTS(func); - PyObject *closure; -#if PY_MAJOR_VERSION >= 3 - PyObject *kwdefs; -#endif - PyObject *kwtuple, **k; - PyObject **d; - Py_ssize_t nd; - Py_ssize_t nk; - PyObject *result; - assert(kwargs == NULL || PyDict_Check(kwargs)); - nk = kwargs ? PyDict_Size(kwargs) : 0; - if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { - return NULL; - } - if ( -#if PY_MAJOR_VERSION >= 3 - co->co_kwonlyargcount == 0 && -#endif - likely(kwargs == NULL || nk == 0) && - co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { - if (argdefs == NULL && co->co_argcount == nargs) { - result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); - goto done; - } - else if (nargs == 0 && argdefs != NULL - && co->co_argcount == Py_SIZE(argdefs)) { - /* function called with no arguments, but all parameters have - a default value: use default values as arguments .*/ - args = &PyTuple_GET_ITEM(argdefs, 0); - result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); - goto done; - } - } - if (kwargs != NULL) { - Py_ssize_t pos, i; - kwtuple = PyTuple_New(2 * nk); - if (kwtuple == NULL) { - result = NULL; - goto done; - } - k = &PyTuple_GET_ITEM(kwtuple, 0); - pos = i = 0; - while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { - Py_INCREF(k[i]); - Py_INCREF(k[i+1]); - i += 2; - } - nk = i / 2; - } - else { - kwtuple = NULL; - k = NULL; - } - closure = PyFunction_GET_CLOSURE(func); -#if PY_MAJOR_VERSION >= 3 - kwdefs = PyFunction_GET_KW_DEFAULTS(func); -#endif - if (argdefs != NULL) { - d = &PyTuple_GET_ITEM(argdefs, 0); - nd = Py_SIZE(argdefs); - } - else { - d = NULL; - nd = 0; - } -#if PY_MAJOR_VERSION >= 3 - result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, - args, nargs, - k, (int)nk, - d, (int)nd, kwdefs, closure); -#else - result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, - args, nargs, - k, (int)nk, - d, (int)nd, closure); -#endif - Py_XDECREF(kwtuple); -done: - Py_LeaveRecursiveCall(); - return result; -} -#endif -#endif - -/* PyObjectCall */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { - PyObject *result; - ternaryfunc call = func->ob_type->tp_call; - if (unlikely(!call)) - return PyObject_Call(func, arg, kw); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = (*call)(func, arg, kw); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCallMethO */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { - PyObject *self, *result; - PyCFunction cfunc; - cfunc = PyCFunction_GET_FUNCTION(func); - self = PyCFunction_GET_SELF(func); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = cfunc(self, arg); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCallOneArg */ -#if CYTHON_COMPILING_IN_CPYTHON -static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_New(1); - if (unlikely(!args)) return NULL; - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 0, arg); - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, &arg, 1); - } -#endif - if (likely(PyCFunction_Check(func))) { - if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { - return __Pyx_PyObject_CallMethO(func, arg); -#if CYTHON_FAST_PYCCALL - } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { - return __Pyx_PyCFunction_FastCall(func, &arg, 1); -#endif - } - } - return __Pyx__PyObject_CallOneArg(func, arg); -} -#else -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_Pack(1, arg); - if (unlikely(!args)) return NULL; - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -#endif - -/* PyObjectCallNoArg */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, NULL, 0); - } -#endif -#ifdef __Pyx_CyFunction_USED - if (likely(PyCFunction_Check(func) || __Pyx_TypeCheck(func, __pyx_CyFunctionType))) { -#else - if (likely(PyCFunction_Check(func))) { -#endif - if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { - return __Pyx_PyObject_CallMethO(func, NULL); - } - } - return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL); -} -#endif - -/* PyErrFetchRestore */ - #if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - tmp_type = tstate->curexc_type; - tmp_value = tstate->curexc_value; - tmp_tb = tstate->curexc_traceback; - tstate->curexc_type = type; - tstate->curexc_value = value; - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - *type = tstate->curexc_type; - *value = tstate->curexc_value; - *tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -} -#endif - -/* RaiseException */ - #if PY_MAJOR_VERSION < 3 -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, - CYTHON_UNUSED PyObject *cause) { - __Pyx_PyThreadState_declare - Py_XINCREF(type); - if (!value || value == Py_None) - value = NULL; - else - Py_INCREF(value); - if (!tb || tb == Py_None) - tb = NULL; - else { - Py_INCREF(tb); - if (!PyTraceBack_Check(tb)) { - PyErr_SetString(PyExc_TypeError, - "raise: arg 3 must be a traceback or None"); - goto raise_error; - } - } - if (PyType_Check(type)) { -#if CYTHON_COMPILING_IN_PYPY - if (!value) { - Py_INCREF(Py_None); - value = Py_None; - } -#endif - PyErr_NormalizeException(&type, &value, &tb); - } else { - if (value) { - PyErr_SetString(PyExc_TypeError, - "instance exception may not have a separate value"); - goto raise_error; - } - value = type; - type = (PyObject*) Py_TYPE(type); - Py_INCREF(type); - if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { - PyErr_SetString(PyExc_TypeError, - "raise: exception class must be a subclass of BaseException"); - goto raise_error; - } - } - __Pyx_PyThreadState_assign - __Pyx_ErrRestore(type, value, tb); - return; -raise_error: - Py_XDECREF(value); - Py_XDECREF(type); - Py_XDECREF(tb); - return; -} -#else -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { - PyObject* owned_instance = NULL; - if (tb == Py_None) { - tb = 0; - } else if (tb && !PyTraceBack_Check(tb)) { - PyErr_SetString(PyExc_TypeError, - "raise: arg 3 must be a traceback or None"); - goto bad; - } - if (value == Py_None) - value = 0; - if (PyExceptionInstance_Check(type)) { - if (value) { - PyErr_SetString(PyExc_TypeError, - "instance exception may not have a separate value"); - goto bad; - } - value = type; - type = (PyObject*) Py_TYPE(value); - } else if (PyExceptionClass_Check(type)) { - PyObject *instance_class = NULL; - if (value && PyExceptionInstance_Check(value)) { - instance_class = (PyObject*) Py_TYPE(value); - if (instance_class != type) { - int is_subclass = PyObject_IsSubclass(instance_class, type); - if (!is_subclass) { - instance_class = NULL; - } else if (unlikely(is_subclass == -1)) { - goto bad; - } else { - type = instance_class; - } - } - } - if (!instance_class) { - PyObject *args; - if (!value) - args = PyTuple_New(0); - else if (PyTuple_Check(value)) { - Py_INCREF(value); - args = value; - } else - args = PyTuple_Pack(1, value); - if (!args) - goto bad; - owned_instance = PyObject_Call(type, args, NULL); - Py_DECREF(args); - if (!owned_instance) - goto bad; - value = owned_instance; - if (!PyExceptionInstance_Check(value)) { - PyErr_Format(PyExc_TypeError, - "calling %R should have returned an instance of " - "BaseException, not %R", - type, Py_TYPE(value)); - goto bad; - } - } - } else { - PyErr_SetString(PyExc_TypeError, - "raise: exception class must be a subclass of BaseException"); - goto bad; - } - if (cause) { - PyObject *fixed_cause; - if (cause == Py_None) { - fixed_cause = NULL; - } else if (PyExceptionClass_Check(cause)) { - fixed_cause = PyObject_CallObject(cause, NULL); - if (fixed_cause == NULL) - goto bad; - } else if (PyExceptionInstance_Check(cause)) { - fixed_cause = cause; - Py_INCREF(fixed_cause); - } else { - PyErr_SetString(PyExc_TypeError, - "exception causes must derive from " - "BaseException"); - goto bad; - } - PyException_SetCause(value, fixed_cause); - } - PyErr_SetObject(type, value); - if (tb) { -#if CYTHON_COMPILING_IN_PYPY - PyObject *tmp_type, *tmp_value, *tmp_tb; - PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); - Py_INCREF(tb); - PyErr_Restore(tmp_type, tmp_value, tb); - Py_XDECREF(tmp_tb); -#else - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject* tmp_tb = tstate->curexc_traceback; - if (tb != tmp_tb) { - Py_INCREF(tb); - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_tb); - } -#endif - } -bad: - Py_XDECREF(owned_instance); - return; -} -#endif - -/* SaveResetException */ - #if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - #if PY_VERSION_HEX >= 0x030700A3 - *type = tstate->exc_state.exc_type; - *value = tstate->exc_state.exc_value; - *tb = tstate->exc_state.exc_traceback; - #else - *type = tstate->exc_type; - *value = tstate->exc_value; - *tb = tstate->exc_traceback; - #endif - Py_XINCREF(*type); - Py_XINCREF(*value); - Py_XINCREF(*tb); -} -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - #if PY_VERSION_HEX >= 0x030700A3 - tmp_type = tstate->exc_state.exc_type; - tmp_value = tstate->exc_state.exc_value; - tmp_tb = tstate->exc_state.exc_traceback; - tstate->exc_state.exc_type = type; - tstate->exc_state.exc_value = value; - tstate->exc_state.exc_traceback = tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = type; - tstate->exc_value = value; - tstate->exc_traceback = tb; - #endif - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} -#endif - -/* GetException */ - #if CYTHON_FAST_THREAD_STATE -static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { -#else -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) { -#endif - PyObject *local_type, *local_value, *local_tb; -#if CYTHON_FAST_THREAD_STATE - PyObject *tmp_type, *tmp_value, *tmp_tb; - local_type = tstate->curexc_type; - local_value = tstate->curexc_value; - local_tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -#else - PyErr_Fetch(&local_type, &local_value, &local_tb); -#endif - PyErr_NormalizeException(&local_type, &local_value, &local_tb); -#if CYTHON_FAST_THREAD_STATE - if (unlikely(tstate->curexc_type)) -#else - if (unlikely(PyErr_Occurred())) -#endif - goto bad; - #if PY_MAJOR_VERSION >= 3 - if (local_tb) { - if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) - goto bad; - } - #endif - Py_XINCREF(local_tb); - Py_XINCREF(local_type); - Py_XINCREF(local_value); - *type = local_type; - *value = local_value; - *tb = local_tb; -#if CYTHON_FAST_THREAD_STATE - #if PY_VERSION_HEX >= 0x030700A3 - tmp_type = tstate->exc_state.exc_type; - tmp_value = tstate->exc_state.exc_value; - tmp_tb = tstate->exc_state.exc_traceback; - tstate->exc_state.exc_type = local_type; - tstate->exc_state.exc_value = local_value; - tstate->exc_state.exc_traceback = local_tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = local_type; - tstate->exc_value = local_value; - tstate->exc_traceback = local_tb; - #endif - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -#else - PyErr_SetExcInfo(local_type, local_value, local_tb); -#endif - return 0; -bad: - *type = 0; - *value = 0; - *tb = 0; - Py_XDECREF(local_type); - Py_XDECREF(local_value); - Py_XDECREF(local_tb); - return -1; -} - -/* KeywordStringCheck */ - static int __Pyx_CheckKeywordStrings( - PyObject *kwdict, - const char* function_name, - int kw_allowed) -{ - PyObject* key = 0; - Py_ssize_t pos = 0; -#if CYTHON_COMPILING_IN_PYPY - if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0)) - goto invalid_keyword; - return 1; -#else - while (PyDict_Next(kwdict, &pos, &key, 0)) { - #if PY_MAJOR_VERSION < 3 - if (unlikely(!PyString_Check(key))) - #endif - if (unlikely(!PyUnicode_Check(key))) - goto invalid_keyword_type; - } - if ((!kw_allowed) && unlikely(key)) - goto invalid_keyword; - return 1; -invalid_keyword_type: - PyErr_Format(PyExc_TypeError, - "%.200s() keywords must be strings", function_name); - return 0; -#endif -invalid_keyword: - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION < 3 - "%.200s() got an unexpected keyword argument '%.200s'", - function_name, PyString_AsString(key)); - #else - "%s() got an unexpected keyword argument '%U'", - function_name, key); - #endif - return 0; -} - -/* SwapException */ - #if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - #if PY_VERSION_HEX >= 0x030700A3 - tmp_type = tstate->exc_state.exc_type; - tmp_value = tstate->exc_state.exc_value; - tmp_tb = tstate->exc_state.exc_traceback; - tstate->exc_state.exc_type = *type; - tstate->exc_state.exc_value = *value; - tstate->exc_state.exc_traceback = *tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = *type; - tstate->exc_value = *value; - tstate->exc_traceback = *tb; - #endif - *type = tmp_type; - *value = tmp_value; - *tb = tmp_tb; -} -#else -static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); - PyErr_SetExcInfo(*type, *value, *tb); - *type = tmp_type; - *value = tmp_value; - *tb = tmp_tb; -} -#endif - -/* PyObjectCallMethod1 */ - static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) { - PyObject *result = NULL; -#if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(method))) { - PyObject *self = PyMethod_GET_SELF(method); - if (likely(self)) { - PyObject *args; - PyObject *function = PyMethod_GET_FUNCTION(method); - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(function)) { - PyObject *args[2] = {self, arg}; - result = __Pyx_PyFunction_FastCall(function, args, 2); - goto done; - } - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(function)) { - PyObject *args[2] = {self, arg}; - result = __Pyx_PyCFunction_FastCall(function, args, 2); - goto done; - } - #endif - args = PyTuple_New(2); - if (unlikely(!args)) goto done; - Py_INCREF(self); - PyTuple_SET_ITEM(args, 0, self); - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 1, arg); - Py_INCREF(function); - result = __Pyx_PyObject_Call(function, args, NULL); - Py_DECREF(args); - Py_DECREF(function); - return result; - } - } -#endif - result = __Pyx_PyObject_CallOneArg(method, arg); - goto done; -done: - return result; -} -static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { - PyObject *method, *result; - method = __Pyx_PyObject_GetAttrStr(obj, method_name); - if (unlikely(!method)) return NULL; - result = __Pyx__PyObject_CallMethod1(method, arg); - Py_DECREF(method); - return result; -} - -/* pop_index */ - static PyObject* __Pyx__PyObject_PopNewIndex(PyObject* L, PyObject* py_ix) { - PyObject *r; - if (unlikely(!py_ix)) return NULL; - r = __Pyx__PyObject_PopIndex(L, py_ix); - Py_DECREF(py_ix); - return r; -} -static PyObject* __Pyx__PyObject_PopIndex(PyObject* L, PyObject* py_ix) { - return __Pyx_PyObject_CallMethod1(L, __pyx_n_s_pop, py_ix); -} -#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS -static PyObject* __Pyx__PyList_PopIndex(PyObject* L, PyObject* py_ix, Py_ssize_t ix) { - Py_ssize_t size = PyList_GET_SIZE(L); - if (likely(size > (((PyListObject*)L)->allocated >> 1))) { - Py_ssize_t cix = ix; - if (cix < 0) { - cix += size; - } - if (likely(0 <= cix && cix < size)) { - PyObject* v = PyList_GET_ITEM(L, cix); - Py_SIZE(L) -= 1; - size -= 1; - memmove(&PyList_GET_ITEM(L, cix), &PyList_GET_ITEM(L, cix+1), (size_t)(size-cix)*sizeof(PyObject*)); - return v; - } - } - if (py_ix == Py_None) { - return __Pyx__PyObject_PopNewIndex(L, PyInt_FromSsize_t(ix)); - } else { - return __Pyx__PyObject_PopIndex(L, py_ix); - } -} -#endif - -/* PyObject_GenericGetAttrNoDict */ - #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { - PyErr_Format(PyExc_AttributeError, -#if PY_MAJOR_VERSION >= 3 - "'%.50s' object has no attribute '%U'", - tp->tp_name, attr_name); -#else - "'%.50s' object has no attribute '%.400s'", - tp->tp_name, PyString_AS_STRING(attr_name)); -#endif - return NULL; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { - PyObject *descr; - PyTypeObject *tp = Py_TYPE(obj); - if (unlikely(!PyString_Check(attr_name))) { - return PyObject_GenericGetAttr(obj, attr_name); - } - assert(!tp->tp_dictoffset); - descr = _PyType_Lookup(tp, attr_name); - if (unlikely(!descr)) { - return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); - } - Py_INCREF(descr); - #if PY_MAJOR_VERSION < 3 - if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) - #endif - { - descrgetfunc f = Py_TYPE(descr)->tp_descr_get; - if (unlikely(f)) { - PyObject *res = f(descr, obj, (PyObject *)tp); - Py_DECREF(descr); - return res; - } - } - return descr; -} -#endif - -/* PyObject_GenericGetAttr */ - #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) { - if (unlikely(Py_TYPE(obj)->tp_dictoffset)) { - return PyObject_GenericGetAttr(obj, attr_name); - } - return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name); -} -#endif - -/* SetVTable */ - static int __Pyx_SetVtable(PyObject *dict, void *vtable) { -#if PY_VERSION_HEX >= 0x02070000 - PyObject *ob = PyCapsule_New(vtable, 0, 0); -#else - PyObject *ob = PyCObject_FromVoidPtr(vtable, 0); -#endif - if (!ob) - goto bad; - if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0) - goto bad; - Py_DECREF(ob); - return 0; -bad: - Py_XDECREF(ob); - return -1; -} - -/* GetVTable */ - static void* __Pyx_GetVtable(PyObject *dict) { - void* ptr; - PyObject *ob = PyObject_GetItem(dict, __pyx_n_s_pyx_vtable); - if (!ob) - goto bad; -#if PY_VERSION_HEX >= 0x02070000 - ptr = PyCapsule_GetPointer(ob, 0); -#else - ptr = PyCObject_AsVoidPtr(ob); -#endif - if (!ptr && !PyErr_Occurred()) - PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type"); - Py_DECREF(ob); - return ptr; -bad: - Py_XDECREF(ob); - return NULL; -} - -/* Import */ - static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { - PyObject *empty_list = 0; - PyObject *module = 0; - PyObject *global_dict = 0; - PyObject *empty_dict = 0; - PyObject *list; - #if PY_MAJOR_VERSION < 3 - PyObject *py_import; - py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); - if (!py_import) - goto bad; - #endif - if (from_list) - list = from_list; - else { - empty_list = PyList_New(0); - if (!empty_list) - goto bad; - list = empty_list; - } - global_dict = PyModule_GetDict(__pyx_m); - if (!global_dict) - goto bad; - empty_dict = PyDict_New(); - if (!empty_dict) - goto bad; - { - #if PY_MAJOR_VERSION >= 3 - if (level == -1) { - if (strchr(__Pyx_MODULE_NAME, '.')) { - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, 1); - if (!module) { - if (!PyErr_ExceptionMatches(PyExc_ImportError)) - goto bad; - PyErr_Clear(); - } - } - level = 0; - } - #endif - if (!module) { - #if PY_MAJOR_VERSION < 3 - PyObject *py_level = PyInt_FromLong(level); - if (!py_level) - goto bad; - module = PyObject_CallFunctionObjArgs(py_import, - name, global_dict, empty_dict, list, py_level, NULL); - Py_DECREF(py_level); - #else - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, level); - #endif - } - } -bad: - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(py_import); - #endif - Py_XDECREF(empty_list); - Py_XDECREF(empty_dict); - return module; -} - -/* ImportFrom */ - static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { - PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); - if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Format(PyExc_ImportError, - #if PY_MAJOR_VERSION < 3 - "cannot import name %.230s", PyString_AS_STRING(name)); - #else - "cannot import name %S", name); - #endif - } - return value; -} - -/* FetchCommonType */ - static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { - PyObject* fake_module; - PyTypeObject* cached_type = NULL; - fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI); - if (!fake_module) return NULL; - Py_INCREF(fake_module); - cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name); - if (cached_type) { - if (!PyType_Check((PyObject*)cached_type)) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s is not a type object", - type->tp_name); - goto bad; - } - if (cached_type->tp_basicsize != type->tp_basicsize) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s has the wrong size, try recompiling", - type->tp_name); - goto bad; - } - } else { - if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; - PyErr_Clear(); - if (PyType_Ready(type) < 0) goto bad; - if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0) - goto bad; - Py_INCREF(type); - cached_type = type; - } -done: - Py_DECREF(fake_module); - return cached_type; -bad: - Py_XDECREF(cached_type); - cached_type = NULL; - goto done; -} - -/* CythonFunction */ - #include <structmember.h> -static PyObject * -__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure) -{ - if (unlikely(op->func_doc == NULL)) { - if (op->func.m_ml->ml_doc) { -#if PY_MAJOR_VERSION >= 3 - op->func_doc = PyUnicode_FromString(op->func.m_ml->ml_doc); -#else - op->func_doc = PyString_FromString(op->func.m_ml->ml_doc); -#endif - if (unlikely(op->func_doc == NULL)) - return NULL; - } else { - Py_INCREF(Py_None); - return Py_None; - } - } - Py_INCREF(op->func_doc); - return op->func_doc; -} -static int -__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp = op->func_doc; - if (value == NULL) { - value = Py_None; - } - Py_INCREF(value); - op->func_doc = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op) -{ - if (unlikely(op->func_name == NULL)) { -#if PY_MAJOR_VERSION >= 3 - op->func_name = PyUnicode_InternFromString(op->func.m_ml->ml_name); -#else - op->func_name = PyString_InternFromString(op->func.m_ml->ml_name); -#endif - if (unlikely(op->func_name == NULL)) - return NULL; - } - Py_INCREF(op->func_name); - return op->func_name; -} -static int -__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; -#if PY_MAJOR_VERSION >= 3 - if (unlikely(value == NULL || !PyUnicode_Check(value))) { -#else - if (unlikely(value == NULL || !PyString_Check(value))) { -#endif - PyErr_SetString(PyExc_TypeError, - "__name__ must be set to a string object"); - return -1; - } - tmp = op->func_name; - Py_INCREF(value); - op->func_name = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op) -{ - Py_INCREF(op->func_qualname); - return op->func_qualname; -} -static int -__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; -#if PY_MAJOR_VERSION >= 3 - if (unlikely(value == NULL || !PyUnicode_Check(value))) { -#else - if (unlikely(value == NULL || !PyString_Check(value))) { -#endif - PyErr_SetString(PyExc_TypeError, - "__qualname__ must be set to a string object"); - return -1; - } - tmp = op->func_qualname; - Py_INCREF(value); - op->func_qualname = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure) -{ - PyObject *self; - self = m->func_closure; - if (self == NULL) - self = Py_None; - Py_INCREF(self); - return self; -} -static PyObject * -__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op) -{ - if (unlikely(op->func_dict == NULL)) { - op->func_dict = PyDict_New(); - if (unlikely(op->func_dict == NULL)) - return NULL; - } - Py_INCREF(op->func_dict); - return op->func_dict; -} -static int -__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; - if (unlikely(value == NULL)) { - PyErr_SetString(PyExc_TypeError, - "function's dictionary may not be deleted"); - return -1; - } - if (unlikely(!PyDict_Check(value))) { - PyErr_SetString(PyExc_TypeError, - "setting function's dictionary to a non-dict"); - return -1; - } - tmp = op->func_dict; - Py_INCREF(value); - op->func_dict = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op) -{ - Py_INCREF(op->func_globals); - return op->func_globals; -} -static PyObject * -__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op) -{ - Py_INCREF(Py_None); - return Py_None; -} -static PyObject * -__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op) -{ - PyObject* result = (op->func_code) ? op->func_code : Py_None; - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { - int result = 0; - PyObject *res = op->defaults_getter((PyObject *) op); - if (unlikely(!res)) - return -1; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - op->defaults_tuple = PyTuple_GET_ITEM(res, 0); - Py_INCREF(op->defaults_tuple); - op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); - Py_INCREF(op->defaults_kwdict); - #else - op->defaults_tuple = PySequence_ITEM(res, 0); - if (unlikely(!op->defaults_tuple)) result = -1; - else { - op->defaults_kwdict = PySequence_ITEM(res, 1); - if (unlikely(!op->defaults_kwdict)) result = -1; - } - #endif - Py_DECREF(res); - return result; -} -static int -__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value) { - value = Py_None; - } else if (value != Py_None && !PyTuple_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__defaults__ must be set to a tuple object"); - return -1; - } - Py_INCREF(value); - tmp = op->defaults_tuple; - op->defaults_tuple = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) { - PyObject* result = op->defaults_tuple; - if (unlikely(!result)) { - if (op->defaults_getter) { - if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; - result = op->defaults_tuple; - } else { - result = Py_None; - } - } - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value) { - value = Py_None; - } else if (value != Py_None && !PyDict_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__kwdefaults__ must be set to a dict object"); - return -1; - } - Py_INCREF(value); - tmp = op->defaults_kwdict; - op->defaults_kwdict = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) { - PyObject* result = op->defaults_kwdict; - if (unlikely(!result)) { - if (op->defaults_getter) { - if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; - result = op->defaults_kwdict; - } else { - result = Py_None; - } - } - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value || value == Py_None) { - value = NULL; - } else if (!PyDict_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__annotations__ must be set to a dict object"); - return -1; - } - Py_XINCREF(value); - tmp = op->func_annotations; - op->func_annotations = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op) { - PyObject* result = op->func_annotations; - if (unlikely(!result)) { - result = PyDict_New(); - if (unlikely(!result)) return NULL; - op->func_annotations = result; - } - Py_INCREF(result); - return result; -} -static PyGetSetDef __pyx_CyFunction_getsets[] = { - {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, - {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, - {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, - {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, - {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, - {(char *) "__self__", (getter)__Pyx_CyFunction_get_self, 0, 0, 0}, - {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, - {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, - {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, - {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, - {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, - {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, - {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, - {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, - {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, - {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, - {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, - {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, - {0, 0, 0, 0, 0} -}; -static PyMemberDef __pyx_CyFunction_members[] = { - {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), PY_WRITE_RESTRICTED, 0}, - {0, 0, 0, 0, 0} -}; -static PyObject * -__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args) -{ -#if PY_MAJOR_VERSION >= 3 - return PyUnicode_FromString(m->func.m_ml->ml_name); -#else - return PyString_FromString(m->func.m_ml->ml_name); -#endif -} -static PyMethodDef __pyx_CyFunction_methods[] = { - {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, - {0, 0, 0, 0} -}; -#if PY_VERSION_HEX < 0x030500A0 -#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) -#else -#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func.m_weakreflist) -#endif -static PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *ml, int flags, PyObject* qualname, - PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { - __pyx_CyFunctionObject *op = PyObject_GC_New(__pyx_CyFunctionObject, type); - if (op == NULL) - return NULL; - op->flags = flags; - __Pyx_CyFunction_weakreflist(op) = NULL; - op->func.m_ml = ml; - op->func.m_self = (PyObject *) op; - Py_XINCREF(closure); - op->func_closure = closure; - Py_XINCREF(module); - op->func.m_module = module; - op->func_dict = NULL; - op->func_name = NULL; - Py_INCREF(qualname); - op->func_qualname = qualname; - op->func_doc = NULL; - op->func_classobj = NULL; - op->func_globals = globals; - Py_INCREF(op->func_globals); - Py_XINCREF(code); - op->func_code = code; - op->defaults_pyobjects = 0; - op->defaults = NULL; - op->defaults_tuple = NULL; - op->defaults_kwdict = NULL; - op->defaults_getter = NULL; - op->func_annotations = NULL; - PyObject_GC_Track(op); - return (PyObject *) op; -} -static int -__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) -{ - Py_CLEAR(m->func_closure); - Py_CLEAR(m->func.m_module); - Py_CLEAR(m->func_dict); - Py_CLEAR(m->func_name); - Py_CLEAR(m->func_qualname); - Py_CLEAR(m->func_doc); - Py_CLEAR(m->func_globals); - Py_CLEAR(m->func_code); - Py_CLEAR(m->func_classobj); - Py_CLEAR(m->defaults_tuple); - Py_CLEAR(m->defaults_kwdict); - Py_CLEAR(m->func_annotations); - if (m->defaults) { - PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); - int i; - for (i = 0; i < m->defaults_pyobjects; i++) - Py_XDECREF(pydefaults[i]); - PyObject_Free(m->defaults); - m->defaults = NULL; - } - return 0; -} -static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) -{ - if (__Pyx_CyFunction_weakreflist(m) != NULL) - PyObject_ClearWeakRefs((PyObject *) m); - __Pyx_CyFunction_clear(m); - PyObject_GC_Del(m); -} -static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) -{ - PyObject_GC_UnTrack(m); - __Pyx__CyFunction_dealloc(m); -} -static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) -{ - Py_VISIT(m->func_closure); - Py_VISIT(m->func.m_module); - Py_VISIT(m->func_dict); - Py_VISIT(m->func_name); - Py_VISIT(m->func_qualname); - Py_VISIT(m->func_doc); - Py_VISIT(m->func_globals); - Py_VISIT(m->func_code); - Py_VISIT(m->func_classobj); - Py_VISIT(m->defaults_tuple); - Py_VISIT(m->defaults_kwdict); - if (m->defaults) { - PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); - int i; - for (i = 0; i < m->defaults_pyobjects; i++) - Py_VISIT(pydefaults[i]); - } - return 0; -} -static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type) -{ - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) { - Py_INCREF(func); - return func; - } - if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) { - if (type == NULL) - type = (PyObject *)(Py_TYPE(obj)); - return __Pyx_PyMethod_New(func, type, (PyObject *)(Py_TYPE(type))); - } - if (obj == Py_None) - obj = NULL; - return __Pyx_PyMethod_New(func, obj, type); -} -static PyObject* -__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) -{ -#if PY_MAJOR_VERSION >= 3 - return PyUnicode_FromFormat("<cyfunction %U at %p>", - op->func_qualname, (void *)op); -#else - return PyString_FromFormat("<cyfunction %s at %p>", - PyString_AsString(op->func_qualname), (void *)op); -#endif -} -static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { - PyCFunctionObject* f = (PyCFunctionObject*)func; - PyCFunction meth = f->m_ml->ml_meth; - Py_ssize_t size; - switch (f->m_ml->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { - case METH_VARARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) - return (*meth)(self, arg); - break; - case METH_VARARGS | METH_KEYWORDS: - return (*(PyCFunctionWithKeywords)meth)(self, arg, kw); - case METH_NOARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { - size = PyTuple_GET_SIZE(arg); - if (likely(size == 0)) - return (*meth)(self, NULL); - PyErr_Format(PyExc_TypeError, - "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", - f->m_ml->ml_name, size); - return NULL; - } - break; - case METH_O: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { - size = PyTuple_GET_SIZE(arg); - if (likely(size == 1)) { - PyObject *result, *arg0; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - arg0 = PyTuple_GET_ITEM(arg, 0); - #else - arg0 = PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; - #endif - result = (*meth)(self, arg0); - #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) - Py_DECREF(arg0); - #endif - return result; - } - PyErr_Format(PyExc_TypeError, - "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", - f->m_ml->ml_name, size); - return NULL; - } - break; - default: - PyErr_SetString(PyExc_SystemError, "Bad call flags in " - "__Pyx_CyFunction_Call. METH_OLDARGS is no " - "longer supported!"); - return NULL; - } - PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", - f->m_ml->ml_name); - return NULL; -} -static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { - return __Pyx_CyFunction_CallMethod(func, ((PyCFunctionObject*)func)->m_self, arg, kw); -} -static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { - PyObject *result; - __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; - if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { - Py_ssize_t argc; - PyObject *new_args; - PyObject *self; - argc = PyTuple_GET_SIZE(args); - new_args = PyTuple_GetSlice(args, 1, argc); - if (unlikely(!new_args)) - return NULL; - self = PyTuple_GetItem(args, 0); - if (unlikely(!self)) { - Py_DECREF(new_args); - return NULL; - } - result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); - Py_DECREF(new_args); - } else { - result = __Pyx_CyFunction_Call(func, args, kw); - } - return result; -} -static PyTypeObject __pyx_CyFunctionType_type = { - PyVarObject_HEAD_INIT(0, 0) - "cython_function_or_method", - sizeof(__pyx_CyFunctionObject), - 0, - (destructor) __Pyx_CyFunction_dealloc, - 0, - 0, - 0, -#if PY_MAJOR_VERSION < 3 - 0, -#else - 0, -#endif - (reprfunc) __Pyx_CyFunction_repr, - 0, - 0, - 0, - 0, - __Pyx_CyFunction_CallAsMethod, - 0, - 0, - 0, - 0, - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, - 0, - (traverseproc) __Pyx_CyFunction_traverse, - (inquiry) __Pyx_CyFunction_clear, - 0, -#if PY_VERSION_HEX < 0x030500A0 - offsetof(__pyx_CyFunctionObject, func_weakreflist), -#else - offsetof(PyCFunctionObject, m_weakreflist), -#endif - 0, - 0, - __pyx_CyFunction_methods, - __pyx_CyFunction_members, - __pyx_CyFunction_getsets, - 0, - 0, - __Pyx_CyFunction_descr_get, - 0, - offsetof(__pyx_CyFunctionObject, func_dict), - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, -#if PY_VERSION_HEX >= 0x030400a1 - 0, -#endif -}; -static int __pyx_CyFunction_init(void) { - __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); - if (unlikely(__pyx_CyFunctionType == NULL)) { - return -1; - } - return 0; -} -static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults = PyObject_Malloc(size); - if (unlikely(!m->defaults)) - return PyErr_NoMemory(); - memset(m->defaults, 0, size); - m->defaults_pyobjects = pyobjects; - return m->defaults; -} -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults_tuple = tuple; - Py_INCREF(tuple); -} -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults_kwdict = dict; - Py_INCREF(dict); -} -static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->func_annotations = dict; - Py_INCREF(dict); -} - -/* GetModuleGlobalName */ - static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { - PyObject *result; -#if !CYTHON_AVOID_BORROWED_REFS -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 - result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); - if (likely(result)) { - Py_INCREF(result); - } else if (unlikely(PyErr_Occurred())) { - result = NULL; - } else { -#else - result = PyDict_GetItem(__pyx_d, name); - if (likely(result)) { - Py_INCREF(result); - } else { -#endif -#else - result = PyObject_GetItem(__pyx_d, name); - if (!result) { - PyErr_Clear(); -#endif - result = __Pyx_GetBuiltinName(name); - } - return result; -} - -/* GetAttr */ - static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) { -#if CYTHON_USE_TYPE_SLOTS -#if PY_MAJOR_VERSION >= 3 - if (likely(PyUnicode_Check(n))) -#else - if (likely(PyString_Check(n))) -#endif - return __Pyx_PyObject_GetAttrStr(o, n); -#endif - return PyObject_GetAttr(o, n); -} - -/* Globals */ - static PyObject* __Pyx_Globals(void) { - Py_ssize_t i; - PyObject *names; - PyObject *globals = __pyx_d; - Py_INCREF(globals); - names = PyObject_Dir(__pyx_m); - if (!names) - goto bad; - for (i = PyList_GET_SIZE(names)-1; i >= 0; i--) { -#if CYTHON_COMPILING_IN_PYPY - PyObject* name = PySequence_ITEM(names, i); - if (!name) - goto bad; -#else - PyObject* name = PyList_GET_ITEM(names, i); -#endif - if (!PyDict_Contains(globals, name)) { - PyObject* value = __Pyx_GetAttr(__pyx_m, name); - if (!value) { -#if CYTHON_COMPILING_IN_PYPY - Py_DECREF(name); -#endif - goto bad; - } - if (PyDict_SetItem(globals, name, value) < 0) { -#if CYTHON_COMPILING_IN_PYPY - Py_DECREF(name); -#endif - Py_DECREF(value); - goto bad; - } - } -#if CYTHON_COMPILING_IN_PYPY - Py_DECREF(name); -#endif - } - Py_DECREF(names); - return globals; -bad: - Py_XDECREF(names); - Py_XDECREF(globals); - return NULL; -} - -/* CLineInTraceback */ - #ifndef CYTHON_CLINE_IN_TRACEBACK -static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) { - PyObject *use_cline; - PyObject *ptype, *pvalue, *ptraceback; -#if CYTHON_COMPILING_IN_CPYTHON - PyObject **cython_runtime_dict; -#endif - if (unlikely(!__pyx_cython_runtime)) { - return c_line; - } - __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); -#if CYTHON_COMPILING_IN_CPYTHON - cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); - if (likely(cython_runtime_dict)) { - use_cline = __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback); - } else -#endif - { - PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); - if (use_cline_obj) { - use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; - Py_DECREF(use_cline_obj); - } else { - PyErr_Clear(); - use_cline = NULL; - } - } - if (!use_cline) { - c_line = 0; - PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); - } - else if (PyObject_Not(use_cline) != 0) { - c_line = 0; - } - __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); - return c_line; -} -#endif - -/* CodeObjectCache */ - static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { - int start = 0, mid = 0, end = count - 1; - if (end >= 0 && code_line > entries[end].code_line) { - return count; - } - while (start < end) { - mid = start + (end - start) / 2; - if (code_line < entries[mid].code_line) { - end = mid; - } else if (code_line > entries[mid].code_line) { - start = mid + 1; - } else { - return mid; - } - } - if (code_line <= entries[mid].code_line) { - return mid; - } else { - return mid + 1; - } -} -static PyCodeObject *__pyx_find_code_object(int code_line) { - PyCodeObject* code_object; - int pos; - if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { - return NULL; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { - return NULL; - } - code_object = __pyx_code_cache.entries[pos].code_object; - Py_INCREF(code_object); - return code_object; -} -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { - int pos, i; - __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; - if (unlikely(!code_line)) { - return; - } - if (unlikely(!entries)) { - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); - if (likely(entries)) { - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = 64; - __pyx_code_cache.count = 1; - entries[0].code_line = code_line; - entries[0].code_object = code_object; - Py_INCREF(code_object); - } - return; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { - PyCodeObject* tmp = entries[pos].code_object; - entries[pos].code_object = code_object; - Py_DECREF(tmp); - return; - } - if (__pyx_code_cache.count == __pyx_code_cache.max_count) { - int new_max = __pyx_code_cache.max_count + 64; - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( - __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry)); - if (unlikely(!entries)) { - return; - } - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = new_max; - } - for (i=__pyx_code_cache.count; i>pos; i--) { - entries[i] = entries[i-1]; - } - entries[pos].code_line = code_line; - entries[pos].code_object = code_object; - __pyx_code_cache.count++; - Py_INCREF(code_object); -} - -/* AddTraceback */ - #include "compile.h" -#include "frameobject.h" -#include "traceback.h" -static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( - const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyObject *py_srcfile = 0; - PyObject *py_funcname = 0; - #if PY_MAJOR_VERSION < 3 - py_srcfile = PyString_FromString(filename); - #else - py_srcfile = PyUnicode_FromString(filename); - #endif - if (!py_srcfile) goto bad; - if (c_line) { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #else - py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #endif - } - else { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromString(funcname); - #else - py_funcname = PyUnicode_FromString(funcname); - #endif - } - if (!py_funcname) goto bad; - py_code = __Pyx_PyCode_New( - 0, - 0, - 0, - 0, - 0, - __pyx_empty_bytes, /*PyObject *code,*/ - __pyx_empty_tuple, /*PyObject *consts,*/ - __pyx_empty_tuple, /*PyObject *names,*/ - __pyx_empty_tuple, /*PyObject *varnames,*/ - __pyx_empty_tuple, /*PyObject *freevars,*/ - __pyx_empty_tuple, /*PyObject *cellvars,*/ - py_srcfile, /*PyObject *filename,*/ - py_funcname, /*PyObject *name,*/ - py_line, - __pyx_empty_bytes /*PyObject *lnotab*/ - ); - Py_DECREF(py_srcfile); - Py_DECREF(py_funcname); - return py_code; -bad: - Py_XDECREF(py_srcfile); - Py_XDECREF(py_funcname); - return NULL; -} -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyFrameObject *py_frame = 0; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - if (c_line) { - c_line = __Pyx_CLineForTraceback(tstate, c_line); - } - py_code = __pyx_find_code_object(c_line ? -c_line : py_line); - if (!py_code) { - py_code = __Pyx_CreateCodeObjectForTraceback( - funcname, c_line, py_line, filename); - if (!py_code) goto bad; - __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); - } - py_frame = PyFrame_New( - tstate, /*PyThreadState *tstate,*/ - py_code, /*PyCodeObject *code,*/ - __pyx_d, /*PyObject *globals,*/ - 0 /*PyObject *locals*/ - ); - if (!py_frame) goto bad; - __Pyx_PyFrame_SetLineNumber(py_frame, py_line); - PyTraceBack_Here(py_frame); -bad: - Py_XDECREF(py_code); - Py_XDECREF(py_frame); -} - -/* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { - const long neg_one = (long) -1, const_zero = (long) 0; - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(long) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(long) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -#endif - } - } else { - if (sizeof(long) <= sizeof(long)) { - return PyInt_FromLong((long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); -#endif - } - } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; - return _PyLong_FromByteArray(bytes, sizeof(long), - little, !is_unsigned); - } -} - -/* CIntFromPyVerify */ - #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) -#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) -#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ - {\ - func_type value = func_value;\ - if (sizeof(target_type) < sizeof(func_type)) {\ - if (unlikely(value != (func_type) (target_type) value)) {\ - func_type zero = 0;\ - if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ - return (target_type) -1;\ - if (is_unsigned && unlikely(value < zero))\ - goto raise_neg_overflow;\ - else\ - goto raise_overflow;\ - }\ - }\ - return (target_type) value;\ - } - -/* CIntFromPy */ - static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { - const long neg_one = (long) -1, const_zero = (long) 0; - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(long) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (long) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { - return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { - return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { - return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (long) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(long) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) - case -2: - if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - } -#endif - if (sizeof(long) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - long val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (long) -1; - } - } else { - long val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (long) -1; - val = __Pyx_PyInt_As_long(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to long"); - return (long) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to long"); - return (long) -1; -} - -/* CIntFromPy */ - static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { - const int neg_one = (int) -1, const_zero = (int) 0; - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(int) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (int) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (int) 0; - case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { - return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { - return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { - return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (int) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(int) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (int) 0; - case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) - case -2: - if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - } -#endif - if (sizeof(int) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - int val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (int) -1; - } - } else { - int val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (int) -1; - val = __Pyx_PyInt_As_int(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to int"); - return (int) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to int"); - return (int) -1; -} - -/* FastTypeChecks */ - #if CYTHON_COMPILING_IN_CPYTHON -static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { - while (a) { - a = a->tp_base; - if (a == b) - return 1; - } - return b == &PyBaseObject_Type; -} -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { - PyObject *mro; - if (a == b) return 1; - mro = a->tp_mro; - if (likely(mro)) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(mro); - for (i = 0; i < n; i++) { - if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) - return 1; - } - return 0; - } - return __Pyx_InBases(a, b); -} -#if PY_MAJOR_VERSION == 2 -static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { - PyObject *exception, *value, *tb; - int res; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&exception, &value, &tb); - res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - if (!res) { - res = PyObject_IsSubclass(err, exc_type2); - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - } - __Pyx_ErrRestore(exception, value, tb); - return res; -} -#else -static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { - int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0; - if (!res) { - res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); - } - return res; -} -#endif -static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - assert(PyExceptionClass_Check(exc_type)); - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; i<n; i++) { - if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1; - } -#endif - for (i=0; i<n; i++) { - PyObject *t = PyTuple_GET_ITEM(tuple, i); - #if PY_MAJOR_VERSION < 3 - if (likely(exc_type == t)) return 1; - #endif - if (likely(PyExceptionClass_Check(t))) { - if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1; - } else { - } - } - return 0; -} -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) { - if (likely(err == exc_type)) return 1; - if (likely(PyExceptionClass_Check(err))) { - if (likely(PyExceptionClass_Check(exc_type))) { - return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type); - } else if (likely(PyTuple_Check(exc_type))) { - return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type); - } else { - } - } - return PyErr_GivenExceptionMatches(err, exc_type); -} -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) { - assert(PyExceptionClass_Check(exc_type1)); - assert(PyExceptionClass_Check(exc_type2)); - if (likely(err == exc_type1 || err == exc_type2)) return 1; - if (likely(PyExceptionClass_Check(err))) { - return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2); - } - return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2)); -} -#endif - -/* CheckBinaryVersion */ - static int __Pyx_check_binary_version(void) { - char ctversion[4], rtversion[4]; - PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); - PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); - if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) { - char message[200]; - PyOS_snprintf(message, sizeof(message), - "compiletime version %s of module '%.100s' " - "does not match runtime version %s", - ctversion, __Pyx_MODULE_NAME, rtversion); - return PyErr_WarnEx(NULL, message, 1); - } - return 0; -} - -/* PyObjectSetAttrStr */ - #if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_setattro)) - return tp->tp_setattro(obj, attr_name, value); -#if PY_MAJOR_VERSION < 3 - if (likely(tp->tp_setattr)) - return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value); -#endif - return PyObject_SetAttr(obj, attr_name, value); -} -#endif - -/* VoidPtrExport */ - static int __Pyx_ExportVoidPtr(PyObject *name, void *p, const char *sig) { - PyObject *d; - PyObject *cobj = 0; - d = PyDict_GetItem(__pyx_d, __pyx_n_s_pyx_capi); - Py_XINCREF(d); - if (!d) { - d = PyDict_New(); - if (!d) - goto bad; - if (__Pyx_PyObject_SetAttrStr(__pyx_m, __pyx_n_s_pyx_capi, d) < 0) - goto bad; - } -#if PY_VERSION_HEX >= 0x02070000 - cobj = PyCapsule_New(p, sig, 0); -#else - cobj = PyCObject_FromVoidPtrAndDesc(p, (void *)sig, 0); -#endif - if (!cobj) - goto bad; - if (PyDict_SetItem(d, name, cobj) < 0) - goto bad; - Py_DECREF(cobj); - Py_DECREF(d); - return 0; -bad: - Py_XDECREF(cobj); - Py_XDECREF(d); - return -1; -} - -/* ModuleImport */ - #ifndef __PYX_HAVE_RT_ImportModule -#define __PYX_HAVE_RT_ImportModule -static PyObject *__Pyx_ImportModule(const char *name) { - PyObject *py_name = 0; - PyObject *py_module = 0; - py_name = __Pyx_PyIdentifier_FromString(name); - if (!py_name) - goto bad; - py_module = PyImport_Import(py_name); - Py_DECREF(py_name); - return py_module; -bad: - Py_XDECREF(py_name); - return 0; -} -#endif - -/* TypeImport */ - #ifndef __PYX_HAVE_RT_ImportType -#define __PYX_HAVE_RT_ImportType -static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, - size_t size, int strict) -{ - PyObject *py_module = 0; - PyObject *result = 0; - PyObject *py_name = 0; - char warning[200]; - Py_ssize_t basicsize; -#ifdef Py_LIMITED_API - PyObject *py_basicsize; -#endif - py_module = __Pyx_ImportModule(module_name); - if (!py_module) - goto bad; - py_name = __Pyx_PyIdentifier_FromString(class_name); - if (!py_name) - goto bad; - result = PyObject_GetAttr(py_module, py_name); - Py_DECREF(py_name); - py_name = 0; - Py_DECREF(py_module); - py_module = 0; - if (!result) - goto bad; - if (!PyType_Check(result)) { - PyErr_Format(PyExc_TypeError, - "%.200s.%.200s is not a type object", - module_name, class_name); - goto bad; - } -#ifndef Py_LIMITED_API - basicsize = ((PyTypeObject *)result)->tp_basicsize; -#else - py_basicsize = PyObject_GetAttrString(result, "__basicsize__"); - if (!py_basicsize) - goto bad; - basicsize = PyLong_AsSsize_t(py_basicsize); - Py_DECREF(py_basicsize); - py_basicsize = 0; - if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred()) - goto bad; -#endif - if (!strict && (size_t)basicsize > size) { - PyOS_snprintf(warning, sizeof(warning), - "%s.%s size changed, may indicate binary incompatibility. Expected %zd, got %zd", - module_name, class_name, basicsize, size); - if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad; - } - else if ((size_t)basicsize != size) { - PyErr_Format(PyExc_ValueError, - "%.200s.%.200s has the wrong size, try recompiling. Expected %zd, got %zd", - module_name, class_name, basicsize, size); - goto bad; - } - return (PyTypeObject *)result; -bad: - Py_XDECREF(py_module); - Py_XDECREF(result); - return NULL; -} -#endif - -/* VoidPtrImport */ - #ifndef __PYX_HAVE_RT_ImportVoidPtr -#define __PYX_HAVE_RT_ImportVoidPtr -static int __Pyx_ImportVoidPtr(PyObject *module, const char *name, void **p, const char *sig) { - PyObject *d = 0; - PyObject *cobj = 0; - d = PyObject_GetAttrString(module, (char *)"__pyx_capi__"); - if (!d) - goto bad; - cobj = PyDict_GetItemString(d, name); - if (!cobj) { - PyErr_Format(PyExc_ImportError, - "%.200s does not export expected C variable %.200s", - PyModule_GetName(module), name); - goto bad; - } -#if PY_VERSION_HEX >= 0x02070000 - if (!PyCapsule_IsValid(cobj, sig)) { - PyErr_Format(PyExc_TypeError, - "C variable %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", - PyModule_GetName(module), name, sig, PyCapsule_GetName(cobj)); - goto bad; - } - *p = PyCapsule_GetPointer(cobj, sig); -#else - {const char *desc, *s1, *s2; - desc = (const char *)PyCObject_GetDesc(cobj); - if (!desc) - goto bad; - s1 = desc; s2 = sig; - while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; } - if (*s1 != *s2) { - PyErr_Format(PyExc_TypeError, - "C variable %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", - PyModule_GetName(module), name, sig, desc); - goto bad; - } - *p = PyCObject_AsVoidPtr(cobj);} -#endif - if (!(*p)) - goto bad; - Py_DECREF(d); - return 0; -bad: - Py_XDECREF(d); - return -1; -} -#endif - -/* FunctionImport */ - #ifndef __PYX_HAVE_RT_ImportFunction -#define __PYX_HAVE_RT_ImportFunction -static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) { - PyObject *d = 0; - PyObject *cobj = 0; - union { - void (*fp)(void); - void *p; - } tmp; - d = PyObject_GetAttrString(module, (char *)"__pyx_capi__"); - if (!d) - goto bad; - cobj = PyDict_GetItemString(d, funcname); - if (!cobj) { - PyErr_Format(PyExc_ImportError, - "%.200s does not export expected C function %.200s", - PyModule_GetName(module), funcname); - goto bad; - } -#if PY_VERSION_HEX >= 0x02070000 - if (!PyCapsule_IsValid(cobj, sig)) { - PyErr_Format(PyExc_TypeError, - "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", - PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj)); - goto bad; - } - tmp.p = PyCapsule_GetPointer(cobj, sig); -#else - {const char *desc, *s1, *s2; - desc = (const char *)PyCObject_GetDesc(cobj); - if (!desc) - goto bad; - s1 = desc; s2 = sig; - while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; } - if (*s1 != *s2) { - PyErr_Format(PyExc_TypeError, - "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", - PyModule_GetName(module), funcname, sig, desc); - goto bad; - } - tmp.p = PyCObject_AsVoidPtr(cobj);} -#endif - *f = tmp.fp; - if (!(*f)) - goto bad; - Py_DECREF(d); - return 0; -bad: - Py_XDECREF(d); - return -1; -} -#endif - -/* InitStrings */ - static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { - while (t->p) { - #if PY_MAJOR_VERSION < 3 - if (t->is_unicode) { - *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); - } else if (t->intern) { - *t->p = PyString_InternFromString(t->s); - } else { - *t->p = PyString_FromStringAndSize(t->s, t->n - 1); - } - #else - if (t->is_unicode | t->is_str) { - if (t->intern) { - *t->p = PyUnicode_InternFromString(t->s); - } else if (t->encoding) { - *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL); - } else { - *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1); - } - } else { - *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1); - } - #endif - if (!*t->p) - return -1; - if (PyObject_Hash(*t->p) == -1) - return -1; - ++t; - } - return 0; -} - -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { - return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); -} -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { - Py_ssize_t ignore; - return __Pyx_PyObject_AsStringAndSize(o, &ignore); -} -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -#if !CYTHON_PEP393_ENABLED -static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - char* defenc_c; - PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); - if (!defenc) return NULL; - defenc_c = PyBytes_AS_STRING(defenc); -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - { - char* end = defenc_c + PyBytes_GET_SIZE(defenc); - char* c; - for (c = defenc_c; c < end; c++) { - if ((unsigned char) (*c) >= 128) { - PyUnicode_AsASCIIString(o); - return NULL; - } - } - } -#endif - *length = PyBytes_GET_SIZE(defenc); - return defenc_c; -} -#else -static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - if (likely(PyUnicode_IS_ASCII(o))) { - *length = PyUnicode_GET_LENGTH(o); - return PyUnicode_AsUTF8(o); - } else { - PyUnicode_AsASCIIString(o); - return NULL; - } -#else - return PyUnicode_AsUTF8AndSize(o, length); -#endif -} -#endif -#endif -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT - if ( -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - __Pyx_sys_getdefaultencoding_not_ascii && -#endif - PyUnicode_Check(o)) { - return __Pyx_PyUnicode_AsStringAndSize(o, length); - } else -#endif -#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) - if (PyByteArray_Check(o)) { - *length = PyByteArray_GET_SIZE(o); - return PyByteArray_AS_STRING(o); - } else -#endif - { - char* result; - int r = PyBytes_AsStringAndSize(o, &result, length); - if (unlikely(r < 0)) { - return NULL; - } else { - return result; - } - } -} -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { - int is_true = x == Py_True; - if (is_true | (x == Py_False) | (x == Py_None)) return is_true; - else return PyObject_IsTrue(x); -} -static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { -#if PY_MAJOR_VERSION >= 3 - if (PyLong_Check(result)) { - if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, - "__int__ returned non-int (type %.200s). " - "The ability to return an instance of a strict subclass of int " - "is deprecated, and may be removed in a future version of Python.", - Py_TYPE(result)->tp_name)) { - Py_DECREF(result); - return NULL; - } - return result; - } -#endif - PyErr_Format(PyExc_TypeError, - "__%.4s__ returned non-%.4s (type %.200s)", - type_name, type_name, Py_TYPE(result)->tp_name); - Py_DECREF(result); - return NULL; -} -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { -#if CYTHON_USE_TYPE_SLOTS - PyNumberMethods *m; -#endif - const char *name = NULL; - PyObject *res = NULL; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x) || PyLong_Check(x))) -#else - if (likely(PyLong_Check(x))) -#endif - return __Pyx_NewRef(x); -#if CYTHON_USE_TYPE_SLOTS - m = Py_TYPE(x)->tp_as_number; - #if PY_MAJOR_VERSION < 3 - if (m && m->nb_int) { - name = "int"; - res = m->nb_int(x); - } - else if (m && m->nb_long) { - name = "long"; - res = m->nb_long(x); - } - #else - if (likely(m && m->nb_int)) { - name = "int"; - res = m->nb_int(x); - } - #endif -#else - if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { - res = PyNumber_Int(x); - } -#endif - if (likely(res)) { -#if PY_MAJOR_VERSION < 3 - if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { -#else - if (unlikely(!PyLong_CheckExact(res))) { -#endif - return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); - } - } - else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_TypeError, - "an integer is required"); - } - return res; -} -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { - Py_ssize_t ival; - PyObject *x; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(b))) { - if (sizeof(Py_ssize_t) >= sizeof(long)) - return PyInt_AS_LONG(b); - else - return PyInt_AsSsize_t(x); - } -#endif - if (likely(PyLong_CheckExact(b))) { - #if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)b)->ob_digit; - const Py_ssize_t size = Py_SIZE(b); - if (likely(__Pyx_sst_abs(size) <= 1)) { - ival = likely(size) ? digits[0] : 0; - if (size == -1) ival = -ival; - return ival; - } else { - switch (size) { - case 2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - } - } - #endif - return PyLong_AsSsize_t(b); - } - x = PyNumber_Index(b); - if (!x) return -1; - ival = PyInt_AsSsize_t(x); - Py_DECREF(x); - return ival; -} -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { - return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); -} -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { - return PyInt_FromSize_t(ival); -} - - -#endif /* Py_PYTHON_H */ diff --git a/python/gevent/_waiter.py b/python/gevent/_waiter.py deleted file mode 100644 index b9ba3e8..0000000 --- a/python/gevent/_waiter.py +++ /dev/null @@ -1,204 +0,0 @@ -# -*- coding: utf-8 -*- -# copyright 2018 gevent -# cython: auto_pickle=False,embedsignature=True,always_allow_keywords=False -""" -Low-level waiting primitives. - -""" -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function - -import sys - -from gevent._hub_local import get_hub_noargs as get_hub -from gevent.exceptions import ConcurrentObjectUseError - -__all__ = [ - 'Waiter', -] - -_NONE = object() - -locals()['getcurrent'] = __import__('greenlet').getcurrent -locals()['greenlet_init'] = lambda: None - - -class Waiter(object): - """ - A low level communication utility for greenlets. - - Waiter is a wrapper around greenlet's ``switch()`` and ``throw()`` calls that makes them somewhat safer: - - * switching will occur only if the waiting greenlet is executing :meth:`get` method currently; - * any error raised in the greenlet is handled inside :meth:`switch` and :meth:`throw` - * if :meth:`switch`/:meth:`throw` is called before the receiver calls :meth:`get`, then :class:`Waiter` - will store the value/exception. The following :meth:`get` will return the value/raise the exception. - - The :meth:`switch` and :meth:`throw` methods must only be called from the :class:`Hub` greenlet. - The :meth:`get` method must be called from a greenlet other than :class:`Hub`. - - >>> result = Waiter() - >>> timer = get_hub().loop.timer(0.1) - >>> timer.start(result.switch, 'hello from Waiter') - >>> result.get() # blocks for 0.1 seconds - 'hello from Waiter' - >>> timer.close() - - If switch is called before the greenlet gets a chance to call :meth:`get` then - :class:`Waiter` stores the value. - - >>> result = Waiter() - >>> timer = get_hub().loop.timer(0.1) - >>> timer.start(result.switch, 'hi from Waiter') - >>> sleep(0.2) - >>> result.get() # returns immediately without blocking - 'hi from Waiter' - >>> timer.close() - - .. warning:: - - This a limited and dangerous way to communicate between - greenlets. It can easily leave a greenlet unscheduled forever - if used incorrectly. Consider using safer classes such as - :class:`gevent.event.Event`, :class:`gevent.event.AsyncResult`, - or :class:`gevent.queue.Queue`. - """ - - __slots__ = ['hub', 'greenlet', 'value', '_exception'] - - def __init__(self, hub=None): - self.hub = get_hub() if hub is None else hub - self.greenlet = None - self.value = None - self._exception = _NONE - - def clear(self): - self.greenlet = None - self.value = None - self._exception = _NONE - - def __str__(self): - if self._exception is _NONE: - return '<%s greenlet=%s>' % (type(self).__name__, self.greenlet) - if self._exception is None: - return '<%s greenlet=%s value=%r>' % (type(self).__name__, self.greenlet, self.value) - return '<%s greenlet=%s exc_info=%r>' % (type(self).__name__, self.greenlet, self.exc_info) - - def ready(self): - """Return true if and only if it holds a value or an exception""" - return self._exception is not _NONE - - def successful(self): - """Return true if and only if it is ready and holds a value""" - return self._exception is None - - @property - def exc_info(self): - "Holds the exception info passed to :meth:`throw` if :meth:`throw` was called. Otherwise ``None``." - if self._exception is not _NONE: - return self._exception - - def switch(self, value): - """ - Switch to the greenlet if one's available. Otherwise store the - *value*. - - .. versionchanged:: 1.3b1 - The *value* is no longer optional. - """ - greenlet = self.greenlet - if greenlet is None: - self.value = value - self._exception = None - else: - if getcurrent() is not self.hub: # pylint:disable=undefined-variable - raise AssertionError("Can only use Waiter.switch method from the Hub greenlet") - switch = greenlet.switch - try: - switch(value) - except: # pylint:disable=bare-except - self.hub.handle_error(switch, *sys.exc_info()) - - def switch_args(self, *args): - return self.switch(args) - - def throw(self, *throw_args): - """Switch to the greenlet with the exception. If there's no greenlet, store the exception.""" - greenlet = self.greenlet - if greenlet is None: - self._exception = throw_args - else: - if getcurrent() is not self.hub: # pylint:disable=undefined-variable - raise AssertionError("Can only use Waiter.switch method from the Hub greenlet") - throw = greenlet.throw - try: - throw(*throw_args) - except: # pylint:disable=bare-except - self.hub.handle_error(throw, *sys.exc_info()) - - def get(self): - """If a value/an exception is stored, return/raise it. Otherwise until switch() or throw() is called.""" - if self._exception is not _NONE: - if self._exception is None: - return self.value - getcurrent().throw(*self._exception) # pylint:disable=undefined-variable - else: - if self.greenlet is not None: - raise ConcurrentObjectUseError('This Waiter is already used by %r' % (self.greenlet, )) - self.greenlet = getcurrent() # pylint:disable=undefined-variable - try: - return self.hub.switch() - finally: - self.greenlet = None - - def __call__(self, source): - if source.exception is None: - self.switch(source.value) - else: - self.throw(source.exception) - - # can also have a debugging version, that wraps the value in a tuple (self, value) in switch() - # and unwraps it in wait() thus checking that switch() was indeed called - - - -class MultipleWaiter(Waiter): - """ - An internal extension of Waiter that can be used if multiple objects - must be waited on, and there is a chance that in between waits greenlets - might be switched out. All greenlets that switch to this waiter - will have their value returned. - - This does not handle exceptions or throw methods. - """ - __slots__ = ['_values'] - - def __init__(self, hub=None): - Waiter.__init__(self, hub) - # we typically expect a relatively small number of these to be outstanding. - # since we pop from the left, a deque might be slightly - # more efficient, but since we're in the hub we avoid imports if - # we can help it to better support monkey-patching, and delaying the import - # here can be impractical (see https://github.com/gevent/gevent/issues/652) - self._values = list() - - def switch(self, value): - self._values.append(value) - Waiter.switch(self, True) - - def get(self): - if not self._values: - Waiter.get(self) - Waiter.clear(self) - - return self._values.pop(0) - -def _init(): - greenlet_init() # pylint:disable=undefined-variable - -_init() - - -from gevent._util import import_c_accel -import_c_accel(globals(), 'gevent.__waiter') diff --git a/python/gevent/ares.py b/python/gevent/ares.py deleted file mode 100644 index 37980b3..0000000 --- a/python/gevent/ares.py +++ /dev/null @@ -1,10 +0,0 @@ -"""Backwards compatibility alias for :mod:`gevent.resolver.cares`. - -.. deprecated:: 1.3 - Use :mod:`gevent.resolver.cares` -""" - -from gevent.resolver.cares import * # pylint:disable=wildcard-import,unused-wildcard-import, -import gevent.resolver.cares as _cares -__all__ = _cares.__all__ # pylint:disable=c-extension-no-member -del _cares diff --git a/python/gevent/backdoor.py b/python/gevent/backdoor.py deleted file mode 100644 index 8489417..0000000 --- a/python/gevent/backdoor.py +++ /dev/null @@ -1,210 +0,0 @@ -# Copyright (c) 2009-2014, gevent contributors -# Based on eventlet.backdoor Copyright (c) 2005-2006, Bob Ippolito -""" -Interactive greenlet-based network console that can be used in any process. - -The :class:`BackdoorServer` provides a REPL inside a running process. As -long as the process is monkey-patched, the ``BackdoorServer`` can coexist -with other elements of the process. - -.. seealso:: :class:`code.InteractiveConsole` -""" -from __future__ import print_function, absolute_import -import sys -from code import InteractiveConsole - -from gevent.greenlet import Greenlet -from gevent.hub import getcurrent -from gevent.server import StreamServer -from gevent.pool import Pool - -__all__ = ['BackdoorServer'] - -try: - sys.ps1 -except AttributeError: - sys.ps1 = '>>> ' -try: - sys.ps2 -except AttributeError: - sys.ps2 = '... ' - -class _Greenlet_stdreplace(Greenlet): - # A greenlet that replaces sys.std[in/out/err] while running. - _fileobj = None - saved = None - - def switch(self, *args, **kw): - if self._fileobj is not None: - self.switch_in() - Greenlet.switch(self, *args, **kw) - - def switch_in(self): - self.saved = sys.stdin, sys.stderr, sys.stdout - sys.stdin = sys.stdout = sys.stderr = self._fileobj - - def switch_out(self): - sys.stdin, sys.stderr, sys.stdout = self.saved - self.saved = None - - def throw(self, *args, **kwargs): - # pylint:disable=arguments-differ - if self.saved is None and self._fileobj is not None: - self.switch_in() - Greenlet.throw(self, *args, **kwargs) - - def run(self): - try: - return Greenlet.run(self) - finally: - # Make sure to restore the originals. - self.switch_out() - - -class BackdoorServer(StreamServer): - """ - Provide a backdoor to a program for debugging purposes. - - .. warning:: This backdoor provides no authentication and makes no - attempt to limit what remote users can do. Anyone that - can access the server can take any action that the running - python process can. Thus, while you may bind to any interface, for - security purposes it is recommended that you bind to one - only accessible to the local machine, e.g., - 127.0.0.1/localhost. - - Basic usage:: - - from gevent.backdoor import BackdoorServer - server = BackdoorServer(('127.0.0.1', 5001), - banner="Hello from gevent backdoor!", - locals={'foo': "From defined scope!"}) - server.serve_forever() - - In a another terminal, connect with...:: - - $ telnet 127.0.0.1 5001 - Trying 127.0.0.1... - Connected to 127.0.0.1. - Escape character is '^]'. - Hello from gevent backdoor! - >> print(foo) - From defined scope! - - .. versionchanged:: 1.2a1 - Spawned greenlets are now tracked in a pool and killed when the server - is stopped. - """ - - def __init__(self, listener, locals=None, banner=None, **server_args): - """ - :keyword locals: If given, a dictionary of "builtin" values that will be available - at the top-level. - :keyword banner: If geven, a string that will be printed to each connecting user. - """ - group = Pool(greenlet_class=_Greenlet_stdreplace) # no limit on number - StreamServer.__init__(self, listener, spawn=group, **server_args) - _locals = {'__doc__': None, '__name__': '__console__'} - if locals: - _locals.update(locals) - self.locals = _locals - - self.banner = banner - self.stderr = sys.stderr - - def _create_interactive_locals(self): - # Create and return a *new* locals dictionary based on self.locals, - # and set any new entries in it. (InteractiveConsole does not - # copy its locals value) - _locals = self.locals.copy() - # __builtins__ may either be the __builtin__ module or - # __builtin__.__dict__; in the latter case typing - # locals() at the backdoor prompt spews out lots of - # useless stuff - try: - import __builtin__ - _locals["__builtins__"] = __builtin__ - except ImportError: - import builtins # pylint:disable=import-error - _locals["builtins"] = builtins - _locals['__builtins__'] = builtins - return _locals - - def handle(self, conn, _address): # pylint: disable=method-hidden - """ - Interact with one remote user. - - .. versionchanged:: 1.1b2 Each connection gets its own - ``locals`` dictionary. Previously they were shared in a - potentially unsafe manner. - """ - fobj = conn.makefile(mode="rw") - fobj = _fileobject(conn, fobj, self.stderr) - getcurrent()._fileobj = fobj - - getcurrent().switch_in() - try: - console = InteractiveConsole(self._create_interactive_locals()) - if sys.version_info[:3] >= (3, 6, 0): - # Beginning in 3.6, the console likes to print "now exiting <class>" - # but probably our socket is already closed, so this just causes problems. - console.interact(banner=self.banner, exitmsg='') # pylint:disable=unexpected-keyword-arg - else: - console.interact(banner=self.banner) - except SystemExit: # raised by quit() - if hasattr(sys, 'exc_clear'): # py2 - sys.exc_clear() - finally: - conn.close() - fobj.close() - - -class _fileobject(object): - """ - A file-like object that wraps the result of socket.makefile (composition - instead of inheritance lets us work identically under CPython and PyPy). - - We write directly to the socket, avoiding the buffering that the text-oriented - makefile would want to do (otherwise we'd be at the mercy of waiting on a - flush() to get called for the remote user to see data); this beats putting - the file in binary mode and translating everywhere with a non-default - encoding. - """ - def __init__(self, sock, fobj, stderr): - self._sock = sock - self._fobj = fobj - self.stderr = stderr - - def __getattr__(self, name): - return getattr(self._fobj, name) - - def close(self): - self._fobj.close() - self._sock.close() - - def write(self, data): - if not isinstance(data, bytes): - data = data.encode('utf-8') - self._sock.sendall(data) - - def isatty(self): - return True - - def flush(self): - pass - - def readline(self, *a): - try: - return self._fobj.readline(*a).replace("\r\n", "\n") - except UnicodeError: - # Typically, under python 3, a ^C on the other end - return '' - - -if __name__ == '__main__': - if not sys.argv[1:]: - print('USAGE: %s PORT [banner]' % sys.argv[0]) - else: - BackdoorServer(('127.0.0.1', int(sys.argv[1])), - banner=(sys.argv[2] if len(sys.argv) > 2 else None), - locals={'hello': 'world'}).serve_forever() diff --git a/python/gevent/baseserver.py b/python/gevent/baseserver.py deleted file mode 100644 index d20d936..0000000 --- a/python/gevent/baseserver.py +++ /dev/null @@ -1,404 +0,0 @@ -"""Base class for implementing servers""" -# Copyright (c) 2009-2012 Denis Bilenko. See LICENSE for details. -import sys -import _socket -import errno -from gevent.greenlet import Greenlet -from gevent.event import Event -from gevent.hub import get_hub -from gevent._compat import string_types, integer_types, xrange - - -__all__ = ['BaseServer'] - - -# We define a helper function to handle closing the socket in -# do_handle; We'd like to bind it to a kwarg to avoid *any* lookups at -# all, but that's incompatible with the calling convention of -# do_handle. On CPython, this is ~20% faster than creating and calling -# a closure and ~10% faster than using a @staticmethod. (In theory, we -# could create a closure only once in set_handle, to wrap self._handle, -# but this is safer from a backwards compat standpoint.) -# we also avoid unpacking the *args tuple when calling/spawning this object -# for a tiny improvement (benchmark shows a wash) -def _handle_and_close_when_done(handle, close, args_tuple): - try: - return handle(*args_tuple) - finally: - close(*args_tuple) - - -class BaseServer(object): - """ - An abstract base class that implements some common functionality for the servers in gevent. - - :param listener: Either be an address that the server should bind - on or a :class:`gevent.socket.socket` instance that is already - bound (and put into listening mode in case of TCP socket). - - :keyword handle: If given, the request handler. The request - handler can be defined in a few ways. Most commonly, - subclasses will implement a ``handle`` method as an - instance method. Alternatively, a function can be passed - as the ``handle`` argument to the constructor. In either - case, the handler can later be changed by calling - :meth:`set_handle`. - - When the request handler returns, the socket used for the - request will be closed. Therefore, the handler must not return if - the socket is still in use (for example, by manually spawned greenlets). - - :keyword spawn: If provided, is called to create a new - greenlet to run the handler. By default, - :func:`gevent.spawn` is used (meaning there is no - artificial limit on the number of concurrent requests). Possible values for *spawn*: - - - a :class:`gevent.pool.Pool` instance -- ``handle`` will be executed - using :meth:`gevent.pool.Pool.spawn` only if the pool is not full. - While it is full, no new connections are accepted; - - :func:`gevent.spawn_raw` -- ``handle`` will be executed in a raw - greenlet which has a little less overhead then :class:`gevent.Greenlet` instances spawned by default; - - ``None`` -- ``handle`` will be executed right away, in the :class:`Hub` greenlet. - ``handle`` cannot use any blocking functions as it would mean switching to the :class:`Hub`. - - an integer -- a shortcut for ``gevent.pool.Pool(integer)`` - - .. versionchanged:: 1.1a1 - When the *handle* function returns from processing a connection, - the client socket will be closed. This resolves the non-deterministic - closing of the socket, fixing ResourceWarnings under Python 3 and PyPy. - - """ - # pylint: disable=too-many-instance-attributes,bare-except,broad-except - - #: the number of seconds to sleep in case there was an error in accept() call - #: for consecutive errors the delay will double until it reaches max_delay - #: when accept() finally succeeds the delay will be reset to min_delay again - min_delay = 0.01 - max_delay = 1 - - #: Sets the maximum number of consecutive accepts that a process may perform on - #: a single wake up. High values give higher priority to high connection rates, - #: while lower values give higher priority to already established connections. - #: Default is 100. Note, that in case of multiple working processes on the same - #: listening value, it should be set to a lower value. (pywsgi.WSGIServer sets it - #: to 1 when environ["wsgi.multiprocess"] is true) - max_accept = 100 - - _spawn = Greenlet.spawn - - #: the default timeout that we wait for the client connections to close in stop() - stop_timeout = 1 - - fatal_errors = (errno.EBADF, errno.EINVAL, errno.ENOTSOCK) - - def __init__(self, listener, handle=None, spawn='default'): - self._stop_event = Event() - self._stop_event.set() - self._watcher = None - self._timer = None - self._handle = None - # XXX: FIXME: Subclasses rely on the presence or absence of the - # `socket` attribute to determine whether we are open/should be opened. - # Instead, have it be None. - self.pool = None - try: - self.set_listener(listener) - self.set_spawn(spawn) - self.set_handle(handle) - self.delay = self.min_delay - self.loop = get_hub().loop - if self.max_accept < 1: - raise ValueError('max_accept must be positive int: %r' % (self.max_accept, )) - except: - self.close() - raise - - def set_listener(self, listener): - if hasattr(listener, 'accept'): - if hasattr(listener, 'do_handshake'): - raise TypeError('Expected a regular socket, not SSLSocket: %r' % (listener, )) - self.family = listener.family - self.address = listener.getsockname() - self.socket = listener - else: - self.family, self.address = parse_address(listener) - - def set_spawn(self, spawn): - if spawn == 'default': - self.pool = None - self._spawn = self._spawn - elif hasattr(spawn, 'spawn'): - self.pool = spawn - self._spawn = spawn.spawn - elif isinstance(spawn, integer_types): - from gevent.pool import Pool - self.pool = Pool(spawn) - self._spawn = self.pool.spawn - else: - self.pool = None - self._spawn = spawn - if hasattr(self.pool, 'full'): - self.full = self.pool.full - if self.pool is not None: - self.pool._semaphore.rawlink(self._start_accepting_if_started) - - def set_handle(self, handle): - if handle is not None: - self.handle = handle - if hasattr(self, 'handle'): - self._handle = self.handle - else: - raise TypeError("'handle' must be provided") - - def _start_accepting_if_started(self, _event=None): - if self.started: - self.start_accepting() - - def start_accepting(self): - if self._watcher is None: - # just stop watcher without creating a new one? - self._watcher = self.loop.io(self.socket.fileno(), 1) - self._watcher.start(self._do_read) - - def stop_accepting(self): - if self._watcher is not None: - self._watcher.stop() - self._watcher.close() - self._watcher = None - if self._timer is not None: - self._timer.stop() - self._timer.close() - self._timer = None - - def do_handle(self, *args): - spawn = self._spawn - handle = self._handle - close = self.do_close - - try: - if spawn is None: - _handle_and_close_when_done(handle, close, args) - else: - spawn(_handle_and_close_when_done, handle, close, args) - except: - close(*args) - raise - - def do_close(self, *args): - pass - - def do_read(self): - raise NotImplementedError() - - def _do_read(self): - for _ in xrange(self.max_accept): - if self.full(): - self.stop_accepting() - return - try: - args = self.do_read() - self.delay = self.min_delay - if not args: - return - except: - self.loop.handle_error(self, *sys.exc_info()) - ex = sys.exc_info()[1] - if self.is_fatal_error(ex): - self.close() - sys.stderr.write('ERROR: %s failed with %s\n' % (self, str(ex) or repr(ex))) - return - if self.delay >= 0: - self.stop_accepting() - self._timer = self.loop.timer(self.delay) - self._timer.start(self._start_accepting_if_started) - self.delay = min(self.max_delay, self.delay * 2) - break - else: - try: - self.do_handle(*args) - except: - self.loop.handle_error((args[1:], self), *sys.exc_info()) - if self.delay >= 0: - self.stop_accepting() - self._timer = self.loop.timer(self.delay) - self._timer.start(self._start_accepting_if_started) - self.delay = min(self.max_delay, self.delay * 2) - break - - def full(self): - # copied from self.pool - # pylint: disable=method-hidden - return False - - def __repr__(self): - return '<%s at %s %s>' % (type(self).__name__, hex(id(self)), self._formatinfo()) - - def __str__(self): - return '<%s %s>' % (type(self).__name__, self._formatinfo()) - - def _formatinfo(self): - if hasattr(self, 'socket'): - try: - fileno = self.socket.fileno() - except Exception as ex: - fileno = str(ex) - result = 'fileno=%s ' % fileno - else: - result = '' - try: - if isinstance(self.address, tuple) and len(self.address) == 2: - result += 'address=%s:%s' % self.address - else: - result += 'address=%s' % (self.address, ) - except Exception as ex: - result += str(ex) or '<error>' - - handle = self.__dict__.get('handle') - if handle is not None: - fself = getattr(handle, '__self__', None) - try: - if fself is self: - # Checks the __self__ of the handle in case it is a bound - # method of self to prevent recursivly defined reprs. - handle_repr = '<bound method %s.%s of self>' % ( - self.__class__.__name__, - handle.__name__, - ) - else: - handle_repr = repr(handle) - - result += ' handle=' + handle_repr - except Exception as ex: - result += str(ex) or '<error>' - - return result - - @property - def server_host(self): - """IP address that the server is bound to (string).""" - if isinstance(self.address, tuple): - return self.address[0] - - @property - def server_port(self): - """Port that the server is bound to (an integer).""" - if isinstance(self.address, tuple): - return self.address[1] - - def init_socket(self): - """If the user initialized the server with an address rather than socket, - then this function will create a socket, bind it and put it into listening mode. - - It is not supposed to be called by the user, it is called by :meth:`start` before starting - the accept loop.""" - pass - - @property - def started(self): - return not self._stop_event.is_set() - - def start(self): - """Start accepting the connections. - - If an address was provided in the constructor, then also create a socket, - bind it and put it into the listening mode. - """ - self.init_socket() - self._stop_event.clear() - try: - self.start_accepting() - except: - self.close() - raise - - def close(self): - """Close the listener socket and stop accepting.""" - self._stop_event.set() - try: - self.stop_accepting() - finally: - try: - self.socket.close() - except Exception: - pass - finally: - self.__dict__.pop('socket', None) - self.__dict__.pop('handle', None) - self.__dict__.pop('_handle', None) - self.__dict__.pop('_spawn', None) - self.__dict__.pop('full', None) - if self.pool is not None: - self.pool._semaphore.unlink(self._start_accepting_if_started) - - @property - def closed(self): - return not hasattr(self, 'socket') - - def stop(self, timeout=None): - """ - Stop accepting the connections and close the listening socket. - - If the server uses a pool to spawn the requests, then - :meth:`stop` also waits for all the handlers to exit. If there - are still handlers executing after *timeout* has expired - (default 1 second, :attr:`stop_timeout`), then the currently - running handlers in the pool are killed. - - If the server does not use a pool, then this merely stops accepting connections; - any spawned greenlets that are handling requests continue running until - they naturally complete. - """ - self.close() - if timeout is None: - timeout = self.stop_timeout - if self.pool: - self.pool.join(timeout=timeout) - self.pool.kill(block=True, timeout=1) - - def serve_forever(self, stop_timeout=None): - """Start the server if it hasn't been already started and wait until it's stopped.""" - # add test that serve_forever exists on stop() - if not self.started: - self.start() - try: - self._stop_event.wait() - finally: - Greenlet.spawn(self.stop, timeout=stop_timeout).join() - - def is_fatal_error(self, ex): - return isinstance(ex, _socket.error) and ex.args[0] in self.fatal_errors - - -def _extract_family(host): - if host.startswith('[') and host.endswith(']'): - host = host[1:-1] - return _socket.AF_INET6, host - return _socket.AF_INET, host - - -def _parse_address(address): - if isinstance(address, tuple): - if not address[0] or ':' in address[0]: - return _socket.AF_INET6, address - return _socket.AF_INET, address - - if ((isinstance(address, string_types) and ':' not in address) - or isinstance(address, integer_types)): # noqa (pep8 E129) - # Just a port - return _socket.AF_INET6, ('', int(address)) - - if not isinstance(address, string_types): - raise TypeError('Expected tuple or string, got %s' % type(address)) - - host, port = address.rsplit(':', 1) - family, host = _extract_family(host) - if host == '*': - host = '' - return family, (host, int(port)) - - -def parse_address(address): - try: - return _parse_address(address) - except ValueError as ex: # pylint:disable=try-except-raise - raise ValueError('Failed to parse address %r: %s' % (address, ex)) diff --git a/python/gevent/builtins.py b/python/gevent/builtins.py deleted file mode 100644 index 389a652..0000000 --- a/python/gevent/builtins.py +++ /dev/null @@ -1,135 +0,0 @@ -# Copyright (c) 2015 gevent contributors. See LICENSE for details. -"""gevent friendly implementations of builtin functions.""" -from __future__ import absolute_import - -import sys -import weakref - -from gevent.lock import RLock -from gevent._compat import imp_acquire_lock -from gevent._compat import imp_release_lock - - -# Normally we'd have the "expected" case inside the try -# (Python 3, because Python 3 is the way forward). But -# under Python 2, the popular `future` library *also* provides -# a `builtins` module---which lacks the __import__ attribute. -# So we test for the old, deprecated version first - -try: # Py2 - import __builtin__ as __gbuiltins__ - _allowed_module_name_types = (basestring,) # pylint:disable=undefined-variable - __target__ = '__builtin__' -except ImportError: - import builtins as __gbuiltins__ # pylint: disable=import-error - _allowed_module_name_types = (str,) - __target__ = 'builtins' - -_import = __gbuiltins__.__import__ - -# We need to protect imports both across threads and across greenlets. -# And the order matters. Note that under 3.4, the global import lock -# and imp module are deprecated. It seems that in all Py3 versions, a -# module lock is used such that this fix is not necessary. - -# We emulate the per-module locking system under Python 2 in order to -# avoid issues acquiring locks in multiple-level-deep imports -# that attempt to use the gevent blocking API at runtime; using one lock -# could lead to a LoopExit error as a greenlet attempts to block on it while -# it's already held by the main greenlet (issue #798). - -# We base this approach on a simplification of what `importlib._bootstrap` -# does; notably, we don't check for deadlocks - -_g_import_locks = {} # name -> wref of RLock - -__lock_imports = True - - -def __module_lock(name): - # Return the lock for the given module, creating it if necessary. - # It will be removed when no longer needed. - # Nothing in this function yields, so we're multi-greenlet safe - # (But not multi-threading safe.) - # XXX: What about on PyPy, where the GC is asynchronous (not ref-counting)? - # (Does it stop-the-world first?) - lock = None - try: - lock = _g_import_locks[name]() - except KeyError: - pass - - if lock is None: - lock = RLock() - - def cb(_): - # We've seen a KeyError on PyPy on RPi2 - _g_import_locks.pop(name, None) - _g_import_locks[name] = weakref.ref(lock, cb) - return lock - - -def __import__(*args, **kwargs): - """ - __import__(name, globals=None, locals=None, fromlist=(), level=0) -> object - - Normally python protects imports against concurrency by doing some locking - at the C level (at least, it does that in CPython). This function just - wraps the normal __import__ functionality in a recursive lock, ensuring that - we're protected against greenlet import concurrency as well. - """ - if args and not issubclass(type(args[0]), _allowed_module_name_types): - # if a builtin has been acquired as a bound instance method, - # python knows not to pass 'self' when the method is called. - # No such protection exists for monkey-patched builtins, - # however, so this is necessary. - args = args[1:] - - if not __lock_imports: - return _import(*args, **kwargs) - - module_lock = __module_lock(args[0]) # Get a lock for the module name - imp_acquire_lock() - try: - module_lock.acquire() - try: - result = _import(*args, **kwargs) - finally: - module_lock.release() - finally: - imp_release_lock() - return result - - -def _unlock_imports(): - """ - Internal function, called when gevent needs to perform imports - lazily, but does not know the state of the system. It may be impossible - to take the import lock because there are no other running greenlets, for - example. This causes a monkey-patched __import__ to avoid taking any locks. - until the corresponding call to lock_imports. This should only be done for limited - amounts of time and when the set of imports is statically known to be "safe". - """ - global __lock_imports - # This could easily become a list that we push/pop from or an integer - # we increment if we need to do this recursively, but we shouldn't get - # that complex. - __lock_imports = False - - -def _lock_imports(): - global __lock_imports - __lock_imports = True - -if sys.version_info[:2] >= (3, 3): - __implements__ = [] - __import__ = _import -else: - __implements__ = ['__import__'] -__all__ = __implements__ - - -from gevent._util import copy_globals - -__imports__ = copy_globals(__gbuiltins__, globals(), - names_to_ignore=__implements__) diff --git a/python/gevent/core.py b/python/gevent/core.py deleted file mode 100644 index 906e739..0000000 --- a/python/gevent/core.py +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright (c) 2009-2015 Denis Bilenko and gevent contributors. See LICENSE for details. -""" -Deprecated; this does not reflect all the possible options -and its interface varies. - -.. versionchanged:: 1.3a2 - Deprecated. -""" -from __future__ import absolute_import - -import sys - -from gevent._config import config -from gevent._util import copy_globals - -_core = sys.modules[config.loop.__module__] - -copy_globals(_core, globals()) - -__all__ = _core.__all__ # pylint:disable=no-member diff --git a/python/gevent/event.c b/python/gevent/event.c deleted file mode 100644 index 5de3dcf..0000000 --- a/python/gevent/event.c +++ /dev/null @@ -1,13439 +0,0 @@ -/* Generated by Cython 0.28.5 */ - -/* BEGIN: Cython Metadata -{ - "distutils": { - "depends": [ - "src/gevent/_event.pxd", - "src\\gevent\\_event.pxd" - ], - "include_dirs": [ - "C:\\Python36\\Include", - "deps" - ], - "name": "gevent._event", - "sources": [ - "src/gevent/event.py" - ] - }, - "module_name": "gevent._event" -} -END: Cython Metadata */ - -#define PY_SSIZE_T_CLEAN -#include "Python.h" -#ifndef Py_PYTHON_H - #error Python headers needed to compile C extensions, please install development version of Python. -#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) - #error Cython requires Python 2.6+ or Python 3.3+. -#else -#define CYTHON_ABI "0_28_5" -#define CYTHON_FUTURE_DIVISION 0 -#include <stddef.h> -#ifndef offsetof - #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) -#endif -#if !defined(WIN32) && !defined(MS_WINDOWS) - #ifndef __stdcall - #define __stdcall - #endif - #ifndef __cdecl - #define __cdecl - #endif - #ifndef __fastcall - #define __fastcall - #endif -#endif -#ifndef DL_IMPORT - #define DL_IMPORT(t) t -#endif -#ifndef DL_EXPORT - #define DL_EXPORT(t) t -#endif -#define __PYX_COMMA , -#ifndef HAVE_LONG_LONG - #if PY_VERSION_HEX >= 0x02070000 - #define HAVE_LONG_LONG - #endif -#endif -#ifndef PY_LONG_LONG - #define PY_LONG_LONG LONG_LONG -#endif -#ifndef Py_HUGE_VAL - #define Py_HUGE_VAL HUGE_VAL -#endif -#ifdef PYPY_VERSION - #define CYTHON_COMPILING_IN_PYPY 1 - #define CYTHON_COMPILING_IN_PYSTON 0 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #undef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 0 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #if PY_VERSION_HEX < 0x03050000 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #undef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #undef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 1 - #undef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 0 - #undef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 0 - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 -#elif defined(PYSTON_VERSION) - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_PYSTON 1 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 -#else - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_PYSTON 0 - #define CYTHON_COMPILING_IN_CPYTHON 1 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #if PY_VERSION_HEX < 0x02070000 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #elif !defined(CYTHON_USE_PYTYPE_LOOKUP) - #define CYTHON_USE_PYTYPE_LOOKUP 1 - #endif - #if PY_MAJOR_VERSION < 3 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #if PY_VERSION_HEX < 0x02070000 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #elif !defined(CYTHON_USE_PYLONG_INTERNALS) - #define CYTHON_USE_PYLONG_INTERNALS 1 - #endif - #ifndef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 1 - #endif - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #if PY_VERSION_HEX < 0x030300F0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #elif !defined(CYTHON_USE_UNICODE_WRITER) - #define CYTHON_USE_UNICODE_WRITER 1 - #endif - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #ifndef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 1 - #endif - #ifndef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 1 - #endif - #ifndef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT (0 && PY_VERSION_HEX >= 0x03050000) - #endif - #ifndef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1) - #endif -#endif -#if !defined(CYTHON_FAST_PYCCALL) -#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) -#endif -#if CYTHON_USE_PYLONG_INTERNALS - #include "longintrepr.h" - #undef SHIFT - #undef BASE - #undef MASK -#endif -#ifndef __has_attribute - #define __has_attribute(x) 0 -#endif -#ifndef __has_cpp_attribute - #define __has_cpp_attribute(x) 0 -#endif -#ifndef CYTHON_RESTRICT - #if defined(__GNUC__) - #define CYTHON_RESTRICT __restrict__ - #elif defined(_MSC_VER) && _MSC_VER >= 1400 - #define CYTHON_RESTRICT __restrict - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_RESTRICT restrict - #else - #define CYTHON_RESTRICT - #endif -#endif -#ifndef CYTHON_UNUSED -# if defined(__GNUC__) -# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -#endif -#ifndef CYTHON_MAYBE_UNUSED_VAR -# if defined(__cplusplus) - template<class T> void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } -# else -# define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) -# endif -#endif -#ifndef CYTHON_NCP_UNUSED -# if CYTHON_COMPILING_IN_CPYTHON -# define CYTHON_NCP_UNUSED -# else -# define CYTHON_NCP_UNUSED CYTHON_UNUSED -# endif -#endif -#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) -#ifdef _MSC_VER - #ifndef _MSC_STDINT_H_ - #if _MSC_VER < 1300 - typedef unsigned char uint8_t; - typedef unsigned int uint32_t; - #else - typedef unsigned __int8 uint8_t; - typedef unsigned __int32 uint32_t; - #endif - #endif -#else - #include <stdint.h> -#endif -#ifndef CYTHON_FALLTHROUGH - #if defined(__cplusplus) && __cplusplus >= 201103L - #if __has_cpp_attribute(fallthrough) - #define CYTHON_FALLTHROUGH [[fallthrough]] - #elif __has_cpp_attribute(clang::fallthrough) - #define CYTHON_FALLTHROUGH [[clang::fallthrough]] - #elif __has_cpp_attribute(gnu::fallthrough) - #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] - #endif - #endif - #ifndef CYTHON_FALLTHROUGH - #if __has_attribute(fallthrough) - #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) - #else - #define CYTHON_FALLTHROUGH - #endif - #endif - #if defined(__clang__ ) && defined(__apple_build_version__) - #if __apple_build_version__ < 7000000 - #undef CYTHON_FALLTHROUGH - #define CYTHON_FALLTHROUGH - #endif - #endif -#endif - -#ifndef CYTHON_INLINE - #if defined(__clang__) - #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) - #elif defined(__GNUC__) - #define CYTHON_INLINE __inline__ - #elif defined(_MSC_VER) - #define CYTHON_INLINE __inline - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_INLINE inline - #else - #define CYTHON_INLINE - #endif -#endif - -#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) - #define Py_OptimizeFlag 0 -#endif -#define __PYX_BUILD_PY_SSIZE_T "n" -#define CYTHON_FORMAT_SSIZE_T "z" -#if PY_MAJOR_VERSION < 3 - #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) - #define __Pyx_DefaultClassType PyClass_Type -#else - #define __Pyx_BUILTIN_MODULE_NAME "builtins" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) - #define __Pyx_DefaultClassType PyType_Type -#endif -#ifndef Py_TPFLAGS_CHECKTYPES - #define Py_TPFLAGS_CHECKTYPES 0 -#endif -#ifndef Py_TPFLAGS_HAVE_INDEX - #define Py_TPFLAGS_HAVE_INDEX 0 -#endif -#ifndef Py_TPFLAGS_HAVE_NEWBUFFER - #define Py_TPFLAGS_HAVE_NEWBUFFER 0 -#endif -#ifndef Py_TPFLAGS_HAVE_FINALIZE - #define Py_TPFLAGS_HAVE_FINALIZE 0 -#endif -#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) - #ifndef METH_FASTCALL - #define METH_FASTCALL 0x80 - #endif - typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); - typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, - Py_ssize_t nargs, PyObject *kwnames); -#else - #define __Pyx_PyCFunctionFast _PyCFunctionFast - #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords -#endif -#if CYTHON_FAST_PYCCALL -#define __Pyx_PyFastCFunction_Check(func)\ - ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))))) -#else -#define __Pyx_PyFastCFunction_Check(func) 0 -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) - #define PyObject_Malloc(s) PyMem_Malloc(s) - #define PyObject_Free(p) PyMem_Free(p) - #define PyObject_Realloc(p) PyMem_Realloc(p) -#endif -#if CYTHON_COMPILING_IN_PYSTON - #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) -#else - #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) -#endif -#if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000 - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#elif PY_VERSION_HEX >= 0x03060000 - #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() -#elif PY_VERSION_HEX >= 0x03000000 - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#else - #define __Pyx_PyThreadState_Current _PyThreadState_Current -#endif -#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) -#include "pythread.h" -#define Py_tss_NEEDS_INIT 0 -typedef int Py_tss_t; -static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { - *key = PyThread_create_key(); - return 0; // PyThread_create_key reports success always -} -static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { - Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); - *key = Py_tss_NEEDS_INIT; - return key; -} -static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { - PyObject_Free(key); -} -static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { - return *key != Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { - PyThread_delete_key(*key); - *key = Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { - return PyThread_set_key_value(*key, value); -} -static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { - return PyThread_get_key_value(*key); -} -#endif // TSS (Thread Specific Storage) API -#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) -#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) -#else -#define __Pyx_PyDict_NewPresized(n) PyDict_New() -#endif -#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION - #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) -#else - #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) -#endif -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS -#define __Pyx_PyDict_GetItemStr(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) -#else -#define __Pyx_PyDict_GetItemStr(dict, name) PyDict_GetItem(dict, name) -#endif -#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) - #define CYTHON_PEP393_ENABLED 1 - #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ - 0 : _PyUnicode_Ready((PyObject *)(op))) - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) - #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) - #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) - #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) -#else - #define CYTHON_PEP393_ENABLED 0 - #define PyUnicode_1BYTE_KIND 1 - #define PyUnicode_2BYTE_KIND 2 - #define PyUnicode_4BYTE_KIND 4 - #define __Pyx_PyUnicode_READY(op) (0) - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) - #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) - #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) - #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) -#endif -#if CYTHON_COMPILING_IN_PYPY - #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) -#else - #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ - PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) - #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) - #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) - #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) -#endif -#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) -#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) -#else - #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) -#endif -#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) - #define PyObject_ASCII(o) PyObject_Repr(o) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBaseString_Type PyUnicode_Type - #define PyStringObject PyUnicodeObject - #define PyString_Type PyUnicode_Type - #define PyString_Check PyUnicode_Check - #define PyString_CheckExact PyUnicode_CheckExact - #define PyObject_Unicode PyObject_Str -#endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) - #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) -#else - #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) - #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) -#endif -#ifndef PySet_CheckExact - #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) -#endif -#if CYTHON_ASSUME_SAFE_MACROS - #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) -#else - #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyIntObject PyLongObject - #define PyInt_Type PyLong_Type - #define PyInt_Check(op) PyLong_Check(op) - #define PyInt_CheckExact(op) PyLong_CheckExact(op) - #define PyInt_FromString PyLong_FromString - #define PyInt_FromUnicode PyLong_FromUnicode - #define PyInt_FromLong PyLong_FromLong - #define PyInt_FromSize_t PyLong_FromSize_t - #define PyInt_FromSsize_t PyLong_FromSsize_t - #define PyInt_AsLong PyLong_AsLong - #define PyInt_AS_LONG PyLong_AS_LONG - #define PyInt_AsSsize_t PyLong_AsSsize_t - #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask - #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask - #define PyNumber_Int PyNumber_Long -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBoolObject PyLongObject -#endif -#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY - #ifndef PyUnicode_InternFromString - #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) - #endif -#endif -#if PY_VERSION_HEX < 0x030200A4 - typedef long Py_hash_t; - #define __Pyx_PyInt_FromHash_t PyInt_FromLong - #define __Pyx_PyInt_AsHash_t PyInt_AsLong -#else - #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t - #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t -#endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : (Py_INCREF(func), func)) -#else - #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) -#endif -#if CYTHON_USE_ASYNC_SLOTS - #if PY_VERSION_HEX >= 0x030500B1 - #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods - #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) - #else - #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) - #endif -#else - #define __Pyx_PyType_AsAsync(obj) NULL -#endif -#ifndef __Pyx_PyAsyncMethodsStruct - typedef struct { - unaryfunc am_await; - unaryfunc am_aiter; - unaryfunc am_anext; - } __Pyx_PyAsyncMethodsStruct; -#endif - -#if defined(WIN32) || defined(MS_WINDOWS) - #define _USE_MATH_DEFINES -#endif -#include <math.h> -#ifdef NAN -#define __PYX_NAN() ((float) NAN) -#else -static CYTHON_INLINE float __PYX_NAN() { - float value; - memset(&value, 0xFF, sizeof(value)); - return value; -} -#endif -#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) -#define __Pyx_truncl trunc -#else -#define __Pyx_truncl truncl -#endif - - -#define __PYX_ERR(f_index, lineno, Ln_error) \ -{ \ - __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \ -} - -#ifndef __PYX_EXTERN_C - #ifdef __cplusplus - #define __PYX_EXTERN_C extern "C" - #else - #define __PYX_EXTERN_C extern - #endif -#endif - -#define __PYX_HAVE__gevent___event -#define __PYX_HAVE_API__gevent___event -/* Early includes */ -#include "greenlet/greenlet.h" -#ifdef _OPENMP -#include <omp.h> -#endif /* _OPENMP */ - -#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) -#define CYTHON_WITHOUT_ASSERTIONS -#endif - -typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; - const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; - -#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 -#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0 -#define __PYX_DEFAULT_STRING_ENCODING "" -#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString -#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#define __Pyx_uchar_cast(c) ((unsigned char)c) -#define __Pyx_long_cast(x) ((long)x) -#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ - (sizeof(type) < sizeof(Py_ssize_t)) ||\ - (sizeof(type) > sizeof(Py_ssize_t) &&\ - likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX) &&\ - (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ - v == (type)PY_SSIZE_T_MIN))) ||\ - (sizeof(type) == sizeof(Py_ssize_t) &&\ - (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX))) ) -#if defined (__cplusplus) && __cplusplus >= 201103L - #include <cstdlib> - #define __Pyx_sst_abs(value) std::abs(value) -#elif SIZEOF_INT >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) abs(value) -#elif SIZEOF_LONG >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) labs(value) -#elif defined (_MSC_VER) - #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) -#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define __Pyx_sst_abs(value) llabs(value) -#elif defined (__GNUC__) - #define __Pyx_sst_abs(value) __builtin_llabs(value) -#else - #define __Pyx_sst_abs(value) ((value<0) ? -value : value) -#endif -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); -#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) -#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) -#define __Pyx_PyBytes_FromString PyBytes_FromString -#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); -#if PY_MAJOR_VERSION < 3 - #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#else - #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize -#endif -#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) -#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) -#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) -#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) -#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) -static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { - const Py_UNICODE *u_end = u; - while (*u_end++) ; - return (size_t)(u_end - u - 1); -} -#define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) -#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode -#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode -#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) -#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); -#define __Pyx_PySequence_Tuple(obj)\ - (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); -#if CYTHON_ASSUME_SAFE_MACROS -#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) -#else -#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) -#endif -#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) -#if PY_MAJOR_VERSION >= 3 -#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) -#else -#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) -#endif -#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x)) -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII -static int __Pyx_sys_getdefaultencoding_not_ascii; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - PyObject* ascii_chars_u = NULL; - PyObject* ascii_chars_b = NULL; - const char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - if (strcmp(default_encoding_c, "ascii") == 0) { - __Pyx_sys_getdefaultencoding_not_ascii = 0; - } else { - char ascii_chars[128]; - int c; - for (c = 0; c < 128; c++) { - ascii_chars[c] = c; - } - __Pyx_sys_getdefaultencoding_not_ascii = 1; - ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); - if (!ascii_chars_u) goto bad; - ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); - if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { - PyErr_Format( - PyExc_ValueError, - "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", - default_encoding_c); - goto bad; - } - Py_DECREF(ascii_chars_u); - Py_DECREF(ascii_chars_b); - } - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - Py_XDECREF(ascii_chars_u); - Py_XDECREF(ascii_chars_b); - return -1; -} -#endif -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) -#else -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -static char* __PYX_DEFAULT_STRING_ENCODING; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c)); - if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; - strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - return -1; -} -#endif -#endif - - -/* Test for GCC > 2.95 */ -#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) - #define likely(x) __builtin_expect(!!(x), 1) - #define unlikely(x) __builtin_expect(!!(x), 0) -#else /* !__GNUC__ or GCC < 2.95 */ - #define likely(x) (x) - #define unlikely(x) (x) -#endif /* __GNUC__ */ -static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } - -static PyObject *__pyx_m = NULL; -static PyObject *__pyx_d; -static PyObject *__pyx_b; -static PyObject *__pyx_cython_runtime = NULL; -static PyObject *__pyx_empty_tuple; -static PyObject *__pyx_empty_bytes; -static PyObject *__pyx_empty_unicode; -static int __pyx_lineno; -static int __pyx_clineno = 0; -static const char * __pyx_cfilenm= __FILE__; -static const char *__pyx_filename; - - -static const char *__pyx_f[] = { - "src\\gevent\\event.py", - "src\\gevent\\_event.pxd", - "src\\gevent\\__greenlet_primitives.pxd", -}; - -/*--- Type declarations ---*/ -struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet; -struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop; -struct __pyx_obj_6gevent_6_event__AbstractLinkable; -struct __pyx_obj_6gevent_6_event_Event; -struct __pyx_obj_6gevent_6_event_AsyncResult; -struct __pyx_opt_args_6gevent_6_event_17_AbstractLinkable__wait_core; -struct __pyx_opt_args_6gevent_6_event_17_AbstractLinkable__wait; -struct __pyx_opt_args_6gevent_6_event_11AsyncResult_get; -struct __pyx_opt_args_6gevent_6_event_11AsyncResult_wait; - -/* "gevent/_event.pxd":55 - * @cython.locals(todo=set) - * cpdef _notify_links(self) - * cdef _wait_core(self, timeout, catch=*) # <<<<<<<<<<<<<< - * cdef _wait_return_value(self, waited, wait_success) - * cdef _wait(self, timeout=*) - */ -struct __pyx_opt_args_6gevent_6_event_17_AbstractLinkable__wait_core { - int __pyx_n; - PyObject *catch; -}; - -/* "gevent/_event.pxd":57 - * cdef _wait_core(self, timeout, catch=*) - * cdef _wait_return_value(self, waited, wait_success) - * cdef _wait(self, timeout=*) # <<<<<<<<<<<<<< - * - * - */ -struct __pyx_opt_args_6gevent_6_event_17_AbstractLinkable__wait { - int __pyx_n; - PyObject *timeout; -}; - -/* "gevent/_event.pxd":70 - * cdef public int _imap_task_index - * - * cpdef get(self, block=*, timeout=*) # <<<<<<<<<<<<<< - * cpdef bint successful(self) - * - */ -struct __pyx_opt_args_6gevent_6_event_11AsyncResult_get { - int __pyx_n; - PyObject *block; - PyObject *timeout; -}; - -/* "gevent/_event.pxd":73 - * cpdef bint successful(self) - * - * cpdef wait(self, timeout=*) # <<<<<<<<<<<<<< - * cpdef bint done(self) - * - */ -struct __pyx_opt_args_6gevent_6_event_11AsyncResult_wait { - int __pyx_n; - PyObject *timeout; -}; - -/* "gevent/__greenlet_primitives.pxd":37 - * return PyGreenlet_Switch(self, NULL, NULL) - * - * cdef class TrackedRawGreenlet(greenlet): # <<<<<<<<<<<<<< - * pass - * - */ -struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet { - PyGreenlet __pyx_base; -}; - - -/* "gevent/__greenlet_primitives.pxd":40 - * pass - * - * cdef class SwitchOutGreenletWithLoop(TrackedRawGreenlet): # <<<<<<<<<<<<<< - * cdef public loop - * - */ -struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop { - struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet __pyx_base; - struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_vtab; - PyObject *loop; -}; - - -/* "gevent/_event.pxd":38 - * cdef void _init() - * - * cdef class _AbstractLinkable: # <<<<<<<<<<<<<< - * # We declare the __weakref__ here in the base (even though - * # that's not really what we want) as a workaround for a Cython - */ -struct __pyx_obj_6gevent_6_event__AbstractLinkable { - PyObject_HEAD - struct __pyx_vtabstruct_6gevent_6_event__AbstractLinkable *__pyx_vtab; - PyObject *__weakref__; - PyObject *_notifier; - PyObject *_links; - struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *hub; -}; - - -/* "gevent/_event.pxd":60 - * - * - * cdef class Event(_AbstractLinkable): # <<<<<<<<<<<<<< - * cdef bint _flag - * - */ -struct __pyx_obj_6gevent_6_event_Event { - struct __pyx_obj_6gevent_6_event__AbstractLinkable __pyx_base; - int _flag; -}; - - -/* "gevent/_event.pxd":63 - * cdef bint _flag - * - * cdef class AsyncResult(_AbstractLinkable): # <<<<<<<<<<<<<< - * cdef readonly _value - * cdef readonly tuple _exc_info - */ -struct __pyx_obj_6gevent_6_event_AsyncResult { - struct __pyx_obj_6gevent_6_event__AbstractLinkable __pyx_base; - PyObject *_value; - PyObject *_exc_info; - int _imap_task_index; -}; - - - -/* "gevent/__greenlet_primitives.pxd":40 - * pass - * - * cdef class SwitchOutGreenletWithLoop(TrackedRawGreenlet): # <<<<<<<<<<<<<< - * cdef public loop - * - */ - -struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop { - PyObject *(*__pyx_switch)(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *, int __pyx_skip_dispatch); - PyObject *(*switch_out)(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *, int __pyx_skip_dispatch); -}; -static struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_vtabptr_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop; - - -/* "src/gevent/event.py":27 - * - * - * class _AbstractLinkable(object): # <<<<<<<<<<<<<< - * # Encapsulates the standard parts of the linking and notifying protocol - * # common to both repeatable events and one-time events (AsyncResult). - */ - -struct __pyx_vtabstruct_6gevent_6_event__AbstractLinkable { - PyObject *(*rawlink)(struct __pyx_obj_6gevent_6_event__AbstractLinkable *, PyObject *, int __pyx_skip_dispatch); - int (*ready)(struct __pyx_obj_6gevent_6_event__AbstractLinkable *, int __pyx_skip_dispatch); - PyObject *(*unlink)(struct __pyx_obj_6gevent_6_event__AbstractLinkable *, PyObject *, int __pyx_skip_dispatch); - PyObject *(*_check_and_notify)(struct __pyx_obj_6gevent_6_event__AbstractLinkable *); - PyObject *(*_notify_links)(struct __pyx_obj_6gevent_6_event__AbstractLinkable *, int __pyx_skip_dispatch); - PyObject *(*_wait_core)(struct __pyx_obj_6gevent_6_event__AbstractLinkable *, PyObject *, struct __pyx_opt_args_6gevent_6_event_17_AbstractLinkable__wait_core *__pyx_optional_args); - PyObject *(*_wait_return_value)(struct __pyx_obj_6gevent_6_event__AbstractLinkable *, PyObject *, PyObject *); - PyObject *(*_wait)(struct __pyx_obj_6gevent_6_event__AbstractLinkable *, struct __pyx_opt_args_6gevent_6_event_17_AbstractLinkable__wait *__pyx_optional_args); -}; -static struct __pyx_vtabstruct_6gevent_6_event__AbstractLinkable *__pyx_vtabptr_6gevent_6_event__AbstractLinkable; - - -/* "src/gevent/event.py":144 - * - * - * class Event(_AbstractLinkable): # <<<<<<<<<<<<<< - * """A synchronization primitive that allows one greenlet to wake up one or more others. - * It has the same interface as :class:`threading.Event` but works across greenlets. - */ - -struct __pyx_vtabstruct_6gevent_6_event_Event { - struct __pyx_vtabstruct_6gevent_6_event__AbstractLinkable __pyx_base; -}; -static struct __pyx_vtabstruct_6gevent_6_event_Event *__pyx_vtabptr_6gevent_6_event_Event; - - -/* "src/gevent/event.py":249 - * - * - * class AsyncResult(_AbstractLinkable): # <<<<<<<<<<<<<< - * """A one-time event that stores a value or an exception. - * - */ - -struct __pyx_vtabstruct_6gevent_6_event_AsyncResult { - struct __pyx_vtabstruct_6gevent_6_event__AbstractLinkable __pyx_base; - PyObject *(*get)(struct __pyx_obj_6gevent_6_event_AsyncResult *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_6_event_11AsyncResult_get *__pyx_optional_args); - int (*successful)(struct __pyx_obj_6gevent_6_event_AsyncResult *, int __pyx_skip_dispatch); - PyObject *(*wait)(struct __pyx_obj_6gevent_6_event_AsyncResult *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_6_event_11AsyncResult_wait *__pyx_optional_args); - int (*done)(struct __pyx_obj_6gevent_6_event_AsyncResult *, int __pyx_skip_dispatch); - int (*cancel)(struct __pyx_obj_6gevent_6_event_AsyncResult *, int __pyx_skip_dispatch); - int (*cancelled)(struct __pyx_obj_6gevent_6_event_AsyncResult *, int __pyx_skip_dispatch); -}; -static struct __pyx_vtabstruct_6gevent_6_event_AsyncResult *__pyx_vtabptr_6gevent_6_event_AsyncResult; - -/* --- Runtime support code (head) --- */ -/* Refnanny.proto */ -#ifndef CYTHON_REFNANNY - #define CYTHON_REFNANNY 0 -#endif -#if CYTHON_REFNANNY - typedef struct { - void (*INCREF)(void*, PyObject*, int); - void (*DECREF)(void*, PyObject*, int); - void (*GOTREF)(void*, PyObject*, int); - void (*GIVEREF)(void*, PyObject*, int); - void* (*SetupContext)(const char*, int, const char*); - void (*FinishContext)(void**); - } __Pyx_RefNannyAPIStruct; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); - #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; -#ifdef WITH_THREAD - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - if (acquire_gil) {\ - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - PyGILState_Release(__pyx_gilstate_save);\ - } else {\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - } -#else - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) -#endif - #define __Pyx_RefNannyFinishContext()\ - __Pyx_RefNanny->FinishContext(&__pyx_refnanny) - #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) - #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) - #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) - #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0) -#else - #define __Pyx_RefNannyDeclarations - #define __Pyx_RefNannySetupContext(name, acquire_gil) - #define __Pyx_RefNannyFinishContext() - #define __Pyx_INCREF(r) Py_INCREF(r) - #define __Pyx_DECREF(r) Py_DECREF(r) - #define __Pyx_GOTREF(r) - #define __Pyx_GIVEREF(r) - #define __Pyx_XINCREF(r) Py_XINCREF(r) - #define __Pyx_XDECREF(r) Py_XDECREF(r) - #define __Pyx_XGOTREF(r) - #define __Pyx_XGIVEREF(r) -#endif -#define __Pyx_XDECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_XDECREF(tmp);\ - } while (0) -#define __Pyx_DECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_DECREF(tmp);\ - } while (0) -#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) -#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) - -/* PyObjectGetAttrStr.proto */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) -#endif - -/* GetBuiltinName.proto */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name); - -/* RaiseArgTupleInvalid.proto */ -static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, - Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); - -/* KeywordStringCheck.proto */ -static int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); - -/* PyCFunctionFastCall.proto */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); -#else -#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) -#endif - -/* PyFunctionFastCall.proto */ -#if CYTHON_FAST_PYCALL -#define __Pyx_PyFunction_FastCall(func, args, nargs)\ - __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs); -#else -#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) -#endif -#endif - -/* PyObjectCall.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); -#else -#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) -#endif - -/* PyObjectCallMethO.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); -#endif - -/* PyObjectCallOneArg.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); - -/* PyObjectCallNoArg.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); -#else -#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL) -#endif - -/* PyThreadStateGet.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; -#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; -#define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type -#else -#define __Pyx_PyThreadState_declare -#define __Pyx_PyThreadState_assign -#define __Pyx_PyErr_Occurred() PyErr_Occurred() -#endif - -/* PyErrFetchRestore.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) -#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) -#else -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#endif -#else -#define __Pyx_PyErr_Clear() PyErr_Clear() -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) -#endif - -/* RaiseException.proto */ -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); - -/* WriteUnraisableException.proto */ -static void __Pyx_WriteUnraisable(const char *name, int clineno, - int lineno, const char *filename, - int full_traceback, int nogil); - -/* CallableCheck.proto */ -#if CYTHON_USE_TYPE_SLOTS && PY_MAJOR_VERSION >= 3 -#define __Pyx_PyCallable_Check(obj) ((obj)->ob_type->tp_call != NULL) -#else -#define __Pyx_PyCallable_Check(obj) PyCallable_Check(obj) -#endif - -/* pyfrozenset_new.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyFrozenSet_New(PyObject* it); - -/* py_set_remove.proto */ -static CYTHON_INLINE int __Pyx_PySet_Remove(PyObject *set, PyObject *key); - -/* SaveResetException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -#else -#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) -#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) -#endif - -/* PyErrExceptionMatches.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) -static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); -#else -#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) -#endif - -/* IterFinish.proto */ -static CYTHON_INLINE int __Pyx_IterFinish(void); - -/* set_iter.proto */ -static CYTHON_INLINE PyObject* __Pyx_set_iterator(PyObject* iterable, int is_set, - Py_ssize_t* p_orig_length, int* p_source_is_set); -static CYTHON_INLINE int __Pyx_set_iter_next( - PyObject* iter_obj, Py_ssize_t orig_length, - Py_ssize_t* ppos, PyObject **value, - int source_is_set); - -/* PySetContains.proto */ -static CYTHON_INLINE int __Pyx_PySet_ContainsTF(PyObject* key, PyObject* set, int eq); - -/* GetException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) -static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#else -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); -#endif - -/* GetModuleGlobalName.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name); - -/* GetAttr.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *); - -/* GetAttr3.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *); - -/* PyObjectLookupSpecial.proto */ -#if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name) { - PyObject *res; - PyTypeObject *tp = Py_TYPE(obj); -#if PY_MAJOR_VERSION < 3 - if (unlikely(PyInstance_Check(obj))) - return __Pyx_PyObject_GetAttrStr(obj, attr_name); -#endif - res = _PyType_Lookup(tp, attr_name); - if (likely(res)) { - descrgetfunc f = Py_TYPE(res)->tp_descr_get; - if (!f) { - Py_INCREF(res); - } else { - res = f(res, obj, (PyObject *)tp); - } - } else { - PyErr_SetObject(PyExc_AttributeError, attr_name); - } - return res; -} -#else -#define __Pyx_PyObject_LookupSpecial(o,n) __Pyx_PyObject_GetAttrStr(o,n) -#endif - -/* SwapException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#else -static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); -#endif - -/* RaiseDoubleKeywords.proto */ -static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); - -/* ParseKeywords.proto */ -static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\ - PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\ - const char* function_name); - -/* GetItemInt.proto */ -#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ - (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ - __Pyx_GetItemInt_Generic(o, to_py_func(i)))) -#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ - (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, - int wraparound, int boundscheck); -#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ - (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, - int wraparound, int boundscheck); -static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, - int is_list, int wraparound, int boundscheck); - -/* PyObject_GenericGetAttrNoDict.proto */ -#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr -#endif - -/* PyObject_GenericGetAttr.proto */ -#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr -#endif - -/* SetVTable.proto */ -static int __Pyx_SetVtable(PyObject *dict, void *vtable); - -/* GetVTable.proto */ -static void* __Pyx_GetVtable(PyObject *dict); - -/* Import.proto */ -static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); - -/* ImportFrom.proto */ -static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); - -/* FetchCommonType.proto */ -static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); - -/* CythonFunction.proto */ -#define __Pyx_CyFunction_USED 1 -#define __Pyx_CYFUNCTION_STATICMETHOD 0x01 -#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 -#define __Pyx_CYFUNCTION_CCLASS 0x04 -#define __Pyx_CyFunction_GetClosure(f)\ - (((__pyx_CyFunctionObject *) (f))->func_closure) -#define __Pyx_CyFunction_GetClassObj(f)\ - (((__pyx_CyFunctionObject *) (f))->func_classobj) -#define __Pyx_CyFunction_Defaults(type, f)\ - ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) -#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ - ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) -typedef struct { - PyCFunctionObject func; -#if PY_VERSION_HEX < 0x030500A0 - PyObject *func_weakreflist; -#endif - PyObject *func_dict; - PyObject *func_name; - PyObject *func_qualname; - PyObject *func_doc; - PyObject *func_globals; - PyObject *func_code; - PyObject *func_closure; - PyObject *func_classobj; - void *defaults; - int defaults_pyobjects; - int flags; - PyObject *defaults_tuple; - PyObject *defaults_kwdict; - PyObject *(*defaults_getter)(PyObject *); - PyObject *func_annotations; -} __pyx_CyFunctionObject; -static PyTypeObject *__pyx_CyFunctionType = 0; -#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, globals, code)\ - __Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, globals, code) -static PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml, - int flags, PyObject* qualname, - PyObject *self, - PyObject *module, PyObject *globals, - PyObject* code); -static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, - size_t size, - int pyobjects); -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, - PyObject *tuple); -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, - PyObject *dict); -static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, - PyObject *dict); -static int __pyx_CyFunction_init(void); - -/* GetNameInClass.proto */ -static PyObject *__Pyx_GetNameInClass(PyObject *nmspace, PyObject *name); - -/* Globals.proto */ -static PyObject* __Pyx_Globals(void); - -/* CLineInTraceback.proto */ -#ifdef CYTHON_CLINE_IN_TRACEBACK -#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) -#else -static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); -#endif - -/* CodeObjectCache.proto */ -typedef struct { - PyCodeObject* code_object; - int code_line; -} __Pyx_CodeObjectCacheEntry; -struct __Pyx_CodeObjectCache { - int count; - int max_count; - __Pyx_CodeObjectCacheEntry* entries; -}; -static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; -static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); -static PyCodeObject *__pyx_find_code_object(int code_line); -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); - -/* AddTraceback.proto */ -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename); - -/* CIntToPy.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); - -/* CIntToPy.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); - -/* CIntFromPy.proto */ -static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); - -/* CIntFromPy.proto */ -static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); - -/* FastTypeChecks.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); -#else -#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) -#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) -#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) -#endif -#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) - -/* CheckBinaryVersion.proto */ -static int __Pyx_check_binary_version(void); - -/* PyObjectSetAttrStr.proto */ -#if CYTHON_USE_TYPE_SLOTS -#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o, n, NULL) -static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value); -#else -#define __Pyx_PyObject_DelAttrStr(o,n) PyObject_DelAttr(o,n) -#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v) -#endif - -/* VoidPtrExport.proto */ -static int __Pyx_ExportVoidPtr(PyObject *name, void *p, const char *sig); - -/* FunctionExport.proto */ -static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig); - -/* PyIdentifierFromString.proto */ -#if !defined(__Pyx_PyIdentifier_FromString) -#if PY_MAJOR_VERSION < 3 - #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s) -#else - #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s) -#endif -#endif - -/* ModuleImport.proto */ -static PyObject *__Pyx_ImportModule(const char *name); - -/* TypeImport.proto */ -static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict); - -/* VoidPtrImport.proto */ -static int __Pyx_ImportVoidPtr(PyObject *module, const char *name, void **p, const char *sig); - -/* FunctionImport.proto */ -static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig); - -/* InitStrings.proto */ -static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); - -static int __pyx_f_6gevent_6_event_17_AbstractLinkable_ready(CYTHON_UNUSED struct __pyx_obj_6gevent_6_event__AbstractLinkable *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_6_event_17_AbstractLinkable__check_and_notify(struct __pyx_obj_6gevent_6_event__AbstractLinkable *__pyx_v_self); /* proto*/ -static PyObject *__pyx_f_6gevent_6_event_17_AbstractLinkable_rawlink(struct __pyx_obj_6gevent_6_event__AbstractLinkable *__pyx_v_self, PyObject *__pyx_v_callback, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_6_event_17_AbstractLinkable_unlink(struct __pyx_obj_6gevent_6_event__AbstractLinkable *__pyx_v_self, PyObject *__pyx_v_callback, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_6_event_17_AbstractLinkable__notify_links(struct __pyx_obj_6gevent_6_event__AbstractLinkable *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_6_event_17_AbstractLinkable__wait_core(struct __pyx_obj_6gevent_6_event__AbstractLinkable *__pyx_v_self, PyObject *__pyx_v_timeout, struct __pyx_opt_args_6gevent_6_event_17_AbstractLinkable__wait_core *__pyx_optional_args); /* proto*/ -static PyObject *__pyx_f_6gevent_6_event_17_AbstractLinkable__wait_return_value(CYTHON_UNUSED struct __pyx_obj_6gevent_6_event__AbstractLinkable *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_waited, CYTHON_UNUSED PyObject *__pyx_v_wait_success); /* proto*/ -static PyObject *__pyx_f_6gevent_6_event_17_AbstractLinkable__wait(struct __pyx_obj_6gevent_6_event__AbstractLinkable *__pyx_v_self, struct __pyx_opt_args_6gevent_6_event_17_AbstractLinkable__wait *__pyx_optional_args); /* proto*/ -static int __pyx_f_6gevent_6_event_5Event_ready(struct __pyx_obj_6gevent_6_event_Event *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_6_event_5Event__wait_return_value(struct __pyx_obj_6gevent_6_event_Event *__pyx_v_self, PyObject *__pyx_v_waited, PyObject *__pyx_v_wait_success); /* proto*/ -static int __pyx_f_6gevent_6_event_11AsyncResult_ready(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ -static int __pyx_f_6gevent_6_event_11AsyncResult_successful(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_6_event_11AsyncResult_get(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_6_event_11AsyncResult_get *__pyx_optional_args); /* proto*/ -static PyObject *__pyx_f_6gevent_6_event_11AsyncResult__wait_return_value(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_waited, CYTHON_UNUSED PyObject *__pyx_v_wait_success); /* proto*/ -static PyObject *__pyx_f_6gevent_6_event_11AsyncResult_wait(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_6_event_11AsyncResult_wait *__pyx_optional_args); /* proto*/ -static int __pyx_f_6gevent_6_event_11AsyncResult_done(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ -static int __pyx_f_6gevent_6_event_11AsyncResult_cancel(CYTHON_UNUSED struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ -static int __pyx_f_6gevent_6_event_11AsyncResult_cancelled(CYTHON_UNUSED struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ - -/* Module declarations from 'cython' */ - -/* Module declarations from 'greenlet' */ - -/* Module declarations from 'gevent.__greenlet_primitives' */ -static PyTypeObject *__pyx_ptype_6gevent_21__greenlet_primitives_greenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop = 0; -static PyObject **__pyx_vp_6gevent_21__greenlet_primitives_wref = 0; -#define __pyx_v_6gevent_21__greenlet_primitives_wref (*__pyx_vp_6gevent_21__greenlet_primitives_wref) -static PyObject **__pyx_vp_6gevent_21__greenlet_primitives_BlockingSwitchOutError = 0; -#define __pyx_v_6gevent_21__greenlet_primitives_BlockingSwitchOutError (*__pyx_vp_6gevent_21__greenlet_primitives_BlockingSwitchOutError) -static int *__pyx_vp_6gevent_21__greenlet_primitives__greenlet_imported = 0; -#define __pyx_v_6gevent_21__greenlet_primitives__greenlet_imported (*__pyx_vp_6gevent_21__greenlet_primitives__greenlet_imported) - -/* Module declarations from 'gevent.__hub_local' */ -static PyObject **__pyx_vp_6gevent_11__hub_local__threadlocal = 0; -#define __pyx_v_6gevent_11__hub_local__threadlocal (*__pyx_vp_6gevent_11__hub_local__threadlocal) -static struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *(*__pyx_f_6gevent_11__hub_local_get_hub_noargs)(int __pyx_skip_dispatch); /*proto*/ - -/* Module declarations from 'gevent._event' */ -static PyTypeObject *__pyx_ptype_6gevent_6_event_greenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_6_event__AbstractLinkable = 0; -static PyTypeObject *__pyx_ptype_6gevent_6_event_Event = 0; -static PyTypeObject *__pyx_ptype_6gevent_6_event_AsyncResult = 0; -static PyObject *__pyx_v_6gevent_6_event__None = 0; -static PyObject *__pyx_v_6gevent_6_event_reraise = 0; -static PyObject *__pyx_v_6gevent_6_event_dump_traceback = 0; -static PyObject *__pyx_v_6gevent_6_event_load_traceback = 0; -static PyObject *__pyx_v_6gevent_6_event_InvalidSwitchError = 0; -static PyObject *__pyx_v_6gevent_6_event_Timeout = 0; -static int __pyx_v_6gevent_6_event__greenlet_imported; -static CYTHON_INLINE PyGreenlet *__pyx_f_6gevent_6_event_getcurrent(void); /*proto*/ -static CYTHON_INLINE void __pyx_f_6gevent_6_event_greenlet_init(void); /*proto*/ -static void __pyx_f_6gevent_6_event__init(void); /*proto*/ -#define __Pyx_MODULE_NAME "gevent._event" -extern int __pyx_module_is_main_gevent___event; -int __pyx_module_is_main_gevent___event = 0; - -/* Implementation of 'gevent._event' */ -static PyObject *__pyx_builtin___import__; -static PyObject *__pyx_builtin_NotImplementedError; -static PyObject *__pyx_builtin_TypeError; -static PyObject *__pyx_builtin_KeyError; -static const char __pyx_k_s[] = "<%s "; -static const char __pyx_k_all[] = "__all__"; -static const char __pyx_k_get[] = "get"; -static const char __pyx_k_hub[] = "hub"; -static const char __pyx_k_set[] = "set"; -static const char __pyx_k_sys[] = "sys"; -static const char __pyx_k_NONE[] = "_NONE"; -static const char __pyx_k_None[] = "_None"; -static const char __pyx_k_done[] = "done"; -static const char __pyx_k_exit[] = "__exit__"; -static const char __pyx_k_flag[] = "_flag"; -static const char __pyx_k_init[] = "__init__"; -static const char __pyx_k_main[] = "__main__"; -static const char __pyx_k_name[] = "__name__"; -static const char __pyx_k_self[] = "self"; -static const char __pyx_k_test[] = "__test__"; -static const char __pyx_k_wait[] = "wait"; -static const char __pyx_k_Event[] = "Event"; -static const char __pyx_k_block[] = "block"; -static const char __pyx_k_class[] = "__class__"; -static const char __pyx_k_clear[] = "clear"; -static const char __pyx_k_enter[] = "__enter__"; -static const char __pyx_k_isSet[] = "isSet"; -static const char __pyx_k_links[] = "_links"; -static const char __pyx_k_ready[] = "ready"; -static const char __pyx_k_slots[] = "__slots__"; -static const char __pyx_k_unset[] = "unset "; -static const char __pyx_k_value[] = "value"; -static const char __pyx_k_cancel[] = "cancel"; -static const char __pyx_k_import[] = "__import__"; -static const char __pyx_k_is_set[] = "is_set"; -static const char __pyx_k_lambda[] = "<lambda>"; -static const char __pyx_k_result[] = "result"; -static const char __pyx_k_source[] = "source"; -static const char __pyx_k_switch[] = "switch"; -static const char __pyx_k_unlink[] = "unlink"; -static const char __pyx_k_Timeout[] = "Timeout"; -static const char __pyx_k_links_s[] = " _links[%s]>"; -static const char __pyx_k_rawlink[] = "rawlink"; -static const char __pyx_k_reraise[] = "reraise"; -static const char __pyx_k_timeout[] = "timeout"; -static const char __pyx_k_value_2[] = "_value"; -static const char __pyx_k_value_r[] = "value=%r "; -static const char __pyx_k_weakref[] = "__weakref__"; -static const char __pyx_k_KeyError[] = "KeyError"; -static const char __pyx_k_callback[] = "callback"; -static const char __pyx_k_exc_info[] = "exc_info"; -static const char __pyx_k_greenlet[] = "greenlet"; -static const char __pyx_k_notifier[] = "_notifier"; -static const char __pyx_k_pyx_capi[] = "__pyx_capi__"; -static const char __pyx_k_Event_set[] = "Event.set"; -static const char __pyx_k_TypeError[] = "TypeError"; -static const char __pyx_k_cancelled[] = "cancelled"; -static const char __pyx_k_exception[] = "_exception"; -static const char __pyx_k_Event_wait[] = "Event.wait"; -static const char __pyx_k_exc_info_2[] = "_exc_info"; -static const char __pyx_k_get_nowait[] = "get_nowait"; -static const char __pyx_k_getcurrent[] = "getcurrent"; -static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__"; -static const char __pyx_k_set_result[] = "set_result"; -static const char __pyx_k_successful[] = "successful"; -static const char __pyx_k_AsyncResult[] = "AsyncResult"; -static const char __pyx_k_Event_clear[] = "Event.clear"; -static const char __pyx_k_Event_isSet[] = "Event.isSet"; -static const char __pyx_k_Event_ready[] = "Event.ready"; -static const char __pyx_k_auto_unlink[] = "auto_unlink"; -static const char __pyx_k_exception_2[] = "exception"; -static const char __pyx_k_exception_r[] = "exception=%r "; -static const char __pyx_k_Event_is_set[] = "Event.is_set"; -static const char __pyx_k_gevent__util[] = "gevent._util"; -static const char __pyx_k_handle_error[] = "handle_error"; -static const char __pyx_k_notify_links[] = "_notify_links"; -static const char __pyx_k_run_callback[] = "run_callback"; -static const char __pyx_k_s_s__links_s[] = "<%s %s _links[%s]>"; -static const char __pyx_k_gevent__event[] = "gevent._event"; -static const char __pyx_k_gevent__tblib[] = "gevent._tblib"; -static const char __pyx_k_greenlet_init[] = "greenlet_init"; -static const char __pyx_k_set_exception[] = "set_exception"; -static const char __pyx_k_dump_traceback[] = "dump_traceback"; -static const char __pyx_k_get_hub_noargs[] = "get_hub_noargs"; -static const char __pyx_k_gevent__compat[] = "gevent._compat"; -static const char __pyx_k_gevent_timeout[] = "gevent.timeout"; -static const char __pyx_k_import_c_accel[] = "import_c_accel"; -static const char __pyx_k_load_traceback[] = "load_traceback"; -static const char __pyx_k_AsyncResult_get[] = "AsyncResult.get"; -static const char __pyx_k_AsyncResult_set[] = "AsyncResult.set"; -static const char __pyx_k_imap_task_index[] = "_imap_task_index"; -static const char __pyx_k_raise_exception[] = "_raise_exception"; -static const char __pyx_k_AsyncResult_done[] = "AsyncResult.done"; -static const char __pyx_k_AsyncResult_wait[] = "AsyncResult.wait"; -static const char __pyx_k_AsyncResult_ready[] = "AsyncResult.ready"; -static const char __pyx_k_gevent__hub_local[] = "gevent._hub_local"; -static const char __pyx_k_gevent_exceptions[] = "gevent.exceptions"; -static const char __pyx_k_greenlet_imported[] = "_greenlet_imported"; -static const char __pyx_k_AsyncResult_cancel[] = "AsyncResult.cancel"; -static const char __pyx_k_AsyncResult_result[] = "AsyncResult.result"; -static const char __pyx_k_InvalidSwitchError[] = "InvalidSwitchError"; -static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; -static const char __pyx_k_start_new_or_dummy[] = "_start_new_or_dummy"; -static const char __pyx_k_Expected_callable_r[] = "Expected callable: %r"; -static const char __pyx_k_NotImplementedError[] = "NotImplementedError"; -static const char __pyx_k_src_gevent_event_py[] = "src\\gevent\\event.py"; -static const char __pyx_k_reset_internal_locks[] = "_reset_internal_locks"; -static const char __pyx_k_AsyncResult_cancelled[] = "AsyncResult.cancelled"; -static const char __pyx_k_AbstractLinkable_ready[] = "_AbstractLinkable.ready"; -static const char __pyx_k_AsyncResult_get_nowait[] = "AsyncResult.get_nowait"; -static const char __pyx_k_AsyncResult_successful[] = "AsyncResult.successful"; -static const char __pyx_k_AbstractLinkable_unlink[] = "_AbstractLinkable.unlink"; -static const char __pyx_k_AbstractLinkable_rawlink[] = "_AbstractLinkable.rawlink"; -static const char __pyx_k_AsyncResult_set_exception[] = "AsyncResult.set_exception"; -static const char __pyx_k_Event__reset_internal_locks[] = "Event._reset_internal_locks"; -static const char __pyx_k_AsyncResult__raise_exception[] = "AsyncResult._raise_exception"; -static const char __pyx_k_AbstractLinkable__notify_links[] = "_AbstractLinkable._notify_links"; -static const char __pyx_k_Basic_synchronization_primitives[] = "Basic synchronization primitives: Event and AsyncResult"; -static const char __pyx_k_Invalid_switch_into_Event_wait_r[] = "Invalid switch into Event.wait(): %r"; -static const char __pyx_k_if_we_didn_t_wait_we_should_alre[] = "if we didn't wait we should already be set"; -static PyObject *__pyx_n_s_AbstractLinkable__notify_links; -static PyObject *__pyx_n_s_AbstractLinkable_rawlink; -static PyObject *__pyx_n_s_AbstractLinkable_ready; -static PyObject *__pyx_n_s_AbstractLinkable_unlink; -static PyObject *__pyx_n_s_AsyncResult; -static PyObject *__pyx_n_s_AsyncResult__raise_exception; -static PyObject *__pyx_n_s_AsyncResult_cancel; -static PyObject *__pyx_n_s_AsyncResult_cancelled; -static PyObject *__pyx_n_s_AsyncResult_done; -static PyObject *__pyx_n_s_AsyncResult_get; -static PyObject *__pyx_n_s_AsyncResult_get_nowait; -static PyObject *__pyx_n_s_AsyncResult_ready; -static PyObject *__pyx_n_s_AsyncResult_result; -static PyObject *__pyx_n_s_AsyncResult_set; -static PyObject *__pyx_n_s_AsyncResult_set_exception; -static PyObject *__pyx_n_s_AsyncResult_successful; -static PyObject *__pyx_n_s_AsyncResult_wait; -static PyObject *__pyx_n_s_Event; -static PyObject *__pyx_n_s_Event__reset_internal_locks; -static PyObject *__pyx_n_s_Event_clear; -static PyObject *__pyx_n_s_Event_isSet; -static PyObject *__pyx_n_s_Event_is_set; -static PyObject *__pyx_n_s_Event_ready; -static PyObject *__pyx_n_s_Event_set; -static PyObject *__pyx_n_s_Event_wait; -static PyObject *__pyx_kp_s_Expected_callable_r; -static PyObject *__pyx_n_s_InvalidSwitchError; -static PyObject *__pyx_kp_s_Invalid_switch_into_Event_wait_r; -static PyObject *__pyx_n_s_KeyError; -static PyObject *__pyx_n_s_NONE; -static PyObject *__pyx_n_s_None; -static PyObject *__pyx_n_s_NotImplementedError; -static PyObject *__pyx_n_s_Timeout; -static PyObject *__pyx_n_s_TypeError; -static PyObject *__pyx_n_s_all; -static PyObject *__pyx_n_s_auto_unlink; -static PyObject *__pyx_n_s_block; -static PyObject *__pyx_n_s_callback; -static PyObject *__pyx_n_s_cancel; -static PyObject *__pyx_n_s_cancelled; -static PyObject *__pyx_n_s_class; -static PyObject *__pyx_n_s_clear; -static PyObject *__pyx_n_s_cline_in_traceback; -static PyObject *__pyx_n_s_done; -static PyObject *__pyx_n_s_dump_traceback; -static PyObject *__pyx_n_s_enter; -static PyObject *__pyx_n_s_exc_info; -static PyObject *__pyx_n_s_exc_info_2; -static PyObject *__pyx_n_s_exception; -static PyObject *__pyx_n_s_exception_2; -static PyObject *__pyx_kp_s_exception_r; -static PyObject *__pyx_n_s_exit; -static PyObject *__pyx_n_s_flag; -static PyObject *__pyx_n_s_get; -static PyObject *__pyx_n_s_get_hub_noargs; -static PyObject *__pyx_n_s_get_nowait; -static PyObject *__pyx_n_s_getcurrent; -static PyObject *__pyx_n_s_gevent__compat; -static PyObject *__pyx_n_s_gevent__event; -static PyObject *__pyx_n_s_gevent__hub_local; -static PyObject *__pyx_n_s_gevent__tblib; -static PyObject *__pyx_n_s_gevent__util; -static PyObject *__pyx_n_s_gevent_exceptions; -static PyObject *__pyx_n_s_gevent_timeout; -static PyObject *__pyx_n_s_greenlet; -static PyObject *__pyx_n_s_greenlet_imported; -static PyObject *__pyx_n_s_greenlet_init; -static PyObject *__pyx_n_s_handle_error; -static PyObject *__pyx_n_s_hub; -static PyObject *__pyx_kp_s_if_we_didn_t_wait_we_should_alre; -static PyObject *__pyx_n_s_imap_task_index; -static PyObject *__pyx_n_s_import; -static PyObject *__pyx_n_s_import_c_accel; -static PyObject *__pyx_n_s_init; -static PyObject *__pyx_n_s_isSet; -static PyObject *__pyx_n_s_is_set; -static PyObject *__pyx_n_s_lambda; -static PyObject *__pyx_n_s_links; -static PyObject *__pyx_kp_s_links_s; -static PyObject *__pyx_n_s_load_traceback; -static PyObject *__pyx_n_s_main; -static PyObject *__pyx_n_s_name; -static PyObject *__pyx_n_s_notifier; -static PyObject *__pyx_n_s_notify_links; -static PyObject *__pyx_n_s_pyx_capi; -static PyObject *__pyx_n_s_pyx_vtable; -static PyObject *__pyx_n_s_raise_exception; -static PyObject *__pyx_n_s_rawlink; -static PyObject *__pyx_n_s_ready; -static PyObject *__pyx_n_s_reraise; -static PyObject *__pyx_n_s_reset_internal_locks; -static PyObject *__pyx_n_s_result; -static PyObject *__pyx_n_s_run_callback; -static PyObject *__pyx_kp_s_s; -static PyObject *__pyx_kp_s_s_s__links_s; -static PyObject *__pyx_n_s_self; -static PyObject *__pyx_n_s_set; -static PyObject *__pyx_n_s_set_exception; -static PyObject *__pyx_n_s_set_result; -static PyObject *__pyx_n_s_slots; -static PyObject *__pyx_n_s_source; -static PyObject *__pyx_kp_s_src_gevent_event_py; -static PyObject *__pyx_n_s_start_new_or_dummy; -static PyObject *__pyx_n_s_successful; -static PyObject *__pyx_n_s_switch; -static PyObject *__pyx_n_s_sys; -static PyObject *__pyx_n_s_test; -static PyObject *__pyx_n_s_timeout; -static PyObject *__pyx_n_s_unlink; -static PyObject *__pyx_kp_s_unset; -static PyObject *__pyx_n_s_value; -static PyObject *__pyx_n_s_value_2; -static PyObject *__pyx_kp_s_value_r; -static PyObject *__pyx_n_s_wait; -static PyObject *__pyx_n_s_weakref; -static PyObject *__pyx_lambda_funcdef_6gevent_6_event_lambda(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ -static int __pyx_pf_6gevent_6_event_17_AbstractLinkable___init__(struct __pyx_obj_6gevent_6_event__AbstractLinkable *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_event_17_AbstractLinkable_2ready(struct __pyx_obj_6gevent_6_event__AbstractLinkable *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_event_17_AbstractLinkable_4rawlink(struct __pyx_obj_6gevent_6_event__AbstractLinkable *__pyx_v_self, PyObject *__pyx_v_callback); /* proto */ -static PyObject *__pyx_pf_6gevent_6_event_17_AbstractLinkable_6unlink(struct __pyx_obj_6gevent_6_event__AbstractLinkable *__pyx_v_self, PyObject *__pyx_v_callback); /* proto */ -static PyObject *__pyx_pf_6gevent_6_event_17_AbstractLinkable_8_notify_links(struct __pyx_obj_6gevent_6_event__AbstractLinkable *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_event_17_AbstractLinkable_3hub___get__(struct __pyx_obj_6gevent_6_event__AbstractLinkable *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_6_event_5Event___init__(struct __pyx_obj_6gevent_6_event_Event *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_event_5Event_2__str__(struct __pyx_obj_6gevent_6_event_Event *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_event_5Event_4is_set(struct __pyx_obj_6gevent_6_event_Event *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_event_5Event_6isSet(struct __pyx_obj_6gevent_6_event_Event *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_event_5Event_8ready(struct __pyx_obj_6gevent_6_event_Event *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_event_5Event_10set(struct __pyx_obj_6gevent_6_event_Event *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_event_5Event_12clear(struct __pyx_obj_6gevent_6_event_Event *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_event_5Event_14wait(struct __pyx_obj_6gevent_6_event_Event *__pyx_v_self, PyObject *__pyx_v_timeout); /* proto */ -static PyObject *__pyx_pf_6gevent_6_event_5Event_16_reset_internal_locks(CYTHON_UNUSED struct __pyx_obj_6gevent_6_event_Event *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_6_event_11AsyncResult___init__(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_10_exception___get__(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_5value___get__(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_8exc_info___get__(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_2__str__(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_4ready(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_6successful(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_9exception___get__(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_8set(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_10set_exception(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self, PyObject *__pyx_v_exception, PyObject *__pyx_v_exc_info); /* proto */ -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_12_raise_exception(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_14get(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self, PyObject *__pyx_v_block, PyObject *__pyx_v_timeout); /* proto */ -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_16get_nowait(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_18wait(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self, PyObject *__pyx_v_timeout); /* proto */ -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_20__call__(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self, PyObject *__pyx_v_source); /* proto */ -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_22result(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self, PyObject *__pyx_v_timeout); /* proto */ -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_24done(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_26cancel(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_28cancelled(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_6_value___get__(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_9_exc_info___get__(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_16_imap_task_index___get__(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_6_event_11AsyncResult_16_imap_task_index_2__set__(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static PyObject *__pyx_tp_new_6gevent_6_event__AbstractLinkable(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_6_event_Event(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_6_event_AsyncResult(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_k_; -static PyObject *__pyx_tuple__2; -static PyObject *__pyx_tuple__3; -static PyObject *__pyx_tuple__4; -static PyObject *__pyx_tuple__5; -static PyObject *__pyx_tuple__6; -static PyObject *__pyx_tuple__7; -static PyObject *__pyx_tuple__9; -static PyObject *__pyx_tuple__11; -static PyObject *__pyx_tuple__13; -static PyObject *__pyx_tuple__15; -static PyObject *__pyx_tuple__16; -static PyObject *__pyx_tuple__18; -static PyObject *__pyx_tuple__20; -static PyObject *__pyx_tuple__22; -static PyObject *__pyx_tuple__24; -static PyObject *__pyx_tuple__26; -static PyObject *__pyx_tuple__28; -static PyObject *__pyx_tuple__30; -static PyObject *__pyx_tuple__31; -static PyObject *__pyx_tuple__33; -static PyObject *__pyx_tuple__35; -static PyObject *__pyx_tuple__37; -static PyObject *__pyx_tuple__39; -static PyObject *__pyx_tuple__41; -static PyObject *__pyx_tuple__43; -static PyObject *__pyx_tuple__45; -static PyObject *__pyx_tuple__47; -static PyObject *__pyx_tuple__49; -static PyObject *__pyx_tuple__51; -static PyObject *__pyx_tuple__53; -static PyObject *__pyx_codeobj__8; -static PyObject *__pyx_codeobj__10; -static PyObject *__pyx_codeobj__12; -static PyObject *__pyx_codeobj__14; -static PyObject *__pyx_codeobj__17; -static PyObject *__pyx_codeobj__19; -static PyObject *__pyx_codeobj__21; -static PyObject *__pyx_codeobj__23; -static PyObject *__pyx_codeobj__25; -static PyObject *__pyx_codeobj__27; -static PyObject *__pyx_codeobj__29; -static PyObject *__pyx_codeobj__32; -static PyObject *__pyx_codeobj__34; -static PyObject *__pyx_codeobj__36; -static PyObject *__pyx_codeobj__38; -static PyObject *__pyx_codeobj__40; -static PyObject *__pyx_codeobj__42; -static PyObject *__pyx_codeobj__44; -static PyObject *__pyx_codeobj__46; -static PyObject *__pyx_codeobj__48; -static PyObject *__pyx_codeobj__50; -static PyObject *__pyx_codeobj__52; -static PyObject *__pyx_codeobj__54; -/* Late includes */ - -/* "src/gevent/event.py":24 - * - * locals()['getcurrent'] = __import__('greenlet').getcurrent - * locals()['greenlet_init'] = lambda: None # <<<<<<<<<<<<<< - * - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_event_lambda(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyMethodDef __pyx_mdef_6gevent_6_event_lambda = {"lambda", (PyCFunction)__pyx_pw_6gevent_6_event_lambda, METH_NOARGS, 0}; -static PyObject *__pyx_pw_6gevent_6_event_lambda(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("lambda (wrapper)", 0); - __pyx_r = __pyx_lambda_funcdef_6gevent_6_event_lambda(__pyx_self); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_lambda_funcdef_6gevent_6_event_lambda(CYTHON_UNUSED PyObject *__pyx_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("lambda", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":33 - * __slots__ = ('_links', 'hub', '_notifier') - * - * def __init__(self): # <<<<<<<<<<<<<< - * # Also previously, AsyncResult maintained the order of notifications, but Event - * # did not; this implementation does not. (Event also only call callbacks one - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_6_event_17_AbstractLinkable_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_6_event_17_AbstractLinkable_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;} - if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1; - __pyx_r = __pyx_pf_6gevent_6_event_17_AbstractLinkable___init__(((struct __pyx_obj_6gevent_6_event__AbstractLinkable *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_6_event_17_AbstractLinkable___init__(struct __pyx_obj_6gevent_6_event__AbstractLinkable *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__init__", 0); - - /* "src/gevent/event.py":44 - * # be an argument to maintain order. (One easy way to do that while guaranteeing - * # uniqueness would be with a 2.7+ OrderedDict.) - * self._links = set() # <<<<<<<<<<<<<< - * self.hub = get_hub() - * self._notifier = None - */ - __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 44, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->_links); - __Pyx_DECREF(__pyx_v_self->_links); - __pyx_v_self->_links = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/event.py":45 - * # uniqueness would be with a 2.7+ OrderedDict.) - * self._links = set() - * self.hub = get_hub() # <<<<<<<<<<<<<< - * self._notifier = None - * - */ - __pyx_t_1 = ((PyObject *)__pyx_f_6gevent_11__hub_local_get_hub_noargs(0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 45, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->hub); - __Pyx_DECREF(((PyObject *)__pyx_v_self->hub)); - __pyx_v_self->hub = ((struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/event.py":46 - * self._links = set() - * self.hub = get_hub() - * self._notifier = None # <<<<<<<<<<<<<< - * - * def ready(self): - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->_notifier); - __Pyx_DECREF(__pyx_v_self->_notifier); - __pyx_v_self->_notifier = Py_None; - - /* "src/gevent/event.py":33 - * __slots__ = ('_links', 'hub', '_notifier') - * - * def __init__(self): # <<<<<<<<<<<<<< - * # Also previously, AsyncResult maintained the order of notifications, but Event - * # did not; this implementation does not. (Event also only call callbacks one - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._event._AbstractLinkable.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":48 - * self._notifier = None - * - * def ready(self): # <<<<<<<<<<<<<< - * # Instances must define this - * raise NotImplementedError() - */ - -static PyObject *__pyx_pw_6gevent_6_event_17_AbstractLinkable_3ready(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static int __pyx_f_6gevent_6_event_17_AbstractLinkable_ready(CYTHON_UNUSED struct __pyx_obj_6gevent_6_event__AbstractLinkable *__pyx_v_self, int __pyx_skip_dispatch) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - __Pyx_RefNannySetupContext("ready", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_ready); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 48, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_6_event_17_AbstractLinkable_3ready)) { - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 48, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 48, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 48, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_5; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/event.py":50 - * def ready(self): - * # Instances must define this - * raise NotImplementedError() # <<<<<<<<<<<<<< - * - * def _check_and_notify(self): - */ - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_builtin_NotImplementedError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 50, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 50, __pyx_L1_error) - - /* "src/gevent/event.py":48 - * self._notifier = None - * - * def ready(self): # <<<<<<<<<<<<<< - * # Instances must define this - * raise NotImplementedError() - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_WriteUnraisable("gevent._event._AbstractLinkable.ready", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); - __pyx_r = 0; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_event_17_AbstractLinkable_3ready(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_event_17_AbstractLinkable_2ready[] = "_AbstractLinkable.ready(self) -> bool"; -static PyMethodDef __pyx_mdef_6gevent_6_event_17_AbstractLinkable_3ready = {"ready", (PyCFunction)__pyx_pw_6gevent_6_event_17_AbstractLinkable_3ready, METH_NOARGS, __pyx_doc_6gevent_6_event_17_AbstractLinkable_2ready}; -static PyObject *__pyx_pw_6gevent_6_event_17_AbstractLinkable_3ready(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("ready (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_event_17_AbstractLinkable_2ready(((struct __pyx_obj_6gevent_6_event__AbstractLinkable *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_event_17_AbstractLinkable_2ready(struct __pyx_obj_6gevent_6_event__AbstractLinkable *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("ready", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_f_6gevent_6_event_17_AbstractLinkable_ready(__pyx_v_self, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 48, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._event._AbstractLinkable.ready", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":52 - * raise NotImplementedError() - * - * def _check_and_notify(self): # <<<<<<<<<<<<<< - * # If this object is ready to be notified, begin the process. - * if self.ready(): - */ - -static PyObject *__pyx_f_6gevent_6_event_17_AbstractLinkable__check_and_notify(struct __pyx_obj_6gevent_6_event__AbstractLinkable *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - __Pyx_RefNannySetupContext("_check_and_notify", 0); - - /* "src/gevent/event.py":54 - * def _check_and_notify(self): - * # If this object is ready to be notified, begin the process. - * if self.ready(): # <<<<<<<<<<<<<< - * if self._links and not self._notifier: - * self._notifier = self.hub.loop.run_callback(self._notify_links) - */ - __pyx_t_1 = (((struct __pyx_vtabstruct_6gevent_6_event__AbstractLinkable *)__pyx_v_self->__pyx_vtab)->ready(__pyx_v_self, 0) != 0); - if (__pyx_t_1) { - - /* "src/gevent/event.py":55 - * # If this object is ready to be notified, begin the process. - * if self.ready(): - * if self._links and not self._notifier: # <<<<<<<<<<<<<< - * self._notifier = self.hub.loop.run_callback(self._notify_links) - * - */ - __pyx_t_2 = (__pyx_v_self->_links != Py_None)&&(PySet_GET_SIZE(__pyx_v_self->_links) != 0); - if (__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L5_bool_binop_done; - } - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->_notifier); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 55, __pyx_L1_error) - __pyx_t_3 = ((!__pyx_t_2) != 0); - __pyx_t_1 = __pyx_t_3; - __pyx_L5_bool_binop_done:; - if (__pyx_t_1) { - - /* "src/gevent/event.py":56 - * if self.ready(): - * if self._links and not self._notifier: - * self._notifier = self.hub.loop.run_callback(self._notify_links) # <<<<<<<<<<<<<< - * - * def rawlink(self, callback): - */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->hub->loop, __pyx_n_s_run_callback); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_notify_links); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_7); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - } - } - if (!__pyx_t_7) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_4); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_6}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_6}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } else - #endif - { - __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL; - __Pyx_GIVEREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_6); - __pyx_t_6 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } - } - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GIVEREF(__pyx_t_4); - __Pyx_GOTREF(__pyx_v_self->_notifier); - __Pyx_DECREF(__pyx_v_self->_notifier); - __pyx_v_self->_notifier = __pyx_t_4; - __pyx_t_4 = 0; - - /* "src/gevent/event.py":55 - * # If this object is ready to be notified, begin the process. - * if self.ready(): - * if self._links and not self._notifier: # <<<<<<<<<<<<<< - * self._notifier = self.hub.loop.run_callback(self._notify_links) - * - */ - } - - /* "src/gevent/event.py":54 - * def _check_and_notify(self): - * # If this object is ready to be notified, begin the process. - * if self.ready(): # <<<<<<<<<<<<<< - * if self._links and not self._notifier: - * self._notifier = self.hub.loop.run_callback(self._notify_links) - */ - } - - /* "src/gevent/event.py":52 - * raise NotImplementedError() - * - * def _check_and_notify(self): # <<<<<<<<<<<<<< - * # If this object is ready to be notified, begin the process. - * if self.ready(): - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_AddTraceback("gevent._event._AbstractLinkable._check_and_notify", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":58 - * self._notifier = self.hub.loop.run_callback(self._notify_links) - * - * def rawlink(self, callback): # <<<<<<<<<<<<<< - * """ - * Register a callback to call when this object is ready. - */ - -static PyObject *__pyx_pw_6gevent_6_event_17_AbstractLinkable_5rawlink(PyObject *__pyx_v_self, PyObject *__pyx_v_callback); /*proto*/ -static PyObject *__pyx_f_6gevent_6_event_17_AbstractLinkable_rawlink(struct __pyx_obj_6gevent_6_event__AbstractLinkable *__pyx_v_self, PyObject *__pyx_v_callback, int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - int __pyx_t_7; - int __pyx_t_8; - __Pyx_RefNannySetupContext("rawlink", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rawlink); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 58, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_6_event_17_AbstractLinkable_5rawlink)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (!__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_callback); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 58, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_callback}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 58, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_callback}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 58, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 58, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_INCREF(__pyx_v_callback); - __Pyx_GIVEREF(__pyx_v_callback); - PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_callback); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 58, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/event.py":65 - * *callback* will be passed one argument: this instance. - * """ - * if not callable(callback): # <<<<<<<<<<<<<< - * raise TypeError('Expected callable: %r' % (callback, )) - * self._links.add(callback) - */ - __pyx_t_6 = __Pyx_PyCallable_Check(__pyx_v_callback); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 65, __pyx_L1_error) - __pyx_t_7 = ((!(__pyx_t_6 != 0)) != 0); - if (unlikely(__pyx_t_7)) { - - /* "src/gevent/event.py":66 - * """ - * if not callable(callback): - * raise TypeError('Expected callable: %r' % (callback, )) # <<<<<<<<<<<<<< - * self._links.add(callback) - * self._check_and_notify() - */ - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 66, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_v_callback); - __Pyx_GIVEREF(__pyx_v_callback); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_callback); - __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_Expected_callable_r, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 66, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 66, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 66, __pyx_L1_error) - - /* "src/gevent/event.py":65 - * *callback* will be passed one argument: this instance. - * """ - * if not callable(callback): # <<<<<<<<<<<<<< - * raise TypeError('Expected callable: %r' % (callback, )) - * self._links.add(callback) - */ - } - - /* "src/gevent/event.py":67 - * if not callable(callback): - * raise TypeError('Expected callable: %r' % (callback, )) - * self._links.add(callback) # <<<<<<<<<<<<<< - * self._check_and_notify() - * - */ - if (unlikely(__pyx_v_self->_links == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "add"); - __PYX_ERR(0, 67, __pyx_L1_error) - } - __pyx_t_8 = PySet_Add(__pyx_v_self->_links, __pyx_v_callback); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 67, __pyx_L1_error) - - /* "src/gevent/event.py":68 - * raise TypeError('Expected callable: %r' % (callback, )) - * self._links.add(callback) - * self._check_and_notify() # <<<<<<<<<<<<<< - * - * def unlink(self, callback): - */ - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_6_event__AbstractLinkable *)__pyx_v_self->__pyx_vtab)->_check_and_notify(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 68, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/event.py":58 - * self._notifier = self.hub.loop.run_callback(self._notify_links) - * - * def rawlink(self, callback): # <<<<<<<<<<<<<< - * """ - * Register a callback to call when this object is ready. - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent._event._AbstractLinkable.rawlink", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_event_17_AbstractLinkable_5rawlink(PyObject *__pyx_v_self, PyObject *__pyx_v_callback); /*proto*/ -static char __pyx_doc_6gevent_6_event_17_AbstractLinkable_4rawlink[] = "_AbstractLinkable.rawlink(self, callback)\n\n Register a callback to call when this object is ready.\n\n *callback* will be called in the :class:`Hub <gevent.hub.Hub>`, so it must not use blocking gevent API.\n *callback* will be passed one argument: this instance.\n "; -static PyMethodDef __pyx_mdef_6gevent_6_event_17_AbstractLinkable_5rawlink = {"rawlink", (PyCFunction)__pyx_pw_6gevent_6_event_17_AbstractLinkable_5rawlink, METH_O, __pyx_doc_6gevent_6_event_17_AbstractLinkable_4rawlink}; -static PyObject *__pyx_pw_6gevent_6_event_17_AbstractLinkable_5rawlink(PyObject *__pyx_v_self, PyObject *__pyx_v_callback) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("rawlink (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_event_17_AbstractLinkable_4rawlink(((struct __pyx_obj_6gevent_6_event__AbstractLinkable *)__pyx_v_self), ((PyObject *)__pyx_v_callback)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_event_17_AbstractLinkable_4rawlink(struct __pyx_obj_6gevent_6_event__AbstractLinkable *__pyx_v_self, PyObject *__pyx_v_callback) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("rawlink", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_6_event_17_AbstractLinkable_rawlink(__pyx_v_self, __pyx_v_callback, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 58, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._event._AbstractLinkable.rawlink", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":70 - * self._check_and_notify() - * - * def unlink(self, callback): # <<<<<<<<<<<<<< - * """Remove the callback set by :meth:`rawlink`""" - * try: - */ - -static PyObject *__pyx_pw_6gevent_6_event_17_AbstractLinkable_7unlink(PyObject *__pyx_v_self, PyObject *__pyx_v_callback); /*proto*/ -static PyObject *__pyx_f_6gevent_6_event_17_AbstractLinkable_unlink(struct __pyx_obj_6gevent_6_event__AbstractLinkable *__pyx_v_self, PyObject *__pyx_v_callback, int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - int __pyx_t_9; - int __pyx_t_10; - __Pyx_RefNannySetupContext("unlink", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_unlink); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 70, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_6_event_17_AbstractLinkable_7unlink)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (!__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_callback); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 70, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_callback}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 70, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_callback}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 70, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 70, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_INCREF(__pyx_v_callback); - __Pyx_GIVEREF(__pyx_v_callback); - PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_callback); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 70, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/event.py":72 - * def unlink(self, callback): - * """Remove the callback set by :meth:`rawlink`""" - * try: # <<<<<<<<<<<<<< - * self._links.remove(callback) - * except KeyError: - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8); - __Pyx_XGOTREF(__pyx_t_6); - __Pyx_XGOTREF(__pyx_t_7); - __Pyx_XGOTREF(__pyx_t_8); - /*try:*/ { - - /* "src/gevent/event.py":73 - * """Remove the callback set by :meth:`rawlink`""" - * try: - * self._links.remove(callback) # <<<<<<<<<<<<<< - * except KeyError: - * pass - */ - if (unlikely(__pyx_v_self->_links == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "remove"); - __PYX_ERR(0, 73, __pyx_L3_error) - } - __pyx_t_9 = __Pyx_PySet_Remove(__pyx_v_self->_links, __pyx_v_callback); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 73, __pyx_L3_error) - - /* "src/gevent/event.py":72 - * def unlink(self, callback): - * """Remove the callback set by :meth:`rawlink`""" - * try: # <<<<<<<<<<<<<< - * self._links.remove(callback) - * except KeyError: - */ - } - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - goto __pyx_L8_try_end; - __pyx_L3_error:; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/event.py":74 - * try: - * self._links.remove(callback) - * except KeyError: # <<<<<<<<<<<<<< - * pass - * - */ - __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError); - if (__pyx_t_10) { - __Pyx_ErrRestore(0,0,0); - goto __pyx_L4_exception_handled; - } - goto __pyx_L5_except_error; - __pyx_L5_except_error:; - - /* "src/gevent/event.py":72 - * def unlink(self, callback): - * """Remove the callback set by :meth:`rawlink`""" - * try: # <<<<<<<<<<<<<< - * self._links.remove(callback) - * except KeyError: - */ - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); - goto __pyx_L1_error; - __pyx_L4_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); - __pyx_L8_try_end:; - } - - /* "src/gevent/event.py":70 - * self._check_and_notify() - * - * def unlink(self, callback): # <<<<<<<<<<<<<< - * """Remove the callback set by :meth:`rawlink`""" - * try: - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent._event._AbstractLinkable.unlink", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_event_17_AbstractLinkable_7unlink(PyObject *__pyx_v_self, PyObject *__pyx_v_callback); /*proto*/ -static char __pyx_doc_6gevent_6_event_17_AbstractLinkable_6unlink[] = "_AbstractLinkable.unlink(self, callback)\nRemove the callback set by :meth:`rawlink`"; -static PyMethodDef __pyx_mdef_6gevent_6_event_17_AbstractLinkable_7unlink = {"unlink", (PyCFunction)__pyx_pw_6gevent_6_event_17_AbstractLinkable_7unlink, METH_O, __pyx_doc_6gevent_6_event_17_AbstractLinkable_6unlink}; -static PyObject *__pyx_pw_6gevent_6_event_17_AbstractLinkable_7unlink(PyObject *__pyx_v_self, PyObject *__pyx_v_callback) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("unlink (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_event_17_AbstractLinkable_6unlink(((struct __pyx_obj_6gevent_6_event__AbstractLinkable *)__pyx_v_self), ((PyObject *)__pyx_v_callback)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_event_17_AbstractLinkable_6unlink(struct __pyx_obj_6gevent_6_event__AbstractLinkable *__pyx_v_self, PyObject *__pyx_v_callback) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("unlink", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_6_event_17_AbstractLinkable_unlink(__pyx_v_self, __pyx_v_callback, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 70, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._event._AbstractLinkable.unlink", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":77 - * pass - * - * def _notify_links(self): # <<<<<<<<<<<<<< - * # Actually call the notification callbacks. Those callbacks in todo that are - * # still in _links are called. This method is careful to avoid iterating - */ - -static PyObject *__pyx_pw_6gevent_6_event_17_AbstractLinkable_9_notify_links(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_f_6gevent_6_event_17_AbstractLinkable__notify_links(struct __pyx_obj_6gevent_6_event__AbstractLinkable *__pyx_v_self, int __pyx_skip_dispatch) { - PyObject *__pyx_v_todo = 0; - PyObject *__pyx_v_link = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - Py_ssize_t __pyx_t_5; - Py_ssize_t __pyx_t_6; - int __pyx_t_7; - int __pyx_t_8; - int __pyx_t_9; - int __pyx_t_10; - PyObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; - PyObject *__pyx_t_13 = NULL; - PyObject *__pyx_t_14 = NULL; - PyObject *__pyx_t_15 = NULL; - PyObject *__pyx_t_16 = NULL; - PyObject *__pyx_t_17 = NULL; - PyObject *__pyx_t_18 = NULL; - __Pyx_RefNannySetupContext("_notify_links", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_notify_links); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 77, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_6_event_17_AbstractLinkable_9_notify_links)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 77, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 77, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/event.py":88 - * # this callback; any links removed between now and then are handled - * # by the `if` below; any links added are also grabbed - * todo = set(self._links) # <<<<<<<<<<<<<< - * for link in todo: - * # check that link was not notified yet and was not removed by the client - */ - __pyx_t_1 = PySet_New(__pyx_v_self->_links); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 88, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_todo = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/event.py":89 - * # by the `if` below; any links added are also grabbed - * todo = set(self._links) - * for link in todo: # <<<<<<<<<<<<<< - * # check that link was not notified yet and was not removed by the client - * # We have to do this here, and not as part of the 'for' statement because - */ - __pyx_t_5 = 0; - __pyx_t_2 = __Pyx_set_iterator(__pyx_v_todo, 1, (&__pyx_t_6), (&__pyx_t_7)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 89, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_1); - __pyx_t_1 = __pyx_t_2; - __pyx_t_2 = 0; - while (1) { - __pyx_t_8 = __Pyx_set_iter_next(__pyx_t_1, __pyx_t_6, &__pyx_t_5, &__pyx_t_2, __pyx_t_7); - if (unlikely(__pyx_t_8 == 0)) break; - if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 89, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_XDECREF_SET(__pyx_v_link, __pyx_t_2); - __pyx_t_2 = 0; - - /* "src/gevent/event.py":93 - * # We have to do this here, and not as part of the 'for' statement because - * # a previous link(self) call might have altered self._links - * if link in self._links: # <<<<<<<<<<<<<< - * try: - * link(self) - */ - if (unlikely(__pyx_v_self->_links == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 93, __pyx_L1_error) - } - __pyx_t_9 = (__Pyx_PySet_ContainsTF(__pyx_v_link, __pyx_v_self->_links, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 93, __pyx_L1_error) - __pyx_t_10 = (__pyx_t_9 != 0); - if (__pyx_t_10) { - - /* "src/gevent/event.py":94 - * # a previous link(self) call might have altered self._links - * if link in self._links: - * try: # <<<<<<<<<<<<<< - * link(self) - * except: # pylint:disable=bare-except - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13); - __Pyx_XGOTREF(__pyx_t_11); - __Pyx_XGOTREF(__pyx_t_12); - __Pyx_XGOTREF(__pyx_t_13); - /*try:*/ { - - /* "src/gevent/event.py":95 - * if link in self._links: - * try: - * link(self) # <<<<<<<<<<<<<< - * except: # pylint:disable=bare-except - * self.hub.handle_error((link, self), *sys.exc_info()) - */ - __Pyx_INCREF(__pyx_v_link); - __pyx_t_3 = __pyx_v_link; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (!__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 95, __pyx_L6_error) - __Pyx_GOTREF(__pyx_t_2); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, ((PyObject *)__pyx_v_self)}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 95, __pyx_L6_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, ((PyObject *)__pyx_v_self)}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 95, __pyx_L6_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 95, __pyx_L6_error) - __Pyx_GOTREF(__pyx_t_14); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_14, 0+1, ((PyObject *)__pyx_v_self)); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_14, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 95, __pyx_L6_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - } - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/event.py":94 - * # a previous link(self) call might have altered self._links - * if link in self._links: - * try: # <<<<<<<<<<<<<< - * link(self) - * except: # pylint:disable=bare-except - */ - } - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; - goto __pyx_L13_try_end; - __pyx_L6_error:; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/event.py":96 - * try: - * link(self) - * except: # pylint:disable=bare-except # <<<<<<<<<<<<<< - * self.hub.handle_error((link, self), *sys.exc_info()) - * if getattr(link, 'auto_unlink', None): - */ - /*except:*/ { - __Pyx_AddTraceback("gevent._event._AbstractLinkable._notify_links", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_14) < 0) __PYX_ERR(0, 96, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GOTREF(__pyx_t_14); - - /* "src/gevent/event.py":97 - * link(self) - * except: # pylint:disable=bare-except - * self.hub.handle_error((link, self), *sys.exc_info()) # <<<<<<<<<<<<<< - * if getattr(link, 'auto_unlink', None): - * # This attribute can avoid having to keep a reference to the function - */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->hub), __pyx_n_s_handle_error); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 97, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_15 = PyTuple_New(2); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 97, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_15); - __Pyx_INCREF(__pyx_v_link); - __Pyx_GIVEREF(__pyx_v_link); - PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_v_link); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_15, 1, ((PyObject *)__pyx_v_self)); - __pyx_t_16 = PyTuple_New(1); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 97, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_16); - __Pyx_GIVEREF(__pyx_t_15); - PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_15); - __pyx_t_15 = 0; - __pyx_t_17 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 97, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_17); - __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_t_17, __pyx_n_s_exc_info); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 97, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_18); - __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; - __pyx_t_17 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_18))) { - __pyx_t_17 = PyMethod_GET_SELF(__pyx_t_18); - if (likely(__pyx_t_17)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_18); - __Pyx_INCREF(__pyx_t_17); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_18, function); - } - } - if (__pyx_t_17) { - __pyx_t_15 = __Pyx_PyObject_CallOneArg(__pyx_t_18, __pyx_t_17); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 97, __pyx_L8_except_error) - __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; - } else { - __pyx_t_15 = __Pyx_PyObject_CallNoArg(__pyx_t_18); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 97, __pyx_L8_except_error) - } - __Pyx_GOTREF(__pyx_t_15); - __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; - __pyx_t_18 = __Pyx_PySequence_Tuple(__pyx_t_15); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 97, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_18); - __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; - __pyx_t_15 = PyNumber_Add(__pyx_t_16, __pyx_t_18); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 97, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_15); - __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; - __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; - __pyx_t_18 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_15, NULL); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 97, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_18); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; - __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - goto __pyx_L7_exception_handled; - } - __pyx_L8_except_error:; - - /* "src/gevent/event.py":94 - * # a previous link(self) call might have altered self._links - * if link in self._links: - * try: # <<<<<<<<<<<<<< - * link(self) - * except: # pylint:disable=bare-except - */ - __Pyx_XGIVEREF(__pyx_t_11); - __Pyx_XGIVEREF(__pyx_t_12); - __Pyx_XGIVEREF(__pyx_t_13); - __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13); - goto __pyx_L1_error; - __pyx_L7_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_11); - __Pyx_XGIVEREF(__pyx_t_12); - __Pyx_XGIVEREF(__pyx_t_13); - __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13); - __pyx_L13_try_end:; - } - - /* "src/gevent/event.py":98 - * except: # pylint:disable=bare-except - * self.hub.handle_error((link, self), *sys.exc_info()) - * if getattr(link, 'auto_unlink', None): # <<<<<<<<<<<<<< - * # This attribute can avoid having to keep a reference to the function - * # *in* the function, which is a cycle - */ - __pyx_t_14 = __Pyx_GetAttr3(__pyx_v_link, __pyx_n_s_auto_unlink, Py_None); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 98, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_14); - __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_14); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 98, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - if (__pyx_t_10) { - - /* "src/gevent/event.py":101 - * # This attribute can avoid having to keep a reference to the function - * # *in* the function, which is a cycle - * self.unlink(link) # <<<<<<<<<<<<<< - * - * # save a tiny bit of memory by letting _notifier be collected - */ - __pyx_t_14 = ((struct __pyx_vtabstruct_6gevent_6_event__AbstractLinkable *)__pyx_v_self->__pyx_vtab)->unlink(__pyx_v_self, __pyx_v_link, 0); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 101, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_14); - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - - /* "src/gevent/event.py":98 - * except: # pylint:disable=bare-except - * self.hub.handle_error((link, self), *sys.exc_info()) - * if getattr(link, 'auto_unlink', None): # <<<<<<<<<<<<<< - * # This attribute can avoid having to keep a reference to the function - * # *in* the function, which is a cycle - */ - } - - /* "src/gevent/event.py":93 - * # We have to do this here, and not as part of the 'for' statement because - * # a previous link(self) call might have altered self._links - * if link in self._links: # <<<<<<<<<<<<<< - * try: - * link(self) - */ - } - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/event.py":106 - * # bool(self._notifier) would turn to False as soon as we exit this - * # method anyway. - * del todo # <<<<<<<<<<<<<< - * self._notifier = None - * - */ - __Pyx_DECREF(__pyx_v_todo); - __pyx_v_todo = NULL; - - /* "src/gevent/event.py":107 - * # method anyway. - * del todo - * self._notifier = None # <<<<<<<<<<<<<< - * - * def _wait_core(self, timeout, catch=Timeout): - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->_notifier); - __Pyx_DECREF(__pyx_v_self->_notifier); - __pyx_v_self->_notifier = Py_None; - - /* "src/gevent/event.py":77 - * pass - * - * def _notify_links(self): # <<<<<<<<<<<<<< - * # Actually call the notification callbacks. Those callbacks in todo that are - * # still in _links are called. This method is careful to avoid iterating - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_14); - __Pyx_XDECREF(__pyx_t_15); - __Pyx_XDECREF(__pyx_t_16); - __Pyx_XDECREF(__pyx_t_17); - __Pyx_XDECREF(__pyx_t_18); - __Pyx_AddTraceback("gevent._event._AbstractLinkable._notify_links", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_todo); - __Pyx_XDECREF(__pyx_v_link); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_event_17_AbstractLinkable_9_notify_links(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_event_17_AbstractLinkable_8_notify_links[] = "_AbstractLinkable._notify_links(self)"; -static PyMethodDef __pyx_mdef_6gevent_6_event_17_AbstractLinkable_9_notify_links = {"_notify_links", (PyCFunction)__pyx_pw_6gevent_6_event_17_AbstractLinkable_9_notify_links, METH_NOARGS, __pyx_doc_6gevent_6_event_17_AbstractLinkable_8_notify_links}; -static PyObject *__pyx_pw_6gevent_6_event_17_AbstractLinkable_9_notify_links(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_notify_links (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_event_17_AbstractLinkable_8_notify_links(((struct __pyx_obj_6gevent_6_event__AbstractLinkable *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_event_17_AbstractLinkable_8_notify_links(struct __pyx_obj_6gevent_6_event__AbstractLinkable *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_notify_links", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_6_event_17_AbstractLinkable__notify_links(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 77, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._event._AbstractLinkable._notify_links", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":109 - * self._notifier = None - * - * def _wait_core(self, timeout, catch=Timeout): # <<<<<<<<<<<<<< - * # The core of the wait implementation, handling - * # switching and linking. If *catch* is set to (), - */ - -static PyObject *__pyx_f_6gevent_6_event_17_AbstractLinkable__wait_core(struct __pyx_obj_6gevent_6_event__AbstractLinkable *__pyx_v_self, PyObject *__pyx_v_timeout, struct __pyx_opt_args_6gevent_6_event_17_AbstractLinkable__wait_core *__pyx_optional_args) { - PyObject *__pyx_v_catch = __pyx_k_; - PyObject *__pyx_v_switch = NULL; - PyObject *__pyx_v_timer = NULL; - PyObject *__pyx_v_result = NULL; - PyObject *__pyx_v_ex = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - PyObject *__pyx_t_11 = NULL; - int __pyx_t_12; - int __pyx_t_13; - PyObject *__pyx_t_14 = NULL; - int __pyx_t_15; - int __pyx_t_16; - char const *__pyx_t_17; - __Pyx_RefNannySetupContext("_wait_core", 0); - if (__pyx_optional_args) { - if (__pyx_optional_args->__pyx_n > 0) { - __pyx_v_catch = __pyx_optional_args->catch; - } - } - - /* "src/gevent/event.py":114 - * # a timeout that elapses will be allowed to be raised. - * # Returns a true value if the wait succeeded without timing out. - * switch = getcurrent().switch # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * self.rawlink(switch) - * try: - */ - __pyx_t_1 = ((PyObject *)__pyx_f_6gevent_6_event_getcurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 114, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_switch); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 114, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_switch = __pyx_t_2; - __pyx_t_2 = 0; - - /* "src/gevent/event.py":115 - * # Returns a true value if the wait succeeded without timing out. - * switch = getcurrent().switch # pylint:disable=undefined-variable - * self.rawlink(switch) # <<<<<<<<<<<<<< - * try: - * with Timeout._start_new_or_dummy(timeout) as timer: - */ - __pyx_t_2 = ((struct __pyx_vtabstruct_6gevent_6_event__AbstractLinkable *)__pyx_v_self->__pyx_vtab)->rawlink(__pyx_v_self, __pyx_v_switch, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 115, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/event.py":116 - * switch = getcurrent().switch # pylint:disable=undefined-variable - * self.rawlink(switch) - * try: # <<<<<<<<<<<<<< - * with Timeout._start_new_or_dummy(timeout) as timer: - * try: - */ - /*try:*/ { - - /* "src/gevent/event.py":117 - * self.rawlink(switch) - * try: - * with Timeout._start_new_or_dummy(timeout) as timer: # <<<<<<<<<<<<<< - * try: - * result = self.hub.switch() - */ - /*with:*/ { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_6gevent_6_event_Timeout, __pyx_n_s_start_new_or_dummy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 117, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - } - } - if (!__pyx_t_3) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_timeout); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 117, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_2); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_1)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_timeout}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 117, __pyx_L4_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_timeout}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 117, __pyx_L4_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 117, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(__pyx_v_timeout); - __Pyx_GIVEREF(__pyx_v_timeout); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_timeout); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 117, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_2, __pyx_n_s_exit); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 117, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_2, __pyx_n_s_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 117, __pyx_L6_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 117, __pyx_L6_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 117, __pyx_L6_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __pyx_t_1; - __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /*try:*/ { - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8); - __Pyx_XGOTREF(__pyx_t_6); - __Pyx_XGOTREF(__pyx_t_7); - __Pyx_XGOTREF(__pyx_t_8); - /*try:*/ { - __pyx_v_timer = __pyx_t_4; - __pyx_t_4 = 0; - - /* "src/gevent/event.py":118 - * try: - * with Timeout._start_new_or_dummy(timeout) as timer: - * try: # <<<<<<<<<<<<<< - * result = self.hub.switch() - * if result is not self: # pragma: no cover - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); - __Pyx_XGOTREF(__pyx_t_9); - __Pyx_XGOTREF(__pyx_t_10); - __Pyx_XGOTREF(__pyx_t_11); - /*try:*/ { - - /* "src/gevent/event.py":119 - * with Timeout._start_new_or_dummy(timeout) as timer: - * try: - * result = self.hub.switch() # <<<<<<<<<<<<<< - * if result is not self: # pragma: no cover - * raise InvalidSwitchError('Invalid switch into Event.wait(): %r' % (result, )) - */ - __pyx_t_4 = ((struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *)__pyx_v_self->hub->__pyx_vtab)->__pyx_switch(__pyx_v_self->hub, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 119, __pyx_L16_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_v_result = __pyx_t_4; - __pyx_t_4 = 0; - - /* "src/gevent/event.py":120 - * try: - * result = self.hub.switch() - * if result is not self: # pragma: no cover # <<<<<<<<<<<<<< - * raise InvalidSwitchError('Invalid switch into Event.wait(): %r' % (result, )) - * return True - */ - __pyx_t_12 = (__pyx_v_result != ((PyObject *)__pyx_v_self)); - __pyx_t_13 = (__pyx_t_12 != 0); - if (unlikely(__pyx_t_13)) { - - /* "src/gevent/event.py":121 - * result = self.hub.switch() - * if result is not self: # pragma: no cover - * raise InvalidSwitchError('Invalid switch into Event.wait(): %r' % (result, )) # <<<<<<<<<<<<<< - * return True - * except catch as ex: - */ - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 121, __pyx_L16_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_v_result); - __Pyx_GIVEREF(__pyx_v_result); - PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_result); - __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_switch_into_Event_wait_r, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 121, __pyx_L16_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_INCREF(__pyx_v_6gevent_6_event_InvalidSwitchError); - __pyx_t_2 = __pyx_v_6gevent_6_event_InvalidSwitchError; __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_3) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 121, __pyx_L16_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_GOTREF(__pyx_t_4); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_1}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 121, __pyx_L16_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_1}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 121, __pyx_L16_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else - #endif - { - __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 121, __pyx_L16_error) - __Pyx_GOTREF(__pyx_t_14); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_1); - __pyx_t_1 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_14, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 121, __pyx_L16_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - } - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_Raise(__pyx_t_4, 0, 0, 0); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __PYX_ERR(0, 121, __pyx_L16_error) - - /* "src/gevent/event.py":120 - * try: - * result = self.hub.switch() - * if result is not self: # pragma: no cover # <<<<<<<<<<<<<< - * raise InvalidSwitchError('Invalid switch into Event.wait(): %r' % (result, )) - * return True - */ - } - - /* "src/gevent/event.py":122 - * if result is not self: # pragma: no cover - * raise InvalidSwitchError('Invalid switch into Event.wait(): %r' % (result, )) - * return True # <<<<<<<<<<<<<< - * except catch as ex: - * if ex is not timer: - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(Py_True); - __pyx_r = Py_True; - goto __pyx_L20_try_return; - - /* "src/gevent/event.py":118 - * try: - * with Timeout._start_new_or_dummy(timeout) as timer: - * try: # <<<<<<<<<<<<<< - * result = self.hub.switch() - * if result is not self: # pragma: no cover - */ - } - __pyx_L16_error:; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "src/gevent/event.py":123 - * raise InvalidSwitchError('Invalid switch into Event.wait(): %r' % (result, )) - * return True - * except catch as ex: # <<<<<<<<<<<<<< - * if ex is not timer: - * raise - */ - __pyx_t_15 = __Pyx_PyErr_ExceptionMatches(__pyx_v_catch); - if (__pyx_t_15) { - __Pyx_AddTraceback("gevent._event._AbstractLinkable._wait_core", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_2, &__pyx_t_14) < 0) __PYX_ERR(0, 123, __pyx_L18_except_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GOTREF(__pyx_t_14); - __Pyx_INCREF(__pyx_t_2); - __pyx_v_ex = __pyx_t_2; - - /* "src/gevent/event.py":124 - * return True - * except catch as ex: - * if ex is not timer: # <<<<<<<<<<<<<< - * raise - * # test_set_and_clear and test_timeout in test_threading - */ - __pyx_t_13 = (__pyx_v_ex != __pyx_v_timer); - __pyx_t_12 = (__pyx_t_13 != 0); - if (unlikely(__pyx_t_12)) { - - /* "src/gevent/event.py":125 - * except catch as ex: - * if ex is not timer: - * raise # <<<<<<<<<<<<<< - * # test_set_and_clear and test_timeout in test_threading - * # rely on the exact return values, not just truthish-ness - */ - __Pyx_GIVEREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_14); - __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_2, __pyx_t_14); - __pyx_t_4 = 0; __pyx_t_2 = 0; __pyx_t_14 = 0; - __PYX_ERR(0, 125, __pyx_L18_except_error) - - /* "src/gevent/event.py":124 - * return True - * except catch as ex: - * if ex is not timer: # <<<<<<<<<<<<<< - * raise - * # test_set_and_clear and test_timeout in test_threading - */ - } - - /* "src/gevent/event.py":128 - * # test_set_and_clear and test_timeout in test_threading - * # rely on the exact return values, not just truthish-ness - * return False # <<<<<<<<<<<<<< - * finally: - * self.unlink(switch) - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(Py_False); - __pyx_r = Py_False; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - goto __pyx_L19_except_return; - } - goto __pyx_L18_except_error; - __pyx_L18_except_error:; - - /* "src/gevent/event.py":118 - * try: - * with Timeout._start_new_or_dummy(timeout) as timer: - * try: # <<<<<<<<<<<<<< - * result = self.hub.switch() - * if result is not self: # pragma: no cover - */ - __Pyx_XGIVEREF(__pyx_t_9); - __Pyx_XGIVEREF(__pyx_t_10); - __Pyx_XGIVEREF(__pyx_t_11); - __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11); - goto __pyx_L10_error; - __pyx_L20_try_return:; - __Pyx_XGIVEREF(__pyx_t_9); - __Pyx_XGIVEREF(__pyx_t_10); - __Pyx_XGIVEREF(__pyx_t_11); - __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11); - goto __pyx_L14_try_return; - __pyx_L19_except_return:; - __Pyx_XGIVEREF(__pyx_t_9); - __Pyx_XGIVEREF(__pyx_t_10); - __Pyx_XGIVEREF(__pyx_t_11); - __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11); - goto __pyx_L14_try_return; - } - - /* "src/gevent/event.py":117 - * self.rawlink(switch) - * try: - * with Timeout._start_new_or_dummy(timeout) as timer: # <<<<<<<<<<<<<< - * try: - * result = self.hub.switch() - */ - } - __pyx_L10_error:; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; - /*except:*/ { - __Pyx_AddTraceback("gevent._event._AbstractLinkable._wait_core", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_14, &__pyx_t_2, &__pyx_t_4) < 0) __PYX_ERR(0, 117, __pyx_L12_except_error) - __Pyx_GOTREF(__pyx_t_14); - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = PyTuple_Pack(3, __pyx_t_14, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 117, __pyx_L12_except_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 117, __pyx_L12_except_error) - __Pyx_GOTREF(__pyx_t_11); - __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_11); - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - if (__pyx_t_12 < 0) __PYX_ERR(0, 117, __pyx_L12_except_error) - __pyx_t_13 = ((!(__pyx_t_12 != 0)) != 0); - if (__pyx_t_13) { - __Pyx_GIVEREF(__pyx_t_14); - __Pyx_GIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_ErrRestoreWithState(__pyx_t_14, __pyx_t_2, __pyx_t_4); - __pyx_t_14 = 0; __pyx_t_2 = 0; __pyx_t_4 = 0; - __PYX_ERR(0, 117, __pyx_L12_except_error) - } - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - goto __pyx_L11_exception_handled; - } - __pyx_L12_except_error:; - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); - goto __pyx_L4_error; - __pyx_L14_try_return:; - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); - goto __pyx_L7_return; - __pyx_L11_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); - } - } - /*finally:*/ { - /*normal exit:*/{ - if (__pyx_t_5) { - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__2, NULL); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 117, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } - goto __pyx_L9; - } - __pyx_L7_return: { - __pyx_t_8 = __pyx_r; - __pyx_r = 0; - if (__pyx_t_5) { - __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__3, NULL); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 117, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - __pyx_r = __pyx_t_8; - __pyx_t_8 = 0; - goto __pyx_L3_return; - } - __pyx_L9:; - } - goto __pyx_L29; - __pyx_L6_error:; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - goto __pyx_L4_error; - __pyx_L29:; - } - } - - /* "src/gevent/event.py":130 - * return False - * finally: - * self.unlink(switch) # <<<<<<<<<<<<<< - * - * def _wait_return_value(self, waited, wait_success): - */ - /*finally:*/ { - /*normal exit:*/{ - __pyx_t_4 = ((struct __pyx_vtabstruct_6gevent_6_event__AbstractLinkable *)__pyx_v_self->__pyx_vtab)->unlink(__pyx_v_self, __pyx_v_switch, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 130, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - goto __pyx_L5; - } - __pyx_L4_error:; - /*exception exit:*/{ - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __pyx_t_5 = 0; __pyx_t_8 = 0; __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_11 = 0; __pyx_t_10 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_6, &__pyx_t_11, &__pyx_t_10); - if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_5, &__pyx_t_8, &__pyx_t_7) < 0)) __Pyx_ErrFetch(&__pyx_t_5, &__pyx_t_8, &__pyx_t_7); - __Pyx_XGOTREF(__pyx_t_5); - __Pyx_XGOTREF(__pyx_t_8); - __Pyx_XGOTREF(__pyx_t_7); - __Pyx_XGOTREF(__pyx_t_6); - __Pyx_XGOTREF(__pyx_t_11); - __Pyx_XGOTREF(__pyx_t_10); - __pyx_t_15 = __pyx_lineno; __pyx_t_16 = __pyx_clineno; __pyx_t_17 = __pyx_filename; - { - __pyx_t_4 = ((struct __pyx_vtabstruct_6gevent_6_event__AbstractLinkable *)__pyx_v_self->__pyx_vtab)->unlink(__pyx_v_self, __pyx_v_switch, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 130, __pyx_L31_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_XGIVEREF(__pyx_t_11); - __Pyx_XGIVEREF(__pyx_t_10); - __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_11, __pyx_t_10); - } - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_ErrRestore(__pyx_t_5, __pyx_t_8, __pyx_t_7); - __pyx_t_5 = 0; __pyx_t_8 = 0; __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_11 = 0; __pyx_t_10 = 0; - __pyx_lineno = __pyx_t_15; __pyx_clineno = __pyx_t_16; __pyx_filename = __pyx_t_17; - goto __pyx_L1_error; - __pyx_L31_error:; - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_XGIVEREF(__pyx_t_11); - __Pyx_XGIVEREF(__pyx_t_10); - __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_11, __pyx_t_10); - } - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_6 = 0; __pyx_t_11 = 0; __pyx_t_10 = 0; - goto __pyx_L1_error; - } - __pyx_L3_return: { - __pyx_t_10 = __pyx_r; - __pyx_r = 0; - __pyx_t_4 = ((struct __pyx_vtabstruct_6gevent_6_event__AbstractLinkable *)__pyx_v_self->__pyx_vtab)->unlink(__pyx_v_self, __pyx_v_switch, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 130, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_r = __pyx_t_10; - __pyx_t_10 = 0; - goto __pyx_L0; - } - __pyx_L5:; - } - - /* "src/gevent/event.py":109 - * self._notifier = None - * - * def _wait_core(self, timeout, catch=Timeout): # <<<<<<<<<<<<<< - * # The core of the wait implementation, handling - * # switching and linking. If *catch* is set to (), - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_14); - __Pyx_AddTraceback("gevent._event._AbstractLinkable._wait_core", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_switch); - __Pyx_XDECREF(__pyx_v_timer); - __Pyx_XDECREF(__pyx_v_result); - __Pyx_XDECREF(__pyx_v_ex); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":132 - * self.unlink(switch) - * - * def _wait_return_value(self, waited, wait_success): # <<<<<<<<<<<<<< - * # pylint:disable=unused-argument - * return None - */ - -static PyObject *__pyx_f_6gevent_6_event_17_AbstractLinkable__wait_return_value(CYTHON_UNUSED struct __pyx_obj_6gevent_6_event__AbstractLinkable *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_waited, CYTHON_UNUSED PyObject *__pyx_v_wait_success) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_wait_return_value", 0); - - /* "src/gevent/event.py":134 - * def _wait_return_value(self, waited, wait_success): - * # pylint:disable=unused-argument - * return None # <<<<<<<<<<<<<< - * - * def _wait(self, timeout=None): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - /* "src/gevent/event.py":132 - * self.unlink(switch) - * - * def _wait_return_value(self, waited, wait_success): # <<<<<<<<<<<<<< - * # pylint:disable=unused-argument - * return None - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":136 - * return None - * - * def _wait(self, timeout=None): # <<<<<<<<<<<<<< - * if self.ready(): - * return self._wait_return_value(False, False) - */ - -static PyObject *__pyx_f_6gevent_6_event_17_AbstractLinkable__wait(struct __pyx_obj_6gevent_6_event__AbstractLinkable *__pyx_v_self, struct __pyx_opt_args_6gevent_6_event_17_AbstractLinkable__wait *__pyx_optional_args) { - PyObject *__pyx_v_timeout = ((PyObject *)Py_None); - PyObject *__pyx_v_gotit = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("_wait", 0); - if (__pyx_optional_args) { - if (__pyx_optional_args->__pyx_n > 0) { - __pyx_v_timeout = __pyx_optional_args->timeout; - } - } - - /* "src/gevent/event.py":137 - * - * def _wait(self, timeout=None): - * if self.ready(): # <<<<<<<<<<<<<< - * return self._wait_return_value(False, False) - * - */ - __pyx_t_1 = (((struct __pyx_vtabstruct_6gevent_6_event__AbstractLinkable *)__pyx_v_self->__pyx_vtab)->ready(__pyx_v_self, 0) != 0); - if (__pyx_t_1) { - - /* "src/gevent/event.py":138 - * def _wait(self, timeout=None): - * if self.ready(): - * return self._wait_return_value(False, False) # <<<<<<<<<<<<<< - * - * gotit = self._wait_core(timeout) - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = ((struct __pyx_vtabstruct_6gevent_6_event__AbstractLinkable *)__pyx_v_self->__pyx_vtab)->_wait_return_value(__pyx_v_self, Py_False, Py_False); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 138, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "src/gevent/event.py":137 - * - * def _wait(self, timeout=None): - * if self.ready(): # <<<<<<<<<<<<<< - * return self._wait_return_value(False, False) - * - */ - } - - /* "src/gevent/event.py":140 - * return self._wait_return_value(False, False) - * - * gotit = self._wait_core(timeout) # <<<<<<<<<<<<<< - * return self._wait_return_value(True, gotit) - * - */ - __pyx_t_2 = ((struct __pyx_vtabstruct_6gevent_6_event__AbstractLinkable *)__pyx_v_self->__pyx_vtab)->_wait_core(__pyx_v_self, __pyx_v_timeout, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_v_gotit = __pyx_t_2; - __pyx_t_2 = 0; - - /* "src/gevent/event.py":141 - * - * gotit = self._wait_core(timeout) - * return self._wait_return_value(True, gotit) # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = ((struct __pyx_vtabstruct_6gevent_6_event__AbstractLinkable *)__pyx_v_self->__pyx_vtab)->_wait_return_value(__pyx_v_self, Py_True, __pyx_v_gotit); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 141, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "src/gevent/event.py":136 - * return None - * - * def _wait(self, timeout=None): # <<<<<<<<<<<<<< - * if self.ready(): - * return self._wait_return_value(False, False) - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent._event._AbstractLinkable._wait", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_gotit); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/_event.pxd":46 - * cdef _notifier - * cdef set _links - * cdef readonly SwitchOutGreenletWithLoop hub # <<<<<<<<<<<<<< - * - * cpdef rawlink(self, callback) - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_event_17_AbstractLinkable_3hub_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_6_event_17_AbstractLinkable_3hub_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_event_17_AbstractLinkable_3hub___get__(((struct __pyx_obj_6gevent_6_event__AbstractLinkable *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_event_17_AbstractLinkable_3hub___get__(struct __pyx_obj_6gevent_6_event__AbstractLinkable *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_v_self->hub)); - __pyx_r = ((PyObject *)__pyx_v_self->hub); - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":162 - * __slots__ = ('_flag', '__weakref__') - * - * def __init__(self): # <<<<<<<<<<<<<< - * _AbstractLinkable.__init__(self) - * self._flag = False - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_6_event_5Event_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_6_event_5Event_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;} - if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1; - __pyx_r = __pyx_pf_6gevent_6_event_5Event___init__(((struct __pyx_obj_6gevent_6_event_Event *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_6_event_5Event___init__(struct __pyx_obj_6gevent_6_event_Event *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("__init__", 0); - - /* "src/gevent/event.py":163 - * - * def __init__(self): - * _AbstractLinkable.__init__(self) # <<<<<<<<<<<<<< - * self._flag = False - * - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_6gevent_6_event__AbstractLinkable), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 163, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 163, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_self)}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 163, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_self)}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 163, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 163, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)__pyx_v_self)); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 163, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/event.py":164 - * def __init__(self): - * _AbstractLinkable.__init__(self) - * self._flag = False # <<<<<<<<<<<<<< - * - * def __str__(self): - */ - __pyx_v_self->_flag = 0; - - /* "src/gevent/event.py":162 - * __slots__ = ('_flag', '__weakref__') - * - * def __init__(self): # <<<<<<<<<<<<<< - * _AbstractLinkable.__init__(self) - * self._flag = False - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent._event.Event.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":166 - * self._flag = False - * - * def __str__(self): # <<<<<<<<<<<<<< - * return '<%s %s _links[%s]>' % (self.__class__.__name__, (self._flag and 'set') or 'clear', len(self._links)) - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_event_5Event_3__str__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_6_event_5Event_3__str__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__str__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_event_5Event_2__str__(((struct __pyx_obj_6gevent_6_event_Event *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_event_5Event_2__str__(struct __pyx_obj_6gevent_6_event_Event *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - Py_ssize_t __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - __Pyx_RefNannySetupContext("__str__", 0); - - /* "src/gevent/event.py":167 - * - * def __str__(self): - * return '<%s %s _links[%s]>' % (self.__class__.__name__, (self._flag and 'set') or 'clear', len(self._links)) # <<<<<<<<<<<<<< - * - * def is_set(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 167, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 167, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (!__pyx_v_self->_flag) { - goto __pyx_L4_next_or; - } else { - } - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_n_s_set); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 167, __pyx_L1_error) - if (!__pyx_t_3) { - } else { - __Pyx_INCREF(__pyx_n_s_set); - __pyx_t_1 = __pyx_n_s_set; - goto __pyx_L3_bool_binop_done; - } - __pyx_L4_next_or:; - __Pyx_INCREF(__pyx_n_s_clear); - __pyx_t_1 = __pyx_n_s_clear; - __pyx_L3_bool_binop_done:; - __pyx_t_4 = __pyx_v_self->__pyx_base._links; - __Pyx_INCREF(__pyx_t_4); - if (unlikely(__pyx_t_4 == Py_None)) { - PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 167, __pyx_L1_error) - } - __pyx_t_5 = PySet_GET_SIZE(__pyx_t_4); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 167, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 167, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 167, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_4); - __pyx_t_2 = 0; - __pyx_t_1 = 0; - __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_s_s__links_s, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 167, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_r = __pyx_t_4; - __pyx_t_4 = 0; - goto __pyx_L0; - - /* "src/gevent/event.py":166 - * self._flag = False - * - * def __str__(self): # <<<<<<<<<<<<<< - * return '<%s %s _links[%s]>' % (self.__class__.__name__, (self._flag and 'set') or 'clear', len(self._links)) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_AddTraceback("gevent._event.Event.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":169 - * return '<%s %s _links[%s]>' % (self.__class__.__name__, (self._flag and 'set') or 'clear', len(self._links)) - * - * def is_set(self): # <<<<<<<<<<<<<< - * """Return true if and only if the internal flag is true.""" - * return self._flag - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_event_5Event_5is_set(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_event_5Event_4is_set[] = "Event.is_set(self)\nReturn true if and only if the internal flag is true."; -static PyMethodDef __pyx_mdef_6gevent_6_event_5Event_5is_set = {"is_set", (PyCFunction)__pyx_pw_6gevent_6_event_5Event_5is_set, METH_NOARGS, __pyx_doc_6gevent_6_event_5Event_4is_set}; -static PyObject *__pyx_pw_6gevent_6_event_5Event_5is_set(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("is_set (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_event_5Event_4is_set(((struct __pyx_obj_6gevent_6_event_Event *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_event_5Event_4is_set(struct __pyx_obj_6gevent_6_event_Event *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("is_set", 0); - - /* "src/gevent/event.py":171 - * def is_set(self): - * """Return true if and only if the internal flag is true.""" - * return self._flag # <<<<<<<<<<<<<< - * - * def isSet(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->_flag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 171, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/event.py":169 - * return '<%s %s _links[%s]>' % (self.__class__.__name__, (self._flag and 'set') or 'clear', len(self._links)) - * - * def is_set(self): # <<<<<<<<<<<<<< - * """Return true if and only if the internal flag is true.""" - * return self._flag - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._event.Event.is_set", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":173 - * return self._flag - * - * def isSet(self): # <<<<<<<<<<<<<< - * # makes it a better drop-in replacement for threading.Event - * return self._flag - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_event_5Event_7isSet(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_event_5Event_6isSet[] = "Event.isSet(self)"; -static PyMethodDef __pyx_mdef_6gevent_6_event_5Event_7isSet = {"isSet", (PyCFunction)__pyx_pw_6gevent_6_event_5Event_7isSet, METH_NOARGS, __pyx_doc_6gevent_6_event_5Event_6isSet}; -static PyObject *__pyx_pw_6gevent_6_event_5Event_7isSet(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("isSet (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_event_5Event_6isSet(((struct __pyx_obj_6gevent_6_event_Event *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_event_5Event_6isSet(struct __pyx_obj_6gevent_6_event_Event *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("isSet", 0); - - /* "src/gevent/event.py":175 - * def isSet(self): - * # makes it a better drop-in replacement for threading.Event - * return self._flag # <<<<<<<<<<<<<< - * - * def ready(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->_flag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 175, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/event.py":173 - * return self._flag - * - * def isSet(self): # <<<<<<<<<<<<<< - * # makes it a better drop-in replacement for threading.Event - * return self._flag - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._event.Event.isSet", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":177 - * return self._flag - * - * def ready(self): # <<<<<<<<<<<<<< - * # makes it compatible with AsyncResult and Greenlet (for - * # example in wait()) - */ - -static PyObject *__pyx_pw_6gevent_6_event_5Event_9ready(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static int __pyx_f_6gevent_6_event_5Event_ready(struct __pyx_obj_6gevent_6_event_Event *__pyx_v_self, int __pyx_skip_dispatch) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - __Pyx_RefNannySetupContext("ready", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_ready); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 177, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_6_event_5Event_9ready)) { - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 177, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 177, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 177, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_5; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/event.py":180 - * # makes it compatible with AsyncResult and Greenlet (for - * # example in wait()) - * return self._flag # <<<<<<<<<<<<<< - * - * def set(self): - */ - __pyx_r = __pyx_v_self->_flag; - goto __pyx_L0; - - /* "src/gevent/event.py":177 - * return self._flag - * - * def ready(self): # <<<<<<<<<<<<<< - * # makes it compatible with AsyncResult and Greenlet (for - * # example in wait()) - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_WriteUnraisable("gevent._event.Event.ready", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); - __pyx_r = 0; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_event_5Event_9ready(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_event_5Event_8ready[] = "Event.ready(self) -> bool"; -static PyMethodDef __pyx_mdef_6gevent_6_event_5Event_9ready = {"ready", (PyCFunction)__pyx_pw_6gevent_6_event_5Event_9ready, METH_NOARGS, __pyx_doc_6gevent_6_event_5Event_8ready}; -static PyObject *__pyx_pw_6gevent_6_event_5Event_9ready(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("ready (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_event_5Event_8ready(((struct __pyx_obj_6gevent_6_event_Event *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_event_5Event_8ready(struct __pyx_obj_6gevent_6_event_Event *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("ready", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_f_6gevent_6_event_5Event_ready(__pyx_v_self, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 177, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._event.Event.ready", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":182 - * return self._flag - * - * def set(self): # <<<<<<<<<<<<<< - * """ - * Set the internal flag to true. - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_event_5Event_11set(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_event_5Event_10set[] = "Event.set(self)\n\n Set the internal flag to true.\n\n All greenlets waiting for it to become true are awakened in\n some order at some time in the future. Greenlets that call\n :meth:`wait` once the flag is true will not block at all\n (until :meth:`clear` is called).\n "; -static PyMethodDef __pyx_mdef_6gevent_6_event_5Event_11set = {"set", (PyCFunction)__pyx_pw_6gevent_6_event_5Event_11set, METH_NOARGS, __pyx_doc_6gevent_6_event_5Event_10set}; -static PyObject *__pyx_pw_6gevent_6_event_5Event_11set(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("set (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_event_5Event_10set(((struct __pyx_obj_6gevent_6_event_Event *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_event_5Event_10set(struct __pyx_obj_6gevent_6_event_Event *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("set", 0); - - /* "src/gevent/event.py":191 - * (until :meth:`clear` is called). - * """ - * self._flag = True # <<<<<<<<<<<<<< - * self._check_and_notify() - * - */ - __pyx_v_self->_flag = 1; - - /* "src/gevent/event.py":192 - * """ - * self._flag = True - * self._check_and_notify() # <<<<<<<<<<<<<< - * - * def clear(self): - */ - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_6_event_Event *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._check_and_notify(((struct __pyx_obj_6gevent_6_event__AbstractLinkable *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 192, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/event.py":182 - * return self._flag - * - * def set(self): # <<<<<<<<<<<<<< - * """ - * Set the internal flag to true. - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._event.Event.set", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":194 - * self._check_and_notify() - * - * def clear(self): # <<<<<<<<<<<<<< - * """ - * Reset the internal flag to false. - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_event_5Event_13clear(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_event_5Event_12clear[] = "Event.clear(self)\n\n Reset the internal flag to false.\n\n Subsequently, threads calling :meth:`wait` will block until\n :meth:`set` is called to set the internal flag to true again.\n "; -static PyMethodDef __pyx_mdef_6gevent_6_event_5Event_13clear = {"clear", (PyCFunction)__pyx_pw_6gevent_6_event_5Event_13clear, METH_NOARGS, __pyx_doc_6gevent_6_event_5Event_12clear}; -static PyObject *__pyx_pw_6gevent_6_event_5Event_13clear(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("clear (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_event_5Event_12clear(((struct __pyx_obj_6gevent_6_event_Event *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_event_5Event_12clear(struct __pyx_obj_6gevent_6_event_Event *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("clear", 0); - - /* "src/gevent/event.py":201 - * :meth:`set` is called to set the internal flag to true again. - * """ - * self._flag = False # <<<<<<<<<<<<<< - * - * def _wait_return_value(self, waited, wait_success): - */ - __pyx_v_self->_flag = 0; - - /* "src/gevent/event.py":194 - * self._check_and_notify() - * - * def clear(self): # <<<<<<<<<<<<<< - * """ - * Reset the internal flag to false. - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":203 - * self._flag = False - * - * def _wait_return_value(self, waited, wait_success): # <<<<<<<<<<<<<< - * # To avoid the race condition outlined in http://bugs.python.org/issue13502, - * # if we had to wait, then we need to return whether or not - */ - -static PyObject *__pyx_f_6gevent_6_event_5Event__wait_return_value(struct __pyx_obj_6gevent_6_event_Event *__pyx_v_self, PyObject *__pyx_v_waited, PyObject *__pyx_v_wait_success) { - int __pyx_v_flag; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("_wait_return_value", 0); - - /* "src/gevent/event.py":208 - * # the condition got changed. Otherwise we simply echo - * # the current state of the flag (which should be true) - * if not waited: # <<<<<<<<<<<<<< - * flag = self._flag - * assert flag, "if we didn't wait we should already be set" - */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_waited); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 208, __pyx_L1_error) - __pyx_t_2 = ((!__pyx_t_1) != 0); - if (__pyx_t_2) { - - /* "src/gevent/event.py":209 - * # the current state of the flag (which should be true) - * if not waited: - * flag = self._flag # <<<<<<<<<<<<<< - * assert flag, "if we didn't wait we should already be set" - * return flag - */ - __pyx_t_2 = __pyx_v_self->_flag; - __pyx_v_flag = __pyx_t_2; - - /* "src/gevent/event.py":210 - * if not waited: - * flag = self._flag - * assert flag, "if we didn't wait we should already be set" # <<<<<<<<<<<<<< - * return flag - * - */ - #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(!Py_OptimizeFlag)) { - if (unlikely(!(__pyx_v_flag != 0))) { - PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_if_we_didn_t_wait_we_should_alre); - __PYX_ERR(0, 210, __pyx_L1_error) - } - } - #endif - - /* "src/gevent/event.py":211 - * flag = self._flag - * assert flag, "if we didn't wait we should already be set" - * return flag # <<<<<<<<<<<<<< - * - * return wait_success - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_flag); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 211, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - - /* "src/gevent/event.py":208 - * # the condition got changed. Otherwise we simply echo - * # the current state of the flag (which should be true) - * if not waited: # <<<<<<<<<<<<<< - * flag = self._flag - * assert flag, "if we didn't wait we should already be set" - */ - } - - /* "src/gevent/event.py":213 - * return flag - * - * return wait_success # <<<<<<<<<<<<<< - * - * def wait(self, timeout=None): - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_wait_success); - __pyx_r = __pyx_v_wait_success; - goto __pyx_L0; - - /* "src/gevent/event.py":203 - * self._flag = False - * - * def _wait_return_value(self, waited, wait_success): # <<<<<<<<<<<<<< - * # To avoid the race condition outlined in http://bugs.python.org/issue13502, - * # if we had to wait, then we need to return whether or not - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent._event.Event._wait_return_value", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":215 - * return wait_success - * - * def wait(self, timeout=None): # <<<<<<<<<<<<<< - * """ - * Block until the internal flag is true. - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_event_5Event_15wait(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_6_event_5Event_14wait[] = "Event.wait(self, timeout=None)\n\n Block until the internal flag is true.\n\n If the internal flag is true on entry, return immediately. Otherwise,\n block until another thread (greenlet) calls :meth:`set` to set the flag to true,\n or until the optional timeout occurs.\n\n When the *timeout* argument is present and not ``None``, it should be a\n floating point number specifying a timeout for the operation in seconds\n (or fractions thereof).\n\n :return: This method returns true if and only if the internal flag has been set to\n true, either before the wait call or after the wait starts, so it will\n always return ``True`` except if a timeout is given and the operation\n times out.\n\n .. versionchanged:: 1.1\n The return value represents the flag during the elapsed wait, not\n just after it elapses. This solves a race condition if one greenlet\n sets and then clears the flag without switching, while other greenlets\n are waiting. When the waiters wake up, this will return True; previously,\n they would still wake up, but the return value would be False. This is most\n noticeable when the *timeout* is present.\n "; -static PyMethodDef __pyx_mdef_6gevent_6_event_5Event_15wait = {"wait", (PyCFunction)__pyx_pw_6gevent_6_event_5Event_15wait, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_6_event_5Event_14wait}; -static PyObject *__pyx_pw_6gevent_6_event_5Event_15wait(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_timeout = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("wait (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_timeout,0}; - PyObject* values[1] = {0}; - values[0] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeout); - if (value) { values[0] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "wait") < 0)) __PYX_ERR(0, 215, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_timeout = values[0]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("wait", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 215, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._event.Event.wait", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_6_event_5Event_14wait(((struct __pyx_obj_6gevent_6_event_Event *)__pyx_v_self), __pyx_v_timeout); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_event_5Event_14wait(struct __pyx_obj_6gevent_6_event_Event *__pyx_v_self, PyObject *__pyx_v_timeout) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - struct __pyx_opt_args_6gevent_6_event_17_AbstractLinkable__wait __pyx_t_2; - __Pyx_RefNannySetupContext("wait", 0); - - /* "src/gevent/event.py":240 - * noticeable when the *timeout* is present. - * """ - * return self._wait(timeout) # <<<<<<<<<<<<<< - * - * def _reset_internal_locks(self): # pragma: no cover - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_2.__pyx_n = 1; - __pyx_t_2.timeout = __pyx_v_timeout; - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_6_event_Event *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._wait(((struct __pyx_obj_6gevent_6_event__AbstractLinkable *)__pyx_v_self), &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 240, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/event.py":215 - * return wait_success - * - * def wait(self, timeout=None): # <<<<<<<<<<<<<< - * """ - * Block until the internal flag is true. - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._event.Event.wait", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":242 - * return self._wait(timeout) - * - * def _reset_internal_locks(self): # pragma: no cover # <<<<<<<<<<<<<< - * # for compatibility with threading.Event - * # Exception AttributeError: AttributeError("'Event' object has no attribute '_reset_internal_locks'",) - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_event_5Event_17_reset_internal_locks(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_event_5Event_16_reset_internal_locks[] = "Event._reset_internal_locks(self)"; -static PyMethodDef __pyx_mdef_6gevent_6_event_5Event_17_reset_internal_locks = {"_reset_internal_locks", (PyCFunction)__pyx_pw_6gevent_6_event_5Event_17_reset_internal_locks, METH_NOARGS, __pyx_doc_6gevent_6_event_5Event_16_reset_internal_locks}; -static PyObject *__pyx_pw_6gevent_6_event_5Event_17_reset_internal_locks(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_reset_internal_locks (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_event_5Event_16_reset_internal_locks(((struct __pyx_obj_6gevent_6_event_Event *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_event_5Event_16_reset_internal_locks(CYTHON_UNUSED struct __pyx_obj_6gevent_6_event_Event *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_reset_internal_locks", 0); - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":301 - * __slots__ = ('_value', '_exc_info', '_imap_task_index') - * - * def __init__(self): # <<<<<<<<<<<<<< - * _AbstractLinkable.__init__(self) - * self._value = _NONE - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_6_event_11AsyncResult_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_6_event_11AsyncResult_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;} - if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1; - __pyx_r = __pyx_pf_6gevent_6_event_11AsyncResult___init__(((struct __pyx_obj_6gevent_6_event_AsyncResult *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_6_event_11AsyncResult___init__(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("__init__", 0); - - /* "src/gevent/event.py":302 - * - * def __init__(self): - * _AbstractLinkable.__init__(self) # <<<<<<<<<<<<<< - * self._value = _NONE - * self._exc_info = () - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_6gevent_6_event__AbstractLinkable), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 302, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 302, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_self)}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 302, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_self)}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 302, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 302, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)__pyx_v_self)); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 302, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/event.py":303 - * def __init__(self): - * _AbstractLinkable.__init__(self) - * self._value = _NONE # <<<<<<<<<<<<<< - * self._exc_info = () - * - */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_NONE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 303, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->_value); - __Pyx_DECREF(__pyx_v_self->_value); - __pyx_v_self->_value = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/event.py":304 - * _AbstractLinkable.__init__(self) - * self._value = _NONE - * self._exc_info = () # <<<<<<<<<<<<<< - * - * @property - */ - __Pyx_INCREF(__pyx_empty_tuple); - __Pyx_GIVEREF(__pyx_empty_tuple); - __Pyx_GOTREF(__pyx_v_self->_exc_info); - __Pyx_DECREF(__pyx_v_self->_exc_info); - __pyx_v_self->_exc_info = __pyx_empty_tuple; - - /* "src/gevent/event.py":301 - * __slots__ = ('_value', '_exc_info', '_imap_task_index') - * - * def __init__(self): # <<<<<<<<<<<<<< - * _AbstractLinkable.__init__(self) - * self._value = _NONE - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent._event.AsyncResult.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":307 - * - * @property - * def _exception(self): # <<<<<<<<<<<<<< - * return self._exc_info[1] if self._exc_info else _NONE - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_10_exception_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_10_exception_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_event_11AsyncResult_10_exception___get__(((struct __pyx_obj_6gevent_6_event_AsyncResult *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_10_exception___get__(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - /* "src/gevent/event.py":308 - * @property - * def _exception(self): - * return self._exc_info[1] if self._exc_info else _NONE # <<<<<<<<<<<<<< - * - * @property - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = (__pyx_v_self->_exc_info != Py_None)&&(PyTuple_GET_SIZE(__pyx_v_self->_exc_info) != 0); - if (__pyx_t_2) { - if (unlikely(__pyx_v_self->_exc_info == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 308, __pyx_L1_error) - } - __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_exc_info, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 308, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = __pyx_t_3; - __pyx_t_3 = 0; - } else { - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_NONE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 308, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = __pyx_t_3; - __pyx_t_3 = 0; - } - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/event.py":307 - * - * @property - * def _exception(self): # <<<<<<<<<<<<<< - * return self._exc_info[1] if self._exc_info else _NONE - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent._event.AsyncResult._exception.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":311 - * - * @property - * def value(self): # <<<<<<<<<<<<<< - * """ - * Holds the value passed to :meth:`set` if :meth:`set` was called. Otherwise, - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_5value_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_5value_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_event_11AsyncResult_5value___get__(((struct __pyx_obj_6gevent_6_event_AsyncResult *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_5value___get__(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - int __pyx_t_3; - __Pyx_RefNannySetupContext("__get__", 0); - - /* "src/gevent/event.py":316 - * ``None`` - * """ - * return self._value if self._value is not _NONE else None # <<<<<<<<<<<<<< - * - * @property - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_NONE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 316, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = (__pyx_v_self->_value != __pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if ((__pyx_t_3 != 0)) { - __Pyx_INCREF(__pyx_v_self->_value); - __pyx_t_1 = __pyx_v_self->_value; - } else { - __Pyx_INCREF(Py_None); - __pyx_t_1 = Py_None; - } - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/event.py":311 - * - * @property - * def value(self): # <<<<<<<<<<<<<< - * """ - * Holds the value passed to :meth:`set` if :meth:`set` was called. Otherwise, - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent._event.AsyncResult.value.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":319 - * - * @property - * def exc_info(self): # <<<<<<<<<<<<<< - * """ - * The three-tuple of exception information if :meth:`set_exception` was called. - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_8exc_info_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_8exc_info_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_event_11AsyncResult_8exc_info___get__(((struct __pyx_obj_6gevent_6_event_AsyncResult *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_8exc_info___get__(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - /* "src/gevent/event.py":323 - * The three-tuple of exception information if :meth:`set_exception` was called. - * """ - * if self._exc_info: # <<<<<<<<<<<<<< - * return (self._exc_info[0], self._exc_info[1], load_traceback(self._exc_info[2])) - * return () - */ - __pyx_t_1 = (__pyx_v_self->_exc_info != Py_None)&&(PyTuple_GET_SIZE(__pyx_v_self->_exc_info) != 0); - if (__pyx_t_1) { - - /* "src/gevent/event.py":324 - * """ - * if self._exc_info: - * return (self._exc_info[0], self._exc_info[1], load_traceback(self._exc_info[2])) # <<<<<<<<<<<<<< - * return () - * - */ - __Pyx_XDECREF(__pyx_r); - if (unlikely(__pyx_v_self->_exc_info == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 324, __pyx_L1_error) - } - __pyx_t_2 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_exc_info, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 324, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (unlikely(__pyx_v_self->_exc_info == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 324, __pyx_L1_error) - } - __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_exc_info, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 324, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (unlikely(__pyx_v_self->_exc_info == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 324, __pyx_L1_error) - } - __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_exc_info, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 324, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_INCREF(__pyx_v_6gevent_6_event_load_traceback); - __pyx_t_6 = __pyx_v_6gevent_6_event_load_traceback; __pyx_t_7 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); - if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); - __Pyx_INCREF(__pyx_t_7); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_6, function); - } - } - if (!__pyx_t_7) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 324, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_4); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_6)) { - PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_5}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 324, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { - PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_5}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 324, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else - #endif - { - __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 324, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL; - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_5); - __pyx_t_5 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 324, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } - } - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 324, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_3); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_4); - __pyx_t_2 = 0; - __pyx_t_3 = 0; - __pyx_t_4 = 0; - __pyx_r = __pyx_t_6; - __pyx_t_6 = 0; - goto __pyx_L0; - - /* "src/gevent/event.py":323 - * The three-tuple of exception information if :meth:`set_exception` was called. - * """ - * if self._exc_info: # <<<<<<<<<<<<<< - * return (self._exc_info[0], self._exc_info[1], load_traceback(self._exc_info[2])) - * return () - */ - } - - /* "src/gevent/event.py":325 - * if self._exc_info: - * return (self._exc_info[0], self._exc_info[1], load_traceback(self._exc_info[2])) - * return () # <<<<<<<<<<<<<< - * - * def __str__(self): - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_empty_tuple); - __pyx_r = __pyx_empty_tuple; - goto __pyx_L0; - - /* "src/gevent/event.py":319 - * - * @property - * def exc_info(self): # <<<<<<<<<<<<<< - * """ - * The three-tuple of exception information if :meth:`set_exception` was called. - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_AddTraceback("gevent._event.AsyncResult.exc_info.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":327 - * return () - * - * def __str__(self): # <<<<<<<<<<<<<< - * result = '<%s ' % (self.__class__.__name__, ) - * if self.value is not None or self._exception is not _NONE: - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_3__str__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_3__str__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__str__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_event_11AsyncResult_2__str__(((struct __pyx_obj_6gevent_6_event_AsyncResult *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_2__str__(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self) { - PyObject *__pyx_v_result = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - int __pyx_t_3; - int __pyx_t_4; - int __pyx_t_5; - Py_ssize_t __pyx_t_6; - __Pyx_RefNannySetupContext("__str__", 0); - - /* "src/gevent/event.py":328 - * - * def __str__(self): - * result = '<%s ' % (self.__class__.__name__, ) # <<<<<<<<<<<<<< - * if self.value is not None or self._exception is not _NONE: - * result += 'value=%r ' % self.value - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 328, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 328, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 328, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_s, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 328, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_result = ((PyObject*)__pyx_t_2); - __pyx_t_2 = 0; - - /* "src/gevent/event.py":329 - * def __str__(self): - * result = '<%s ' % (self.__class__.__name__, ) - * if self.value is not None or self._exception is not _NONE: # <<<<<<<<<<<<<< - * result += 'value=%r ' % self.value - * if self._exception is not None and self._exception is not _NONE: - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 329, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = (__pyx_t_2 != Py_None); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_5 = (__pyx_t_4 != 0); - if (!__pyx_t_5) { - } else { - __pyx_t_3 = __pyx_t_5; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_exception); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 329, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_NONE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 329, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = (__pyx_t_2 != __pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_4 = (__pyx_t_5 != 0); - __pyx_t_3 = __pyx_t_4; - __pyx_L4_bool_binop_done:; - if (__pyx_t_3) { - - /* "src/gevent/event.py":330 - * result = '<%s ' % (self.__class__.__name__, ) - * if self.value is not None or self._exception is not _NONE: - * result += 'value=%r ' % self.value # <<<<<<<<<<<<<< - * if self._exception is not None and self._exception is not _NONE: - * result += 'exception=%r ' % self._exception - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 330, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_value_r, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 330, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_result, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 330, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF_SET(__pyx_v_result, ((PyObject*)__pyx_t_1)); - __pyx_t_1 = 0; - - /* "src/gevent/event.py":329 - * def __str__(self): - * result = '<%s ' % (self.__class__.__name__, ) - * if self.value is not None or self._exception is not _NONE: # <<<<<<<<<<<<<< - * result += 'value=%r ' % self.value - * if self._exception is not None and self._exception is not _NONE: - */ - } - - /* "src/gevent/event.py":331 - * if self.value is not None or self._exception is not _NONE: - * result += 'value=%r ' % self.value - * if self._exception is not None and self._exception is not _NONE: # <<<<<<<<<<<<<< - * result += 'exception=%r ' % self._exception - * if self._exception is _NONE: - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_exception); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 331, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = (__pyx_t_1 != Py_None); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_5 = (__pyx_t_4 != 0); - if (__pyx_t_5) { - } else { - __pyx_t_3 = __pyx_t_5; - goto __pyx_L7_bool_binop_done; - } - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_exception); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 331, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_NONE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 331, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = (__pyx_t_1 != __pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = (__pyx_t_5 != 0); - __pyx_t_3 = __pyx_t_4; - __pyx_L7_bool_binop_done:; - if (__pyx_t_3) { - - /* "src/gevent/event.py":332 - * result += 'value=%r ' % self.value - * if self._exception is not None and self._exception is not _NONE: - * result += 'exception=%r ' % self._exception # <<<<<<<<<<<<<< - * if self._exception is _NONE: - * result += 'unset ' - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_exception); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_exception_r, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 332, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_result, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF_SET(__pyx_v_result, ((PyObject*)__pyx_t_2)); - __pyx_t_2 = 0; - - /* "src/gevent/event.py":331 - * if self.value is not None or self._exception is not _NONE: - * result += 'value=%r ' % self.value - * if self._exception is not None and self._exception is not _NONE: # <<<<<<<<<<<<<< - * result += 'exception=%r ' % self._exception - * if self._exception is _NONE: - */ - } - - /* "src/gevent/event.py":333 - * if self._exception is not None and self._exception is not _NONE: - * result += 'exception=%r ' % self._exception - * if self._exception is _NONE: # <<<<<<<<<<<<<< - * result += 'unset ' - * return result + ' _links[%s]>' % len(self._links) - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_exception); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 333, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_NONE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 333, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = (__pyx_t_2 == __pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_4 = (__pyx_t_3 != 0); - if (__pyx_t_4) { - - /* "src/gevent/event.py":334 - * result += 'exception=%r ' % self._exception - * if self._exception is _NONE: - * result += 'unset ' # <<<<<<<<<<<<<< - * return result + ' _links[%s]>' % len(self._links) - * - */ - __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_result, __pyx_kp_s_unset); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 334, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF_SET(__pyx_v_result, ((PyObject*)__pyx_t_1)); - __pyx_t_1 = 0; - - /* "src/gevent/event.py":333 - * if self._exception is not None and self._exception is not _NONE: - * result += 'exception=%r ' % self._exception - * if self._exception is _NONE: # <<<<<<<<<<<<<< - * result += 'unset ' - * return result + ' _links[%s]>' % len(self._links) - */ - } - - /* "src/gevent/event.py":335 - * if self._exception is _NONE: - * result += 'unset ' - * return result + ' _links[%s]>' % len(self._links) # <<<<<<<<<<<<<< - * - * def ready(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_v_self->__pyx_base._links; - __Pyx_INCREF(__pyx_t_1); - if (unlikely(__pyx_t_1 == Py_None)) { - PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 335, __pyx_L1_error) - } - __pyx_t_6 = PySet_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 335, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 335, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_links_s, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 335, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyNumber_Add(__pyx_v_result, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 335, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/event.py":327 - * return () - * - * def __str__(self): # <<<<<<<<<<<<<< - * result = '<%s ' % (self.__class__.__name__, ) - * if self.value is not None or self._exception is not _NONE: - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent._event.AsyncResult.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_result); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":337 - * return result + ' _links[%s]>' % len(self._links) - * - * def ready(self): # <<<<<<<<<<<<<< - * """Return true if and only if it holds a value or an exception""" - * return self._exc_info or self._value is not _NONE - */ - -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_5ready(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static int __pyx_f_6gevent_6_event_11AsyncResult_ready(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self, int __pyx_skip_dispatch) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - int __pyx_t_6; - int __pyx_t_7; - __Pyx_RefNannySetupContext("ready", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_ready); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 337, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_6_event_11AsyncResult_5ready)) { - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 337, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 337, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 337, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_5; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/event.py":339 - * def ready(self): - * """Return true if and only if it holds a value or an exception""" - * return self._exc_info or self._value is not _NONE # <<<<<<<<<<<<<< - * - * def successful(self): - */ - __pyx_t_6 = (__pyx_v_self->_exc_info != Py_None)&&(PyTuple_GET_SIZE(__pyx_v_self->_exc_info) != 0); - if (!__pyx_t_6) { - } else { - __pyx_t_5 = __pyx_t_6; - goto __pyx_L3_bool_binop_done; - } - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_NONE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 339, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_6 = (__pyx_v_self->_value != __pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_7 = (__pyx_t_6 != 0); - __pyx_t_5 = __pyx_t_7; - __pyx_L3_bool_binop_done:; - __pyx_r = __pyx_t_5; - goto __pyx_L0; - - /* "src/gevent/event.py":337 - * return result + ' _links[%s]>' % len(self._links) - * - * def ready(self): # <<<<<<<<<<<<<< - * """Return true if and only if it holds a value or an exception""" - * return self._exc_info or self._value is not _NONE - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_WriteUnraisable("gevent._event.AsyncResult.ready", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); - __pyx_r = 0; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_5ready(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_event_11AsyncResult_4ready[] = "AsyncResult.ready(self) -> bool\nReturn true if and only if it holds a value or an exception"; -static PyMethodDef __pyx_mdef_6gevent_6_event_11AsyncResult_5ready = {"ready", (PyCFunction)__pyx_pw_6gevent_6_event_11AsyncResult_5ready, METH_NOARGS, __pyx_doc_6gevent_6_event_11AsyncResult_4ready}; -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_5ready(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("ready (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_event_11AsyncResult_4ready(((struct __pyx_obj_6gevent_6_event_AsyncResult *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_4ready(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("ready", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_f_6gevent_6_event_11AsyncResult_ready(__pyx_v_self, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 337, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._event.AsyncResult.ready", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":341 - * return self._exc_info or self._value is not _NONE - * - * def successful(self): # <<<<<<<<<<<<<< - * """Return true if and only if it is ready and holds a value""" - * return self._value is not _NONE - */ - -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_7successful(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static int __pyx_f_6gevent_6_event_11AsyncResult_successful(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self, int __pyx_skip_dispatch) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - __Pyx_RefNannySetupContext("successful", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_successful); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 341, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_6_event_11AsyncResult_7successful)) { - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 341, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 341, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 341, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_5; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/event.py":343 - * def successful(self): - * """Return true if and only if it is ready and holds a value""" - * return self._value is not _NONE # <<<<<<<<<<<<<< - * - * @property - */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_NONE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 343, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = (__pyx_v_self->_value != __pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_5; - goto __pyx_L0; - - /* "src/gevent/event.py":341 - * return self._exc_info or self._value is not _NONE - * - * def successful(self): # <<<<<<<<<<<<<< - * """Return true if and only if it is ready and holds a value""" - * return self._value is not _NONE - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_WriteUnraisable("gevent._event.AsyncResult.successful", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); - __pyx_r = 0; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_7successful(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_event_11AsyncResult_6successful[] = "AsyncResult.successful(self) -> bool\nReturn true if and only if it is ready and holds a value"; -static PyMethodDef __pyx_mdef_6gevent_6_event_11AsyncResult_7successful = {"successful", (PyCFunction)__pyx_pw_6gevent_6_event_11AsyncResult_7successful, METH_NOARGS, __pyx_doc_6gevent_6_event_11AsyncResult_6successful}; -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_7successful(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("successful (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_event_11AsyncResult_6successful(((struct __pyx_obj_6gevent_6_event_AsyncResult *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_6successful(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("successful", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_f_6gevent_6_event_11AsyncResult_successful(__pyx_v_self, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 341, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._event.AsyncResult.successful", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":346 - * - * @property - * def exception(self): # <<<<<<<<<<<<<< - * """Holds the exception instance passed to :meth:`set_exception` if :meth:`set_exception` was called. - * Otherwise ``None``.""" - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_9exception_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_9exception_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_event_11AsyncResult_9exception___get__(((struct __pyx_obj_6gevent_6_event_AsyncResult *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_9exception___get__(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - /* "src/gevent/event.py":349 - * """Holds the exception instance passed to :meth:`set_exception` if :meth:`set_exception` was called. - * Otherwise ``None``.""" - * if self._exc_info: # <<<<<<<<<<<<<< - * return self._exc_info[1] - * - */ - __pyx_t_1 = (__pyx_v_self->_exc_info != Py_None)&&(PyTuple_GET_SIZE(__pyx_v_self->_exc_info) != 0); - if (__pyx_t_1) { - - /* "src/gevent/event.py":350 - * Otherwise ``None``.""" - * if self._exc_info: - * return self._exc_info[1] # <<<<<<<<<<<<<< - * - * def set(self, value=None): - */ - __Pyx_XDECREF(__pyx_r); - if (unlikely(__pyx_v_self->_exc_info == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 350, __pyx_L1_error) - } - __pyx_t_2 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_exc_info, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 350, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "src/gevent/event.py":349 - * """Holds the exception instance passed to :meth:`set_exception` if :meth:`set_exception` was called. - * Otherwise ``None``.""" - * if self._exc_info: # <<<<<<<<<<<<<< - * return self._exc_info[1] - * - */ - } - - /* "src/gevent/event.py":346 - * - * @property - * def exception(self): # <<<<<<<<<<<<<< - * """Holds the exception instance passed to :meth:`set_exception` if :meth:`set_exception` was called. - * Otherwise ``None``.""" - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent._event.AsyncResult.exception.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":352 - * return self._exc_info[1] - * - * def set(self, value=None): # <<<<<<<<<<<<<< - * """Store the value and wake up any waiters. - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_9set(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_6_event_11AsyncResult_8set[] = "AsyncResult.set(self, value=None)\nStore the value and wake up any waiters.\n\n All greenlets blocking on :meth:`get` or :meth:`wait` are awakened.\n Subsequent calls to :meth:`wait` and :meth:`get` will not block at all.\n "; -static PyMethodDef __pyx_mdef_6gevent_6_event_11AsyncResult_9set = {"set", (PyCFunction)__pyx_pw_6gevent_6_event_11AsyncResult_9set, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_6_event_11AsyncResult_8set}; -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_9set(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_value = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("set (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_value,0}; - PyObject* values[1] = {0}; - values[0] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_value); - if (value) { values[0] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set") < 0)) __PYX_ERR(0, 352, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_value = values[0]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("set", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 352, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._event.AsyncResult.set", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_6_event_11AsyncResult_8set(((struct __pyx_obj_6gevent_6_event_AsyncResult *)__pyx_v_self), __pyx_v_value); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_8set(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self, PyObject *__pyx_v_value) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("set", 0); - - /* "src/gevent/event.py":358 - * Subsequent calls to :meth:`wait` and :meth:`get` will not block at all. - * """ - * self._value = value # <<<<<<<<<<<<<< - * self._check_and_notify() - * - */ - __Pyx_INCREF(__pyx_v_value); - __Pyx_GIVEREF(__pyx_v_value); - __Pyx_GOTREF(__pyx_v_self->_value); - __Pyx_DECREF(__pyx_v_self->_value); - __pyx_v_self->_value = __pyx_v_value; - - /* "src/gevent/event.py":359 - * """ - * self._value = value - * self._check_and_notify() # <<<<<<<<<<<<<< - * - * def set_exception(self, exception, exc_info=None): - */ - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_6_event_AsyncResult *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._check_and_notify(((struct __pyx_obj_6gevent_6_event__AbstractLinkable *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 359, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/event.py":352 - * return self._exc_info[1] - * - * def set(self, value=None): # <<<<<<<<<<<<<< - * """Store the value and wake up any waiters. - * - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._event.AsyncResult.set", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":361 - * self._check_and_notify() - * - * def set_exception(self, exception, exc_info=None): # <<<<<<<<<<<<<< - * """Store the exception and wake up any waiters. - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_11set_exception(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_6_event_11AsyncResult_10set_exception[] = "AsyncResult.set_exception(self, exception, exc_info=None)\nStore the exception and wake up any waiters.\n\n All greenlets blocking on :meth:`get` or :meth:`wait` are awakened.\n Subsequent calls to :meth:`wait` and :meth:`get` will not block at all.\n\n :keyword tuple exc_info: If given, a standard three-tuple of type, value, :class:`traceback`\n as returned by :func:`sys.exc_info`. This will be used when the exception\n is re-raised to propagate the correct traceback.\n "; -static PyMethodDef __pyx_mdef_6gevent_6_event_11AsyncResult_11set_exception = {"set_exception", (PyCFunction)__pyx_pw_6gevent_6_event_11AsyncResult_11set_exception, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_6_event_11AsyncResult_10set_exception}; -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_11set_exception(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_exception = 0; - PyObject *__pyx_v_exc_info = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("set_exception (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_exception_2,&__pyx_n_s_exc_info,0}; - PyObject* values[2] = {0,0}; - values[1] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_exception_2)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_exc_info); - if (value) { values[1] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_exception") < 0)) __PYX_ERR(0, 361, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_exception = values[0]; - __pyx_v_exc_info = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("set_exception", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 361, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._event.AsyncResult.set_exception", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_6_event_11AsyncResult_10set_exception(((struct __pyx_obj_6gevent_6_event_AsyncResult *)__pyx_v_self), __pyx_v_exception, __pyx_v_exc_info); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_10set_exception(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self, PyObject *__pyx_v_exception, PyObject *__pyx_v_exc_info) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - __Pyx_RefNannySetupContext("set_exception", 0); - - /* "src/gevent/event.py":371 - * is re-raised to propagate the correct traceback. - * """ - * if exc_info: # <<<<<<<<<<<<<< - * self._exc_info = (exc_info[0], exc_info[1], dump_traceback(exc_info[2])) - * else: - */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_exc_info); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 371, __pyx_L1_error) - if (__pyx_t_1) { - - /* "src/gevent/event.py":372 - * """ - * if exc_info: - * self._exc_info = (exc_info[0], exc_info[1], dump_traceback(exc_info[2])) # <<<<<<<<<<<<<< - * else: - * self._exc_info = (type(exception), exception, dump_traceback(None)) - */ - __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_exc_info, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 372, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_exc_info, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 372, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_exc_info, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 372, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_INCREF(__pyx_v_6gevent_6_event_dump_traceback); - __pyx_t_6 = __pyx_v_6gevent_6_event_dump_traceback; __pyx_t_7 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); - if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); - __Pyx_INCREF(__pyx_t_7); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_6, function); - } - } - if (!__pyx_t_7) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 372, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_4); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_6)) { - PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_5}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 372, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { - PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_5}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 372, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else - #endif - { - __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 372, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL; - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_5); - __pyx_t_5 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 372, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } - } - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 372, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_3); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_4); - __pyx_t_2 = 0; - __pyx_t_3 = 0; - __pyx_t_4 = 0; - __Pyx_GIVEREF(__pyx_t_6); - __Pyx_GOTREF(__pyx_v_self->_exc_info); - __Pyx_DECREF(__pyx_v_self->_exc_info); - __pyx_v_self->_exc_info = ((PyObject*)__pyx_t_6); - __pyx_t_6 = 0; - - /* "src/gevent/event.py":371 - * is re-raised to propagate the correct traceback. - * """ - * if exc_info: # <<<<<<<<<<<<<< - * self._exc_info = (exc_info[0], exc_info[1], dump_traceback(exc_info[2])) - * else: - */ - goto __pyx_L3; - } - - /* "src/gevent/event.py":374 - * self._exc_info = (exc_info[0], exc_info[1], dump_traceback(exc_info[2])) - * else: - * self._exc_info = (type(exception), exception, dump_traceback(None)) # <<<<<<<<<<<<<< - * - * self._check_and_notify() - */ - /*else*/ { - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_v_6gevent_6_event_dump_traceback, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 374, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 374, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_exception))); - __Pyx_GIVEREF(((PyObject *)Py_TYPE(__pyx_v_exception))); - PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)Py_TYPE(__pyx_v_exception))); - __Pyx_INCREF(__pyx_v_exception); - __Pyx_GIVEREF(__pyx_v_exception); - PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_exception); - __Pyx_GIVEREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_6); - __pyx_t_6 = 0; - __Pyx_GIVEREF(__pyx_t_4); - __Pyx_GOTREF(__pyx_v_self->_exc_info); - __Pyx_DECREF(__pyx_v_self->_exc_info); - __pyx_v_self->_exc_info = ((PyObject*)__pyx_t_4); - __pyx_t_4 = 0; - } - __pyx_L3:; - - /* "src/gevent/event.py":376 - * self._exc_info = (type(exception), exception, dump_traceback(None)) - * - * self._check_and_notify() # <<<<<<<<<<<<<< - * - * def _raise_exception(self): - */ - __pyx_t_4 = ((struct __pyx_vtabstruct_6gevent_6_event_AsyncResult *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._check_and_notify(((struct __pyx_obj_6gevent_6_event__AbstractLinkable *)__pyx_v_self)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 376, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "src/gevent/event.py":361 - * self._check_and_notify() - * - * def set_exception(self, exception, exc_info=None): # <<<<<<<<<<<<<< - * """Store the exception and wake up any waiters. - * - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_AddTraceback("gevent._event.AsyncResult.set_exception", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":378 - * self._check_and_notify() - * - * def _raise_exception(self): # <<<<<<<<<<<<<< - * reraise(*self.exc_info) - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_13_raise_exception(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_event_11AsyncResult_12_raise_exception[] = "AsyncResult._raise_exception(self)"; -static PyMethodDef __pyx_mdef_6gevent_6_event_11AsyncResult_13_raise_exception = {"_raise_exception", (PyCFunction)__pyx_pw_6gevent_6_event_11AsyncResult_13_raise_exception, METH_NOARGS, __pyx_doc_6gevent_6_event_11AsyncResult_12_raise_exception}; -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_13_raise_exception(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_raise_exception (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_event_11AsyncResult_12_raise_exception(((struct __pyx_obj_6gevent_6_event_AsyncResult *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_12_raise_exception(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("_raise_exception", 0); - - /* "src/gevent/event.py":379 - * - * def _raise_exception(self): - * reraise(*self.exc_info) # <<<<<<<<<<<<<< - * - * def get(self, block=True, timeout=None): - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_exc_info); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 379, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PySequence_Tuple(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 379, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_v_6gevent_6_event_reraise, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 379, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/event.py":378 - * self._check_and_notify() - * - * def _raise_exception(self): # <<<<<<<<<<<<<< - * reraise(*self.exc_info) - * - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent._event.AsyncResult._raise_exception", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":381 - * reraise(*self.exc_info) - * - * def get(self, block=True, timeout=None): # <<<<<<<<<<<<<< - * """Return the stored value or raise the exception. - * - */ - -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_15get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_f_6gevent_6_event_11AsyncResult_get(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_6_event_11AsyncResult_get *__pyx_optional_args) { - PyObject *__pyx_v_block = ((PyObject *)Py_True); - PyObject *__pyx_v_timeout = ((PyObject *)Py_None); - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - int __pyx_t_7; - int __pyx_t_8; - struct __pyx_opt_args_6gevent_6_event_17_AbstractLinkable__wait_core __pyx_t_9; - struct __pyx_opt_args_6gevent_6_event_11AsyncResult_get __pyx_t_10; - __Pyx_RefNannySetupContext("get", 0); - if (__pyx_optional_args) { - if (__pyx_optional_args->__pyx_n > 0) { - __pyx_v_block = __pyx_optional_args->block; - if (__pyx_optional_args->__pyx_n > 1) { - __pyx_v_timeout = __pyx_optional_args->timeout; - } - } - } - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 381, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_6_event_11AsyncResult_15get)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - __pyx_t_5 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_5 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_block, __pyx_v_timeout}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 381, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_block, __pyx_v_timeout}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 381, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 381, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (__pyx_t_4) { - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; - } - __Pyx_INCREF(__pyx_v_block); - __Pyx_GIVEREF(__pyx_v_block); - PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_block); - __Pyx_INCREF(__pyx_v_timeout); - __Pyx_GIVEREF(__pyx_v_timeout); - PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_timeout); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 381, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/event.py":396 - * immediately raise a :class:`Timeout` exception. - * """ - * if self._value is not _NONE: # <<<<<<<<<<<<<< - * return self._value - * if self._exc_info: - */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_NONE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 396, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = (__pyx_v_self->_value != __pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_8 = (__pyx_t_7 != 0); - if (__pyx_t_8) { - - /* "src/gevent/event.py":397 - * """ - * if self._value is not _NONE: - * return self._value # <<<<<<<<<<<<<< - * if self._exc_info: - * return self._raise_exception() - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->_value); - __pyx_r = __pyx_v_self->_value; - goto __pyx_L0; - - /* "src/gevent/event.py":396 - * immediately raise a :class:`Timeout` exception. - * """ - * if self._value is not _NONE: # <<<<<<<<<<<<<< - * return self._value - * if self._exc_info: - */ - } - - /* "src/gevent/event.py":398 - * if self._value is not _NONE: - * return self._value - * if self._exc_info: # <<<<<<<<<<<<<< - * return self._raise_exception() - * - */ - __pyx_t_8 = (__pyx_v_self->_exc_info != Py_None)&&(PyTuple_GET_SIZE(__pyx_v_self->_exc_info) != 0); - if (__pyx_t_8) { - - /* "src/gevent/event.py":399 - * return self._value - * if self._exc_info: - * return self._raise_exception() # <<<<<<<<<<<<<< - * - * if not block: - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_raise_exception); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 399, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 399, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 399, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/event.py":398 - * if self._value is not _NONE: - * return self._value - * if self._exc_info: # <<<<<<<<<<<<<< - * return self._raise_exception() - * - */ - } - - /* "src/gevent/event.py":401 - * return self._raise_exception() - * - * if not block: # <<<<<<<<<<<<<< - * # Not ready and not blocking, so immediately timeout - * raise Timeout() - */ - __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_block); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 401, __pyx_L1_error) - __pyx_t_7 = ((!__pyx_t_8) != 0); - if (unlikely(__pyx_t_7)) { - - /* "src/gevent/event.py":403 - * if not block: - * # Not ready and not blocking, so immediately timeout - * raise Timeout() # <<<<<<<<<<<<<< - * - * # Wait, raising a timeout that elapses - */ - __Pyx_INCREF(__pyx_v_6gevent_6_event_Timeout); - __pyx_t_2 = __pyx_v_6gevent_6_event_Timeout; __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 403, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 403, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 403, __pyx_L1_error) - - /* "src/gevent/event.py":401 - * return self._raise_exception() - * - * if not block: # <<<<<<<<<<<<<< - * # Not ready and not blocking, so immediately timeout - * raise Timeout() - */ - } - - /* "src/gevent/event.py":406 - * - * # Wait, raising a timeout that elapses - * self._wait_core(timeout, ()) # <<<<<<<<<<<<<< - * - * # by definition we are now ready - */ - __pyx_t_9.__pyx_n = 1; - __pyx_t_9.catch = __pyx_empty_tuple; - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_6_event_AsyncResult *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._wait_core(((struct __pyx_obj_6gevent_6_event__AbstractLinkable *)__pyx_v_self), __pyx_v_timeout, &__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 406, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/event.py":409 - * - * # by definition we are now ready - * return self.get(block=False) # <<<<<<<<<<<<<< - * - * def get_nowait(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_10.__pyx_n = 1; - __pyx_t_10.block = Py_False; - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_6_event_AsyncResult *)__pyx_v_self->__pyx_base.__pyx_vtab)->get(__pyx_v_self, 0, &__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 409, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/event.py":381 - * reraise(*self.exc_info) - * - * def get(self, block=True, timeout=None): # <<<<<<<<<<<<<< - * """Return the stored value or raise the exception. - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_AddTraceback("gevent._event.AsyncResult.get", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_15get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_6_event_11AsyncResult_14get[] = "AsyncResult.get(self, block=True, timeout=None)\nReturn the stored value or raise the exception.\n\n If this instance already holds a value or an exception, return or raise it immediately.\n Otherwise, block until another greenlet calls :meth:`set` or :meth:`set_exception` or\n until the optional timeout occurs.\n\n When the *timeout* argument is present and not ``None``, it should be a\n floating point number specifying a timeout for the operation in seconds\n (or fractions thereof). If the *timeout* elapses, the *Timeout* exception will\n be raised.\n\n :keyword bool block: If set to ``False`` and this instance is not ready,\n immediately raise a :class:`Timeout` exception.\n "; -static PyMethodDef __pyx_mdef_6gevent_6_event_11AsyncResult_15get = {"get", (PyCFunction)__pyx_pw_6gevent_6_event_11AsyncResult_15get, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_6_event_11AsyncResult_14get}; -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_15get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_block = 0; - PyObject *__pyx_v_timeout = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("get (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_block,&__pyx_n_s_timeout,0}; - PyObject* values[2] = {0,0}; - values[0] = ((PyObject *)Py_True); - values[1] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_block); - if (value) { values[0] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeout); - if (value) { values[1] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get") < 0)) __PYX_ERR(0, 381, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_block = values[0]; - __pyx_v_timeout = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 381, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._event.AsyncResult.get", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_6_event_11AsyncResult_14get(((struct __pyx_obj_6gevent_6_event_AsyncResult *)__pyx_v_self), __pyx_v_block, __pyx_v_timeout); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_14get(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self, PyObject *__pyx_v_block, PyObject *__pyx_v_timeout) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - struct __pyx_opt_args_6gevent_6_event_11AsyncResult_get __pyx_t_2; - __Pyx_RefNannySetupContext("get", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_2.__pyx_n = 2; - __pyx_t_2.block = __pyx_v_block; - __pyx_t_2.timeout = __pyx_v_timeout; - __pyx_t_1 = __pyx_vtabptr_6gevent_6_event_AsyncResult->get(__pyx_v_self, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 381, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._event.AsyncResult.get", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":411 - * return self.get(block=False) - * - * def get_nowait(self): # <<<<<<<<<<<<<< - * """ - * Return the value or raise the exception without blocking. - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_17get_nowait(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_event_11AsyncResult_16get_nowait[] = "AsyncResult.get_nowait(self)\n\n Return the value or raise the exception without blocking.\n\n If this object is not yet :meth:`ready <ready>`, raise\n :class:`gevent.Timeout` immediately.\n "; -static PyMethodDef __pyx_mdef_6gevent_6_event_11AsyncResult_17get_nowait = {"get_nowait", (PyCFunction)__pyx_pw_6gevent_6_event_11AsyncResult_17get_nowait, METH_NOARGS, __pyx_doc_6gevent_6_event_11AsyncResult_16get_nowait}; -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_17get_nowait(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("get_nowait (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_event_11AsyncResult_16get_nowait(((struct __pyx_obj_6gevent_6_event_AsyncResult *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_16get_nowait(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - struct __pyx_opt_args_6gevent_6_event_11AsyncResult_get __pyx_t_2; - __Pyx_RefNannySetupContext("get_nowait", 0); - - /* "src/gevent/event.py":418 - * :class:`gevent.Timeout` immediately. - * """ - * return self.get(block=False) # <<<<<<<<<<<<<< - * - * def _wait_return_value(self, waited, wait_success): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_2.__pyx_n = 1; - __pyx_t_2.block = Py_False; - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_6_event_AsyncResult *)__pyx_v_self->__pyx_base.__pyx_vtab)->get(__pyx_v_self, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 418, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/event.py":411 - * return self.get(block=False) - * - * def get_nowait(self): # <<<<<<<<<<<<<< - * """ - * Return the value or raise the exception without blocking. - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._event.AsyncResult.get_nowait", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":420 - * return self.get(block=False) - * - * def _wait_return_value(self, waited, wait_success): # <<<<<<<<<<<<<< - * # pylint:disable=unused-argument - * # Always return the value. Since this is a one-shot event, - */ - -static PyObject *__pyx_f_6gevent_6_event_11AsyncResult__wait_return_value(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_waited, CYTHON_UNUSED PyObject *__pyx_v_wait_success) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_wait_return_value", 0); - - /* "src/gevent/event.py":424 - * # Always return the value. Since this is a one-shot event, - * # no race condition should reset it. - * return self.value # <<<<<<<<<<<<<< - * - * def wait(self, timeout=None): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 424, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/event.py":420 - * return self.get(block=False) - * - * def _wait_return_value(self, waited, wait_success): # <<<<<<<<<<<<<< - * # pylint:disable=unused-argument - * # Always return the value. Since this is a one-shot event, - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._event.AsyncResult._wait_return_value", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":426 - * return self.value - * - * def wait(self, timeout=None): # <<<<<<<<<<<<<< - * """Block until the instance is ready. - * - */ - -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_19wait(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_f_6gevent_6_event_11AsyncResult_wait(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_6_event_11AsyncResult_wait *__pyx_optional_args) { - PyObject *__pyx_v_timeout = ((PyObject *)Py_None); - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - struct __pyx_opt_args_6gevent_6_event_17_AbstractLinkable__wait __pyx_t_6; - __Pyx_RefNannySetupContext("wait", 0); - if (__pyx_optional_args) { - if (__pyx_optional_args->__pyx_n > 0) { - __pyx_v_timeout = __pyx_optional_args->timeout; - } - } - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_wait); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 426, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_6_event_11AsyncResult_19wait)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (!__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_timeout); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 426, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_timeout}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 426, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_timeout}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 426, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 426, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_INCREF(__pyx_v_timeout); - __Pyx_GIVEREF(__pyx_v_timeout); - PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_timeout); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 426, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/event.py":445 - * - * """ - * return self._wait(timeout) # <<<<<<<<<<<<<< - * - * # link protocol - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_6.__pyx_n = 1; - __pyx_t_6.timeout = __pyx_v_timeout; - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_6_event_AsyncResult *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._wait(((struct __pyx_obj_6gevent_6_event__AbstractLinkable *)__pyx_v_self), &__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 445, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/event.py":426 - * return self.value - * - * def wait(self, timeout=None): # <<<<<<<<<<<<<< - * """Block until the instance is ready. - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent._event.AsyncResult.wait", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_19wait(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_6_event_11AsyncResult_18wait[] = "AsyncResult.wait(self, timeout=None)\nBlock until the instance is ready.\n\n If this instance already holds a value, it is returned immediately. If this\n instance already holds an exception, ``None`` is returned immediately.\n\n Otherwise, block until another greenlet calls :meth:`set` or :meth:`set_exception`\n (at which point either the value or ``None`` will be returned, respectively),\n or until the optional timeout expires (at which point ``None`` will also be\n returned).\n\n When the *timeout* argument is present and not ``None``, it should be a\n floating point number specifying a timeout for the operation in seconds\n (or fractions thereof).\n\n .. note:: If a timeout is given and expires, ``None`` will be returned\n (no timeout exception will be raised).\n\n "; -static PyMethodDef __pyx_mdef_6gevent_6_event_11AsyncResult_19wait = {"wait", (PyCFunction)__pyx_pw_6gevent_6_event_11AsyncResult_19wait, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_6_event_11AsyncResult_18wait}; -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_19wait(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_timeout = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("wait (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_timeout,0}; - PyObject* values[1] = {0}; - values[0] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeout); - if (value) { values[0] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "wait") < 0)) __PYX_ERR(0, 426, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_timeout = values[0]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("wait", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 426, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._event.AsyncResult.wait", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_6_event_11AsyncResult_18wait(((struct __pyx_obj_6gevent_6_event_AsyncResult *)__pyx_v_self), __pyx_v_timeout); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_18wait(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self, PyObject *__pyx_v_timeout) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - struct __pyx_opt_args_6gevent_6_event_11AsyncResult_wait __pyx_t_2; - __Pyx_RefNannySetupContext("wait", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_2.__pyx_n = 1; - __pyx_t_2.timeout = __pyx_v_timeout; - __pyx_t_1 = __pyx_vtabptr_6gevent_6_event_AsyncResult->wait(__pyx_v_self, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 426, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._event.AsyncResult.wait", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":448 - * - * # link protocol - * def __call__(self, source): # <<<<<<<<<<<<<< - * if source.successful(): - * self.set(source.value) - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_21__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_21__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_source = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__call__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0}; - PyObject* values[1] = {0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_source)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__call__") < 0)) __PYX_ERR(0, 448, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 1) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - } - __pyx_v_source = values[0]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__call__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 448, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._event.AsyncResult.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_6_event_11AsyncResult_20__call__(((struct __pyx_obj_6gevent_6_event_AsyncResult *)__pyx_v_self), __pyx_v_source); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_20__call__(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self, PyObject *__pyx_v_source) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - int __pyx_t_7; - PyObject *__pyx_t_8 = NULL; - __Pyx_RefNannySetupContext("__call__", 0); - - /* "src/gevent/event.py":449 - * # link protocol - * def __call__(self, source): - * if source.successful(): # <<<<<<<<<<<<<< - * self.set(source.value) - * else: - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_source, __pyx_n_s_successful); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 449, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 449, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 449, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 449, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (__pyx_t_4) { - - /* "src/gevent/event.py":450 - * def __call__(self, source): - * if source.successful(): - * self.set(source.value) # <<<<<<<<<<<<<< - * else: - * self.set_exception(source.exception, getattr(source, 'exc_info', None)) - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 450, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_source, __pyx_n_s_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 450, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_5) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 450, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 450, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 450, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - { - __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 450, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL; - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3); - __pyx_t_3 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 450, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/event.py":449 - * # link protocol - * def __call__(self, source): - * if source.successful(): # <<<<<<<<<<<<<< - * self.set(source.value) - * else: - */ - goto __pyx_L3; - } - - /* "src/gevent/event.py":452 - * self.set(source.value) - * else: - * self.set_exception(source.exception, getattr(source, 'exc_info', None)) # <<<<<<<<<<<<<< - * - * # Methods to make us more like concurrent.futures.Future - */ - /*else*/ { - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_exception); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 452, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_source, __pyx_n_s_exception_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 452, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_3 = __Pyx_GetAttr3(__pyx_v_source, __pyx_n_s_exc_info, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 452, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = NULL; - __pyx_t_7 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_7 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_6, __pyx_t_3}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 452, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_6, __pyx_t_3}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 452, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - { - __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 452, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - if (__pyx_t_5) { - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL; - } - __Pyx_GIVEREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_6); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_3); - __pyx_t_6 = 0; - __pyx_t_3 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 452, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __pyx_L3:; - - /* "src/gevent/event.py":448 - * - * # link protocol - * def __call__(self, source): # <<<<<<<<<<<<<< - * if source.successful(): - * self.set(source.value) - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_AddTraceback("gevent._event.AsyncResult.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":456 - * # Methods to make us more like concurrent.futures.Future - * - * def result(self, timeout=None): # <<<<<<<<<<<<<< - * return self.get(timeout=timeout) - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_23result(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_6_event_11AsyncResult_22result[] = "AsyncResult.result(self, timeout=None)"; -static PyMethodDef __pyx_mdef_6gevent_6_event_11AsyncResult_23result = {"result", (PyCFunction)__pyx_pw_6gevent_6_event_11AsyncResult_23result, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_6_event_11AsyncResult_22result}; -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_23result(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_timeout = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("result (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_timeout,0}; - PyObject* values[1] = {0}; - values[0] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeout); - if (value) { values[0] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "result") < 0)) __PYX_ERR(0, 456, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_timeout = values[0]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("result", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 456, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._event.AsyncResult.result", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_6_event_11AsyncResult_22result(((struct __pyx_obj_6gevent_6_event_AsyncResult *)__pyx_v_self), __pyx_v_timeout); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_22result(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self, PyObject *__pyx_v_timeout) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("result", 0); - - /* "src/gevent/event.py":457 - * - * def result(self, timeout=None): - * return self.get(timeout=timeout) # <<<<<<<<<<<<<< - * - * set_result = set - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 457, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 457, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_timeout, __pyx_v_timeout) < 0) __PYX_ERR(0, 457, __pyx_L1_error) - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 457, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - - /* "src/gevent/event.py":456 - * # Methods to make us more like concurrent.futures.Future - * - * def result(self, timeout=None): # <<<<<<<<<<<<<< - * return self.get(timeout=timeout) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent._event.AsyncResult.result", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":461 - * set_result = set - * - * def done(self): # <<<<<<<<<<<<<< - * return self.ready() - * - */ - -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_25done(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static int __pyx_f_6gevent_6_event_11AsyncResult_done(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self, int __pyx_skip_dispatch) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - __Pyx_RefNannySetupContext("done", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_done); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 461, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_6_event_11AsyncResult_25done)) { - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 461, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 461, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 461, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_5; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/event.py":462 - * - * def done(self): - * return self.ready() # <<<<<<<<<<<<<< - * - * # we don't support cancelling - */ - __pyx_r = ((struct __pyx_vtabstruct_6gevent_6_event_AsyncResult *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.ready(((struct __pyx_obj_6gevent_6_event__AbstractLinkable *)__pyx_v_self), 0); - goto __pyx_L0; - - /* "src/gevent/event.py":461 - * set_result = set - * - * def done(self): # <<<<<<<<<<<<<< - * return self.ready() - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_WriteUnraisable("gevent._event.AsyncResult.done", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); - __pyx_r = 0; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_25done(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_event_11AsyncResult_24done[] = "AsyncResult.done(self) -> bool"; -static PyMethodDef __pyx_mdef_6gevent_6_event_11AsyncResult_25done = {"done", (PyCFunction)__pyx_pw_6gevent_6_event_11AsyncResult_25done, METH_NOARGS, __pyx_doc_6gevent_6_event_11AsyncResult_24done}; -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_25done(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("done (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_event_11AsyncResult_24done(((struct __pyx_obj_6gevent_6_event_AsyncResult *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_24done(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("done", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_f_6gevent_6_event_11AsyncResult_done(__pyx_v_self, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 461, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._event.AsyncResult.done", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":466 - * # we don't support cancelling - * - * def cancel(self): # <<<<<<<<<<<<<< - * return False - * - */ - -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_27cancel(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static int __pyx_f_6gevent_6_event_11AsyncResult_cancel(CYTHON_UNUSED struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self, int __pyx_skip_dispatch) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - __Pyx_RefNannySetupContext("cancel", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_cancel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 466, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_6_event_11AsyncResult_27cancel)) { - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 466, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 466, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 466, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_5; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/event.py":467 - * - * def cancel(self): - * return False # <<<<<<<<<<<<<< - * - * def cancelled(self): - */ - __pyx_r = 0; - goto __pyx_L0; - - /* "src/gevent/event.py":466 - * # we don't support cancelling - * - * def cancel(self): # <<<<<<<<<<<<<< - * return False - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_WriteUnraisable("gevent._event.AsyncResult.cancel", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); - __pyx_r = 0; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_27cancel(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_event_11AsyncResult_26cancel[] = "AsyncResult.cancel(self) -> bool"; -static PyMethodDef __pyx_mdef_6gevent_6_event_11AsyncResult_27cancel = {"cancel", (PyCFunction)__pyx_pw_6gevent_6_event_11AsyncResult_27cancel, METH_NOARGS, __pyx_doc_6gevent_6_event_11AsyncResult_26cancel}; -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_27cancel(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("cancel (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_event_11AsyncResult_26cancel(((struct __pyx_obj_6gevent_6_event_AsyncResult *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_26cancel(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("cancel", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_f_6gevent_6_event_11AsyncResult_cancel(__pyx_v_self, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 466, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._event.AsyncResult.cancel", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":469 - * return False - * - * def cancelled(self): # <<<<<<<<<<<<<< - * return False - * - */ - -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_29cancelled(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static int __pyx_f_6gevent_6_event_11AsyncResult_cancelled(CYTHON_UNUSED struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self, int __pyx_skip_dispatch) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - __Pyx_RefNannySetupContext("cancelled", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_cancelled); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 469, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_6_event_11AsyncResult_29cancelled)) { - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 469, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 469, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 469, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_5; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/event.py":470 - * - * def cancelled(self): - * return False # <<<<<<<<<<<<<< - * - * # exception is a method, we use it as a property - */ - __pyx_r = 0; - goto __pyx_L0; - - /* "src/gevent/event.py":469 - * return False - * - * def cancelled(self): # <<<<<<<<<<<<<< - * return False - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_WriteUnraisable("gevent._event.AsyncResult.cancelled", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); - __pyx_r = 0; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_29cancelled(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_event_11AsyncResult_28cancelled[] = "AsyncResult.cancelled(self) -> bool"; -static PyMethodDef __pyx_mdef_6gevent_6_event_11AsyncResult_29cancelled = {"cancelled", (PyCFunction)__pyx_pw_6gevent_6_event_11AsyncResult_29cancelled, METH_NOARGS, __pyx_doc_6gevent_6_event_11AsyncResult_28cancelled}; -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_29cancelled(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("cancelled (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_event_11AsyncResult_28cancelled(((struct __pyx_obj_6gevent_6_event_AsyncResult *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_28cancelled(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("cancelled", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_f_6gevent_6_event_11AsyncResult_cancelled(__pyx_v_self, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 469, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._event.AsyncResult.cancelled", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/_event.pxd":64 - * - * cdef class AsyncResult(_AbstractLinkable): - * cdef readonly _value # <<<<<<<<<<<<<< - * cdef readonly tuple _exc_info - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_6_value_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_6_value_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_event_11AsyncResult_6_value___get__(((struct __pyx_obj_6gevent_6_event_AsyncResult *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_6_value___get__(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->_value); - __pyx_r = __pyx_v_self->_value; - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/_event.pxd":65 - * cdef class AsyncResult(_AbstractLinkable): - * cdef readonly _value - * cdef readonly tuple _exc_info # <<<<<<<<<<<<<< - * - * # For the use of _imap.py - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_9_exc_info_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_9_exc_info_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_event_11AsyncResult_9_exc_info___get__(((struct __pyx_obj_6gevent_6_event_AsyncResult *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_9_exc_info___get__(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->_exc_info); - __pyx_r = __pyx_v_self->_exc_info; - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/_event.pxd":68 - * - * # For the use of _imap.py - * cdef public int _imap_task_index # <<<<<<<<<<<<<< - * - * cpdef get(self, block=*, timeout=*) - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_16_imap_task_index_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_6_event_11AsyncResult_16_imap_task_index_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_event_11AsyncResult_16_imap_task_index___get__(((struct __pyx_obj_6gevent_6_event_AsyncResult *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_event_11AsyncResult_16_imap_task_index___get__(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_imap_task_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 68, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._event.AsyncResult._imap_task_index.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static int __pyx_pw_6gevent_6_event_11AsyncResult_16_imap_task_index_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_6gevent_6_event_11AsyncResult_16_imap_task_index_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_event_11AsyncResult_16_imap_task_index_2__set__(((struct __pyx_obj_6gevent_6_event_AsyncResult *)__pyx_v_self), ((PyObject *)__pyx_v_value)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_6_event_11AsyncResult_16_imap_task_index_2__set__(struct __pyx_obj_6gevent_6_event_AsyncResult *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("__set__", 0); - __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 68, __pyx_L1_error) - __pyx_v_self->_imap_task_index = __pyx_t_1; - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_AddTraceback("gevent._event.AsyncResult._imap_task_index.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/event.py":474 - * # exception is a method, we use it as a property - * - * def _init(): # <<<<<<<<<<<<<< - * greenlet_init() # pylint:disable=undefined-variable - * - */ - -static void __pyx_f_6gevent_6_event__init(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_init", 0); - - /* "src/gevent/event.py":475 - * - * def _init(): - * greenlet_init() # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * - * _init() - */ - __pyx_f_6gevent_6_event_greenlet_init(); - - /* "src/gevent/event.py":474 - * # exception is a method, we use it as a property - * - * def _init(): # <<<<<<<<<<<<<< - * greenlet_init() # pylint:disable=undefined-variable - * - */ - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -/* "gevent/__greenlet_primitives.pxd":23 - * - * @cython.final - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - -static CYTHON_INLINE PyGreenlet *__pyx_f_6gevent_21__greenlet_primitives_getcurrent(void) { - PyGreenlet *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("getcurrent", 0); - - /* "gevent/__greenlet_primitives.pxd":24 - * @cython.final - * cdef inline greenlet getcurrent(): - * return PyGreenlet_GetCurrent() # <<<<<<<<<<<<<< - * - * cdef bint _greenlet_imported - */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __pyx_t_1 = ((PyObject *)PyGreenlet_GetCurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 24, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = ((PyGreenlet *)__pyx_t_1); - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "gevent/__greenlet_primitives.pxd":23 - * - * @cython.final - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__greenlet_primitives.getcurrent", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__greenlet_primitives.pxd":28 - * cdef bint _greenlet_imported - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - -static CYTHON_INLINE void __pyx_f_6gevent_21__greenlet_primitives_greenlet_init(void) { - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("greenlet_init", 0); - - /* "gevent/__greenlet_primitives.pxd":30 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - __pyx_t_1 = ((!(__pyx_v_6gevent_21__greenlet_primitives__greenlet_imported != 0)) != 0); - if (__pyx_t_1) { - - /* "gevent/__greenlet_primitives.pxd":31 - * global _greenlet_imported - * if not _greenlet_imported: - * PyGreenlet_Import() # <<<<<<<<<<<<<< - * _greenlet_imported = True - * - */ - PyGreenlet_Import(); - - /* "gevent/__greenlet_primitives.pxd":32 - * if not _greenlet_imported: - * PyGreenlet_Import() - * _greenlet_imported = True # <<<<<<<<<<<<<< - * - * cdef inline object _greenlet_switch(greenlet self): - */ - __pyx_v_6gevent_21__greenlet_primitives__greenlet_imported = 1; - - /* "gevent/__greenlet_primitives.pxd":30 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - } - - /* "gevent/__greenlet_primitives.pxd":28 - * cdef bint _greenlet_imported - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -/* "gevent/__greenlet_primitives.pxd":34 - * _greenlet_imported = True - * - * cdef inline object _greenlet_switch(greenlet self): # <<<<<<<<<<<<<< - * return PyGreenlet_Switch(self, NULL, NULL) - * - */ - -static CYTHON_INLINE PyObject *__pyx_f_6gevent_21__greenlet_primitives__greenlet_switch(PyGreenlet *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_greenlet_switch", 0); - - /* "gevent/__greenlet_primitives.pxd":35 - * - * cdef inline object _greenlet_switch(greenlet self): - * return PyGreenlet_Switch(self, NULL, NULL) # <<<<<<<<<<<<<< - * - * cdef class TrackedRawGreenlet(greenlet): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyGreenlet_Switch(__pyx_v_self, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 35, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "gevent/__greenlet_primitives.pxd":34 - * _greenlet_imported = True - * - * cdef inline object _greenlet_switch(greenlet self): # <<<<<<<<<<<<<< - * return PyGreenlet_Switch(self, NULL, NULL) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__greenlet_primitives._greenlet_switch", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/_event.pxd":27 - * void PyGreenlet_Import() - * - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - -static CYTHON_INLINE PyGreenlet *__pyx_f_6gevent_6_event_getcurrent(void) { - PyGreenlet *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("getcurrent", 0); - - /* "gevent/_event.pxd":28 - * - * cdef inline greenlet getcurrent(): - * return PyGreenlet_GetCurrent() # <<<<<<<<<<<<<< - * - * cdef inline void greenlet_init(): - */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __pyx_t_1 = ((PyObject *)PyGreenlet_GetCurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 28, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = ((PyGreenlet *)__pyx_t_1); - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "gevent/_event.pxd":27 - * void PyGreenlet_Import() - * - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._event.getcurrent", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/_event.pxd":30 - * return PyGreenlet_GetCurrent() - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - -static CYTHON_INLINE void __pyx_f_6gevent_6_event_greenlet_init(void) { - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("greenlet_init", 0); - - /* "gevent/_event.pxd":32 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - __pyx_t_1 = ((!(__pyx_v_6gevent_6_event__greenlet_imported != 0)) != 0); - if (__pyx_t_1) { - - /* "gevent/_event.pxd":33 - * global _greenlet_imported - * if not _greenlet_imported: - * PyGreenlet_Import() # <<<<<<<<<<<<<< - * _greenlet_imported = True - * - */ - PyGreenlet_Import(); - - /* "gevent/_event.pxd":34 - * if not _greenlet_imported: - * PyGreenlet_Import() - * _greenlet_imported = True # <<<<<<<<<<<<<< - * - * cdef void _init() - */ - __pyx_v_6gevent_6_event__greenlet_imported = 1; - - /* "gevent/_event.pxd":32 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - } - - /* "gevent/_event.pxd":30 - * return PyGreenlet_GetCurrent() - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} -static struct __pyx_vtabstruct_6gevent_6_event__AbstractLinkable __pyx_vtable_6gevent_6_event__AbstractLinkable; - -static PyObject *__pyx_tp_new_6gevent_6_event__AbstractLinkable(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - struct __pyx_obj_6gevent_6_event__AbstractLinkable *p; - PyObject *o; - if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { - o = (*t->tp_alloc)(t, 0); - } else { - o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); - } - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_6_event__AbstractLinkable *)o); - p->__pyx_vtab = __pyx_vtabptr_6gevent_6_event__AbstractLinkable; - p->_notifier = Py_None; Py_INCREF(Py_None); - p->_links = ((PyObject*)Py_None); Py_INCREF(Py_None); - p->hub = ((struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *)Py_None); Py_INCREF(Py_None); - return o; -} - -static void __pyx_tp_dealloc_6gevent_6_event__AbstractLinkable(PyObject *o) { - struct __pyx_obj_6gevent_6_event__AbstractLinkable *p = (struct __pyx_obj_6gevent_6_event__AbstractLinkable *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - #endif - PyObject_GC_UnTrack(o); - if (p->__weakref__) PyObject_ClearWeakRefs(o); - Py_CLEAR(p->_notifier); - Py_CLEAR(p->_links); - Py_CLEAR(p->hub); - (*Py_TYPE(o)->tp_free)(o); -} - -static int __pyx_tp_traverse_6gevent_6_event__AbstractLinkable(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_6gevent_6_event__AbstractLinkable *p = (struct __pyx_obj_6gevent_6_event__AbstractLinkable *)o; - if (p->_notifier) { - e = (*v)(p->_notifier, a); if (e) return e; - } - if (p->_links) { - e = (*v)(p->_links, a); if (e) return e; - } - if (p->hub) { - e = (*v)(((PyObject *)p->hub), a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_6gevent_6_event__AbstractLinkable(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_6gevent_6_event__AbstractLinkable *p = (struct __pyx_obj_6gevent_6_event__AbstractLinkable *)o; - tmp = ((PyObject*)p->_notifier); - p->_notifier = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->_links); - p->_links = ((PyObject*)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->hub); - p->hub = ((struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyObject *__pyx_getprop_6gevent_6_event_17_AbstractLinkable_hub(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_6_event_17_AbstractLinkable_3hub_1__get__(o); -} - -static PyMethodDef __pyx_methods_6gevent_6_event__AbstractLinkable[] = { - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_6gevent_6_event__AbstractLinkable[] = { - {(char *)"hub", __pyx_getprop_6gevent_6_event_17_AbstractLinkable_hub, 0, (char *)0, 0}, - {0, 0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_6_event__AbstractLinkable = { - PyVarObject_HEAD_INIT(0, 0) - "gevent._event._AbstractLinkable", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_6_event__AbstractLinkable), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_6_event__AbstractLinkable, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "_AbstractLinkable()", /*tp_doc*/ - __pyx_tp_traverse_6gevent_6_event__AbstractLinkable, /*tp_traverse*/ - __pyx_tp_clear_6gevent_6_event__AbstractLinkable, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_6_event__AbstractLinkable, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_6gevent_6_event__AbstractLinkable, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_6_event_17_AbstractLinkable_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_6_event__AbstractLinkable, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; -static struct __pyx_vtabstruct_6gevent_6_event_Event __pyx_vtable_6gevent_6_event_Event; - -static PyObject *__pyx_tp_new_6gevent_6_event_Event(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_obj_6gevent_6_event_Event *p; - PyObject *o = __pyx_tp_new_6gevent_6_event__AbstractLinkable(t, a, k); - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_6_event_Event *)o); - p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6gevent_6_event__AbstractLinkable*)__pyx_vtabptr_6gevent_6_event_Event; - return o; -} - -static PyMethodDef __pyx_methods_6gevent_6_event_Event[] = { - {"is_set", (PyCFunction)__pyx_pw_6gevent_6_event_5Event_5is_set, METH_NOARGS, __pyx_doc_6gevent_6_event_5Event_4is_set}, - {"isSet", (PyCFunction)__pyx_pw_6gevent_6_event_5Event_7isSet, METH_NOARGS, __pyx_doc_6gevent_6_event_5Event_6isSet}, - {"set", (PyCFunction)__pyx_pw_6gevent_6_event_5Event_11set, METH_NOARGS, __pyx_doc_6gevent_6_event_5Event_10set}, - {"clear", (PyCFunction)__pyx_pw_6gevent_6_event_5Event_13clear, METH_NOARGS, __pyx_doc_6gevent_6_event_5Event_12clear}, - {"wait", (PyCFunction)__pyx_pw_6gevent_6_event_5Event_15wait, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_6_event_5Event_14wait}, - {"_reset_internal_locks", (PyCFunction)__pyx_pw_6gevent_6_event_5Event_17_reset_internal_locks, METH_NOARGS, __pyx_doc_6gevent_6_event_5Event_16_reset_internal_locks}, - {0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_6_event_Event = { - PyVarObject_HEAD_INIT(0, 0) - "gevent._event.Event", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_6_event_Event), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_6_event__AbstractLinkable, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - __pyx_pw_6gevent_6_event_5Event_3__str__, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "Event()\nA synchronization primitive that allows one greenlet to wake up one or more others.\n It has the same interface as :class:`threading.Event` but works across greenlets.\n\n An event object manages an internal flag that can be set to true with the\n :meth:`set` method and reset to false with the :meth:`clear` method. The :meth:`wait` method\n blocks until the flag is true.\n\n .. note::\n The order and timing in which waiting greenlets are awakened is not determined.\n As an implementation note, in gevent 1.1 and 1.0, waiting greenlets are awakened in a\n undetermined order sometime *after* the current greenlet yields to the event loop. Other greenlets\n (those not waiting to be awakened) may run between the current greenlet yielding and\n the waiting greenlets being awakened. These details may change in the future.\n ", /*tp_doc*/ - __pyx_tp_traverse_6gevent_6_event__AbstractLinkable, /*tp_traverse*/ - __pyx_tp_clear_6gevent_6_event__AbstractLinkable, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_6_event_Event, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_6_event_5Event_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_6_event_Event, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; -static struct __pyx_vtabstruct_6gevent_6_event_AsyncResult __pyx_vtable_6gevent_6_event_AsyncResult; - -static PyObject *__pyx_tp_new_6gevent_6_event_AsyncResult(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_obj_6gevent_6_event_AsyncResult *p; - PyObject *o = __pyx_tp_new_6gevent_6_event__AbstractLinkable(t, a, k); - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_6_event_AsyncResult *)o); - p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6gevent_6_event__AbstractLinkable*)__pyx_vtabptr_6gevent_6_event_AsyncResult; - p->_value = Py_None; Py_INCREF(Py_None); - p->_exc_info = ((PyObject*)Py_None); Py_INCREF(Py_None); - return o; -} - -static void __pyx_tp_dealloc_6gevent_6_event_AsyncResult(PyObject *o) { - struct __pyx_obj_6gevent_6_event_AsyncResult *p = (struct __pyx_obj_6gevent_6_event_AsyncResult *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - #endif - PyObject_GC_UnTrack(o); - Py_CLEAR(p->_value); - Py_CLEAR(p->_exc_info); - PyObject_GC_Track(o); - __pyx_tp_dealloc_6gevent_6_event__AbstractLinkable(o); -} - -static int __pyx_tp_traverse_6gevent_6_event_AsyncResult(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_6gevent_6_event_AsyncResult *p = (struct __pyx_obj_6gevent_6_event_AsyncResult *)o; - e = __pyx_tp_traverse_6gevent_6_event__AbstractLinkable(o, v, a); if (e) return e; - if (p->_value) { - e = (*v)(p->_value, a); if (e) return e; - } - if (p->_exc_info) { - e = (*v)(p->_exc_info, a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_6gevent_6_event_AsyncResult(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_6gevent_6_event_AsyncResult *p = (struct __pyx_obj_6gevent_6_event_AsyncResult *)o; - __pyx_tp_clear_6gevent_6_event__AbstractLinkable(o); - tmp = ((PyObject*)p->_value); - p->_value = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->_exc_info); - p->_exc_info = ((PyObject*)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyObject *__pyx_getprop_6gevent_6_event_11AsyncResult__exception(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_6_event_11AsyncResult_10_exception_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_6_event_11AsyncResult_value(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_6_event_11AsyncResult_5value_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_6_event_11AsyncResult_exc_info(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_6_event_11AsyncResult_8exc_info_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_6_event_11AsyncResult_exception(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_6_event_11AsyncResult_9exception_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_6_event_11AsyncResult__value(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_6_event_11AsyncResult_6_value_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_6_event_11AsyncResult__exc_info(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_6_event_11AsyncResult_9_exc_info_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_6_event_11AsyncResult__imap_task_index(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_6_event_11AsyncResult_16_imap_task_index_1__get__(o); -} - -static int __pyx_setprop_6gevent_6_event_11AsyncResult__imap_task_index(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { - if (v) { - return __pyx_pw_6gevent_6_event_11AsyncResult_16_imap_task_index_3__set__(o, v); - } - else { - PyErr_SetString(PyExc_NotImplementedError, "__del__"); - return -1; - } -} - -static PyMethodDef __pyx_methods_6gevent_6_event_AsyncResult[] = { - {"set", (PyCFunction)__pyx_pw_6gevent_6_event_11AsyncResult_9set, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_6_event_11AsyncResult_8set}, - {"set_exception", (PyCFunction)__pyx_pw_6gevent_6_event_11AsyncResult_11set_exception, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_6_event_11AsyncResult_10set_exception}, - {"_raise_exception", (PyCFunction)__pyx_pw_6gevent_6_event_11AsyncResult_13_raise_exception, METH_NOARGS, __pyx_doc_6gevent_6_event_11AsyncResult_12_raise_exception}, - {"get_nowait", (PyCFunction)__pyx_pw_6gevent_6_event_11AsyncResult_17get_nowait, METH_NOARGS, __pyx_doc_6gevent_6_event_11AsyncResult_16get_nowait}, - {"result", (PyCFunction)__pyx_pw_6gevent_6_event_11AsyncResult_23result, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_6_event_11AsyncResult_22result}, - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_6gevent_6_event_AsyncResult[] = { - {(char *)"_exception", __pyx_getprop_6gevent_6_event_11AsyncResult__exception, 0, (char *)0, 0}, - {(char *)"value", __pyx_getprop_6gevent_6_event_11AsyncResult_value, 0, (char *)"\n Holds the value passed to :meth:`set` if :meth:`set` was called. Otherwise,\n ``None``\n ", 0}, - {(char *)"exc_info", __pyx_getprop_6gevent_6_event_11AsyncResult_exc_info, 0, (char *)"\n The three-tuple of exception information if :meth:`set_exception` was called.\n ", 0}, - {(char *)"exception", __pyx_getprop_6gevent_6_event_11AsyncResult_exception, 0, (char *)"Holds the exception instance passed to :meth:`set_exception` if :meth:`set_exception` was called.\n Otherwise ``None``.", 0}, - {(char *)"_value", __pyx_getprop_6gevent_6_event_11AsyncResult__value, 0, (char *)0, 0}, - {(char *)"_exc_info", __pyx_getprop_6gevent_6_event_11AsyncResult__exc_info, 0, (char *)0, 0}, - {(char *)"_imap_task_index", __pyx_getprop_6gevent_6_event_11AsyncResult__imap_task_index, __pyx_setprop_6gevent_6_event_11AsyncResult__imap_task_index, (char *)"_imap_task_index: 'int'", 0}, - {0, 0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_6_event_AsyncResult = { - PyVarObject_HEAD_INIT(0, 0) - "gevent._event.AsyncResult", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_6_event_AsyncResult), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_6_event_AsyncResult, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - __pyx_pw_6gevent_6_event_11AsyncResult_21__call__, /*tp_call*/ - __pyx_pw_6gevent_6_event_11AsyncResult_3__str__, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "AsyncResult()\nA one-time event that stores a value or an exception.\n\n Like :class:`Event` it wakes up all the waiters when :meth:`set` or :meth:`set_exception`\n is called. Waiters may receive the passed value or exception by calling :meth:`get`\n instead of :meth:`wait`. An :class:`AsyncResult` instance cannot be reset.\n\n To pass a value call :meth:`set`. Calls to :meth:`get` (those that are currently blocking as well as\n those made in the future) will return the value:\n\n >>> result = AsyncResult()\n >>> result.set(100)\n >>> result.get()\n 100\n\n To pass an exception call :meth:`set_exception`. This will cause :meth:`get` to raise that exception:\n\n >>> result = AsyncResult()\n >>> result.set_exception(RuntimeError('failure'))\n >>> result.get()\n Traceback (most recent call last):\n ...\n RuntimeError: failure\n\n :class:`AsyncResult` implements :meth:`__call__` and thus can be used as :meth:`link` target:\n\n >>> import gevent\n >>> result = AsyncResult()\n >>> gevent.spawn(lambda : 1/0).link(result)\n >>> try:\n ... result.get()\n ... except ZeroDivisionError:\n ... print('ZeroDivisionError')\n ZeroDivisionError\n\n .. note::\n The order and timing in which waiting greenlets are awakened is not determined.\n As an implementation note, in gevent 1.1 and 1.0, waiting greenlets are awakened in a\n undetermined order sometime *after* the current greenlet yields to the event loop. Other greenlets\n (those not waiting to be awakened) may run between the current greenlet yielding and\n the waiting greenlets being awakened. These details may change in the future.\n\n .. versionchanged:: 1.1\n The exact order in which waiting greenlets are awakened is not the same\n as in 1.0.\n .. versionchanged:: 1.1\n Callbacks :meth:`linked <rawlink>` to this"" object are required to be hashable, and duplicates are\n merged.\n ", /*tp_doc*/ - __pyx_tp_traverse_6gevent_6_event_AsyncResult, /*tp_traverse*/ - __pyx_tp_clear_6gevent_6_event_AsyncResult, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_6_event_AsyncResult, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_6gevent_6_event_AsyncResult, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_6_event_11AsyncResult_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_6_event_AsyncResult, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; - -static PyMethodDef __pyx_methods[] = { - {0, 0, 0, 0} -}; - -#if PY_MAJOR_VERSION >= 3 -#if CYTHON_PEP489_MULTI_PHASE_INIT -static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ -static int __pyx_pymod_exec__event(PyObject* module); /*proto*/ -static PyModuleDef_Slot __pyx_moduledef_slots[] = { - {Py_mod_create, (void*)__pyx_pymod_create}, - {Py_mod_exec, (void*)__pyx_pymod_exec__event}, - {0, NULL} -}; -#endif - -static struct PyModuleDef __pyx_moduledef = { - PyModuleDef_HEAD_INIT, - "_event", - __pyx_k_Basic_synchronization_primitives, /* m_doc */ - #if CYTHON_PEP489_MULTI_PHASE_INIT - 0, /* m_size */ - #else - -1, /* m_size */ - #endif - __pyx_methods /* m_methods */, - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_moduledef_slots, /* m_slots */ - #else - NULL, /* m_reload */ - #endif - NULL, /* m_traverse */ - NULL, /* m_clear */ - NULL /* m_free */ -}; -#endif - -static __Pyx_StringTabEntry __pyx_string_tab[] = { - {&__pyx_n_s_AbstractLinkable__notify_links, __pyx_k_AbstractLinkable__notify_links, sizeof(__pyx_k_AbstractLinkable__notify_links), 0, 0, 1, 1}, - {&__pyx_n_s_AbstractLinkable_rawlink, __pyx_k_AbstractLinkable_rawlink, sizeof(__pyx_k_AbstractLinkable_rawlink), 0, 0, 1, 1}, - {&__pyx_n_s_AbstractLinkable_ready, __pyx_k_AbstractLinkable_ready, sizeof(__pyx_k_AbstractLinkable_ready), 0, 0, 1, 1}, - {&__pyx_n_s_AbstractLinkable_unlink, __pyx_k_AbstractLinkable_unlink, sizeof(__pyx_k_AbstractLinkable_unlink), 0, 0, 1, 1}, - {&__pyx_n_s_AsyncResult, __pyx_k_AsyncResult, sizeof(__pyx_k_AsyncResult), 0, 0, 1, 1}, - {&__pyx_n_s_AsyncResult__raise_exception, __pyx_k_AsyncResult__raise_exception, sizeof(__pyx_k_AsyncResult__raise_exception), 0, 0, 1, 1}, - {&__pyx_n_s_AsyncResult_cancel, __pyx_k_AsyncResult_cancel, sizeof(__pyx_k_AsyncResult_cancel), 0, 0, 1, 1}, - {&__pyx_n_s_AsyncResult_cancelled, __pyx_k_AsyncResult_cancelled, sizeof(__pyx_k_AsyncResult_cancelled), 0, 0, 1, 1}, - {&__pyx_n_s_AsyncResult_done, __pyx_k_AsyncResult_done, sizeof(__pyx_k_AsyncResult_done), 0, 0, 1, 1}, - {&__pyx_n_s_AsyncResult_get, __pyx_k_AsyncResult_get, sizeof(__pyx_k_AsyncResult_get), 0, 0, 1, 1}, - {&__pyx_n_s_AsyncResult_get_nowait, __pyx_k_AsyncResult_get_nowait, sizeof(__pyx_k_AsyncResult_get_nowait), 0, 0, 1, 1}, - {&__pyx_n_s_AsyncResult_ready, __pyx_k_AsyncResult_ready, sizeof(__pyx_k_AsyncResult_ready), 0, 0, 1, 1}, - {&__pyx_n_s_AsyncResult_result, __pyx_k_AsyncResult_result, sizeof(__pyx_k_AsyncResult_result), 0, 0, 1, 1}, - {&__pyx_n_s_AsyncResult_set, __pyx_k_AsyncResult_set, sizeof(__pyx_k_AsyncResult_set), 0, 0, 1, 1}, - {&__pyx_n_s_AsyncResult_set_exception, __pyx_k_AsyncResult_set_exception, sizeof(__pyx_k_AsyncResult_set_exception), 0, 0, 1, 1}, - {&__pyx_n_s_AsyncResult_successful, __pyx_k_AsyncResult_successful, sizeof(__pyx_k_AsyncResult_successful), 0, 0, 1, 1}, - {&__pyx_n_s_AsyncResult_wait, __pyx_k_AsyncResult_wait, sizeof(__pyx_k_AsyncResult_wait), 0, 0, 1, 1}, - {&__pyx_n_s_Event, __pyx_k_Event, sizeof(__pyx_k_Event), 0, 0, 1, 1}, - {&__pyx_n_s_Event__reset_internal_locks, __pyx_k_Event__reset_internal_locks, sizeof(__pyx_k_Event__reset_internal_locks), 0, 0, 1, 1}, - {&__pyx_n_s_Event_clear, __pyx_k_Event_clear, sizeof(__pyx_k_Event_clear), 0, 0, 1, 1}, - {&__pyx_n_s_Event_isSet, __pyx_k_Event_isSet, sizeof(__pyx_k_Event_isSet), 0, 0, 1, 1}, - {&__pyx_n_s_Event_is_set, __pyx_k_Event_is_set, sizeof(__pyx_k_Event_is_set), 0, 0, 1, 1}, - {&__pyx_n_s_Event_ready, __pyx_k_Event_ready, sizeof(__pyx_k_Event_ready), 0, 0, 1, 1}, - {&__pyx_n_s_Event_set, __pyx_k_Event_set, sizeof(__pyx_k_Event_set), 0, 0, 1, 1}, - {&__pyx_n_s_Event_wait, __pyx_k_Event_wait, sizeof(__pyx_k_Event_wait), 0, 0, 1, 1}, - {&__pyx_kp_s_Expected_callable_r, __pyx_k_Expected_callable_r, sizeof(__pyx_k_Expected_callable_r), 0, 0, 1, 0}, - {&__pyx_n_s_InvalidSwitchError, __pyx_k_InvalidSwitchError, sizeof(__pyx_k_InvalidSwitchError), 0, 0, 1, 1}, - {&__pyx_kp_s_Invalid_switch_into_Event_wait_r, __pyx_k_Invalid_switch_into_Event_wait_r, sizeof(__pyx_k_Invalid_switch_into_Event_wait_r), 0, 0, 1, 0}, - {&__pyx_n_s_KeyError, __pyx_k_KeyError, sizeof(__pyx_k_KeyError), 0, 0, 1, 1}, - {&__pyx_n_s_NONE, __pyx_k_NONE, sizeof(__pyx_k_NONE), 0, 0, 1, 1}, - {&__pyx_n_s_None, __pyx_k_None, sizeof(__pyx_k_None), 0, 0, 1, 1}, - {&__pyx_n_s_NotImplementedError, __pyx_k_NotImplementedError, sizeof(__pyx_k_NotImplementedError), 0, 0, 1, 1}, - {&__pyx_n_s_Timeout, __pyx_k_Timeout, sizeof(__pyx_k_Timeout), 0, 0, 1, 1}, - {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1}, - {&__pyx_n_s_all, __pyx_k_all, sizeof(__pyx_k_all), 0, 0, 1, 1}, - {&__pyx_n_s_auto_unlink, __pyx_k_auto_unlink, sizeof(__pyx_k_auto_unlink), 0, 0, 1, 1}, - {&__pyx_n_s_block, __pyx_k_block, sizeof(__pyx_k_block), 0, 0, 1, 1}, - {&__pyx_n_s_callback, __pyx_k_callback, sizeof(__pyx_k_callback), 0, 0, 1, 1}, - {&__pyx_n_s_cancel, __pyx_k_cancel, sizeof(__pyx_k_cancel), 0, 0, 1, 1}, - {&__pyx_n_s_cancelled, __pyx_k_cancelled, sizeof(__pyx_k_cancelled), 0, 0, 1, 1}, - {&__pyx_n_s_class, __pyx_k_class, sizeof(__pyx_k_class), 0, 0, 1, 1}, - {&__pyx_n_s_clear, __pyx_k_clear, sizeof(__pyx_k_clear), 0, 0, 1, 1}, - {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, - {&__pyx_n_s_done, __pyx_k_done, sizeof(__pyx_k_done), 0, 0, 1, 1}, - {&__pyx_n_s_dump_traceback, __pyx_k_dump_traceback, sizeof(__pyx_k_dump_traceback), 0, 0, 1, 1}, - {&__pyx_n_s_enter, __pyx_k_enter, sizeof(__pyx_k_enter), 0, 0, 1, 1}, - {&__pyx_n_s_exc_info, __pyx_k_exc_info, sizeof(__pyx_k_exc_info), 0, 0, 1, 1}, - {&__pyx_n_s_exc_info_2, __pyx_k_exc_info_2, sizeof(__pyx_k_exc_info_2), 0, 0, 1, 1}, - {&__pyx_n_s_exception, __pyx_k_exception, sizeof(__pyx_k_exception), 0, 0, 1, 1}, - {&__pyx_n_s_exception_2, __pyx_k_exception_2, sizeof(__pyx_k_exception_2), 0, 0, 1, 1}, - {&__pyx_kp_s_exception_r, __pyx_k_exception_r, sizeof(__pyx_k_exception_r), 0, 0, 1, 0}, - {&__pyx_n_s_exit, __pyx_k_exit, sizeof(__pyx_k_exit), 0, 0, 1, 1}, - {&__pyx_n_s_flag, __pyx_k_flag, sizeof(__pyx_k_flag), 0, 0, 1, 1}, - {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1}, - {&__pyx_n_s_get_hub_noargs, __pyx_k_get_hub_noargs, sizeof(__pyx_k_get_hub_noargs), 0, 0, 1, 1}, - {&__pyx_n_s_get_nowait, __pyx_k_get_nowait, sizeof(__pyx_k_get_nowait), 0, 0, 1, 1}, - {&__pyx_n_s_getcurrent, __pyx_k_getcurrent, sizeof(__pyx_k_getcurrent), 0, 0, 1, 1}, - {&__pyx_n_s_gevent__compat, __pyx_k_gevent__compat, sizeof(__pyx_k_gevent__compat), 0, 0, 1, 1}, - {&__pyx_n_s_gevent__event, __pyx_k_gevent__event, sizeof(__pyx_k_gevent__event), 0, 0, 1, 1}, - {&__pyx_n_s_gevent__hub_local, __pyx_k_gevent__hub_local, sizeof(__pyx_k_gevent__hub_local), 0, 0, 1, 1}, - {&__pyx_n_s_gevent__tblib, __pyx_k_gevent__tblib, sizeof(__pyx_k_gevent__tblib), 0, 0, 1, 1}, - {&__pyx_n_s_gevent__util, __pyx_k_gevent__util, sizeof(__pyx_k_gevent__util), 0, 0, 1, 1}, - {&__pyx_n_s_gevent_exceptions, __pyx_k_gevent_exceptions, sizeof(__pyx_k_gevent_exceptions), 0, 0, 1, 1}, - {&__pyx_n_s_gevent_timeout, __pyx_k_gevent_timeout, sizeof(__pyx_k_gevent_timeout), 0, 0, 1, 1}, - {&__pyx_n_s_greenlet, __pyx_k_greenlet, sizeof(__pyx_k_greenlet), 0, 0, 1, 1}, - {&__pyx_n_s_greenlet_imported, __pyx_k_greenlet_imported, sizeof(__pyx_k_greenlet_imported), 0, 0, 1, 1}, - {&__pyx_n_s_greenlet_init, __pyx_k_greenlet_init, sizeof(__pyx_k_greenlet_init), 0, 0, 1, 1}, - {&__pyx_n_s_handle_error, __pyx_k_handle_error, sizeof(__pyx_k_handle_error), 0, 0, 1, 1}, - {&__pyx_n_s_hub, __pyx_k_hub, sizeof(__pyx_k_hub), 0, 0, 1, 1}, - {&__pyx_kp_s_if_we_didn_t_wait_we_should_alre, __pyx_k_if_we_didn_t_wait_we_should_alre, sizeof(__pyx_k_if_we_didn_t_wait_we_should_alre), 0, 0, 1, 0}, - {&__pyx_n_s_imap_task_index, __pyx_k_imap_task_index, sizeof(__pyx_k_imap_task_index), 0, 0, 1, 1}, - {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, - {&__pyx_n_s_import_c_accel, __pyx_k_import_c_accel, sizeof(__pyx_k_import_c_accel), 0, 0, 1, 1}, - {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1}, - {&__pyx_n_s_isSet, __pyx_k_isSet, sizeof(__pyx_k_isSet), 0, 0, 1, 1}, - {&__pyx_n_s_is_set, __pyx_k_is_set, sizeof(__pyx_k_is_set), 0, 0, 1, 1}, - {&__pyx_n_s_lambda, __pyx_k_lambda, sizeof(__pyx_k_lambda), 0, 0, 1, 1}, - {&__pyx_n_s_links, __pyx_k_links, sizeof(__pyx_k_links), 0, 0, 1, 1}, - {&__pyx_kp_s_links_s, __pyx_k_links_s, sizeof(__pyx_k_links_s), 0, 0, 1, 0}, - {&__pyx_n_s_load_traceback, __pyx_k_load_traceback, sizeof(__pyx_k_load_traceback), 0, 0, 1, 1}, - {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, - {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, - {&__pyx_n_s_notifier, __pyx_k_notifier, sizeof(__pyx_k_notifier), 0, 0, 1, 1}, - {&__pyx_n_s_notify_links, __pyx_k_notify_links, sizeof(__pyx_k_notify_links), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_capi, __pyx_k_pyx_capi, sizeof(__pyx_k_pyx_capi), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1}, - {&__pyx_n_s_raise_exception, __pyx_k_raise_exception, sizeof(__pyx_k_raise_exception), 0, 0, 1, 1}, - {&__pyx_n_s_rawlink, __pyx_k_rawlink, sizeof(__pyx_k_rawlink), 0, 0, 1, 1}, - {&__pyx_n_s_ready, __pyx_k_ready, sizeof(__pyx_k_ready), 0, 0, 1, 1}, - {&__pyx_n_s_reraise, __pyx_k_reraise, sizeof(__pyx_k_reraise), 0, 0, 1, 1}, - {&__pyx_n_s_reset_internal_locks, __pyx_k_reset_internal_locks, sizeof(__pyx_k_reset_internal_locks), 0, 0, 1, 1}, - {&__pyx_n_s_result, __pyx_k_result, sizeof(__pyx_k_result), 0, 0, 1, 1}, - {&__pyx_n_s_run_callback, __pyx_k_run_callback, sizeof(__pyx_k_run_callback), 0, 0, 1, 1}, - {&__pyx_kp_s_s, __pyx_k_s, sizeof(__pyx_k_s), 0, 0, 1, 0}, - {&__pyx_kp_s_s_s__links_s, __pyx_k_s_s__links_s, sizeof(__pyx_k_s_s__links_s), 0, 0, 1, 0}, - {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1}, - {&__pyx_n_s_set, __pyx_k_set, sizeof(__pyx_k_set), 0, 0, 1, 1}, - {&__pyx_n_s_set_exception, __pyx_k_set_exception, sizeof(__pyx_k_set_exception), 0, 0, 1, 1}, - {&__pyx_n_s_set_result, __pyx_k_set_result, sizeof(__pyx_k_set_result), 0, 0, 1, 1}, - {&__pyx_n_s_slots, __pyx_k_slots, sizeof(__pyx_k_slots), 0, 0, 1, 1}, - {&__pyx_n_s_source, __pyx_k_source, sizeof(__pyx_k_source), 0, 0, 1, 1}, - {&__pyx_kp_s_src_gevent_event_py, __pyx_k_src_gevent_event_py, sizeof(__pyx_k_src_gevent_event_py), 0, 0, 1, 0}, - {&__pyx_n_s_start_new_or_dummy, __pyx_k_start_new_or_dummy, sizeof(__pyx_k_start_new_or_dummy), 0, 0, 1, 1}, - {&__pyx_n_s_successful, __pyx_k_successful, sizeof(__pyx_k_successful), 0, 0, 1, 1}, - {&__pyx_n_s_switch, __pyx_k_switch, sizeof(__pyx_k_switch), 0, 0, 1, 1}, - {&__pyx_n_s_sys, __pyx_k_sys, sizeof(__pyx_k_sys), 0, 0, 1, 1}, - {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, - {&__pyx_n_s_timeout, __pyx_k_timeout, sizeof(__pyx_k_timeout), 0, 0, 1, 1}, - {&__pyx_n_s_unlink, __pyx_k_unlink, sizeof(__pyx_k_unlink), 0, 0, 1, 1}, - {&__pyx_kp_s_unset, __pyx_k_unset, sizeof(__pyx_k_unset), 0, 0, 1, 0}, - {&__pyx_n_s_value, __pyx_k_value, sizeof(__pyx_k_value), 0, 0, 1, 1}, - {&__pyx_n_s_value_2, __pyx_k_value_2, sizeof(__pyx_k_value_2), 0, 0, 1, 1}, - {&__pyx_kp_s_value_r, __pyx_k_value_r, sizeof(__pyx_k_value_r), 0, 0, 1, 0}, - {&__pyx_n_s_wait, __pyx_k_wait, sizeof(__pyx_k_wait), 0, 0, 1, 1}, - {&__pyx_n_s_weakref, __pyx_k_weakref, sizeof(__pyx_k_weakref), 0, 0, 1, 1}, - {0, 0, 0, 0, 0, 0, 0} -}; -static int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin___import__ = __Pyx_GetBuiltinName(__pyx_n_s_import); if (!__pyx_builtin___import__) __PYX_ERR(0, 23, __pyx_L1_error) - __pyx_builtin_NotImplementedError = __Pyx_GetBuiltinName(__pyx_n_s_NotImplementedError); if (!__pyx_builtin_NotImplementedError) __PYX_ERR(0, 50, __pyx_L1_error) - __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 66, __pyx_L1_error) - __pyx_builtin_KeyError = __Pyx_GetBuiltinName(__pyx_n_s_KeyError); if (!__pyx_builtin_KeyError) __PYX_ERR(0, 74, __pyx_L1_error) - return 0; - __pyx_L1_error:; - return -1; -} - -static int __Pyx_InitCachedConstants(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - - /* "src/gevent/event.py":117 - * self.rawlink(switch) - * try: - * with Timeout._start_new_or_dummy(timeout) as timer: # <<<<<<<<<<<<<< - * try: - * result = self.hub.switch() - */ - __pyx_tuple__2 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 117, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__2); - __Pyx_GIVEREF(__pyx_tuple__2); - __pyx_tuple__3 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 117, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__3); - __Pyx_GIVEREF(__pyx_tuple__3); - - /* "src/gevent/event.py":374 - * self._exc_info = (exc_info[0], exc_info[1], dump_traceback(exc_info[2])) - * else: - * self._exc_info = (type(exception), exception, dump_traceback(None)) # <<<<<<<<<<<<<< - * - * self._check_and_notify() - */ - __pyx_tuple__4 = PyTuple_Pack(1, Py_None); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 374, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__4); - __Pyx_GIVEREF(__pyx_tuple__4); - - /* "src/gevent/event.py":23 - * ] - * - * locals()['getcurrent'] = __import__('greenlet').getcurrent # <<<<<<<<<<<<<< - * locals()['greenlet_init'] = lambda: None - * - */ - __pyx_tuple__5 = PyTuple_Pack(1, __pyx_n_s_greenlet); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 23, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__5); - __Pyx_GIVEREF(__pyx_tuple__5); - - /* "src/gevent/event.py":31 - * # common to both repeatable events and one-time events (AsyncResult). - * - * __slots__ = ('_links', 'hub', '_notifier') # <<<<<<<<<<<<<< - * - * def __init__(self): - */ - __pyx_tuple__6 = PyTuple_Pack(3, __pyx_n_s_links, __pyx_n_s_hub, __pyx_n_s_notifier); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 31, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__6); - __Pyx_GIVEREF(__pyx_tuple__6); - - /* "src/gevent/event.py":48 - * self._notifier = None - * - * def ready(self): # <<<<<<<<<<<<<< - * # Instances must define this - * raise NotImplementedError() - */ - __pyx_tuple__7 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 48, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__7); - __Pyx_GIVEREF(__pyx_tuple__7); - __pyx_codeobj__8 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__7, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_event_py, __pyx_n_s_ready, 48, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__8)) __PYX_ERR(0, 48, __pyx_L1_error) - - /* "src/gevent/event.py":58 - * self._notifier = self.hub.loop.run_callback(self._notify_links) - * - * def rawlink(self, callback): # <<<<<<<<<<<<<< - * """ - * Register a callback to call when this object is ready. - */ - __pyx_tuple__9 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_callback); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 58, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__9); - __Pyx_GIVEREF(__pyx_tuple__9); - __pyx_codeobj__10 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__9, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_event_py, __pyx_n_s_rawlink, 58, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__10)) __PYX_ERR(0, 58, __pyx_L1_error) - - /* "src/gevent/event.py":70 - * self._check_and_notify() - * - * def unlink(self, callback): # <<<<<<<<<<<<<< - * """Remove the callback set by :meth:`rawlink`""" - * try: - */ - __pyx_tuple__11 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_callback); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 70, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__11); - __Pyx_GIVEREF(__pyx_tuple__11); - __pyx_codeobj__12 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__11, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_event_py, __pyx_n_s_unlink, 70, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__12)) __PYX_ERR(0, 70, __pyx_L1_error) - - /* "src/gevent/event.py":77 - * pass - * - * def _notify_links(self): # <<<<<<<<<<<<<< - * # Actually call the notification callbacks. Those callbacks in todo that are - * # still in _links are called. This method is careful to avoid iterating - */ - __pyx_tuple__13 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 77, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__13); - __Pyx_GIVEREF(__pyx_tuple__13); - __pyx_codeobj__14 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_event_py, __pyx_n_s_notify_links, 77, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__14)) __PYX_ERR(0, 77, __pyx_L1_error) - - /* "src/gevent/event.py":160 - * """ - * - * __slots__ = ('_flag', '__weakref__') # <<<<<<<<<<<<<< - * - * def __init__(self): - */ - __pyx_tuple__15 = PyTuple_Pack(2, __pyx_n_s_flag, __pyx_n_s_weakref); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 160, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__15); - __Pyx_GIVEREF(__pyx_tuple__15); - - /* "src/gevent/event.py":169 - * return '<%s %s _links[%s]>' % (self.__class__.__name__, (self._flag and 'set') or 'clear', len(self._links)) - * - * def is_set(self): # <<<<<<<<<<<<<< - * """Return true if and only if the internal flag is true.""" - * return self._flag - */ - __pyx_tuple__16 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 169, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__16); - __Pyx_GIVEREF(__pyx_tuple__16); - __pyx_codeobj__17 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__16, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_event_py, __pyx_n_s_is_set, 169, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__17)) __PYX_ERR(0, 169, __pyx_L1_error) - - /* "src/gevent/event.py":173 - * return self._flag - * - * def isSet(self): # <<<<<<<<<<<<<< - * # makes it a better drop-in replacement for threading.Event - * return self._flag - */ - __pyx_tuple__18 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 173, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__18); - __Pyx_GIVEREF(__pyx_tuple__18); - __pyx_codeobj__19 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_event_py, __pyx_n_s_isSet, 173, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__19)) __PYX_ERR(0, 173, __pyx_L1_error) - - /* "src/gevent/event.py":177 - * return self._flag - * - * def ready(self): # <<<<<<<<<<<<<< - * # makes it compatible with AsyncResult and Greenlet (for - * # example in wait()) - */ - __pyx_tuple__20 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 177, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__20); - __Pyx_GIVEREF(__pyx_tuple__20); - __pyx_codeobj__21 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__20, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_event_py, __pyx_n_s_ready, 177, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__21)) __PYX_ERR(0, 177, __pyx_L1_error) - - /* "src/gevent/event.py":182 - * return self._flag - * - * def set(self): # <<<<<<<<<<<<<< - * """ - * Set the internal flag to true. - */ - __pyx_tuple__22 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 182, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__22); - __Pyx_GIVEREF(__pyx_tuple__22); - __pyx_codeobj__23 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__22, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_event_py, __pyx_n_s_set, 182, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__23)) __PYX_ERR(0, 182, __pyx_L1_error) - - /* "src/gevent/event.py":194 - * self._check_and_notify() - * - * def clear(self): # <<<<<<<<<<<<<< - * """ - * Reset the internal flag to false. - */ - __pyx_tuple__24 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 194, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__24); - __Pyx_GIVEREF(__pyx_tuple__24); - __pyx_codeobj__25 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__24, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_event_py, __pyx_n_s_clear, 194, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__25)) __PYX_ERR(0, 194, __pyx_L1_error) - - /* "src/gevent/event.py":215 - * return wait_success - * - * def wait(self, timeout=None): # <<<<<<<<<<<<<< - * """ - * Block until the internal flag is true. - */ - __pyx_tuple__26 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_timeout); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 215, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__26); - __Pyx_GIVEREF(__pyx_tuple__26); - __pyx_codeobj__27 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_event_py, __pyx_n_s_wait, 215, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__27)) __PYX_ERR(0, 215, __pyx_L1_error) - - /* "src/gevent/event.py":242 - * return self._wait(timeout) - * - * def _reset_internal_locks(self): # pragma: no cover # <<<<<<<<<<<<<< - * # for compatibility with threading.Event - * # Exception AttributeError: AttributeError("'Event' object has no attribute '_reset_internal_locks'",) - */ - __pyx_tuple__28 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 242, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__28); - __Pyx_GIVEREF(__pyx_tuple__28); - __pyx_codeobj__29 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_event_py, __pyx_n_s_reset_internal_locks, 242, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__29)) __PYX_ERR(0, 242, __pyx_L1_error) - - /* "src/gevent/event.py":299 - * """ - * - * __slots__ = ('_value', '_exc_info', '_imap_task_index') # <<<<<<<<<<<<<< - * - * def __init__(self): - */ - __pyx_tuple__30 = PyTuple_Pack(3, __pyx_n_s_value_2, __pyx_n_s_exc_info_2, __pyx_n_s_imap_task_index); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 299, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__30); - __Pyx_GIVEREF(__pyx_tuple__30); - - /* "src/gevent/event.py":337 - * return result + ' _links[%s]>' % len(self._links) - * - * def ready(self): # <<<<<<<<<<<<<< - * """Return true if and only if it holds a value or an exception""" - * return self._exc_info or self._value is not _NONE - */ - __pyx_tuple__31 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 337, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__31); - __Pyx_GIVEREF(__pyx_tuple__31); - __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__31, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_event_py, __pyx_n_s_ready, 337, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) __PYX_ERR(0, 337, __pyx_L1_error) - - /* "src/gevent/event.py":341 - * return self._exc_info or self._value is not _NONE - * - * def successful(self): # <<<<<<<<<<<<<< - * """Return true if and only if it is ready and holds a value""" - * return self._value is not _NONE - */ - __pyx_tuple__33 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 341, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__33); - __Pyx_GIVEREF(__pyx_tuple__33); - __pyx_codeobj__34 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_event_py, __pyx_n_s_successful, 341, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__34)) __PYX_ERR(0, 341, __pyx_L1_error) - - /* "src/gevent/event.py":352 - * return self._exc_info[1] - * - * def set(self, value=None): # <<<<<<<<<<<<<< - * """Store the value and wake up any waiters. - * - */ - __pyx_tuple__35 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_value); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(0, 352, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__35); - __Pyx_GIVEREF(__pyx_tuple__35); - __pyx_codeobj__36 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__35, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_event_py, __pyx_n_s_set, 352, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__36)) __PYX_ERR(0, 352, __pyx_L1_error) - - /* "src/gevent/event.py":361 - * self._check_and_notify() - * - * def set_exception(self, exception, exc_info=None): # <<<<<<<<<<<<<< - * """Store the exception and wake up any waiters. - * - */ - __pyx_tuple__37 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_exception_2, __pyx_n_s_exc_info); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(0, 361, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__37); - __Pyx_GIVEREF(__pyx_tuple__37); - __pyx_codeobj__38 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__37, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_event_py, __pyx_n_s_set_exception, 361, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__38)) __PYX_ERR(0, 361, __pyx_L1_error) - - /* "src/gevent/event.py":378 - * self._check_and_notify() - * - * def _raise_exception(self): # <<<<<<<<<<<<<< - * reraise(*self.exc_info) - * - */ - __pyx_tuple__39 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(0, 378, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__39); - __Pyx_GIVEREF(__pyx_tuple__39); - __pyx_codeobj__40 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__39, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_event_py, __pyx_n_s_raise_exception, 378, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__40)) __PYX_ERR(0, 378, __pyx_L1_error) - - /* "src/gevent/event.py":381 - * reraise(*self.exc_info) - * - * def get(self, block=True, timeout=None): # <<<<<<<<<<<<<< - * """Return the stored value or raise the exception. - * - */ - __pyx_tuple__41 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_block, __pyx_n_s_timeout); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(0, 381, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__41); - __Pyx_GIVEREF(__pyx_tuple__41); - __pyx_codeobj__42 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__41, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_event_py, __pyx_n_s_get, 381, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__42)) __PYX_ERR(0, 381, __pyx_L1_error) - - /* "src/gevent/event.py":411 - * return self.get(block=False) - * - * def get_nowait(self): # <<<<<<<<<<<<<< - * """ - * Return the value or raise the exception without blocking. - */ - __pyx_tuple__43 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(0, 411, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__43); - __Pyx_GIVEREF(__pyx_tuple__43); - __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__43, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_event_py, __pyx_n_s_get_nowait, 411, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) __PYX_ERR(0, 411, __pyx_L1_error) - - /* "src/gevent/event.py":426 - * return self.value - * - * def wait(self, timeout=None): # <<<<<<<<<<<<<< - * """Block until the instance is ready. - * - */ - __pyx_tuple__45 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_timeout); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 426, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__45); - __Pyx_GIVEREF(__pyx_tuple__45); - __pyx_codeobj__46 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__45, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_event_py, __pyx_n_s_wait, 426, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__46)) __PYX_ERR(0, 426, __pyx_L1_error) - - /* "src/gevent/event.py":456 - * # Methods to make us more like concurrent.futures.Future - * - * def result(self, timeout=None): # <<<<<<<<<<<<<< - * return self.get(timeout=timeout) - * - */ - __pyx_tuple__47 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_timeout); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(0, 456, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__47); - __Pyx_GIVEREF(__pyx_tuple__47); - __pyx_codeobj__48 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__47, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_event_py, __pyx_n_s_result, 456, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__48)) __PYX_ERR(0, 456, __pyx_L1_error) - - /* "src/gevent/event.py":461 - * set_result = set - * - * def done(self): # <<<<<<<<<<<<<< - * return self.ready() - * - */ - __pyx_tuple__49 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(0, 461, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__49); - __Pyx_GIVEREF(__pyx_tuple__49); - __pyx_codeobj__50 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__49, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_event_py, __pyx_n_s_done, 461, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__50)) __PYX_ERR(0, 461, __pyx_L1_error) - - /* "src/gevent/event.py":466 - * # we don't support cancelling - * - * def cancel(self): # <<<<<<<<<<<<<< - * return False - * - */ - __pyx_tuple__51 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(0, 466, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__51); - __Pyx_GIVEREF(__pyx_tuple__51); - __pyx_codeobj__52 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__51, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_event_py, __pyx_n_s_cancel, 466, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__52)) __PYX_ERR(0, 466, __pyx_L1_error) - - /* "src/gevent/event.py":469 - * return False - * - * def cancelled(self): # <<<<<<<<<<<<<< - * return False - * - */ - __pyx_tuple__53 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(0, 469, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__53); - __Pyx_GIVEREF(__pyx_tuple__53); - __pyx_codeobj__54 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__53, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_event_py, __pyx_n_s_cancelled, 469, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__54)) __PYX_ERR(0, 469, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_InitGlobals(void) { - if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - return 0; - __pyx_L1_error:; - return -1; -} - -static int __Pyx_modinit_global_init_code(void); /*proto*/ -static int __Pyx_modinit_variable_export_code(void); /*proto*/ -static int __Pyx_modinit_function_export_code(void); /*proto*/ -static int __Pyx_modinit_type_init_code(void); /*proto*/ -static int __Pyx_modinit_type_import_code(void); /*proto*/ -static int __Pyx_modinit_variable_import_code(void); /*proto*/ -static int __Pyx_modinit_function_import_code(void); /*proto*/ - -static int __Pyx_modinit_global_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); - /*--- Global init code ---*/ - __pyx_v_6gevent_6_event__None = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_6_event_reraise = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_6_event_dump_traceback = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_6_event_load_traceback = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_6_event_InvalidSwitchError = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_6_event_Timeout = Py_None; Py_INCREF(Py_None); - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_variable_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); - /*--- Variable export code ---*/ - if (__Pyx_ExportVoidPtr(__pyx_n_s_None, (void *)&__pyx_v_6gevent_6_event__None, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_reraise, (void *)&__pyx_v_6gevent_6_event_reraise, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_dump_traceback, (void *)&__pyx_v_6gevent_6_event_dump_traceback, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_load_traceback, (void *)&__pyx_v_6gevent_6_event_load_traceback, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_InvalidSwitchError, (void *)&__pyx_v_6gevent_6_event_InvalidSwitchError, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_Timeout, (void *)&__pyx_v_6gevent_6_event_Timeout, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_greenlet_imported, (void *)&__pyx_v_6gevent_6_event__greenlet_imported, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_function_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); - /*--- Function export code ---*/ - if (__Pyx_ExportFunction("_init", (void (*)(void))__pyx_f_6gevent_6_event__init, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_type_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); - /*--- Type init code ---*/ - __pyx_ptype_6gevent_6_event_greenlet = __Pyx_ImportType("greenlet", "greenlet", sizeof(PyGreenlet), 0); if (unlikely(!__pyx_ptype_6gevent_6_event_greenlet)) __PYX_ERR(1, 18, __pyx_L1_error) - __pyx_vtabptr_6gevent_6_event__AbstractLinkable = &__pyx_vtable_6gevent_6_event__AbstractLinkable; - __pyx_vtable_6gevent_6_event__AbstractLinkable.rawlink = (PyObject *(*)(struct __pyx_obj_6gevent_6_event__AbstractLinkable *, PyObject *, int __pyx_skip_dispatch))__pyx_f_6gevent_6_event_17_AbstractLinkable_rawlink; - __pyx_vtable_6gevent_6_event__AbstractLinkable.ready = (int (*)(struct __pyx_obj_6gevent_6_event__AbstractLinkable *, int __pyx_skip_dispatch))__pyx_f_6gevent_6_event_17_AbstractLinkable_ready; - __pyx_vtable_6gevent_6_event__AbstractLinkable.unlink = (PyObject *(*)(struct __pyx_obj_6gevent_6_event__AbstractLinkable *, PyObject *, int __pyx_skip_dispatch))__pyx_f_6gevent_6_event_17_AbstractLinkable_unlink; - __pyx_vtable_6gevent_6_event__AbstractLinkable._check_and_notify = (PyObject *(*)(struct __pyx_obj_6gevent_6_event__AbstractLinkable *))__pyx_f_6gevent_6_event_17_AbstractLinkable__check_and_notify; - __pyx_vtable_6gevent_6_event__AbstractLinkable._notify_links = (PyObject *(*)(struct __pyx_obj_6gevent_6_event__AbstractLinkable *, int __pyx_skip_dispatch))__pyx_f_6gevent_6_event_17_AbstractLinkable__notify_links; - __pyx_vtable_6gevent_6_event__AbstractLinkable._wait_core = (PyObject *(*)(struct __pyx_obj_6gevent_6_event__AbstractLinkable *, PyObject *, struct __pyx_opt_args_6gevent_6_event_17_AbstractLinkable__wait_core *__pyx_optional_args))__pyx_f_6gevent_6_event_17_AbstractLinkable__wait_core; - __pyx_vtable_6gevent_6_event__AbstractLinkable._wait_return_value = (PyObject *(*)(struct __pyx_obj_6gevent_6_event__AbstractLinkable *, PyObject *, PyObject *))__pyx_f_6gevent_6_event_17_AbstractLinkable__wait_return_value; - __pyx_vtable_6gevent_6_event__AbstractLinkable._wait = (PyObject *(*)(struct __pyx_obj_6gevent_6_event__AbstractLinkable *, struct __pyx_opt_args_6gevent_6_event_17_AbstractLinkable__wait *__pyx_optional_args))__pyx_f_6gevent_6_event_17_AbstractLinkable__wait; - if (PyType_Ready(&__pyx_type_6gevent_6_event__AbstractLinkable) < 0) __PYX_ERR(0, 27, __pyx_L1_error) - __pyx_type_6gevent_6_event__AbstractLinkable.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_6_event__AbstractLinkable.tp_dictoffset && __pyx_type_6gevent_6_event__AbstractLinkable.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_6_event__AbstractLinkable.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - if (__Pyx_SetVtable(__pyx_type_6gevent_6_event__AbstractLinkable.tp_dict, __pyx_vtabptr_6gevent_6_event__AbstractLinkable) < 0) __PYX_ERR(0, 27, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "_AbstractLinkable", (PyObject *)&__pyx_type_6gevent_6_event__AbstractLinkable) < 0) __PYX_ERR(0, 27, __pyx_L1_error) - if (__pyx_type_6gevent_6_event__AbstractLinkable.tp_weaklistoffset == 0) __pyx_type_6gevent_6_event__AbstractLinkable.tp_weaklistoffset = offsetof(struct __pyx_obj_6gevent_6_event__AbstractLinkable, __weakref__); - __pyx_ptype_6gevent_6_event__AbstractLinkable = &__pyx_type_6gevent_6_event__AbstractLinkable; - __pyx_vtabptr_6gevent_6_event_Event = &__pyx_vtable_6gevent_6_event_Event; - __pyx_vtable_6gevent_6_event_Event.__pyx_base = *__pyx_vtabptr_6gevent_6_event__AbstractLinkable; - __pyx_vtable_6gevent_6_event_Event.__pyx_base.ready = (int (*)(struct __pyx_obj_6gevent_6_event__AbstractLinkable *, int __pyx_skip_dispatch))__pyx_f_6gevent_6_event_5Event_ready; - __pyx_vtable_6gevent_6_event_Event.__pyx_base._wait_return_value = (PyObject *(*)(struct __pyx_obj_6gevent_6_event__AbstractLinkable *, PyObject *, PyObject *))__pyx_f_6gevent_6_event_5Event__wait_return_value; - __pyx_type_6gevent_6_event_Event.tp_base = __pyx_ptype_6gevent_6_event__AbstractLinkable; - if (PyType_Ready(&__pyx_type_6gevent_6_event_Event) < 0) __PYX_ERR(0, 144, __pyx_L1_error) - __pyx_type_6gevent_6_event_Event.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_6_event_Event.tp_dictoffset && __pyx_type_6gevent_6_event_Event.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_6_event_Event.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - if (__Pyx_SetVtable(__pyx_type_6gevent_6_event_Event.tp_dict, __pyx_vtabptr_6gevent_6_event_Event) < 0) __PYX_ERR(0, 144, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "Event", (PyObject *)&__pyx_type_6gevent_6_event_Event) < 0) __PYX_ERR(0, 144, __pyx_L1_error) - if (__pyx_type_6gevent_6_event_Event.tp_weaklistoffset == 0) __pyx_type_6gevent_6_event_Event.tp_weaklistoffset = offsetof(struct __pyx_obj_6gevent_6_event_Event, __pyx_base.__weakref__); - __pyx_ptype_6gevent_6_event_Event = &__pyx_type_6gevent_6_event_Event; - __pyx_vtabptr_6gevent_6_event_AsyncResult = &__pyx_vtable_6gevent_6_event_AsyncResult; - __pyx_vtable_6gevent_6_event_AsyncResult.__pyx_base = *__pyx_vtabptr_6gevent_6_event__AbstractLinkable; - __pyx_vtable_6gevent_6_event_AsyncResult.__pyx_base.ready = (int (*)(struct __pyx_obj_6gevent_6_event__AbstractLinkable *, int __pyx_skip_dispatch))__pyx_f_6gevent_6_event_11AsyncResult_ready; - __pyx_vtable_6gevent_6_event_AsyncResult.__pyx_base._wait_return_value = (PyObject *(*)(struct __pyx_obj_6gevent_6_event__AbstractLinkable *, PyObject *, PyObject *))__pyx_f_6gevent_6_event_11AsyncResult__wait_return_value; - __pyx_vtable_6gevent_6_event_AsyncResult.get = (PyObject *(*)(struct __pyx_obj_6gevent_6_event_AsyncResult *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_6_event_11AsyncResult_get *__pyx_optional_args))__pyx_f_6gevent_6_event_11AsyncResult_get; - __pyx_vtable_6gevent_6_event_AsyncResult.successful = (int (*)(struct __pyx_obj_6gevent_6_event_AsyncResult *, int __pyx_skip_dispatch))__pyx_f_6gevent_6_event_11AsyncResult_successful; - __pyx_vtable_6gevent_6_event_AsyncResult.wait = (PyObject *(*)(struct __pyx_obj_6gevent_6_event_AsyncResult *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_6_event_11AsyncResult_wait *__pyx_optional_args))__pyx_f_6gevent_6_event_11AsyncResult_wait; - __pyx_vtable_6gevent_6_event_AsyncResult.done = (int (*)(struct __pyx_obj_6gevent_6_event_AsyncResult *, int __pyx_skip_dispatch))__pyx_f_6gevent_6_event_11AsyncResult_done; - __pyx_vtable_6gevent_6_event_AsyncResult.cancel = (int (*)(struct __pyx_obj_6gevent_6_event_AsyncResult *, int __pyx_skip_dispatch))__pyx_f_6gevent_6_event_11AsyncResult_cancel; - __pyx_vtable_6gevent_6_event_AsyncResult.cancelled = (int (*)(struct __pyx_obj_6gevent_6_event_AsyncResult *, int __pyx_skip_dispatch))__pyx_f_6gevent_6_event_11AsyncResult_cancelled; - __pyx_type_6gevent_6_event_AsyncResult.tp_base = __pyx_ptype_6gevent_6_event__AbstractLinkable; - if (PyType_Ready(&__pyx_type_6gevent_6_event_AsyncResult) < 0) __PYX_ERR(0, 249, __pyx_L1_error) - __pyx_type_6gevent_6_event_AsyncResult.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_6_event_AsyncResult.tp_dictoffset && __pyx_type_6gevent_6_event_AsyncResult.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_6_event_AsyncResult.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - if (__Pyx_SetVtable(__pyx_type_6gevent_6_event_AsyncResult.tp_dict, __pyx_vtabptr_6gevent_6_event_AsyncResult) < 0) __PYX_ERR(0, 249, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "AsyncResult", (PyObject *)&__pyx_type_6gevent_6_event_AsyncResult) < 0) __PYX_ERR(0, 249, __pyx_L1_error) - if (__pyx_type_6gevent_6_event_AsyncResult.tp_weaklistoffset == 0) __pyx_type_6gevent_6_event_AsyncResult.tp_weaklistoffset = offsetof(struct __pyx_obj_6gevent_6_event_AsyncResult, __pyx_base.__weakref__); - __pyx_ptype_6gevent_6_event_AsyncResult = &__pyx_type_6gevent_6_event_AsyncResult; - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_type_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); - /*--- Type import code ---*/ - __pyx_ptype_6gevent_21__greenlet_primitives_greenlet = __Pyx_ImportType("greenlet", "greenlet", sizeof(PyGreenlet), 0); if (unlikely(!__pyx_ptype_6gevent_21__greenlet_primitives_greenlet)) __PYX_ERR(2, 12, __pyx_L1_error) - __pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet = __Pyx_ImportType("gevent.__greenlet_primitives", "TrackedRawGreenlet", sizeof(struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet), 1); if (unlikely(!__pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet)) __PYX_ERR(2, 37, __pyx_L1_error) - __pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop = __Pyx_ImportType("gevent.__greenlet_primitives", "SwitchOutGreenletWithLoop", sizeof(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop), 1); if (unlikely(!__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop)) __PYX_ERR(2, 40, __pyx_L1_error) - __pyx_vtabptr_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop = (struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop*)__Pyx_GetVtable(__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop)) __PYX_ERR(2, 40, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_variable_import_code(void) { - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); - /*--- Variable import code ---*/ - __pyx_t_1 = __Pyx_ImportModule("gevent.__greenlet_primitives"); if (!__pyx_t_1) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_1, "wref", (void **)&__pyx_vp_6gevent_21__greenlet_primitives_wref, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_1, "BlockingSwitchOutError", (void **)&__pyx_vp_6gevent_21__greenlet_primitives_BlockingSwitchOutError, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_1, "_greenlet_imported", (void **)&__pyx_vp_6gevent_21__greenlet_primitives__greenlet_imported, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_2 = __Pyx_ImportModule("gevent.__hub_local"); if (!__pyx_t_2) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_2, "_threadlocal", (void **)&__pyx_vp_6gevent_11__hub_local__threadlocal, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_function_import_code(void) { - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); - /*--- Function import code ---*/ - __pyx_t_1 = __Pyx_ImportModule("gevent.__hub_local"); if (!__pyx_t_1) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportFunction(__pyx_t_1, "get_hub_noargs", (void (**)(void))&__pyx_f_6gevent_11__hub_local_get_hub_noargs, "struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *(int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_RefNannyFinishContext(); - return -1; -} - - -#if PY_MAJOR_VERSION < 3 -#ifdef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC void -#else -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -#endif -#else -#ifdef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC PyObject * -#else -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -#endif -#endif -#ifndef CYTHON_SMALL_CODE -#if defined(__clang__) - #define CYTHON_SMALL_CODE -#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4))) - #define CYTHON_SMALL_CODE __attribute__((cold)) -#else - #define CYTHON_SMALL_CODE -#endif -#endif - - -#if PY_MAJOR_VERSION < 3 -__Pyx_PyMODINIT_FUNC init_event(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC init_event(void) -#else -__Pyx_PyMODINIT_FUNC PyInit__event(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC PyInit__event(void) -#if CYTHON_PEP489_MULTI_PHASE_INIT -{ - return PyModuleDef_Init(&__pyx_moduledef); -} -static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) { - PyObject *value = PyObject_GetAttrString(spec, from_name); - int result = 0; - if (likely(value)) { - result = PyDict_SetItemString(moddict, to_name, value); - Py_DECREF(value); - } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Clear(); - } else { - result = -1; - } - return result; -} -static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) { - PyObject *module = NULL, *moddict, *modname; - if (__pyx_m) - return __Pyx_NewRef(__pyx_m); - modname = PyObject_GetAttrString(spec, "name"); - if (unlikely(!modname)) goto bad; - module = PyModule_NewObject(modname); - Py_DECREF(modname); - if (unlikely(!module)) goto bad; - moddict = PyModule_GetDict(module); - if (unlikely(!moddict)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__") < 0)) goto bad; - return module; -bad: - Py_XDECREF(module); - return NULL; -} - - -static int __pyx_pymod_exec__event(PyObject *__pyx_pyinit_module) -#endif -#endif -{ - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannyDeclarations - #if CYTHON_PEP489_MULTI_PHASE_INIT - if (__pyx_m && __pyx_m == __pyx_pyinit_module) return 0; - #elif PY_MAJOR_VERSION >= 3 - if (__pyx_m) return __Pyx_NewRef(__pyx_m); - #endif - #if CYTHON_REFNANNY -__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); -if (!__Pyx_RefNanny) { - PyErr_Clear(); - __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); - if (!__Pyx_RefNanny) - Py_FatalError("failed to import 'refnanny' module"); -} -#endif - __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit__event(void)", 0); - if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) - #ifdef __Pyx_CyFunction_USED - if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_FusedFunction_USED - if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Coroutine_USED - if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Generator_USED - if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_AsyncGen_USED - if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_StopAsyncIteration_USED - if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - /*--- Library function declarations ---*/ - /*--- Threads initialization code ---*/ - #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS - #ifdef WITH_THREAD /* Python build with threading support? */ - PyEval_InitThreads(); - #endif - #endif - /*--- Module creation code ---*/ - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_m = __pyx_pyinit_module; - Py_INCREF(__pyx_m); - #else - #if PY_MAJOR_VERSION < 3 - __pyx_m = Py_InitModule4("_event", __pyx_methods, __pyx_k_Basic_synchronization_primitives, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); - #else - __pyx_m = PyModule_Create(&__pyx_moduledef); - #endif - if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) - Py_INCREF(__pyx_d); - __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) - #if CYTHON_COMPILING_IN_PYPY - Py_INCREF(__pyx_b); - #endif - if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - /*--- Initialize various global constants etc. ---*/ - if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) - if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - if (__pyx_module_is_main_gevent___event) { - if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - } - #if PY_MAJOR_VERSION >= 3 - { - PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) - if (!PyDict_GetItemString(modules, "gevent._event")) { - if (unlikely(PyDict_SetItemString(modules, "gevent._event", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) - } - } - #endif - /*--- Builtin init code ---*/ - if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Constants init code ---*/ - if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Global type/function init code ---*/ - (void)__Pyx_modinit_global_init_code(); - if (unlikely(__Pyx_modinit_variable_export_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_function_export_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_type_init_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_type_import_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_variable_import_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_function_import_code() != 0)) goto __pyx_L1_error; - /*--- Execution code ---*/ - #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) - if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - - /* "src/gevent/event.py":6 - * """Basic synchronization primitives: Event and AsyncResult""" - * from __future__ import print_function - * import sys # <<<<<<<<<<<<<< - * - * from gevent._util import _NONE - */ - __pyx_t_1 = __Pyx_Import(__pyx_n_s_sys, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_1) < 0) __PYX_ERR(0, 6, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/event.py":8 - * import sys - * - * from gevent._util import _NONE # <<<<<<<<<<<<<< - * from gevent._compat import reraise - * from gevent._tblib import dump_traceback, load_traceback - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_NONE); - __Pyx_GIVEREF(__pyx_n_s_NONE); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_NONE); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_gevent__util, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_NONE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_NONE, __pyx_t_1) < 0) __PYX_ERR(0, 8, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/event.py":9 - * - * from gevent._util import _NONE - * from gevent._compat import reraise # <<<<<<<<<<<<<< - * from gevent._tblib import dump_traceback, load_traceback - * - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_reraise); - __Pyx_GIVEREF(__pyx_n_s_reraise); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_reraise); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_gevent__compat, __pyx_t_2, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_reraise); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_v_6gevent_6_event_reraise); - __Pyx_DECREF_SET(__pyx_v_6gevent_6_event_reraise, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/event.py":10 - * from gevent._util import _NONE - * from gevent._compat import reraise - * from gevent._tblib import dump_traceback, load_traceback # <<<<<<<<<<<<<< - * - * from gevent._hub_local import get_hub_noargs as get_hub - */ - __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_dump_traceback); - __Pyx_GIVEREF(__pyx_n_s_dump_traceback); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_dump_traceback); - __Pyx_INCREF(__pyx_n_s_load_traceback); - __Pyx_GIVEREF(__pyx_n_s_load_traceback); - PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_load_traceback); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_gevent__tblib, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_dump_traceback); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_v_6gevent_6_event_dump_traceback); - __Pyx_DECREF_SET(__pyx_v_6gevent_6_event_dump_traceback, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_load_traceback); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_v_6gevent_6_event_load_traceback); - __Pyx_DECREF_SET(__pyx_v_6gevent_6_event_load_traceback, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/event.py":12 - * from gevent._tblib import dump_traceback, load_traceback - * - * from gevent._hub_local import get_hub_noargs as get_hub # <<<<<<<<<<<<<< - * - * from gevent.exceptions import InvalidSwitchError - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_get_hub_noargs); - __Pyx_GIVEREF(__pyx_n_s_get_hub_noargs); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_get_hub_noargs); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_gevent__hub_local, __pyx_t_2, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_get_hub_noargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_hub_noargs, __pyx_t_2) < 0) __PYX_ERR(0, 12, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/event.py":14 - * from gevent._hub_local import get_hub_noargs as get_hub - * - * from gevent.exceptions import InvalidSwitchError # <<<<<<<<<<<<<< - * from gevent.timeout import Timeout - * - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_InvalidSwitchError); - __Pyx_GIVEREF(__pyx_n_s_InvalidSwitchError); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_InvalidSwitchError); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_gevent_exceptions, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_InvalidSwitchError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_v_6gevent_6_event_InvalidSwitchError); - __Pyx_DECREF_SET(__pyx_v_6gevent_6_event_InvalidSwitchError, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/event.py":15 - * - * from gevent.exceptions import InvalidSwitchError - * from gevent.timeout import Timeout # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_Timeout); - __Pyx_GIVEREF(__pyx_n_s_Timeout); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_Timeout); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_gevent_timeout, __pyx_t_2, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_Timeout); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_v_6gevent_6_event_Timeout); - __Pyx_DECREF_SET(__pyx_v_6gevent_6_event_Timeout, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/event.py":18 - * - * - * __all__ = [ # <<<<<<<<<<<<<< - * 'Event', - * 'AsyncResult', - */ - __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 18, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_Event); - __Pyx_GIVEREF(__pyx_n_s_Event); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_Event); - __Pyx_INCREF(__pyx_n_s_AsyncResult); - __Pyx_GIVEREF(__pyx_n_s_AsyncResult); - PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_AsyncResult); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_all, __pyx_t_1) < 0) __PYX_ERR(0, 18, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/event.py":23 - * ] - * - * locals()['getcurrent'] = __import__('greenlet').getcurrent # <<<<<<<<<<<<<< - * locals()['greenlet_init'] = lambda: None - * - */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin___import__, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_getcurrent); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 23, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_Globals(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (unlikely(PyDict_SetItem(__pyx_t_1, __pyx_n_s_getcurrent, __pyx_t_2) < 0)) __PYX_ERR(0, 23, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/event.py":24 - * - * locals()['getcurrent'] = __import__('greenlet').getcurrent - * locals()['greenlet_init'] = lambda: None # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_event_lambda, 0, __pyx_n_s_lambda, NULL, __pyx_n_s_gevent__event, __pyx_d, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 24, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_Globals(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 24, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (unlikely(PyDict_SetItem(__pyx_t_1, __pyx_n_s_greenlet_init, __pyx_t_2) < 0)) __PYX_ERR(0, 24, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/event.py":31 - * # common to both repeatable events and one-time events (AsyncResult). - * - * __slots__ = ('_links', 'hub', '_notifier') # <<<<<<<<<<<<<< - * - * def __init__(self): - */ - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_event__AbstractLinkable->tp_dict, __pyx_n_s_slots, __pyx_tuple__6) < 0) __PYX_ERR(0, 31, __pyx_L1_error) - PyType_Modified(__pyx_ptype_6gevent_6_event__AbstractLinkable); - - /* "src/gevent/event.py":48 - * self._notifier = None - * - * def ready(self): # <<<<<<<<<<<<<< - * # Instances must define this - * raise NotImplementedError() - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_event_17_AbstractLinkable_3ready, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AbstractLinkable_ready, NULL, __pyx_n_s_gevent__event, __pyx_d, ((PyObject *)__pyx_codeobj__8)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 48, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_event__AbstractLinkable->tp_dict, __pyx_n_s_ready, __pyx_t_2) < 0) __PYX_ERR(0, 48, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_event__AbstractLinkable); - - /* "src/gevent/event.py":58 - * self._notifier = self.hub.loop.run_callback(self._notify_links) - * - * def rawlink(self, callback): # <<<<<<<<<<<<<< - * """ - * Register a callback to call when this object is ready. - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_event_17_AbstractLinkable_5rawlink, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AbstractLinkable_rawlink, NULL, __pyx_n_s_gevent__event, __pyx_d, ((PyObject *)__pyx_codeobj__10)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 58, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_event__AbstractLinkable->tp_dict, __pyx_n_s_rawlink, __pyx_t_2) < 0) __PYX_ERR(0, 58, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_event__AbstractLinkable); - - /* "src/gevent/event.py":70 - * self._check_and_notify() - * - * def unlink(self, callback): # <<<<<<<<<<<<<< - * """Remove the callback set by :meth:`rawlink`""" - * try: - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_event_17_AbstractLinkable_7unlink, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AbstractLinkable_unlink, NULL, __pyx_n_s_gevent__event, __pyx_d, ((PyObject *)__pyx_codeobj__12)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 70, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_event__AbstractLinkable->tp_dict, __pyx_n_s_unlink, __pyx_t_2) < 0) __PYX_ERR(0, 70, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_event__AbstractLinkable); - - /* "src/gevent/event.py":77 - * pass - * - * def _notify_links(self): # <<<<<<<<<<<<<< - * # Actually call the notification callbacks. Those callbacks in todo that are - * # still in _links are called. This method is careful to avoid iterating - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_event_17_AbstractLinkable_9_notify_links, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AbstractLinkable__notify_links, NULL, __pyx_n_s_gevent__event, __pyx_d, ((PyObject *)__pyx_codeobj__14)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 77, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_event__AbstractLinkable->tp_dict, __pyx_n_s_notify_links, __pyx_t_2) < 0) __PYX_ERR(0, 77, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_event__AbstractLinkable); - - /* "src/gevent/event.py":109 - * self._notifier = None - * - * def _wait_core(self, timeout, catch=Timeout): # <<<<<<<<<<<<<< - * # The core of the wait implementation, handling - * # switching and linking. If *catch* is set to (), - */ - __Pyx_INCREF(__pyx_v_6gevent_6_event_Timeout); - __pyx_k_ = __pyx_v_6gevent_6_event_Timeout; - __Pyx_GIVEREF(__pyx_v_6gevent_6_event_Timeout); - - /* "src/gevent/event.py":160 - * """ - * - * __slots__ = ('_flag', '__weakref__') # <<<<<<<<<<<<<< - * - * def __init__(self): - */ - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_event_Event->tp_dict, __pyx_n_s_slots, __pyx_tuple__15) < 0) __PYX_ERR(0, 160, __pyx_L1_error) - PyType_Modified(__pyx_ptype_6gevent_6_event_Event); - - /* "src/gevent/event.py":169 - * return '<%s %s _links[%s]>' % (self.__class__.__name__, (self._flag and 'set') or 'clear', len(self._links)) - * - * def is_set(self): # <<<<<<<<<<<<<< - * """Return true if and only if the internal flag is true.""" - * return self._flag - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_event_5Event_5is_set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Event_is_set, NULL, __pyx_n_s_gevent__event, __pyx_d, ((PyObject *)__pyx_codeobj__17)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 169, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_event_Event->tp_dict, __pyx_n_s_is_set, __pyx_t_2) < 0) __PYX_ERR(0, 169, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_event_Event); - - /* "src/gevent/event.py":173 - * return self._flag - * - * def isSet(self): # <<<<<<<<<<<<<< - * # makes it a better drop-in replacement for threading.Event - * return self._flag - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_event_5Event_7isSet, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Event_isSet, NULL, __pyx_n_s_gevent__event, __pyx_d, ((PyObject *)__pyx_codeobj__19)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 173, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_event_Event->tp_dict, __pyx_n_s_isSet, __pyx_t_2) < 0) __PYX_ERR(0, 173, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_event_Event); - - /* "src/gevent/event.py":177 - * return self._flag - * - * def ready(self): # <<<<<<<<<<<<<< - * # makes it compatible with AsyncResult and Greenlet (for - * # example in wait()) - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_event_5Event_9ready, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Event_ready, NULL, __pyx_n_s_gevent__event, __pyx_d, ((PyObject *)__pyx_codeobj__21)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 177, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_event_Event->tp_dict, __pyx_n_s_ready, __pyx_t_2) < 0) __PYX_ERR(0, 177, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_event_Event); - - /* "src/gevent/event.py":182 - * return self._flag - * - * def set(self): # <<<<<<<<<<<<<< - * """ - * Set the internal flag to true. - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_event_5Event_11set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Event_set, NULL, __pyx_n_s_gevent__event, __pyx_d, ((PyObject *)__pyx_codeobj__23)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 182, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_event_Event->tp_dict, __pyx_n_s_set, __pyx_t_2) < 0) __PYX_ERR(0, 182, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_event_Event); - - /* "src/gevent/event.py":194 - * self._check_and_notify() - * - * def clear(self): # <<<<<<<<<<<<<< - * """ - * Reset the internal flag to false. - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_event_5Event_13clear, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Event_clear, NULL, __pyx_n_s_gevent__event, __pyx_d, ((PyObject *)__pyx_codeobj__25)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 194, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_event_Event->tp_dict, __pyx_n_s_clear, __pyx_t_2) < 0) __PYX_ERR(0, 194, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_event_Event); - - /* "src/gevent/event.py":215 - * return wait_success - * - * def wait(self, timeout=None): # <<<<<<<<<<<<<< - * """ - * Block until the internal flag is true. - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_event_5Event_15wait, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Event_wait, NULL, __pyx_n_s_gevent__event, __pyx_d, ((PyObject *)__pyx_codeobj__27)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 215, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_event_Event->tp_dict, __pyx_n_s_wait, __pyx_t_2) < 0) __PYX_ERR(0, 215, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_event_Event); - - /* "src/gevent/event.py":242 - * return self._wait(timeout) - * - * def _reset_internal_locks(self): # pragma: no cover # <<<<<<<<<<<<<< - * # for compatibility with threading.Event - * # Exception AttributeError: AttributeError("'Event' object has no attribute '_reset_internal_locks'",) - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_event_5Event_17_reset_internal_locks, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Event__reset_internal_locks, NULL, __pyx_n_s_gevent__event, __pyx_d, ((PyObject *)__pyx_codeobj__29)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 242, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_event_Event->tp_dict, __pyx_n_s_reset_internal_locks, __pyx_t_2) < 0) __PYX_ERR(0, 242, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_event_Event); - - /* "src/gevent/event.py":299 - * """ - * - * __slots__ = ('_value', '_exc_info', '_imap_task_index') # <<<<<<<<<<<<<< - * - * def __init__(self): - */ - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_event_AsyncResult->tp_dict, __pyx_n_s_slots, __pyx_tuple__30) < 0) __PYX_ERR(0, 299, __pyx_L1_error) - PyType_Modified(__pyx_ptype_6gevent_6_event_AsyncResult); - - /* "src/gevent/event.py":337 - * return result + ' _links[%s]>' % len(self._links) - * - * def ready(self): # <<<<<<<<<<<<<< - * """Return true if and only if it holds a value or an exception""" - * return self._exc_info or self._value is not _NONE - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_event_11AsyncResult_5ready, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncResult_ready, NULL, __pyx_n_s_gevent__event, __pyx_d, ((PyObject *)__pyx_codeobj__32)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 337, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_event_AsyncResult->tp_dict, __pyx_n_s_ready, __pyx_t_2) < 0) __PYX_ERR(0, 337, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_event_AsyncResult); - - /* "src/gevent/event.py":341 - * return self._exc_info or self._value is not _NONE - * - * def successful(self): # <<<<<<<<<<<<<< - * """Return true if and only if it is ready and holds a value""" - * return self._value is not _NONE - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_event_11AsyncResult_7successful, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncResult_successful, NULL, __pyx_n_s_gevent__event, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 341, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_event_AsyncResult->tp_dict, __pyx_n_s_successful, __pyx_t_2) < 0) __PYX_ERR(0, 341, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_event_AsyncResult); - - /* "src/gevent/event.py":352 - * return self._exc_info[1] - * - * def set(self, value=None): # <<<<<<<<<<<<<< - * """Store the value and wake up any waiters. - * - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_event_11AsyncResult_9set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncResult_set, NULL, __pyx_n_s_gevent__event, __pyx_d, ((PyObject *)__pyx_codeobj__36)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 352, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_event_AsyncResult->tp_dict, __pyx_n_s_set, __pyx_t_2) < 0) __PYX_ERR(0, 352, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_event_AsyncResult); - - /* "src/gevent/event.py":361 - * self._check_and_notify() - * - * def set_exception(self, exception, exc_info=None): # <<<<<<<<<<<<<< - * """Store the exception and wake up any waiters. - * - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_event_11AsyncResult_11set_exception, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncResult_set_exception, NULL, __pyx_n_s_gevent__event, __pyx_d, ((PyObject *)__pyx_codeobj__38)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 361, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_event_AsyncResult->tp_dict, __pyx_n_s_set_exception, __pyx_t_2) < 0) __PYX_ERR(0, 361, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_event_AsyncResult); - - /* "src/gevent/event.py":378 - * self._check_and_notify() - * - * def _raise_exception(self): # <<<<<<<<<<<<<< - * reraise(*self.exc_info) - * - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_event_11AsyncResult_13_raise_exception, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncResult__raise_exception, NULL, __pyx_n_s_gevent__event, __pyx_d, ((PyObject *)__pyx_codeobj__40)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 378, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_event_AsyncResult->tp_dict, __pyx_n_s_raise_exception, __pyx_t_2) < 0) __PYX_ERR(0, 378, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_event_AsyncResult); - - /* "src/gevent/event.py":381 - * reraise(*self.exc_info) - * - * def get(self, block=True, timeout=None): # <<<<<<<<<<<<<< - * """Return the stored value or raise the exception. - * - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_event_11AsyncResult_15get, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncResult_get, NULL, __pyx_n_s_gevent__event, __pyx_d, ((PyObject *)__pyx_codeobj__42)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 381, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_event_AsyncResult->tp_dict, __pyx_n_s_get, __pyx_t_2) < 0) __PYX_ERR(0, 381, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_event_AsyncResult); - - /* "src/gevent/event.py":411 - * return self.get(block=False) - * - * def get_nowait(self): # <<<<<<<<<<<<<< - * """ - * Return the value or raise the exception without blocking. - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_event_11AsyncResult_17get_nowait, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncResult_get_nowait, NULL, __pyx_n_s_gevent__event, __pyx_d, ((PyObject *)__pyx_codeobj__44)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 411, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_event_AsyncResult->tp_dict, __pyx_n_s_get_nowait, __pyx_t_2) < 0) __PYX_ERR(0, 411, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_event_AsyncResult); - - /* "src/gevent/event.py":426 - * return self.value - * - * def wait(self, timeout=None): # <<<<<<<<<<<<<< - * """Block until the instance is ready. - * - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_event_11AsyncResult_19wait, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncResult_wait, NULL, __pyx_n_s_gevent__event, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 426, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_event_AsyncResult->tp_dict, __pyx_n_s_wait, __pyx_t_2) < 0) __PYX_ERR(0, 426, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_event_AsyncResult); - - /* "src/gevent/event.py":456 - * # Methods to make us more like concurrent.futures.Future - * - * def result(self, timeout=None): # <<<<<<<<<<<<<< - * return self.get(timeout=timeout) - * - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_event_11AsyncResult_23result, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncResult_result, NULL, __pyx_n_s_gevent__event, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 456, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_event_AsyncResult->tp_dict, __pyx_n_s_result, __pyx_t_2) < 0) __PYX_ERR(0, 456, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_event_AsyncResult); - - /* "src/gevent/event.py":459 - * return self.get(timeout=timeout) - * - * set_result = set # <<<<<<<<<<<<<< - * - * def done(self): - */ - __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6gevent_6_event_AsyncResult, __pyx_n_s_set); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 459, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_event_AsyncResult->tp_dict, __pyx_n_s_set_result, __pyx_t_2) < 0) __PYX_ERR(0, 459, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_event_AsyncResult); - - /* "src/gevent/event.py":461 - * set_result = set - * - * def done(self): # <<<<<<<<<<<<<< - * return self.ready() - * - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_event_11AsyncResult_25done, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncResult_done, NULL, __pyx_n_s_gevent__event, __pyx_d, ((PyObject *)__pyx_codeobj__50)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 461, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_event_AsyncResult->tp_dict, __pyx_n_s_done, __pyx_t_2) < 0) __PYX_ERR(0, 461, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_event_AsyncResult); - - /* "src/gevent/event.py":466 - * # we don't support cancelling - * - * def cancel(self): # <<<<<<<<<<<<<< - * return False - * - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_event_11AsyncResult_27cancel, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncResult_cancel, NULL, __pyx_n_s_gevent__event, __pyx_d, ((PyObject *)__pyx_codeobj__52)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 466, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_event_AsyncResult->tp_dict, __pyx_n_s_cancel, __pyx_t_2) < 0) __PYX_ERR(0, 466, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_event_AsyncResult); - - /* "src/gevent/event.py":469 - * return False - * - * def cancelled(self): # <<<<<<<<<<<<<< - * return False - * - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_event_11AsyncResult_29cancelled, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AsyncResult_cancelled, NULL, __pyx_n_s_gevent__event, __pyx_d, ((PyObject *)__pyx_codeobj__54)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 469, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_event_AsyncResult->tp_dict, __pyx_n_s_cancelled, __pyx_t_2) < 0) __PYX_ERR(0, 469, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_event_AsyncResult); - - /* "src/gevent/event.py":477 - * greenlet_init() # pylint:disable=undefined-variable - * - * _init() # <<<<<<<<<<<<<< - * - * - */ - __pyx_f_6gevent_6_event__init(); - - /* "src/gevent/event.py":480 - * - * - * from gevent._util import import_c_accel # <<<<<<<<<<<<<< - * import_c_accel(globals(), 'gevent._event') - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 480, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_import_c_accel); - __Pyx_GIVEREF(__pyx_n_s_import_c_accel); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_import_c_accel); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_gevent__util, __pyx_t_2, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 480, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_import_c_accel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 480, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_import_c_accel, __pyx_t_2) < 0) __PYX_ERR(0, 480, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/event.py":481 - * - * from gevent._util import import_c_accel - * import_c_accel(globals(), 'gevent._event') # <<<<<<<<<<<<<< - */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_import_c_accel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 481, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_Globals(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 481, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 481, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_gevent__event); - __Pyx_GIVEREF(__pyx_n_s_gevent__event); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_gevent__event); - __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 481, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/event.py":1 - * # Copyright (c) 2009-2016 Denis Bilenko, gevent contributors. See LICENSE for details. # <<<<<<<<<<<<<< - * # cython: auto_pickle=False,embedsignature=True,always_allow_keywords=False,infer_types=True - * - */ - __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/_event.pxd":30 - * return PyGreenlet_GetCurrent() - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - - /*--- Wrapped vars code ---*/ - - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - if (__pyx_m) { - if (__pyx_d) { - __Pyx_AddTraceback("init gevent._event", 0, __pyx_lineno, __pyx_filename); - } - Py_DECREF(__pyx_m); __pyx_m = 0; - } else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_ImportError, "init gevent._event"); - } - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - #if CYTHON_PEP489_MULTI_PHASE_INIT - return (__pyx_m != NULL) ? 0 : -1; - #elif PY_MAJOR_VERSION >= 3 - return __pyx_m; - #else - return; - #endif -} - -/* --- Runtime support code --- */ -/* Refnanny */ -#if CYTHON_REFNANNY -static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { - PyObject *m = NULL, *p = NULL; - void *r = NULL; - m = PyImport_ImportModule((char *)modname); - if (!m) goto end; - p = PyObject_GetAttrString(m, (char *)"RefNannyAPI"); - if (!p) goto end; - r = PyLong_AsVoidPtr(p); -end: - Py_XDECREF(p); - Py_XDECREF(m); - return (__Pyx_RefNannyAPIStruct *)r; -} -#endif - -/* PyObjectGetAttrStr */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_getattro)) - return tp->tp_getattro(obj, attr_name); -#if PY_MAJOR_VERSION < 3 - if (likely(tp->tp_getattr)) - return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); -#endif - return PyObject_GetAttr(obj, attr_name); -} -#endif - -/* GetBuiltinName */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name) { - PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); - if (unlikely(!result)) { - PyErr_Format(PyExc_NameError, -#if PY_MAJOR_VERSION >= 3 - "name '%U' is not defined", name); -#else - "name '%.200s' is not defined", PyString_AS_STRING(name)); -#endif - } - return result; -} - -/* RaiseArgTupleInvalid */ -static void __Pyx_RaiseArgtupleInvalid( - const char* func_name, - int exact, - Py_ssize_t num_min, - Py_ssize_t num_max, - Py_ssize_t num_found) -{ - Py_ssize_t num_expected; - const char *more_or_less; - if (num_found < num_min) { - num_expected = num_min; - more_or_less = "at least"; - } else { - num_expected = num_max; - more_or_less = "at most"; - } - if (exact) { - more_or_less = "exactly"; - } - PyErr_Format(PyExc_TypeError, - "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", - func_name, more_or_less, num_expected, - (num_expected == 1) ? "" : "s", num_found); -} - -/* KeywordStringCheck */ -static int __Pyx_CheckKeywordStrings( - PyObject *kwdict, - const char* function_name, - int kw_allowed) -{ - PyObject* key = 0; - Py_ssize_t pos = 0; -#if CYTHON_COMPILING_IN_PYPY - if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0)) - goto invalid_keyword; - return 1; -#else - while (PyDict_Next(kwdict, &pos, &key, 0)) { - #if PY_MAJOR_VERSION < 3 - if (unlikely(!PyString_Check(key))) - #endif - if (unlikely(!PyUnicode_Check(key))) - goto invalid_keyword_type; - } - if ((!kw_allowed) && unlikely(key)) - goto invalid_keyword; - return 1; -invalid_keyword_type: - PyErr_Format(PyExc_TypeError, - "%.200s() keywords must be strings", function_name); - return 0; -#endif -invalid_keyword: - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION < 3 - "%.200s() got an unexpected keyword argument '%.200s'", - function_name, PyString_AsString(key)); - #else - "%s() got an unexpected keyword argument '%U'", - function_name, key); - #endif - return 0; -} - -/* PyCFunctionFastCall */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { - PyCFunctionObject *func = (PyCFunctionObject*)func_obj; - PyCFunction meth = PyCFunction_GET_FUNCTION(func); - PyObject *self = PyCFunction_GET_SELF(func); - int flags = PyCFunction_GET_FLAGS(func); - assert(PyCFunction_Check(func)); - assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))); - assert(nargs >= 0); - assert(nargs == 0 || args != NULL); - /* _PyCFunction_FastCallDict() must not be called with an exception set, - because it may clear it (directly or indirectly) and so the - caller loses its exception */ - assert(!PyErr_Occurred()); - if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { - return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL); - } else { - return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs); - } -} -#endif - -/* PyFunctionFastCall */ -#if CYTHON_FAST_PYCALL -#include "frameobject.h" -static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, - PyObject *globals) { - PyFrameObject *f; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject **fastlocals; - Py_ssize_t i; - PyObject *result; - assert(globals != NULL); - /* XXX Perhaps we should create a specialized - PyFrame_New() that doesn't take locals, but does - take builtins without sanity checking them. - */ - assert(tstate != NULL); - f = PyFrame_New(tstate, co, globals, NULL); - if (f == NULL) { - return NULL; - } - fastlocals = f->f_localsplus; - for (i = 0; i < na; i++) { - Py_INCREF(*args); - fastlocals[i] = *args++; - } - result = PyEval_EvalFrameEx(f,0); - ++tstate->recursion_depth; - Py_DECREF(f); - --tstate->recursion_depth; - return result; -} -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs) { - PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); - PyObject *globals = PyFunction_GET_GLOBALS(func); - PyObject *argdefs = PyFunction_GET_DEFAULTS(func); - PyObject *closure; -#if PY_MAJOR_VERSION >= 3 - PyObject *kwdefs; -#endif - PyObject *kwtuple, **k; - PyObject **d; - Py_ssize_t nd; - Py_ssize_t nk; - PyObject *result; - assert(kwargs == NULL || PyDict_Check(kwargs)); - nk = kwargs ? PyDict_Size(kwargs) : 0; - if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { - return NULL; - } - if ( -#if PY_MAJOR_VERSION >= 3 - co->co_kwonlyargcount == 0 && -#endif - likely(kwargs == NULL || nk == 0) && - co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { - if (argdefs == NULL && co->co_argcount == nargs) { - result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); - goto done; - } - else if (nargs == 0 && argdefs != NULL - && co->co_argcount == Py_SIZE(argdefs)) { - /* function called with no arguments, but all parameters have - a default value: use default values as arguments .*/ - args = &PyTuple_GET_ITEM(argdefs, 0); - result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); - goto done; - } - } - if (kwargs != NULL) { - Py_ssize_t pos, i; - kwtuple = PyTuple_New(2 * nk); - if (kwtuple == NULL) { - result = NULL; - goto done; - } - k = &PyTuple_GET_ITEM(kwtuple, 0); - pos = i = 0; - while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { - Py_INCREF(k[i]); - Py_INCREF(k[i+1]); - i += 2; - } - nk = i / 2; - } - else { - kwtuple = NULL; - k = NULL; - } - closure = PyFunction_GET_CLOSURE(func); -#if PY_MAJOR_VERSION >= 3 - kwdefs = PyFunction_GET_KW_DEFAULTS(func); -#endif - if (argdefs != NULL) { - d = &PyTuple_GET_ITEM(argdefs, 0); - nd = Py_SIZE(argdefs); - } - else { - d = NULL; - nd = 0; - } -#if PY_MAJOR_VERSION >= 3 - result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, - args, nargs, - k, (int)nk, - d, (int)nd, kwdefs, closure); -#else - result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, - args, nargs, - k, (int)nk, - d, (int)nd, closure); -#endif - Py_XDECREF(kwtuple); -done: - Py_LeaveRecursiveCall(); - return result; -} -#endif -#endif - -/* PyObjectCall */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { - PyObject *result; - ternaryfunc call = func->ob_type->tp_call; - if (unlikely(!call)) - return PyObject_Call(func, arg, kw); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = (*call)(func, arg, kw); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCallMethO */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { - PyObject *self, *result; - PyCFunction cfunc; - cfunc = PyCFunction_GET_FUNCTION(func); - self = PyCFunction_GET_SELF(func); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = cfunc(self, arg); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCallOneArg */ -#if CYTHON_COMPILING_IN_CPYTHON -static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_New(1); - if (unlikely(!args)) return NULL; - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 0, arg); - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, &arg, 1); - } -#endif - if (likely(PyCFunction_Check(func))) { - if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { - return __Pyx_PyObject_CallMethO(func, arg); -#if CYTHON_FAST_PYCCALL - } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { - return __Pyx_PyCFunction_FastCall(func, &arg, 1); -#endif - } - } - return __Pyx__PyObject_CallOneArg(func, arg); -} -#else -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_Pack(1, arg); - if (unlikely(!args)) return NULL; - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -#endif - -/* PyObjectCallNoArg */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, NULL, 0); - } -#endif -#ifdef __Pyx_CyFunction_USED - if (likely(PyCFunction_Check(func) || __Pyx_TypeCheck(func, __pyx_CyFunctionType))) { -#else - if (likely(PyCFunction_Check(func))) { -#endif - if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { - return __Pyx_PyObject_CallMethO(func, NULL); - } - } - return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL); -} -#endif - -/* PyErrFetchRestore */ - #if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - tmp_type = tstate->curexc_type; - tmp_value = tstate->curexc_value; - tmp_tb = tstate->curexc_traceback; - tstate->curexc_type = type; - tstate->curexc_value = value; - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - *type = tstate->curexc_type; - *value = tstate->curexc_value; - *tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -} -#endif - -/* RaiseException */ - #if PY_MAJOR_VERSION < 3 -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, - CYTHON_UNUSED PyObject *cause) { - __Pyx_PyThreadState_declare - Py_XINCREF(type); - if (!value || value == Py_None) - value = NULL; - else - Py_INCREF(value); - if (!tb || tb == Py_None) - tb = NULL; - else { - Py_INCREF(tb); - if (!PyTraceBack_Check(tb)) { - PyErr_SetString(PyExc_TypeError, - "raise: arg 3 must be a traceback or None"); - goto raise_error; - } - } - if (PyType_Check(type)) { -#if CYTHON_COMPILING_IN_PYPY - if (!value) { - Py_INCREF(Py_None); - value = Py_None; - } -#endif - PyErr_NormalizeException(&type, &value, &tb); - } else { - if (value) { - PyErr_SetString(PyExc_TypeError, - "instance exception may not have a separate value"); - goto raise_error; - } - value = type; - type = (PyObject*) Py_TYPE(type); - Py_INCREF(type); - if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { - PyErr_SetString(PyExc_TypeError, - "raise: exception class must be a subclass of BaseException"); - goto raise_error; - } - } - __Pyx_PyThreadState_assign - __Pyx_ErrRestore(type, value, tb); - return; -raise_error: - Py_XDECREF(value); - Py_XDECREF(type); - Py_XDECREF(tb); - return; -} -#else -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { - PyObject* owned_instance = NULL; - if (tb == Py_None) { - tb = 0; - } else if (tb && !PyTraceBack_Check(tb)) { - PyErr_SetString(PyExc_TypeError, - "raise: arg 3 must be a traceback or None"); - goto bad; - } - if (value == Py_None) - value = 0; - if (PyExceptionInstance_Check(type)) { - if (value) { - PyErr_SetString(PyExc_TypeError, - "instance exception may not have a separate value"); - goto bad; - } - value = type; - type = (PyObject*) Py_TYPE(value); - } else if (PyExceptionClass_Check(type)) { - PyObject *instance_class = NULL; - if (value && PyExceptionInstance_Check(value)) { - instance_class = (PyObject*) Py_TYPE(value); - if (instance_class != type) { - int is_subclass = PyObject_IsSubclass(instance_class, type); - if (!is_subclass) { - instance_class = NULL; - } else if (unlikely(is_subclass == -1)) { - goto bad; - } else { - type = instance_class; - } - } - } - if (!instance_class) { - PyObject *args; - if (!value) - args = PyTuple_New(0); - else if (PyTuple_Check(value)) { - Py_INCREF(value); - args = value; - } else - args = PyTuple_Pack(1, value); - if (!args) - goto bad; - owned_instance = PyObject_Call(type, args, NULL); - Py_DECREF(args); - if (!owned_instance) - goto bad; - value = owned_instance; - if (!PyExceptionInstance_Check(value)) { - PyErr_Format(PyExc_TypeError, - "calling %R should have returned an instance of " - "BaseException, not %R", - type, Py_TYPE(value)); - goto bad; - } - } - } else { - PyErr_SetString(PyExc_TypeError, - "raise: exception class must be a subclass of BaseException"); - goto bad; - } - if (cause) { - PyObject *fixed_cause; - if (cause == Py_None) { - fixed_cause = NULL; - } else if (PyExceptionClass_Check(cause)) { - fixed_cause = PyObject_CallObject(cause, NULL); - if (fixed_cause == NULL) - goto bad; - } else if (PyExceptionInstance_Check(cause)) { - fixed_cause = cause; - Py_INCREF(fixed_cause); - } else { - PyErr_SetString(PyExc_TypeError, - "exception causes must derive from " - "BaseException"); - goto bad; - } - PyException_SetCause(value, fixed_cause); - } - PyErr_SetObject(type, value); - if (tb) { -#if CYTHON_COMPILING_IN_PYPY - PyObject *tmp_type, *tmp_value, *tmp_tb; - PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); - Py_INCREF(tb); - PyErr_Restore(tmp_type, tmp_value, tb); - Py_XDECREF(tmp_tb); -#else - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject* tmp_tb = tstate->curexc_traceback; - if (tb != tmp_tb) { - Py_INCREF(tb); - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_tb); - } -#endif - } -bad: - Py_XDECREF(owned_instance); - return; -} -#endif - -/* WriteUnraisableException */ - static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, - CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename, - int full_traceback, CYTHON_UNUSED int nogil) { - PyObject *old_exc, *old_val, *old_tb; - PyObject *ctx; - __Pyx_PyThreadState_declare -#ifdef WITH_THREAD - PyGILState_STATE state; - if (nogil) - state = PyGILState_Ensure(); -#ifdef _MSC_VER - else state = (PyGILState_STATE)-1; -#endif -#endif - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&old_exc, &old_val, &old_tb); - if (full_traceback) { - Py_XINCREF(old_exc); - Py_XINCREF(old_val); - Py_XINCREF(old_tb); - __Pyx_ErrRestore(old_exc, old_val, old_tb); - PyErr_PrintEx(1); - } - #if PY_MAJOR_VERSION < 3 - ctx = PyString_FromString(name); - #else - ctx = PyUnicode_FromString(name); - #endif - __Pyx_ErrRestore(old_exc, old_val, old_tb); - if (!ctx) { - PyErr_WriteUnraisable(Py_None); - } else { - PyErr_WriteUnraisable(ctx); - Py_DECREF(ctx); - } -#ifdef WITH_THREAD - if (nogil) - PyGILState_Release(state); -#endif -} - -/* pyfrozenset_new */ - static CYTHON_INLINE PyObject* __Pyx_PyFrozenSet_New(PyObject* it) { - if (it) { - PyObject* result; -#if CYTHON_COMPILING_IN_PYPY - PyObject* args; - args = PyTuple_Pack(1, it); - if (unlikely(!args)) - return NULL; - result = PyObject_Call((PyObject*)&PyFrozenSet_Type, args, NULL); - Py_DECREF(args); - return result; -#else - if (PyFrozenSet_CheckExact(it)) { - Py_INCREF(it); - return it; - } - result = PyFrozenSet_New(it); - if (unlikely(!result)) - return NULL; - if (likely(PySet_GET_SIZE(result))) - return result; - Py_DECREF(result); -#endif - } -#if CYTHON_USE_TYPE_SLOTS - return PyFrozenSet_Type.tp_new(&PyFrozenSet_Type, __pyx_empty_tuple, NULL); -#else - return PyObject_Call((PyObject*)&PyFrozenSet_Type, __pyx_empty_tuple, NULL); -#endif -} - -/* py_set_discard_unhashable */ - static int __Pyx_PySet_DiscardUnhashable(PyObject *set, PyObject *key) { - PyObject *tmpkey; - int rv; - if (likely(!PySet_Check(key) || !PyErr_ExceptionMatches(PyExc_TypeError))) - return -1; - PyErr_Clear(); - tmpkey = __Pyx_PyFrozenSet_New(key); - if (tmpkey == NULL) - return -1; - rv = PySet_Discard(set, tmpkey); - Py_DECREF(tmpkey); - return rv; -} - -/* py_set_remove */ - static int __Pyx_PySet_RemoveNotFound(PyObject *set, PyObject *key, int found) { - if (unlikely(found < 0)) { - found = __Pyx_PySet_DiscardUnhashable(set, key); - } - if (likely(found == 0)) { - PyObject *tup; - tup = PyTuple_Pack(1, key); - if (!tup) - return -1; - PyErr_SetObject(PyExc_KeyError, tup); - Py_DECREF(tup); - return -1; - } - return found; -} -static CYTHON_INLINE int __Pyx_PySet_Remove(PyObject *set, PyObject *key) { - int found = PySet_Discard(set, key); - if (unlikely(found != 1)) { - return __Pyx_PySet_RemoveNotFound(set, key, found); - } - return 0; -} - -/* SaveResetException */ - #if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - #if PY_VERSION_HEX >= 0x030700A3 - *type = tstate->exc_state.exc_type; - *value = tstate->exc_state.exc_value; - *tb = tstate->exc_state.exc_traceback; - #else - *type = tstate->exc_type; - *value = tstate->exc_value; - *tb = tstate->exc_traceback; - #endif - Py_XINCREF(*type); - Py_XINCREF(*value); - Py_XINCREF(*tb); -} -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - #if PY_VERSION_HEX >= 0x030700A3 - tmp_type = tstate->exc_state.exc_type; - tmp_value = tstate->exc_state.exc_value; - tmp_tb = tstate->exc_state.exc_traceback; - tstate->exc_state.exc_type = type; - tstate->exc_state.exc_value = value; - tstate->exc_state.exc_traceback = tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = type; - tstate->exc_value = value; - tstate->exc_traceback = tb; - #endif - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} -#endif - -/* PyErrExceptionMatches */ - #if CYTHON_FAST_THREAD_STATE -static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; i<n; i++) { - if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1; - } -#endif - for (i=0; i<n; i++) { - if (__Pyx_PyErr_GivenExceptionMatches(exc_type, PyTuple_GET_ITEM(tuple, i))) return 1; - } - return 0; -} -static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) { - PyObject *exc_type = tstate->curexc_type; - if (exc_type == err) return 1; - if (unlikely(!exc_type)) return 0; - if (unlikely(PyTuple_Check(err))) - return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); - return __Pyx_PyErr_GivenExceptionMatches(exc_type, err); -} -#endif - -/* IterFinish */ - static CYTHON_INLINE int __Pyx_IterFinish(void) { -#if CYTHON_FAST_THREAD_STATE - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject* exc_type = tstate->curexc_type; - if (unlikely(exc_type)) { - if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) { - PyObject *exc_value, *exc_tb; - exc_value = tstate->curexc_value; - exc_tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; - Py_DECREF(exc_type); - Py_XDECREF(exc_value); - Py_XDECREF(exc_tb); - return 0; - } else { - return -1; - } - } - return 0; -#else - if (unlikely(PyErr_Occurred())) { - if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) { - PyErr_Clear(); - return 0; - } else { - return -1; - } - } - return 0; -#endif -} - -/* set_iter */ - static CYTHON_INLINE PyObject* __Pyx_set_iterator(PyObject* iterable, int is_set, - Py_ssize_t* p_orig_length, int* p_source_is_set) { -#if CYTHON_COMPILING_IN_CPYTHON - is_set = is_set || likely(PySet_CheckExact(iterable) || PyFrozenSet_CheckExact(iterable)); - *p_source_is_set = is_set; - if (likely(is_set)) { - *p_orig_length = PySet_Size(iterable); - Py_INCREF(iterable); - return iterable; - } -#else - (void)is_set; - *p_source_is_set = 0; -#endif - *p_orig_length = 0; - return PyObject_GetIter(iterable); -} -static CYTHON_INLINE int __Pyx_set_iter_next( - PyObject* iter_obj, Py_ssize_t orig_length, - Py_ssize_t* ppos, PyObject **value, - int source_is_set) { - if (!CYTHON_COMPILING_IN_CPYTHON || unlikely(!source_is_set)) { - *value = PyIter_Next(iter_obj); - if (unlikely(!*value)) { - return __Pyx_IterFinish(); - } - (void)orig_length; - (void)ppos; - return 1; - } -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(PySet_GET_SIZE(iter_obj) != orig_length)) { - PyErr_SetString( - PyExc_RuntimeError, - "set changed size during iteration"); - return -1; - } - { - Py_hash_t hash; - int ret = _PySet_NextEntry(iter_obj, ppos, value, &hash); - assert (ret != -1); - if (likely(ret)) { - Py_INCREF(*value); - return 1; - } - } -#endif - return 0; -} - -/* PySetContains */ - static int __Pyx_PySet_ContainsUnhashable(PyObject *set, PyObject *key) { - int result = -1; - if (PySet_Check(key) && PyErr_ExceptionMatches(PyExc_TypeError)) { - PyObject *tmpkey; - PyErr_Clear(); - tmpkey = __Pyx_PyFrozenSet_New(key); - if (tmpkey != NULL) { - result = PySet_Contains(set, tmpkey); - Py_DECREF(tmpkey); - } - } - return result; -} -static CYTHON_INLINE int __Pyx_PySet_ContainsTF(PyObject* key, PyObject* set, int eq) { - int result = PySet_Contains(set, key); - if (unlikely(result < 0)) { - result = __Pyx_PySet_ContainsUnhashable(set, key); - } - return unlikely(result < 0) ? result : (result == (eq == Py_EQ)); -} - -/* GetException */ - #if CYTHON_FAST_THREAD_STATE -static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { -#else -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) { -#endif - PyObject *local_type, *local_value, *local_tb; -#if CYTHON_FAST_THREAD_STATE - PyObject *tmp_type, *tmp_value, *tmp_tb; - local_type = tstate->curexc_type; - local_value = tstate->curexc_value; - local_tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -#else - PyErr_Fetch(&local_type, &local_value, &local_tb); -#endif - PyErr_NormalizeException(&local_type, &local_value, &local_tb); -#if CYTHON_FAST_THREAD_STATE - if (unlikely(tstate->curexc_type)) -#else - if (unlikely(PyErr_Occurred())) -#endif - goto bad; - #if PY_MAJOR_VERSION >= 3 - if (local_tb) { - if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) - goto bad; - } - #endif - Py_XINCREF(local_tb); - Py_XINCREF(local_type); - Py_XINCREF(local_value); - *type = local_type; - *value = local_value; - *tb = local_tb; -#if CYTHON_FAST_THREAD_STATE - #if PY_VERSION_HEX >= 0x030700A3 - tmp_type = tstate->exc_state.exc_type; - tmp_value = tstate->exc_state.exc_value; - tmp_tb = tstate->exc_state.exc_traceback; - tstate->exc_state.exc_type = local_type; - tstate->exc_state.exc_value = local_value; - tstate->exc_state.exc_traceback = local_tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = local_type; - tstate->exc_value = local_value; - tstate->exc_traceback = local_tb; - #endif - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -#else - PyErr_SetExcInfo(local_type, local_value, local_tb); -#endif - return 0; -bad: - *type = 0; - *value = 0; - *tb = 0; - Py_XDECREF(local_type); - Py_XDECREF(local_value); - Py_XDECREF(local_tb); - return -1; -} - -/* GetModuleGlobalName */ - static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { - PyObject *result; -#if !CYTHON_AVOID_BORROWED_REFS -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 - result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); - if (likely(result)) { - Py_INCREF(result); - } else if (unlikely(PyErr_Occurred())) { - result = NULL; - } else { -#else - result = PyDict_GetItem(__pyx_d, name); - if (likely(result)) { - Py_INCREF(result); - } else { -#endif -#else - result = PyObject_GetItem(__pyx_d, name); - if (!result) { - PyErr_Clear(); -#endif - result = __Pyx_GetBuiltinName(name); - } - return result; -} - -/* GetAttr */ - static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) { -#if CYTHON_USE_TYPE_SLOTS -#if PY_MAJOR_VERSION >= 3 - if (likely(PyUnicode_Check(n))) -#else - if (likely(PyString_Check(n))) -#endif - return __Pyx_PyObject_GetAttrStr(o, n); -#endif - return PyObject_GetAttr(o, n); -} - -/* GetAttr3 */ - static PyObject *__Pyx_GetAttr3Default(PyObject *d) { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) - return NULL; - __Pyx_PyErr_Clear(); - Py_INCREF(d); - return d; -} -static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) { - PyObject *r = __Pyx_GetAttr(o, n); - return (likely(r)) ? r : __Pyx_GetAttr3Default(d); -} - -/* SwapException */ - #if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - #if PY_VERSION_HEX >= 0x030700A3 - tmp_type = tstate->exc_state.exc_type; - tmp_value = tstate->exc_state.exc_value; - tmp_tb = tstate->exc_state.exc_traceback; - tstate->exc_state.exc_type = *type; - tstate->exc_state.exc_value = *value; - tstate->exc_state.exc_traceback = *tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = *type; - tstate->exc_value = *value; - tstate->exc_traceback = *tb; - #endif - *type = tmp_type; - *value = tmp_value; - *tb = tmp_tb; -} -#else -static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); - PyErr_SetExcInfo(*type, *value, *tb); - *type = tmp_type; - *value = tmp_value; - *tb = tmp_tb; -} -#endif - -/* RaiseDoubleKeywords */ - static void __Pyx_RaiseDoubleKeywordsError( - const char* func_name, - PyObject* kw_name) -{ - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION >= 3 - "%s() got multiple values for keyword argument '%U'", func_name, kw_name); - #else - "%s() got multiple values for keyword argument '%s'", func_name, - PyString_AsString(kw_name)); - #endif -} - -/* ParseKeywords */ - static int __Pyx_ParseOptionalKeywords( - PyObject *kwds, - PyObject **argnames[], - PyObject *kwds2, - PyObject *values[], - Py_ssize_t num_pos_args, - const char* function_name) -{ - PyObject *key = 0, *value = 0; - Py_ssize_t pos = 0; - PyObject*** name; - PyObject*** first_kw_arg = argnames + num_pos_args; - while (PyDict_Next(kwds, &pos, &key, &value)) { - name = first_kw_arg; - while (*name && (**name != key)) name++; - if (*name) { - values[name-argnames] = value; - continue; - } - name = first_kw_arg; - #if PY_MAJOR_VERSION < 3 - if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) { - while (*name) { - if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) - && _PyString_Eq(**name, key)) { - values[name-argnames] = value; - break; - } - name++; - } - if (*name) continue; - else { - PyObject*** argname = argnames; - while (argname != first_kw_arg) { - if ((**argname == key) || ( - (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) - && _PyString_Eq(**argname, key))) { - goto arg_passed_twice; - } - argname++; - } - } - } else - #endif - if (likely(PyUnicode_Check(key))) { - while (*name) { - int cmp = (**name == key) ? 0 : - #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 : - #endif - PyUnicode_Compare(**name, key); - if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; - if (cmp == 0) { - values[name-argnames] = value; - break; - } - name++; - } - if (*name) continue; - else { - PyObject*** argname = argnames; - while (argname != first_kw_arg) { - int cmp = (**argname == key) ? 0 : - #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 : - #endif - PyUnicode_Compare(**argname, key); - if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; - if (cmp == 0) goto arg_passed_twice; - argname++; - } - } - } else - goto invalid_keyword_type; - if (kwds2) { - if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; - } else { - goto invalid_keyword; - } - } - return 0; -arg_passed_twice: - __Pyx_RaiseDoubleKeywordsError(function_name, key); - goto bad; -invalid_keyword_type: - PyErr_Format(PyExc_TypeError, - "%.200s() keywords must be strings", function_name); - goto bad; -invalid_keyword: - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION < 3 - "%.200s() got an unexpected keyword argument '%.200s'", - function_name, PyString_AsString(key)); - #else - "%s() got an unexpected keyword argument '%U'", - function_name, key); - #endif -bad: - return -1; -} - -/* GetItemInt */ - static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { - PyObject *r; - if (!j) return NULL; - r = PyObject_GetItem(o, j); - Py_DECREF(j); - return r; -} -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - Py_ssize_t wrapped_i = i; - if (wraparound & unlikely(i < 0)) { - wrapped_i += PyList_GET_SIZE(o); - } - if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyList_GET_SIZE(o)))) { - PyObject *r = PyList_GET_ITEM(o, wrapped_i); - Py_INCREF(r); - return r; - } - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -#else - return PySequence_GetItem(o, i); -#endif -} -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - Py_ssize_t wrapped_i = i; - if (wraparound & unlikely(i < 0)) { - wrapped_i += PyTuple_GET_SIZE(o); - } - if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyTuple_GET_SIZE(o)))) { - PyObject *r = PyTuple_GET_ITEM(o, wrapped_i); - Py_INCREF(r); - return r; - } - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -#else - return PySequence_GetItem(o, i); -#endif -} -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS - if (is_list || PyList_CheckExact(o)) { - Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); - if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) { - PyObject *r = PyList_GET_ITEM(o, n); - Py_INCREF(r); - return r; - } - } - else if (PyTuple_CheckExact(o)) { - Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); - if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) { - PyObject *r = PyTuple_GET_ITEM(o, n); - Py_INCREF(r); - return r; - } - } else { - PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; - if (likely(m && m->sq_item)) { - if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { - Py_ssize_t l = m->sq_length(o); - if (likely(l >= 0)) { - i += l; - } else { - if (!PyErr_ExceptionMatches(PyExc_OverflowError)) - return NULL; - PyErr_Clear(); - } - } - return m->sq_item(o, i); - } - } -#else - if (is_list || PySequence_Check(o)) { - return PySequence_GetItem(o, i); - } -#endif - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -} - -/* PyObject_GenericGetAttrNoDict */ - #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { - PyErr_Format(PyExc_AttributeError, -#if PY_MAJOR_VERSION >= 3 - "'%.50s' object has no attribute '%U'", - tp->tp_name, attr_name); -#else - "'%.50s' object has no attribute '%.400s'", - tp->tp_name, PyString_AS_STRING(attr_name)); -#endif - return NULL; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { - PyObject *descr; - PyTypeObject *tp = Py_TYPE(obj); - if (unlikely(!PyString_Check(attr_name))) { - return PyObject_GenericGetAttr(obj, attr_name); - } - assert(!tp->tp_dictoffset); - descr = _PyType_Lookup(tp, attr_name); - if (unlikely(!descr)) { - return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); - } - Py_INCREF(descr); - #if PY_MAJOR_VERSION < 3 - if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) - #endif - { - descrgetfunc f = Py_TYPE(descr)->tp_descr_get; - if (unlikely(f)) { - PyObject *res = f(descr, obj, (PyObject *)tp); - Py_DECREF(descr); - return res; - } - } - return descr; -} -#endif - -/* PyObject_GenericGetAttr */ - #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) { - if (unlikely(Py_TYPE(obj)->tp_dictoffset)) { - return PyObject_GenericGetAttr(obj, attr_name); - } - return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name); -} -#endif - -/* SetVTable */ - static int __Pyx_SetVtable(PyObject *dict, void *vtable) { -#if PY_VERSION_HEX >= 0x02070000 - PyObject *ob = PyCapsule_New(vtable, 0, 0); -#else - PyObject *ob = PyCObject_FromVoidPtr(vtable, 0); -#endif - if (!ob) - goto bad; - if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0) - goto bad; - Py_DECREF(ob); - return 0; -bad: - Py_XDECREF(ob); - return -1; -} - -/* GetVTable */ - static void* __Pyx_GetVtable(PyObject *dict) { - void* ptr; - PyObject *ob = PyObject_GetItem(dict, __pyx_n_s_pyx_vtable); - if (!ob) - goto bad; -#if PY_VERSION_HEX >= 0x02070000 - ptr = PyCapsule_GetPointer(ob, 0); -#else - ptr = PyCObject_AsVoidPtr(ob); -#endif - if (!ptr && !PyErr_Occurred()) - PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type"); - Py_DECREF(ob); - return ptr; -bad: - Py_XDECREF(ob); - return NULL; -} - -/* Import */ - static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { - PyObject *empty_list = 0; - PyObject *module = 0; - PyObject *global_dict = 0; - PyObject *empty_dict = 0; - PyObject *list; - #if PY_MAJOR_VERSION < 3 - PyObject *py_import; - py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); - if (!py_import) - goto bad; - #endif - if (from_list) - list = from_list; - else { - empty_list = PyList_New(0); - if (!empty_list) - goto bad; - list = empty_list; - } - global_dict = PyModule_GetDict(__pyx_m); - if (!global_dict) - goto bad; - empty_dict = PyDict_New(); - if (!empty_dict) - goto bad; - { - #if PY_MAJOR_VERSION >= 3 - if (level == -1) { - if (strchr(__Pyx_MODULE_NAME, '.')) { - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, 1); - if (!module) { - if (!PyErr_ExceptionMatches(PyExc_ImportError)) - goto bad; - PyErr_Clear(); - } - } - level = 0; - } - #endif - if (!module) { - #if PY_MAJOR_VERSION < 3 - PyObject *py_level = PyInt_FromLong(level); - if (!py_level) - goto bad; - module = PyObject_CallFunctionObjArgs(py_import, - name, global_dict, empty_dict, list, py_level, NULL); - Py_DECREF(py_level); - #else - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, level); - #endif - } - } -bad: - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(py_import); - #endif - Py_XDECREF(empty_list); - Py_XDECREF(empty_dict); - return module; -} - -/* ImportFrom */ - static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { - PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); - if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Format(PyExc_ImportError, - #if PY_MAJOR_VERSION < 3 - "cannot import name %.230s", PyString_AS_STRING(name)); - #else - "cannot import name %S", name); - #endif - } - return value; -} - -/* FetchCommonType */ - static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { - PyObject* fake_module; - PyTypeObject* cached_type = NULL; - fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI); - if (!fake_module) return NULL; - Py_INCREF(fake_module); - cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name); - if (cached_type) { - if (!PyType_Check((PyObject*)cached_type)) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s is not a type object", - type->tp_name); - goto bad; - } - if (cached_type->tp_basicsize != type->tp_basicsize) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s has the wrong size, try recompiling", - type->tp_name); - goto bad; - } - } else { - if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; - PyErr_Clear(); - if (PyType_Ready(type) < 0) goto bad; - if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0) - goto bad; - Py_INCREF(type); - cached_type = type; - } -done: - Py_DECREF(fake_module); - return cached_type; -bad: - Py_XDECREF(cached_type); - cached_type = NULL; - goto done; -} - -/* CythonFunction */ - #include <structmember.h> -static PyObject * -__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure) -{ - if (unlikely(op->func_doc == NULL)) { - if (op->func.m_ml->ml_doc) { -#if PY_MAJOR_VERSION >= 3 - op->func_doc = PyUnicode_FromString(op->func.m_ml->ml_doc); -#else - op->func_doc = PyString_FromString(op->func.m_ml->ml_doc); -#endif - if (unlikely(op->func_doc == NULL)) - return NULL; - } else { - Py_INCREF(Py_None); - return Py_None; - } - } - Py_INCREF(op->func_doc); - return op->func_doc; -} -static int -__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp = op->func_doc; - if (value == NULL) { - value = Py_None; - } - Py_INCREF(value); - op->func_doc = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op) -{ - if (unlikely(op->func_name == NULL)) { -#if PY_MAJOR_VERSION >= 3 - op->func_name = PyUnicode_InternFromString(op->func.m_ml->ml_name); -#else - op->func_name = PyString_InternFromString(op->func.m_ml->ml_name); -#endif - if (unlikely(op->func_name == NULL)) - return NULL; - } - Py_INCREF(op->func_name); - return op->func_name; -} -static int -__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; -#if PY_MAJOR_VERSION >= 3 - if (unlikely(value == NULL || !PyUnicode_Check(value))) { -#else - if (unlikely(value == NULL || !PyString_Check(value))) { -#endif - PyErr_SetString(PyExc_TypeError, - "__name__ must be set to a string object"); - return -1; - } - tmp = op->func_name; - Py_INCREF(value); - op->func_name = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op) -{ - Py_INCREF(op->func_qualname); - return op->func_qualname; -} -static int -__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; -#if PY_MAJOR_VERSION >= 3 - if (unlikely(value == NULL || !PyUnicode_Check(value))) { -#else - if (unlikely(value == NULL || !PyString_Check(value))) { -#endif - PyErr_SetString(PyExc_TypeError, - "__qualname__ must be set to a string object"); - return -1; - } - tmp = op->func_qualname; - Py_INCREF(value); - op->func_qualname = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure) -{ - PyObject *self; - self = m->func_closure; - if (self == NULL) - self = Py_None; - Py_INCREF(self); - return self; -} -static PyObject * -__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op) -{ - if (unlikely(op->func_dict == NULL)) { - op->func_dict = PyDict_New(); - if (unlikely(op->func_dict == NULL)) - return NULL; - } - Py_INCREF(op->func_dict); - return op->func_dict; -} -static int -__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; - if (unlikely(value == NULL)) { - PyErr_SetString(PyExc_TypeError, - "function's dictionary may not be deleted"); - return -1; - } - if (unlikely(!PyDict_Check(value))) { - PyErr_SetString(PyExc_TypeError, - "setting function's dictionary to a non-dict"); - return -1; - } - tmp = op->func_dict; - Py_INCREF(value); - op->func_dict = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op) -{ - Py_INCREF(op->func_globals); - return op->func_globals; -} -static PyObject * -__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op) -{ - Py_INCREF(Py_None); - return Py_None; -} -static PyObject * -__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op) -{ - PyObject* result = (op->func_code) ? op->func_code : Py_None; - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { - int result = 0; - PyObject *res = op->defaults_getter((PyObject *) op); - if (unlikely(!res)) - return -1; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - op->defaults_tuple = PyTuple_GET_ITEM(res, 0); - Py_INCREF(op->defaults_tuple); - op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); - Py_INCREF(op->defaults_kwdict); - #else - op->defaults_tuple = PySequence_ITEM(res, 0); - if (unlikely(!op->defaults_tuple)) result = -1; - else { - op->defaults_kwdict = PySequence_ITEM(res, 1); - if (unlikely(!op->defaults_kwdict)) result = -1; - } - #endif - Py_DECREF(res); - return result; -} -static int -__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value) { - value = Py_None; - } else if (value != Py_None && !PyTuple_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__defaults__ must be set to a tuple object"); - return -1; - } - Py_INCREF(value); - tmp = op->defaults_tuple; - op->defaults_tuple = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) { - PyObject* result = op->defaults_tuple; - if (unlikely(!result)) { - if (op->defaults_getter) { - if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; - result = op->defaults_tuple; - } else { - result = Py_None; - } - } - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value) { - value = Py_None; - } else if (value != Py_None && !PyDict_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__kwdefaults__ must be set to a dict object"); - return -1; - } - Py_INCREF(value); - tmp = op->defaults_kwdict; - op->defaults_kwdict = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) { - PyObject* result = op->defaults_kwdict; - if (unlikely(!result)) { - if (op->defaults_getter) { - if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; - result = op->defaults_kwdict; - } else { - result = Py_None; - } - } - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value || value == Py_None) { - value = NULL; - } else if (!PyDict_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__annotations__ must be set to a dict object"); - return -1; - } - Py_XINCREF(value); - tmp = op->func_annotations; - op->func_annotations = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op) { - PyObject* result = op->func_annotations; - if (unlikely(!result)) { - result = PyDict_New(); - if (unlikely(!result)) return NULL; - op->func_annotations = result; - } - Py_INCREF(result); - return result; -} -static PyGetSetDef __pyx_CyFunction_getsets[] = { - {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, - {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, - {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, - {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, - {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, - {(char *) "__self__", (getter)__Pyx_CyFunction_get_self, 0, 0, 0}, - {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, - {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, - {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, - {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, - {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, - {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, - {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, - {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, - {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, - {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, - {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, - {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, - {0, 0, 0, 0, 0} -}; -static PyMemberDef __pyx_CyFunction_members[] = { - {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), PY_WRITE_RESTRICTED, 0}, - {0, 0, 0, 0, 0} -}; -static PyObject * -__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args) -{ -#if PY_MAJOR_VERSION >= 3 - return PyUnicode_FromString(m->func.m_ml->ml_name); -#else - return PyString_FromString(m->func.m_ml->ml_name); -#endif -} -static PyMethodDef __pyx_CyFunction_methods[] = { - {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, - {0, 0, 0, 0} -}; -#if PY_VERSION_HEX < 0x030500A0 -#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) -#else -#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func.m_weakreflist) -#endif -static PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *ml, int flags, PyObject* qualname, - PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { - __pyx_CyFunctionObject *op = PyObject_GC_New(__pyx_CyFunctionObject, type); - if (op == NULL) - return NULL; - op->flags = flags; - __Pyx_CyFunction_weakreflist(op) = NULL; - op->func.m_ml = ml; - op->func.m_self = (PyObject *) op; - Py_XINCREF(closure); - op->func_closure = closure; - Py_XINCREF(module); - op->func.m_module = module; - op->func_dict = NULL; - op->func_name = NULL; - Py_INCREF(qualname); - op->func_qualname = qualname; - op->func_doc = NULL; - op->func_classobj = NULL; - op->func_globals = globals; - Py_INCREF(op->func_globals); - Py_XINCREF(code); - op->func_code = code; - op->defaults_pyobjects = 0; - op->defaults = NULL; - op->defaults_tuple = NULL; - op->defaults_kwdict = NULL; - op->defaults_getter = NULL; - op->func_annotations = NULL; - PyObject_GC_Track(op); - return (PyObject *) op; -} -static int -__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) -{ - Py_CLEAR(m->func_closure); - Py_CLEAR(m->func.m_module); - Py_CLEAR(m->func_dict); - Py_CLEAR(m->func_name); - Py_CLEAR(m->func_qualname); - Py_CLEAR(m->func_doc); - Py_CLEAR(m->func_globals); - Py_CLEAR(m->func_code); - Py_CLEAR(m->func_classobj); - Py_CLEAR(m->defaults_tuple); - Py_CLEAR(m->defaults_kwdict); - Py_CLEAR(m->func_annotations); - if (m->defaults) { - PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); - int i; - for (i = 0; i < m->defaults_pyobjects; i++) - Py_XDECREF(pydefaults[i]); - PyObject_Free(m->defaults); - m->defaults = NULL; - } - return 0; -} -static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) -{ - if (__Pyx_CyFunction_weakreflist(m) != NULL) - PyObject_ClearWeakRefs((PyObject *) m); - __Pyx_CyFunction_clear(m); - PyObject_GC_Del(m); -} -static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) -{ - PyObject_GC_UnTrack(m); - __Pyx__CyFunction_dealloc(m); -} -static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) -{ - Py_VISIT(m->func_closure); - Py_VISIT(m->func.m_module); - Py_VISIT(m->func_dict); - Py_VISIT(m->func_name); - Py_VISIT(m->func_qualname); - Py_VISIT(m->func_doc); - Py_VISIT(m->func_globals); - Py_VISIT(m->func_code); - Py_VISIT(m->func_classobj); - Py_VISIT(m->defaults_tuple); - Py_VISIT(m->defaults_kwdict); - if (m->defaults) { - PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); - int i; - for (i = 0; i < m->defaults_pyobjects; i++) - Py_VISIT(pydefaults[i]); - } - return 0; -} -static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type) -{ - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) { - Py_INCREF(func); - return func; - } - if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) { - if (type == NULL) - type = (PyObject *)(Py_TYPE(obj)); - return __Pyx_PyMethod_New(func, type, (PyObject *)(Py_TYPE(type))); - } - if (obj == Py_None) - obj = NULL; - return __Pyx_PyMethod_New(func, obj, type); -} -static PyObject* -__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) -{ -#if PY_MAJOR_VERSION >= 3 - return PyUnicode_FromFormat("<cyfunction %U at %p>", - op->func_qualname, (void *)op); -#else - return PyString_FromFormat("<cyfunction %s at %p>", - PyString_AsString(op->func_qualname), (void *)op); -#endif -} -static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { - PyCFunctionObject* f = (PyCFunctionObject*)func; - PyCFunction meth = f->m_ml->ml_meth; - Py_ssize_t size; - switch (f->m_ml->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { - case METH_VARARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) - return (*meth)(self, arg); - break; - case METH_VARARGS | METH_KEYWORDS: - return (*(PyCFunctionWithKeywords)meth)(self, arg, kw); - case METH_NOARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { - size = PyTuple_GET_SIZE(arg); - if (likely(size == 0)) - return (*meth)(self, NULL); - PyErr_Format(PyExc_TypeError, - "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", - f->m_ml->ml_name, size); - return NULL; - } - break; - case METH_O: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { - size = PyTuple_GET_SIZE(arg); - if (likely(size == 1)) { - PyObject *result, *arg0; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - arg0 = PyTuple_GET_ITEM(arg, 0); - #else - arg0 = PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; - #endif - result = (*meth)(self, arg0); - #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) - Py_DECREF(arg0); - #endif - return result; - } - PyErr_Format(PyExc_TypeError, - "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", - f->m_ml->ml_name, size); - return NULL; - } - break; - default: - PyErr_SetString(PyExc_SystemError, "Bad call flags in " - "__Pyx_CyFunction_Call. METH_OLDARGS is no " - "longer supported!"); - return NULL; - } - PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", - f->m_ml->ml_name); - return NULL; -} -static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { - return __Pyx_CyFunction_CallMethod(func, ((PyCFunctionObject*)func)->m_self, arg, kw); -} -static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { - PyObject *result; - __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; - if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { - Py_ssize_t argc; - PyObject *new_args; - PyObject *self; - argc = PyTuple_GET_SIZE(args); - new_args = PyTuple_GetSlice(args, 1, argc); - if (unlikely(!new_args)) - return NULL; - self = PyTuple_GetItem(args, 0); - if (unlikely(!self)) { - Py_DECREF(new_args); - return NULL; - } - result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); - Py_DECREF(new_args); - } else { - result = __Pyx_CyFunction_Call(func, args, kw); - } - return result; -} -static PyTypeObject __pyx_CyFunctionType_type = { - PyVarObject_HEAD_INIT(0, 0) - "cython_function_or_method", - sizeof(__pyx_CyFunctionObject), - 0, - (destructor) __Pyx_CyFunction_dealloc, - 0, - 0, - 0, -#if PY_MAJOR_VERSION < 3 - 0, -#else - 0, -#endif - (reprfunc) __Pyx_CyFunction_repr, - 0, - 0, - 0, - 0, - __Pyx_CyFunction_CallAsMethod, - 0, - 0, - 0, - 0, - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, - 0, - (traverseproc) __Pyx_CyFunction_traverse, - (inquiry) __Pyx_CyFunction_clear, - 0, -#if PY_VERSION_HEX < 0x030500A0 - offsetof(__pyx_CyFunctionObject, func_weakreflist), -#else - offsetof(PyCFunctionObject, m_weakreflist), -#endif - 0, - 0, - __pyx_CyFunction_methods, - __pyx_CyFunction_members, - __pyx_CyFunction_getsets, - 0, - 0, - __Pyx_CyFunction_descr_get, - 0, - offsetof(__pyx_CyFunctionObject, func_dict), - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, -#if PY_VERSION_HEX >= 0x030400a1 - 0, -#endif -}; -static int __pyx_CyFunction_init(void) { - __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); - if (unlikely(__pyx_CyFunctionType == NULL)) { - return -1; - } - return 0; -} -static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults = PyObject_Malloc(size); - if (unlikely(!m->defaults)) - return PyErr_NoMemory(); - memset(m->defaults, 0, size); - m->defaults_pyobjects = pyobjects; - return m->defaults; -} -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults_tuple = tuple; - Py_INCREF(tuple); -} -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults_kwdict = dict; - Py_INCREF(dict); -} -static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->func_annotations = dict; - Py_INCREF(dict); -} - -/* GetNameInClass */ - static PyObject *__Pyx_GetGlobalNameAfterAttributeLookup(PyObject *name) { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) - return NULL; - __Pyx_PyErr_Clear(); - return __Pyx_GetModuleGlobalName(name); -} -static PyObject *__Pyx_GetNameInClass(PyObject *nmspace, PyObject *name) { - PyObject *result; - result = __Pyx_PyObject_GetAttrStr(nmspace, name); - if (!result) { - result = __Pyx_GetGlobalNameAfterAttributeLookup(name); - } - return result; -} - -/* Globals */ - static PyObject* __Pyx_Globals(void) { - Py_ssize_t i; - PyObject *names; - PyObject *globals = __pyx_d; - Py_INCREF(globals); - names = PyObject_Dir(__pyx_m); - if (!names) - goto bad; - for (i = PyList_GET_SIZE(names)-1; i >= 0; i--) { -#if CYTHON_COMPILING_IN_PYPY - PyObject* name = PySequence_ITEM(names, i); - if (!name) - goto bad; -#else - PyObject* name = PyList_GET_ITEM(names, i); -#endif - if (!PyDict_Contains(globals, name)) { - PyObject* value = __Pyx_GetAttr(__pyx_m, name); - if (!value) { -#if CYTHON_COMPILING_IN_PYPY - Py_DECREF(name); -#endif - goto bad; - } - if (PyDict_SetItem(globals, name, value) < 0) { -#if CYTHON_COMPILING_IN_PYPY - Py_DECREF(name); -#endif - Py_DECREF(value); - goto bad; - } - } -#if CYTHON_COMPILING_IN_PYPY - Py_DECREF(name); -#endif - } - Py_DECREF(names); - return globals; -bad: - Py_XDECREF(names); - Py_XDECREF(globals); - return NULL; -} - -/* CLineInTraceback */ - #ifndef CYTHON_CLINE_IN_TRACEBACK -static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) { - PyObject *use_cline; - PyObject *ptype, *pvalue, *ptraceback; -#if CYTHON_COMPILING_IN_CPYTHON - PyObject **cython_runtime_dict; -#endif - if (unlikely(!__pyx_cython_runtime)) { - return c_line; - } - __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); -#if CYTHON_COMPILING_IN_CPYTHON - cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); - if (likely(cython_runtime_dict)) { - use_cline = __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback); - } else -#endif - { - PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); - if (use_cline_obj) { - use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; - Py_DECREF(use_cline_obj); - } else { - PyErr_Clear(); - use_cline = NULL; - } - } - if (!use_cline) { - c_line = 0; - PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); - } - else if (PyObject_Not(use_cline) != 0) { - c_line = 0; - } - __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); - return c_line; -} -#endif - -/* CodeObjectCache */ - static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { - int start = 0, mid = 0, end = count - 1; - if (end >= 0 && code_line > entries[end].code_line) { - return count; - } - while (start < end) { - mid = start + (end - start) / 2; - if (code_line < entries[mid].code_line) { - end = mid; - } else if (code_line > entries[mid].code_line) { - start = mid + 1; - } else { - return mid; - } - } - if (code_line <= entries[mid].code_line) { - return mid; - } else { - return mid + 1; - } -} -static PyCodeObject *__pyx_find_code_object(int code_line) { - PyCodeObject* code_object; - int pos; - if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { - return NULL; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { - return NULL; - } - code_object = __pyx_code_cache.entries[pos].code_object; - Py_INCREF(code_object); - return code_object; -} -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { - int pos, i; - __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; - if (unlikely(!code_line)) { - return; - } - if (unlikely(!entries)) { - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); - if (likely(entries)) { - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = 64; - __pyx_code_cache.count = 1; - entries[0].code_line = code_line; - entries[0].code_object = code_object; - Py_INCREF(code_object); - } - return; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { - PyCodeObject* tmp = entries[pos].code_object; - entries[pos].code_object = code_object; - Py_DECREF(tmp); - return; - } - if (__pyx_code_cache.count == __pyx_code_cache.max_count) { - int new_max = __pyx_code_cache.max_count + 64; - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( - __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry)); - if (unlikely(!entries)) { - return; - } - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = new_max; - } - for (i=__pyx_code_cache.count; i>pos; i--) { - entries[i] = entries[i-1]; - } - entries[pos].code_line = code_line; - entries[pos].code_object = code_object; - __pyx_code_cache.count++; - Py_INCREF(code_object); -} - -/* AddTraceback */ - #include "compile.h" -#include "frameobject.h" -#include "traceback.h" -static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( - const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyObject *py_srcfile = 0; - PyObject *py_funcname = 0; - #if PY_MAJOR_VERSION < 3 - py_srcfile = PyString_FromString(filename); - #else - py_srcfile = PyUnicode_FromString(filename); - #endif - if (!py_srcfile) goto bad; - if (c_line) { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #else - py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #endif - } - else { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromString(funcname); - #else - py_funcname = PyUnicode_FromString(funcname); - #endif - } - if (!py_funcname) goto bad; - py_code = __Pyx_PyCode_New( - 0, - 0, - 0, - 0, - 0, - __pyx_empty_bytes, /*PyObject *code,*/ - __pyx_empty_tuple, /*PyObject *consts,*/ - __pyx_empty_tuple, /*PyObject *names,*/ - __pyx_empty_tuple, /*PyObject *varnames,*/ - __pyx_empty_tuple, /*PyObject *freevars,*/ - __pyx_empty_tuple, /*PyObject *cellvars,*/ - py_srcfile, /*PyObject *filename,*/ - py_funcname, /*PyObject *name,*/ - py_line, - __pyx_empty_bytes /*PyObject *lnotab*/ - ); - Py_DECREF(py_srcfile); - Py_DECREF(py_funcname); - return py_code; -bad: - Py_XDECREF(py_srcfile); - Py_XDECREF(py_funcname); - return NULL; -} -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyFrameObject *py_frame = 0; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - if (c_line) { - c_line = __Pyx_CLineForTraceback(tstate, c_line); - } - py_code = __pyx_find_code_object(c_line ? -c_line : py_line); - if (!py_code) { - py_code = __Pyx_CreateCodeObjectForTraceback( - funcname, c_line, py_line, filename); - if (!py_code) goto bad; - __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); - } - py_frame = PyFrame_New( - tstate, /*PyThreadState *tstate,*/ - py_code, /*PyCodeObject *code,*/ - __pyx_d, /*PyObject *globals,*/ - 0 /*PyObject *locals*/ - ); - if (!py_frame) goto bad; - __Pyx_PyFrame_SetLineNumber(py_frame, py_line); - PyTraceBack_Here(py_frame); -bad: - Py_XDECREF(py_code); - Py_XDECREF(py_frame); -} - -/* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { - const long neg_one = (long) -1, const_zero = (long) 0; - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(long) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(long) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -#endif - } - } else { - if (sizeof(long) <= sizeof(long)) { - return PyInt_FromLong((long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); -#endif - } - } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; - return _PyLong_FromByteArray(bytes, sizeof(long), - little, !is_unsigned); - } -} - -/* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { - const int neg_one = (int) -1, const_zero = (int) 0; - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(int) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(int) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -#endif - } - } else { - if (sizeof(int) <= sizeof(long)) { - return PyInt_FromLong((long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); -#endif - } - } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; - return _PyLong_FromByteArray(bytes, sizeof(int), - little, !is_unsigned); - } -} - -/* CIntFromPyVerify */ - #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) -#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) -#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ - {\ - func_type value = func_value;\ - if (sizeof(target_type) < sizeof(func_type)) {\ - if (unlikely(value != (func_type) (target_type) value)) {\ - func_type zero = 0;\ - if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ - return (target_type) -1;\ - if (is_unsigned && unlikely(value < zero))\ - goto raise_neg_overflow;\ - else\ - goto raise_overflow;\ - }\ - }\ - return (target_type) value;\ - } - -/* CIntFromPy */ - static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { - const int neg_one = (int) -1, const_zero = (int) 0; - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(int) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (int) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (int) 0; - case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { - return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { - return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { - return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (int) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(int) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (int) 0; - case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) - case -2: - if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - } -#endif - if (sizeof(int) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - int val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (int) -1; - } - } else { - int val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (int) -1; - val = __Pyx_PyInt_As_int(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to int"); - return (int) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to int"); - return (int) -1; -} - -/* CIntFromPy */ - static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { - const long neg_one = (long) -1, const_zero = (long) 0; - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(long) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (long) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { - return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { - return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { - return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (long) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(long) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) - case -2: - if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - } -#endif - if (sizeof(long) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - long val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (long) -1; - } - } else { - long val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (long) -1; - val = __Pyx_PyInt_As_long(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to long"); - return (long) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to long"); - return (long) -1; -} - -/* FastTypeChecks */ - #if CYTHON_COMPILING_IN_CPYTHON -static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { - while (a) { - a = a->tp_base; - if (a == b) - return 1; - } - return b == &PyBaseObject_Type; -} -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { - PyObject *mro; - if (a == b) return 1; - mro = a->tp_mro; - if (likely(mro)) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(mro); - for (i = 0; i < n; i++) { - if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) - return 1; - } - return 0; - } - return __Pyx_InBases(a, b); -} -#if PY_MAJOR_VERSION == 2 -static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { - PyObject *exception, *value, *tb; - int res; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&exception, &value, &tb); - res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - if (!res) { - res = PyObject_IsSubclass(err, exc_type2); - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - } - __Pyx_ErrRestore(exception, value, tb); - return res; -} -#else -static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { - int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0; - if (!res) { - res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); - } - return res; -} -#endif -static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - assert(PyExceptionClass_Check(exc_type)); - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; i<n; i++) { - if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1; - } -#endif - for (i=0; i<n; i++) { - PyObject *t = PyTuple_GET_ITEM(tuple, i); - #if PY_MAJOR_VERSION < 3 - if (likely(exc_type == t)) return 1; - #endif - if (likely(PyExceptionClass_Check(t))) { - if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1; - } else { - } - } - return 0; -} -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) { - if (likely(err == exc_type)) return 1; - if (likely(PyExceptionClass_Check(err))) { - if (likely(PyExceptionClass_Check(exc_type))) { - return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type); - } else if (likely(PyTuple_Check(exc_type))) { - return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type); - } else { - } - } - return PyErr_GivenExceptionMatches(err, exc_type); -} -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) { - assert(PyExceptionClass_Check(exc_type1)); - assert(PyExceptionClass_Check(exc_type2)); - if (likely(err == exc_type1 || err == exc_type2)) return 1; - if (likely(PyExceptionClass_Check(err))) { - return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2); - } - return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2)); -} -#endif - -/* CheckBinaryVersion */ - static int __Pyx_check_binary_version(void) { - char ctversion[4], rtversion[4]; - PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); - PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); - if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) { - char message[200]; - PyOS_snprintf(message, sizeof(message), - "compiletime version %s of module '%.100s' " - "does not match runtime version %s", - ctversion, __Pyx_MODULE_NAME, rtversion); - return PyErr_WarnEx(NULL, message, 1); - } - return 0; -} - -/* PyObjectSetAttrStr */ - #if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_setattro)) - return tp->tp_setattro(obj, attr_name, value); -#if PY_MAJOR_VERSION < 3 - if (likely(tp->tp_setattr)) - return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value); -#endif - return PyObject_SetAttr(obj, attr_name, value); -} -#endif - -/* VoidPtrExport */ - static int __Pyx_ExportVoidPtr(PyObject *name, void *p, const char *sig) { - PyObject *d; - PyObject *cobj = 0; - d = PyDict_GetItem(__pyx_d, __pyx_n_s_pyx_capi); - Py_XINCREF(d); - if (!d) { - d = PyDict_New(); - if (!d) - goto bad; - if (__Pyx_PyObject_SetAttrStr(__pyx_m, __pyx_n_s_pyx_capi, d) < 0) - goto bad; - } -#if PY_VERSION_HEX >= 0x02070000 - cobj = PyCapsule_New(p, sig, 0); -#else - cobj = PyCObject_FromVoidPtrAndDesc(p, (void *)sig, 0); -#endif - if (!cobj) - goto bad; - if (PyDict_SetItem(d, name, cobj) < 0) - goto bad; - Py_DECREF(cobj); - Py_DECREF(d); - return 0; -bad: - Py_XDECREF(cobj); - Py_XDECREF(d); - return -1; -} - -/* FunctionExport */ - static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) { - PyObject *d = 0; - PyObject *cobj = 0; - union { - void (*fp)(void); - void *p; - } tmp; - d = PyObject_GetAttrString(__pyx_m, (char *)"__pyx_capi__"); - if (!d) { - PyErr_Clear(); - d = PyDict_New(); - if (!d) - goto bad; - Py_INCREF(d); - if (PyModule_AddObject(__pyx_m, (char *)"__pyx_capi__", d) < 0) - goto bad; - } - tmp.fp = f; -#if PY_VERSION_HEX >= 0x02070000 - cobj = PyCapsule_New(tmp.p, sig, 0); -#else - cobj = PyCObject_FromVoidPtrAndDesc(tmp.p, (void *)sig, 0); -#endif - if (!cobj) - goto bad; - if (PyDict_SetItemString(d, name, cobj) < 0) - goto bad; - Py_DECREF(cobj); - Py_DECREF(d); - return 0; -bad: - Py_XDECREF(cobj); - Py_XDECREF(d); - return -1; -} - -/* ModuleImport */ - #ifndef __PYX_HAVE_RT_ImportModule -#define __PYX_HAVE_RT_ImportModule -static PyObject *__Pyx_ImportModule(const char *name) { - PyObject *py_name = 0; - PyObject *py_module = 0; - py_name = __Pyx_PyIdentifier_FromString(name); - if (!py_name) - goto bad; - py_module = PyImport_Import(py_name); - Py_DECREF(py_name); - return py_module; -bad: - Py_XDECREF(py_name); - return 0; -} -#endif - -/* TypeImport */ - #ifndef __PYX_HAVE_RT_ImportType -#define __PYX_HAVE_RT_ImportType -static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, - size_t size, int strict) -{ - PyObject *py_module = 0; - PyObject *result = 0; - PyObject *py_name = 0; - char warning[200]; - Py_ssize_t basicsize; -#ifdef Py_LIMITED_API - PyObject *py_basicsize; -#endif - py_module = __Pyx_ImportModule(module_name); - if (!py_module) - goto bad; - py_name = __Pyx_PyIdentifier_FromString(class_name); - if (!py_name) - goto bad; - result = PyObject_GetAttr(py_module, py_name); - Py_DECREF(py_name); - py_name = 0; - Py_DECREF(py_module); - py_module = 0; - if (!result) - goto bad; - if (!PyType_Check(result)) { - PyErr_Format(PyExc_TypeError, - "%.200s.%.200s is not a type object", - module_name, class_name); - goto bad; - } -#ifndef Py_LIMITED_API - basicsize = ((PyTypeObject *)result)->tp_basicsize; -#else - py_basicsize = PyObject_GetAttrString(result, "__basicsize__"); - if (!py_basicsize) - goto bad; - basicsize = PyLong_AsSsize_t(py_basicsize); - Py_DECREF(py_basicsize); - py_basicsize = 0; - if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred()) - goto bad; -#endif - if (!strict && (size_t)basicsize > size) { - PyOS_snprintf(warning, sizeof(warning), - "%s.%s size changed, may indicate binary incompatibility. Expected %zd, got %zd", - module_name, class_name, basicsize, size); - if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad; - } - else if ((size_t)basicsize != size) { - PyErr_Format(PyExc_ValueError, - "%.200s.%.200s has the wrong size, try recompiling. Expected %zd, got %zd", - module_name, class_name, basicsize, size); - goto bad; - } - return (PyTypeObject *)result; -bad: - Py_XDECREF(py_module); - Py_XDECREF(result); - return NULL; -} -#endif - -/* VoidPtrImport */ - #ifndef __PYX_HAVE_RT_ImportVoidPtr -#define __PYX_HAVE_RT_ImportVoidPtr -static int __Pyx_ImportVoidPtr(PyObject *module, const char *name, void **p, const char *sig) { - PyObject *d = 0; - PyObject *cobj = 0; - d = PyObject_GetAttrString(module, (char *)"__pyx_capi__"); - if (!d) - goto bad; - cobj = PyDict_GetItemString(d, name); - if (!cobj) { - PyErr_Format(PyExc_ImportError, - "%.200s does not export expected C variable %.200s", - PyModule_GetName(module), name); - goto bad; - } -#if PY_VERSION_HEX >= 0x02070000 - if (!PyCapsule_IsValid(cobj, sig)) { - PyErr_Format(PyExc_TypeError, - "C variable %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", - PyModule_GetName(module), name, sig, PyCapsule_GetName(cobj)); - goto bad; - } - *p = PyCapsule_GetPointer(cobj, sig); -#else - {const char *desc, *s1, *s2; - desc = (const char *)PyCObject_GetDesc(cobj); - if (!desc) - goto bad; - s1 = desc; s2 = sig; - while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; } - if (*s1 != *s2) { - PyErr_Format(PyExc_TypeError, - "C variable %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", - PyModule_GetName(module), name, sig, desc); - goto bad; - } - *p = PyCObject_AsVoidPtr(cobj);} -#endif - if (!(*p)) - goto bad; - Py_DECREF(d); - return 0; -bad: - Py_XDECREF(d); - return -1; -} -#endif - -/* FunctionImport */ - #ifndef __PYX_HAVE_RT_ImportFunction -#define __PYX_HAVE_RT_ImportFunction -static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) { - PyObject *d = 0; - PyObject *cobj = 0; - union { - void (*fp)(void); - void *p; - } tmp; - d = PyObject_GetAttrString(module, (char *)"__pyx_capi__"); - if (!d) - goto bad; - cobj = PyDict_GetItemString(d, funcname); - if (!cobj) { - PyErr_Format(PyExc_ImportError, - "%.200s does not export expected C function %.200s", - PyModule_GetName(module), funcname); - goto bad; - } -#if PY_VERSION_HEX >= 0x02070000 - if (!PyCapsule_IsValid(cobj, sig)) { - PyErr_Format(PyExc_TypeError, - "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", - PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj)); - goto bad; - } - tmp.p = PyCapsule_GetPointer(cobj, sig); -#else - {const char *desc, *s1, *s2; - desc = (const char *)PyCObject_GetDesc(cobj); - if (!desc) - goto bad; - s1 = desc; s2 = sig; - while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; } - if (*s1 != *s2) { - PyErr_Format(PyExc_TypeError, - "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", - PyModule_GetName(module), funcname, sig, desc); - goto bad; - } - tmp.p = PyCObject_AsVoidPtr(cobj);} -#endif - *f = tmp.fp; - if (!(*f)) - goto bad; - Py_DECREF(d); - return 0; -bad: - Py_XDECREF(d); - return -1; -} -#endif - -/* InitStrings */ - static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { - while (t->p) { - #if PY_MAJOR_VERSION < 3 - if (t->is_unicode) { - *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); - } else if (t->intern) { - *t->p = PyString_InternFromString(t->s); - } else { - *t->p = PyString_FromStringAndSize(t->s, t->n - 1); - } - #else - if (t->is_unicode | t->is_str) { - if (t->intern) { - *t->p = PyUnicode_InternFromString(t->s); - } else if (t->encoding) { - *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL); - } else { - *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1); - } - } else { - *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1); - } - #endif - if (!*t->p) - return -1; - if (PyObject_Hash(*t->p) == -1) - return -1; - ++t; - } - return 0; -} - -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { - return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); -} -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { - Py_ssize_t ignore; - return __Pyx_PyObject_AsStringAndSize(o, &ignore); -} -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -#if !CYTHON_PEP393_ENABLED -static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - char* defenc_c; - PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); - if (!defenc) return NULL; - defenc_c = PyBytes_AS_STRING(defenc); -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - { - char* end = defenc_c + PyBytes_GET_SIZE(defenc); - char* c; - for (c = defenc_c; c < end; c++) { - if ((unsigned char) (*c) >= 128) { - PyUnicode_AsASCIIString(o); - return NULL; - } - } - } -#endif - *length = PyBytes_GET_SIZE(defenc); - return defenc_c; -} -#else -static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - if (likely(PyUnicode_IS_ASCII(o))) { - *length = PyUnicode_GET_LENGTH(o); - return PyUnicode_AsUTF8(o); - } else { - PyUnicode_AsASCIIString(o); - return NULL; - } -#else - return PyUnicode_AsUTF8AndSize(o, length); -#endif -} -#endif -#endif -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT - if ( -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - __Pyx_sys_getdefaultencoding_not_ascii && -#endif - PyUnicode_Check(o)) { - return __Pyx_PyUnicode_AsStringAndSize(o, length); - } else -#endif -#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) - if (PyByteArray_Check(o)) { - *length = PyByteArray_GET_SIZE(o); - return PyByteArray_AS_STRING(o); - } else -#endif - { - char* result; - int r = PyBytes_AsStringAndSize(o, &result, length); - if (unlikely(r < 0)) { - return NULL; - } else { - return result; - } - } -} -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { - int is_true = x == Py_True; - if (is_true | (x == Py_False) | (x == Py_None)) return is_true; - else return PyObject_IsTrue(x); -} -static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { -#if PY_MAJOR_VERSION >= 3 - if (PyLong_Check(result)) { - if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, - "__int__ returned non-int (type %.200s). " - "The ability to return an instance of a strict subclass of int " - "is deprecated, and may be removed in a future version of Python.", - Py_TYPE(result)->tp_name)) { - Py_DECREF(result); - return NULL; - } - return result; - } -#endif - PyErr_Format(PyExc_TypeError, - "__%.4s__ returned non-%.4s (type %.200s)", - type_name, type_name, Py_TYPE(result)->tp_name); - Py_DECREF(result); - return NULL; -} -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { -#if CYTHON_USE_TYPE_SLOTS - PyNumberMethods *m; -#endif - const char *name = NULL; - PyObject *res = NULL; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x) || PyLong_Check(x))) -#else - if (likely(PyLong_Check(x))) -#endif - return __Pyx_NewRef(x); -#if CYTHON_USE_TYPE_SLOTS - m = Py_TYPE(x)->tp_as_number; - #if PY_MAJOR_VERSION < 3 - if (m && m->nb_int) { - name = "int"; - res = m->nb_int(x); - } - else if (m && m->nb_long) { - name = "long"; - res = m->nb_long(x); - } - #else - if (likely(m && m->nb_int)) { - name = "int"; - res = m->nb_int(x); - } - #endif -#else - if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { - res = PyNumber_Int(x); - } -#endif - if (likely(res)) { -#if PY_MAJOR_VERSION < 3 - if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { -#else - if (unlikely(!PyLong_CheckExact(res))) { -#endif - return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); - } - } - else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_TypeError, - "an integer is required"); - } - return res; -} -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { - Py_ssize_t ival; - PyObject *x; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(b))) { - if (sizeof(Py_ssize_t) >= sizeof(long)) - return PyInt_AS_LONG(b); - else - return PyInt_AsSsize_t(x); - } -#endif - if (likely(PyLong_CheckExact(b))) { - #if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)b)->ob_digit; - const Py_ssize_t size = Py_SIZE(b); - if (likely(__Pyx_sst_abs(size) <= 1)) { - ival = likely(size) ? digits[0] : 0; - if (size == -1) ival = -ival; - return ival; - } else { - switch (size) { - case 2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - } - } - #endif - return PyLong_AsSsize_t(b); - } - x = PyNumber_Index(b); - if (!x) return -1; - ival = PyInt_AsSsize_t(x); - Py_DECREF(x); - return ival; -} -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { - return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); -} -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { - return PyInt_FromSize_t(ival); -} - - -#endif /* Py_PYTHON_H */ diff --git a/python/gevent/event.py b/python/gevent/event.py deleted file mode 100644 index 06fe82a..0000000 --- a/python/gevent/event.py +++ /dev/null @@ -1,481 +0,0 @@ -# Copyright (c) 2009-2016 Denis Bilenko, gevent contributors. See LICENSE for details. -# cython: auto_pickle=False,embedsignature=True,always_allow_keywords=False,infer_types=True - -"""Basic synchronization primitives: Event and AsyncResult""" -from __future__ import print_function -import sys - -from gevent._util import _NONE -from gevent._compat import reraise -from gevent._tblib import dump_traceback, load_traceback - -from gevent._hub_local import get_hub_noargs as get_hub - -from gevent.exceptions import InvalidSwitchError -from gevent.timeout import Timeout - - -__all__ = [ - 'Event', - 'AsyncResult', -] - -locals()['getcurrent'] = __import__('greenlet').getcurrent -locals()['greenlet_init'] = lambda: None - - -class _AbstractLinkable(object): - # Encapsulates the standard parts of the linking and notifying protocol - # common to both repeatable events and one-time events (AsyncResult). - - __slots__ = ('_links', 'hub', '_notifier') - - def __init__(self): - # Also previously, AsyncResult maintained the order of notifications, but Event - # did not; this implementation does not. (Event also only call callbacks one - # time (set), but AsyncResult permitted duplicates.) - - # HOWEVER, gevent.queue.Queue does guarantee the order of getters relative - # to putters. Some existing documentation out on the net likes to refer to - # gevent as "deterministic", such that running the same program twice will - # produce results in the same order (so long as I/O isn't involved). This could - # be an argument to maintain order. (One easy way to do that while guaranteeing - # uniqueness would be with a 2.7+ OrderedDict.) - self._links = set() - self.hub = get_hub() - self._notifier = None - - def ready(self): - # Instances must define this - raise NotImplementedError() - - def _check_and_notify(self): - # If this object is ready to be notified, begin the process. - if self.ready(): - if self._links and not self._notifier: - self._notifier = self.hub.loop.run_callback(self._notify_links) - - def rawlink(self, callback): - """ - Register a callback to call when this object is ready. - - *callback* will be called in the :class:`Hub <gevent.hub.Hub>`, so it must not use blocking gevent API. - *callback* will be passed one argument: this instance. - """ - if not callable(callback): - raise TypeError('Expected callable: %r' % (callback, )) - self._links.add(callback) - self._check_and_notify() - - def unlink(self, callback): - """Remove the callback set by :meth:`rawlink`""" - try: - self._links.remove(callback) - except KeyError: - pass - - def _notify_links(self): - # Actually call the notification callbacks. Those callbacks in todo that are - # still in _links are called. This method is careful to avoid iterating - # over self._links, because links could be added or removed while this - # method runs. Only links present when this method begins running - # will be called; if a callback adds a new link, it will not run - # until the next time notify_links is activated - - # We don't need to capture self._links as todo when establishing - # this callback; any links removed between now and then are handled - # by the `if` below; any links added are also grabbed - todo = set(self._links) - for link in todo: - # check that link was not notified yet and was not removed by the client - # We have to do this here, and not as part of the 'for' statement because - # a previous link(self) call might have altered self._links - if link in self._links: - try: - link(self) - except: # pylint:disable=bare-except - self.hub.handle_error((link, self), *sys.exc_info()) - if getattr(link, 'auto_unlink', None): - # This attribute can avoid having to keep a reference to the function - # *in* the function, which is a cycle - self.unlink(link) - - # save a tiny bit of memory by letting _notifier be collected - # bool(self._notifier) would turn to False as soon as we exit this - # method anyway. - del todo - self._notifier = None - - def _wait_core(self, timeout, catch=Timeout): - # The core of the wait implementation, handling - # switching and linking. If *catch* is set to (), - # a timeout that elapses will be allowed to be raised. - # Returns a true value if the wait succeeded without timing out. - switch = getcurrent().switch # pylint:disable=undefined-variable - self.rawlink(switch) - try: - with Timeout._start_new_or_dummy(timeout) as timer: - try: - result = self.hub.switch() - if result is not self: # pragma: no cover - raise InvalidSwitchError('Invalid switch into Event.wait(): %r' % (result, )) - return True - except catch as ex: - if ex is not timer: - raise - # test_set_and_clear and test_timeout in test_threading - # rely on the exact return values, not just truthish-ness - return False - finally: - self.unlink(switch) - - def _wait_return_value(self, waited, wait_success): - # pylint:disable=unused-argument - return None - - def _wait(self, timeout=None): - if self.ready(): - return self._wait_return_value(False, False) - - gotit = self._wait_core(timeout) - return self._wait_return_value(True, gotit) - - -class Event(_AbstractLinkable): - """A synchronization primitive that allows one greenlet to wake up one or more others. - It has the same interface as :class:`threading.Event` but works across greenlets. - - An event object manages an internal flag that can be set to true with the - :meth:`set` method and reset to false with the :meth:`clear` method. The :meth:`wait` method - blocks until the flag is true. - - .. note:: - The order and timing in which waiting greenlets are awakened is not determined. - As an implementation note, in gevent 1.1 and 1.0, waiting greenlets are awakened in a - undetermined order sometime *after* the current greenlet yields to the event loop. Other greenlets - (those not waiting to be awakened) may run between the current greenlet yielding and - the waiting greenlets being awakened. These details may change in the future. - """ - - __slots__ = ('_flag', '__weakref__') - - def __init__(self): - _AbstractLinkable.__init__(self) - self._flag = False - - def __str__(self): - return '<%s %s _links[%s]>' % (self.__class__.__name__, (self._flag and 'set') or 'clear', len(self._links)) - - def is_set(self): - """Return true if and only if the internal flag is true.""" - return self._flag - - def isSet(self): - # makes it a better drop-in replacement for threading.Event - return self._flag - - def ready(self): - # makes it compatible with AsyncResult and Greenlet (for - # example in wait()) - return self._flag - - def set(self): - """ - Set the internal flag to true. - - All greenlets waiting for it to become true are awakened in - some order at some time in the future. Greenlets that call - :meth:`wait` once the flag is true will not block at all - (until :meth:`clear` is called). - """ - self._flag = True - self._check_and_notify() - - def clear(self): - """ - Reset the internal flag to false. - - Subsequently, threads calling :meth:`wait` will block until - :meth:`set` is called to set the internal flag to true again. - """ - self._flag = False - - def _wait_return_value(self, waited, wait_success): - # To avoid the race condition outlined in http://bugs.python.org/issue13502, - # if we had to wait, then we need to return whether or not - # the condition got changed. Otherwise we simply echo - # the current state of the flag (which should be true) - if not waited: - flag = self._flag - assert flag, "if we didn't wait we should already be set" - return flag - - return wait_success - - def wait(self, timeout=None): - """ - Block until the internal flag is true. - - If the internal flag is true on entry, return immediately. Otherwise, - block until another thread (greenlet) calls :meth:`set` to set the flag to true, - or until the optional timeout occurs. - - When the *timeout* argument is present and not ``None``, it should be a - floating point number specifying a timeout for the operation in seconds - (or fractions thereof). - - :return: This method returns true if and only if the internal flag has been set to - true, either before the wait call or after the wait starts, so it will - always return ``True`` except if a timeout is given and the operation - times out. - - .. versionchanged:: 1.1 - The return value represents the flag during the elapsed wait, not - just after it elapses. This solves a race condition if one greenlet - sets and then clears the flag without switching, while other greenlets - are waiting. When the waiters wake up, this will return True; previously, - they would still wake up, but the return value would be False. This is most - noticeable when the *timeout* is present. - """ - return self._wait(timeout) - - def _reset_internal_locks(self): # pragma: no cover - # for compatibility with threading.Event - # Exception AttributeError: AttributeError("'Event' object has no attribute '_reset_internal_locks'",) - # in <module 'threading' from '/usr/lib/python2.7/threading.pyc'> ignored - pass - - -class AsyncResult(_AbstractLinkable): - """A one-time event that stores a value or an exception. - - Like :class:`Event` it wakes up all the waiters when :meth:`set` or :meth:`set_exception` - is called. Waiters may receive the passed value or exception by calling :meth:`get` - instead of :meth:`wait`. An :class:`AsyncResult` instance cannot be reset. - - To pass a value call :meth:`set`. Calls to :meth:`get` (those that are currently blocking as well as - those made in the future) will return the value: - - >>> result = AsyncResult() - >>> result.set(100) - >>> result.get() - 100 - - To pass an exception call :meth:`set_exception`. This will cause :meth:`get` to raise that exception: - - >>> result = AsyncResult() - >>> result.set_exception(RuntimeError('failure')) - >>> result.get() - Traceback (most recent call last): - ... - RuntimeError: failure - - :class:`AsyncResult` implements :meth:`__call__` and thus can be used as :meth:`link` target: - - >>> import gevent - >>> result = AsyncResult() - >>> gevent.spawn(lambda : 1/0).link(result) - >>> try: - ... result.get() - ... except ZeroDivisionError: - ... print('ZeroDivisionError') - ZeroDivisionError - - .. note:: - The order and timing in which waiting greenlets are awakened is not determined. - As an implementation note, in gevent 1.1 and 1.0, waiting greenlets are awakened in a - undetermined order sometime *after* the current greenlet yields to the event loop. Other greenlets - (those not waiting to be awakened) may run between the current greenlet yielding and - the waiting greenlets being awakened. These details may change in the future. - - .. versionchanged:: 1.1 - The exact order in which waiting greenlets are awakened is not the same - as in 1.0. - .. versionchanged:: 1.1 - Callbacks :meth:`linked <rawlink>` to this object are required to be hashable, and duplicates are - merged. - """ - - __slots__ = ('_value', '_exc_info', '_imap_task_index') - - def __init__(self): - _AbstractLinkable.__init__(self) - self._value = _NONE - self._exc_info = () - - @property - def _exception(self): - return self._exc_info[1] if self._exc_info else _NONE - - @property - def value(self): - """ - Holds the value passed to :meth:`set` if :meth:`set` was called. Otherwise, - ``None`` - """ - return self._value if self._value is not _NONE else None - - @property - def exc_info(self): - """ - The three-tuple of exception information if :meth:`set_exception` was called. - """ - if self._exc_info: - return (self._exc_info[0], self._exc_info[1], load_traceback(self._exc_info[2])) - return () - - def __str__(self): - result = '<%s ' % (self.__class__.__name__, ) - if self.value is not None or self._exception is not _NONE: - result += 'value=%r ' % self.value - if self._exception is not None and self._exception is not _NONE: - result += 'exception=%r ' % self._exception - if self._exception is _NONE: - result += 'unset ' - return result + ' _links[%s]>' % len(self._links) - - def ready(self): - """Return true if and only if it holds a value or an exception""" - return self._exc_info or self._value is not _NONE - - def successful(self): - """Return true if and only if it is ready and holds a value""" - return self._value is not _NONE - - @property - def exception(self): - """Holds the exception instance passed to :meth:`set_exception` if :meth:`set_exception` was called. - Otherwise ``None``.""" - if self._exc_info: - return self._exc_info[1] - - def set(self, value=None): - """Store the value and wake up any waiters. - - All greenlets blocking on :meth:`get` or :meth:`wait` are awakened. - Subsequent calls to :meth:`wait` and :meth:`get` will not block at all. - """ - self._value = value - self._check_and_notify() - - def set_exception(self, exception, exc_info=None): - """Store the exception and wake up any waiters. - - All greenlets blocking on :meth:`get` or :meth:`wait` are awakened. - Subsequent calls to :meth:`wait` and :meth:`get` will not block at all. - - :keyword tuple exc_info: If given, a standard three-tuple of type, value, :class:`traceback` - as returned by :func:`sys.exc_info`. This will be used when the exception - is re-raised to propagate the correct traceback. - """ - if exc_info: - self._exc_info = (exc_info[0], exc_info[1], dump_traceback(exc_info[2])) - else: - self._exc_info = (type(exception), exception, dump_traceback(None)) - - self._check_and_notify() - - def _raise_exception(self): - reraise(*self.exc_info) - - def get(self, block=True, timeout=None): - """Return the stored value or raise the exception. - - If this instance already holds a value or an exception, return or raise it immediately. - Otherwise, block until another greenlet calls :meth:`set` or :meth:`set_exception` or - until the optional timeout occurs. - - When the *timeout* argument is present and not ``None``, it should be a - floating point number specifying a timeout for the operation in seconds - (or fractions thereof). If the *timeout* elapses, the *Timeout* exception will - be raised. - - :keyword bool block: If set to ``False`` and this instance is not ready, - immediately raise a :class:`Timeout` exception. - """ - if self._value is not _NONE: - return self._value - if self._exc_info: - return self._raise_exception() - - if not block: - # Not ready and not blocking, so immediately timeout - raise Timeout() - - # Wait, raising a timeout that elapses - self._wait_core(timeout, ()) - - # by definition we are now ready - return self.get(block=False) - - def get_nowait(self): - """ - Return the value or raise the exception without blocking. - - If this object is not yet :meth:`ready <ready>`, raise - :class:`gevent.Timeout` immediately. - """ - return self.get(block=False) - - def _wait_return_value(self, waited, wait_success): - # pylint:disable=unused-argument - # Always return the value. Since this is a one-shot event, - # no race condition should reset it. - return self.value - - def wait(self, timeout=None): - """Block until the instance is ready. - - If this instance already holds a value, it is returned immediately. If this - instance already holds an exception, ``None`` is returned immediately. - - Otherwise, block until another greenlet calls :meth:`set` or :meth:`set_exception` - (at which point either the value or ``None`` will be returned, respectively), - or until the optional timeout expires (at which point ``None`` will also be - returned). - - When the *timeout* argument is present and not ``None``, it should be a - floating point number specifying a timeout for the operation in seconds - (or fractions thereof). - - .. note:: If a timeout is given and expires, ``None`` will be returned - (no timeout exception will be raised). - - """ - return self._wait(timeout) - - # link protocol - def __call__(self, source): - if source.successful(): - self.set(source.value) - else: - self.set_exception(source.exception, getattr(source, 'exc_info', None)) - - # Methods to make us more like concurrent.futures.Future - - def result(self, timeout=None): - return self.get(timeout=timeout) - - set_result = set - - def done(self): - return self.ready() - - # we don't support cancelling - - def cancel(self): - return False - - def cancelled(self): - return False - - # exception is a method, we use it as a property - -def _init(): - greenlet_init() # pylint:disable=undefined-variable - -_init() - - -from gevent._util import import_c_accel -import_c_accel(globals(), 'gevent._event') diff --git a/python/gevent/events.py b/python/gevent/events.py deleted file mode 100644 index 12c02ec..0000000 --- a/python/gevent/events.py +++ /dev/null @@ -1,480 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2018 gevent. See LICENSE for details. -""" -Publish/subscribe event infrastructure. - -When certain "interesting" things happen during the lifetime of the -process, gevent will "publish" an event (an object). That event is -delivered to interested "subscribers" (functions that take one -parameter, the event object). - -Higher level frameworks may take this foundation and build richer -models on it. - -If :mod:`zope.event` is installed, then it will be used to provide the -functionality of `notify` and `subscribers`. See -:mod:`zope.event.classhandler` for a simple class-based approach to -subscribing to a filtered list of events, and see `zope.component -<https://zopecomponent.readthedocs.io/en/latest/event.html>`_ for a -much higher-level, flexible system. If you are using one of these systems, -you generally will not want to directly modify `subscribers`. - -.. versionadded:: 1.3b1 -""" -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function - - -__all__ = [ - 'subscribers', - - # monitor thread - 'IEventLoopBlocked', - 'EventLoopBlocked', - 'IMemoryUsageThresholdExceeded', - 'MemoryUsageThresholdExceeded', - 'IMemoryUsageUnderThreshold', - 'MemoryUsageUnderThreshold', - - # Hub - 'IPeriodicMonitorThread', - 'IPeriodicMonitorThreadStartedEvent', - 'PeriodicMonitorThreadStartedEvent', - - # monkey - 'IGeventPatchEvent', - 'GeventPatchEvent', - 'IGeventWillPatchEvent', - 'DoNotPatch', - 'GeventWillPatchEvent', - 'IGeventDidPatchEvent', - 'IGeventWillPatchModuleEvent', - 'GeventWillPatchModuleEvent', - 'IGeventDidPatchModuleEvent', - 'GeventDidPatchModuleEvent', - 'IGeventWillPatchAllEvent', - 'GeventWillPatchAllEvent', - 'IGeventDidPatchBuiltinModulesEvent', - 'GeventDidPatchBuiltinModulesEvent', - 'IGeventDidPatchAllEvent', - 'GeventDidPatchAllEvent', -] - -# pylint:disable=no-self-argument - -try: - from zope.event import subscribers - from zope.event import notify -except ImportError: - #: Applications may register for notification of events by appending a - #: callable to the ``subscribers`` list. - #: - #: Each subscriber takes a single argument, which is the event object - #: being published. - #: - #: Exceptions raised by subscribers will be propagated *without* running - #: any remaining subscribers. - subscribers = [] - - def notify(event): - """ - Notify all subscribers of ``event``. - """ - for subscriber in subscribers: - subscriber(event) - -notify = notify # export -try: - # pkg_resources is technically optional, we don't - # list a hard dependency on it. - __import__('pkg_resources') -except ImportError: - notify_and_call_entry_points = notify -else: - from pkg_resources import iter_entry_points - import platform - try: - # Cache the platform info. pkg_resources uses - # platform.machine() for environment markers, and - # platform.machine() wants to call os.popen('uname'), which is - # broken on Py2 when the gevent child signal handler is - # installed. (see test__monkey_sigchild_2.py) - platform.uname() - except: # pylint:disable=bare-except - pass - finally: - del platform - - def notify_and_call_entry_points(event): - notify(event) - for plugin in iter_entry_points(event.ENTRY_POINT_NAME): - subscriber = plugin.load() - subscriber(event) - -from gevent._util import Interface -from gevent._util import implementer -from gevent._util import Attribute - - -class IPeriodicMonitorThread(Interface): - """ - The contract for the periodic monitoring thread that is started - by the hub. - """ - - def add_monitoring_function(function, period): - """ - Schedule the *function* to be called approximately every *period* fractional seconds. - - The *function* receives one argument, the hub being monitored. It is called - in the monitoring thread, *not* the hub thread. It **must not** attempt to - use the gevent asynchronous API. - - If the *function* is already a monitoring function, then its *period* - will be updated for future runs. - - If the *period* is ``None``, then the function will be removed. - - A *period* less than or equal to zero is not allowed. - """ - -class IPeriodicMonitorThreadStartedEvent(Interface): - """ - The event emitted when a hub starts a periodic monitoring thread. - - You can use this event to add additional monitoring functions. - """ - - monitor = Attribute("The instance of `IPeriodicMonitorThread` that was started.") - -class PeriodicMonitorThreadStartedEvent(object): - """ - The implementation of :class:`IPeriodicMonitorThreadStartedEvent`. - """ - - #: The name of the setuptools entry point that is called when this - #: event is emitted. - ENTRY_POINT_NAME = 'gevent.plugins.hub.periodic_monitor_thread_started' - - def __init__(self, monitor): - self.monitor = monitor - -class IEventLoopBlocked(Interface): - """ - The event emitted when the event loop is blocked. - - This event is emitted in the monitor thread. - """ - - greenlet = Attribute("The greenlet that appeared to be blocking the loop.") - blocking_time = Attribute("The approximate time in seconds the loop has been blocked.") - info = Attribute("A sequence of string lines providing extra info.") - -@implementer(IEventLoopBlocked) -class EventLoopBlocked(object): - """ - The event emitted when the event loop is blocked. - - Implements `IEventLoopBlocked`. - """ - - def __init__(self, greenlet, blocking_time, info): - self.greenlet = greenlet - self.blocking_time = blocking_time - self.info = info - -class IMemoryUsageThresholdExceeded(Interface): - """ - The event emitted when the memory usage threshold is exceeded. - - This event is emitted only while memory continues to grow - above the threshold. Only if the condition or stabilized is corrected (memory - usage drops) will the event be emitted in the future. - - This event is emitted in the monitor thread. - """ - - mem_usage = Attribute("The current process memory usage, in bytes.") - max_allowed = Attribute("The maximum allowed memory usage, in bytes.") - memory_info = Attribute("The tuple of memory usage stats return by psutil.") - -class _AbstractMemoryEvent(object): - - def __init__(self, mem_usage, max_allowed, memory_info): - self.mem_usage = mem_usage - self.max_allowed = max_allowed - self.memory_info = memory_info - - def __repr__(self): - return "<%s used=%d max=%d details=%r>" % ( - self.__class__.__name__, - self.mem_usage, - self.max_allowed, - self.memory_info, - ) - -@implementer(IMemoryUsageThresholdExceeded) -class MemoryUsageThresholdExceeded(_AbstractMemoryEvent): - """ - Implementation of `IMemoryUsageThresholdExceeded`. - """ - - -class IMemoryUsageUnderThreshold(Interface): - """ - The event emitted when the memory usage drops below the - threshold after having previously been above it. - - This event is emitted only the first time memory usage is detected - to be below the threshold after having previously been above it. - If memory usage climbs again, a `IMemoryUsageThresholdExceeded` - event will be broadcast, and then this event could be broadcast again. - - This event is emitted in the monitor thread. - """ - - mem_usage = Attribute("The current process memory usage, in bytes.") - max_allowed = Attribute("The maximum allowed memory usage, in bytes.") - max_memory_usage = Attribute("The memory usage that caused the previous " - "IMemoryUsageThresholdExceeded event.") - memory_info = Attribute("The tuple of memory usage stats return by psutil.") - - -@implementer(IMemoryUsageUnderThreshold) -class MemoryUsageUnderThreshold(_AbstractMemoryEvent): - """ - Implementation of `IMemoryUsageUnderThreshold`. - """ - - def __init__(self, mem_usage, max_allowed, memory_info, max_usage): - super(MemoryUsageUnderThreshold, self).__init__(mem_usage, max_allowed, memory_info) - self.max_memory_usage = max_usage - - -class IGeventPatchEvent(Interface): - """ - The root for all monkey-patch events gevent emits. - """ - - source = Attribute("The source object containing the patches.") - target = Attribute("The destination object to be patched.") - -@implementer(IGeventPatchEvent) -class GeventPatchEvent(object): - """ - Implementation of `IGeventPatchEvent`. - """ - - def __init__(self, source, target): - self.source = source - self.target = target - - def __repr__(self): - return '<%s source=%r target=%r at %x>' % (self.__class__.__name__, - self.source, - self.target, - id(self)) - -class IGeventWillPatchEvent(IGeventPatchEvent): - """ - An event emitted *before* gevent monkey-patches something. - - If a subscriber raises `DoNotPatch`, then patching this particular - item will not take place. - """ - - -class DoNotPatch(BaseException): - """ - Subscribers to will-patch events can raise instances - of this class to tell gevent not to patch that particular item. - """ - - -@implementer(IGeventWillPatchEvent) -class GeventWillPatchEvent(GeventPatchEvent): - """ - Implementation of `IGeventWillPatchEvent`. - """ - -class IGeventDidPatchEvent(IGeventPatchEvent): - """ - An event emitted *after* gevent has patched something. - """ - -@implementer(IGeventDidPatchEvent) -class GeventDidPatchEvent(GeventPatchEvent): - """ - Implementation of `IGeventDidPatchEvent`. - """ - -class IGeventWillPatchModuleEvent(IGeventWillPatchEvent): - """ - An event emitted *before* gevent begins patching a specific module. - - Both *source* and *target* attributes are module objects. - """ - - module_name = Attribute("The name of the module being patched. " - "This is the same as ``target.__name__``.") - - target_item_names = Attribute("The list of item names to patch. " - "This can be modified in place with caution.") - -@implementer(IGeventWillPatchModuleEvent) -class GeventWillPatchModuleEvent(GeventWillPatchEvent): - """ - Implementation of `IGeventWillPatchModuleEvent`. - """ - - #: The name of the setuptools entry point that is called when this - #: event is emitted. - ENTRY_POINT_NAME = 'gevent.plugins.monkey.will_patch_module' - - def __init__(self, module_name, source, target, items): - super(GeventWillPatchModuleEvent, self).__init__(source, target) - self.module_name = module_name - self.target_item_names = items - - -class IGeventDidPatchModuleEvent(IGeventDidPatchEvent): - """ - An event emitted *after* gevent has completed patching a specific - module. - """ - - module_name = Attribute("The name of the module being patched. " - "This is the same as ``target.__name__``.") - - -@implementer(IGeventDidPatchModuleEvent) -class GeventDidPatchModuleEvent(GeventDidPatchEvent): - """ - Implementation of `IGeventDidPatchModuleEvent`. - """ - - #: The name of the setuptools entry point that is called when this - #: event is emitted. - ENTRY_POINT_NAME = 'gevent.plugins.monkey.did_patch_module' - - def __init__(self, module_name, source, target): - super(GeventDidPatchModuleEvent, self).__init__(source, target) - self.module_name = module_name - -# TODO: Maybe it would be useful for the the module patch events -# to have an attribute telling if they're being done during patch_all? - -class IGeventWillPatchAllEvent(IGeventWillPatchEvent): - """ - An event emitted *before* gevent begins patching the system. - - Following this event will be a series of - `IGeventWillPatchModuleEvent` and `IGeventDidPatchModuleEvent` for - each patched module. - - Once the gevent builtin modules have been processed, - `IGeventDidPatchBuiltinModulesEvent` will be emitted. Processing - this event is an ideal time for third-party modules to be imported - and patched (which may trigger its own will/did patch module - events). - - Finally, a `IGeventDidPatchAllEvent` will be sent. - - If a subscriber to this event raises `DoNotPatch`, no patching - will be done. - - The *source* and *target* attributes have undefined values. - """ - - patch_all_arguments = Attribute( - "A dictionary of all the arguments to `gevent.monkey.patch_all`. " - "This dictionary should not be modified. " - ) - - patch_all_kwargs = Attribute( - "A dictionary of the extra arguments to `gevent.monkey.patch_all`. " - "This dictionary should not be modified. " - ) - - def will_patch_module(module_name): - """ - Return whether the module named *module_name* will be patched. - """ - -class _PatchAllMixin(object): - def __init__(self, patch_all_arguments, patch_all_kwargs): - super(_PatchAllMixin, self).__init__(None, None) - self._patch_all_arguments = patch_all_arguments - self._patch_all_kwargs = patch_all_kwargs - - @property - def patch_all_arguments(self): - return self._patch_all_arguments.copy() - - @property - def patch_all_kwargs(self): - return self._patch_all_kwargs.copy() - - def __repr__(self): - return '<%s %r at %x>' % (self.__class__.__name__, - self._patch_all_arguments, - id(self)) - -@implementer(IGeventWillPatchAllEvent) -class GeventWillPatchAllEvent(_PatchAllMixin, GeventWillPatchEvent): - """ - Implementation of `IGeventWillPatchAllEvent`. - """ - - #: The name of the setuptools entry point that is called when this - #: event is emitted. - ENTRY_POINT_NAME = 'gevent.plugins.monkey.will_patch_all' - - def will_patch_module(self, module_name): - return self.patch_all_arguments.get(module_name) - -class IGeventDidPatchBuiltinModulesEvent(IGeventDidPatchEvent): - """ - Event emitted *after* the builtin modules have been patched. - - The values of the *source* and *target* attributes are undefined. - """ - - patch_all_arguments = Attribute( - "A dictionary of all the arguments to `gevent.monkey.patch_all`. " - "This dictionary should not be modified. " - ) - - patch_all_kwargs = Attribute( - "A dictionary of the extra arguments to `gevent.monkey.patch_all`. " - "This dictionary should not be modified. " - ) - -@implementer(IGeventDidPatchBuiltinModulesEvent) -class GeventDidPatchBuiltinModulesEvent(_PatchAllMixin, GeventDidPatchEvent): - """ - Implementation of `IGeventDidPatchBuiltinModulesEvent`. - """ - - #: The name of the setuptools entry point that is called when this - #: event is emitted. - ENTRY_POINT_NAME = 'gevent.plugins.monkey.did_patch_builtins' - -class IGeventDidPatchAllEvent(IGeventDidPatchEvent): - """ - Event emitted after gevent has patched all modules, both builtin - and those provided by plugins/subscribers. - - The values of the *source* and *target* attributes are undefined. - """ - -@implementer(IGeventDidPatchAllEvent) -class GeventDidPatchAllEvent(_PatchAllMixin, GeventDidPatchEvent): - """ - Implementation of `IGeventDidPatchAllEvent`. - """ - - #: The name of the setuptools entry point that is called when this - #: event is emitted. - ENTRY_POINT_NAME = 'gevent.plugins.monkey.did_patch_all' diff --git a/python/gevent/exceptions.py b/python/gevent/exceptions.py deleted file mode 100644 index 2c779ce..0000000 --- a/python/gevent/exceptions.py +++ /dev/null @@ -1,79 +0,0 @@ -# -*- coding: utf-8 -*- -# copyright 2018 gevent -""" -Exceptions. - -.. versionadded:: 1.3b1 - -""" -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function - - -__all__ = [ - 'LoopExit', -] - - -class LoopExit(Exception): - """ - Exception thrown when the hub finishes running (`gevent.hub.Hub.run` - would return). - - In a normal application, this is never thrown or caught - explicitly. The internal implementation of functions like - :meth:`gevent.hub.Hub.join` and :func:`gevent.joinall` may catch it, but user code - generally should not. - - .. caution:: - Errors in application programming can also lead to this exception being - raised. Some examples include (but are not limited too): - - - greenlets deadlocking on a lock; - - using a socket or other gevent object with native thread - affinity from a different thread - - """ - - def __repr__(self): - # pylint:disable=unsubscriptable-object - if len(self.args) == 3: # From the hub - import pprint - return "%s\n\tHub: %s\n\tHandles:\n%s" % ( - self.args[0], self.args[1], - pprint.pformat(self.args[2]) - ) - return Exception.__repr__(self) - - def __str__(self): - return repr(self) - -class BlockingSwitchOutError(AssertionError): - """ - Raised when a gevent synchronous function is called from a - low-level event loop callback. - - This is usually a programming error. - """ - - -class InvalidSwitchError(AssertionError): - """ - Raised when the event loop returns control to a greenlet in an - unexpected way. - - This is usually a bug in gevent, greenlet, or the event loop. - """ - -class ConcurrentObjectUseError(AssertionError): - """ - Raised when an object is used (waited on) by two greenlets - independently, meaning the object was entered into a blocking - state by one greenlet and then another while still blocking in the - first one. - - This is usually a programming error. - - .. seealso:: `gevent.socket.wait` - """ diff --git a/python/gevent/fileobject.py b/python/gevent/fileobject.py deleted file mode 100644 index 598f882..0000000 --- a/python/gevent/fileobject.py +++ /dev/null @@ -1,61 +0,0 @@ -""" -Wrappers to make file-like objects cooperative. - -.. class:: FileObject - - The main entry point to the file-like gevent-compatible behaviour. It will be defined - to be the best available implementation. - -There are two main implementations of ``FileObject``. On all systems, -there is :class:`FileObjectThread` which uses the built-in native -threadpool to avoid blocking the entire interpreter. On UNIX systems -(those that support the :mod:`fcntl` module), there is also -:class:`FileObjectPosix` which uses native non-blocking semantics. - -A third class, :class:`FileObjectBlock`, is simply a wrapper that executes everything -synchronously (and so is not gevent-compatible). It is provided for testing and debugging -purposes. - -Configuration -============= - -You may change the default value for ``FileObject`` using the -``GEVENT_FILE`` environment variable. Set it to ``posix``, ``thread``, -or ``block`` to choose from :class:`FileObjectPosix`, -:class:`FileObjectThread` and :class:`FileObjectBlock`, respectively. -You may also set it to the fully qualified class name of another -object that implements the file interface to use one of your own -objects. - -.. note:: The environment variable must be set at the time this module - is first imported. - -Classes -======= -""" -from __future__ import absolute_import - -from gevent._config import config - -__all__ = [ - 'FileObjectPosix', - 'FileObjectThread', - 'FileObjectBlock', - 'FileObject', -] - -try: - from fcntl import fcntl -except ImportError: - __all__.remove("FileObjectPosix") -else: - del fcntl - from gevent._fileobjectposix import FileObjectPosix - -from gevent._fileobjectcommon import FileObjectThread -from gevent._fileobjectcommon import FileObjectBlock - - -# None of the possible objects can live in this module because -# we would get an import cycle and the config couldn't be set from code. -FileObject = config.fileobject diff --git a/python/gevent/greenlet.c b/python/gevent/greenlet.c deleted file mode 100644 index eb4280a..0000000 --- a/python/gevent/greenlet.c +++ /dev/null @@ -1,24050 +0,0 @@ -/* Generated by Cython 0.28.5 */ - -/* BEGIN: Cython Metadata -{ - "distutils": { - "depends": [ - "src/gevent/__ident.pxd", - "src/gevent/_greenlet.pxd", - "src/gevent/_ident.py", - "src\\gevent\\__ident.pxd", - "src\\gevent\\_greenlet.pxd", - "src\\gevent\\_ident.py" - ], - "include_dirs": [ - "C:\\Python36\\Include", - "deps" - ], - "name": "gevent._greenlet", - "sources": [ - "src/gevent/greenlet.py" - ] - }, - "module_name": "gevent._greenlet" -} -END: Cython Metadata */ - -#define PY_SSIZE_T_CLEAN -#include "Python.h" -#ifndef Py_PYTHON_H - #error Python headers needed to compile C extensions, please install development version of Python. -#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) - #error Cython requires Python 2.6+ or Python 3.3+. -#else -#define CYTHON_ABI "0_28_5" -#define CYTHON_FUTURE_DIVISION 1 -#include <stddef.h> -#ifndef offsetof - #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) -#endif -#if !defined(WIN32) && !defined(MS_WINDOWS) - #ifndef __stdcall - #define __stdcall - #endif - #ifndef __cdecl - #define __cdecl - #endif - #ifndef __fastcall - #define __fastcall - #endif -#endif -#ifndef DL_IMPORT - #define DL_IMPORT(t) t -#endif -#ifndef DL_EXPORT - #define DL_EXPORT(t) t -#endif -#define __PYX_COMMA , -#ifndef HAVE_LONG_LONG - #if PY_VERSION_HEX >= 0x02070000 - #define HAVE_LONG_LONG - #endif -#endif -#ifndef PY_LONG_LONG - #define PY_LONG_LONG LONG_LONG -#endif -#ifndef Py_HUGE_VAL - #define Py_HUGE_VAL HUGE_VAL -#endif -#ifdef PYPY_VERSION - #define CYTHON_COMPILING_IN_PYPY 1 - #define CYTHON_COMPILING_IN_PYSTON 0 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #undef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 0 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #if PY_VERSION_HEX < 0x03050000 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #undef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #undef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 1 - #undef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 0 - #undef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 0 - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 -#elif defined(PYSTON_VERSION) - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_PYSTON 1 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 -#else - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_PYSTON 0 - #define CYTHON_COMPILING_IN_CPYTHON 1 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #if PY_VERSION_HEX < 0x02070000 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #elif !defined(CYTHON_USE_PYTYPE_LOOKUP) - #define CYTHON_USE_PYTYPE_LOOKUP 1 - #endif - #if PY_MAJOR_VERSION < 3 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #if PY_VERSION_HEX < 0x02070000 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #elif !defined(CYTHON_USE_PYLONG_INTERNALS) - #define CYTHON_USE_PYLONG_INTERNALS 1 - #endif - #ifndef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 1 - #endif - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #if PY_VERSION_HEX < 0x030300F0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #elif !defined(CYTHON_USE_UNICODE_WRITER) - #define CYTHON_USE_UNICODE_WRITER 1 - #endif - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #ifndef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 1 - #endif - #ifndef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 1 - #endif - #ifndef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT (0 && PY_VERSION_HEX >= 0x03050000) - #endif - #ifndef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1) - #endif -#endif -#if !defined(CYTHON_FAST_PYCCALL) -#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) -#endif -#if CYTHON_USE_PYLONG_INTERNALS - #include "longintrepr.h" - #undef SHIFT - #undef BASE - #undef MASK -#endif -#ifndef __has_attribute - #define __has_attribute(x) 0 -#endif -#ifndef __has_cpp_attribute - #define __has_cpp_attribute(x) 0 -#endif -#ifndef CYTHON_RESTRICT - #if defined(__GNUC__) - #define CYTHON_RESTRICT __restrict__ - #elif defined(_MSC_VER) && _MSC_VER >= 1400 - #define CYTHON_RESTRICT __restrict - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_RESTRICT restrict - #else - #define CYTHON_RESTRICT - #endif -#endif -#ifndef CYTHON_UNUSED -# if defined(__GNUC__) -# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -#endif -#ifndef CYTHON_MAYBE_UNUSED_VAR -# if defined(__cplusplus) - template<class T> void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } -# else -# define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) -# endif -#endif -#ifndef CYTHON_NCP_UNUSED -# if CYTHON_COMPILING_IN_CPYTHON -# define CYTHON_NCP_UNUSED -# else -# define CYTHON_NCP_UNUSED CYTHON_UNUSED -# endif -#endif -#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) -#ifdef _MSC_VER - #ifndef _MSC_STDINT_H_ - #if _MSC_VER < 1300 - typedef unsigned char uint8_t; - typedef unsigned int uint32_t; - #else - typedef unsigned __int8 uint8_t; - typedef unsigned __int32 uint32_t; - #endif - #endif -#else - #include <stdint.h> -#endif -#ifndef CYTHON_FALLTHROUGH - #if defined(__cplusplus) && __cplusplus >= 201103L - #if __has_cpp_attribute(fallthrough) - #define CYTHON_FALLTHROUGH [[fallthrough]] - #elif __has_cpp_attribute(clang::fallthrough) - #define CYTHON_FALLTHROUGH [[clang::fallthrough]] - #elif __has_cpp_attribute(gnu::fallthrough) - #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] - #endif - #endif - #ifndef CYTHON_FALLTHROUGH - #if __has_attribute(fallthrough) - #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) - #else - #define CYTHON_FALLTHROUGH - #endif - #endif - #if defined(__clang__ ) && defined(__apple_build_version__) - #if __apple_build_version__ < 7000000 - #undef CYTHON_FALLTHROUGH - #define CYTHON_FALLTHROUGH - #endif - #endif -#endif - -#ifndef CYTHON_INLINE - #if defined(__clang__) - #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) - #elif defined(__GNUC__) - #define CYTHON_INLINE __inline__ - #elif defined(_MSC_VER) - #define CYTHON_INLINE __inline - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_INLINE inline - #else - #define CYTHON_INLINE - #endif -#endif - -#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) - #define Py_OptimizeFlag 0 -#endif -#define __PYX_BUILD_PY_SSIZE_T "n" -#define CYTHON_FORMAT_SSIZE_T "z" -#if PY_MAJOR_VERSION < 3 - #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) - #define __Pyx_DefaultClassType PyClass_Type -#else - #define __Pyx_BUILTIN_MODULE_NAME "builtins" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) - #define __Pyx_DefaultClassType PyType_Type -#endif -#ifndef Py_TPFLAGS_CHECKTYPES - #define Py_TPFLAGS_CHECKTYPES 0 -#endif -#ifndef Py_TPFLAGS_HAVE_INDEX - #define Py_TPFLAGS_HAVE_INDEX 0 -#endif -#ifndef Py_TPFLAGS_HAVE_NEWBUFFER - #define Py_TPFLAGS_HAVE_NEWBUFFER 0 -#endif -#ifndef Py_TPFLAGS_HAVE_FINALIZE - #define Py_TPFLAGS_HAVE_FINALIZE 0 -#endif -#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) - #ifndef METH_FASTCALL - #define METH_FASTCALL 0x80 - #endif - typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); - typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, - Py_ssize_t nargs, PyObject *kwnames); -#else - #define __Pyx_PyCFunctionFast _PyCFunctionFast - #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords -#endif -#if CYTHON_FAST_PYCCALL -#define __Pyx_PyFastCFunction_Check(func)\ - ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))))) -#else -#define __Pyx_PyFastCFunction_Check(func) 0 -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) - #define PyObject_Malloc(s) PyMem_Malloc(s) - #define PyObject_Free(p) PyMem_Free(p) - #define PyObject_Realloc(p) PyMem_Realloc(p) -#endif -#if CYTHON_COMPILING_IN_PYSTON - #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) -#else - #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) -#endif -#if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000 - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#elif PY_VERSION_HEX >= 0x03060000 - #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() -#elif PY_VERSION_HEX >= 0x03000000 - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#else - #define __Pyx_PyThreadState_Current _PyThreadState_Current -#endif -#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) -#include "pythread.h" -#define Py_tss_NEEDS_INIT 0 -typedef int Py_tss_t; -static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { - *key = PyThread_create_key(); - return 0; // PyThread_create_key reports success always -} -static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { - Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); - *key = Py_tss_NEEDS_INIT; - return key; -} -static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { - PyObject_Free(key); -} -static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { - return *key != Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { - PyThread_delete_key(*key); - *key = Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { - return PyThread_set_key_value(*key, value); -} -static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { - return PyThread_get_key_value(*key); -} -#endif // TSS (Thread Specific Storage) API -#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) -#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) -#else -#define __Pyx_PyDict_NewPresized(n) PyDict_New() -#endif -#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION - #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) -#else - #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) -#endif -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS -#define __Pyx_PyDict_GetItemStr(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) -#else -#define __Pyx_PyDict_GetItemStr(dict, name) PyDict_GetItem(dict, name) -#endif -#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) - #define CYTHON_PEP393_ENABLED 1 - #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ - 0 : _PyUnicode_Ready((PyObject *)(op))) - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) - #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) - #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) - #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) -#else - #define CYTHON_PEP393_ENABLED 0 - #define PyUnicode_1BYTE_KIND 1 - #define PyUnicode_2BYTE_KIND 2 - #define PyUnicode_4BYTE_KIND 4 - #define __Pyx_PyUnicode_READY(op) (0) - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) - #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) - #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) - #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) -#endif -#if CYTHON_COMPILING_IN_PYPY - #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) -#else - #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ - PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) - #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) - #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) - #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) -#endif -#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) -#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) -#else - #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) -#endif -#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) - #define PyObject_ASCII(o) PyObject_Repr(o) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBaseString_Type PyUnicode_Type - #define PyStringObject PyUnicodeObject - #define PyString_Type PyUnicode_Type - #define PyString_Check PyUnicode_Check - #define PyString_CheckExact PyUnicode_CheckExact - #define PyObject_Unicode PyObject_Str -#endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) - #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) -#else - #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) - #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) -#endif -#ifndef PySet_CheckExact - #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) -#endif -#if CYTHON_ASSUME_SAFE_MACROS - #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) -#else - #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyIntObject PyLongObject - #define PyInt_Type PyLong_Type - #define PyInt_Check(op) PyLong_Check(op) - #define PyInt_CheckExact(op) PyLong_CheckExact(op) - #define PyInt_FromString PyLong_FromString - #define PyInt_FromUnicode PyLong_FromUnicode - #define PyInt_FromLong PyLong_FromLong - #define PyInt_FromSize_t PyLong_FromSize_t - #define PyInt_FromSsize_t PyLong_FromSsize_t - #define PyInt_AsLong PyLong_AsLong - #define PyInt_AS_LONG PyLong_AS_LONG - #define PyInt_AsSsize_t PyLong_AsSsize_t - #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask - #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask - #define PyNumber_Int PyNumber_Long -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBoolObject PyLongObject -#endif -#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY - #ifndef PyUnicode_InternFromString - #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) - #endif -#endif -#if PY_VERSION_HEX < 0x030200A4 - typedef long Py_hash_t; - #define __Pyx_PyInt_FromHash_t PyInt_FromLong - #define __Pyx_PyInt_AsHash_t PyInt_AsLong -#else - #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t - #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t -#endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : (Py_INCREF(func), func)) -#else - #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) -#endif -#if CYTHON_USE_ASYNC_SLOTS - #if PY_VERSION_HEX >= 0x030500B1 - #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods - #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) - #else - #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) - #endif -#else - #define __Pyx_PyType_AsAsync(obj) NULL -#endif -#ifndef __Pyx_PyAsyncMethodsStruct - typedef struct { - unaryfunc am_await; - unaryfunc am_aiter; - unaryfunc am_anext; - } __Pyx_PyAsyncMethodsStruct; -#endif - -#if defined(WIN32) || defined(MS_WINDOWS) - #define _USE_MATH_DEFINES -#endif -#include <math.h> -#ifdef NAN -#define __PYX_NAN() ((float) NAN) -#else -static CYTHON_INLINE float __PYX_NAN() { - float value; - memset(&value, 0xFF, sizeof(value)); - return value; -} -#endif -#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) -#define __Pyx_truncl trunc -#else -#define __Pyx_truncl truncl -#endif - - -#define __PYX_ERR(f_index, lineno, Ln_error) \ -{ \ - __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \ -} - -#ifndef __PYX_EXTERN_C - #ifdef __cplusplus - #define __PYX_EXTERN_C extern "C" - #else - #define __PYX_EXTERN_C extern - #endif -#endif - -#define __PYX_HAVE__gevent___greenlet -#define __PYX_HAVE_API__gevent___greenlet -/* Early includes */ -#include "greenlet/greenlet.h" -#include "frameobject.h" -#ifdef _OPENMP -#include <omp.h> -#endif /* _OPENMP */ - -#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) -#define CYTHON_WITHOUT_ASSERTIONS -#endif - -typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; - const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; - -#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 -#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0 -#define __PYX_DEFAULT_STRING_ENCODING "" -#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString -#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#define __Pyx_uchar_cast(c) ((unsigned char)c) -#define __Pyx_long_cast(x) ((long)x) -#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ - (sizeof(type) < sizeof(Py_ssize_t)) ||\ - (sizeof(type) > sizeof(Py_ssize_t) &&\ - likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX) &&\ - (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ - v == (type)PY_SSIZE_T_MIN))) ||\ - (sizeof(type) == sizeof(Py_ssize_t) &&\ - (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX))) ) -#if defined (__cplusplus) && __cplusplus >= 201103L - #include <cstdlib> - #define __Pyx_sst_abs(value) std::abs(value) -#elif SIZEOF_INT >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) abs(value) -#elif SIZEOF_LONG >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) labs(value) -#elif defined (_MSC_VER) - #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) -#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define __Pyx_sst_abs(value) llabs(value) -#elif defined (__GNUC__) - #define __Pyx_sst_abs(value) __builtin_llabs(value) -#else - #define __Pyx_sst_abs(value) ((value<0) ? -value : value) -#endif -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); -#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) -#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) -#define __Pyx_PyBytes_FromString PyBytes_FromString -#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); -#if PY_MAJOR_VERSION < 3 - #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#else - #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize -#endif -#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) -#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) -#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) -#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) -#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) -static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { - const Py_UNICODE *u_end = u; - while (*u_end++) ; - return (size_t)(u_end - u - 1); -} -#define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) -#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode -#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode -#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) -#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); -#define __Pyx_PySequence_Tuple(obj)\ - (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); -#if CYTHON_ASSUME_SAFE_MACROS -#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) -#else -#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) -#endif -#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) -#if PY_MAJOR_VERSION >= 3 -#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) -#else -#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) -#endif -#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x)) -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII -static int __Pyx_sys_getdefaultencoding_not_ascii; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - PyObject* ascii_chars_u = NULL; - PyObject* ascii_chars_b = NULL; - const char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - if (strcmp(default_encoding_c, "ascii") == 0) { - __Pyx_sys_getdefaultencoding_not_ascii = 0; - } else { - char ascii_chars[128]; - int c; - for (c = 0; c < 128; c++) { - ascii_chars[c] = c; - } - __Pyx_sys_getdefaultencoding_not_ascii = 1; - ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); - if (!ascii_chars_u) goto bad; - ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); - if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { - PyErr_Format( - PyExc_ValueError, - "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", - default_encoding_c); - goto bad; - } - Py_DECREF(ascii_chars_u); - Py_DECREF(ascii_chars_b); - } - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - Py_XDECREF(ascii_chars_u); - Py_XDECREF(ascii_chars_b); - return -1; -} -#endif -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) -#else -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -static char* __PYX_DEFAULT_STRING_ENCODING; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c)); - if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; - strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - return -1; -} -#endif -#endif - - -/* Test for GCC > 2.95 */ -#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) - #define likely(x) __builtin_expect(!!(x), 1) - #define unlikely(x) __builtin_expect(!!(x), 0) -#else /* !__GNUC__ or GCC < 2.95 */ - #define likely(x) (x) - #define unlikely(x) (x) -#endif /* __GNUC__ */ -static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } - -static PyObject *__pyx_m = NULL; -static PyObject *__pyx_d; -static PyObject *__pyx_b; -static PyObject *__pyx_cython_runtime = NULL; -static PyObject *__pyx_empty_tuple; -static PyObject *__pyx_empty_bytes; -static PyObject *__pyx_empty_unicode; -static int __pyx_lineno; -static int __pyx_clineno = 0; -static const char * __pyx_cfilenm= __FILE__; -static const char *__pyx_filename; - - -static const char *__pyx_f[] = { - "src\\gevent\\greenlet.py", - "src\\gevent\\_greenlet.pxd", - "src\\gevent\\__greenlet_primitives.pxd", - "src\\gevent\\__waiter.pxd", - "stringsource", - "src\\gevent\\__ident.pxd", -}; - -/*--- Type declarations ---*/ -struct __pyx_obj_6gevent_7__ident_ValuedWeakRef; -struct __pyx_obj_6gevent_7__ident_IdentRegistry; -struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet; -struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop; -struct __pyx_obj_6gevent_8__waiter_Waiter; -struct __pyx_obj_6gevent_8__waiter_MultipleWaiter; -struct __pyx_obj_6gevent_9_greenlet_SpawnedLink; -struct __pyx_obj_6gevent_9_greenlet_SuccessSpawnedLink; -struct __pyx_obj_6gevent_9_greenlet_FailureSpawnedLink; -struct __pyx_obj_6gevent_9_greenlet__Frame; -struct __pyx_obj_6gevent_9_greenlet_Greenlet; -struct __pyx_obj_6gevent_9_greenlet__dummy_event; -struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py; -struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_object____list____object___to_py; -struct __pyx_opt_args_6gevent_9_greenlet_8Greenlet_join; -struct __pyx_opt_args_6gevent_9_greenlet_joinall; -struct __pyx_defaults; -typedef struct __pyx_defaults __pyx_defaults; - -/* "gevent/_greenlet.pxd":105 - * - * cpdef bint has_links(self) - * cpdef join(self, timeout=*) # <<<<<<<<<<<<<< - * cpdef bint ready(self) - * cpdef bint successful(self) - */ -struct __pyx_opt_args_6gevent_9_greenlet_8Greenlet_join { - int __pyx_n; - PyObject *timeout; -}; - -/* "gevent/_greenlet.pxd":174 - * - * @cython.locals(done=list) - * cpdef joinall(greenlets, timeout=*, raise_error=*, count=*) # <<<<<<<<<<<<<< - */ -struct __pyx_opt_args_6gevent_9_greenlet_joinall { - int __pyx_n; - PyObject *timeout; - PyObject *raise_error; - PyObject *count; -}; -struct __pyx_defaults { - PyObject *__pyx_arg_exception; -}; - -/* "gevent/__ident.pxd":15 - * @cython.internal - * @cython.final - * cdef class ValuedWeakRef(ref): # <<<<<<<<<<<<<< - * cdef object value - * - */ -struct __pyx_obj_6gevent_7__ident_ValuedWeakRef { - PyWeakReference __pyx_base; - PyObject *value; -}; - - -/* "gevent/__ident.pxd":19 - * - * @cython.final - * cdef class IdentRegistry: # <<<<<<<<<<<<<< - * cdef object _registry - * cdef list _available_idents - */ -struct __pyx_obj_6gevent_7__ident_IdentRegistry { - PyObject_HEAD - struct __pyx_vtabstruct_6gevent_7__ident_IdentRegistry *__pyx_vtab; - PyObject *_registry; - PyObject *_available_idents; -}; - - -/* "gevent/__greenlet_primitives.pxd":37 - * return PyGreenlet_Switch(self, NULL, NULL) - * - * cdef class TrackedRawGreenlet(greenlet): # <<<<<<<<<<<<<< - * pass - * - */ -struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet { - PyGreenlet __pyx_base; -}; - - -/* "gevent/__greenlet_primitives.pxd":40 - * pass - * - * cdef class SwitchOutGreenletWithLoop(TrackedRawGreenlet): # <<<<<<<<<<<<<< - * cdef public loop - * - */ -struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop { - struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet __pyx_base; - struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_vtab; - PyObject *loop; -}; - - -/* "gevent/__waiter.pxd":33 - * _greenlet_imported = True - * - * cdef class Waiter: # <<<<<<<<<<<<<< - * cdef readonly SwitchOutGreenletWithLoop hub - * cdef readonly greenlet greenlet - */ -struct __pyx_obj_6gevent_8__waiter_Waiter { - PyObject_HEAD - struct __pyx_vtabstruct_6gevent_8__waiter_Waiter *__pyx_vtab; - struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *hub; - PyGreenlet *greenlet; - PyObject *value; - PyObject *_exception; -}; - - -/* "gevent/__waiter.pxd":47 - * @cython.final - * @cython.internal - * cdef class MultipleWaiter(Waiter): # <<<<<<<<<<<<<< - * cdef list _values - */ -struct __pyx_obj_6gevent_8__waiter_MultipleWaiter { - struct __pyx_obj_6gevent_8__waiter_Waiter __pyx_base; - PyObject *_values; -}; - - -/* "gevent/_greenlet.pxd":56 - * cdef void _init() - * - * cdef class SpawnedLink: # <<<<<<<<<<<<<< - * cdef public object callback - * - */ -struct __pyx_obj_6gevent_9_greenlet_SpawnedLink { - PyObject_HEAD - PyObject *callback; -}; - - -/* "gevent/_greenlet.pxd":61 - * - * @cython.final - * cdef class SuccessSpawnedLink(SpawnedLink): # <<<<<<<<<<<<<< - * pass - * - */ -struct __pyx_obj_6gevent_9_greenlet_SuccessSpawnedLink { - struct __pyx_obj_6gevent_9_greenlet_SpawnedLink __pyx_base; -}; - - -/* "gevent/_greenlet.pxd":65 - * - * @cython.final - * cdef class FailureSpawnedLink(SpawnedLink): # <<<<<<<<<<<<<< - * pass - * - */ -struct __pyx_obj_6gevent_9_greenlet_FailureSpawnedLink { - struct __pyx_obj_6gevent_9_greenlet_SpawnedLink __pyx_base; -}; - - -/* "gevent/_greenlet.pxd":71 - * @cython.internal - * @cython.freelist(1000) - * cdef class _Frame: # <<<<<<<<<<<<<< - * cdef readonly CodeType f_code - * cdef readonly int f_lineno - */ -struct __pyx_obj_6gevent_9_greenlet__Frame { - PyObject_HEAD - PyCodeObject *f_code; - int f_lineno; - struct __pyx_obj_6gevent_9_greenlet__Frame *f_back; -}; - - -/* "gevent/_greenlet.pxd":86 - * - * - * cdef class Greenlet(greenlet): # <<<<<<<<<<<<<< - * cdef readonly object value - * cdef readonly tuple args - */ -struct __pyx_obj_6gevent_9_greenlet_Greenlet { - PyGreenlet __pyx_base; - struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet *__pyx_vtab; - PyObject *value; - PyObject *args; - PyObject *kwargs; - PyObject *spawning_greenlet; - PyObject *spawn_tree_locals; - PyObject *_spawning_stack_frames; - PyObject *_links; - PyObject *_exc_info; - PyObject *_notifier; - PyObject *_start_event; - PyObject *_formatted_info; - PyObject *_ident; -}; - - -/* "gevent/_greenlet.pxd":157 - * @cython.final - * @cython.internal - * cdef class _dummy_event: # <<<<<<<<<<<<<< - * cdef readonly bint pending - * cdef readonly bint active - */ -struct __pyx_obj_6gevent_9_greenlet__dummy_event { - PyObject_HEAD - struct __pyx_vtabstruct_6gevent_9_greenlet__dummy_event *__pyx_vtab; - int pending; - int active; -}; - - -/* "cfunc.to_py":64 - * - * @cname("__Pyx_CFunc_object____list____object____object___to_py") - * cdef object __Pyx_CFunc_object____list____object____object___to_py(object (*f)(list, object, object) ): # <<<<<<<<<<<<<< - * def wrap(list greenlets, object exception, object waiter): - * """wrap(greenlets: list, exception, waiter)""" - */ -struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py { - PyObject_HEAD - PyObject *(*__pyx_v_f)(PyObject *, PyObject *, PyObject *); -}; - -struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_object____list____object___to_py { - PyObject_HEAD - PyObject *(*__pyx_v_f)(PyObject *, PyObject *); -}; - - - -/* "gevent/__ident.pxd":19 - * - * @cython.final - * cdef class IdentRegistry: # <<<<<<<<<<<<<< - * cdef object _registry - * cdef list _available_idents - */ - -struct __pyx_vtabstruct_6gevent_7__ident_IdentRegistry { - PyObject *(*get_ident)(struct __pyx_obj_6gevent_7__ident_IdentRegistry *, PyObject *, int __pyx_skip_dispatch); - PyObject *(*_return_ident)(struct __pyx_obj_6gevent_7__ident_IdentRegistry *, struct __pyx_obj_6gevent_7__ident_ValuedWeakRef *, int __pyx_skip_dispatch); -}; -static struct __pyx_vtabstruct_6gevent_7__ident_IdentRegistry *__pyx_vtabptr_6gevent_7__ident_IdentRegistry; - - -/* "gevent/__greenlet_primitives.pxd":40 - * pass - * - * cdef class SwitchOutGreenletWithLoop(TrackedRawGreenlet): # <<<<<<<<<<<<<< - * cdef public loop - * - */ - -struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop { - PyObject *(*__pyx_switch)(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *, int __pyx_skip_dispatch); - PyObject *(*switch_out)(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *, int __pyx_skip_dispatch); -}; -static struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_vtabptr_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop; - - -/* "gevent/__waiter.pxd":33 - * _greenlet_imported = True - * - * cdef class Waiter: # <<<<<<<<<<<<<< - * cdef readonly SwitchOutGreenletWithLoop hub - * cdef readonly greenlet greenlet - */ - -struct __pyx_vtabstruct_6gevent_8__waiter_Waiter { - PyObject *(*get)(struct __pyx_obj_6gevent_8__waiter_Waiter *, int __pyx_skip_dispatch); - PyObject *(*clear)(struct __pyx_obj_6gevent_8__waiter_Waiter *, int __pyx_skip_dispatch); -}; -static struct __pyx_vtabstruct_6gevent_8__waiter_Waiter *__pyx_vtabptr_6gevent_8__waiter_Waiter; - - -/* "gevent/__waiter.pxd":47 - * @cython.final - * @cython.internal - * cdef class MultipleWaiter(Waiter): # <<<<<<<<<<<<<< - * cdef list _values - */ - -struct __pyx_vtabstruct_6gevent_8__waiter_MultipleWaiter { - struct __pyx_vtabstruct_6gevent_8__waiter_Waiter __pyx_base; -}; -static struct __pyx_vtabstruct_6gevent_8__waiter_MultipleWaiter *__pyx_vtabptr_6gevent_8__waiter_MultipleWaiter; - - -/* "src/gevent/greenlet.py":157 - * _greenlet__init__ = greenlet.__init__ - * - * class Greenlet(greenlet): # <<<<<<<<<<<<<< - * """ - * A light-weight cooperatively-scheduled execution unit. - */ - -struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet { - int (*has_links)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, int __pyx_skip_dispatch); - PyObject *(*join)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_9_greenlet_8Greenlet_join *__pyx_optional_args); - int (*ready)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, int __pyx_skip_dispatch); - int (*successful)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, int __pyx_skip_dispatch); - PyObject *(*rawlink)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, PyObject *, int __pyx_skip_dispatch); - PyObject *(*_formatinfo)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, int __pyx_skip_dispatch); - PyObject *(*_get_minimal_ident)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *); - int (*__pyx___started_but_aborted)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *); - int (*__pyx___start_cancelled_by_kill)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *); - int (*__pyx___start_pending)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *); - int (*__pyx___never_started_or_killed)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *); - int (*__pyx___start_completed)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *); - PyObject *(*__pyx___handle_death_before_start)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, PyObject *); - PyObject *(*__pyx___cancel_start)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *); - PyObject *(*_report_result)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, PyObject *); - PyObject *(*_report_error)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, PyObject *); - PyObject *(*_notify_links)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, int __pyx_skip_dispatch); -}; -static struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet *__pyx_vtabptr_6gevent_9_greenlet_Greenlet; - - -/* "src/gevent/greenlet.py":820 - * - * - * class _dummy_event(object): # <<<<<<<<<<<<<< - * __slots__ = ('pending', 'active') - * - */ - -struct __pyx_vtabstruct_6gevent_9_greenlet__dummy_event { - PyObject *(*stop)(struct __pyx_obj_6gevent_9_greenlet__dummy_event *, int __pyx_skip_dispatch); - PyObject *(*start)(struct __pyx_obj_6gevent_9_greenlet__dummy_event *, PyObject *, int __pyx_skip_dispatch); - PyObject *(*close)(struct __pyx_obj_6gevent_9_greenlet__dummy_event *, int __pyx_skip_dispatch); -}; -static struct __pyx_vtabstruct_6gevent_9_greenlet__dummy_event *__pyx_vtabptr_6gevent_9_greenlet__dummy_event; -static PyObject *__pyx_f_6gevent_9_greenlet_12_dummy_event_stop(struct __pyx_obj_6gevent_9_greenlet__dummy_event *, int __pyx_skip_dispatch); -static PyObject *__pyx_f_6gevent_9_greenlet_12_dummy_event_start(struct __pyx_obj_6gevent_9_greenlet__dummy_event *, PyObject *, int __pyx_skip_dispatch); -static PyObject *__pyx_f_6gevent_9_greenlet_12_dummy_event_close(struct __pyx_obj_6gevent_9_greenlet__dummy_event *, int __pyx_skip_dispatch); - -/* --- Runtime support code (head) --- */ -/* Refnanny.proto */ -#ifndef CYTHON_REFNANNY - #define CYTHON_REFNANNY 0 -#endif -#if CYTHON_REFNANNY - typedef struct { - void (*INCREF)(void*, PyObject*, int); - void (*DECREF)(void*, PyObject*, int); - void (*GOTREF)(void*, PyObject*, int); - void (*GIVEREF)(void*, PyObject*, int); - void* (*SetupContext)(const char*, int, const char*); - void (*FinishContext)(void**); - } __Pyx_RefNannyAPIStruct; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); - #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; -#ifdef WITH_THREAD - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - if (acquire_gil) {\ - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - PyGILState_Release(__pyx_gilstate_save);\ - } else {\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - } -#else - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) -#endif - #define __Pyx_RefNannyFinishContext()\ - __Pyx_RefNanny->FinishContext(&__pyx_refnanny) - #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) - #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) - #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) - #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0) -#else - #define __Pyx_RefNannyDeclarations - #define __Pyx_RefNannySetupContext(name, acquire_gil) - #define __Pyx_RefNannyFinishContext() - #define __Pyx_INCREF(r) Py_INCREF(r) - #define __Pyx_DECREF(r) Py_DECREF(r) - #define __Pyx_GOTREF(r) - #define __Pyx_GIVEREF(r) - #define __Pyx_XINCREF(r) Py_XINCREF(r) - #define __Pyx_XDECREF(r) Py_XDECREF(r) - #define __Pyx_XGOTREF(r) - #define __Pyx_XGIVEREF(r) -#endif -#define __Pyx_XDECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_XDECREF(tmp);\ - } while (0) -#define __Pyx_DECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_DECREF(tmp);\ - } while (0) -#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) -#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) - -/* PyObjectGetAttrStr.proto */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) -#endif - -/* GetBuiltinName.proto */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name); - -/* RaiseDoubleKeywords.proto */ -static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); - -/* ParseKeywords.proto */ -static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\ - PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\ - const char* function_name); - -/* RaiseArgTupleInvalid.proto */ -static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, - Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); - -/* CallableCheck.proto */ -#if CYTHON_USE_TYPE_SLOTS && PY_MAJOR_VERSION >= 3 -#define __Pyx_PyCallable_Check(obj) ((obj)->ob_type->tp_call != NULL) -#else -#define __Pyx_PyCallable_Check(obj) PyCallable_Check(obj) -#endif - -/* PyCFunctionFastCall.proto */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); -#else -#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) -#endif - -/* PyFunctionFastCall.proto */ -#if CYTHON_FAST_PYCALL -#define __Pyx_PyFunction_FastCall(func, args, nargs)\ - __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs); -#else -#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) -#endif -#endif - -/* PyObjectCall.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); -#else -#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) -#endif - -/* PyObjectCallMethO.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); -#endif - -/* PyObjectCallOneArg.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); - -/* PyThreadStateGet.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; -#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; -#define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type -#else -#define __Pyx_PyThreadState_declare -#define __Pyx_PyThreadState_assign -#define __Pyx_PyErr_Occurred() PyErr_Occurred() -#endif - -/* PyErrFetchRestore.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) -#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) -#else -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#endif -#else -#define __Pyx_PyErr_Clear() PyErr_Clear() -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) -#endif - -/* RaiseException.proto */ -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); - -/* PyErrExceptionMatches.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) -static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); -#else -#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) -#endif - -/* GetAttr.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *); - -/* GetAttr3.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *); - -/* IncludeStringH.proto */ -#include <string.h> - -/* BytesEquals.proto */ -static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); - -/* UnicodeEquals.proto */ -static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals); - -/* StrEquals.proto */ -#if PY_MAJOR_VERSION >= 3 -#define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals -#else -#define __Pyx_PyString_Equals __Pyx_PyBytes_Equals -#endif - -/* PyObjectCallNoArg.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); -#else -#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL) -#endif - -/* ExtTypeTest.proto */ -static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); - -/* GetItemInt.proto */ -#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ - (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ - __Pyx_GetItemInt_Generic(o, to_py_func(i)))) -#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ - (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, - int wraparound, int boundscheck); -#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ - (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, - int wraparound, int boundscheck); -static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, - int is_list, int wraparound, int boundscheck); - -/* SaveResetException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -#else -#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) -#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) -#endif - -/* GetException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) -static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#else -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); -#endif - -/* ListAppend.proto */ -#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS -static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { - PyListObject* L = (PyListObject*) list; - Py_ssize_t len = Py_SIZE(list); - if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) { - Py_INCREF(x); - PyList_SET_ITEM(list, len, x); - Py_SIZE(list) = len+1; - return 0; - } - return PyList_Append(list, x); -} -#else -#define __Pyx_PyList_Append(L,x) PyList_Append(L,x) -#endif - -/* PyObjectSetAttrStr.proto */ -#if CYTHON_USE_TYPE_SLOTS -#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o, n, NULL) -static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value); -#else -#define __Pyx_PyObject_DelAttrStr(o,n) PyObject_DelAttr(o,n) -#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v) -#endif - -/* ListExtend.proto */ -static CYTHON_INLINE int __Pyx_PyList_Extend(PyObject* L, PyObject* v) { -#if CYTHON_COMPILING_IN_CPYTHON - PyObject* none = _PyList_Extend((PyListObject*)L, v); - if (unlikely(!none)) - return -1; - Py_DECREF(none); - return 0; -#else - return PyList_SetSlice(L, PY_SSIZE_T_MAX, PY_SSIZE_T_MAX, v); -#endif -} - -/* WriteUnraisableException.proto */ -static void __Pyx_WriteUnraisable(const char *name, int clineno, - int lineno, const char *filename, - int full_traceback, int nogil); - -/* ListCompAppend.proto */ -#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS -static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) { - PyListObject* L = (PyListObject*) list; - Py_ssize_t len = Py_SIZE(list); - if (likely(L->allocated > len)) { - Py_INCREF(x); - PyList_SET_ITEM(list, len, x); - Py_SIZE(list) = len+1; - return 0; - } - return PyList_Append(list, x); -} -#else -#define __Pyx_ListComp_Append(L,x) PyList_Append(L,x) -#endif - -/* py_dict_items.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyDict_Items(PyObject* d); - -/* UnpackUnboundCMethod.proto */ -typedef struct { - PyObject *type; - PyObject **method_name; - PyCFunction func; - PyObject *method; - int flag; -} __Pyx_CachedCFunction; - -/* CallUnboundCMethod0.proto */ -static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self); -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_CallUnboundCMethod0(cfunc, self)\ - (likely((cfunc)->func) ?\ - (likely((cfunc)->flag == METH_NOARGS) ? (*((cfunc)->func))(self, NULL) :\ - (PY_VERSION_HEX >= 0x030600B1 && likely((cfunc)->flag == METH_FASTCALL) ?\ - (PY_VERSION_HEX >= 0x030700A0 ?\ - (*(__Pyx_PyCFunctionFast)(cfunc)->func)(self, &__pyx_empty_tuple, 0) :\ - (*(__Pyx_PyCFunctionFastWithKeywords)(cfunc)->func)(self, &__pyx_empty_tuple, 0, NULL)) :\ - (PY_VERSION_HEX >= 0x030700A0 && (cfunc)->flag == (METH_FASTCALL | METH_KEYWORDS) ?\ - (*(__Pyx_PyCFunctionFastWithKeywords)(cfunc)->func)(self, &__pyx_empty_tuple, 0, NULL) :\ - (likely((cfunc)->flag == (METH_VARARGS | METH_KEYWORDS)) ? ((*(PyCFunctionWithKeywords)(cfunc)->func)(self, __pyx_empty_tuple, NULL)) :\ - ((cfunc)->flag == METH_VARARGS ? (*((cfunc)->func))(self, __pyx_empty_tuple) :\ - __Pyx__CallUnboundCMethod0(cfunc, self)))))) :\ - __Pyx__CallUnboundCMethod0(cfunc, self)) -#else -#define __Pyx_CallUnboundCMethod0(cfunc, self) __Pyx__CallUnboundCMethod0(cfunc, self) -#endif - -/* RaiseTooManyValuesToUnpack.proto */ -static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); - -/* RaiseNeedMoreValuesToUnpack.proto */ -static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); - -/* IterFinish.proto */ -static CYTHON_INLINE int __Pyx_IterFinish(void); - -/* UnpackItemEndCheck.proto */ -static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); - -/* StringJoin.proto */ -#if PY_MAJOR_VERSION < 3 -#define __Pyx_PyString_Join __Pyx_PyBytes_Join -#define __Pyx_PyBaseString_Join(s, v) (PyUnicode_CheckExact(s) ? PyUnicode_Join(s, v) : __Pyx_PyBytes_Join(s, v)) -#else -#define __Pyx_PyString_Join PyUnicode_Join -#define __Pyx_PyBaseString_Join PyUnicode_Join -#endif -#if CYTHON_COMPILING_IN_CPYTHON - #if PY_MAJOR_VERSION < 3 - #define __Pyx_PyBytes_Join _PyString_Join - #else - #define __Pyx_PyBytes_Join _PyBytes_Join - #endif -#else -static CYTHON_INLINE PyObject* __Pyx_PyBytes_Join(PyObject* sep, PyObject* values); -#endif - -/* KeywordStringCheck.proto */ -static int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); - -/* SwapException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#else -static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); -#endif - -/* PyDictContains.proto */ -static CYTHON_INLINE int __Pyx_PyDict_ContainsTF(PyObject* item, PyObject* dict, int eq) { - int result = PyDict_Contains(dict, item); - return unlikely(result < 0) ? result : (result == (eq == Py_EQ)); -} - -/* GetModuleGlobalName.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name); - -/* None.proto */ -static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname); - -/* py_dict_clear.proto */ -#define __Pyx_PyDict_Clear(d) (PyDict_Clear(d), 0) - -/* SliceObject.proto */ -#define __Pyx_PyObject_DelSlice(obj, cstart, cstop, py_start, py_stop, py_slice, has_cstart, has_cstop, wraparound)\ - __Pyx_PyObject_SetSlice(obj, (PyObject*)NULL, cstart, cstop, py_start, py_stop, py_slice, has_cstart, has_cstop, wraparound) -static CYTHON_INLINE int __Pyx_PyObject_SetSlice( - PyObject* obj, PyObject* value, Py_ssize_t cstart, Py_ssize_t cstop, - PyObject** py_start, PyObject** py_stop, PyObject** py_slice, - int has_cstart, int has_cstop, int wraparound); - -/* PyObjectCallMethod1.proto */ -static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg); -static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg); - -/* pop_index.proto */ -static PyObject* __Pyx__PyObject_PopNewIndex(PyObject* L, PyObject* py_ix); -static PyObject* __Pyx__PyObject_PopIndex(PyObject* L, PyObject* py_ix); -#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS -static PyObject* __Pyx__PyList_PopIndex(PyObject* L, PyObject* py_ix, Py_ssize_t ix); -#define __Pyx_PyObject_PopIndex(L, py_ix, ix, is_signed, type, to_py_func) (\ - (likely(PyList_CheckExact(L) && __Pyx_fits_Py_ssize_t(ix, type, is_signed))) ?\ - __Pyx__PyList_PopIndex(L, py_ix, ix) : (\ - (unlikely(py_ix == Py_None)) ? __Pyx__PyObject_PopNewIndex(L, to_py_func(ix)) :\ - __Pyx__PyObject_PopIndex(L, py_ix))) -#define __Pyx_PyList_PopIndex(L, py_ix, ix, is_signed, type, to_py_func) (\ - __Pyx_fits_Py_ssize_t(ix, type, is_signed) ?\ - __Pyx__PyList_PopIndex(L, py_ix, ix) : (\ - (unlikely(py_ix == Py_None)) ? __Pyx__PyObject_PopNewIndex(L, to_py_func(ix)) :\ - __Pyx__PyObject_PopIndex(L, py_ix))) -#else -#define __Pyx_PyList_PopIndex(L, py_ix, ix, is_signed, type, to_py_func)\ - __Pyx_PyObject_PopIndex(L, py_ix, ix, is_signed, type, to_py_func) -#define __Pyx_PyObject_PopIndex(L, py_ix, ix, is_signed, type, to_py_func) (\ - (unlikely(py_ix == Py_None)) ? __Pyx__PyObject_PopNewIndex(L, to_py_func(ix)) :\ - __Pyx__PyObject_PopIndex(L, py_ix)) -#endif - -/* HasAttr.proto */ -static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *); - -/* ArgTypeTest.proto */ -#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\ - ((likely((Py_TYPE(obj) == type) | (none_allowed && (obj == Py_None)))) ? 1 :\ - __Pyx__ArgTypeTest(obj, type, name, exact)) -static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact); - -/* FetchCommonType.proto */ -static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); - -/* CythonFunction.proto */ -#define __Pyx_CyFunction_USED 1 -#define __Pyx_CYFUNCTION_STATICMETHOD 0x01 -#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 -#define __Pyx_CYFUNCTION_CCLASS 0x04 -#define __Pyx_CyFunction_GetClosure(f)\ - (((__pyx_CyFunctionObject *) (f))->func_closure) -#define __Pyx_CyFunction_GetClassObj(f)\ - (((__pyx_CyFunctionObject *) (f))->func_classobj) -#define __Pyx_CyFunction_Defaults(type, f)\ - ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) -#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ - ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) -typedef struct { - PyCFunctionObject func; -#if PY_VERSION_HEX < 0x030500A0 - PyObject *func_weakreflist; -#endif - PyObject *func_dict; - PyObject *func_name; - PyObject *func_qualname; - PyObject *func_doc; - PyObject *func_globals; - PyObject *func_code; - PyObject *func_closure; - PyObject *func_classobj; - void *defaults; - int defaults_pyobjects; - int flags; - PyObject *defaults_tuple; - PyObject *defaults_kwdict; - PyObject *(*defaults_getter)(PyObject *); - PyObject *func_annotations; -} __pyx_CyFunctionObject; -static PyTypeObject *__pyx_CyFunctionType = 0; -#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, globals, code)\ - __Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, globals, code) -static PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml, - int flags, PyObject* qualname, - PyObject *self, - PyObject *module, PyObject *globals, - PyObject* code); -static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, - size_t size, - int pyobjects); -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, - PyObject *tuple); -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, - PyObject *dict); -static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, - PyObject *dict); -static int __pyx_CyFunction_init(void); - -/* PyObject_GenericGetAttrNoDict.proto */ -#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr -#endif - -/* PyObject_GenericGetAttr.proto */ -#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr -#endif - -/* CallNextTpDealloc.proto */ -static void __Pyx_call_next_tp_dealloc(PyObject* obj, destructor current_tp_dealloc); - -/* CallNextTpTraverse.proto */ -static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse); - -/* CallNextTpClear.proto */ -static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_dealloc); - -/* SetVTable.proto */ -static int __Pyx_SetVtable(PyObject *dict, void *vtable); - -/* GetVTable.proto */ -static void* __Pyx_GetVtable(PyObject *dict); - -/* Import.proto */ -static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); - -/* ImportFrom.proto */ -static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); - -/* GetNameInClass.proto */ -static PyObject *__Pyx_GetNameInClass(PyObject *nmspace, PyObject *name); - -/* ClassMethod.proto */ -#include "descrobject.h" -static PyObject* __Pyx_Method_ClassMethod(PyObject *method); - -/* Globals.proto */ -static PyObject* __Pyx_Globals(void); - -/* CLineInTraceback.proto */ -#ifdef CYTHON_CLINE_IN_TRACEBACK -#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) -#else -static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); -#endif - -/* CodeObjectCache.proto */ -typedef struct { - PyCodeObject* code_object; - int code_line; -} __Pyx_CodeObjectCacheEntry; -struct __Pyx_CodeObjectCache { - int count; - int max_count; - __Pyx_CodeObjectCacheEntry* entries; -}; -static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; -static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); -static PyCodeObject *__pyx_find_code_object(int code_line); -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); - -/* AddTraceback.proto */ -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename); - -/* CIntToPy.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); - -/* CIntToPy.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); - -/* CIntFromPy.proto */ -static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); - -/* CIntFromPy.proto */ -static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); - -/* FastTypeChecks.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); -#else -#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) -#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) -#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) -#endif -#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) - -/* CheckBinaryVersion.proto */ -static int __Pyx_check_binary_version(void); - -/* VoidPtrExport.proto */ -static int __Pyx_ExportVoidPtr(PyObject *name, void *p, const char *sig); - -/* FunctionExport.proto */ -static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig); - -/* PyIdentifierFromString.proto */ -#if !defined(__Pyx_PyIdentifier_FromString) -#if PY_MAJOR_VERSION < 3 - #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s) -#else - #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s) -#endif -#endif - -/* ModuleImport.proto */ -static PyObject *__Pyx_ImportModule(const char *name); - -/* TypeImport.proto */ -static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict); - -/* VoidPtrImport.proto */ -static int __Pyx_ImportVoidPtr(PyObject *module, const char *name, void **p, const char *sig); - -/* FunctionImport.proto */ -static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig); - -/* InitStrings.proto */ -static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); - -static PyObject *__pyx_f_6gevent_9_greenlet_8Greenlet__get_minimal_ident(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self); /* proto*/ -static int __pyx_f_6gevent_9_greenlet_8Greenlet___never_started_or_killed(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self); /* proto*/ -static int __pyx_f_6gevent_9_greenlet_8Greenlet___start_pending(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self); /* proto*/ -static int __pyx_f_6gevent_9_greenlet_8Greenlet___start_cancelled_by_kill(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self); /* proto*/ -static int __pyx_f_6gevent_9_greenlet_8Greenlet___start_completed(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self); /* proto*/ -static int __pyx_f_6gevent_9_greenlet_8Greenlet___started_but_aborted(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self); /* proto*/ -static PyObject *__pyx_f_6gevent_9_greenlet_8Greenlet___cancel_start(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self); /* proto*/ -static PyObject *__pyx_f_6gevent_9_greenlet_8Greenlet___handle_death_before_start(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, PyObject *__pyx_v_args); /* proto*/ -static int __pyx_f_6gevent_9_greenlet_8Greenlet_ready(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ -static int __pyx_f_6gevent_9_greenlet_8Greenlet_successful(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_9_greenlet_8Greenlet__formatinfo(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_9_greenlet_8Greenlet_join(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_9_greenlet_8Greenlet_join *__pyx_optional_args); /* proto*/ -static PyObject *__pyx_f_6gevent_9_greenlet_8Greenlet__report_result(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, PyObject *__pyx_v_result); /* proto*/ -static PyObject *__pyx_f_6gevent_9_greenlet_8Greenlet__report_error(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, PyObject *__pyx_v_exc_info); /* proto*/ -static int __pyx_f_6gevent_9_greenlet_8Greenlet_has_links(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_9_greenlet_8Greenlet_rawlink(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, PyObject *__pyx_v_callback, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_9_greenlet_8Greenlet__notify_links(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_9_greenlet_12_dummy_event_stop(CYTHON_UNUSED struct __pyx_obj_6gevent_9_greenlet__dummy_event *__pyx_v_self, CYTHON_UNUSED int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_9_greenlet_12_dummy_event_start(CYTHON_UNUSED struct __pyx_obj_6gevent_9_greenlet__dummy_event *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_cb, CYTHON_UNUSED int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_9_greenlet_12_dummy_event_close(CYTHON_UNUSED struct __pyx_obj_6gevent_9_greenlet__dummy_event *__pyx_v_self, CYTHON_UNUSED int __pyx_skip_dispatch); /* proto*/ - -/* Module declarations from 'cython' */ - -/* Module declarations from 'weakref' */ - -/* Module declarations from 'gevent.__ident' */ -static PyTypeObject *__pyx_ptype_6gevent_7__ident_ref = 0; -static PyTypeObject *__pyx_ptype_6gevent_7__ident_ValuedWeakRef = 0; -static PyTypeObject *__pyx_ptype_6gevent_7__ident_IdentRegistry = 0; -static PyObject **__pyx_vp_6gevent_7__ident_heappop = 0; -#define __pyx_v_6gevent_7__ident_heappop (*__pyx_vp_6gevent_7__ident_heappop) -static PyObject **__pyx_vp_6gevent_7__ident_heappush = 0; -#define __pyx_v_6gevent_7__ident_heappush (*__pyx_vp_6gevent_7__ident_heappush) -static PyObject **__pyx_vp_6gevent_7__ident_WeakKeyDictionary = 0; -#define __pyx_v_6gevent_7__ident_WeakKeyDictionary (*__pyx_vp_6gevent_7__ident_WeakKeyDictionary) - -/* Module declarations from 'greenlet' */ - -/* Module declarations from 'gevent.__greenlet_primitives' */ -static PyTypeObject *__pyx_ptype_6gevent_21__greenlet_primitives_greenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop = 0; -static PyObject **__pyx_vp_6gevent_21__greenlet_primitives_wref = 0; -#define __pyx_v_6gevent_21__greenlet_primitives_wref (*__pyx_vp_6gevent_21__greenlet_primitives_wref) -static PyObject **__pyx_vp_6gevent_21__greenlet_primitives_BlockingSwitchOutError = 0; -#define __pyx_v_6gevent_21__greenlet_primitives_BlockingSwitchOutError (*__pyx_vp_6gevent_21__greenlet_primitives_BlockingSwitchOutError) -static int *__pyx_vp_6gevent_21__greenlet_primitives__greenlet_imported = 0; -#define __pyx_v_6gevent_21__greenlet_primitives__greenlet_imported (*__pyx_vp_6gevent_21__greenlet_primitives__greenlet_imported) - -/* Module declarations from 'gevent.__hub_local' */ -static PyObject **__pyx_vp_6gevent_11__hub_local__threadlocal = 0; -#define __pyx_v_6gevent_11__hub_local__threadlocal (*__pyx_vp_6gevent_11__hub_local__threadlocal) -static struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *(*__pyx_f_6gevent_11__hub_local_get_hub_noargs)(int __pyx_skip_dispatch); /*proto*/ - -/* Module declarations from 'gevent.__waiter' */ -static PyTypeObject *__pyx_ptype_6gevent_8__waiter_greenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_8__waiter_Waiter = 0; -static PyTypeObject *__pyx_ptype_6gevent_8__waiter_MultipleWaiter = 0; -static PyObject **__pyx_vp_6gevent_8__waiter_sys = 0; -#define __pyx_v_6gevent_8__waiter_sys (*__pyx_vp_6gevent_8__waiter_sys) -static PyObject **__pyx_vp_6gevent_8__waiter_ConcurrentObjectUseError = 0; -#define __pyx_v_6gevent_8__waiter_ConcurrentObjectUseError (*__pyx_vp_6gevent_8__waiter_ConcurrentObjectUseError) -static int *__pyx_vp_6gevent_8__waiter__greenlet_imported = 0; -#define __pyx_v_6gevent_8__waiter__greenlet_imported (*__pyx_vp_6gevent_8__waiter__greenlet_imported) -static PyObject **__pyx_vp_6gevent_8__waiter__NONE = 0; -#define __pyx_v_6gevent_8__waiter__NONE (*__pyx_vp_6gevent_8__waiter__NONE) - -/* Module declarations from 'types' */ - -/* Module declarations from 'gevent._greenlet' */ -static PyTypeObject *__pyx_ptype_6gevent_9_greenlet_greenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_9_greenlet_CodeType = 0; -static PyTypeObject *__pyx_ptype_6gevent_9_greenlet_FrameType = 0; -static PyTypeObject *__pyx_ptype_6gevent_9_greenlet_SpawnedLink = 0; -static PyTypeObject *__pyx_ptype_6gevent_9_greenlet_SuccessSpawnedLink = 0; -static PyTypeObject *__pyx_ptype_6gevent_9_greenlet_FailureSpawnedLink = 0; -static PyTypeObject *__pyx_ptype_6gevent_9_greenlet__Frame = 0; -static PyTypeObject *__pyx_ptype_6gevent_9_greenlet_Greenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_9_greenlet__dummy_event = 0; -static PyTypeObject *__pyx_ptype___pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py = 0; -static PyTypeObject *__pyx_ptype___pyx_scope_struct____Pyx_CFunc_object____list____object___to_py = 0; -static int __pyx_v_6gevent_9_greenlet__PYPY; -static PyObject *__pyx_v_6gevent_9_greenlet_sys_getframe = 0; -static PyObject *__pyx_v_6gevent_9_greenlet_sys_exc_info = 0; -static PyObject *__pyx_v_6gevent_9_greenlet_Timeout = 0; -static PyObject *__pyx_v_6gevent_9_greenlet_GreenletExit = 0; -static PyObject *__pyx_v_6gevent_9_greenlet_InvalidSwitchError = 0; -static int __pyx_v_6gevent_9_greenlet__greenlet_imported; -static PyObject *__pyx_v_6gevent_9_greenlet__greenlet__init__ = 0; -static PyObject *__pyx_v_6gevent_9_greenlet__threadlocal = 0; -static PyObject *__pyx_v_6gevent_9_greenlet_get_hub_class = 0; -static PyObject *__pyx_v_6gevent_9_greenlet_wref = 0; -static PyObject *__pyx_v_6gevent_9_greenlet_dump_traceback = 0; -static PyObject *__pyx_v_6gevent_9_greenlet_load_traceback = 0; -static PyObject *__pyx_v_6gevent_9_greenlet_wait = 0; -static PyObject *__pyx_v_6gevent_9_greenlet_iwait = 0; -static PyObject *__pyx_v_6gevent_9_greenlet_reraise = 0; -static PyObject *__pyx_v_6gevent_9_greenlet_GEVENT_CONFIG = 0; -static struct __pyx_obj_6gevent_9_greenlet__dummy_event *__pyx_v_6gevent_9_greenlet__cancelled_start_event = 0; -static struct __pyx_obj_6gevent_9_greenlet__dummy_event *__pyx_v_6gevent_9_greenlet__start_completed_event = 0; -static CYTHON_INLINE PyGreenlet *__pyx_f_6gevent_9_greenlet_getcurrent(void); /*proto*/ -static CYTHON_INLINE void __pyx_f_6gevent_9_greenlet_greenlet_init(void); /*proto*/ -static void __pyx_f_6gevent_9_greenlet__init(void); /*proto*/ -static CYTHON_INLINE PyObject *__pyx_f_6gevent_9_greenlet__extract_stack(int); /*proto*/ -static struct __pyx_obj_6gevent_9_greenlet__Frame *__pyx_f_6gevent_9_greenlet__Frame_from_list(PyObject *); /*proto*/ -static PyObject *__pyx_f_6gevent_9_greenlet__killall3(PyObject *, PyObject *, PyObject *); /*proto*/ -static PyObject *__pyx_f_6gevent_9_greenlet__killall(PyObject *, PyObject *); /*proto*/ -static PyObject *__pyx_f_6gevent_9_greenlet_joinall(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_9_greenlet_joinall *__pyx_optional_args); /*proto*/ -static PyObject *__Pyx_CFunc_object____list____object____object___to_py(PyObject *(*)(PyObject *, PyObject *, PyObject *)); /*proto*/ -static PyObject *__Pyx_CFunc_object____list____object___to_py(PyObject *(*)(PyObject *, PyObject *)); /*proto*/ -#define __Pyx_MODULE_NAME "gevent._greenlet" -extern int __pyx_module_is_main_gevent___greenlet; -int __pyx_module_is_main_gevent___greenlet = 0; - -/* Implementation of 'gevent._greenlet' */ -static PyObject *__pyx_builtin___import__; -static PyObject *__pyx_builtin_NameError; -static PyObject *__pyx_builtin_TypeError; -static PyObject *__pyx_builtin_reversed; -static PyObject *__pyx_builtin_ValueError; -static PyObject *__pyx_builtin_AttributeError; -static PyObject *__pyx_builtin_hex; -static PyObject *__pyx_builtin_id; -static PyObject *__pyx_builtin_AssertionError; -static const char __pyx_k_g[] = "g"; -static const char __pyx_k_t[] = "t"; -static const char __pyx_k__2[] = ": "; -static const char __pyx_k__3[] = ">"; -static const char __pyx_k__4[] = ""; -static const char __pyx_k__5[] = "("; -static const char __pyx_k__6[] = ", "; -static const char __pyx_k__7[] = ")"; -static const char __pyx_k_cb[] = "cb"; -static const char __pyx_k_id[] = "id"; -static const char __pyx_k_all[] = "__all__"; -static const char __pyx_k_cls[] = "cls"; -static const char __pyx_k_get[] = "__get__"; -static const char __pyx_k_hex[] = "hex"; -static const char __pyx_k_pop[] = "pop"; -static const char __pyx_k_ref[] = "ref"; -static const char __pyx_k_run[] = "run"; -static const char __pyx_k_s_s[] = "%s=%s"; -static const char __pyx_k_sys[] = "sys"; -static const char __pyx_k_Lazy[] = "Lazy"; -static const char __pyx_k_PYPY[] = "_PYPY"; -static const char __pyx_k_args[] = "args"; -static const char __pyx_k_bool[] = "__bool__"; -static const char __pyx_k_call[] = "__call__"; -static const char __pyx_k_dead[] = "dead"; -static const char __pyx_k_dict[] = "__dict__"; -static const char __pyx_k_glet[] = "glet"; -static const char __pyx_k_init[] = "__init__"; -static const char __pyx_k_join[] = "join"; -static const char __pyx_k_kill[] = "_kill"; -static const char __pyx_k_link[] = "link"; -static const char __pyx_k_loop[] = "loop"; -static const char __pyx_k_main[] = "__main__"; -static const char __pyx_k_name[] = "__name__"; -static const char __pyx_k_self[] = "__self__"; -static const char __pyx_k_stop[] = "stop"; -static const char __pyx_k_test[] = "__test__"; -static const char __pyx_k_wait[] = "wait"; -static const char __pyx_k_wrap[] = "wrap"; -static const char __pyx_k_wref[] = "wref"; -static const char __pyx_k_alive[] = "alive"; -static const char __pyx_k_block[] = "block"; -static const char __pyx_k_class[] = "__class__"; -static const char __pyx_k_close[] = "close"; -static const char __pyx_k_count[] = "count"; -static const char __pyx_k_get_2[] = "get"; -static const char __pyx_k_items[] = "items"; -static const char __pyx_k_iwait[] = "iwait"; -static const char __pyx_k_ready[] = "ready"; -static const char __pyx_k_run_2[] = "_run"; -static const char __pyx_k_slots[] = "__slots__"; -static const char __pyx_k_spawn[] = "spawn"; -static const char __pyx_k_start[] = "start"; -static const char __pyx_k_throw[] = "throw"; -static const char __pyx_k_timer[] = "timer"; -static const char __pyx_k_PYPY_2[] = "PYPY"; -static const char __pyx_k_Waiter[] = "Waiter"; -static const char __pyx_k_active[] = "active"; -static const char __pyx_k_cancel[] = "cancel"; -static const char __pyx_k_config[] = "config"; -static const char __pyx_k_f_back[] = "f_back"; -static const char __pyx_k_f_code[] = "f_code"; -static const char __pyx_k_gevent[] = "gevent"; -static const char __pyx_k_import[] = "__import__"; -static const char __pyx_k_kill_2[] = "kill"; -static const char __pyx_k_kwargs[] = "kwargs"; -static const char __pyx_k_lambda[] = "<lambda>"; -static const char __pyx_k_name_2[] = "name"; -static const char __pyx_k_parent[] = "parent"; -static const char __pyx_k_remove[] = "remove"; -static const char __pyx_k_result[] = "result"; -static const char __pyx_k_self_2[] = "self"; -static const char __pyx_k_source[] = "source"; -static const char __pyx_k_switch[] = "switch"; -static const char __pyx_k_unlink[] = "unlink"; -static const char __pyx_k_waiter[] = "waiter"; -static const char __pyx_k_Timeout[] = "Timeout"; -static const char __pyx_k_joinall[] = "joinall"; -static const char __pyx_k_killall[] = "killall"; -static const char __pyx_k_nonzero[] = "__nonzero__"; -static const char __pyx_k_pending[] = "pending"; -static const char __pyx_k_rawlink[] = "rawlink"; -static const char __pyx_k_reraise[] = "reraise"; -static const char __pyx_k_seconds[] = "seconds"; -static const char __pyx_k_timeout[] = "timeout"; -static const char __pyx_k_weakref[] = "weakref"; -static const char __pyx_k_Greenlet[] = "Greenlet"; -static const char __pyx_k_callback[] = "callback"; -static const char __pyx_k_exc_info[] = "exc_info"; -static const char __pyx_k_f_lineno[] = "f_lineno"; -static const char __pyx_k_getframe[] = "_getframe"; -static const char __pyx_k_greenlet[] = "greenlet"; -static const char __pyx_k_pyx_capi[] = "__pyx_capi__"; -static const char __pyx_k_reversed[] = "reversed"; -static const char __pyx_k_s_s_at_s[] = "<%s \"%s\" at %s"; -static const char __pyx_k_waiter_2[] = "_waiter"; -static const char __pyx_k_NameError[] = "NameError"; -static const char __pyx_k_TypeError[] = "TypeError"; -static const char __pyx_k_exception[] = "exception"; -static const char __pyx_k_greenlets[] = "greenlets"; -static const char __pyx_k_has_links[] = "has_links"; -static const char __pyx_k_Greenlet_d[] = "Greenlet-%d"; -static const char __pyx_k_ValueError[] = "ValueError"; -static const char __pyx_k_continulet[] = "continulet"; -static const char __pyx_k_formatinfo[] = "_formatinfo"; -static const char __pyx_k_getcurrent[] = "getcurrent"; -static const char __pyx_k_link_value[] = "link_value"; -static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__"; -static const char __pyx_k_successful[] = "successful"; -static const char __pyx_k_unlink_all[] = "unlink_all"; -static const char __pyx_k_SpawnedLink[] = "SpawnedLink"; -static const char __pyx_k_cfunc_to_py[] = "cfunc.to_py"; -static const char __pyx_k_raise_error[] = "raise_error"; -static const char __pyx_k_spawn_later[] = "spawn_later"; -static const char __pyx_k_start_later[] = "start_later"; -static const char __pyx_k_threadlocal[] = "_threadlocal"; -static const char __pyx_k_GreenletExit[] = "GreenletExit"; -static const char __pyx_k_Greenlet_get[] = "Greenlet.get"; -static const char __pyx_k_Greenlet_run[] = "Greenlet.run"; -static const char __pyx_k_continuation[] = "_continuation"; -static const char __pyx_k_continulet_2[] = "_continulet"; -static const char __pyx_k_gevent__util[] = "gevent._util"; -static const char __pyx_k_handle_error[] = "handle_error"; -static const char __pyx_k_notify_links[] = "_notify_links"; -static const char __pyx_k_readproperty[] = "readproperty"; -static const char __pyx_k_run_callback[] = "run_callback"; -static const char __pyx_k_stringsource[] = "stringsource"; -static const char __pyx_k_sys_exc_info[] = "sys_exc_info"; -static const char __pyx_k_sys_getframe[] = "sys_getframe"; -static const char __pyx_k_GEVENT_CONFIG[] = "GEVENT_CONFIG"; -static const char __pyx_k_Greenlet__run[] = "Greenlet._run"; -static const char __pyx_k_Greenlet_join[] = "Greenlet.join"; -static const char __pyx_k_Greenlet_kill[] = "Greenlet.kill"; -static const char __pyx_k_Greenlet_link[] = "Greenlet.link"; -static const char __pyx_k_Greenlet_name[] = "Greenlet.name"; -static const char __pyx_k_get_hub_class[] = "get_hub_class"; -static const char __pyx_k_gevent__tblib[] = "gevent._tblib"; -static const char __pyx_k_greenlet_init[] = "greenlet_init"; -static const char __pyx_k_minimal_ident[] = "minimal_ident"; -static const char __pyx_k_AssertionError[] = "AssertionError"; -static const char __pyx_k_AttributeError[] = "AttributeError"; -static const char __pyx_k_Greenlet_ready[] = "Greenlet.ready"; -static const char __pyx_k_Greenlet_spawn[] = "Greenlet.spawn"; -static const char __pyx_k_Greenlet_start[] = "Greenlet.start"; -static const char __pyx_k_Greenlet_throw[] = "Greenlet.throw"; -static const char __pyx_k_dump_traceback[] = "dump_traceback"; -static const char __pyx_k_get_hub_noargs[] = "get_hub_noargs"; -static const char __pyx_k_gevent__compat[] = "gevent._compat"; -static const char __pyx_k_gevent__config[] = "gevent._config"; -static const char __pyx_k_gevent_timeout[] = "gevent.timeout"; -static const char __pyx_k_greenlet__init[] = "_greenlet__init__"; -static const char __pyx_k_ident_registry[] = "ident_registry"; -static const char __pyx_k_import_c_accel[] = "import_c_accel"; -static const char __pyx_k_link_exception[] = "link_exception"; -static const char __pyx_k_load_traceback[] = "load_traceback"; -static const char __pyx_k_spawning_stack[] = "spawning_stack"; -static const char __pyx_k_Greenlet_unlink[] = "Greenlet.unlink"; -static const char __pyx_k_raise_exception[] = "_raise_exception"; -static const char __pyx_k_wait_on_objects[] = "wait_on_objects"; -static const char __pyx_k_Greenlet_rawlink[] = "Greenlet.rawlink"; -static const char __pyx_k_dummy_event_stop[] = "_dummy_event.stop"; -static const char __pyx_k_gevent__greenlet[] = "gevent._greenlet"; -static const char __pyx_k_iwait_on_objects[] = "iwait_on_objects"; -static const char __pyx_k_dummy_event_close[] = "_dummy_event.close"; -static const char __pyx_k_dummy_event_start[] = "_dummy_event.start"; -static const char __pyx_k_gevent__hub_local[] = "gevent._hub_local"; -static const char __pyx_k_gevent_exceptions[] = "gevent.exceptions"; -static const char __pyx_k_greenlet_imported[] = "_greenlet_imported"; -static const char __pyx_k_spawn_tree_locals[] = "spawn_tree_locals"; -static const char __pyx_k_Greenlet_has_links[] = "Greenlet.has_links"; -static const char __pyx_k_InvalidSwitchError[] = "InvalidSwitchError"; -static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; -static const char __pyx_k_start_new_or_dummy[] = "_start_new_or_dummy"; -static const char __pyx_k_Expected_callable_r[] = "Expected callable: %r"; -static const char __pyx_k_Greenlet_link_value[] = "Greenlet.link_value"; -static const char __pyx_k_Greenlet_successful[] = "Greenlet.successful"; -static const char __pyx_k_Greenlet_unlink_all[] = "Greenlet.unlink_all"; -static const char __pyx_k_track_greenlet_tree[] = "track_greenlet_tree"; -static const char __pyx_k_Greenlet__formatinfo[] = "Greenlet._formatinfo"; -static const char __pyx_k_Greenlet_spawn_later[] = "Greenlet.spawn_later"; -static const char __pyx_k_Greenlet_start_later[] = "Greenlet.start_later"; -static const char __pyx_k_spawning_stack_limit[] = "spawning_stack_limit"; -static const char __pyx_k_cancelled_start_event[] = "_cancelled_start_event"; -static const char __pyx_k_spawning_stack_frames[] = "_spawning_stack_frames"; -static const char __pyx_k_start_completed_event[] = "_start_completed_event"; -static const char __pyx_k_Greenlet__notify_links[] = "Greenlet._notify_links"; -static const char __pyx_k_gevent__hub_primitives[] = "gevent._hub_primitives"; -static const char __pyx_k_src_gevent_greenlet_py[] = "src\\gevent\\greenlet.py"; -static const char __pyx_k_Greenlet_link_exception[] = "Greenlet.link_exception"; -static const char __pyx_k_Greenlet_spawning_stack[] = "Greenlet.spawning_stack"; -static const char __pyx_k_Greenlet__raise_exception[] = "Greenlet._raise_exception"; -static const char __pyx_k_Cannot_start_the_dummy_event[] = "Cannot start the dummy event"; -static const char __pyx_k_Pyx_CFunc_object____list____ob[] = "__Pyx_CFunc_object____list____object____object___to_py.<locals>.wrap"; -static const char __pyx_k_Invalid_switch_into_Greenlet_get[] = "Invalid switch into Greenlet.get(): %r"; -static const char __pyx_k_Invalid_switch_into_Greenlet_joi[] = "Invalid switch into Greenlet.join(): %r"; -static const char __pyx_k_Pyx_CFunc_object____list____ob_2[] = "__Pyx_CFunc_object____list____object___to_py.<locals>.wrap"; -static const char __pyx_k_The_run_argument_or_self__run_mu[] = "The run argument or self._run must be callable"; -static PyObject *__pyx_n_s_AssertionError; -static PyObject *__pyx_n_s_AttributeError; -static PyObject *__pyx_kp_s_Cannot_start_the_dummy_event; -static PyObject *__pyx_kp_s_Expected_callable_r; -static PyObject *__pyx_n_s_GEVENT_CONFIG; -static PyObject *__pyx_n_s_Greenlet; -static PyObject *__pyx_n_s_GreenletExit; -static PyObject *__pyx_n_s_Greenlet__formatinfo; -static PyObject *__pyx_n_s_Greenlet__notify_links; -static PyObject *__pyx_n_s_Greenlet__raise_exception; -static PyObject *__pyx_n_s_Greenlet__run; -static PyObject *__pyx_kp_s_Greenlet_d; -static PyObject *__pyx_n_s_Greenlet_get; -static PyObject *__pyx_n_s_Greenlet_has_links; -static PyObject *__pyx_n_s_Greenlet_join; -static PyObject *__pyx_n_s_Greenlet_kill; -static PyObject *__pyx_n_s_Greenlet_link; -static PyObject *__pyx_n_s_Greenlet_link_exception; -static PyObject *__pyx_n_s_Greenlet_link_value; -static PyObject *__pyx_n_s_Greenlet_name; -static PyObject *__pyx_n_s_Greenlet_rawlink; -static PyObject *__pyx_n_s_Greenlet_ready; -static PyObject *__pyx_n_s_Greenlet_run; -static PyObject *__pyx_n_s_Greenlet_spawn; -static PyObject *__pyx_n_s_Greenlet_spawn_later; -static PyObject *__pyx_n_s_Greenlet_spawning_stack; -static PyObject *__pyx_n_s_Greenlet_start; -static PyObject *__pyx_n_s_Greenlet_start_later; -static PyObject *__pyx_n_s_Greenlet_successful; -static PyObject *__pyx_n_s_Greenlet_throw; -static PyObject *__pyx_n_s_Greenlet_unlink; -static PyObject *__pyx_n_s_Greenlet_unlink_all; -static PyObject *__pyx_n_s_InvalidSwitchError; -static PyObject *__pyx_kp_s_Invalid_switch_into_Greenlet_get; -static PyObject *__pyx_kp_s_Invalid_switch_into_Greenlet_joi; -static PyObject *__pyx_n_s_Lazy; -static PyObject *__pyx_n_s_NameError; -static PyObject *__pyx_n_s_PYPY; -static PyObject *__pyx_n_s_PYPY_2; -static PyObject *__pyx_n_s_Pyx_CFunc_object____list____ob; -static PyObject *__pyx_n_s_Pyx_CFunc_object____list____ob_2; -static PyObject *__pyx_n_s_SpawnedLink; -static PyObject *__pyx_kp_s_The_run_argument_or_self__run_mu; -static PyObject *__pyx_n_s_Timeout; -static PyObject *__pyx_n_s_TypeError; -static PyObject *__pyx_n_s_ValueError; -static PyObject *__pyx_n_s_Waiter; -static PyObject *__pyx_kp_s__2; -static PyObject *__pyx_kp_s__3; -static PyObject *__pyx_kp_s__4; -static PyObject *__pyx_kp_s__5; -static PyObject *__pyx_kp_s__6; -static PyObject *__pyx_kp_s__7; -static PyObject *__pyx_n_s_active; -static PyObject *__pyx_n_s_alive; -static PyObject *__pyx_n_s_all; -static PyObject *__pyx_n_s_args; -static PyObject *__pyx_n_s_block; -static PyObject *__pyx_n_s_bool; -static PyObject *__pyx_n_s_call; -static PyObject *__pyx_n_s_callback; -static PyObject *__pyx_n_s_cancel; -static PyObject *__pyx_n_s_cancelled_start_event; -static PyObject *__pyx_n_s_cb; -static PyObject *__pyx_n_s_cfunc_to_py; -static PyObject *__pyx_n_s_class; -static PyObject *__pyx_n_s_cline_in_traceback; -static PyObject *__pyx_n_s_close; -static PyObject *__pyx_n_s_cls; -static PyObject *__pyx_n_s_config; -static PyObject *__pyx_n_s_continuation; -static PyObject *__pyx_n_s_continulet; -static PyObject *__pyx_n_s_continulet_2; -static PyObject *__pyx_n_s_count; -static PyObject *__pyx_n_s_dead; -static PyObject *__pyx_n_s_dict; -static PyObject *__pyx_n_s_dummy_event_close; -static PyObject *__pyx_n_s_dummy_event_start; -static PyObject *__pyx_n_s_dummy_event_stop; -static PyObject *__pyx_n_s_dump_traceback; -static PyObject *__pyx_n_s_exc_info; -static PyObject *__pyx_n_s_exception; -static PyObject *__pyx_n_s_f_back; -static PyObject *__pyx_n_s_f_code; -static PyObject *__pyx_n_s_f_lineno; -static PyObject *__pyx_n_s_formatinfo; -static PyObject *__pyx_n_s_g; -static PyObject *__pyx_n_s_get; -static PyObject *__pyx_n_s_get_2; -static PyObject *__pyx_n_s_get_hub_class; -static PyObject *__pyx_n_s_get_hub_noargs; -static PyObject *__pyx_n_s_getcurrent; -static PyObject *__pyx_n_s_getframe; -static PyObject *__pyx_n_s_gevent; -static PyObject *__pyx_n_s_gevent__compat; -static PyObject *__pyx_n_s_gevent__config; -static PyObject *__pyx_n_s_gevent__greenlet; -static PyObject *__pyx_n_s_gevent__hub_local; -static PyObject *__pyx_n_s_gevent__hub_primitives; -static PyObject *__pyx_n_s_gevent__tblib; -static PyObject *__pyx_n_s_gevent__util; -static PyObject *__pyx_n_s_gevent_exceptions; -static PyObject *__pyx_n_s_gevent_timeout; -static PyObject *__pyx_n_s_glet; -static PyObject *__pyx_n_s_greenlet; -static PyObject *__pyx_n_s_greenlet__init; -static PyObject *__pyx_n_s_greenlet_imported; -static PyObject *__pyx_n_s_greenlet_init; -static PyObject *__pyx_n_s_greenlets; -static PyObject *__pyx_n_s_handle_error; -static PyObject *__pyx_n_s_has_links; -static PyObject *__pyx_n_s_hex; -static PyObject *__pyx_n_s_id; -static PyObject *__pyx_n_s_ident_registry; -static PyObject *__pyx_n_s_import; -static PyObject *__pyx_n_s_import_c_accel; -static PyObject *__pyx_n_s_init; -static PyObject *__pyx_n_s_items; -static PyObject *__pyx_n_s_iwait; -static PyObject *__pyx_n_s_iwait_on_objects; -static PyObject *__pyx_n_s_join; -static PyObject *__pyx_n_s_joinall; -static PyObject *__pyx_n_s_kill; -static PyObject *__pyx_n_s_kill_2; -static PyObject *__pyx_n_s_killall; -static PyObject *__pyx_n_s_kwargs; -static PyObject *__pyx_n_s_lambda; -static PyObject *__pyx_n_s_link; -static PyObject *__pyx_n_s_link_exception; -static PyObject *__pyx_n_s_link_value; -static PyObject *__pyx_n_s_load_traceback; -static PyObject *__pyx_n_s_loop; -static PyObject *__pyx_n_s_main; -static PyObject *__pyx_n_s_minimal_ident; -static PyObject *__pyx_n_s_name; -static PyObject *__pyx_n_s_name_2; -static PyObject *__pyx_n_s_nonzero; -static PyObject *__pyx_n_s_notify_links; -static PyObject *__pyx_n_s_parent; -static PyObject *__pyx_n_s_pending; -static PyObject *__pyx_n_s_pop; -static PyObject *__pyx_n_s_pyx_capi; -static PyObject *__pyx_n_s_pyx_vtable; -static PyObject *__pyx_n_s_raise_error; -static PyObject *__pyx_n_s_raise_exception; -static PyObject *__pyx_n_s_rawlink; -static PyObject *__pyx_n_s_readproperty; -static PyObject *__pyx_n_s_ready; -static PyObject *__pyx_n_s_ref; -static PyObject *__pyx_n_s_remove; -static PyObject *__pyx_n_s_reraise; -static PyObject *__pyx_n_s_result; -static PyObject *__pyx_n_s_reversed; -static PyObject *__pyx_n_s_run; -static PyObject *__pyx_n_s_run_2; -static PyObject *__pyx_n_s_run_callback; -static PyObject *__pyx_kp_s_s_s; -static PyObject *__pyx_kp_s_s_s_at_s; -static PyObject *__pyx_n_s_seconds; -static PyObject *__pyx_n_s_self; -static PyObject *__pyx_n_s_self_2; -static PyObject *__pyx_n_s_slots; -static PyObject *__pyx_n_s_source; -static PyObject *__pyx_n_s_spawn; -static PyObject *__pyx_n_s_spawn_later; -static PyObject *__pyx_n_s_spawn_tree_locals; -static PyObject *__pyx_n_s_spawning_stack; -static PyObject *__pyx_n_s_spawning_stack_frames; -static PyObject *__pyx_n_s_spawning_stack_limit; -static PyObject *__pyx_kp_s_src_gevent_greenlet_py; -static PyObject *__pyx_n_s_start; -static PyObject *__pyx_n_s_start_completed_event; -static PyObject *__pyx_n_s_start_later; -static PyObject *__pyx_n_s_start_new_or_dummy; -static PyObject *__pyx_n_s_stop; -static PyObject *__pyx_kp_s_stringsource; -static PyObject *__pyx_n_s_successful; -static PyObject *__pyx_n_s_switch; -static PyObject *__pyx_n_s_sys; -static PyObject *__pyx_n_s_sys_exc_info; -static PyObject *__pyx_n_s_sys_getframe; -static PyObject *__pyx_n_s_t; -static PyObject *__pyx_n_s_test; -static PyObject *__pyx_n_s_threadlocal; -static PyObject *__pyx_n_s_throw; -static PyObject *__pyx_n_s_timeout; -static PyObject *__pyx_n_s_timer; -static PyObject *__pyx_n_s_track_greenlet_tree; -static PyObject *__pyx_n_s_unlink; -static PyObject *__pyx_n_s_unlink_all; -static PyObject *__pyx_n_s_wait; -static PyObject *__pyx_n_s_wait_on_objects; -static PyObject *__pyx_n_s_waiter; -static PyObject *__pyx_n_s_waiter_2; -static PyObject *__pyx_n_s_weakref; -static PyObject *__pyx_n_s_wrap; -static PyObject *__pyx_n_s_wref; -static PyObject *__pyx_lambda_funcdef_6gevent_9_greenlet_lambda(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ -static int __pyx_pf_6gevent_9_greenlet_11SpawnedLink___init__(struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *__pyx_v_self, PyObject *__pyx_v_callback); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_11SpawnedLink_2__call__(struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *__pyx_v_self, PyObject *__pyx_v_source); /* proto */ -static Py_hash_t __pyx_pf_6gevent_9_greenlet_11SpawnedLink_4__hash__(struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_11SpawnedLink_6__eq__(struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *__pyx_v_self, PyObject *__pyx_v_other); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_11SpawnedLink_8__str__(struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_11SpawnedLink_10__repr__(struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_11SpawnedLink_12__getattr__(struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *__pyx_v_self, PyObject *__pyx_v_item); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_11SpawnedLink_8callback___get__(struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_9_greenlet_11SpawnedLink_8callback_2__set__(struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static int __pyx_pf_6gevent_9_greenlet_11SpawnedLink_8callback_4__del__(struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_18SuccessSpawnedLink___call__(struct __pyx_obj_6gevent_9_greenlet_SuccessSpawnedLink *__pyx_v_self, PyObject *__pyx_v_source); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_18FailureSpawnedLink___call__(struct __pyx_obj_6gevent_9_greenlet_FailureSpawnedLink *__pyx_v_self, PyObject *__pyx_v_source); /* proto */ -static int __pyx_pf_6gevent_9_greenlet_6_Frame___init__(struct __pyx_obj_6gevent_9_greenlet__Frame *__pyx_v_self, PyObject *__pyx_v_f_code, PyObject *__pyx_v_f_lineno, PyObject *__pyx_v_f_back); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_6_Frame_9f_globals___get__(CYTHON_UNUSED struct __pyx_obj_6gevent_9_greenlet__Frame *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_6_Frame_6f_code___get__(struct __pyx_obj_6gevent_9_greenlet__Frame *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_6_Frame_8f_lineno___get__(struct __pyx_obj_6gevent_9_greenlet__Frame *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_6_Frame_6f_back___get__(struct __pyx_obj_6gevent_9_greenlet__Frame *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_9_greenlet_8Greenlet___init__(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, PyObject *__pyx_v_run, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_2spawning_stack(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_13minimal_ident___get__(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_4name(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_6_raise_exception(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_4loop___get__(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_9_greenlet_8Greenlet_8__nonzero__(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_4dead___get__(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_7started___get__(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_10ready(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_12successful(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_14__repr__(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_16_formatinfo(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_9exception___get__(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_8exc_info___get__(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_18throw(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, PyObject *__pyx_v_args); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_20start(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_22start_later(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, PyObject *__pyx_v_seconds); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_24spawn(PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_26spawn_later(PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_seconds, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_28kill(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, PyObject *__pyx_v_exception, PyObject *__pyx_v_block, PyObject *__pyx_v_timeout); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_30get(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, PyObject *__pyx_v_block, PyObject *__pyx_v_timeout); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_32join(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, PyObject *__pyx_v_timeout); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_34run(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_36_run(CYTHON_UNUSED struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_38has_links(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_40rawlink(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, PyObject *__pyx_v_callback); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_42link(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, PyObject *__pyx_v_callback, PyObject *__pyx_v_SpawnedLink); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_44unlink(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, PyObject *__pyx_v_callback); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_46unlink_all(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_48link_value(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, PyObject *__pyx_v_callback, PyObject *__pyx_v_SpawnedLink); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_50link_exception(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, PyObject *__pyx_v_callback, PyObject *__pyx_v_SpawnedLink); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_52_notify_links(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_5value___get__(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_4args___get__(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_6kwargs___get__(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_17spawning_greenlet___get__(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_17spawn_tree_locals___get__(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_9_greenlet_8Greenlet_17spawn_tree_locals_2__set__(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static int __pyx_pf_6gevent_9_greenlet_8Greenlet_17spawn_tree_locals_4__del__(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_22_spawning_stack_frames___get__(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_9_greenlet_12_dummy_event___init__(struct __pyx_obj_6gevent_9_greenlet__dummy_event *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_12_dummy_event_2stop(struct __pyx_obj_6gevent_9_greenlet__dummy_event *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_12_dummy_event_4start(struct __pyx_obj_6gevent_9_greenlet__dummy_event *__pyx_v_self, PyObject *__pyx_v_cb); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_12_dummy_event_6close(struct __pyx_obj_6gevent_9_greenlet__dummy_event *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_12_dummy_event_7pending___get__(struct __pyx_obj_6gevent_9_greenlet__dummy_event *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_12_dummy_event_6active___get__(struct __pyx_obj_6gevent_9_greenlet__dummy_event *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet__kill(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_glet, PyObject *__pyx_v_exception, PyObject *__pyx_v_waiter); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_2joinall(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_greenlets, PyObject *__pyx_v_timeout, PyObject *__pyx_v_raise_error, PyObject *__pyx_v_count); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_7__defaults__(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ -static PyObject *__pyx_pf_6gevent_9_greenlet_4killall(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_greenlets, PyObject *__pyx_v_exception, PyObject *__pyx_v_block, PyObject *__pyx_v_timeout); /* proto */ -static PyObject *__pyx_pf_11cfunc_dot_to_py_54__Pyx_CFunc_object____list____object____object___to_py_wrap(PyObject *__pyx_self, PyObject *__pyx_v_greenlets, PyObject *__pyx_v_exception, PyObject *__pyx_v_waiter); /* proto */ -static PyObject *__pyx_pf_11cfunc_dot_to_py_44__Pyx_CFunc_object____list____object___to_py_wrap(PyObject *__pyx_self, PyObject *__pyx_v_greenlets, PyObject *__pyx_v_exception); /* proto */ -static PyObject *__pyx_tp_new_6gevent_9_greenlet_SpawnedLink(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_9_greenlet_SuccessSpawnedLink(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_9_greenlet_FailureSpawnedLink(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_9_greenlet__Frame(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_9_greenlet_Greenlet(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_9_greenlet__dummy_event(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_object____list____object___to_py(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_items = {0, &__pyx_n_s_items, 0, 0, 0}; -static PyObject *__pyx_int_0; -static PyObject *__pyx_int_10; -static PyObject *__pyx_k__9; -static PyObject *__pyx_k__14; -static PyObject *__pyx_k__15; -static PyObject *__pyx_k__16; -static PyObject *__pyx_tuple_; -static PyObject *__pyx_tuple__8; -static PyObject *__pyx_tuple__10; -static PyObject *__pyx_tuple__11; -static PyObject *__pyx_tuple__12; -static PyObject *__pyx_tuple__13; -static PyObject *__pyx_tuple__17; -static PyObject *__pyx_tuple__18; -static PyObject *__pyx_tuple__19; -static PyObject *__pyx_tuple__21; -static PyObject *__pyx_tuple__23; -static PyObject *__pyx_tuple__24; -static PyObject *__pyx_tuple__25; -static PyObject *__pyx_tuple__27; -static PyObject *__pyx_tuple__29; -static PyObject *__pyx_tuple__31; -static PyObject *__pyx_tuple__33; -static PyObject *__pyx_tuple__35; -static PyObject *__pyx_tuple__37; -static PyObject *__pyx_tuple__39; -static PyObject *__pyx_tuple__41; -static PyObject *__pyx_tuple__43; -static PyObject *__pyx_tuple__45; -static PyObject *__pyx_tuple__47; -static PyObject *__pyx_tuple__49; -static PyObject *__pyx_tuple__51; -static PyObject *__pyx_tuple__53; -static PyObject *__pyx_tuple__55; -static PyObject *__pyx_tuple__57; -static PyObject *__pyx_tuple__59; -static PyObject *__pyx_tuple__61; -static PyObject *__pyx_tuple__63; -static PyObject *__pyx_tuple__65; -static PyObject *__pyx_tuple__67; -static PyObject *__pyx_tuple__69; -static PyObject *__pyx_tuple__71; -static PyObject *__pyx_tuple__73; -static PyObject *__pyx_tuple__74; -static PyObject *__pyx_tuple__76; -static PyObject *__pyx_tuple__78; -static PyObject *__pyx_tuple__80; -static PyObject *__pyx_tuple__82; -static PyObject *__pyx_tuple__84; -static PyObject *__pyx_codeobj__20; -static PyObject *__pyx_codeobj__22; -static PyObject *__pyx_codeobj__26; -static PyObject *__pyx_codeobj__28; -static PyObject *__pyx_codeobj__30; -static PyObject *__pyx_codeobj__32; -static PyObject *__pyx_codeobj__34; -static PyObject *__pyx_codeobj__36; -static PyObject *__pyx_codeobj__38; -static PyObject *__pyx_codeobj__40; -static PyObject *__pyx_codeobj__42; -static PyObject *__pyx_codeobj__44; -static PyObject *__pyx_codeobj__46; -static PyObject *__pyx_codeobj__48; -static PyObject *__pyx_codeobj__50; -static PyObject *__pyx_codeobj__52; -static PyObject *__pyx_codeobj__54; -static PyObject *__pyx_codeobj__56; -static PyObject *__pyx_codeobj__58; -static PyObject *__pyx_codeobj__60; -static PyObject *__pyx_codeobj__62; -static PyObject *__pyx_codeobj__64; -static PyObject *__pyx_codeobj__66; -static PyObject *__pyx_codeobj__68; -static PyObject *__pyx_codeobj__70; -static PyObject *__pyx_codeobj__72; -static PyObject *__pyx_codeobj__75; -static PyObject *__pyx_codeobj__77; -static PyObject *__pyx_codeobj__79; -static PyObject *__pyx_codeobj__81; -static PyObject *__pyx_codeobj__83; -static PyObject *__pyx_codeobj__85; -/* Late includes */ - -/* "src/gevent/greenlet.py":46 - * # error. - * locals()['getcurrent'] = __import__('greenlet').getcurrent - * locals()['greenlet_init'] = lambda: None # <<<<<<<<<<<<<< - * locals()['Waiter'] = _waiter.Waiter - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_6lambda(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyMethodDef __pyx_mdef_6gevent_9_greenlet_6lambda = {"lambda", (PyCFunction)__pyx_pw_6gevent_9_greenlet_6lambda, METH_NOARGS, 0}; -static PyObject *__pyx_pw_6gevent_9_greenlet_6lambda(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("lambda (wrapper)", 0); - __pyx_r = __pyx_lambda_funcdef_6gevent_9_greenlet_lambda(__pyx_self); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_lambda_funcdef_6gevent_9_greenlet_lambda(CYTHON_UNUSED PyObject *__pyx_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("lambda", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":63 - * __slots__ = ['callback'] - * - * def __init__(self, callback): # <<<<<<<<<<<<<< - * if not callable(callback): - * raise TypeError("Expected callable: %r" % (callback, )) - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_9_greenlet_11SpawnedLink_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_9_greenlet_11SpawnedLink_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_callback = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback,0}; - PyObject* values[1] = {0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 63, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 1) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - } - __pyx_v_callback = values[0]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 63, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._greenlet.SpawnedLink.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_9_greenlet_11SpawnedLink___init__(((struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *)__pyx_v_self), __pyx_v_callback); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_9_greenlet_11SpawnedLink___init__(struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *__pyx_v_self, PyObject *__pyx_v_callback) { - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("__init__", 0); - - /* "src/gevent/greenlet.py":64 - * - * def __init__(self, callback): - * if not callable(callback): # <<<<<<<<<<<<<< - * raise TypeError("Expected callable: %r" % (callback, )) - * self.callback = callback - */ - __pyx_t_1 = __Pyx_PyCallable_Check(__pyx_v_callback); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 64, __pyx_L1_error) - __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0); - if (unlikely(__pyx_t_2)) { - - /* "src/gevent/greenlet.py":65 - * def __init__(self, callback): - * if not callable(callback): - * raise TypeError("Expected callable: %r" % (callback, )) # <<<<<<<<<<<<<< - * self.callback = callback - * - */ - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 65, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_INCREF(__pyx_v_callback); - __Pyx_GIVEREF(__pyx_v_callback); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_callback); - __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Expected_callable_r, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 65, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 65, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 65, __pyx_L1_error) - - /* "src/gevent/greenlet.py":64 - * - * def __init__(self, callback): - * if not callable(callback): # <<<<<<<<<<<<<< - * raise TypeError("Expected callable: %r" % (callback, )) - * self.callback = callback - */ - } - - /* "src/gevent/greenlet.py":66 - * if not callable(callback): - * raise TypeError("Expected callable: %r" % (callback, )) - * self.callback = callback # <<<<<<<<<<<<<< - * - * def __call__(self, source): - */ - __Pyx_INCREF(__pyx_v_callback); - __Pyx_GIVEREF(__pyx_v_callback); - __Pyx_GOTREF(__pyx_v_self->callback); - __Pyx_DECREF(__pyx_v_self->callback); - __pyx_v_self->callback = __pyx_v_callback; - - /* "src/gevent/greenlet.py":63 - * __slots__ = ['callback'] - * - * def __init__(self, callback): # <<<<<<<<<<<<<< - * if not callable(callback): - * raise TypeError("Expected callable: %r" % (callback, )) - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent._greenlet.SpawnedLink.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":68 - * self.callback = callback - * - * def __call__(self, source): # <<<<<<<<<<<<<< - * g = greenlet(self.callback, get_hub()) - * g.switch(source) - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_11SpawnedLink_3__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_9_greenlet_11SpawnedLink_3__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_source = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__call__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0}; - PyObject* values[1] = {0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_source)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__call__") < 0)) __PYX_ERR(0, 68, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 1) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - } - __pyx_v_source = values[0]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__call__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 68, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._greenlet.SpawnedLink.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_9_greenlet_11SpawnedLink_2__call__(((struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *)__pyx_v_self), __pyx_v_source); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_11SpawnedLink_2__call__(struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *__pyx_v_self, PyObject *__pyx_v_source) { - PyGreenlet *__pyx_v_g = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("__call__", 0); - - /* "src/gevent/greenlet.py":69 - * - * def __call__(self, source): - * g = greenlet(self.callback, get_hub()) # <<<<<<<<<<<<<< - * g.switch(source) - * - */ - __pyx_t_1 = ((PyObject *)__pyx_f_6gevent_11__hub_local_get_hub_noargs(0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 69, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_v_self->callback); - __Pyx_GIVEREF(__pyx_v_self->callback); - PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self->callback); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1); - __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6gevent_9_greenlet_greenlet), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_g = ((PyGreenlet *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":70 - * def __call__(self, source): - * g = greenlet(self.callback, get_hub()) - * g.switch(source) # <<<<<<<<<<<<<< - * - * def __hash__(self): - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_g), __pyx_n_s_switch); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 70, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_source); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 70, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_source}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 70, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_source}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 70, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 70, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(__pyx_v_source); - __Pyx_GIVEREF(__pyx_v_source); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_source); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 70, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":68 - * self.callback = callback - * - * def __call__(self, source): # <<<<<<<<<<<<<< - * g = greenlet(self.callback, get_hub()) - * g.switch(source) - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent._greenlet.SpawnedLink.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_g); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":72 - * g.switch(source) - * - * def __hash__(self): # <<<<<<<<<<<<<< - * return hash(self.callback) - * - */ - -/* Python wrapper */ -static Py_hash_t __pyx_pw_6gevent_9_greenlet_11SpawnedLink_5__hash__(PyObject *__pyx_v_self); /*proto*/ -static Py_hash_t __pyx_pw_6gevent_9_greenlet_11SpawnedLink_5__hash__(PyObject *__pyx_v_self) { - Py_hash_t __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__hash__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_11SpawnedLink_4__hash__(((struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static Py_hash_t __pyx_pf_6gevent_9_greenlet_11SpawnedLink_4__hash__(struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *__pyx_v_self) { - Py_hash_t __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - Py_hash_t __pyx_t_2; - __Pyx_RefNannySetupContext("__hash__", 0); - - /* "src/gevent/greenlet.py":73 - * - * def __hash__(self): - * return hash(self.callback) # <<<<<<<<<<<<<< - * - * def __eq__(self, other): - */ - __pyx_t_1 = __pyx_v_self->callback; - __Pyx_INCREF(__pyx_t_1); - __pyx_t_2 = PyObject_Hash(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_hash_t)-1))) __PYX_ERR(0, 73, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_2; - goto __pyx_L0; - - /* "src/gevent/greenlet.py":72 - * g.switch(source) - * - * def __hash__(self): # <<<<<<<<<<<<<< - * return hash(self.callback) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._greenlet.SpawnedLink.__hash__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - if (unlikely(__pyx_r == -1) && !PyErr_Occurred()) __pyx_r = -2; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":75 - * return hash(self.callback) - * - * def __eq__(self, other): # <<<<<<<<<<<<<< - * return self.callback == getattr(other, 'callback', other) - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_11SpawnedLink_7__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/ -static PyObject *__pyx_pw_6gevent_9_greenlet_11SpawnedLink_7__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__eq__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_11SpawnedLink_6__eq__(((struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *)__pyx_v_self), ((PyObject *)__pyx_v_other)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_11SpawnedLink_6__eq__(struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *__pyx_v_self, PyObject *__pyx_v_other) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("__eq__", 0); - - /* "src/gevent/greenlet.py":76 - * - * def __eq__(self, other): - * return self.callback == getattr(other, 'callback', other) # <<<<<<<<<<<<<< - * - * def __str__(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_GetAttr3(__pyx_v_other, __pyx_n_s_callback, __pyx_v_other); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 76, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyObject_RichCompare(__pyx_v_self->callback, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 76, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "src/gevent/greenlet.py":75 - * return hash(self.callback) - * - * def __eq__(self, other): # <<<<<<<<<<<<<< - * return self.callback == getattr(other, 'callback', other) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent._greenlet.SpawnedLink.__eq__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":78 - * return self.callback == getattr(other, 'callback', other) - * - * def __str__(self): # <<<<<<<<<<<<<< - * return str(self.callback) - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_11SpawnedLink_9__str__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_9_greenlet_11SpawnedLink_9__str__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__str__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_11SpawnedLink_8__str__(((struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_11SpawnedLink_8__str__(struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__str__", 0); - - /* "src/gevent/greenlet.py":79 - * - * def __str__(self): - * return str(self.callback) # <<<<<<<<<<<<<< - * - * def __repr__(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyString_Type)), __pyx_v_self->callback); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 79, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/greenlet.py":78 - * return self.callback == getattr(other, 'callback', other) - * - * def __str__(self): # <<<<<<<<<<<<<< - * return str(self.callback) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._greenlet.SpawnedLink.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":81 - * return str(self.callback) - * - * def __repr__(self): # <<<<<<<<<<<<<< - * return repr(self.callback) - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_11SpawnedLink_11__repr__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_9_greenlet_11SpawnedLink_11__repr__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_11SpawnedLink_10__repr__(((struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_11SpawnedLink_10__repr__(struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("__repr__", 0); - - /* "src/gevent/greenlet.py":82 - * - * def __repr__(self): - * return repr(self.callback) # <<<<<<<<<<<<<< - * - * def __getattr__(self, item): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_v_self->callback; - __Pyx_INCREF(__pyx_t_1); - __pyx_t_2 = PyObject_Repr(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 82, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "src/gevent/greenlet.py":81 - * return str(self.callback) - * - * def __repr__(self): # <<<<<<<<<<<<<< - * return repr(self.callback) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent._greenlet.SpawnedLink.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":84 - * return repr(self.callback) - * - * def __getattr__(self, item): # <<<<<<<<<<<<<< - * assert item != 'callback' - * return getattr(self.callback, item) - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_11SpawnedLink_13__getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_item); /*proto*/ -static PyObject *__pyx_pw_6gevent_9_greenlet_11SpawnedLink_13__getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_item) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__getattr__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_11SpawnedLink_12__getattr__(((struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *)__pyx_v_self), ((PyObject *)__pyx_v_item)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_11SpawnedLink_12__getattr__(struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *__pyx_v_self, PyObject *__pyx_v_item) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("__getattr__", 0); - - /* "src/gevent/greenlet.py":85 - * - * def __getattr__(self, item): - * assert item != 'callback' # <<<<<<<<<<<<<< - * return getattr(self.callback, item) - * - */ - #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_item, __pyx_n_s_callback, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 85, __pyx_L1_error) - if (unlikely(!__pyx_t_1)) { - PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 85, __pyx_L1_error) - } - } - #endif - - /* "src/gevent/greenlet.py":86 - * def __getattr__(self, item): - * assert item != 'callback' - * return getattr(self.callback, item) # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __pyx_v_self->callback; - __Pyx_INCREF(__pyx_t_2); - __pyx_t_3 = __Pyx_GetAttr(__pyx_t_2, __pyx_v_item); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 86, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - - /* "src/gevent/greenlet.py":84 - * return repr(self.callback) - * - * def __getattr__(self, item): # <<<<<<<<<<<<<< - * assert item != 'callback' - * return getattr(self.callback, item) - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent._greenlet.SpawnedLink.__getattr__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/_greenlet.pxd":57 - * - * cdef class SpawnedLink: - * cdef public object callback # <<<<<<<<<<<<<< - * - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_11SpawnedLink_8callback_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_9_greenlet_11SpawnedLink_8callback_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_11SpawnedLink_8callback___get__(((struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_11SpawnedLink_8callback___get__(struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->callback); - __pyx_r = __pyx_v_self->callback; - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static int __pyx_pw_6gevent_9_greenlet_11SpawnedLink_8callback_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_6gevent_9_greenlet_11SpawnedLink_8callback_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_11SpawnedLink_8callback_2__set__(((struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *)__pyx_v_self), ((PyObject *)__pyx_v_value)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_9_greenlet_11SpawnedLink_8callback_2__set__(struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__", 0); - __Pyx_INCREF(__pyx_v_value); - __Pyx_GIVEREF(__pyx_v_value); - __Pyx_GOTREF(__pyx_v_self->callback); - __Pyx_DECREF(__pyx_v_self->callback); - __pyx_v_self->callback = __pyx_v_value; - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static int __pyx_pw_6gevent_9_greenlet_11SpawnedLink_8callback_5__del__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_6gevent_9_greenlet_11SpawnedLink_8callback_5__del__(PyObject *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_11SpawnedLink_8callback_4__del__(((struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_9_greenlet_11SpawnedLink_8callback_4__del__(struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__del__", 0); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->callback); - __Pyx_DECREF(__pyx_v_self->callback); - __pyx_v_self->callback = Py_None; - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":96 - * __slots__ = [] - * - * def __call__(self, source): # <<<<<<<<<<<<<< - * if source.successful(): - * return SpawnedLink.__call__(self, source) - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_18SuccessSpawnedLink_1__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_9_greenlet_18SuccessSpawnedLink_1__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_source = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__call__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0}; - PyObject* values[1] = {0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_source)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__call__") < 0)) __PYX_ERR(0, 96, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 1) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - } - __pyx_v_source = values[0]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__call__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 96, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._greenlet.SuccessSpawnedLink.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_9_greenlet_18SuccessSpawnedLink___call__(((struct __pyx_obj_6gevent_9_greenlet_SuccessSpawnedLink *)__pyx_v_self), __pyx_v_source); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_18SuccessSpawnedLink___call__(struct __pyx_obj_6gevent_9_greenlet_SuccessSpawnedLink *__pyx_v_self, PyObject *__pyx_v_source) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - int __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - __Pyx_RefNannySetupContext("__call__", 0); - - /* "src/gevent/greenlet.py":97 - * - * def __call__(self, source): - * if source.successful(): # <<<<<<<<<<<<<< - * return SpawnedLink.__call__(self, source) - * - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_source, __pyx_n_s_successful); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 97, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 97, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 97, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 97, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (__pyx_t_4) { - - /* "src/gevent/greenlet.py":98 - * def __call__(self, source): - * if source.successful(): - * return SpawnedLink.__call__(self, source) # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_6gevent_9_greenlet_SpawnedLink), __pyx_n_s_call); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 98, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - __pyx_t_5 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_5 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, ((PyObject *)__pyx_v_self), __pyx_v_source}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 98, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, ((PyObject *)__pyx_v_self), __pyx_v_source}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 98, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 98, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (__pyx_t_3) { - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL; - } - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, ((PyObject *)__pyx_v_self)); - __Pyx_INCREF(__pyx_v_source); - __Pyx_GIVEREF(__pyx_v_source); - PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_source); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 98, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/greenlet.py":97 - * - * def __call__(self, source): - * if source.successful(): # <<<<<<<<<<<<<< - * return SpawnedLink.__call__(self, source) - * - */ - } - - /* "src/gevent/greenlet.py":96 - * __slots__ = [] - * - * def __call__(self, source): # <<<<<<<<<<<<<< - * if source.successful(): - * return SpawnedLink.__call__(self, source) - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_AddTraceback("gevent._greenlet.SuccessSpawnedLink.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":108 - * __slots__ = [] - * - * def __call__(self, source): # <<<<<<<<<<<<<< - * if not source.successful(): - * return SpawnedLink.__call__(self, source) - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_18FailureSpawnedLink_1__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_9_greenlet_18FailureSpawnedLink_1__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_source = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__call__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0}; - PyObject* values[1] = {0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_source)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__call__") < 0)) __PYX_ERR(0, 108, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 1) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - } - __pyx_v_source = values[0]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__call__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 108, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._greenlet.FailureSpawnedLink.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_9_greenlet_18FailureSpawnedLink___call__(((struct __pyx_obj_6gevent_9_greenlet_FailureSpawnedLink *)__pyx_v_self), __pyx_v_source); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_18FailureSpawnedLink___call__(struct __pyx_obj_6gevent_9_greenlet_FailureSpawnedLink *__pyx_v_self, PyObject *__pyx_v_source) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - int __pyx_t_5; - int __pyx_t_6; - PyObject *__pyx_t_7 = NULL; - __Pyx_RefNannySetupContext("__call__", 0); - - /* "src/gevent/greenlet.py":109 - * - * def __call__(self, source): - * if not source.successful(): # <<<<<<<<<<<<<< - * return SpawnedLink.__call__(self, source) - * - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_source, __pyx_n_s_successful); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 109, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 109, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 109, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 109, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_5 = ((!__pyx_t_4) != 0); - if (__pyx_t_5) { - - /* "src/gevent/greenlet.py":110 - * def __call__(self, source): - * if not source.successful(): - * return SpawnedLink.__call__(self, source) # <<<<<<<<<<<<<< - * - * class _Frame(object): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_6gevent_9_greenlet_SpawnedLink), __pyx_n_s_call); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 110, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - __pyx_t_6 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_6 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, ((PyObject *)__pyx_v_self), __pyx_v_source}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 110, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, ((PyObject *)__pyx_v_self), __pyx_v_source}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 110, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 110, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (__pyx_t_3) { - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __pyx_t_3 = NULL; - } - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, ((PyObject *)__pyx_v_self)); - __Pyx_INCREF(__pyx_v_source); - __Pyx_GIVEREF(__pyx_v_source); - PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_source); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 110, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/greenlet.py":109 - * - * def __call__(self, source): - * if not source.successful(): # <<<<<<<<<<<<<< - * return SpawnedLink.__call__(self, source) - * - */ - } - - /* "src/gevent/greenlet.py":108 - * __slots__ = [] - * - * def __call__(self, source): # <<<<<<<<<<<<<< - * if not source.successful(): - * return SpawnedLink.__call__(self, source) - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("gevent._greenlet.FailureSpawnedLink.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":116 - * __slots__ = ('f_code', 'f_lineno', 'f_back') - * - * def __init__(self, f_code, f_lineno, f_back): # <<<<<<<<<<<<<< - * self.f_code = f_code - * self.f_lineno = f_lineno - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_9_greenlet_6_Frame_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_9_greenlet_6_Frame_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_f_code = 0; - PyObject *__pyx_v_f_lineno = 0; - PyObject *__pyx_v_f_back = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_f_code,&__pyx_n_s_f_lineno,&__pyx_n_s_f_back,0}; - PyObject* values[3] = {0,0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_f_code)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_f_lineno)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 1); __PYX_ERR(0, 116, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_f_back)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 2); __PYX_ERR(0, 116, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 116, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - } - __pyx_v_f_code = values[0]; - __pyx_v_f_lineno = values[1]; - __pyx_v_f_back = values[2]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 116, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._greenlet._Frame.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_9_greenlet_6_Frame___init__(((struct __pyx_obj_6gevent_9_greenlet__Frame *)__pyx_v_self), __pyx_v_f_code, __pyx_v_f_lineno, __pyx_v_f_back); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_9_greenlet_6_Frame___init__(struct __pyx_obj_6gevent_9_greenlet__Frame *__pyx_v_self, PyObject *__pyx_v_f_code, PyObject *__pyx_v_f_lineno, PyObject *__pyx_v_f_back) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - __Pyx_RefNannySetupContext("__init__", 0); - - /* "src/gevent/greenlet.py":117 - * - * def __init__(self, f_code, f_lineno, f_back): - * self.f_code = f_code # <<<<<<<<<<<<<< - * self.f_lineno = f_lineno - * self.f_back = f_back - */ - if (!(likely(((__pyx_v_f_code) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_f_code, __pyx_ptype_6gevent_9_greenlet_CodeType))))) __PYX_ERR(0, 117, __pyx_L1_error) - __pyx_t_1 = __pyx_v_f_code; - __Pyx_INCREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->f_code); - __Pyx_DECREF(((PyObject *)__pyx_v_self->f_code)); - __pyx_v_self->f_code = ((PyCodeObject *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":118 - * def __init__(self, f_code, f_lineno, f_back): - * self.f_code = f_code - * self.f_lineno = f_lineno # <<<<<<<<<<<<<< - * self.f_back = f_back - * - */ - __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_v_f_lineno); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 118, __pyx_L1_error) - __pyx_v_self->f_lineno = __pyx_t_2; - - /* "src/gevent/greenlet.py":119 - * self.f_code = f_code - * self.f_lineno = f_lineno - * self.f_back = f_back # <<<<<<<<<<<<<< - * - * @property - */ - if (!(likely(((__pyx_v_f_back) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_f_back, __pyx_ptype_6gevent_9_greenlet__Frame))))) __PYX_ERR(0, 119, __pyx_L1_error) - __pyx_t_1 = __pyx_v_f_back; - __Pyx_INCREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->f_back); - __Pyx_DECREF(((PyObject *)__pyx_v_self->f_back)); - __pyx_v_self->f_back = ((struct __pyx_obj_6gevent_9_greenlet__Frame *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":116 - * __slots__ = ('f_code', 'f_lineno', 'f_back') - * - * def __init__(self, f_code, f_lineno, f_back): # <<<<<<<<<<<<<< - * self.f_code = f_code - * self.f_lineno = f_lineno - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._greenlet._Frame.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":122 - * - * @property - * def f_globals(self): # <<<<<<<<<<<<<< - * return None - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_6_Frame_9f_globals_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_9_greenlet_6_Frame_9f_globals_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_6_Frame_9f_globals___get__(((struct __pyx_obj_6gevent_9_greenlet__Frame *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_6_Frame_9f_globals___get__(CYTHON_UNUSED struct __pyx_obj_6gevent_9_greenlet__Frame *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - - /* "src/gevent/greenlet.py":123 - * @property - * def f_globals(self): - * return None # <<<<<<<<<<<<<< - * - * def _Frame_from_list(frames): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - /* "src/gevent/greenlet.py":122 - * - * @property - * def f_globals(self): # <<<<<<<<<<<<<< - * return None - * - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/_greenlet.pxd":72 - * @cython.freelist(1000) - * cdef class _Frame: - * cdef readonly CodeType f_code # <<<<<<<<<<<<<< - * cdef readonly int f_lineno - * cdef readonly _Frame f_back - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_6_Frame_6f_code_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_9_greenlet_6_Frame_6f_code_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_6_Frame_6f_code___get__(((struct __pyx_obj_6gevent_9_greenlet__Frame *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_6_Frame_6f_code___get__(struct __pyx_obj_6gevent_9_greenlet__Frame *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_v_self->f_code)); - __pyx_r = ((PyObject *)__pyx_v_self->f_code); - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/_greenlet.pxd":73 - * cdef class _Frame: - * cdef readonly CodeType f_code - * cdef readonly int f_lineno # <<<<<<<<<<<<<< - * cdef readonly _Frame f_back - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_6_Frame_8f_lineno_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_9_greenlet_6_Frame_8f_lineno_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_6_Frame_8f_lineno___get__(((struct __pyx_obj_6gevent_9_greenlet__Frame *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_6_Frame_8f_lineno___get__(struct __pyx_obj_6gevent_9_greenlet__Frame *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->f_lineno); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 73, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._greenlet._Frame.f_lineno.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/_greenlet.pxd":74 - * cdef readonly CodeType f_code - * cdef readonly int f_lineno - * cdef readonly _Frame f_back # <<<<<<<<<<<<<< - * - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_6_Frame_6f_back_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_9_greenlet_6_Frame_6f_back_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_6_Frame_6f_back___get__(((struct __pyx_obj_6gevent_9_greenlet__Frame *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_6_Frame_6f_back___get__(struct __pyx_obj_6gevent_9_greenlet__Frame *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_v_self->f_back)); - __pyx_r = ((PyObject *)__pyx_v_self->f_back); - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":125 - * return None - * - * def _Frame_from_list(frames): # <<<<<<<<<<<<<< - * previous = None - * for frame in reversed(frames): - */ - -static struct __pyx_obj_6gevent_9_greenlet__Frame *__pyx_f_6gevent_9_greenlet__Frame_from_list(PyObject *__pyx_v_frames) { - struct __pyx_obj_6gevent_9_greenlet__Frame *__pyx_v_previous = 0; - PyObject *__pyx_v_frame = 0; - struct __pyx_obj_6gevent_9_greenlet__Frame *__pyx_v_f = 0; - struct __pyx_obj_6gevent_9_greenlet__Frame *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - Py_ssize_t __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - __Pyx_RefNannySetupContext("_Frame_from_list", 0); - - /* "src/gevent/greenlet.py":126 - * - * def _Frame_from_list(frames): - * previous = None # <<<<<<<<<<<<<< - * for frame in reversed(frames): - * f = _Frame(frame[0], frame[1], previous) - */ - __Pyx_INCREF(Py_None); - __pyx_v_previous = ((struct __pyx_obj_6gevent_9_greenlet__Frame *)Py_None); - - /* "src/gevent/greenlet.py":127 - * def _Frame_from_list(frames): - * previous = None - * for frame in reversed(frames): # <<<<<<<<<<<<<< - * f = _Frame(frame[0], frame[1], previous) - * previous = f - */ - if (unlikely(__pyx_v_frames == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 127, __pyx_L1_error) - } - __pyx_t_1 = __pyx_v_frames; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = PyList_GET_SIZE(__pyx_t_1) - 1; - for (;;) { - if (__pyx_t_2 < 0) break; - if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2--; if (unlikely(0 < 0)) __PYX_ERR(0, 127, __pyx_L1_error) - #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2--; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 127, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - #endif - if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(0, 127, __pyx_L1_error) - __Pyx_XDECREF_SET(__pyx_v_frame, ((PyObject*)__pyx_t_3)); - __pyx_t_3 = 0; - - /* "src/gevent/greenlet.py":128 - * previous = None - * for frame in reversed(frames): - * f = _Frame(frame[0], frame[1], previous) # <<<<<<<<<<<<<< - * previous = f - * return previous - */ - if (unlikely(__pyx_v_frame == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 128, __pyx_L1_error) - } - __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_frame, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 128, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (unlikely(__pyx_v_frame == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 128, __pyx_L1_error) - } - __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_frame, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 128, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 128, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4); - __Pyx_INCREF(((PyObject *)__pyx_v_previous)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_previous)); - PyTuple_SET_ITEM(__pyx_t_5, 2, ((PyObject *)__pyx_v_previous)); - __pyx_t_3 = 0; - __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6gevent_9_greenlet__Frame), __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 128, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF_SET(__pyx_v_f, ((struct __pyx_obj_6gevent_9_greenlet__Frame *)__pyx_t_4)); - __pyx_t_4 = 0; - - /* "src/gevent/greenlet.py":129 - * for frame in reversed(frames): - * f = _Frame(frame[0], frame[1], previous) - * previous = f # <<<<<<<<<<<<<< - * return previous - * - */ - __Pyx_INCREF(((PyObject *)__pyx_v_f)); - __Pyx_DECREF_SET(__pyx_v_previous, __pyx_v_f); - - /* "src/gevent/greenlet.py":127 - * def _Frame_from_list(frames): - * previous = None - * for frame in reversed(frames): # <<<<<<<<<<<<<< - * f = _Frame(frame[0], frame[1], previous) - * previous = f - */ - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":130 - * f = _Frame(frame[0], frame[1], previous) - * previous = f - * return previous # <<<<<<<<<<<<<< - * - * def _extract_stack(limit): - */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __Pyx_INCREF(((PyObject *)__pyx_v_previous)); - __pyx_r = __pyx_v_previous; - goto __pyx_L0; - - /* "src/gevent/greenlet.py":125 - * return None - * - * def _Frame_from_list(frames): # <<<<<<<<<<<<<< - * previous = None - * for frame in reversed(frames): - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent._greenlet._Frame_from_list", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_previous); - __Pyx_XDECREF(__pyx_v_frame); - __Pyx_XDECREF((PyObject *)__pyx_v_f); - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":132 - * return previous - * - * def _extract_stack(limit): # <<<<<<<<<<<<<< - * try: - * frame = sys_getframe() - */ - -static CYTHON_INLINE PyObject *__pyx_f_6gevent_9_greenlet__extract_stack(int __pyx_v_limit) { - PyObject *__pyx_v_frames = 0; - PyFrameObject *__pyx_v_frame = 0; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - int __pyx_t_7; - int __pyx_t_8; - int __pyx_t_9; - int __pyx_t_10; - int __pyx_t_11; - __Pyx_RefNannySetupContext("_extract_stack", 0); - - /* "src/gevent/greenlet.py":133 - * - * def _extract_stack(limit): - * try: # <<<<<<<<<<<<<< - * frame = sys_getframe() - * except ValueError: - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_t_3); - /*try:*/ { - - /* "src/gevent/greenlet.py":134 - * def _extract_stack(limit): - * try: - * frame = sys_getframe() # <<<<<<<<<<<<<< - * except ValueError: - * # In certain embedded cases that directly use the Python C api - */ - __Pyx_INCREF(__pyx_v_6gevent_9_greenlet_sys_getframe); - __pyx_t_5 = __pyx_v_6gevent_9_greenlet_sys_getframe; __pyx_t_6 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - } - } - if (__pyx_t_6) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 134, __pyx_L3_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } else { - __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 134, __pyx_L3_error) - } - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6gevent_9_greenlet_FrameType))))) __PYX_ERR(0, 134, __pyx_L3_error) - __pyx_v_frame = ((PyFrameObject *)__pyx_t_4); - __pyx_t_4 = 0; - - /* "src/gevent/greenlet.py":133 - * - * def _extract_stack(limit): - * try: # <<<<<<<<<<<<<< - * frame = sys_getframe() - * except ValueError: - */ - } - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L8_try_end; - __pyx_L3_error:; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "src/gevent/greenlet.py":135 - * try: - * frame = sys_getframe() - * except ValueError: # <<<<<<<<<<<<<< - * # In certain embedded cases that directly use the Python C api - * # to call Greenlet.spawn (e.g., uwsgi) this can raise - */ - __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError); - if (__pyx_t_7) { - __Pyx_AddTraceback("gevent._greenlet._extract_stack", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(0, 135, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GOTREF(__pyx_t_6); - - /* "src/gevent/greenlet.py":143 - * # not the Python level. - * # See https://github.com/gevent/gevent/issues/1212 - * frame = None # <<<<<<<<<<<<<< - * - * frames = [] - */ - __Pyx_INCREF(Py_None); - __Pyx_XDECREF_SET(__pyx_v_frame, ((PyFrameObject *)Py_None)); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - goto __pyx_L4_exception_handled; - } - goto __pyx_L5_except_error; - __pyx_L5_except_error:; - - /* "src/gevent/greenlet.py":133 - * - * def _extract_stack(limit): - * try: # <<<<<<<<<<<<<< - * frame = sys_getframe() - * except ValueError: - */ - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - goto __pyx_L1_error; - __pyx_L4_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - __pyx_L8_try_end:; - } - - /* "src/gevent/greenlet.py":145 - * frame = None - * - * frames = [] # <<<<<<<<<<<<<< - * - * while limit and frame is not None: - */ - __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 145, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_v_frames = ((PyObject*)__pyx_t_6); - __pyx_t_6 = 0; - - /* "src/gevent/greenlet.py":147 - * frames = [] - * - * while limit and frame is not None: # <<<<<<<<<<<<<< - * limit -= 1 - * frames.append((frame.f_code, frame.f_lineno)) - */ - while (1) { - __pyx_t_9 = (__pyx_v_limit != 0); - if (__pyx_t_9) { - } else { - __pyx_t_8 = __pyx_t_9; - goto __pyx_L13_bool_binop_done; - } - __pyx_t_9 = (((PyObject *)__pyx_v_frame) != Py_None); - __pyx_t_10 = (__pyx_t_9 != 0); - __pyx_t_8 = __pyx_t_10; - __pyx_L13_bool_binop_done:; - if (!__pyx_t_8) break; - - /* "src/gevent/greenlet.py":148 - * - * while limit and frame is not None: - * limit -= 1 # <<<<<<<<<<<<<< - * frames.append((frame.f_code, frame.f_lineno)) - * frame = frame.f_back - */ - __pyx_v_limit = (__pyx_v_limit - 1); - - /* "src/gevent/greenlet.py":149 - * while limit and frame is not None: - * limit -= 1 - * frames.append((frame.f_code, frame.f_lineno)) # <<<<<<<<<<<<<< - * frame = frame.f_back - * - */ - __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_frame->f_lineno); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 149, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 149, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_INCREF(((PyObject *)__pyx_v_frame->f_code)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_frame->f_code)); - PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_v_frame->f_code)); - __Pyx_GIVEREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6); - __pyx_t_6 = 0; - __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_frames, __pyx_t_5); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 149, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - - /* "src/gevent/greenlet.py":150 - * limit -= 1 - * frames.append((frame.f_code, frame.f_lineno)) - * frame = frame.f_back # <<<<<<<<<<<<<< - * - * return frames - */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_frame), __pyx_n_s_f_back); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 150, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6gevent_9_greenlet_FrameType))))) __PYX_ERR(0, 150, __pyx_L1_error) - __Pyx_DECREF_SET(__pyx_v_frame, ((PyFrameObject *)__pyx_t_5)); - __pyx_t_5 = 0; - } - - /* "src/gevent/greenlet.py":152 - * frame = frame.f_back - * - * return frames # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_frames); - __pyx_r = __pyx_v_frames; - goto __pyx_L0; - - /* "src/gevent/greenlet.py":132 - * return previous - * - * def _extract_stack(limit): # <<<<<<<<<<<<<< - * try: - * frame = sys_getframe() - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_AddTraceback("gevent._greenlet._extract_stack", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_frames); - __Pyx_XDECREF((PyObject *)__pyx_v_frame); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":166 - * - * # pylint:disable=keyword-arg-before-vararg,super-init-not-called - * def __init__(self, run=None, *args, **kwargs): # <<<<<<<<<<<<<< - * """ - * :param args: The arguments passed to the ``run`` function. - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_9_greenlet_8Greenlet_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_9_greenlet_8Greenlet___init__[] = "\n :param args: The arguments passed to the ``run`` function.\n :param kwargs: The keyword arguments passed to the ``run`` function.\n :keyword callable run: The callable object to run. If not given, this object's\n `_run` method will be invoked (typically defined by subclasses).\n\n .. versionchanged:: 1.1b1\n The ``run`` argument to the constructor is now verified to be a callable\n object. Previously, passing a non-callable object would fail after the greenlet\n was spawned.\n\n .. versionchanged:: 1.3b1\n The ``GEVENT_TRACK_GREENLET_TREE`` configuration value may be set to\n a false value to disable ``spawn_tree_locals``, ``spawning_greenlet``,\n and ``spawning_stack``. The first two will be None in that case, and the\n latter will be empty.\n "; -#if CYTHON_COMPILING_IN_CPYTHON -struct wrapperbase __pyx_wrapperbase_6gevent_9_greenlet_8Greenlet___init__; -#endif -static int __pyx_pw_6gevent_9_greenlet_8Greenlet_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_run = 0; - PyObject *__pyx_v_args = 0; - PyObject *__pyx_v_kwargs = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1; - __Pyx_GOTREF(__pyx_v_kwargs); - if (PyTuple_GET_SIZE(__pyx_args) > 1) { - __pyx_v_args = PyTuple_GetSlice(__pyx_args, 1, PyTuple_GET_SIZE(__pyx_args)); - if (unlikely(!__pyx_v_args)) { - __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0; - __Pyx_RefNannyFinishContext(); - return -1; - } - __Pyx_GOTREF(__pyx_v_args); - } else { - __pyx_v_args = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple); - } - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_run,0}; - PyObject* values[1] = {0}; - values[0] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - default: - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_run); - if (value) { values[0] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t used_pos_args = (pos_args < 1) ? pos_args : 1; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, used_pos_args, "__init__") < 0)) __PYX_ERR(0, 166, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - default: - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - } - } - __pyx_v_run = values[0]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0; - __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0; - __Pyx_AddTraceback("gevent._greenlet.Greenlet.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet___init__(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self), __pyx_v_run, __pyx_v_args, __pyx_v_kwargs); - - /* function exit code */ - __Pyx_XDECREF(__pyx_v_args); - __Pyx_XDECREF(__pyx_v_kwargs); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_9_greenlet_8Greenlet___init__(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, PyObject *__pyx_v_run, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) { - PyGreenlet *__pyx_v_spawner = NULL; - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - int __pyx_t_7; - int __pyx_t_8; - PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - PyObject *__pyx_t_11 = NULL; - int __pyx_t_12; - __Pyx_RefNannySetupContext("__init__", 0); - - /* "src/gevent/greenlet.py":213 - * - * - * _greenlet__init__(self, None, get_hub()) # <<<<<<<<<<<<<< - * - * if run is not None: - */ - __pyx_t_2 = ((PyObject *)__pyx_f_6gevent_11__hub_local_get_hub_noargs(0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 213, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_v_6gevent_9_greenlet__greenlet__init__); - __pyx_t_3 = __pyx_v_6gevent_9_greenlet__greenlet__init__; __pyx_t_4 = NULL; - __pyx_t_5 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_5 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[4] = {__pyx_t_4, ((PyObject *)__pyx_v_self), Py_None, __pyx_t_2}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 213, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[4] = {__pyx_t_4, ((PyObject *)__pyx_v_self), Py_None, __pyx_t_2}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 213, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else - #endif - { - __pyx_t_6 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 213, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (__pyx_t_4) { - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; - } - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, ((PyObject *)__pyx_v_self)); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, Py_None); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 213, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":215 - * _greenlet__init__(self, None, get_hub()) - * - * if run is not None: # <<<<<<<<<<<<<< - * self._run = run - * - */ - __pyx_t_7 = (__pyx_v_run != Py_None); - __pyx_t_8 = (__pyx_t_7 != 0); - if (__pyx_t_8) { - - /* "src/gevent/greenlet.py":216 - * - * if run is not None: - * self._run = run # <<<<<<<<<<<<<< - * - * # If they didn't pass a callable at all, then they must - */ - if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_run_2, __pyx_v_run) < 0) __PYX_ERR(0, 216, __pyx_L1_error) - - /* "src/gevent/greenlet.py":215 - * _greenlet__init__(self, None, get_hub()) - * - * if run is not None: # <<<<<<<<<<<<<< - * self._run = run - * - */ - } - - /* "src/gevent/greenlet.py":221 - * # already have one. Note that subclassing to override the run() method - * # itself has never been documented or supported. - * if not callable(self._run): # <<<<<<<<<<<<<< - * raise TypeError("The run argument or self._run must be callable") - * - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_run_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 221, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_8 = __Pyx_PyCallable_Check(__pyx_t_1); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 221, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_7 = ((!(__pyx_t_8 != 0)) != 0); - if (unlikely(__pyx_t_7)) { - - /* "src/gevent/greenlet.py":222 - * # itself has never been documented or supported. - * if not callable(self._run): - * raise TypeError("The run argument or self._run must be callable") # <<<<<<<<<<<<<< - * - * self.args = args - */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 222, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 222, __pyx_L1_error) - - /* "src/gevent/greenlet.py":221 - * # already have one. Note that subclassing to override the run() method - * # itself has never been documented or supported. - * if not callable(self._run): # <<<<<<<<<<<<<< - * raise TypeError("The run argument or self._run must be callable") - * - */ - } - - /* "src/gevent/greenlet.py":224 - * raise TypeError("The run argument or self._run must be callable") - * - * self.args = args # <<<<<<<<<<<<<< - * self.kwargs = kwargs - * self.value = None - */ - __Pyx_INCREF(__pyx_v_args); - __Pyx_GIVEREF(__pyx_v_args); - __Pyx_GOTREF(__pyx_v_self->args); - __Pyx_DECREF(__pyx_v_self->args); - __pyx_v_self->args = __pyx_v_args; - - /* "src/gevent/greenlet.py":225 - * - * self.args = args - * self.kwargs = kwargs # <<<<<<<<<<<<<< - * self.value = None - * - */ - __Pyx_INCREF(__pyx_v_kwargs); - __Pyx_GIVEREF(__pyx_v_kwargs); - __Pyx_GOTREF(__pyx_v_self->kwargs); - __Pyx_DECREF(__pyx_v_self->kwargs); - __pyx_v_self->kwargs = __pyx_v_kwargs; - - /* "src/gevent/greenlet.py":226 - * self.args = args - * self.kwargs = kwargs - * self.value = None # <<<<<<<<<<<<<< - * - * #: An event, such as a timer or a callback that fires. It is established in - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->value); - __Pyx_DECREF(__pyx_v_self->value); - __pyx_v_self->value = Py_None; - - /* "src/gevent/greenlet.py":234 - * #: scheduled for starting. A placeholder _dummy_event is assigned by them to prevent - * #: the greenlet from being started in the future, if necessary. - * self._start_event = None # <<<<<<<<<<<<<< - * - * self._notifier = None - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->_start_event); - __Pyx_DECREF(__pyx_v_self->_start_event); - __pyx_v_self->_start_event = Py_None; - - /* "src/gevent/greenlet.py":236 - * self._start_event = None - * - * self._notifier = None # <<<<<<<<<<<<<< - * self._formatted_info = None - * self._links = [] - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->_notifier); - __Pyx_DECREF(__pyx_v_self->_notifier); - __pyx_v_self->_notifier = Py_None; - - /* "src/gevent/greenlet.py":237 - * - * self._notifier = None - * self._formatted_info = None # <<<<<<<<<<<<<< - * self._links = [] - * self._ident = None - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->_formatted_info); - __Pyx_DECREF(__pyx_v_self->_formatted_info); - __pyx_v_self->_formatted_info = ((PyObject*)Py_None); - - /* "src/gevent/greenlet.py":238 - * self._notifier = None - * self._formatted_info = None - * self._links = [] # <<<<<<<<<<<<<< - * self._ident = None - * - */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 238, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->_links); - __Pyx_DECREF(__pyx_v_self->_links); - __pyx_v_self->_links = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":239 - * self._formatted_info = None - * self._links = [] - * self._ident = None # <<<<<<<<<<<<<< - * - * # Initial state: None. - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->_ident); - __Pyx_DECREF(__pyx_v_self->_ident); - __pyx_v_self->_ident = Py_None; - - /* "src/gevent/greenlet.py":244 - * # Completed successfully: (None, None, None) - * # Failed with exception: (t, v, dump_traceback(tb))) - * self._exc_info = None # <<<<<<<<<<<<<< - * - * if GEVENT_CONFIG.track_greenlet_tree: - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->_exc_info); - __Pyx_DECREF(__pyx_v_self->_exc_info); - __pyx_v_self->_exc_info = ((PyObject*)Py_None); - - /* "src/gevent/greenlet.py":246 - * self._exc_info = None - * - * if GEVENT_CONFIG.track_greenlet_tree: # <<<<<<<<<<<<<< - * spawner = getcurrent() # pylint:disable=undefined-variable - * self.spawning_greenlet = wref(spawner) - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_6gevent_9_greenlet_GEVENT_CONFIG, __pyx_n_s_track_greenlet_tree); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 246, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 246, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (__pyx_t_7) { - - /* "src/gevent/greenlet.py":247 - * - * if GEVENT_CONFIG.track_greenlet_tree: - * spawner = getcurrent() # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * self.spawning_greenlet = wref(spawner) - * try: - */ - __pyx_t_1 = ((PyObject *)__pyx_f_6gevent_9_greenlet_getcurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 247, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_spawner = ((PyGreenlet *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":248 - * if GEVENT_CONFIG.track_greenlet_tree: - * spawner = getcurrent() # pylint:disable=undefined-variable - * self.spawning_greenlet = wref(spawner) # <<<<<<<<<<<<<< - * try: - * self.spawn_tree_locals = spawner.spawn_tree_locals - */ - __Pyx_INCREF(__pyx_v_6gevent_9_greenlet_wref); - __pyx_t_3 = __pyx_v_6gevent_9_greenlet_wref; __pyx_t_6 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (!__pyx_t_6) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_spawner)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 248, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_6, ((PyObject *)__pyx_v_spawner)}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 248, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_6, ((PyObject *)__pyx_v_spawner)}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 248, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 248, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_6); __pyx_t_6 = NULL; - __Pyx_INCREF(((PyObject *)__pyx_v_spawner)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_spawner)); - PyTuple_SET_ITEM(__pyx_t_2, 0+1, ((PyObject *)__pyx_v_spawner)); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 248, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->spawning_greenlet); - __Pyx_DECREF(__pyx_v_self->spawning_greenlet); - __pyx_v_self->spawning_greenlet = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":249 - * spawner = getcurrent() # pylint:disable=undefined-variable - * self.spawning_greenlet = wref(spawner) - * try: # <<<<<<<<<<<<<< - * self.spawn_tree_locals = spawner.spawn_tree_locals - * except AttributeError: - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); - __Pyx_XGOTREF(__pyx_t_9); - __Pyx_XGOTREF(__pyx_t_10); - __Pyx_XGOTREF(__pyx_t_11); - /*try:*/ { - - /* "src/gevent/greenlet.py":250 - * self.spawning_greenlet = wref(spawner) - * try: - * self.spawn_tree_locals = spawner.spawn_tree_locals # <<<<<<<<<<<<<< - * except AttributeError: - * self.spawn_tree_locals = {} - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_spawner), __pyx_n_s_spawn_tree_locals); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 250, __pyx_L6_error) - __Pyx_GOTREF(__pyx_t_1); - if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 250, __pyx_L6_error) - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->spawn_tree_locals); - __Pyx_DECREF(__pyx_v_self->spawn_tree_locals); - __pyx_v_self->spawn_tree_locals = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":249 - * spawner = getcurrent() # pylint:disable=undefined-variable - * self.spawning_greenlet = wref(spawner) - * try: # <<<<<<<<<<<<<< - * self.spawn_tree_locals = spawner.spawn_tree_locals - * except AttributeError: - */ - } - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; - goto __pyx_L11_try_end; - __pyx_L6_error:; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":251 - * try: - * self.spawn_tree_locals = spawner.spawn_tree_locals - * except AttributeError: # <<<<<<<<<<<<<< - * self.spawn_tree_locals = {} - * if spawner.parent is not None: - */ - __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError); - if (__pyx_t_5) { - __Pyx_AddTraceback("gevent._greenlet.Greenlet.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_3, &__pyx_t_2) < 0) __PYX_ERR(0, 251, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GOTREF(__pyx_t_2); - - /* "src/gevent/greenlet.py":252 - * self.spawn_tree_locals = spawner.spawn_tree_locals - * except AttributeError: - * self.spawn_tree_locals = {} # <<<<<<<<<<<<<< - * if spawner.parent is not None: - * # The main greenlet has no parent. - */ - __pyx_t_6 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 252, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_6); - __Pyx_GOTREF(__pyx_v_self->spawn_tree_locals); - __Pyx_DECREF(__pyx_v_self->spawn_tree_locals); - __pyx_v_self->spawn_tree_locals = ((PyObject*)__pyx_t_6); - __pyx_t_6 = 0; - - /* "src/gevent/greenlet.py":253 - * except AttributeError: - * self.spawn_tree_locals = {} - * if spawner.parent is not None: # <<<<<<<<<<<<<< - * # The main greenlet has no parent. - * # Its children get separate locals. - */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_spawner), __pyx_n_s_parent); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 253, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = (__pyx_t_6 != Py_None); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_8 = (__pyx_t_7 != 0); - if (__pyx_t_8) { - - /* "src/gevent/greenlet.py":256 - * # The main greenlet has no parent. - * # Its children get separate locals. - * spawner.spawn_tree_locals = self.spawn_tree_locals # <<<<<<<<<<<<<< - * - * self._spawning_stack_frames = _extract_stack(self.spawning_stack_limit) - */ - __pyx_t_6 = __pyx_v_self->spawn_tree_locals; - __Pyx_INCREF(__pyx_t_6); - if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_spawner), __pyx_n_s_spawn_tree_locals, __pyx_t_6) < 0) __PYX_ERR(0, 256, __pyx_L8_except_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - - /* "src/gevent/greenlet.py":253 - * except AttributeError: - * self.spawn_tree_locals = {} - * if spawner.parent is not None: # <<<<<<<<<<<<<< - * # The main greenlet has no parent. - * # Its children get separate locals. - */ - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - goto __pyx_L7_exception_handled; - } - goto __pyx_L8_except_error; - __pyx_L8_except_error:; - - /* "src/gevent/greenlet.py":249 - * spawner = getcurrent() # pylint:disable=undefined-variable - * self.spawning_greenlet = wref(spawner) - * try: # <<<<<<<<<<<<<< - * self.spawn_tree_locals = spawner.spawn_tree_locals - * except AttributeError: - */ - __Pyx_XGIVEREF(__pyx_t_9); - __Pyx_XGIVEREF(__pyx_t_10); - __Pyx_XGIVEREF(__pyx_t_11); - __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11); - goto __pyx_L1_error; - __pyx_L7_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_9); - __Pyx_XGIVEREF(__pyx_t_10); - __Pyx_XGIVEREF(__pyx_t_11); - __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11); - __pyx_L11_try_end:; - } - - /* "src/gevent/greenlet.py":258 - * spawner.spawn_tree_locals = self.spawn_tree_locals - * - * self._spawning_stack_frames = _extract_stack(self.spawning_stack_limit) # <<<<<<<<<<<<<< - * self._spawning_stack_frames.extend(getattr(spawner, '_spawning_stack_frames', [])) - * else: - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_spawning_stack_limit); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 258, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 258, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __pyx_f_6gevent_9_greenlet__extract_stack(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 258, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __Pyx_GOTREF(__pyx_v_self->_spawning_stack_frames); - __Pyx_DECREF(__pyx_v_self->_spawning_stack_frames); - __pyx_v_self->_spawning_stack_frames = ((PyObject*)__pyx_t_2); - __pyx_t_2 = 0; - - /* "src/gevent/greenlet.py":259 - * - * self._spawning_stack_frames = _extract_stack(self.spawning_stack_limit) - * self._spawning_stack_frames.extend(getattr(spawner, '_spawning_stack_frames', [])) # <<<<<<<<<<<<<< - * else: - * # None is the default for all of these in Cython, but we - */ - if (unlikely(__pyx_v_self->_spawning_stack_frames == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "extend"); - __PYX_ERR(0, 259, __pyx_L1_error) - } - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 259, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_GetAttr3(((PyObject *)__pyx_v_spawner), __pyx_n_s_spawning_stack_frames, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 259, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_12 = __Pyx_PyList_Extend(__pyx_v_self->_spawning_stack_frames, __pyx_t_3); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 259, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "src/gevent/greenlet.py":246 - * self._exc_info = None - * - * if GEVENT_CONFIG.track_greenlet_tree: # <<<<<<<<<<<<<< - * spawner = getcurrent() # pylint:disable=undefined-variable - * self.spawning_greenlet = wref(spawner) - */ - goto __pyx_L5; - } - - /* "src/gevent/greenlet.py":263 - * # None is the default for all of these in Cython, but we - * # need to declare them for pure-Python mode. - * self.spawning_greenlet = None # <<<<<<<<<<<<<< - * self.spawn_tree_locals = None - * self._spawning_stack_frames = None - */ - /*else*/ { - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->spawning_greenlet); - __Pyx_DECREF(__pyx_v_self->spawning_greenlet); - __pyx_v_self->spawning_greenlet = Py_None; - - /* "src/gevent/greenlet.py":264 - * # need to declare them for pure-Python mode. - * self.spawning_greenlet = None - * self.spawn_tree_locals = None # <<<<<<<<<<<<<< - * self._spawning_stack_frames = None - * - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->spawn_tree_locals); - __Pyx_DECREF(__pyx_v_self->spawn_tree_locals); - __pyx_v_self->spawn_tree_locals = ((PyObject*)Py_None); - - /* "src/gevent/greenlet.py":265 - * self.spawning_greenlet = None - * self.spawn_tree_locals = None - * self._spawning_stack_frames = None # <<<<<<<<<<<<<< - * - * @Lazy - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->_spawning_stack_frames); - __Pyx_DECREF(__pyx_v_self->_spawning_stack_frames); - __pyx_v_self->_spawning_stack_frames = ((PyObject*)Py_None); - } - __pyx_L5:; - - /* "src/gevent/greenlet.py":166 - * - * # pylint:disable=keyword-arg-before-vararg,super-init-not-called - * def __init__(self, run=None, *args, **kwargs): # <<<<<<<<<<<<<< - * """ - * :param args: The arguments passed to the ``run`` function. - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_AddTraceback("gevent._greenlet.Greenlet.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_spawner); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":268 - * - * @Lazy - * def spawning_stack(self): # <<<<<<<<<<<<<< - * # Store this in the __dict__. We don't use it from the C - * # code. It's tempting to discard _spawning_stack_frames - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_3spawning_stack(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_9_greenlet_8Greenlet_2spawning_stack[] = "Greenlet.spawning_stack(self)"; -static PyMethodDef __pyx_mdef_6gevent_9_greenlet_8Greenlet_3spawning_stack = {"spawning_stack", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_3spawning_stack, METH_NOARGS, __pyx_doc_6gevent_9_greenlet_8Greenlet_2spawning_stack}; -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_3spawning_stack(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("spawning_stack (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_2spawning_stack(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_2spawning_stack(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("spawning_stack", 0); - - /* "src/gevent/greenlet.py":273 - * # after this, but child greenlets may still be created - * # that need it. - * return _Frame_from_list(self._spawning_stack_frames or []) # <<<<<<<<<<<<<< - * - * def _get_minimal_ident(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->_spawning_stack_frames); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 273, __pyx_L1_error) - if (!__pyx_t_2) { - } else { - __Pyx_INCREF(__pyx_v_self->_spawning_stack_frames); - __pyx_t_1 = __pyx_v_self->_spawning_stack_frames; - goto __pyx_L3_bool_binop_done; - } - __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 273, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_INCREF(__pyx_t_3); - __pyx_t_1 = __pyx_t_3; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_L3_bool_binop_done:; - __pyx_t_3 = ((PyObject *)__pyx_f_6gevent_9_greenlet__Frame_from_list(((PyObject*)__pyx_t_1))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 273, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - - /* "src/gevent/greenlet.py":268 - * - * @Lazy - * def spawning_stack(self): # <<<<<<<<<<<<<< - * # Store this in the __dict__. We don't use it from the C - * # code. It's tempting to discard _spawning_stack_frames - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent._greenlet.Greenlet.spawning_stack", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":275 - * return _Frame_from_list(self._spawning_stack_frames or []) - * - * def _get_minimal_ident(self): # <<<<<<<<<<<<<< - * reg = self.parent.ident_registry - * return reg.get_ident(self) - */ - -static PyObject *__pyx_f_6gevent_9_greenlet_8Greenlet__get_minimal_ident(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self) { - struct __pyx_obj_6gevent_7__ident_IdentRegistry *__pyx_v_reg = 0; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("_get_minimal_ident", 0); - - /* "src/gevent/greenlet.py":276 - * - * def _get_minimal_ident(self): - * reg = self.parent.ident_registry # <<<<<<<<<<<<<< - * return reg.get_ident(self) - * - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parent); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 276, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ident_registry); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 276, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6gevent_7__ident_IdentRegistry))))) __PYX_ERR(0, 276, __pyx_L1_error) - __pyx_v_reg = ((struct __pyx_obj_6gevent_7__ident_IdentRegistry *)__pyx_t_2); - __pyx_t_2 = 0; - - /* "src/gevent/greenlet.py":277 - * def _get_minimal_ident(self): - * reg = self.parent.ident_registry - * return reg.get_ident(self) # <<<<<<<<<<<<<< - * - * @property - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = ((struct __pyx_vtabstruct_6gevent_7__ident_IdentRegistry *)__pyx_v_reg->__pyx_vtab)->get_ident(__pyx_v_reg, ((PyObject *)__pyx_v_self), 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 277, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "src/gevent/greenlet.py":275 - * return _Frame_from_list(self._spawning_stack_frames or []) - * - * def _get_minimal_ident(self): # <<<<<<<<<<<<<< - * reg = self.parent.ident_registry - * return reg.get_ident(self) - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent._greenlet.Greenlet._get_minimal_ident", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_reg); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":280 - * - * @property - * def minimal_ident(self): # <<<<<<<<<<<<<< - * """ - * A small, unique integer that identifies this object. - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_13minimal_ident_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_13minimal_ident_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_13minimal_ident___get__(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_13minimal_ident___get__(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - /* "src/gevent/greenlet.py":296 - * .. versionadded:: 1.3a2 - * """ - * if self._ident is None: # <<<<<<<<<<<<<< - * self._ident = self._get_minimal_ident() - * return self._ident - */ - __pyx_t_1 = (__pyx_v_self->_ident == Py_None); - __pyx_t_2 = (__pyx_t_1 != 0); - if (__pyx_t_2) { - - /* "src/gevent/greenlet.py":297 - * """ - * if self._ident is None: - * self._ident = self._get_minimal_ident() # <<<<<<<<<<<<<< - * return self._ident - * - */ - __pyx_t_3 = ((struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet *)__pyx_v_self->__pyx_vtab)->_get_minimal_ident(__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 297, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_3); - __Pyx_GOTREF(__pyx_v_self->_ident); - __Pyx_DECREF(__pyx_v_self->_ident); - __pyx_v_self->_ident = __pyx_t_3; - __pyx_t_3 = 0; - - /* "src/gevent/greenlet.py":296 - * .. versionadded:: 1.3a2 - * """ - * if self._ident is None: # <<<<<<<<<<<<<< - * self._ident = self._get_minimal_ident() - * return self._ident - */ - } - - /* "src/gevent/greenlet.py":298 - * if self._ident is None: - * self._ident = self._get_minimal_ident() - * return self._ident # <<<<<<<<<<<<<< - * - * @readproperty - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->_ident); - __pyx_r = __pyx_v_self->_ident; - goto __pyx_L0; - - /* "src/gevent/greenlet.py":280 - * - * @property - * def minimal_ident(self): # <<<<<<<<<<<<<< - * """ - * A small, unique integer that identifies this object. - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent._greenlet.Greenlet.minimal_ident.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":301 - * - * @readproperty - * def name(self): # <<<<<<<<<<<<<< - * """ - * The greenlet name. By default, a unique name is constructed using - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_5name(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_9_greenlet_8Greenlet_4name[] = "Greenlet.name(self)\n\n The greenlet name. By default, a unique name is constructed using\n the :attr:`minimal_ident`. You can assign a string to this\n value to change it. It is shown in the `repr` of this object.\n\n .. versionadded:: 1.3a2\n "; -static PyMethodDef __pyx_mdef_6gevent_9_greenlet_8Greenlet_5name = {"name", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_5name, METH_NOARGS, __pyx_doc_6gevent_9_greenlet_8Greenlet_4name}; -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_5name(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("name (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_4name(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_4name(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("name", 0); - - /* "src/gevent/greenlet.py":309 - * .. versionadded:: 1.3a2 - * """ - * return 'Greenlet-%d' % (self.minimal_ident) # <<<<<<<<<<<<<< - * - * def _raise_exception(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_minimal_ident); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 309, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_Greenlet_d, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 309, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "src/gevent/greenlet.py":301 - * - * @readproperty - * def name(self): # <<<<<<<<<<<<<< - * """ - * The greenlet name. By default, a unique name is constructed using - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent._greenlet.Greenlet.name", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":311 - * return 'Greenlet-%d' % (self.minimal_ident) - * - * def _raise_exception(self): # <<<<<<<<<<<<<< - * reraise(*self.exc_info) - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_7_raise_exception(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_9_greenlet_8Greenlet_6_raise_exception[] = "Greenlet._raise_exception(self)"; -static PyMethodDef __pyx_mdef_6gevent_9_greenlet_8Greenlet_7_raise_exception = {"_raise_exception", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_7_raise_exception, METH_NOARGS, __pyx_doc_6gevent_9_greenlet_8Greenlet_6_raise_exception}; -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_7_raise_exception(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_raise_exception (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_6_raise_exception(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_6_raise_exception(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("_raise_exception", 0); - - /* "src/gevent/greenlet.py":312 - * - * def _raise_exception(self): - * reraise(*self.exc_info) # <<<<<<<<<<<<<< - * - * @property - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_exc_info); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 312, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PySequence_Tuple(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 312, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_v_6gevent_9_greenlet_reraise, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 312, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":311 - * return 'Greenlet-%d' % (self.minimal_ident) - * - * def _raise_exception(self): # <<<<<<<<<<<<<< - * reraise(*self.exc_info) - * - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent._greenlet.Greenlet._raise_exception", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":315 - * - * @property - * def loop(self): # <<<<<<<<<<<<<< - * # needed by killall - * return self.parent.loop - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_4loop_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_4loop_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_4loop___get__(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_4loop___get__(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - /* "src/gevent/greenlet.py":317 - * def loop(self): - * # needed by killall - * return self.parent.loop # <<<<<<<<<<<<<< - * - * def __nonzero__(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parent); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 317, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_loop); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 317, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "src/gevent/greenlet.py":315 - * - * @property - * def loop(self): # <<<<<<<<<<<<<< - * # needed by killall - * return self.parent.loop - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent._greenlet.Greenlet.loop.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":319 - * return self.parent.loop - * - * def __nonzero__(self): # <<<<<<<<<<<<<< - * return self._start_event is not None and self._exc_info is None - * try: - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_9_greenlet_8Greenlet_9__nonzero__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_6gevent_9_greenlet_8Greenlet_9__nonzero__(PyObject *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__nonzero__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_8__nonzero__(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_9_greenlet_8Greenlet_8__nonzero__(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - __Pyx_RefNannySetupContext("__nonzero__", 0); - - /* "src/gevent/greenlet.py":320 - * - * def __nonzero__(self): - * return self._start_event is not None and self._exc_info is None # <<<<<<<<<<<<<< - * try: - * __bool__ = __nonzero__ # Python 3 - */ - __pyx_t_2 = (__pyx_v_self->_start_event != Py_None); - if (__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L3_bool_binop_done; - } - __pyx_t_2 = (__pyx_v_self->_exc_info == ((PyObject*)Py_None)); - __pyx_t_1 = __pyx_t_2; - __pyx_L3_bool_binop_done:; - __pyx_r = __pyx_t_1; - goto __pyx_L0; - - /* "src/gevent/greenlet.py":319 - * return self.parent.loop - * - * def __nonzero__(self): # <<<<<<<<<<<<<< - * return self._start_event is not None and self._exc_info is None - * try: - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":343 - * else: - * @property - * def dead(self): # <<<<<<<<<<<<<< - * "Boolean indicating that the greenlet is dead and will not run again." - * return self.__start_cancelled_by_kill() or self.__started_but_aborted() or greenlet.dead.__get__(self) - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_4dead_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_4dead_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_4dead___get__(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_4dead___get__(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - /* "src/gevent/greenlet.py":345 - * def dead(self): - * "Boolean indicating that the greenlet is dead and will not run again." - * return self.__start_cancelled_by_kill() or self.__started_but_aborted() or greenlet.dead.__get__(self) # <<<<<<<<<<<<<< - * - * def __never_started_or_killed(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = ((struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet *)__pyx_v_self->__pyx_vtab)->__pyx___start_cancelled_by_kill(__pyx_v_self); - if (!__pyx_t_2) { - } else { - __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 345, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L3_bool_binop_done; - } - __pyx_t_2 = ((struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet *)__pyx_v_self->__pyx_vtab)->__pyx___started_but_aborted(__pyx_v_self); - if (!__pyx_t_2) { - } else { - __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 345, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L3_bool_binop_done; - } - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_6gevent_9_greenlet_greenlet), __pyx_n_s_dead); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 345, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 345, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - } - } - if (!__pyx_t_4) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 345, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, ((PyObject *)__pyx_v_self)}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 345, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_3); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, ((PyObject *)__pyx_v_self)}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 345, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_3); - } else - #endif - { - __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 345, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_6, 0+1, ((PyObject *)__pyx_v_self)); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 345, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - } - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_INCREF(__pyx_t_3); - __pyx_t_1 = __pyx_t_3; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_L3_bool_binop_done:; - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/greenlet.py":343 - * else: - * @property - * def dead(self): # <<<<<<<<<<<<<< - * "Boolean indicating that the greenlet is dead and will not run again." - * return self.__start_cancelled_by_kill() or self.__started_but_aborted() or greenlet.dead.__get__(self) - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_AddTraceback("gevent._greenlet.Greenlet.dead.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":347 - * return self.__start_cancelled_by_kill() or self.__started_but_aborted() or greenlet.dead.__get__(self) - * - * def __never_started_or_killed(self): # <<<<<<<<<<<<<< - * return self._start_event is None - * - */ - -static int __pyx_f_6gevent_9_greenlet_8Greenlet___never_started_or_killed(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("__never_started_or_killed", 0); - - /* "src/gevent/greenlet.py":348 - * - * def __never_started_or_killed(self): - * return self._start_event is None # <<<<<<<<<<<<<< - * - * def __start_pending(self): - */ - __pyx_t_1 = (__pyx_v_self->_start_event == Py_None); - __pyx_r = __pyx_t_1; - goto __pyx_L0; - - /* "src/gevent/greenlet.py":347 - * return self.__start_cancelled_by_kill() or self.__started_but_aborted() or greenlet.dead.__get__(self) - * - * def __never_started_or_killed(self): # <<<<<<<<<<<<<< - * return self._start_event is None - * - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":350 - * return self._start_event is None - * - * def __start_pending(self): # <<<<<<<<<<<<<< - * return (self._start_event is not None - * and (self._start_event.pending or getattr(self._start_event, 'active', False))) - */ - -static int __pyx_f_6gevent_9_greenlet_8Greenlet___start_pending(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - __Pyx_RefNannySetupContext("__start_pending", 0); - - /* "src/gevent/greenlet.py":351 - * - * def __start_pending(self): - * return (self._start_event is not None # <<<<<<<<<<<<<< - * and (self._start_event.pending or getattr(self._start_event, 'active', False))) - * - */ - __pyx_t_2 = (__pyx_v_self->_start_event != Py_None); - __pyx_t_3 = (__pyx_t_2 != 0); - if (__pyx_t_3) { - } else { - __pyx_t_1 = __pyx_t_3; - goto __pyx_L3_bool_binop_done; - } - - /* "src/gevent/greenlet.py":352 - * def __start_pending(self): - * return (self._start_event is not None - * and (self._start_event.pending or getattr(self._start_event, 'active', False))) # <<<<<<<<<<<<<< - * - * def __start_cancelled_by_kill(self): - */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_start_event, __pyx_n_s_pending); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 352, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 352, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (!__pyx_t_3) { - } else { - __pyx_t_1 = __pyx_t_3; - goto __pyx_L3_bool_binop_done; - } - __pyx_t_4 = __pyx_v_self->_start_event; - __Pyx_INCREF(__pyx_t_4); - __pyx_t_5 = __Pyx_GetAttr3(__pyx_t_4, __pyx_n_s_active, Py_False); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 352, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 352, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_1 = __pyx_t_3; - __pyx_L3_bool_binop_done:; - __pyx_r = __pyx_t_1; - goto __pyx_L0; - - /* "src/gevent/greenlet.py":350 - * return self._start_event is None - * - * def __start_pending(self): # <<<<<<<<<<<<<< - * return (self._start_event is not None - * and (self._start_event.pending or getattr(self._start_event, 'active', False))) - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_WriteUnraisable("gevent._greenlet.Greenlet.__start_pending", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); - __pyx_r = 0; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":354 - * and (self._start_event.pending or getattr(self._start_event, 'active', False))) - * - * def __start_cancelled_by_kill(self): # <<<<<<<<<<<<<< - * return self._start_event is _cancelled_start_event - * - */ - -static int __pyx_f_6gevent_9_greenlet_8Greenlet___start_cancelled_by_kill(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("__start_cancelled_by_kill", 0); - - /* "src/gevent/greenlet.py":355 - * - * def __start_cancelled_by_kill(self): - * return self._start_event is _cancelled_start_event # <<<<<<<<<<<<<< - * - * def __start_completed(self): - */ - __pyx_t_1 = (__pyx_v_self->_start_event == ((PyObject *)__pyx_v_6gevent_9_greenlet__cancelled_start_event)); - __pyx_r = __pyx_t_1; - goto __pyx_L0; - - /* "src/gevent/greenlet.py":354 - * and (self._start_event.pending or getattr(self._start_event, 'active', False))) - * - * def __start_cancelled_by_kill(self): # <<<<<<<<<<<<<< - * return self._start_event is _cancelled_start_event - * - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":357 - * return self._start_event is _cancelled_start_event - * - * def __start_completed(self): # <<<<<<<<<<<<<< - * return self._start_event is _start_completed_event - * - */ - -static int __pyx_f_6gevent_9_greenlet_8Greenlet___start_completed(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("__start_completed", 0); - - /* "src/gevent/greenlet.py":358 - * - * def __start_completed(self): - * return self._start_event is _start_completed_event # <<<<<<<<<<<<<< - * - * def __started_but_aborted(self): - */ - __pyx_t_1 = (__pyx_v_self->_start_event == ((PyObject *)__pyx_v_6gevent_9_greenlet__start_completed_event)); - __pyx_r = __pyx_t_1; - goto __pyx_L0; - - /* "src/gevent/greenlet.py":357 - * return self._start_event is _cancelled_start_event - * - * def __start_completed(self): # <<<<<<<<<<<<<< - * return self._start_event is _start_completed_event - * - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":360 - * return self._start_event is _start_completed_event - * - * def __started_but_aborted(self): # <<<<<<<<<<<<<< - * return (not self.__never_started_or_killed() # we have been started or killed - * and not self.__start_cancelled_by_kill() # we weren't killed, so we must have been started - */ - -static int __pyx_f_6gevent_9_greenlet_8Greenlet___started_but_aborted(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - __Pyx_RefNannySetupContext("__started_but_aborted", 0); - - /* "src/gevent/greenlet.py":361 - * - * def __started_but_aborted(self): - * return (not self.__never_started_or_killed() # we have been started or killed # <<<<<<<<<<<<<< - * and not self.__start_cancelled_by_kill() # we weren't killed, so we must have been started - * and not self.__start_completed() # the start never completed - */ - __pyx_t_2 = ((!(((struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet *)__pyx_v_self->__pyx_vtab)->__pyx___never_started_or_killed(__pyx_v_self) != 0)) != 0); - if (__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L3_bool_binop_done; - } - - /* "src/gevent/greenlet.py":362 - * def __started_but_aborted(self): - * return (not self.__never_started_or_killed() # we have been started or killed - * and not self.__start_cancelled_by_kill() # we weren't killed, so we must have been started # <<<<<<<<<<<<<< - * and not self.__start_completed() # the start never completed - * and not self.__start_pending()) # and we're not pending, so we must have been aborted - */ - __pyx_t_2 = ((!(((struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet *)__pyx_v_self->__pyx_vtab)->__pyx___start_cancelled_by_kill(__pyx_v_self) != 0)) != 0); - if (__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L3_bool_binop_done; - } - - /* "src/gevent/greenlet.py":363 - * return (not self.__never_started_or_killed() # we have been started or killed - * and not self.__start_cancelled_by_kill() # we weren't killed, so we must have been started - * and not self.__start_completed() # the start never completed # <<<<<<<<<<<<<< - * and not self.__start_pending()) # and we're not pending, so we must have been aborted - * - */ - __pyx_t_2 = ((!(((struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet *)__pyx_v_self->__pyx_vtab)->__pyx___start_completed(__pyx_v_self) != 0)) != 0); - if (__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L3_bool_binop_done; - } - - /* "src/gevent/greenlet.py":364 - * and not self.__start_cancelled_by_kill() # we weren't killed, so we must have been started - * and not self.__start_completed() # the start never completed - * and not self.__start_pending()) # and we're not pending, so we must have been aborted # <<<<<<<<<<<<<< - * - * def __cancel_start(self): - */ - __pyx_t_2 = ((!(((struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet *)__pyx_v_self->__pyx_vtab)->__pyx___start_pending(__pyx_v_self) != 0)) != 0); - __pyx_t_1 = __pyx_t_2; - __pyx_L3_bool_binop_done:; - __pyx_r = __pyx_t_1; - goto __pyx_L0; - - /* "src/gevent/greenlet.py":360 - * return self._start_event is _start_completed_event - * - * def __started_but_aborted(self): # <<<<<<<<<<<<<< - * return (not self.__never_started_or_killed() # we have been started or killed - * and not self.__start_cancelled_by_kill() # we weren't killed, so we must have been started - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":366 - * and not self.__start_pending()) # and we're not pending, so we must have been aborted - * - * def __cancel_start(self): # <<<<<<<<<<<<<< - * if self._start_event is None: - * # prevent self from ever being started in the future - */ - -static PyObject *__pyx_f_6gevent_9_greenlet_8Greenlet___cancel_start(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - __Pyx_RefNannySetupContext("__cancel_start", 0); - - /* "src/gevent/greenlet.py":367 - * - * def __cancel_start(self): - * if self._start_event is None: # <<<<<<<<<<<<<< - * # prevent self from ever being started in the future - * self._start_event = _cancelled_start_event - */ - __pyx_t_1 = (__pyx_v_self->_start_event == Py_None); - __pyx_t_2 = (__pyx_t_1 != 0); - if (__pyx_t_2) { - - /* "src/gevent/greenlet.py":369 - * if self._start_event is None: - * # prevent self from ever being started in the future - * self._start_event = _cancelled_start_event # <<<<<<<<<<<<<< - * # cancel any pending start event - * # NOTE: If this was a real pending start event, this will leave a - */ - __Pyx_INCREF(((PyObject *)__pyx_v_6gevent_9_greenlet__cancelled_start_event)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_6gevent_9_greenlet__cancelled_start_event)); - __Pyx_GOTREF(__pyx_v_self->_start_event); - __Pyx_DECREF(__pyx_v_self->_start_event); - __pyx_v_self->_start_event = ((PyObject *)__pyx_v_6gevent_9_greenlet__cancelled_start_event); - - /* "src/gevent/greenlet.py":367 - * - * def __cancel_start(self): - * if self._start_event is None: # <<<<<<<<<<<<<< - * # prevent self from ever being started in the future - * self._start_event = _cancelled_start_event - */ - } - - /* "src/gevent/greenlet.py":376 - * # variable copy of that list (in _run_callbacks). This isn't a problem, - * # except for the leak-tests. - * self._start_event.stop() # <<<<<<<<<<<<<< - * self._start_event.close() - * - */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_start_event, __pyx_n_s_stop); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 376, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (__pyx_t_5) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 376, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 376, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "src/gevent/greenlet.py":377 - * # except for the leak-tests. - * self._start_event.stop() - * self._start_event.close() # <<<<<<<<<<<<<< - * - * def __handle_death_before_start(self, args): - */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_start_event, __pyx_n_s_close); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 377, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (__pyx_t_5) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 377, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 377, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "src/gevent/greenlet.py":366 - * and not self.__start_pending()) # and we're not pending, so we must have been aborted - * - * def __cancel_start(self): # <<<<<<<<<<<<<< - * if self._start_event is None: - * # prevent self from ever being started in the future - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent._greenlet.Greenlet.__cancel_start", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":379 - * self._start_event.close() - * - * def __handle_death_before_start(self, args): # <<<<<<<<<<<<<< - * # args is (t, v, tb) or simply t or v - * if self._exc_info is None and self.dead: - */ - -static PyObject *__pyx_f_6gevent_9_greenlet_8Greenlet___handle_death_before_start(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, PyObject *__pyx_v_args) { - PyObject *__pyx_v_arg = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - Py_ssize_t __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - __Pyx_RefNannySetupContext("__handle_death_before_start", 0); - __Pyx_INCREF(__pyx_v_args); - - /* "src/gevent/greenlet.py":381 - * def __handle_death_before_start(self, args): - * # args is (t, v, tb) or simply t or v - * if self._exc_info is None and self.dead: # <<<<<<<<<<<<<< - * # the greenlet was never switched to before and it will never be, _report_error was not called - * # the result was not set and the links weren't notified. let's do it here. - */ - __pyx_t_2 = (__pyx_v_self->_exc_info == ((PyObject*)Py_None)); - __pyx_t_3 = (__pyx_t_2 != 0); - if (__pyx_t_3) { - } else { - __pyx_t_1 = __pyx_t_3; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dead); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 381, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 381, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_1 = __pyx_t_3; - __pyx_L4_bool_binop_done:; - if (__pyx_t_1) { - - /* "src/gevent/greenlet.py":386 - * # checking that self.dead is true is essential, because throw() does not necessarily kill the greenlet - * # (if the exception raised by throw() is caught somewhere inside the greenlet). - * if len(args) == 1: # <<<<<<<<<<<<<< - * arg = args[0] - * #if isinstance(arg, type): - */ - if (unlikely(__pyx_v_args == Py_None)) { - PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 386, __pyx_L1_error) - } - __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v_args); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 386, __pyx_L1_error) - __pyx_t_1 = ((__pyx_t_5 == 1) != 0); - if (__pyx_t_1) { - - /* "src/gevent/greenlet.py":387 - * # (if the exception raised by throw() is caught somewhere inside the greenlet). - * if len(args) == 1: - * arg = args[0] # <<<<<<<<<<<<<< - * #if isinstance(arg, type): - * if type(arg) is type(Exception): - */ - if (unlikely(__pyx_v_args == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 387, __pyx_L1_error) - } - __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 387, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_v_arg = __pyx_t_4; - __pyx_t_4 = 0; - - /* "src/gevent/greenlet.py":389 - * arg = args[0] - * #if isinstance(arg, type): - * if type(arg) is type(Exception): # <<<<<<<<<<<<<< - * args = (arg, arg(), None) - * else: - */ - __pyx_t_1 = (((PyObject *)Py_TYPE(__pyx_v_arg)) == ((PyObject *)Py_TYPE(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))))); - __pyx_t_3 = (__pyx_t_1 != 0); - if (__pyx_t_3) { - - /* "src/gevent/greenlet.py":390 - * #if isinstance(arg, type): - * if type(arg) is type(Exception): - * args = (arg, arg(), None) # <<<<<<<<<<<<<< - * else: - * args = (type(arg), arg, None) - */ - __Pyx_INCREF(__pyx_v_arg); - __pyx_t_6 = __pyx_v_arg; __pyx_t_7 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); - if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); - __Pyx_INCREF(__pyx_t_7); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_6, function); - } - } - if (__pyx_t_7) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 390, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } else { - __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 390, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 390, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_INCREF(__pyx_v_arg); - __Pyx_GIVEREF(__pyx_v_arg); - PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_arg); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_4); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - PyTuple_SET_ITEM(__pyx_t_6, 2, Py_None); - __pyx_t_4 = 0; - __Pyx_DECREF_SET(__pyx_v_args, ((PyObject*)__pyx_t_6)); - __pyx_t_6 = 0; - - /* "src/gevent/greenlet.py":389 - * arg = args[0] - * #if isinstance(arg, type): - * if type(arg) is type(Exception): # <<<<<<<<<<<<<< - * args = (arg, arg(), None) - * else: - */ - goto __pyx_L7; - } - - /* "src/gevent/greenlet.py":392 - * args = (arg, arg(), None) - * else: - * args = (type(arg), arg, None) # <<<<<<<<<<<<<< - * elif not args: - * args = (GreenletExit, GreenletExit(), None) - */ - /*else*/ { - __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 392, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_arg))); - __Pyx_GIVEREF(((PyObject *)Py_TYPE(__pyx_v_arg))); - PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)Py_TYPE(__pyx_v_arg))); - __Pyx_INCREF(__pyx_v_arg); - __Pyx_GIVEREF(__pyx_v_arg); - PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_arg); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - PyTuple_SET_ITEM(__pyx_t_6, 2, Py_None); - __Pyx_DECREF_SET(__pyx_v_args, ((PyObject*)__pyx_t_6)); - __pyx_t_6 = 0; - } - __pyx_L7:; - - /* "src/gevent/greenlet.py":386 - * # checking that self.dead is true is essential, because throw() does not necessarily kill the greenlet - * # (if the exception raised by throw() is caught somewhere inside the greenlet). - * if len(args) == 1: # <<<<<<<<<<<<<< - * arg = args[0] - * #if isinstance(arg, type): - */ - goto __pyx_L6; - } - - /* "src/gevent/greenlet.py":393 - * else: - * args = (type(arg), arg, None) - * elif not args: # <<<<<<<<<<<<<< - * args = (GreenletExit, GreenletExit(), None) - * self._report_error(args) - */ - __pyx_t_3 = (__pyx_v_args != Py_None)&&(PyTuple_GET_SIZE(__pyx_v_args) != 0); - __pyx_t_1 = ((!__pyx_t_3) != 0); - if (__pyx_t_1) { - - /* "src/gevent/greenlet.py":394 - * args = (type(arg), arg, None) - * elif not args: - * args = (GreenletExit, GreenletExit(), None) # <<<<<<<<<<<<<< - * self._report_error(args) - * - */ - __Pyx_INCREF(__pyx_v_6gevent_9_greenlet_GreenletExit); - __pyx_t_4 = __pyx_v_6gevent_9_greenlet_GreenletExit; __pyx_t_7 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_7); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (__pyx_t_7) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 394, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } else { - __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 394, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 394, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_INCREF(__pyx_v_6gevent_9_greenlet_GreenletExit); - __Pyx_GIVEREF(__pyx_v_6gevent_9_greenlet_GreenletExit); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_6gevent_9_greenlet_GreenletExit); - __Pyx_GIVEREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_6); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - PyTuple_SET_ITEM(__pyx_t_4, 2, Py_None); - __pyx_t_6 = 0; - __Pyx_DECREF_SET(__pyx_v_args, ((PyObject*)__pyx_t_4)); - __pyx_t_4 = 0; - - /* "src/gevent/greenlet.py":393 - * else: - * args = (type(arg), arg, None) - * elif not args: # <<<<<<<<<<<<<< - * args = (GreenletExit, GreenletExit(), None) - * self._report_error(args) - */ - } - __pyx_L6:; - - /* "src/gevent/greenlet.py":395 - * elif not args: - * args = (GreenletExit, GreenletExit(), None) - * self._report_error(args) # <<<<<<<<<<<<<< - * - * @property - */ - __pyx_t_4 = ((struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet *)__pyx_v_self->__pyx_vtab)->_report_error(__pyx_v_self, __pyx_v_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 395, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "src/gevent/greenlet.py":381 - * def __handle_death_before_start(self, args): - * # args is (t, v, tb) or simply t or v - * if self._exc_info is None and self.dead: # <<<<<<<<<<<<<< - * # the greenlet was never switched to before and it will never be, _report_error was not called - * # the result was not set and the links weren't notified. let's do it here. - */ - } - - /* "src/gevent/greenlet.py":379 - * self._start_event.close() - * - * def __handle_death_before_start(self, args): # <<<<<<<<<<<<<< - * # args is (t, v, tb) or simply t or v - * if self._exc_info is None and self.dead: - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("gevent._greenlet.Greenlet.__handle_death_before_start", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_arg); - __Pyx_XDECREF(__pyx_v_args); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":398 - * - * @property - * def started(self): # <<<<<<<<<<<<<< - * # DEPRECATED - * return bool(self) - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_7started_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_7started_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_7started___get__(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_7started___get__(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - /* "src/gevent/greenlet.py":400 - * def started(self): - * # DEPRECATED - * return bool(self) # <<<<<<<<<<<<<< - * - * def ready(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 400, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 400, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "src/gevent/greenlet.py":398 - * - * @property - * def started(self): # <<<<<<<<<<<<<< - * # DEPRECATED - * return bool(self) - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent._greenlet.Greenlet.started.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":402 - * return bool(self) - * - * def ready(self): # <<<<<<<<<<<<<< - * """ - * Return a true value if and only if the greenlet has finished - */ - -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_11ready(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static int __pyx_f_6gevent_9_greenlet_8Greenlet_ready(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, int __pyx_skip_dispatch) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - int __pyx_t_6; - int __pyx_t_7; - __Pyx_RefNannySetupContext("ready", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_ready); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 402, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_11ready)) { - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 402, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 402, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 402, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_5; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/greenlet.py":411 - * necessarily the literal constants ``True`` or ``False``. - * """ - * return self.dead or self._exc_info is not None # <<<<<<<<<<<<<< - * - * def successful(self): - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dead); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 411, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 411, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (!__pyx_t_6) { - } else { - __pyx_t_5 = __pyx_t_6; - goto __pyx_L3_bool_binop_done; - } - __pyx_t_6 = (__pyx_v_self->_exc_info != ((PyObject*)Py_None)); - __pyx_t_7 = (__pyx_t_6 != 0); - __pyx_t_5 = __pyx_t_7; - __pyx_L3_bool_binop_done:; - __pyx_r = __pyx_t_5; - goto __pyx_L0; - - /* "src/gevent/greenlet.py":402 - * return bool(self) - * - * def ready(self): # <<<<<<<<<<<<<< - * """ - * Return a true value if and only if the greenlet has finished - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_WriteUnraisable("gevent._greenlet.Greenlet.ready", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); - __pyx_r = 0; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_11ready(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_9_greenlet_8Greenlet_10ready[] = "Greenlet.ready(self) -> bool\n\n Return a true value if and only if the greenlet has finished\n execution.\n\n .. versionchanged:: 1.1\n This function is only guaranteed to return true or false *values*, not\n necessarily the literal constants ``True`` or ``False``.\n "; -static PyMethodDef __pyx_mdef_6gevent_9_greenlet_8Greenlet_11ready = {"ready", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_11ready, METH_NOARGS, __pyx_doc_6gevent_9_greenlet_8Greenlet_10ready}; -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_11ready(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("ready (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_10ready(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_10ready(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("ready", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_f_6gevent_9_greenlet_8Greenlet_ready(__pyx_v_self, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 402, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._greenlet.Greenlet.ready", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":413 - * return self.dead or self._exc_info is not None - * - * def successful(self): # <<<<<<<<<<<<<< - * """ - * Return a true value if and only if the greenlet has finished execution - */ - -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_13successful(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static int __pyx_f_6gevent_9_greenlet_8Greenlet_successful(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, int __pyx_skip_dispatch) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - int __pyx_t_6; - int __pyx_t_7; - __Pyx_RefNannySetupContext("successful", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_successful); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 413, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_13successful)) { - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 413, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 413, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 413, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_5; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/greenlet.py":425 - * not necessarily the literal constants ``True`` or ``False``. - * """ - * return self._exc_info is not None and self._exc_info[1] is None # <<<<<<<<<<<<<< - * - * def __repr__(self): - */ - __pyx_t_6 = (__pyx_v_self->_exc_info != ((PyObject*)Py_None)); - __pyx_t_7 = (__pyx_t_6 != 0); - if (__pyx_t_7) { - } else { - __pyx_t_5 = __pyx_t_7; - goto __pyx_L3_bool_binop_done; - } - if (unlikely(__pyx_v_self->_exc_info == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 425, __pyx_L1_error) - } - __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_exc_info, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 425, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = (__pyx_t_1 == Py_None); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_6 = (__pyx_t_7 != 0); - __pyx_t_5 = __pyx_t_6; - __pyx_L3_bool_binop_done:; - __pyx_r = __pyx_t_5; - goto __pyx_L0; - - /* "src/gevent/greenlet.py":413 - * return self.dead or self._exc_info is not None - * - * def successful(self): # <<<<<<<<<<<<<< - * """ - * Return a true value if and only if the greenlet has finished execution - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_WriteUnraisable("gevent._greenlet.Greenlet.successful", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); - __pyx_r = 0; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_13successful(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_9_greenlet_8Greenlet_12successful[] = "Greenlet.successful(self) -> bool\n\n Return a true value if and only if the greenlet has finished execution\n successfully, that is, without raising an error.\n\n .. tip:: A greenlet that has been killed with the default\n :class:`GreenletExit` exception is considered successful.\n That is, ``GreenletExit`` is not considered an error.\n\n .. note:: This function is only guaranteed to return true or false *values*,\n not necessarily the literal constants ``True`` or ``False``.\n "; -static PyMethodDef __pyx_mdef_6gevent_9_greenlet_8Greenlet_13successful = {"successful", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_13successful, METH_NOARGS, __pyx_doc_6gevent_9_greenlet_8Greenlet_12successful}; -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_13successful(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("successful (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_12successful(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_12successful(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("successful", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_f_6gevent_9_greenlet_8Greenlet_successful(__pyx_v_self, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 413, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._greenlet.Greenlet.successful", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":427 - * return self._exc_info is not None and self._exc_info[1] is None - * - * def __repr__(self): # <<<<<<<<<<<<<< - * classname = self.__class__.__name__ - * result = '<%s "%s" at %s' % (classname, self.name, hex(id(self))) - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_15__repr__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_15__repr__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_14__repr__(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_14__repr__(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self) { - PyObject *__pyx_v_classname = NULL; - PyObject *__pyx_v_result = NULL; - PyObject *__pyx_v_formatted = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - __Pyx_RefNannySetupContext("__repr__", 0); - - /* "src/gevent/greenlet.py":428 - * - * def __repr__(self): - * classname = self.__class__.__name__ # <<<<<<<<<<<<<< - * result = '<%s "%s" at %s' % (classname, self.name, hex(id(self))) - * formatted = self._formatinfo() - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 428, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 428, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_classname = __pyx_t_2; - __pyx_t_2 = 0; - - /* "src/gevent/greenlet.py":429 - * def __repr__(self): - * classname = self.__class__.__name__ - * result = '<%s "%s" at %s' % (classname, self.name, hex(id(self))) # <<<<<<<<<<<<<< - * formatted = self._formatinfo() - * if formatted: - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 429, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 429, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_hex, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 429, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 429, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_v_classname); - __Pyx_GIVEREF(__pyx_v_classname); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_classname); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_3); - __pyx_t_2 = 0; - __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_s_s_at_s, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 429, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_result = __pyx_t_3; - __pyx_t_3 = 0; - - /* "src/gevent/greenlet.py":430 - * classname = self.__class__.__name__ - * result = '<%s "%s" at %s' % (classname, self.name, hex(id(self))) - * formatted = self._formatinfo() # <<<<<<<<<<<<<< - * if formatted: - * result += ': ' + formatted - */ - __pyx_t_3 = ((struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet *)__pyx_v_self->__pyx_vtab)->_formatinfo(__pyx_v_self, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 430, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_v_formatted = __pyx_t_3; - __pyx_t_3 = 0; - - /* "src/gevent/greenlet.py":431 - * result = '<%s "%s" at %s' % (classname, self.name, hex(id(self))) - * formatted = self._formatinfo() - * if formatted: # <<<<<<<<<<<<<< - * result += ': ' + formatted - * return result + '>' - */ - __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_formatted); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 431, __pyx_L1_error) - if (__pyx_t_4) { - - /* "src/gevent/greenlet.py":432 - * formatted = self._formatinfo() - * if formatted: - * result += ': ' + formatted # <<<<<<<<<<<<<< - * return result + '>' - * - */ - __pyx_t_3 = PyNumber_Add(__pyx_kp_s__2, __pyx_v_formatted); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 432, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_result, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 432, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":431 - * result = '<%s "%s" at %s' % (classname, self.name, hex(id(self))) - * formatted = self._formatinfo() - * if formatted: # <<<<<<<<<<<<<< - * result += ': ' + formatted - * return result + '>' - */ - } - - /* "src/gevent/greenlet.py":433 - * if formatted: - * result += ': ' + formatted - * return result + '>' # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyNumber_Add(__pyx_v_result, __pyx_kp_s__3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 433, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/greenlet.py":427 - * return self._exc_info is not None and self._exc_info[1] is None - * - * def __repr__(self): # <<<<<<<<<<<<<< - * classname = self.__class__.__name__ - * result = '<%s "%s" at %s' % (classname, self.name, hex(id(self))) - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent._greenlet.Greenlet.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_classname); - __Pyx_XDECREF(__pyx_v_result); - __Pyx_XDECREF(__pyx_v_formatted); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":436 - * - * - * def _formatinfo(self): # <<<<<<<<<<<<<< - * info = self._formatted_info - * if info is not None: - */ - -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_17_formatinfo(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_f_6gevent_9_greenlet_8Greenlet__formatinfo(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, int __pyx_skip_dispatch) { - PyObject *__pyx_v_info = NULL; - PyObject *__pyx_v_func = NULL; - PyObject *__pyx_v_im_self = NULL; - PyObject *__pyx_v_funcname = NULL; - PyObject *__pyx_v_result = NULL; - PyObject *__pyx_v_args = NULL; - PyObject *__pyx_v_x = NULL; - PyObject *__pyx_v_key = NULL; - PyObject *__pyx_v_value = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - int __pyx_t_6; - Py_ssize_t __pyx_t_7; - PyObject *(*__pyx_t_8)(PyObject *); - PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - PyObject *(*__pyx_t_11)(PyObject *); - int __pyx_t_12; - __Pyx_RefNannySetupContext("_formatinfo", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_formatinfo); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 436, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_17_formatinfo)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 436, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 436, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(0, 436, __pyx_L1_error) - __pyx_r = ((PyObject*)__pyx_t_2); - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/greenlet.py":437 - * - * def _formatinfo(self): - * info = self._formatted_info # <<<<<<<<<<<<<< - * if info is not None: - * return info - */ - __pyx_t_1 = __pyx_v_self->_formatted_info; - __Pyx_INCREF(__pyx_t_1); - __pyx_v_info = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":438 - * def _formatinfo(self): - * info = self._formatted_info - * if info is not None: # <<<<<<<<<<<<<< - * return info - * - */ - __pyx_t_5 = (__pyx_v_info != Py_None); - __pyx_t_6 = (__pyx_t_5 != 0); - if (__pyx_t_6) { - - /* "src/gevent/greenlet.py":439 - * info = self._formatted_info - * if info is not None: - * return info # <<<<<<<<<<<<<< - * - * # Are we running an arbitrary function provided to the constructor, - */ - __Pyx_XDECREF(__pyx_r); - if (!(likely(PyString_CheckExact(__pyx_v_info))||((__pyx_v_info) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_v_info)->tp_name), 0))) __PYX_ERR(0, 439, __pyx_L1_error) - __Pyx_INCREF(__pyx_v_info); - __pyx_r = ((PyObject*)__pyx_v_info); - goto __pyx_L0; - - /* "src/gevent/greenlet.py":438 - * def _formatinfo(self): - * info = self._formatted_info - * if info is not None: # <<<<<<<<<<<<<< - * return info - * - */ - } - - /* "src/gevent/greenlet.py":443 - * # Are we running an arbitrary function provided to the constructor, - * # or did a subclass override _run? - * func = self._run # <<<<<<<<<<<<<< - * im_self = getattr(func, '__self__', None) - * if im_self is self: - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_run_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 443, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_func = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":444 - * # or did a subclass override _run? - * func = self._run - * im_self = getattr(func, '__self__', None) # <<<<<<<<<<<<<< - * if im_self is self: - * funcname = '_run' - */ - __pyx_t_1 = __Pyx_GetAttr3(__pyx_v_func, __pyx_n_s_self, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 444, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_im_self = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":445 - * func = self._run - * im_self = getattr(func, '__self__', None) - * if im_self is self: # <<<<<<<<<<<<<< - * funcname = '_run' - * elif im_self is not None: - */ - __pyx_t_6 = (__pyx_v_im_self == ((PyObject *)__pyx_v_self)); - __pyx_t_5 = (__pyx_t_6 != 0); - if (__pyx_t_5) { - - /* "src/gevent/greenlet.py":446 - * im_self = getattr(func, '__self__', None) - * if im_self is self: - * funcname = '_run' # <<<<<<<<<<<<<< - * elif im_self is not None: - * funcname = repr(func) - */ - __Pyx_INCREF(__pyx_n_s_run_2); - __pyx_v_funcname = __pyx_n_s_run_2; - - /* "src/gevent/greenlet.py":445 - * func = self._run - * im_self = getattr(func, '__self__', None) - * if im_self is self: # <<<<<<<<<<<<<< - * funcname = '_run' - * elif im_self is not None: - */ - goto __pyx_L4; - } - - /* "src/gevent/greenlet.py":447 - * if im_self is self: - * funcname = '_run' - * elif im_self is not None: # <<<<<<<<<<<<<< - * funcname = repr(func) - * else: - */ - __pyx_t_5 = (__pyx_v_im_self != Py_None); - __pyx_t_6 = (__pyx_t_5 != 0); - if (__pyx_t_6) { - - /* "src/gevent/greenlet.py":448 - * funcname = '_run' - * elif im_self is not None: - * funcname = repr(func) # <<<<<<<<<<<<<< - * else: - * funcname = getattr(func, '__name__', '') or repr(func) - */ - __pyx_t_1 = PyObject_Repr(__pyx_v_func); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 448, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_funcname = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":447 - * if im_self is self: - * funcname = '_run' - * elif im_self is not None: # <<<<<<<<<<<<<< - * funcname = repr(func) - * else: - */ - goto __pyx_L4; - } - - /* "src/gevent/greenlet.py":450 - * funcname = repr(func) - * else: - * funcname = getattr(func, '__name__', '') or repr(func) # <<<<<<<<<<<<<< - * - * result = funcname - */ - /*else*/ { - __pyx_t_2 = __Pyx_GetAttr3(__pyx_v_func, __pyx_n_s_name, __pyx_kp_s__4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 450, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 450, __pyx_L1_error) - if (!__pyx_t_6) { - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else { - __Pyx_INCREF(__pyx_t_2); - __pyx_t_1 = __pyx_t_2; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - goto __pyx_L5_bool_binop_done; - } - __pyx_t_2 = PyObject_Repr(__pyx_v_func); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 450, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_t_2); - __pyx_t_1 = __pyx_t_2; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_L5_bool_binop_done:; - __pyx_v_funcname = __pyx_t_1; - __pyx_t_1 = 0; - } - __pyx_L4:; - - /* "src/gevent/greenlet.py":452 - * funcname = getattr(func, '__name__', '') or repr(func) - * - * result = funcname # <<<<<<<<<<<<<< - * args = [] - * if self.args: - */ - __Pyx_INCREF(__pyx_v_funcname); - __pyx_v_result = __pyx_v_funcname; - - /* "src/gevent/greenlet.py":453 - * - * result = funcname - * args = [] # <<<<<<<<<<<<<< - * if self.args: - * args = [repr(x)[:50] for x in self.args] - */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 453, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_args = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":454 - * result = funcname - * args = [] - * if self.args: # <<<<<<<<<<<<<< - * args = [repr(x)[:50] for x in self.args] - * if self.kwargs: - */ - __pyx_t_6 = (__pyx_v_self->args != Py_None)&&(PyTuple_GET_SIZE(__pyx_v_self->args) != 0); - if (__pyx_t_6) { - - /* "src/gevent/greenlet.py":455 - * args = [] - * if self.args: - * args = [repr(x)[:50] for x in self.args] # <<<<<<<<<<<<<< - * if self.kwargs: - * args.extend(['%s=%s' % (key, repr(value)[:50]) for (key, value) in self.kwargs.items()]) - */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 455, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (unlikely(__pyx_v_self->args == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 455, __pyx_L1_error) - } - __pyx_t_2 = __pyx_v_self->args; __Pyx_INCREF(__pyx_t_2); __pyx_t_7 = 0; - for (;;) { - if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_2)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_3); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 455, __pyx_L1_error) - #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 455, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - #endif - __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_3); - __pyx_t_3 = 0; - __pyx_t_3 = PyObject_Repr(__pyx_v_x); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 455, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (unlikely(__pyx_t_3 == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 455, __pyx_L1_error) - } - __pyx_t_4 = PySequence_GetSlice(__pyx_t_3, 0, 50); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 455, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_4))) __PYX_ERR(0, 455, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF_SET(__pyx_v_args, ((PyObject*)__pyx_t_1)); - __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":454 - * result = funcname - * args = [] - * if self.args: # <<<<<<<<<<<<<< - * args = [repr(x)[:50] for x in self.args] - * if self.kwargs: - */ - } - - /* "src/gevent/greenlet.py":456 - * if self.args: - * args = [repr(x)[:50] for x in self.args] - * if self.kwargs: # <<<<<<<<<<<<<< - * args.extend(['%s=%s' % (key, repr(value)[:50]) for (key, value) in self.kwargs.items()]) - * if args: - */ - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_self->kwargs); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 456, __pyx_L1_error) - if (__pyx_t_6) { - - /* "src/gevent/greenlet.py":457 - * args = [repr(x)[:50] for x in self.args] - * if self.kwargs: - * args.extend(['%s=%s' % (key, repr(value)[:50]) for (key, value) in self.kwargs.items()]) # <<<<<<<<<<<<<< - * if args: - * result += '(' + ', '.join(args) + ')' - */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 457, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (unlikely(__pyx_v_self->kwargs == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items"); - __PYX_ERR(0, 457, __pyx_L1_error) - } - __pyx_t_2 = __Pyx_PyDict_Items(__pyx_v_self->kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 457, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) { - __pyx_t_4 = __pyx_t_2; __Pyx_INCREF(__pyx_t_4); __pyx_t_7 = 0; - __pyx_t_8 = NULL; - } else { - __pyx_t_7 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 457, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_8 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 457, __pyx_L1_error) - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - for (;;) { - if (likely(!__pyx_t_8)) { - if (likely(PyList_CheckExact(__pyx_t_4))) { - if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_4)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_2 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_2); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 457, __pyx_L1_error) - #else - __pyx_t_2 = PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 457, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - #endif - } else { - if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_4)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_2); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 457, __pyx_L1_error) - #else - __pyx_t_2 = PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 457, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - #endif - } - } else { - __pyx_t_2 = __pyx_t_8(__pyx_t_4); - if (unlikely(!__pyx_t_2)) { - PyObject* exc_type = PyErr_Occurred(); - if (exc_type) { - if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 457, __pyx_L1_error) - } - break; - } - __Pyx_GOTREF(__pyx_t_2); - } - if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { - PyObject* sequence = __pyx_t_2; - Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); - if (unlikely(size != 2)) { - if (size > 2) __Pyx_RaiseTooManyValuesError(2); - else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 457, __pyx_L1_error) - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - if (likely(PyTuple_CheckExact(sequence))) { - __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); - __pyx_t_9 = PyTuple_GET_ITEM(sequence, 1); - } else { - __pyx_t_3 = PyList_GET_ITEM(sequence, 0); - __pyx_t_9 = PyList_GET_ITEM(sequence, 1); - } - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(__pyx_t_9); - #else - __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 457, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_9 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 457, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - #endif - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else { - Py_ssize_t index = -1; - __pyx_t_10 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 457, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_10); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_11 = Py_TYPE(__pyx_t_10)->tp_iternext; - index = 0; __pyx_t_3 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_3)) goto __pyx_L13_unpacking_failed; - __Pyx_GOTREF(__pyx_t_3); - index = 1; __pyx_t_9 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_9)) goto __pyx_L13_unpacking_failed; - __Pyx_GOTREF(__pyx_t_9); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 2) < 0) __PYX_ERR(0, 457, __pyx_L1_error) - __pyx_t_11 = NULL; - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - goto __pyx_L14_unpacking_done; - __pyx_L13_unpacking_failed:; - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __pyx_t_11 = NULL; - if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 457, __pyx_L1_error) - __pyx_L14_unpacking_done:; - } - __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_3); - __pyx_t_3 = 0; - __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_9); - __pyx_t_9 = 0; - __pyx_t_2 = PyObject_Repr(__pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 457, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (unlikely(__pyx_t_2 == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 457, __pyx_L1_error) - } - __pyx_t_9 = PySequence_GetSlice(__pyx_t_2, 0, 50); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 457, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 457, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_v_key); - __Pyx_GIVEREF(__pyx_v_key); - PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_key); - __Pyx_GIVEREF(__pyx_t_9); - PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_9); - __pyx_t_9 = 0; - __pyx_t_9 = __Pyx_PyString_Format(__pyx_kp_s_s_s, __pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 457, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_9))) __PYX_ERR(0, 457, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_12 = __Pyx_PyList_Extend(__pyx_v_args, __pyx_t_1); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 457, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":456 - * if self.args: - * args = [repr(x)[:50] for x in self.args] - * if self.kwargs: # <<<<<<<<<<<<<< - * args.extend(['%s=%s' % (key, repr(value)[:50]) for (key, value) in self.kwargs.items()]) - * if args: - */ - } - - /* "src/gevent/greenlet.py":458 - * if self.kwargs: - * args.extend(['%s=%s' % (key, repr(value)[:50]) for (key, value) in self.kwargs.items()]) - * if args: # <<<<<<<<<<<<<< - * result += '(' + ', '.join(args) + ')' - * # it is important to save the result here, because once the greenlet exits '_run' attribute will be removed - */ - __pyx_t_6 = (PyList_GET_SIZE(__pyx_v_args) != 0); - if (__pyx_t_6) { - - /* "src/gevent/greenlet.py":459 - * args.extend(['%s=%s' % (key, repr(value)[:50]) for (key, value) in self.kwargs.items()]) - * if args: - * result += '(' + ', '.join(args) + ')' # <<<<<<<<<<<<<< - * # it is important to save the result here, because once the greenlet exits '_run' attribute will be removed - * self._formatted_info = result - */ - __pyx_t_1 = __Pyx_PyString_Join(__pyx_kp_s__6, __pyx_v_args); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 459, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = PyNumber_Add(__pyx_kp_s__5, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 459, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyNumber_Add(__pyx_t_4, __pyx_kp_s__7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 459, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_result, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 459, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_4); - __pyx_t_4 = 0; - - /* "src/gevent/greenlet.py":458 - * if self.kwargs: - * args.extend(['%s=%s' % (key, repr(value)[:50]) for (key, value) in self.kwargs.items()]) - * if args: # <<<<<<<<<<<<<< - * result += '(' + ', '.join(args) + ')' - * # it is important to save the result here, because once the greenlet exits '_run' attribute will be removed - */ - } - - /* "src/gevent/greenlet.py":461 - * result += '(' + ', '.join(args) + ')' - * # it is important to save the result here, because once the greenlet exits '_run' attribute will be removed - * self._formatted_info = result # <<<<<<<<<<<<<< - * return result - * - */ - if (!(likely(PyString_CheckExact(__pyx_v_result))||((__pyx_v_result) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_v_result)->tp_name), 0))) __PYX_ERR(0, 461, __pyx_L1_error) - __pyx_t_4 = __pyx_v_result; - __Pyx_INCREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_4); - __Pyx_GOTREF(__pyx_v_self->_formatted_info); - __Pyx_DECREF(__pyx_v_self->_formatted_info); - __pyx_v_self->_formatted_info = ((PyObject*)__pyx_t_4); - __pyx_t_4 = 0; - - /* "src/gevent/greenlet.py":462 - * # it is important to save the result here, because once the greenlet exits '_run' attribute will be removed - * self._formatted_info = result - * return result # <<<<<<<<<<<<<< - * - * @property - */ - __Pyx_XDECREF(__pyx_r); - if (!(likely(PyString_CheckExact(__pyx_v_result))||((__pyx_v_result) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_v_result)->tp_name), 0))) __PYX_ERR(0, 462, __pyx_L1_error) - __Pyx_INCREF(__pyx_v_result); - __pyx_r = ((PyObject*)__pyx_v_result); - goto __pyx_L0; - - /* "src/gevent/greenlet.py":436 - * - * - * def _formatinfo(self): # <<<<<<<<<<<<<< - * info = self._formatted_info - * if info is not None: - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_9); - __Pyx_XDECREF(__pyx_t_10); - __Pyx_AddTraceback("gevent._greenlet.Greenlet._formatinfo", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_info); - __Pyx_XDECREF(__pyx_v_func); - __Pyx_XDECREF(__pyx_v_im_self); - __Pyx_XDECREF(__pyx_v_funcname); - __Pyx_XDECREF(__pyx_v_result); - __Pyx_XDECREF(__pyx_v_args); - __Pyx_XDECREF(__pyx_v_x); - __Pyx_XDECREF(__pyx_v_key); - __Pyx_XDECREF(__pyx_v_value); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_17_formatinfo(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_9_greenlet_8Greenlet_16_formatinfo[] = "Greenlet._formatinfo(self) -> str"; -static PyMethodDef __pyx_mdef_6gevent_9_greenlet_8Greenlet_17_formatinfo = {"_formatinfo", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_17_formatinfo, METH_NOARGS, __pyx_doc_6gevent_9_greenlet_8Greenlet_16_formatinfo}; -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_17_formatinfo(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_formatinfo (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_16_formatinfo(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_16_formatinfo(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_formatinfo", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_9_greenlet_8Greenlet__formatinfo(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 436, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._greenlet.Greenlet._formatinfo", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":465 - * - * @property - * def exception(self): # <<<<<<<<<<<<<< - * """ - * Holds the exception instance raised by the function if the - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_9exception_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_9exception_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_9exception___get__(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_9exception___get__(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - /* "src/gevent/greenlet.py":470 - * greenlet has finished with an error. Otherwise ``None``. - * """ - * return self._exc_info[1] if self._exc_info is not None else None # <<<<<<<<<<<<<< - * - * @property - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = (__pyx_v_self->_exc_info != ((PyObject*)Py_None)); - if ((__pyx_t_2 != 0)) { - if (unlikely(__pyx_v_self->_exc_info == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 470, __pyx_L1_error) - } - __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_self->_exc_info, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 470, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = __pyx_t_3; - __pyx_t_3 = 0; - } else { - __Pyx_INCREF(Py_None); - __pyx_t_1 = Py_None; - } - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/greenlet.py":465 - * - * @property - * def exception(self): # <<<<<<<<<<<<<< - * """ - * Holds the exception instance raised by the function if the - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent._greenlet.Greenlet.exception.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":473 - * - * @property - * def exc_info(self): # <<<<<<<<<<<<<< - * """ - * Holds the exc_info three-tuple raised by the function if the - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_8exc_info_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_8exc_info_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_8exc_info___get__(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_8exc_info___get__(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self) { - PyObject *__pyx_v_ei = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - int __pyx_t_3; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - /* "src/gevent/greenlet.py":482 - * .. versionadded:: 1.1 - * """ - * ei = self._exc_info # <<<<<<<<<<<<<< - * if ei is not None and ei[0] is not None: - * return (ei[0], ei[1], load_traceback(ei[2])) - */ - __pyx_t_1 = __pyx_v_self->_exc_info; - __Pyx_INCREF(__pyx_t_1); - __pyx_v_ei = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":483 - * """ - * ei = self._exc_info - * if ei is not None and ei[0] is not None: # <<<<<<<<<<<<<< - * return (ei[0], ei[1], load_traceback(ei[2])) - * - */ - __pyx_t_3 = (__pyx_v_ei != ((PyObject*)Py_None)); - __pyx_t_4 = (__pyx_t_3 != 0); - if (__pyx_t_4) { - } else { - __pyx_t_2 = __pyx_t_4; - goto __pyx_L4_bool_binop_done; - } - if (unlikely(__pyx_v_ei == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 483, __pyx_L1_error) - } - __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_ei, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 483, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = (__pyx_t_1 != Py_None); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_3 = (__pyx_t_4 != 0); - __pyx_t_2 = __pyx_t_3; - __pyx_L4_bool_binop_done:; - if (__pyx_t_2) { - - /* "src/gevent/greenlet.py":484 - * ei = self._exc_info - * if ei is not None and ei[0] is not None: - * return (ei[0], ei[1], load_traceback(ei[2])) # <<<<<<<<<<<<<< - * - * def throw(self, *args): - */ - __Pyx_XDECREF(__pyx_r); - if (unlikely(__pyx_v_ei == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 484, __pyx_L1_error) - } - __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_ei, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 484, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (unlikely(__pyx_v_ei == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 484, __pyx_L1_error) - } - __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v_ei, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 484, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (unlikely(__pyx_v_ei == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 484, __pyx_L1_error) - } - __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v_ei, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 484, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_INCREF(__pyx_v_6gevent_9_greenlet_load_traceback); - __pyx_t_8 = __pyx_v_6gevent_9_greenlet_load_traceback; __pyx_t_9 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { - __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8); - if (likely(__pyx_t_9)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); - __Pyx_INCREF(__pyx_t_9); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_8, function); - } - } - if (!__pyx_t_9) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 484, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_6); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_8)) { - PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_t_7}; - __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 484, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { - PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_t_7}; - __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 484, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } else - #endif - { - __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 484, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_10); - __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __pyx_t_9 = NULL; - __Pyx_GIVEREF(__pyx_t_7); - PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_7); - __pyx_t_7 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_10, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 484, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - } - } - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 484, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_5); - __Pyx_GIVEREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_6); - __pyx_t_1 = 0; - __pyx_t_5 = 0; - __pyx_t_6 = 0; - __pyx_r = __pyx_t_8; - __pyx_t_8 = 0; - goto __pyx_L0; - - /* "src/gevent/greenlet.py":483 - * """ - * ei = self._exc_info - * if ei is not None and ei[0] is not None: # <<<<<<<<<<<<<< - * return (ei[0], ei[1], load_traceback(ei[2])) - * - */ - } - - /* "src/gevent/greenlet.py":473 - * - * @property - * def exc_info(self): # <<<<<<<<<<<<<< - * """ - * Holds the exc_info three-tuple raised by the function if the - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_XDECREF(__pyx_t_9); - __Pyx_XDECREF(__pyx_t_10); - __Pyx_AddTraceback("gevent._greenlet.Greenlet.exc_info.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_ei); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":486 - * return (ei[0], ei[1], load_traceback(ei[2])) - * - * def throw(self, *args): # <<<<<<<<<<<<<< - * """Immediately switch into the greenlet and raise an exception in it. - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_19throw(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_9_greenlet_8Greenlet_18throw[] = "Greenlet.throw(self, *args)\nImmediately switch into the greenlet and raise an exception in it.\n\n Should only be called from the HUB, otherwise the current greenlet is left unscheduled forever.\n To raise an exception in a safe manner from any greenlet, use :meth:`kill`.\n\n If a greenlet was started but never switched to yet, then also\n a) cancel the event that will start it\n b) fire the notifications as if an exception was raised in a greenlet\n "; -static PyMethodDef __pyx_mdef_6gevent_9_greenlet_8Greenlet_19throw = {"throw", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_19throw, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_9_greenlet_8Greenlet_18throw}; -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_19throw(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_args = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("throw (wrapper)", 0); - if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "throw", 0))) return NULL; - __Pyx_INCREF(__pyx_args); - __pyx_v_args = __pyx_args; - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_18throw(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self), __pyx_v_args); - - /* function exit code */ - __Pyx_XDECREF(__pyx_v_args); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_18throw(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, PyObject *__pyx_v_args) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - int __pyx_t_7; - char const *__pyx_t_8; - PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - PyObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; - PyObject *__pyx_t_13 = NULL; - PyObject *__pyx_t_14 = NULL; - __Pyx_RefNannySetupContext("throw", 0); - - /* "src/gevent/greenlet.py":496 - * b) fire the notifications as if an exception was raised in a greenlet - * """ - * self.__cancel_start() # <<<<<<<<<<<<<< - * - * try: - */ - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet *)__pyx_v_self->__pyx_vtab)->__pyx___cancel_start(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 496, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":498 - * self.__cancel_start() - * - * try: # <<<<<<<<<<<<<< - * if not self.dead: - * # Prevent switching into a greenlet *at all* if we had never - */ - /*try:*/ { - - /* "src/gevent/greenlet.py":499 - * - * try: - * if not self.dead: # <<<<<<<<<<<<<< - * # Prevent switching into a greenlet *at all* if we had never - * # started it. Usually this is the same thing that happens by throwing, - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dead); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 499, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 499, __pyx_L4_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_3 = ((!__pyx_t_2) != 0); - if (__pyx_t_3) { - - /* "src/gevent/greenlet.py":504 - * # but if this is done from the hub with nothing else running, prevents a - * # LoopExit. - * greenlet.throw(self, *args) # <<<<<<<<<<<<<< - * finally: - * self.__handle_death_before_start(args) - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_6gevent_9_greenlet_greenlet), __pyx_n_s_throw); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 504, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 504, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_self)); - __pyx_t_5 = PyNumber_Add(__pyx_t_4, __pyx_v_args); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 504, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 504, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "src/gevent/greenlet.py":499 - * - * try: - * if not self.dead: # <<<<<<<<<<<<<< - * # Prevent switching into a greenlet *at all* if we had never - * # started it. Usually this is the same thing that happens by throwing, - */ - } - } - - /* "src/gevent/greenlet.py":506 - * greenlet.throw(self, *args) - * finally: - * self.__handle_death_before_start(args) # <<<<<<<<<<<<<< - * - * def start(self): - */ - /*finally:*/ { - /*normal exit:*/{ - __pyx_t_4 = ((struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet *)__pyx_v_self->__pyx_vtab)->__pyx___handle_death_before_start(__pyx_v_self, __pyx_v_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 506, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - goto __pyx_L5; - } - __pyx_L4_error:; - /*exception exit:*/{ - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14); - if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11) < 0)) __Pyx_ErrFetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); - __Pyx_XGOTREF(__pyx_t_9); - __Pyx_XGOTREF(__pyx_t_10); - __Pyx_XGOTREF(__pyx_t_11); - __Pyx_XGOTREF(__pyx_t_12); - __Pyx_XGOTREF(__pyx_t_13); - __Pyx_XGOTREF(__pyx_t_14); - __pyx_t_6 = __pyx_lineno; __pyx_t_7 = __pyx_clineno; __pyx_t_8 = __pyx_filename; - { - __pyx_t_4 = ((struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet *)__pyx_v_self->__pyx_vtab)->__pyx___handle_death_before_start(__pyx_v_self, __pyx_v_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 506, __pyx_L8_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_12); - __Pyx_XGIVEREF(__pyx_t_13); - __Pyx_XGIVEREF(__pyx_t_14); - __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14); - } - __Pyx_XGIVEREF(__pyx_t_9); - __Pyx_XGIVEREF(__pyx_t_10); - __Pyx_XGIVEREF(__pyx_t_11); - __Pyx_ErrRestore(__pyx_t_9, __pyx_t_10, __pyx_t_11); - __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; - __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_7; __pyx_filename = __pyx_t_8; - goto __pyx_L1_error; - __pyx_L8_error:; - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_12); - __Pyx_XGIVEREF(__pyx_t_13); - __Pyx_XGIVEREF(__pyx_t_14); - __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14); - } - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; - goto __pyx_L1_error; - } - __pyx_L5:; - } - - /* "src/gevent/greenlet.py":486 - * return (ei[0], ei[1], load_traceback(ei[2])) - * - * def throw(self, *args): # <<<<<<<<<<<<<< - * """Immediately switch into the greenlet and raise an exception in it. - * - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent._greenlet.Greenlet.throw", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":508 - * self.__handle_death_before_start(args) - * - * def start(self): # <<<<<<<<<<<<<< - * """Schedule the greenlet to run in this loop iteration""" - * if self._start_event is None: - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_21start(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_9_greenlet_8Greenlet_20start[] = "Greenlet.start(self)\nSchedule the greenlet to run in this loop iteration"; -static PyMethodDef __pyx_mdef_6gevent_9_greenlet_8Greenlet_21start = {"start", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_21start, METH_NOARGS, __pyx_doc_6gevent_9_greenlet_8Greenlet_20start}; -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_21start(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("start (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_20start(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_20start(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - __Pyx_RefNannySetupContext("start", 0); - - /* "src/gevent/greenlet.py":510 - * def start(self): - * """Schedule the greenlet to run in this loop iteration""" - * if self._start_event is None: # <<<<<<<<<<<<<< - * self._start_event = self.parent.loop.run_callback(self.switch) - * - */ - __pyx_t_1 = (__pyx_v_self->_start_event == Py_None); - __pyx_t_2 = (__pyx_t_1 != 0); - if (__pyx_t_2) { - - /* "src/gevent/greenlet.py":511 - * """Schedule the greenlet to run in this loop iteration""" - * if self._start_event is None: - * self._start_event = self.parent.loop.run_callback(self.switch) # <<<<<<<<<<<<<< - * - * def start_later(self, seconds): - */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parent); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 511, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_loop); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 511, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_run_callback); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 511, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_switch); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 511, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (!__pyx_t_6) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 511, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_3); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 511, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 511, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else - #endif - { - __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 511, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL; - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5); - __pyx_t_5 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 511, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GIVEREF(__pyx_t_3); - __Pyx_GOTREF(__pyx_v_self->_start_event); - __Pyx_DECREF(__pyx_v_self->_start_event); - __pyx_v_self->_start_event = __pyx_t_3; - __pyx_t_3 = 0; - - /* "src/gevent/greenlet.py":510 - * def start(self): - * """Schedule the greenlet to run in this loop iteration""" - * if self._start_event is None: # <<<<<<<<<<<<<< - * self._start_event = self.parent.loop.run_callback(self.switch) - * - */ - } - - /* "src/gevent/greenlet.py":508 - * self.__handle_death_before_start(args) - * - * def start(self): # <<<<<<<<<<<<<< - * """Schedule the greenlet to run in this loop iteration""" - * if self._start_event is None: - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("gevent._greenlet.Greenlet.start", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":513 - * self._start_event = self.parent.loop.run_callback(self.switch) - * - * def start_later(self, seconds): # <<<<<<<<<<<<<< - * """ - * start_later(seconds) -> None - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_23start_later(PyObject *__pyx_v_self, PyObject *__pyx_v_seconds); /*proto*/ -static char __pyx_doc_6gevent_9_greenlet_8Greenlet_22start_later[] = "Greenlet.start_later(self, seconds)\n\n start_later(seconds) -> None\n\n Schedule the greenlet to run in the future loop iteration\n *seconds* later\n "; -static PyMethodDef __pyx_mdef_6gevent_9_greenlet_8Greenlet_23start_later = {"start_later", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_23start_later, METH_O, __pyx_doc_6gevent_9_greenlet_8Greenlet_22start_later}; -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_23start_later(PyObject *__pyx_v_self, PyObject *__pyx_v_seconds) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("start_later (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_22start_later(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self), ((PyObject *)__pyx_v_seconds)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_22start_later(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, PyObject *__pyx_v_seconds) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - __Pyx_RefNannySetupContext("start_later", 0); - - /* "src/gevent/greenlet.py":520 - * *seconds* later - * """ - * if self._start_event is None: # <<<<<<<<<<<<<< - * self._start_event = self.parent.loop.timer(seconds) - * self._start_event.start(self.switch) - */ - __pyx_t_1 = (__pyx_v_self->_start_event == Py_None); - __pyx_t_2 = (__pyx_t_1 != 0); - if (__pyx_t_2) { - - /* "src/gevent/greenlet.py":521 - * """ - * if self._start_event is None: - * self._start_event = self.parent.loop.timer(seconds) # <<<<<<<<<<<<<< - * self._start_event.start(self.switch) - * - */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parent); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 521, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_loop); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 521, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_timer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 521, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (!__pyx_t_5) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_seconds); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 521, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_seconds}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 521, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_3); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_seconds}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 521, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_3); - } else - #endif - { - __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 521, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL; - __Pyx_INCREF(__pyx_v_seconds); - __Pyx_GIVEREF(__pyx_v_seconds); - PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_seconds); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 521, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GIVEREF(__pyx_t_3); - __Pyx_GOTREF(__pyx_v_self->_start_event); - __Pyx_DECREF(__pyx_v_self->_start_event); - __pyx_v_self->_start_event = __pyx_t_3; - __pyx_t_3 = 0; - - /* "src/gevent/greenlet.py":522 - * if self._start_event is None: - * self._start_event = self.parent.loop.timer(seconds) - * self._start_event.start(self.switch) # <<<<<<<<<<<<<< - * - * @classmethod - */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_start_event, __pyx_n_s_start); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 522, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_switch); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 522, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (!__pyx_t_5) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 522, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_3); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_6}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 522, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_6}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 522, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } else - #endif - { - __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 522, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; - __Pyx_GIVEREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_6); - __pyx_t_6 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 522, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "src/gevent/greenlet.py":520 - * *seconds* later - * """ - * if self._start_event is None: # <<<<<<<<<<<<<< - * self._start_event = self.parent.loop.timer(seconds) - * self._start_event.start(self.switch) - */ - } - - /* "src/gevent/greenlet.py":513 - * self._start_event = self.parent.loop.run_callback(self.switch) - * - * def start_later(self, seconds): # <<<<<<<<<<<<<< - * """ - * start_later(seconds) -> None - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("gevent._greenlet.Greenlet.start_later", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":525 - * - * @classmethod - * def spawn(cls, *args, **kwargs): # <<<<<<<<<<<<<< - * """ - * spawn(function, *args, **kwargs) -> Greenlet - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_25spawn(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_9_greenlet_8Greenlet_24spawn[] = "Greenlet.spawn(type cls, *args, **kwargs)\n\n spawn(function, *args, **kwargs) -> Greenlet\n\n Create a new :class:`Greenlet` object and schedule it to run ``function(*args, **kwargs)``.\n This can be used as ``gevent.spawn`` or ``Greenlet.spawn``.\n\n The arguments are passed to :meth:`Greenlet.__init__`.\n\n .. versionchanged:: 1.1b1\n If a *function* is given that is not callable, immediately raise a :exc:`TypeError`\n instead of spawning a greenlet that will raise an uncaught TypeError.\n "; -static PyMethodDef __pyx_mdef_6gevent_9_greenlet_8Greenlet_25spawn = {"spawn", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_25spawn, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_9_greenlet_8Greenlet_24spawn}; -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_25spawn(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_args = 0; - PyObject *__pyx_v_kwargs = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("spawn (wrapper)", 0); - if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "spawn", 1))) return NULL; - if (unlikely(__pyx_kwds)) { - __pyx_v_kwargs = PyDict_Copy(__pyx_kwds); if (unlikely(!__pyx_v_kwargs)) return NULL; - __Pyx_GOTREF(__pyx_v_kwargs); - } else { - __pyx_v_kwargs = NULL; - } - __Pyx_INCREF(__pyx_args); - __pyx_v_args = __pyx_args; - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_24spawn(((PyTypeObject*)__pyx_v_cls), __pyx_v_args, __pyx_v_kwargs); - - /* function exit code */ - __Pyx_XDECREF(__pyx_v_args); - __Pyx_XDECREF(__pyx_v_kwargs); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_24spawn(PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) { - PyObject *__pyx_v_g = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("spawn", 0); - - /* "src/gevent/greenlet.py":538 - * instead of spawning a greenlet that will raise an uncaught TypeError. - * """ - * g = cls(*args, **kwargs) # <<<<<<<<<<<<<< - * g.start() - * return g - */ - __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_v_cls), __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 538, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_g = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":539 - * """ - * g = cls(*args, **kwargs) - * g.start() # <<<<<<<<<<<<<< - * return g - * - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_g, __pyx_n_s_start); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 539, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 539, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 539, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":540 - * g = cls(*args, **kwargs) - * g.start() - * return g # <<<<<<<<<<<<<< - * - * @classmethod - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_g); - __pyx_r = __pyx_v_g; - goto __pyx_L0; - - /* "src/gevent/greenlet.py":525 - * - * @classmethod - * def spawn(cls, *args, **kwargs): # <<<<<<<<<<<<<< - * """ - * spawn(function, *args, **kwargs) -> Greenlet - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent._greenlet.Greenlet.spawn", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_g); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":543 - * - * @classmethod - * def spawn_later(cls, seconds, *args, **kwargs): # <<<<<<<<<<<<<< - * """ - * spawn_later(seconds, function, *args, **kwargs) -> Greenlet - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_27spawn_later(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_9_greenlet_8Greenlet_26spawn_later[] = "Greenlet.spawn_later(type cls, seconds, *args, **kwargs)\n\n spawn_later(seconds, function, *args, **kwargs) -> Greenlet\n\n Create and return a new `Greenlet` object scheduled to run ``function(*args, **kwargs)``\n in a future loop iteration *seconds* later. This can be used as ``Greenlet.spawn_later``\n or ``gevent.spawn_later``.\n\n The arguments are passed to :meth:`Greenlet.__init__`.\n\n .. versionchanged:: 1.1b1\n If an argument that's meant to be a function (the first argument in *args*, or the ``run`` keyword )\n is given to this classmethod (and not a classmethod of a subclass),\n it is verified to be callable. Previously, the spawned greenlet would have failed\n when it started running.\n "; -static PyMethodDef __pyx_mdef_6gevent_9_greenlet_8Greenlet_27spawn_later = {"spawn_later", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_27spawn_later, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_9_greenlet_8Greenlet_26spawn_later}; -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_27spawn_later(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_seconds = 0; - PyObject *__pyx_v_args = 0; - PyObject *__pyx_v_kwargs = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("spawn_later (wrapper)", 0); - __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return NULL; - __Pyx_GOTREF(__pyx_v_kwargs); - if (PyTuple_GET_SIZE(__pyx_args) > 1) { - __pyx_v_args = PyTuple_GetSlice(__pyx_args, 1, PyTuple_GET_SIZE(__pyx_args)); - if (unlikely(!__pyx_v_args)) { - __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0; - __Pyx_RefNannyFinishContext(); - return NULL; - } - __Pyx_GOTREF(__pyx_v_args); - } else { - __pyx_v_args = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple); - } - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_seconds,0}; - PyObject* values[1] = {0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - default: - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_seconds)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t used_pos_args = (pos_args < 1) ? pos_args : 1; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, used_pos_args, "spawn_later") < 0)) __PYX_ERR(0, 543, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) < 1) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - } - __pyx_v_seconds = values[0]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("spawn_later", 0, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 543, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0; - __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0; - __Pyx_AddTraceback("gevent._greenlet.Greenlet.spawn_later", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_26spawn_later(((PyTypeObject*)__pyx_v_cls), __pyx_v_seconds, __pyx_v_args, __pyx_v_kwargs); - - /* function exit code */ - __Pyx_XDECREF(__pyx_v_args); - __Pyx_XDECREF(__pyx_v_kwargs); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_26spawn_later(PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_seconds, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) { - PyObject *__pyx_v_g = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - __Pyx_RefNannySetupContext("spawn_later", 0); - - /* "src/gevent/greenlet.py":559 - * when it started running. - * """ - * if cls is Greenlet and not args and 'run' not in kwargs: # <<<<<<<<<<<<<< - * raise TypeError("") - * g = cls(*args, **kwargs) - */ - __pyx_t_2 = (__pyx_v_cls == __pyx_ptype_6gevent_9_greenlet_Greenlet); - __pyx_t_3 = (__pyx_t_2 != 0); - if (__pyx_t_3) { - } else { - __pyx_t_1 = __pyx_t_3; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_3 = (PyTuple_GET_SIZE(__pyx_v_args) != 0); - __pyx_t_2 = ((!__pyx_t_3) != 0); - if (__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_2 = (__Pyx_PyDict_ContainsTF(__pyx_n_s_run, __pyx_v_kwargs, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 559, __pyx_L1_error) - __pyx_t_3 = (__pyx_t_2 != 0); - __pyx_t_1 = __pyx_t_3; - __pyx_L4_bool_binop_done:; - if (unlikely(__pyx_t_1)) { - - /* "src/gevent/greenlet.py":560 - * """ - * if cls is Greenlet and not args and 'run' not in kwargs: - * raise TypeError("") # <<<<<<<<<<<<<< - * g = cls(*args, **kwargs) - * g.start_later(seconds) - */ - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 560, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_Raise(__pyx_t_4, 0, 0, 0); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __PYX_ERR(0, 560, __pyx_L1_error) - - /* "src/gevent/greenlet.py":559 - * when it started running. - * """ - * if cls is Greenlet and not args and 'run' not in kwargs: # <<<<<<<<<<<<<< - * raise TypeError("") - * g = cls(*args, **kwargs) - */ - } - - /* "src/gevent/greenlet.py":561 - * if cls is Greenlet and not args and 'run' not in kwargs: - * raise TypeError("") - * g = cls(*args, **kwargs) # <<<<<<<<<<<<<< - * g.start_later(seconds) - * return g - */ - __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_v_cls), __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 561, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_v_g = __pyx_t_4; - __pyx_t_4 = 0; - - /* "src/gevent/greenlet.py":562 - * raise TypeError("") - * g = cls(*args, **kwargs) - * g.start_later(seconds) # <<<<<<<<<<<<<< - * return g - * - */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_g, __pyx_n_s_start_later); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 562, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - } - } - if (!__pyx_t_6) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_seconds); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 562, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v_seconds}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 562, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_4); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v_seconds}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 562, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_4); - } else - #endif - { - __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 562, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL; - __Pyx_INCREF(__pyx_v_seconds); - __Pyx_GIVEREF(__pyx_v_seconds); - PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_seconds); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 562, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - } - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "src/gevent/greenlet.py":563 - * g = cls(*args, **kwargs) - * g.start_later(seconds) - * return g # <<<<<<<<<<<<<< - * - * def kill(self, exception=GreenletExit, block=True, timeout=None): - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_g); - __pyx_r = __pyx_v_g; - goto __pyx_L0; - - /* "src/gevent/greenlet.py":543 - * - * @classmethod - * def spawn_later(cls, seconds, *args, **kwargs): # <<<<<<<<<<<<<< - * """ - * spawn_later(seconds, function, *args, **kwargs) -> Greenlet - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("gevent._greenlet.Greenlet.spawn_later", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_g); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":565 - * return g - * - * def kill(self, exception=GreenletExit, block=True, timeout=None): # <<<<<<<<<<<<<< - * """ - * Raise the ``exception`` in the greenlet. - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_29kill(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_9_greenlet_8Greenlet_28kill[] = "Greenlet.kill(self, exception=GreenletExit, block=True, timeout=None)\n\n Raise the ``exception`` in the greenlet.\n\n If ``block`` is ``True`` (the default), wait until the greenlet dies or the optional timeout expires.\n If block is ``False``, the current greenlet is not unscheduled.\n\n The function always returns ``None`` and never raises an error.\n\n .. note::\n\n Depending on what this greenlet is executing and the state\n of the event loop, the exception may or may not be raised\n immediately when this greenlet resumes execution. It may\n be raised on a subsequent green call, or, if this greenlet\n exits before making such a call, it may not be raised at\n all. As of 1.1, an example where the exception is raised\n later is if this greenlet had called :func:`sleep(0)\n <gevent.sleep>`; an example where the exception is raised\n immediately is if this greenlet had called\n :func:`sleep(0.1) <gevent.sleep>`.\n\n .. caution::\n\n Use care when killing greenlets. If the code executing is not\n exception safe (e.g., makes proper use of ``finally``) then an\n unexpected exception could result in corrupted state.\n\n See also :func:`gevent.kill`.\n\n :keyword type exception: The type of exception to raise in the greenlet. The default\n is :class:`GreenletExit`, which indicates a :meth:`successful` completion\n of the greenlet.\n\n .. versionchanged:: 0.13.0\n *block* is now ``True`` by default.\n .. versionchanged:: 1.1a2\n If this greenlet had never been switched to, killing it will prevent it from ever being switched to.\n "; -static PyMethodDef __pyx_mdef_6gevent_9_greenlet_8Greenlet_29kill = {"kill", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_29kill, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_9_greenlet_8Greenlet_28kill}; -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_29kill(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_exception = 0; - PyObject *__pyx_v_block = 0; - PyObject *__pyx_v_timeout = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("kill (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_exception,&__pyx_n_s_block,&__pyx_n_s_timeout,0}; - PyObject* values[3] = {0,0,0}; - values[0] = __pyx_k__9; - values[1] = ((PyObject *)Py_True); - values[2] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_exception); - if (value) { values[0] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_block); - if (value) { values[1] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeout); - if (value) { values[2] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "kill") < 0)) __PYX_ERR(0, 565, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_exception = values[0]; - __pyx_v_block = values[1]; - __pyx_v_timeout = values[2]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("kill", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 565, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._greenlet.Greenlet.kill", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_28kill(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self), __pyx_v_exception, __pyx_v_block, __pyx_v_timeout); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_28kill(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, PyObject *__pyx_v_exception, PyObject *__pyx_v_block, PyObject *__pyx_v_timeout) { - PyObject *__pyx_v_waiter = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - PyObject *__pyx_t_7 = NULL; - struct __pyx_opt_args_6gevent_9_greenlet_8Greenlet_join __pyx_t_8; - __Pyx_RefNannySetupContext("kill", 0); - - /* "src/gevent/greenlet.py":604 - * If this greenlet had never been switched to, killing it will prevent it from ever being switched to. - * """ - * self.__cancel_start() # <<<<<<<<<<<<<< - * - * if self.dead: - */ - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet *)__pyx_v_self->__pyx_vtab)->__pyx___cancel_start(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 604, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":606 - * self.__cancel_start() - * - * if self.dead: # <<<<<<<<<<<<<< - * self.__handle_death_before_start((exception,)) - * else: - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dead); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 606, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 606, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (__pyx_t_2) { - - /* "src/gevent/greenlet.py":607 - * - * if self.dead: - * self.__handle_death_before_start((exception,)) # <<<<<<<<<<<<<< - * else: - * waiter = Waiter() if block else None # pylint:disable=undefined-variable - */ - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 607, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_v_exception); - __Pyx_GIVEREF(__pyx_v_exception); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_exception); - __pyx_t_3 = ((struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet *)__pyx_v_self->__pyx_vtab)->__pyx___handle_death_before_start(__pyx_v_self, ((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 607, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "src/gevent/greenlet.py":606 - * self.__cancel_start() - * - * if self.dead: # <<<<<<<<<<<<<< - * self.__handle_death_before_start((exception,)) - * else: - */ - goto __pyx_L3; - } - - /* "src/gevent/greenlet.py":609 - * self.__handle_death_before_start((exception,)) - * else: - * waiter = Waiter() if block else None # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * self.parent.loop.run_callback(_kill, self, exception, waiter) - * if block: - */ - /*else*/ { - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_block); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 609, __pyx_L1_error) - if (__pyx_t_2) { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_6gevent_8__waiter_Waiter)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 609, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; - __pyx_t_1 = 0; - } else { - __Pyx_INCREF(Py_None); - __pyx_t_3 = Py_None; - } - __pyx_v_waiter = __pyx_t_3; - __pyx_t_3 = 0; - - /* "src/gevent/greenlet.py":610 - * else: - * waiter = Waiter() if block else None # pylint:disable=undefined-variable - * self.parent.loop.run_callback(_kill, self, exception, waiter) # <<<<<<<<<<<<<< - * if block: - * waiter.get() - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parent); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 610, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_loop); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 610, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_run_callback); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 610, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_kill); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 610, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - __pyx_t_6 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_6 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_1)) { - PyObject *__pyx_temp[5] = {__pyx_t_5, __pyx_t_4, ((PyObject *)__pyx_v_self), __pyx_v_exception, __pyx_v_waiter}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 610, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { - PyObject *__pyx_temp[5] = {__pyx_t_5, __pyx_t_4, ((PyObject *)__pyx_v_self), __pyx_v_exception, __pyx_v_waiter}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 610, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else - #endif - { - __pyx_t_7 = PyTuple_New(4+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 610, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (__pyx_t_5) { - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; - } - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_4); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, ((PyObject *)__pyx_v_self)); - __Pyx_INCREF(__pyx_v_exception); - __Pyx_GIVEREF(__pyx_v_exception); - PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_v_exception); - __Pyx_INCREF(__pyx_v_waiter); - __Pyx_GIVEREF(__pyx_v_waiter); - PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_6, __pyx_v_waiter); - __pyx_t_4 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 610, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "src/gevent/greenlet.py":611 - * waiter = Waiter() if block else None # pylint:disable=undefined-variable - * self.parent.loop.run_callback(_kill, self, exception, waiter) - * if block: # <<<<<<<<<<<<<< - * waiter.get() - * self.join(timeout) - */ - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_block); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 611, __pyx_L1_error) - if (__pyx_t_2) { - - /* "src/gevent/greenlet.py":612 - * self.parent.loop.run_callback(_kill, self, exception, waiter) - * if block: - * waiter.get() # <<<<<<<<<<<<<< - * self.join(timeout) - * # it should be OK to use kill() in finally or kill a greenlet from more than one place; - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_waiter, __pyx_n_s_get_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 612, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_7); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - } - } - if (__pyx_t_7) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 612, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 612, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "src/gevent/greenlet.py":613 - * if block: - * waiter.get() - * self.join(timeout) # <<<<<<<<<<<<<< - * # it should be OK to use kill() in finally or kill a greenlet from more than one place; - * # thus it should not raise when the greenlet is already killed (= not started) - */ - __pyx_t_8.__pyx_n = 1; - __pyx_t_8.timeout = __pyx_v_timeout; - __pyx_t_3 = ((struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet *)__pyx_v_self->__pyx_vtab)->join(__pyx_v_self, 0, &__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 613, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "src/gevent/greenlet.py":611 - * waiter = Waiter() if block else None # pylint:disable=undefined-variable - * self.parent.loop.run_callback(_kill, self, exception, waiter) - * if block: # <<<<<<<<<<<<<< - * waiter.get() - * self.join(timeout) - */ - } - } - __pyx_L3:; - - /* "src/gevent/greenlet.py":565 - * return g - * - * def kill(self, exception=GreenletExit, block=True, timeout=None): # <<<<<<<<<<<<<< - * """ - * Raise the ``exception`` in the greenlet. - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("gevent._greenlet.Greenlet.kill", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_waiter); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":617 - * # thus it should not raise when the greenlet is already killed (= not started) - * - * def get(self, block=True, timeout=None): # <<<<<<<<<<<<<< - * """ - * get(block=True, timeout=None) -> object - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_31get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_9_greenlet_8Greenlet_30get[] = "Greenlet.get(self, block=True, timeout=None)\n\n get(block=True, timeout=None) -> object\n\n Return the result the greenlet has returned or re-raise the\n exception it has raised.\n\n If block is ``False``, raise :class:`gevent.Timeout` if the\n greenlet is still alive. If block is ``True``, unschedule the\n current greenlet until the result is available or the timeout\n expires. In the latter case, :class:`gevent.Timeout` is\n raised.\n "; -static PyMethodDef __pyx_mdef_6gevent_9_greenlet_8Greenlet_31get = {"get", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_31get, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_9_greenlet_8Greenlet_30get}; -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_31get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_block = 0; - PyObject *__pyx_v_timeout = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("get (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_block,&__pyx_n_s_timeout,0}; - PyObject* values[2] = {0,0}; - values[0] = ((PyObject *)Py_True); - values[1] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_block); - if (value) { values[0] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeout); - if (value) { values[1] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get") < 0)) __PYX_ERR(0, 617, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_block = values[0]; - __pyx_v_timeout = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 617, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._greenlet.Greenlet.get", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_30get(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self), __pyx_v_block, __pyx_v_timeout); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_30get(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, PyObject *__pyx_v_block, PyObject *__pyx_v_timeout) { - PyObject *__pyx_v_switch = NULL; - PyObject *__pyx_v_t = NULL; - PyObject *__pyx_v_result = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - int __pyx_t_11; - int __pyx_t_12; - char const *__pyx_t_13; - PyObject *__pyx_t_14 = NULL; - PyObject *__pyx_t_15 = NULL; - PyObject *__pyx_t_16 = NULL; - PyObject *__pyx_t_17 = NULL; - PyObject *__pyx_t_18 = NULL; - PyObject *__pyx_t_19 = NULL; - PyObject *__pyx_t_20 = NULL; - PyObject *__pyx_t_21 = NULL; - __Pyx_RefNannySetupContext("get", 0); - - /* "src/gevent/greenlet.py":630 - * raised. - * """ - * if self.ready(): # <<<<<<<<<<<<<< - * if self.successful(): - * return self.value - */ - __pyx_t_1 = (((struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet *)__pyx_v_self->__pyx_vtab)->ready(__pyx_v_self, 0) != 0); - if (__pyx_t_1) { - - /* "src/gevent/greenlet.py":631 - * """ - * if self.ready(): - * if self.successful(): # <<<<<<<<<<<<<< - * return self.value - * self._raise_exception() - */ - __pyx_t_1 = (((struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet *)__pyx_v_self->__pyx_vtab)->successful(__pyx_v_self, 0) != 0); - if (__pyx_t_1) { - - /* "src/gevent/greenlet.py":632 - * if self.ready(): - * if self.successful(): - * return self.value # <<<<<<<<<<<<<< - * self._raise_exception() - * if not block: - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->value); - __pyx_r = __pyx_v_self->value; - goto __pyx_L0; - - /* "src/gevent/greenlet.py":631 - * """ - * if self.ready(): - * if self.successful(): # <<<<<<<<<<<<<< - * return self.value - * self._raise_exception() - */ - } - - /* "src/gevent/greenlet.py":633 - * if self.successful(): - * return self.value - * self._raise_exception() # <<<<<<<<<<<<<< - * if not block: - * raise Timeout() - */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_raise_exception); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 633, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 633, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 633, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/greenlet.py":630 - * raised. - * """ - * if self.ready(): # <<<<<<<<<<<<<< - * if self.successful(): - * return self.value - */ - } - - /* "src/gevent/greenlet.py":634 - * return self.value - * self._raise_exception() - * if not block: # <<<<<<<<<<<<<< - * raise Timeout() - * - */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_block); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 634, __pyx_L1_error) - __pyx_t_5 = ((!__pyx_t_1) != 0); - if (unlikely(__pyx_t_5)) { - - /* "src/gevent/greenlet.py":635 - * self._raise_exception() - * if not block: - * raise Timeout() # <<<<<<<<<<<<<< - * - * switch = getcurrent().switch # pylint:disable=undefined-variable - */ - __Pyx_INCREF(__pyx_v_6gevent_9_greenlet_Timeout); - __pyx_t_3 = __pyx_v_6gevent_9_greenlet_Timeout; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 635, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 635, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 635, __pyx_L1_error) - - /* "src/gevent/greenlet.py":634 - * return self.value - * self._raise_exception() - * if not block: # <<<<<<<<<<<<<< - * raise Timeout() - * - */ - } - - /* "src/gevent/greenlet.py":637 - * raise Timeout() - * - * switch = getcurrent().switch # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * self.rawlink(switch) - * try: - */ - __pyx_t_2 = ((PyObject *)__pyx_f_6gevent_9_greenlet_getcurrent()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 637, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_switch); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 637, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_switch = __pyx_t_3; - __pyx_t_3 = 0; - - /* "src/gevent/greenlet.py":638 - * - * switch = getcurrent().switch # pylint:disable=undefined-variable - * self.rawlink(switch) # <<<<<<<<<<<<<< - * try: - * t = Timeout._start_new_or_dummy(timeout) - */ - __pyx_t_3 = ((struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet *)__pyx_v_self->__pyx_vtab)->rawlink(__pyx_v_self, __pyx_v_switch, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 638, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "src/gevent/greenlet.py":639 - * switch = getcurrent().switch # pylint:disable=undefined-variable - * self.rawlink(switch) - * try: # <<<<<<<<<<<<<< - * t = Timeout._start_new_or_dummy(timeout) - * try: - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8); - __Pyx_XGOTREF(__pyx_t_6); - __Pyx_XGOTREF(__pyx_t_7); - __Pyx_XGOTREF(__pyx_t_8); - /*try:*/ { - - /* "src/gevent/greenlet.py":640 - * self.rawlink(switch) - * try: - * t = Timeout._start_new_or_dummy(timeout) # <<<<<<<<<<<<<< - * try: - * result = self.parent.switch() - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_6gevent_9_greenlet_Timeout, __pyx_n_s_start_new_or_dummy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 640, __pyx_L6_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_4) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_timeout); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 640, __pyx_L6_error) - __Pyx_GOTREF(__pyx_t_3); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_timeout}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 640, __pyx_L6_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_3); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_timeout}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 640, __pyx_L6_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_3); - } else - #endif - { - __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 640, __pyx_L6_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_INCREF(__pyx_v_timeout); - __Pyx_GIVEREF(__pyx_v_timeout); - PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_timeout); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 640, __pyx_L6_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - } - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_t = __pyx_t_3; - __pyx_t_3 = 0; - - /* "src/gevent/greenlet.py":641 - * try: - * t = Timeout._start_new_or_dummy(timeout) - * try: # <<<<<<<<<<<<<< - * result = self.parent.switch() - * if result is not self: - */ - /*try:*/ { - - /* "src/gevent/greenlet.py":642 - * t = Timeout._start_new_or_dummy(timeout) - * try: - * result = self.parent.switch() # <<<<<<<<<<<<<< - * if result is not self: - * raise InvalidSwitchError('Invalid switch into Greenlet.get(): %r' % (result, )) - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parent); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 642, __pyx_L13_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_switch); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 642, __pyx_L13_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { - __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_9); - if (likely(__pyx_t_2)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); - __Pyx_INCREF(__pyx_t_2); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_9, function); - } - } - if (__pyx_t_2) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 642, __pyx_L13_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 642, __pyx_L13_error) - } - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_v_result = __pyx_t_3; - __pyx_t_3 = 0; - - /* "src/gevent/greenlet.py":643 - * try: - * result = self.parent.switch() - * if result is not self: # <<<<<<<<<<<<<< - * raise InvalidSwitchError('Invalid switch into Greenlet.get(): %r' % (result, )) - * finally: - */ - __pyx_t_5 = (__pyx_v_result != ((PyObject *)__pyx_v_self)); - __pyx_t_1 = (__pyx_t_5 != 0); - if (unlikely(__pyx_t_1)) { - - /* "src/gevent/greenlet.py":644 - * result = self.parent.switch() - * if result is not self: - * raise InvalidSwitchError('Invalid switch into Greenlet.get(): %r' % (result, )) # <<<<<<<<<<<<<< - * finally: - * t.cancel() - */ - __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 644, __pyx_L13_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_INCREF(__pyx_v_result); - __Pyx_GIVEREF(__pyx_v_result); - PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_result); - __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_switch_into_Greenlet_get, __pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 644, __pyx_L13_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_INCREF(__pyx_v_6gevent_9_greenlet_InvalidSwitchError); - __pyx_t_9 = __pyx_v_6gevent_9_greenlet_InvalidSwitchError; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_9); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_9, function); - } - } - if (!__pyx_t_4) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 644, __pyx_L13_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GOTREF(__pyx_t_3); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_9)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 644, __pyx_L13_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 644, __pyx_L13_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else - #endif - { - __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 644, __pyx_L13_error) - __Pyx_GOTREF(__pyx_t_10); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 644, __pyx_L13_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - } - } - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 644, __pyx_L13_error) - - /* "src/gevent/greenlet.py":643 - * try: - * result = self.parent.switch() - * if result is not self: # <<<<<<<<<<<<<< - * raise InvalidSwitchError('Invalid switch into Greenlet.get(): %r' % (result, )) - * finally: - */ - } - } - - /* "src/gevent/greenlet.py":646 - * raise InvalidSwitchError('Invalid switch into Greenlet.get(): %r' % (result, )) - * finally: - * t.cancel() # <<<<<<<<<<<<<< - * except: - * # unlinking in 'except' instead of finally is an optimization: - */ - /*finally:*/ { - /*normal exit:*/{ - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_t, __pyx_n_s_cancel); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 646, __pyx_L6_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_10 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { - __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9); - if (likely(__pyx_t_10)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); - __Pyx_INCREF(__pyx_t_10); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_9, function); - } - } - if (__pyx_t_10) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 646, __pyx_L6_error) - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 646, __pyx_L6_error) - } - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L14; - } - __pyx_L13_error:; - /*exception exit:*/{ - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19); - if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16); - __Pyx_XGOTREF(__pyx_t_14); - __Pyx_XGOTREF(__pyx_t_15); - __Pyx_XGOTREF(__pyx_t_16); - __Pyx_XGOTREF(__pyx_t_17); - __Pyx_XGOTREF(__pyx_t_18); - __Pyx_XGOTREF(__pyx_t_19); - __pyx_t_11 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename; - { - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_t, __pyx_n_s_cancel); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 646, __pyx_L17_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_10 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { - __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9); - if (likely(__pyx_t_10)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); - __Pyx_INCREF(__pyx_t_10); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_9, function); - } - } - if (__pyx_t_10) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 646, __pyx_L17_error) - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 646, __pyx_L17_error) - } - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_17); - __Pyx_XGIVEREF(__pyx_t_18); - __Pyx_XGIVEREF(__pyx_t_19); - __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19); - } - __Pyx_XGIVEREF(__pyx_t_14); - __Pyx_XGIVEREF(__pyx_t_15); - __Pyx_XGIVEREF(__pyx_t_16); - __Pyx_ErrRestore(__pyx_t_14, __pyx_t_15, __pyx_t_16); - __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; - __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_13; - goto __pyx_L6_error; - __pyx_L17_error:; - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_17); - __Pyx_XGIVEREF(__pyx_t_18); - __Pyx_XGIVEREF(__pyx_t_19); - __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19); - } - __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; - __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; - __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; - __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; - goto __pyx_L6_error; - } - __pyx_L14:; - } - - /* "src/gevent/greenlet.py":639 - * switch = getcurrent().switch # pylint:disable=undefined-variable - * self.rawlink(switch) - * try: # <<<<<<<<<<<<<< - * t = Timeout._start_new_or_dummy(timeout) - * try: - */ - } - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - goto __pyx_L11_try_end; - __pyx_L6_error:; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "src/gevent/greenlet.py":647 - * finally: - * t.cancel() - * except: # <<<<<<<<<<<<<< - * # unlinking in 'except' instead of finally is an optimization: - * # if switch occurred normally then link was already removed in _notify_links - */ - /*except:*/ { - __Pyx_AddTraceback("gevent._greenlet.Greenlet.get", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_9, &__pyx_t_10) < 0) __PYX_ERR(0, 647, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GOTREF(__pyx_t_9); - __Pyx_GOTREF(__pyx_t_10); - - /* "src/gevent/greenlet.py":653 - * # Note, however, that if "Invalid switch" assert was removed and invalid switch - * # did happen, the link would remain, causing another invalid switch later in this greenlet. - * self.unlink(switch) # <<<<<<<<<<<<<< - * raise - * - */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_unlink); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 653, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_20 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_20 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_20)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_20); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (!__pyx_t_20) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_switch); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 653, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_2); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[2] = {__pyx_t_20, __pyx_v_switch}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 653, __pyx_L8_except_error) - __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[2] = {__pyx_t_20, __pyx_v_switch}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 653, __pyx_L8_except_error) - __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_21 = PyTuple_New(1+1); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 653, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_21); - __Pyx_GIVEREF(__pyx_t_20); PyTuple_SET_ITEM(__pyx_t_21, 0, __pyx_t_20); __pyx_t_20 = NULL; - __Pyx_INCREF(__pyx_v_switch); - __Pyx_GIVEREF(__pyx_v_switch); - PyTuple_SET_ITEM(__pyx_t_21, 0+1, __pyx_v_switch); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_21, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 653, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0; - } - } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/greenlet.py":654 - * # did happen, the link would remain, causing another invalid switch later in this greenlet. - * self.unlink(switch) - * raise # <<<<<<<<<<<<<< - * - * if self.ready(): - */ - __Pyx_GIVEREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_9); - __Pyx_XGIVEREF(__pyx_t_10); - __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_9, __pyx_t_10); - __pyx_t_3 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; - __PYX_ERR(0, 654, __pyx_L8_except_error) - } - __pyx_L8_except_error:; - - /* "src/gevent/greenlet.py":639 - * switch = getcurrent().switch # pylint:disable=undefined-variable - * self.rawlink(switch) - * try: # <<<<<<<<<<<<<< - * t = Timeout._start_new_or_dummy(timeout) - * try: - */ - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); - goto __pyx_L1_error; - __pyx_L11_try_end:; - } - - /* "src/gevent/greenlet.py":656 - * raise - * - * if self.ready(): # <<<<<<<<<<<<<< - * if self.successful(): - * return self.value - */ - __pyx_t_1 = (((struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet *)__pyx_v_self->__pyx_vtab)->ready(__pyx_v_self, 0) != 0); - if (__pyx_t_1) { - - /* "src/gevent/greenlet.py":657 - * - * if self.ready(): - * if self.successful(): # <<<<<<<<<<<<<< - * return self.value - * self._raise_exception() - */ - __pyx_t_1 = (((struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet *)__pyx_v_self->__pyx_vtab)->successful(__pyx_v_self, 0) != 0); - if (__pyx_t_1) { - - /* "src/gevent/greenlet.py":658 - * if self.ready(): - * if self.successful(): - * return self.value # <<<<<<<<<<<<<< - * self._raise_exception() - * - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->value); - __pyx_r = __pyx_v_self->value; - goto __pyx_L0; - - /* "src/gevent/greenlet.py":657 - * - * if self.ready(): - * if self.successful(): # <<<<<<<<<<<<<< - * return self.value - * self._raise_exception() - */ - } - - /* "src/gevent/greenlet.py":659 - * if self.successful(): - * return self.value - * self._raise_exception() # <<<<<<<<<<<<<< - * - * def join(self, timeout=None): - */ - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_raise_exception); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 659, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_9); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_9, function); - } - } - if (__pyx_t_3) { - __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 659, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_10 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 659, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_10); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - - /* "src/gevent/greenlet.py":656 - * raise - * - * if self.ready(): # <<<<<<<<<<<<<< - * if self.successful(): - * return self.value - */ - } - - /* "src/gevent/greenlet.py":617 - * # thus it should not raise when the greenlet is already killed (= not started) - * - * def get(self, block=True, timeout=None): # <<<<<<<<<<<<<< - * """ - * get(block=True, timeout=None) -> object - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_9); - __Pyx_XDECREF(__pyx_t_10); - __Pyx_XDECREF(__pyx_t_20); - __Pyx_XDECREF(__pyx_t_21); - __Pyx_AddTraceback("gevent._greenlet.Greenlet.get", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_switch); - __Pyx_XDECREF(__pyx_v_t); - __Pyx_XDECREF(__pyx_v_result); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":661 - * self._raise_exception() - * - * def join(self, timeout=None): # <<<<<<<<<<<<<< - * """ - * join(timeout=None) -> None - */ - -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_33join(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_f_6gevent_9_greenlet_8Greenlet_join(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_9_greenlet_8Greenlet_join *__pyx_optional_args) { - PyObject *__pyx_v_timeout = ((PyObject *)Py_None); - PyObject *__pyx_v_switch = NULL; - PyObject *__pyx_v_t = NULL; - PyObject *__pyx_v_result = NULL; - PyObject *__pyx_v_ex = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - int __pyx_t_10; - int __pyx_t_11; - int __pyx_t_12; - char const *__pyx_t_13; - PyObject *__pyx_t_14 = NULL; - PyObject *__pyx_t_15 = NULL; - PyObject *__pyx_t_16 = NULL; - PyObject *__pyx_t_17 = NULL; - PyObject *__pyx_t_18 = NULL; - PyObject *__pyx_t_19 = NULL; - PyObject *__pyx_t_20 = NULL; - PyObject *__pyx_t_21 = NULL; - __Pyx_RefNannySetupContext("join", 0); - if (__pyx_optional_args) { - if (__pyx_optional_args->__pyx_n > 0) { - __pyx_v_timeout = __pyx_optional_args->timeout; - } - } - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_join); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 661, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_33join)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (!__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_timeout); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 661, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_timeout}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 661, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_timeout}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 661, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 661, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_INCREF(__pyx_v_timeout); - __Pyx_GIVEREF(__pyx_v_timeout); - PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_timeout); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 661, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/greenlet.py":668 - * ``None`` regardless. - * """ - * if self.ready(): # <<<<<<<<<<<<<< - * return - * - */ - __pyx_t_6 = (((struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet *)__pyx_v_self->__pyx_vtab)->ready(__pyx_v_self, 0) != 0); - if (__pyx_t_6) { - - /* "src/gevent/greenlet.py":669 - * """ - * if self.ready(): - * return # <<<<<<<<<<<<<< - * - * switch = getcurrent().switch # pylint:disable=undefined-variable - */ - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - /* "src/gevent/greenlet.py":668 - * ``None`` regardless. - * """ - * if self.ready(): # <<<<<<<<<<<<<< - * return - * - */ - } - - /* "src/gevent/greenlet.py":671 - * return - * - * switch = getcurrent().switch # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * self.rawlink(switch) - * try: - */ - __pyx_t_1 = ((PyObject *)__pyx_f_6gevent_9_greenlet_getcurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 671, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_switch); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 671, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_switch = __pyx_t_2; - __pyx_t_2 = 0; - - /* "src/gevent/greenlet.py":672 - * - * switch = getcurrent().switch # pylint:disable=undefined-variable - * self.rawlink(switch) # <<<<<<<<<<<<<< - * try: - * t = Timeout._start_new_or_dummy(timeout) - */ - __pyx_t_2 = ((struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet *)__pyx_v_self->__pyx_vtab)->rawlink(__pyx_v_self, __pyx_v_switch, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 672, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/greenlet.py":673 - * switch = getcurrent().switch # pylint:disable=undefined-variable - * self.rawlink(switch) - * try: # <<<<<<<<<<<<<< - * t = Timeout._start_new_or_dummy(timeout) - * try: - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9); - __Pyx_XGOTREF(__pyx_t_7); - __Pyx_XGOTREF(__pyx_t_8); - __Pyx_XGOTREF(__pyx_t_9); - /*try:*/ { - - /* "src/gevent/greenlet.py":674 - * self.rawlink(switch) - * try: - * t = Timeout._start_new_or_dummy(timeout) # <<<<<<<<<<<<<< - * try: - * result = self.parent.switch() - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_6gevent_9_greenlet_Timeout, __pyx_n_s_start_new_or_dummy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 674, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - } - } - if (!__pyx_t_3) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_timeout); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 674, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_2); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_1)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_timeout}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 674, __pyx_L4_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_timeout}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 674, __pyx_L4_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 674, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(__pyx_v_timeout); - __Pyx_GIVEREF(__pyx_v_timeout); - PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_timeout); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 674, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_t = __pyx_t_2; - __pyx_t_2 = 0; - - /* "src/gevent/greenlet.py":675 - * try: - * t = Timeout._start_new_or_dummy(timeout) - * try: # <<<<<<<<<<<<<< - * result = self.parent.switch() - * if result is not self: - */ - /*try:*/ { - - /* "src/gevent/greenlet.py":676 - * t = Timeout._start_new_or_dummy(timeout) - * try: - * result = self.parent.switch() # <<<<<<<<<<<<<< - * if result is not self: - * raise InvalidSwitchError('Invalid switch into Greenlet.join(): %r' % (result, )) - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parent); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 676, __pyx_L11_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_switch); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 676, __pyx_L11_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_1)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_1); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - } - } - if (__pyx_t_1) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 676, __pyx_L11_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 676, __pyx_L11_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_v_result = __pyx_t_2; - __pyx_t_2 = 0; - - /* "src/gevent/greenlet.py":677 - * try: - * result = self.parent.switch() - * if result is not self: # <<<<<<<<<<<<<< - * raise InvalidSwitchError('Invalid switch into Greenlet.join(): %r' % (result, )) - * finally: - */ - __pyx_t_6 = (__pyx_v_result != ((PyObject *)__pyx_v_self)); - __pyx_t_10 = (__pyx_t_6 != 0); - if (unlikely(__pyx_t_10)) { - - /* "src/gevent/greenlet.py":678 - * result = self.parent.switch() - * if result is not self: - * raise InvalidSwitchError('Invalid switch into Greenlet.join(): %r' % (result, )) # <<<<<<<<<<<<<< - * finally: - * t.cancel() - */ - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 678, __pyx_L11_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_INCREF(__pyx_v_result); - __Pyx_GIVEREF(__pyx_v_result); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_result); - __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_switch_into_Greenlet_joi, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 678, __pyx_L11_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_INCREF(__pyx_v_6gevent_9_greenlet_InvalidSwitchError); - __pyx_t_5 = __pyx_v_6gevent_9_greenlet_InvalidSwitchError; __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - } - } - if (!__pyx_t_3) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 678, __pyx_L11_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_1}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 678, __pyx_L11_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_1}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 678, __pyx_L11_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else - #endif - { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 678, __pyx_L11_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_1); - __pyx_t_1 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 678, __pyx_L11_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - } - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 678, __pyx_L11_error) - - /* "src/gevent/greenlet.py":677 - * try: - * result = self.parent.switch() - * if result is not self: # <<<<<<<<<<<<<< - * raise InvalidSwitchError('Invalid switch into Greenlet.join(): %r' % (result, )) - * finally: - */ - } - } - - /* "src/gevent/greenlet.py":680 - * raise InvalidSwitchError('Invalid switch into Greenlet.join(): %r' % (result, )) - * finally: - * t.cancel() # <<<<<<<<<<<<<< - * except Timeout as ex: - * self.unlink(switch) - */ - /*finally:*/ { - /*normal exit:*/{ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_t, __pyx_n_s_cancel); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 680, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 680, __pyx_L4_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 680, __pyx_L4_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - goto __pyx_L12; - } - __pyx_L11_error:; - /*exception exit:*/{ - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19); - if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16); - __Pyx_XGOTREF(__pyx_t_14); - __Pyx_XGOTREF(__pyx_t_15); - __Pyx_XGOTREF(__pyx_t_16); - __Pyx_XGOTREF(__pyx_t_17); - __Pyx_XGOTREF(__pyx_t_18); - __Pyx_XGOTREF(__pyx_t_19); - __pyx_t_11 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename; - { - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_t, __pyx_n_s_cancel); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 680, __pyx_L15_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 680, __pyx_L15_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 680, __pyx_L15_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_17); - __Pyx_XGIVEREF(__pyx_t_18); - __Pyx_XGIVEREF(__pyx_t_19); - __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19); - } - __Pyx_XGIVEREF(__pyx_t_14); - __Pyx_XGIVEREF(__pyx_t_15); - __Pyx_XGIVEREF(__pyx_t_16); - __Pyx_ErrRestore(__pyx_t_14, __pyx_t_15, __pyx_t_16); - __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; - __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_13; - goto __pyx_L4_error; - __pyx_L15_error:; - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_17); - __Pyx_XGIVEREF(__pyx_t_18); - __Pyx_XGIVEREF(__pyx_t_19); - __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19); - } - __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; - __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; - __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; - __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; - goto __pyx_L4_error; - } - __pyx_L12:; - } - - /* "src/gevent/greenlet.py":673 - * switch = getcurrent().switch # pylint:disable=undefined-variable - * self.rawlink(switch) - * try: # <<<<<<<<<<<<<< - * t = Timeout._start_new_or_dummy(timeout) - * try: - */ - } - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - goto __pyx_L9_try_end; - __pyx_L4_error:; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/greenlet.py":681 - * finally: - * t.cancel() - * except Timeout as ex: # <<<<<<<<<<<<<< - * self.unlink(switch) - * if ex is not t: - */ - __pyx_t_12 = __Pyx_PyErr_ExceptionMatches(__pyx_v_6gevent_9_greenlet_Timeout); - if (__pyx_t_12) { - __Pyx_AddTraceback("gevent._greenlet.Greenlet.join", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_5, &__pyx_t_4) < 0) __PYX_ERR(0, 681, __pyx_L6_except_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GOTREF(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - __pyx_v_ex = __pyx_t_5; - - /* "src/gevent/greenlet.py":682 - * t.cancel() - * except Timeout as ex: - * self.unlink(switch) # <<<<<<<<<<<<<< - * if ex is not t: - * raise - */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_unlink); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 682, __pyx_L6_except_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_20 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_20 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_20)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_20); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (!__pyx_t_20) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_switch); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 682, __pyx_L6_except_error) - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_20, __pyx_v_switch}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 682, __pyx_L6_except_error) - __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_20, __pyx_v_switch}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 682, __pyx_L6_except_error) - __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_21 = PyTuple_New(1+1); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 682, __pyx_L6_except_error) - __Pyx_GOTREF(__pyx_t_21); - __Pyx_GIVEREF(__pyx_t_20); PyTuple_SET_ITEM(__pyx_t_21, 0, __pyx_t_20); __pyx_t_20 = NULL; - __Pyx_INCREF(__pyx_v_switch); - __Pyx_GIVEREF(__pyx_v_switch); - PyTuple_SET_ITEM(__pyx_t_21, 0+1, __pyx_v_switch); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_21, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 682, __pyx_L6_except_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0; - } - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":683 - * except Timeout as ex: - * self.unlink(switch) - * if ex is not t: # <<<<<<<<<<<<<< - * raise - * except: - */ - if (unlikely(!__pyx_v_t)) { __Pyx_RaiseUnboundLocalError("t"); __PYX_ERR(0, 683, __pyx_L6_except_error) } - __pyx_t_10 = (__pyx_v_ex != __pyx_v_t); - __pyx_t_6 = (__pyx_t_10 != 0); - if (unlikely(__pyx_t_6)) { - - /* "src/gevent/greenlet.py":684 - * self.unlink(switch) - * if ex is not t: - * raise # <<<<<<<<<<<<<< - * except: - * self.unlink(switch) - */ - __Pyx_GIVEREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_5); - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_5, __pyx_t_4); - __pyx_t_2 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0; - __PYX_ERR(0, 684, __pyx_L6_except_error) - - /* "src/gevent/greenlet.py":683 - * except Timeout as ex: - * self.unlink(switch) - * if ex is not t: # <<<<<<<<<<<<<< - * raise - * except: - */ - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - goto __pyx_L5_exception_handled; - } - - /* "src/gevent/greenlet.py":685 - * if ex is not t: - * raise - * except: # <<<<<<<<<<<<<< - * self.unlink(switch) - * raise - */ - /*except:*/ { - __Pyx_AddTraceback("gevent._greenlet.Greenlet.join", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_2) < 0) __PYX_ERR(0, 685, __pyx_L6_except_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GOTREF(__pyx_t_2); - - /* "src/gevent/greenlet.py":686 - * raise - * except: - * self.unlink(switch) # <<<<<<<<<<<<<< - * raise - * - */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_unlink); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 686, __pyx_L6_except_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_21 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_21 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_21)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_21); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (!__pyx_t_21) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_switch); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 686, __pyx_L6_except_error) - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_21, __pyx_v_switch}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 686, __pyx_L6_except_error) - __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_21, __pyx_v_switch}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 686, __pyx_L6_except_error) - __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_20 = PyTuple_New(1+1); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 686, __pyx_L6_except_error) - __Pyx_GOTREF(__pyx_t_20); - __Pyx_GIVEREF(__pyx_t_21); PyTuple_SET_ITEM(__pyx_t_20, 0, __pyx_t_21); __pyx_t_21 = NULL; - __Pyx_INCREF(__pyx_v_switch); - __Pyx_GIVEREF(__pyx_v_switch); - PyTuple_SET_ITEM(__pyx_t_20, 0+1, __pyx_v_switch); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_20, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 686, __pyx_L6_except_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; - } - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":687 - * except: - * self.unlink(switch) - * raise # <<<<<<<<<<<<<< - * - * def _report_result(self, result): - */ - __Pyx_GIVEREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_5); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_5, __pyx_t_2); - __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_2 = 0; - __PYX_ERR(0, 687, __pyx_L6_except_error) - } - __pyx_L6_except_error:; - - /* "src/gevent/greenlet.py":673 - * switch = getcurrent().switch # pylint:disable=undefined-variable - * self.rawlink(switch) - * try: # <<<<<<<<<<<<<< - * t = Timeout._start_new_or_dummy(timeout) - * try: - */ - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_XGIVEREF(__pyx_t_9); - __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9); - goto __pyx_L1_error; - __pyx_L5_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_XGIVEREF(__pyx_t_9); - __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9); - __pyx_L9_try_end:; - } - - /* "src/gevent/greenlet.py":661 - * self._raise_exception() - * - * def join(self, timeout=None): # <<<<<<<<<<<<<< - * """ - * join(timeout=None) -> None - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_20); - __Pyx_XDECREF(__pyx_t_21); - __Pyx_AddTraceback("gevent._greenlet.Greenlet.join", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_switch); - __Pyx_XDECREF(__pyx_v_t); - __Pyx_XDECREF(__pyx_v_result); - __Pyx_XDECREF(__pyx_v_ex); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_33join(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_9_greenlet_8Greenlet_32join[] = "Greenlet.join(self, timeout=None)\n\n join(timeout=None) -> None\n\n Wait until the greenlet finishes or *timeout* expires. Return\n ``None`` regardless.\n "; -static PyMethodDef __pyx_mdef_6gevent_9_greenlet_8Greenlet_33join = {"join", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_33join, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_9_greenlet_8Greenlet_32join}; -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_33join(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_timeout = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("join (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_timeout,0}; - PyObject* values[1] = {0}; - values[0] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeout); - if (value) { values[0] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "join") < 0)) __PYX_ERR(0, 661, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_timeout = values[0]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("join", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 661, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._greenlet.Greenlet.join", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_32join(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self), __pyx_v_timeout); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_32join(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, PyObject *__pyx_v_timeout) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - struct __pyx_opt_args_6gevent_9_greenlet_8Greenlet_join __pyx_t_2; - __Pyx_RefNannySetupContext("join", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_2.__pyx_n = 1; - __pyx_t_2.timeout = __pyx_v_timeout; - __pyx_t_1 = __pyx_vtabptr_6gevent_9_greenlet_Greenlet->join(__pyx_v_self, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 661, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._greenlet.Greenlet.join", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":689 - * raise - * - * def _report_result(self, result): # <<<<<<<<<<<<<< - * self._exc_info = (None, None, None) - * self.value = result - */ - -static PyObject *__pyx_f_6gevent_9_greenlet_8Greenlet__report_result(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, PyObject *__pyx_v_result) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - __Pyx_RefNannySetupContext("_report_result", 0); - - /* "src/gevent/greenlet.py":690 - * - * def _report_result(self, result): - * self._exc_info = (None, None, None) # <<<<<<<<<<<<<< - * self.value = result - * if self._links and not self._notifier: - */ - __Pyx_INCREF(__pyx_tuple__10); - __Pyx_GIVEREF(__pyx_tuple__10); - __Pyx_GOTREF(__pyx_v_self->_exc_info); - __Pyx_DECREF(__pyx_v_self->_exc_info); - __pyx_v_self->_exc_info = __pyx_tuple__10; - - /* "src/gevent/greenlet.py":691 - * def _report_result(self, result): - * self._exc_info = (None, None, None) - * self.value = result # <<<<<<<<<<<<<< - * if self._links and not self._notifier: - * self._notifier = self.parent.loop.run_callback(self._notify_links) - */ - __Pyx_INCREF(__pyx_v_result); - __Pyx_GIVEREF(__pyx_v_result); - __Pyx_GOTREF(__pyx_v_self->value); - __Pyx_DECREF(__pyx_v_self->value); - __pyx_v_self->value = __pyx_v_result; - - /* "src/gevent/greenlet.py":692 - * self._exc_info = (None, None, None) - * self.value = result - * if self._links and not self._notifier: # <<<<<<<<<<<<<< - * self._notifier = self.parent.loop.run_callback(self._notify_links) - * - */ - __pyx_t_2 = (__pyx_v_self->_links != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_links) != 0); - if (__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->_notifier); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 692, __pyx_L1_error) - __pyx_t_3 = ((!__pyx_t_2) != 0); - __pyx_t_1 = __pyx_t_3; - __pyx_L4_bool_binop_done:; - if (__pyx_t_1) { - - /* "src/gevent/greenlet.py":693 - * self.value = result - * if self._links and not self._notifier: - * self._notifier = self.parent.loop.run_callback(self._notify_links) # <<<<<<<<<<<<<< - * - * def _report_error(self, exc_info): - */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parent); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 693, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_loop); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 693, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_run_callback); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 693, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_notify_links); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 693, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_7); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - } - } - if (!__pyx_t_7) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 693, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_4); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_6}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 693, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_6}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 693, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } else - #endif - { - __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 693, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL; - __Pyx_GIVEREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_6); - __pyx_t_6 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 693, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } - } - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GIVEREF(__pyx_t_4); - __Pyx_GOTREF(__pyx_v_self->_notifier); - __Pyx_DECREF(__pyx_v_self->_notifier); - __pyx_v_self->_notifier = __pyx_t_4; - __pyx_t_4 = 0; - - /* "src/gevent/greenlet.py":692 - * self._exc_info = (None, None, None) - * self.value = result - * if self._links and not self._notifier: # <<<<<<<<<<<<<< - * self._notifier = self.parent.loop.run_callback(self._notify_links) - * - */ - } - - /* "src/gevent/greenlet.py":689 - * raise - * - * def _report_result(self, result): # <<<<<<<<<<<<<< - * self._exc_info = (None, None, None) - * self.value = result - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_AddTraceback("gevent._greenlet.Greenlet._report_result", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":695 - * self._notifier = self.parent.loop.run_callback(self._notify_links) - * - * def _report_error(self, exc_info): # <<<<<<<<<<<<<< - * if isinstance(exc_info[1], GreenletExit): - * self._report_result(exc_info[1]) - */ - -static PyObject *__pyx_f_6gevent_9_greenlet_8Greenlet__report_error(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, PyObject *__pyx_v_exc_info) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - int __pyx_t_3; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - int __pyx_t_10; - int __pyx_t_11; - int __pyx_t_12; - char const *__pyx_t_13; - PyObject *__pyx_t_14 = NULL; - PyObject *__pyx_t_15 = NULL; - PyObject *__pyx_t_16 = NULL; - PyObject *__pyx_t_17 = NULL; - PyObject *__pyx_t_18 = NULL; - PyObject *__pyx_t_19 = NULL; - __Pyx_RefNannySetupContext("_report_error", 0); - __Pyx_INCREF(__pyx_v_exc_info); - - /* "src/gevent/greenlet.py":696 - * - * def _report_error(self, exc_info): - * if isinstance(exc_info[1], GreenletExit): # <<<<<<<<<<<<<< - * self._report_result(exc_info[1]) - * return - */ - if (unlikely(__pyx_v_exc_info == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 696, __pyx_L1_error) - } - __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_exc_info, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 696, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __pyx_v_6gevent_9_greenlet_GreenletExit; - __Pyx_INCREF(__pyx_t_2); - __pyx_t_3 = PyObject_IsInstance(__pyx_t_1, __pyx_t_2); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 696, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = (__pyx_t_3 != 0); - if (__pyx_t_4) { - - /* "src/gevent/greenlet.py":697 - * def _report_error(self, exc_info): - * if isinstance(exc_info[1], GreenletExit): - * self._report_result(exc_info[1]) # <<<<<<<<<<<<<< - * return - * - */ - if (unlikely(__pyx_v_exc_info == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 697, __pyx_L1_error) - } - __pyx_t_2 = __Pyx_GetItemInt_Tuple(__pyx_v_exc_info, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 697, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet *)__pyx_v_self->__pyx_vtab)->_report_result(__pyx_v_self, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 697, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":698 - * if isinstance(exc_info[1], GreenletExit): - * self._report_result(exc_info[1]) - * return # <<<<<<<<<<<<<< - * - * self._exc_info = exc_info[0], exc_info[1], dump_traceback(exc_info[2]) - */ - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - /* "src/gevent/greenlet.py":696 - * - * def _report_error(self, exc_info): - * if isinstance(exc_info[1], GreenletExit): # <<<<<<<<<<<<<< - * self._report_result(exc_info[1]) - * return - */ - } - - /* "src/gevent/greenlet.py":700 - * return - * - * self._exc_info = exc_info[0], exc_info[1], dump_traceback(exc_info[2]) # <<<<<<<<<<<<<< - * - * if self._links and not self._notifier: - */ - if (unlikely(__pyx_v_exc_info == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 700, __pyx_L1_error) - } - __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_exc_info, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 700, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (unlikely(__pyx_v_exc_info == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 700, __pyx_L1_error) - } - __pyx_t_2 = __Pyx_GetItemInt_Tuple(__pyx_v_exc_info, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 700, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (unlikely(__pyx_v_exc_info == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 700, __pyx_L1_error) - } - __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v_exc_info, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 700, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_INCREF(__pyx_v_6gevent_9_greenlet_dump_traceback); - __pyx_t_7 = __pyx_v_6gevent_9_greenlet_dump_traceback; __pyx_t_8 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { - __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); - if (likely(__pyx_t_8)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); - __Pyx_INCREF(__pyx_t_8); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_7, function); - } - } - if (!__pyx_t_8) { - __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 700, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_5); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_7)) { - PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_6}; - __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 700, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { - PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_6}; - __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 700, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } else - #endif - { - __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 700, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL; - __Pyx_GIVEREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_6); - __pyx_t_6 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 700, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - } - } - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 700, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_5); - __pyx_t_1 = 0; - __pyx_t_2 = 0; - __pyx_t_5 = 0; - __Pyx_GIVEREF(__pyx_t_7); - __Pyx_GOTREF(__pyx_v_self->_exc_info); - __Pyx_DECREF(__pyx_v_self->_exc_info); - __pyx_v_self->_exc_info = ((PyObject*)__pyx_t_7); - __pyx_t_7 = 0; - - /* "src/gevent/greenlet.py":702 - * self._exc_info = exc_info[0], exc_info[1], dump_traceback(exc_info[2]) - * - * if self._links and not self._notifier: # <<<<<<<<<<<<<< - * self._notifier = self.parent.loop.run_callback(self._notify_links) - * - */ - __pyx_t_3 = (__pyx_v_self->_links != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_links) != 0); - if (__pyx_t_3) { - } else { - __pyx_t_4 = __pyx_t_3; - goto __pyx_L5_bool_binop_done; - } - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_self->_notifier); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 702, __pyx_L1_error) - __pyx_t_10 = ((!__pyx_t_3) != 0); - __pyx_t_4 = __pyx_t_10; - __pyx_L5_bool_binop_done:; - if (__pyx_t_4) { - - /* "src/gevent/greenlet.py":703 - * - * if self._links and not self._notifier: - * self._notifier = self.parent.loop.run_callback(self._notify_links) # <<<<<<<<<<<<<< - * - * try: - */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parent); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 703, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_loop); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 703, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_run_callback); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 703, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_notify_links); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 703, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_1)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_1); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - } - } - if (!__pyx_t_1) { - __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 703, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GOTREF(__pyx_t_7); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_2}; - __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 703, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_2}; - __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 703, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else - #endif - { - __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 703, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1); __pyx_t_1 = NULL; - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 703, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - } - } - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GIVEREF(__pyx_t_7); - __Pyx_GOTREF(__pyx_v_self->_notifier); - __Pyx_DECREF(__pyx_v_self->_notifier); - __pyx_v_self->_notifier = __pyx_t_7; - __pyx_t_7 = 0; - - /* "src/gevent/greenlet.py":702 - * self._exc_info = exc_info[0], exc_info[1], dump_traceback(exc_info[2]) - * - * if self._links and not self._notifier: # <<<<<<<<<<<<<< - * self._notifier = self.parent.loop.run_callback(self._notify_links) - * - */ - } - - /* "src/gevent/greenlet.py":705 - * self._notifier = self.parent.loop.run_callback(self._notify_links) - * - * try: # <<<<<<<<<<<<<< - * self.parent.handle_error(self, *exc_info) - * finally: - */ - /*try:*/ { - - /* "src/gevent/greenlet.py":706 - * - * try: - * self.parent.handle_error(self, *exc_info) # <<<<<<<<<<<<<< - * finally: - * del exc_info - */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parent); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 706, __pyx_L8_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_handle_error); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 706, __pyx_L8_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 706, __pyx_L8_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)__pyx_v_self)); - if (unlikely(__pyx_v_exc_info == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 706, __pyx_L8_error) - } - __pyx_t_9 = PyNumber_Add(__pyx_t_7, __pyx_v_exc_info); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 706, __pyx_L8_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 706, __pyx_L8_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - - /* "src/gevent/greenlet.py":708 - * self.parent.handle_error(self, *exc_info) - * finally: - * del exc_info # <<<<<<<<<<<<<< - * - * def run(self): - */ - /*finally:*/ { - /*normal exit:*/{ - __Pyx_DECREF(__pyx_v_exc_info); - __pyx_v_exc_info = NULL; - goto __pyx_L9; - } - __pyx_L8_error:; - /*exception exit:*/{ - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19); - if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16); - __Pyx_XGOTREF(__pyx_t_14); - __Pyx_XGOTREF(__pyx_t_15); - __Pyx_XGOTREF(__pyx_t_16); - __Pyx_XGOTREF(__pyx_t_17); - __Pyx_XGOTREF(__pyx_t_18); - __Pyx_XGOTREF(__pyx_t_19); - __pyx_t_11 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename; - { - __Pyx_DECREF(__pyx_v_exc_info); - __pyx_v_exc_info = NULL; - } - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_17); - __Pyx_XGIVEREF(__pyx_t_18); - __Pyx_XGIVEREF(__pyx_t_19); - __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19); - } - __Pyx_XGIVEREF(__pyx_t_14); - __Pyx_XGIVEREF(__pyx_t_15); - __Pyx_XGIVEREF(__pyx_t_16); - __Pyx_ErrRestore(__pyx_t_14, __pyx_t_15, __pyx_t_16); - __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; - __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_13; - goto __pyx_L1_error; - } - __pyx_L9:; - } - - /* "src/gevent/greenlet.py":695 - * self._notifier = self.parent.loop.run_callback(self._notify_links) - * - * def _report_error(self, exc_info): # <<<<<<<<<<<<<< - * if isinstance(exc_info[1], GreenletExit): - * self._report_result(exc_info[1]) - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_XDECREF(__pyx_t_9); - __Pyx_AddTraceback("gevent._greenlet.Greenlet._report_error", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_exc_info); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":710 - * del exc_info - * - * def run(self): # <<<<<<<<<<<<<< - * try: - * self.__cancel_start() - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_35run(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_9_greenlet_8Greenlet_34run[] = "Greenlet.run(self)"; -static PyMethodDef __pyx_mdef_6gevent_9_greenlet_8Greenlet_35run = {"run", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_35run, METH_NOARGS, __pyx_doc_6gevent_9_greenlet_8Greenlet_34run}; -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_35run(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("run (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_34run(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_34run(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self) { - PyObject *__pyx_v_result = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - int __pyx_t_10; - int __pyx_t_11; - int __pyx_t_12; - char const *__pyx_t_13; - PyObject *__pyx_t_14 = NULL; - PyObject *__pyx_t_15 = NULL; - PyObject *__pyx_t_16 = NULL; - __Pyx_RefNannySetupContext("run", 0); - - /* "src/gevent/greenlet.py":711 - * - * def run(self): - * try: # <<<<<<<<<<<<<< - * self.__cancel_start() - * self._start_event = _start_completed_event - */ - /*try:*/ { - - /* "src/gevent/greenlet.py":712 - * def run(self): - * try: - * self.__cancel_start() # <<<<<<<<<<<<<< - * self._start_event = _start_completed_event - * - */ - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet *)__pyx_v_self->__pyx_vtab)->__pyx___cancel_start(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 712, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":713 - * try: - * self.__cancel_start() - * self._start_event = _start_completed_event # <<<<<<<<<<<<<< - * - * try: - */ - __Pyx_INCREF(((PyObject *)__pyx_v_6gevent_9_greenlet__start_completed_event)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_6gevent_9_greenlet__start_completed_event)); - __Pyx_GOTREF(__pyx_v_self->_start_event); - __Pyx_DECREF(__pyx_v_self->_start_event); - __pyx_v_self->_start_event = ((PyObject *)__pyx_v_6gevent_9_greenlet__start_completed_event); - - /* "src/gevent/greenlet.py":715 - * self._start_event = _start_completed_event - * - * try: # <<<<<<<<<<<<<< - * result = self._run(*self.args, **self.kwargs) - * except: # pylint:disable=bare-except - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4); - __Pyx_XGOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_4); - /*try:*/ { - - /* "src/gevent/greenlet.py":716 - * - * try: - * result = self._run(*self.args, **self.kwargs) # <<<<<<<<<<<<<< - * except: # pylint:disable=bare-except - * self._report_error(sys_exc_info()) - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_run_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 716, __pyx_L6_error) - __Pyx_GOTREF(__pyx_t_1); - if (unlikely(__pyx_v_self->args == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 716, __pyx_L6_error) - } - if (unlikely(__pyx_v_self->kwargs == Py_None)) { - PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType"); - __PYX_ERR(0, 716, __pyx_L6_error) - } - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_self->args, __pyx_v_self->kwargs); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 716, __pyx_L6_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_result = __pyx_t_5; - __pyx_t_5 = 0; - - /* "src/gevent/greenlet.py":715 - * self._start_event = _start_completed_event - * - * try: # <<<<<<<<<<<<<< - * result = self._run(*self.args, **self.kwargs) - * except: # pylint:disable=bare-except - */ - } - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - goto __pyx_L11_try_end; - __pyx_L6_error:; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - - /* "src/gevent/greenlet.py":717 - * try: - * result = self._run(*self.args, **self.kwargs) - * except: # pylint:disable=bare-except # <<<<<<<<<<<<<< - * self._report_error(sys_exc_info()) - * return - */ - /*except:*/ { - __Pyx_AddTraceback("gevent._greenlet.Greenlet.run", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_1, &__pyx_t_6) < 0) __PYX_ERR(0, 717, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_t_6); - - /* "src/gevent/greenlet.py":718 - * result = self._run(*self.args, **self.kwargs) - * except: # pylint:disable=bare-except - * self._report_error(sys_exc_info()) # <<<<<<<<<<<<<< - * return - * self._report_result(result) - */ - __Pyx_INCREF(__pyx_v_6gevent_9_greenlet_sys_exc_info); - __pyx_t_8 = __pyx_v_6gevent_9_greenlet_sys_exc_info; __pyx_t_9 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { - __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8); - if (likely(__pyx_t_9)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); - __Pyx_INCREF(__pyx_t_9); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_8, function); - } - } - if (__pyx_t_9) { - __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 718, __pyx_L8_except_error) - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - } else { - __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 718, __pyx_L8_except_error) - } - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (!(likely(PyTuple_CheckExact(__pyx_t_7))||((__pyx_t_7) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_7)->tp_name), 0))) __PYX_ERR(0, 718, __pyx_L8_except_error) - __pyx_t_8 = ((struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet *)__pyx_v_self->__pyx_vtab)->_report_error(__pyx_v_self, ((PyObject*)__pyx_t_7)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 718, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - - /* "src/gevent/greenlet.py":719 - * except: # pylint:disable=bare-except - * self._report_error(sys_exc_info()) - * return # <<<<<<<<<<<<<< - * self._report_result(result) - * finally: - */ - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - goto __pyx_L9_except_return; - } - __pyx_L8_except_error:; - - /* "src/gevent/greenlet.py":715 - * self._start_event = _start_completed_event - * - * try: # <<<<<<<<<<<<<< - * result = self._run(*self.args, **self.kwargs) - * except: # pylint:disable=bare-except - */ - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); - goto __pyx_L4_error; - __pyx_L9_except_return:; - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); - goto __pyx_L3_return; - __pyx_L11_try_end:; - } - - /* "src/gevent/greenlet.py":720 - * self._report_error(sys_exc_info()) - * return - * self._report_result(result) # <<<<<<<<<<<<<< - * finally: - * self.__dict__.pop('_run', None) - */ - __pyx_t_6 = ((struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet *)__pyx_v_self->__pyx_vtab)->_report_result(__pyx_v_self, __pyx_v_result); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 720, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - - /* "src/gevent/greenlet.py":722 - * self._report_result(result) - * finally: - * self.__dict__.pop('_run', None) # <<<<<<<<<<<<<< - * self.args = () - * self.kwargs.clear() - */ - /*finally:*/ { - /*normal exit:*/{ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 722, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_pop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 722, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 722, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - - /* "src/gevent/greenlet.py":723 - * finally: - * self.__dict__.pop('_run', None) - * self.args = () # <<<<<<<<<<<<<< - * self.kwargs.clear() - * - */ - __Pyx_INCREF(__pyx_empty_tuple); - __Pyx_GIVEREF(__pyx_empty_tuple); - __Pyx_GOTREF(__pyx_v_self->args); - __Pyx_DECREF(__pyx_v_self->args); - __pyx_v_self->args = __pyx_empty_tuple; - - /* "src/gevent/greenlet.py":724 - * self.__dict__.pop('_run', None) - * self.args = () - * self.kwargs.clear() # <<<<<<<<<<<<<< - * - * def _run(self): - */ - if (unlikely(__pyx_v_self->kwargs == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "clear"); - __PYX_ERR(0, 724, __pyx_L1_error) - } - __pyx_t_10 = __Pyx_PyDict_Clear(__pyx_v_self->kwargs); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 724, __pyx_L1_error) - goto __pyx_L5; - } - __pyx_L4_error:; - /*exception exit:*/{ - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16); - if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_4, &__pyx_t_3, &__pyx_t_2) < 0)) __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_3, &__pyx_t_2); - __Pyx_XGOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_t_14); - __Pyx_XGOTREF(__pyx_t_15); - __Pyx_XGOTREF(__pyx_t_16); - __pyx_t_11 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename; - { - - /* "src/gevent/greenlet.py":722 - * self._report_result(result) - * finally: - * self.__dict__.pop('_run', None) # <<<<<<<<<<<<<< - * self.args = () - * self.kwargs.clear() - */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 722, __pyx_L15_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_pop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 722, __pyx_L15_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 722, __pyx_L15_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - - /* "src/gevent/greenlet.py":723 - * finally: - * self.__dict__.pop('_run', None) - * self.args = () # <<<<<<<<<<<<<< - * self.kwargs.clear() - * - */ - __Pyx_INCREF(__pyx_empty_tuple); - __Pyx_GIVEREF(__pyx_empty_tuple); - __Pyx_GOTREF(__pyx_v_self->args); - __Pyx_DECREF(__pyx_v_self->args); - __pyx_v_self->args = __pyx_empty_tuple; - - /* "src/gevent/greenlet.py":724 - * self.__dict__.pop('_run', None) - * self.args = () - * self.kwargs.clear() # <<<<<<<<<<<<<< - * - * def _run(self): - */ - if (unlikely(__pyx_v_self->kwargs == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "clear"); - __PYX_ERR(0, 724, __pyx_L15_error) - } - __pyx_t_10 = __Pyx_PyDict_Clear(__pyx_v_self->kwargs); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 724, __pyx_L15_error) - } - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_14); - __Pyx_XGIVEREF(__pyx_t_15); - __Pyx_XGIVEREF(__pyx_t_16); - __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16); - } - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_ErrRestore(__pyx_t_4, __pyx_t_3, __pyx_t_2); - __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; - __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_13; - goto __pyx_L1_error; - __pyx_L15_error:; - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_14); - __Pyx_XGIVEREF(__pyx_t_15); - __Pyx_XGIVEREF(__pyx_t_16); - __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16); - } - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; - goto __pyx_L1_error; - } - __pyx_L3_return: { - __pyx_t_16 = __pyx_r; - __pyx_r = 0; - - /* "src/gevent/greenlet.py":722 - * self._report_result(result) - * finally: - * self.__dict__.pop('_run', None) # <<<<<<<<<<<<<< - * self.args = () - * self.kwargs.clear() - */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 722, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_pop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 722, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 722, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - - /* "src/gevent/greenlet.py":723 - * finally: - * self.__dict__.pop('_run', None) - * self.args = () # <<<<<<<<<<<<<< - * self.kwargs.clear() - * - */ - __Pyx_INCREF(__pyx_empty_tuple); - __Pyx_GIVEREF(__pyx_empty_tuple); - __Pyx_GOTREF(__pyx_v_self->args); - __Pyx_DECREF(__pyx_v_self->args); - __pyx_v_self->args = __pyx_empty_tuple; - - /* "src/gevent/greenlet.py":724 - * self.__dict__.pop('_run', None) - * self.args = () - * self.kwargs.clear() # <<<<<<<<<<<<<< - * - * def _run(self): - */ - if (unlikely(__pyx_v_self->kwargs == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "clear"); - __PYX_ERR(0, 724, __pyx_L1_error) - } - __pyx_t_10 = __Pyx_PyDict_Clear(__pyx_v_self->kwargs); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 724, __pyx_L1_error) - __pyx_r = __pyx_t_16; - __pyx_t_16 = 0; - goto __pyx_L0; - } - __pyx_L5:; - } - - /* "src/gevent/greenlet.py":710 - * del exc_info - * - * def run(self): # <<<<<<<<<<<<<< - * try: - * self.__cancel_start() - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_XDECREF(__pyx_t_9); - __Pyx_AddTraceback("gevent._greenlet.Greenlet.run", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_result); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":726 - * self.kwargs.clear() - * - * def _run(self): # <<<<<<<<<<<<<< - * """ - * Subclasses may override this method to take any number of - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_37_run(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_9_greenlet_8Greenlet_36_run[] = "Greenlet._run(self)\n\n Subclasses may override this method to take any number of\n arguments and keyword arguments.\n\n .. versionadded:: 1.1a3\n Previously, if no callable object was\n passed to the constructor, the spawned greenlet would later\n fail with an AttributeError.\n "; -static PyMethodDef __pyx_mdef_6gevent_9_greenlet_8Greenlet_37_run = {"_run", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_37_run, METH_NOARGS, __pyx_doc_6gevent_9_greenlet_8Greenlet_36_run}; -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_37_run(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_run (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_36_run(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_36_run(CYTHON_UNUSED struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_run", 0); - - /* "src/gevent/greenlet.py":738 - * # We usually override this in __init__ - * # pylint: disable=method-hidden - * return # <<<<<<<<<<<<<< - * - * def has_links(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - /* "src/gevent/greenlet.py":726 - * self.kwargs.clear() - * - * def _run(self): # <<<<<<<<<<<<<< - * """ - * Subclasses may override this method to take any number of - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":740 - * return - * - * def has_links(self): # <<<<<<<<<<<<<< - * return len(self._links) - * - */ - -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_39has_links(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static int __pyx_f_6gevent_9_greenlet_8Greenlet_has_links(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, int __pyx_skip_dispatch) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - Py_ssize_t __pyx_t_6; - __Pyx_RefNannySetupContext("has_links", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_has_links); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 740, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_39has_links)) { - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 740, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 740, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 740, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_5; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/greenlet.py":741 - * - * def has_links(self): - * return len(self._links) # <<<<<<<<<<<<<< - * - * def rawlink(self, callback): - */ - __pyx_t_1 = __pyx_v_self->_links; - __Pyx_INCREF(__pyx_t_1); - if (unlikely(__pyx_t_1 == Py_None)) { - PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 741, __pyx_L1_error) - } - __pyx_t_6 = PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 741, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_6; - goto __pyx_L0; - - /* "src/gevent/greenlet.py":740 - * return - * - * def has_links(self): # <<<<<<<<<<<<<< - * return len(self._links) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_WriteUnraisable("gevent._greenlet.Greenlet.has_links", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); - __pyx_r = 0; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_39has_links(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_9_greenlet_8Greenlet_38has_links[] = "Greenlet.has_links(self) -> bool"; -static PyMethodDef __pyx_mdef_6gevent_9_greenlet_8Greenlet_39has_links = {"has_links", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_39has_links, METH_NOARGS, __pyx_doc_6gevent_9_greenlet_8Greenlet_38has_links}; -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_39has_links(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("has_links (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_38has_links(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_38has_links(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("has_links", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_f_6gevent_9_greenlet_8Greenlet_has_links(__pyx_v_self, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 740, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._greenlet.Greenlet.has_links", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":743 - * return len(self._links) - * - * def rawlink(self, callback): # <<<<<<<<<<<<<< - * """ - * Register a callable to be executed when the greenlet finishes - */ - -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_41rawlink(PyObject *__pyx_v_self, PyObject *__pyx_v_callback); /*proto*/ -static PyObject *__pyx_f_6gevent_9_greenlet_8Greenlet_rawlink(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, PyObject *__pyx_v_callback, int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - int __pyx_t_7; - int __pyx_t_8; - int __pyx_t_9; - __Pyx_RefNannySetupContext("rawlink", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rawlink); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 743, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_41rawlink)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (!__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_callback); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 743, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_callback}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 743, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_callback}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 743, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 743, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_INCREF(__pyx_v_callback); - __Pyx_GIVEREF(__pyx_v_callback); - PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_callback); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 743, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/greenlet.py":753 - * .. caution:: The callable will be called in the HUB greenlet. - * """ - * if not callable(callback): # <<<<<<<<<<<<<< - * raise TypeError('Expected callable: %r' % (callback, )) - * self._links.append(callback) # pylint:disable=no-member - */ - __pyx_t_6 = __Pyx_PyCallable_Check(__pyx_v_callback); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 753, __pyx_L1_error) - __pyx_t_7 = ((!(__pyx_t_6 != 0)) != 0); - if (unlikely(__pyx_t_7)) { - - /* "src/gevent/greenlet.py":754 - * """ - * if not callable(callback): - * raise TypeError('Expected callable: %r' % (callback, )) # <<<<<<<<<<<<<< - * self._links.append(callback) # pylint:disable=no-member - * if self.ready() and self._links and not self._notifier: - */ - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 754, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_v_callback); - __Pyx_GIVEREF(__pyx_v_callback); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_callback); - __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_Expected_callable_r, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 754, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 754, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 754, __pyx_L1_error) - - /* "src/gevent/greenlet.py":753 - * .. caution:: The callable will be called in the HUB greenlet. - * """ - * if not callable(callback): # <<<<<<<<<<<<<< - * raise TypeError('Expected callable: %r' % (callback, )) - * self._links.append(callback) # pylint:disable=no-member - */ - } - - /* "src/gevent/greenlet.py":755 - * if not callable(callback): - * raise TypeError('Expected callable: %r' % (callback, )) - * self._links.append(callback) # pylint:disable=no-member # <<<<<<<<<<<<<< - * if self.ready() and self._links and not self._notifier: - * self._notifier = self.parent.loop.run_callback(self._notify_links) - */ - if (unlikely(__pyx_v_self->_links == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append"); - __PYX_ERR(0, 755, __pyx_L1_error) - } - __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_self->_links, __pyx_v_callback); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 755, __pyx_L1_error) - - /* "src/gevent/greenlet.py":756 - * raise TypeError('Expected callable: %r' % (callback, )) - * self._links.append(callback) # pylint:disable=no-member - * if self.ready() and self._links and not self._notifier: # <<<<<<<<<<<<<< - * self._notifier = self.parent.loop.run_callback(self._notify_links) - * - */ - __pyx_t_6 = (((struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet *)__pyx_v_self->__pyx_vtab)->ready(__pyx_v_self, 0) != 0); - if (__pyx_t_6) { - } else { - __pyx_t_7 = __pyx_t_6; - goto __pyx_L5_bool_binop_done; - } - __pyx_t_6 = (__pyx_v_self->_links != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_links) != 0); - if (__pyx_t_6) { - } else { - __pyx_t_7 = __pyx_t_6; - goto __pyx_L5_bool_binop_done; - } - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_self->_notifier); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 756, __pyx_L1_error) - __pyx_t_9 = ((!__pyx_t_6) != 0); - __pyx_t_7 = __pyx_t_9; - __pyx_L5_bool_binop_done:; - if (__pyx_t_7) { - - /* "src/gevent/greenlet.py":757 - * self._links.append(callback) # pylint:disable=no-member - * if self.ready() and self._links and not self._notifier: - * self._notifier = self.parent.loop.run_callback(self._notify_links) # <<<<<<<<<<<<<< - * - * def link(self, callback, SpawnedLink=SpawnedLink): - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parent); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 757, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_loop); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 757, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_run_callback); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 757, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_notify_links); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 757, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_5) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 757, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 757, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 757, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 757, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL; - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_3); - __pyx_t_3 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 757, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->_notifier); - __Pyx_DECREF(__pyx_v_self->_notifier); - __pyx_v_self->_notifier = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":756 - * raise TypeError('Expected callable: %r' % (callback, )) - * self._links.append(callback) # pylint:disable=no-member - * if self.ready() and self._links and not self._notifier: # <<<<<<<<<<<<<< - * self._notifier = self.parent.loop.run_callback(self._notify_links) - * - */ - } - - /* "src/gevent/greenlet.py":743 - * return len(self._links) - * - * def rawlink(self, callback): # <<<<<<<<<<<<<< - * """ - * Register a callable to be executed when the greenlet finishes - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent._greenlet.Greenlet.rawlink", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_41rawlink(PyObject *__pyx_v_self, PyObject *__pyx_v_callback); /*proto*/ -static char __pyx_doc_6gevent_9_greenlet_8Greenlet_40rawlink[] = "Greenlet.rawlink(self, callback)\n\n Register a callable to be executed when the greenlet finishes\n execution.\n\n The *callback* will be called with this instance as an\n argument.\n\n .. caution:: The callable will be called in the HUB greenlet.\n "; -static PyMethodDef __pyx_mdef_6gevent_9_greenlet_8Greenlet_41rawlink = {"rawlink", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_41rawlink, METH_O, __pyx_doc_6gevent_9_greenlet_8Greenlet_40rawlink}; -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_41rawlink(PyObject *__pyx_v_self, PyObject *__pyx_v_callback) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("rawlink (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_40rawlink(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self), ((PyObject *)__pyx_v_callback)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_40rawlink(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, PyObject *__pyx_v_callback) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("rawlink", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_9_greenlet_8Greenlet_rawlink(__pyx_v_self, __pyx_v_callback, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 743, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._greenlet.Greenlet.rawlink", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":759 - * self._notifier = self.parent.loop.run_callback(self._notify_links) - * - * def link(self, callback, SpawnedLink=SpawnedLink): # <<<<<<<<<<<<<< - * """ - * Link greenlet's completion to a callable. - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_43link(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_9_greenlet_8Greenlet_42link[] = "Greenlet.link(self, callback, SpawnedLink=SpawnedLink)\n\n Link greenlet's completion to a callable.\n\n The *callback* will be called with this instance as an\n argument once this greenlet is dead. A callable is called in\n its own :class:`greenlet.greenlet` (*not* a\n :class:`Greenlet`).\n "; -static PyMethodDef __pyx_mdef_6gevent_9_greenlet_8Greenlet_43link = {"link", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_43link, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_9_greenlet_8Greenlet_42link}; -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_43link(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_callback = 0; - PyObject *__pyx_v_SpawnedLink = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("link (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback,&__pyx_n_s_SpawnedLink,0}; - PyObject* values[2] = {0,0}; - values[1] = __pyx_k__14; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_SpawnedLink); - if (value) { values[1] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "link") < 0)) __PYX_ERR(0, 759, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_callback = values[0]; - __pyx_v_SpawnedLink = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("link", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 759, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._greenlet.Greenlet.link", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_42link(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self), __pyx_v_callback, __pyx_v_SpawnedLink); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_42link(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, PyObject *__pyx_v_callback, PyObject *__pyx_v_SpawnedLink) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("link", 0); - - /* "src/gevent/greenlet.py":771 - * # optimization, or do people use it? It's not documented - * # pylint:disable=redefined-outer-name - * self.rawlink(SpawnedLink(callback)) # <<<<<<<<<<<<<< - * - * def unlink(self, callback): - */ - __Pyx_INCREF(__pyx_v_SpawnedLink); - __pyx_t_2 = __pyx_v_SpawnedLink; __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_callback); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 771, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_callback}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 771, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_callback}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 771, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 771, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(__pyx_v_callback); - __Pyx_GIVEREF(__pyx_v_callback); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_callback); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 771, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = ((struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet *)__pyx_v_self->__pyx_vtab)->rawlink(__pyx_v_self, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 771, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/greenlet.py":759 - * self._notifier = self.parent.loop.run_callback(self._notify_links) - * - * def link(self, callback, SpawnedLink=SpawnedLink): # <<<<<<<<<<<<<< - * """ - * Link greenlet's completion to a callable. - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent._greenlet.Greenlet.link", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":773 - * self.rawlink(SpawnedLink(callback)) - * - * def unlink(self, callback): # <<<<<<<<<<<<<< - * """Remove the callback set by :meth:`link` or :meth:`rawlink`""" - * try: - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_45unlink(PyObject *__pyx_v_self, PyObject *__pyx_v_callback); /*proto*/ -static char __pyx_doc_6gevent_9_greenlet_8Greenlet_44unlink[] = "Greenlet.unlink(self, callback)\nRemove the callback set by :meth:`link` or :meth:`rawlink`"; -static PyMethodDef __pyx_mdef_6gevent_9_greenlet_8Greenlet_45unlink = {"unlink", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_45unlink, METH_O, __pyx_doc_6gevent_9_greenlet_8Greenlet_44unlink}; -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_45unlink(PyObject *__pyx_v_self, PyObject *__pyx_v_callback) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("unlink (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_44unlink(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self), ((PyObject *)__pyx_v_callback)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_44unlink(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, PyObject *__pyx_v_callback) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - int __pyx_t_8; - __Pyx_RefNannySetupContext("unlink", 0); - - /* "src/gevent/greenlet.py":775 - * def unlink(self, callback): - * """Remove the callback set by :meth:`link` or :meth:`rawlink`""" - * try: # <<<<<<<<<<<<<< - * self._links.remove(callback) # pylint:disable=no-member - * except ValueError: - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_t_3); - /*try:*/ { - - /* "src/gevent/greenlet.py":776 - * """Remove the callback set by :meth:`link` or :meth:`rawlink`""" - * try: - * self._links.remove(callback) # pylint:disable=no-member # <<<<<<<<<<<<<< - * except ValueError: - * pass - */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_links, __pyx_n_s_remove); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 776, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - } - } - if (!__pyx_t_6) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_callback); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 776, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_4); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v_callback}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 776, __pyx_L3_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_4); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v_callback}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 776, __pyx_L3_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_4); - } else - #endif - { - __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 776, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL; - __Pyx_INCREF(__pyx_v_callback); - __Pyx_GIVEREF(__pyx_v_callback); - PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_callback); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 776, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - } - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "src/gevent/greenlet.py":775 - * def unlink(self, callback): - * """Remove the callback set by :meth:`link` or :meth:`rawlink`""" - * try: # <<<<<<<<<<<<<< - * self._links.remove(callback) # pylint:disable=no-member - * except ValueError: - */ - } - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L8_try_end; - __pyx_L3_error:; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "src/gevent/greenlet.py":777 - * try: - * self._links.remove(callback) # pylint:disable=no-member - * except ValueError: # <<<<<<<<<<<<<< - * pass - * - */ - __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError); - if (__pyx_t_8) { - __Pyx_ErrRestore(0,0,0); - goto __pyx_L4_exception_handled; - } - goto __pyx_L5_except_error; - __pyx_L5_except_error:; - - /* "src/gevent/greenlet.py":775 - * def unlink(self, callback): - * """Remove the callback set by :meth:`link` or :meth:`rawlink`""" - * try: # <<<<<<<<<<<<<< - * self._links.remove(callback) # pylint:disable=no-member - * except ValueError: - */ - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - goto __pyx_L1_error; - __pyx_L4_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - __pyx_L8_try_end:; - } - - /* "src/gevent/greenlet.py":773 - * self.rawlink(SpawnedLink(callback)) - * - * def unlink(self, callback): # <<<<<<<<<<<<<< - * """Remove the callback set by :meth:`link` or :meth:`rawlink`""" - * try: - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("gevent._greenlet.Greenlet.unlink", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":780 - * pass - * - * def unlink_all(self): # <<<<<<<<<<<<<< - * """ - * Remove all the callbacks. - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_47unlink_all(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_9_greenlet_8Greenlet_46unlink_all[] = "Greenlet.unlink_all(self)\n\n Remove all the callbacks.\n\n .. versionadded:: 1.3a2\n "; -static PyMethodDef __pyx_mdef_6gevent_9_greenlet_8Greenlet_47unlink_all = {"unlink_all", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_47unlink_all, METH_NOARGS, __pyx_doc_6gevent_9_greenlet_8Greenlet_46unlink_all}; -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_47unlink_all(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("unlink_all (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_46unlink_all(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_46unlink_all(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("unlink_all", 0); - - /* "src/gevent/greenlet.py":786 - * .. versionadded:: 1.3a2 - * """ - * del self._links[:] # <<<<<<<<<<<<<< - * - * def link_value(self, callback, SpawnedLink=SuccessSpawnedLink): - */ - if (unlikely(__pyx_v_self->_links == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 786, __pyx_L1_error) - } - if (__Pyx_PyObject_DelSlice(__pyx_v_self->_links, 0, 0, NULL, NULL, NULL, 0, 0, 1) < 0) __PYX_ERR(0, 786, __pyx_L1_error) - - /* "src/gevent/greenlet.py":780 - * pass - * - * def unlink_all(self): # <<<<<<<<<<<<<< - * """ - * Remove all the callbacks. - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_AddTraceback("gevent._greenlet.Greenlet.unlink_all", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":788 - * del self._links[:] - * - * def link_value(self, callback, SpawnedLink=SuccessSpawnedLink): # <<<<<<<<<<<<<< - * """ - * Like :meth:`link` but *callback* is only notified when the greenlet - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_49link_value(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_9_greenlet_8Greenlet_48link_value[] = "Greenlet.link_value(self, callback, SpawnedLink=SuccessSpawnedLink)\n\n Like :meth:`link` but *callback* is only notified when the greenlet\n has completed successfully.\n "; -static PyMethodDef __pyx_mdef_6gevent_9_greenlet_8Greenlet_49link_value = {"link_value", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_49link_value, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_9_greenlet_8Greenlet_48link_value}; -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_49link_value(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_callback = 0; - PyObject *__pyx_v_SpawnedLink = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("link_value (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback,&__pyx_n_s_SpawnedLink,0}; - PyObject* values[2] = {0,0}; - values[1] = __pyx_k__15; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_SpawnedLink); - if (value) { values[1] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "link_value") < 0)) __PYX_ERR(0, 788, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_callback = values[0]; - __pyx_v_SpawnedLink = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("link_value", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 788, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._greenlet.Greenlet.link_value", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_48link_value(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self), __pyx_v_callback, __pyx_v_SpawnedLink); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_48link_value(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, PyObject *__pyx_v_callback, PyObject *__pyx_v_SpawnedLink) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("link_value", 0); - - /* "src/gevent/greenlet.py":794 - * """ - * # pylint:disable=redefined-outer-name - * self.link(callback, SpawnedLink=SpawnedLink) # <<<<<<<<<<<<<< - * - * def link_exception(self, callback, SpawnedLink=FailureSpawnedLink): - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_link); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 794, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 794, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_v_callback); - __Pyx_GIVEREF(__pyx_v_callback); - PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_callback); - __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 794, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_SpawnedLink, __pyx_v_SpawnedLink) < 0) __PYX_ERR(0, 794, __pyx_L1_error) - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 794, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "src/gevent/greenlet.py":788 - * del self._links[:] - * - * def link_value(self, callback, SpawnedLink=SuccessSpawnedLink): # <<<<<<<<<<<<<< - * """ - * Like :meth:`link` but *callback* is only notified when the greenlet - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent._greenlet.Greenlet.link_value", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":796 - * self.link(callback, SpawnedLink=SpawnedLink) - * - * def link_exception(self, callback, SpawnedLink=FailureSpawnedLink): # <<<<<<<<<<<<<< - * """ - * Like :meth:`link` but *callback* is only notified when the - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_51link_exception(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_9_greenlet_8Greenlet_50link_exception[] = "Greenlet.link_exception(self, callback, SpawnedLink=FailureSpawnedLink)\n\n Like :meth:`link` but *callback* is only notified when the\n greenlet dies because of an unhandled exception.\n "; -static PyMethodDef __pyx_mdef_6gevent_9_greenlet_8Greenlet_51link_exception = {"link_exception", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_51link_exception, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_9_greenlet_8Greenlet_50link_exception}; -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_51link_exception(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_callback = 0; - PyObject *__pyx_v_SpawnedLink = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("link_exception (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback,&__pyx_n_s_SpawnedLink,0}; - PyObject* values[2] = {0,0}; - values[1] = __pyx_k__16; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_SpawnedLink); - if (value) { values[1] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "link_exception") < 0)) __PYX_ERR(0, 796, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_callback = values[0]; - __pyx_v_SpawnedLink = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("link_exception", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 796, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._greenlet.Greenlet.link_exception", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_50link_exception(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self), __pyx_v_callback, __pyx_v_SpawnedLink); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_50link_exception(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, PyObject *__pyx_v_callback, PyObject *__pyx_v_SpawnedLink) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("link_exception", 0); - - /* "src/gevent/greenlet.py":802 - * """ - * # pylint:disable=redefined-outer-name - * self.link(callback, SpawnedLink=SpawnedLink) # <<<<<<<<<<<<<< - * - * def _notify_links(self): - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_link); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 802, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 802, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_v_callback); - __Pyx_GIVEREF(__pyx_v_callback); - PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_callback); - __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 802, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_SpawnedLink, __pyx_v_SpawnedLink) < 0) __PYX_ERR(0, 802, __pyx_L1_error) - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 802, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "src/gevent/greenlet.py":796 - * self.link(callback, SpawnedLink=SpawnedLink) - * - * def link_exception(self, callback, SpawnedLink=FailureSpawnedLink): # <<<<<<<<<<<<<< - * """ - * Like :meth:`link` but *callback* is only notified when the - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent._greenlet.Greenlet.link_exception", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":804 - * self.link(callback, SpawnedLink=SpawnedLink) - * - * def _notify_links(self): # <<<<<<<<<<<<<< - * while self._links: - * # Early links are allowed to remove later links - */ - -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_53_notify_links(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_f_6gevent_9_greenlet_8Greenlet__notify_links(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, int __pyx_skip_dispatch) { - PyObject *__pyx_v_link = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - PyObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; - __Pyx_RefNannySetupContext("_notify_links", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_notify_links); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 804, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_53_notify_links)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 804, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 804, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/greenlet.py":805 - * - * def _notify_links(self): - * while self._links: # <<<<<<<<<<<<<< - * # Early links are allowed to remove later links - * # before we get to them, and they're also allowed to - */ - while (1) { - __pyx_t_5 = (__pyx_v_self->_links != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_links) != 0); - if (!__pyx_t_5) break; - - /* "src/gevent/greenlet.py":813 - * # manipulating it should be small. a deque is probably not justified. - * # Cython has optimizations to transform this into a memmove anyway. - * link = self._links.pop(0) # <<<<<<<<<<<<<< - * try: - * link(self) - */ - if (unlikely(__pyx_v_self->_links == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop"); - __PYX_ERR(0, 813, __pyx_L1_error) - } - __pyx_t_1 = __Pyx_PyList_PopIndex(__pyx_v_self->_links, __pyx_int_0, 0, 1, Py_ssize_t, PyInt_FromSsize_t); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 813, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_XDECREF_SET(__pyx_v_link, __pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":814 - * # Cython has optimizations to transform this into a memmove anyway. - * link = self._links.pop(0) - * try: # <<<<<<<<<<<<<< - * link(self) - * except: # pylint:disable=bare-except - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8); - __Pyx_XGOTREF(__pyx_t_6); - __Pyx_XGOTREF(__pyx_t_7); - __Pyx_XGOTREF(__pyx_t_8); - /*try:*/ { - - /* "src/gevent/greenlet.py":815 - * link = self._links.pop(0) - * try: - * link(self) # <<<<<<<<<<<<<< - * except: # pylint:disable=bare-except - * self.parent.handle_error((link, self), *sys_exc_info()) - */ - __Pyx_INCREF(__pyx_v_link); - __pyx_t_2 = __pyx_v_link; __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 815, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_self)}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 815, __pyx_L5_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_self)}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 815, __pyx_L5_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 815, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)__pyx_v_self)); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 815, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":814 - * # Cython has optimizations to transform this into a memmove anyway. - * link = self._links.pop(0) - * try: # <<<<<<<<<<<<<< - * link(self) - * except: # pylint:disable=bare-except - */ - } - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - goto __pyx_L12_try_end; - __pyx_L5_error:; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":816 - * try: - * link(self) - * except: # pylint:disable=bare-except # <<<<<<<<<<<<<< - * self.parent.handle_error((link, self), *sys_exc_info()) - * - */ - /*except:*/ { - __Pyx_AddTraceback("gevent._greenlet.Greenlet._notify_links", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_4) < 0) __PYX_ERR(0, 816, __pyx_L7_except_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GOTREF(__pyx_t_4); - - /* "src/gevent/greenlet.py":817 - * link(self) - * except: # pylint:disable=bare-except - * self.parent.handle_error((link, self), *sys_exc_info()) # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parent); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 817, __pyx_L7_except_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_handle_error); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 817, __pyx_L7_except_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 817, __pyx_L7_except_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_INCREF(__pyx_v_link); - __Pyx_GIVEREF(__pyx_v_link); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_link); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_v_self)); - __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 817, __pyx_L7_except_error) - __Pyx_GOTREF(__pyx_t_10); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3); - __pyx_t_3 = 0; - __Pyx_INCREF(__pyx_v_6gevent_9_greenlet_sys_exc_info); - __pyx_t_11 = __pyx_v_6gevent_9_greenlet_sys_exc_info; __pyx_t_12 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) { - __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_11); - if (likely(__pyx_t_12)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); - __Pyx_INCREF(__pyx_t_12); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_11, function); - } - } - if (__pyx_t_12) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 817, __pyx_L7_except_error) - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 817, __pyx_L7_except_error) - } - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_11 = __Pyx_PySequence_Tuple(__pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 817, __pyx_L7_except_error) - __Pyx_GOTREF(__pyx_t_11); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyNumber_Add(__pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 817, __pyx_L7_except_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_3, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 817, __pyx_L7_except_error) - __Pyx_GOTREF(__pyx_t_11); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - goto __pyx_L6_exception_handled; - } - __pyx_L7_except_error:; - - /* "src/gevent/greenlet.py":814 - * # Cython has optimizations to transform this into a memmove anyway. - * link = self._links.pop(0) - * try: # <<<<<<<<<<<<<< - * link(self) - * except: # pylint:disable=bare-except - */ - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); - goto __pyx_L1_error; - __pyx_L6_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); - __pyx_L12_try_end:; - } - } - - /* "src/gevent/greenlet.py":804 - * self.link(callback, SpawnedLink=SpawnedLink) - * - * def _notify_links(self): # <<<<<<<<<<<<<< - * while self._links: - * # Early links are allowed to remove later links - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_9); - __Pyx_XDECREF(__pyx_t_10); - __Pyx_XDECREF(__pyx_t_11); - __Pyx_XDECREF(__pyx_t_12); - __Pyx_AddTraceback("gevent._greenlet.Greenlet._notify_links", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_link); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_53_notify_links(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_9_greenlet_8Greenlet_52_notify_links[] = "Greenlet._notify_links(self)"; -static PyMethodDef __pyx_mdef_6gevent_9_greenlet_8Greenlet_53_notify_links = {"_notify_links", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_53_notify_links, METH_NOARGS, __pyx_doc_6gevent_9_greenlet_8Greenlet_52_notify_links}; -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_53_notify_links(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_notify_links (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_52_notify_links(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_52_notify_links(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_notify_links", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_9_greenlet_8Greenlet__notify_links(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 804, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._greenlet.Greenlet._notify_links", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/_greenlet.pxd":87 - * - * cdef class Greenlet(greenlet): - * cdef readonly object value # <<<<<<<<<<<<<< - * cdef readonly tuple args - * cdef readonly dict kwargs - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_5value_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_5value_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_5value___get__(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_5value___get__(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->value); - __pyx_r = __pyx_v_self->value; - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/_greenlet.pxd":88 - * cdef class Greenlet(greenlet): - * cdef readonly object value - * cdef readonly tuple args # <<<<<<<<<<<<<< - * cdef readonly dict kwargs - * cdef readonly object spawning_greenlet - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_4args_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_4args_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_4args___get__(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_4args___get__(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->args); - __pyx_r = __pyx_v_self->args; - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/_greenlet.pxd":89 - * cdef readonly object value - * cdef readonly tuple args - * cdef readonly dict kwargs # <<<<<<<<<<<<<< - * cdef readonly object spawning_greenlet - * cdef public dict spawn_tree_locals - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_6kwargs_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_6kwargs_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_6kwargs___get__(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_6kwargs___get__(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->kwargs); - __pyx_r = __pyx_v_self->kwargs; - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/_greenlet.pxd":90 - * cdef readonly tuple args - * cdef readonly dict kwargs - * cdef readonly object spawning_greenlet # <<<<<<<<<<<<<< - * cdef public dict spawn_tree_locals - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_17spawning_greenlet_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_17spawning_greenlet_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_17spawning_greenlet___get__(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_17spawning_greenlet___get__(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->spawning_greenlet); - __pyx_r = __pyx_v_self->spawning_greenlet; - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/_greenlet.pxd":91 - * cdef readonly dict kwargs - * cdef readonly object spawning_greenlet - * cdef public dict spawn_tree_locals # <<<<<<<<<<<<<< - * - * # This is accessed with getattr() dynamically so it - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_17spawn_tree_locals_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_17spawn_tree_locals_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_17spawn_tree_locals___get__(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_17spawn_tree_locals___get__(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->spawn_tree_locals); - __pyx_r = __pyx_v_self->spawn_tree_locals; - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static int __pyx_pw_6gevent_9_greenlet_8Greenlet_17spawn_tree_locals_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_6gevent_9_greenlet_8Greenlet_17spawn_tree_locals_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_17spawn_tree_locals_2__set__(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self), ((PyObject *)__pyx_v_value)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_9_greenlet_8Greenlet_17spawn_tree_locals_2__set__(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__set__", 0); - if (!(likely(PyDict_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_value)->tp_name), 0))) __PYX_ERR(1, 91, __pyx_L1_error) - __pyx_t_1 = __pyx_v_value; - __Pyx_INCREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->spawn_tree_locals); - __Pyx_DECREF(__pyx_v_self->spawn_tree_locals); - __pyx_v_self->spawn_tree_locals = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._greenlet.Greenlet.spawn_tree_locals.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static int __pyx_pw_6gevent_9_greenlet_8Greenlet_17spawn_tree_locals_5__del__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_6gevent_9_greenlet_8Greenlet_17spawn_tree_locals_5__del__(PyObject *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_17spawn_tree_locals_4__del__(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_9_greenlet_8Greenlet_17spawn_tree_locals_4__del__(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__del__", 0); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->spawn_tree_locals); - __Pyx_DECREF(__pyx_v_self->spawn_tree_locals); - __pyx_v_self->spawn_tree_locals = ((PyObject*)Py_None); - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/_greenlet.pxd":95 - * # This is accessed with getattr() dynamically so it - * # must be visible to Python - * cdef readonly list _spawning_stack_frames # <<<<<<<<<<<<<< - * - * cdef list _links - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_22_spawning_stack_frames_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_9_greenlet_8Greenlet_22_spawning_stack_frames_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_8Greenlet_22_spawning_stack_frames___get__(((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_8Greenlet_22_spawning_stack_frames___get__(struct __pyx_obj_6gevent_9_greenlet_Greenlet *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->_spawning_stack_frames); - __pyx_r = __pyx_v_self->_spawning_stack_frames; - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":823 - * __slots__ = ('pending', 'active') - * - * def __init__(self): # <<<<<<<<<<<<<< - * self.pending = self.active = False - * - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_9_greenlet_12_dummy_event_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_9_greenlet_12_dummy_event_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;} - if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1; - __pyx_r = __pyx_pf_6gevent_9_greenlet_12_dummy_event___init__(((struct __pyx_obj_6gevent_9_greenlet__dummy_event *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_9_greenlet_12_dummy_event___init__(struct __pyx_obj_6gevent_9_greenlet__dummy_event *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__", 0); - - /* "src/gevent/greenlet.py":824 - * - * def __init__(self): - * self.pending = self.active = False # <<<<<<<<<<<<<< - * - * def stop(self): - */ - __pyx_v_self->pending = 0; - __pyx_v_self->active = 0; - - /* "src/gevent/greenlet.py":823 - * __slots__ = ('pending', 'active') - * - * def __init__(self): # <<<<<<<<<<<<<< - * self.pending = self.active = False - * - */ - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":826 - * self.pending = self.active = False - * - * def stop(self): # <<<<<<<<<<<<<< - * pass - * - */ - -static PyObject *__pyx_pw_6gevent_9_greenlet_12_dummy_event_3stop(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_f_6gevent_9_greenlet_12_dummy_event_stop(CYTHON_UNUSED struct __pyx_obj_6gevent_9_greenlet__dummy_event *__pyx_v_self, CYTHON_UNUSED int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("stop", 0); - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_12_dummy_event_3stop(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_9_greenlet_12_dummy_event_2stop[] = "_dummy_event.stop(self)"; -static PyMethodDef __pyx_mdef_6gevent_9_greenlet_12_dummy_event_3stop = {"stop", (PyCFunction)__pyx_pw_6gevent_9_greenlet_12_dummy_event_3stop, METH_NOARGS, __pyx_doc_6gevent_9_greenlet_12_dummy_event_2stop}; -static PyObject *__pyx_pw_6gevent_9_greenlet_12_dummy_event_3stop(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("stop (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_12_dummy_event_2stop(((struct __pyx_obj_6gevent_9_greenlet__dummy_event *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_12_dummy_event_2stop(struct __pyx_obj_6gevent_9_greenlet__dummy_event *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("stop", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_9_greenlet_12_dummy_event_stop(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 826, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._greenlet._dummy_event.stop", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":829 - * pass - * - * def start(self, cb): # pylint:disable=unused-argument # <<<<<<<<<<<<<< - * raise AssertionError("Cannot start the dummy event") - * - */ - -static PyObject *__pyx_pw_6gevent_9_greenlet_12_dummy_event_5start(PyObject *__pyx_v_self, PyObject *__pyx_v_cb); /*proto*/ -static PyObject *__pyx_f_6gevent_9_greenlet_12_dummy_event_start(CYTHON_UNUSED struct __pyx_obj_6gevent_9_greenlet__dummy_event *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_cb, CYTHON_UNUSED int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("start", 0); - - /* "src/gevent/greenlet.py":830 - * - * def start(self, cb): # pylint:disable=unused-argument - * raise AssertionError("Cannot start the dummy event") # <<<<<<<<<<<<<< - * - * def close(self): - */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_AssertionError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 830, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 830, __pyx_L1_error) - - /* "src/gevent/greenlet.py":829 - * pass - * - * def start(self, cb): # pylint:disable=unused-argument # <<<<<<<<<<<<<< - * raise AssertionError("Cannot start the dummy event") - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._greenlet._dummy_event.start", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_12_dummy_event_5start(PyObject *__pyx_v_self, PyObject *__pyx_v_cb); /*proto*/ -static char __pyx_doc_6gevent_9_greenlet_12_dummy_event_4start[] = "_dummy_event.start(self, cb)"; -static PyMethodDef __pyx_mdef_6gevent_9_greenlet_12_dummy_event_5start = {"start", (PyCFunction)__pyx_pw_6gevent_9_greenlet_12_dummy_event_5start, METH_O, __pyx_doc_6gevent_9_greenlet_12_dummy_event_4start}; -static PyObject *__pyx_pw_6gevent_9_greenlet_12_dummy_event_5start(PyObject *__pyx_v_self, PyObject *__pyx_v_cb) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("start (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_12_dummy_event_4start(((struct __pyx_obj_6gevent_9_greenlet__dummy_event *)__pyx_v_self), ((PyObject *)__pyx_v_cb)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_12_dummy_event_4start(struct __pyx_obj_6gevent_9_greenlet__dummy_event *__pyx_v_self, PyObject *__pyx_v_cb) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("start", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_9_greenlet_12_dummy_event_start(__pyx_v_self, __pyx_v_cb, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 829, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._greenlet._dummy_event.start", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":832 - * raise AssertionError("Cannot start the dummy event") - * - * def close(self): # <<<<<<<<<<<<<< - * pass - * - */ - -static PyObject *__pyx_pw_6gevent_9_greenlet_12_dummy_event_7close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_f_6gevent_9_greenlet_12_dummy_event_close(CYTHON_UNUSED struct __pyx_obj_6gevent_9_greenlet__dummy_event *__pyx_v_self, CYTHON_UNUSED int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("close", 0); - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_12_dummy_event_7close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_9_greenlet_12_dummy_event_6close[] = "_dummy_event.close(self)"; -static PyMethodDef __pyx_mdef_6gevent_9_greenlet_12_dummy_event_7close = {"close", (PyCFunction)__pyx_pw_6gevent_9_greenlet_12_dummy_event_7close, METH_NOARGS, __pyx_doc_6gevent_9_greenlet_12_dummy_event_6close}; -static PyObject *__pyx_pw_6gevent_9_greenlet_12_dummy_event_7close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("close (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_12_dummy_event_6close(((struct __pyx_obj_6gevent_9_greenlet__dummy_event *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_12_dummy_event_6close(struct __pyx_obj_6gevent_9_greenlet__dummy_event *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("close", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_9_greenlet_12_dummy_event_close(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 832, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._greenlet._dummy_event.close", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/_greenlet.pxd":158 - * @cython.internal - * cdef class _dummy_event: - * cdef readonly bint pending # <<<<<<<<<<<<<< - * cdef readonly bint active - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_12_dummy_event_7pending_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_9_greenlet_12_dummy_event_7pending_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_12_dummy_event_7pending___get__(((struct __pyx_obj_6gevent_9_greenlet__dummy_event *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_12_dummy_event_7pending___get__(struct __pyx_obj_6gevent_9_greenlet__dummy_event *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->pending); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 158, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._greenlet._dummy_event.pending.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/_greenlet.pxd":159 - * cdef class _dummy_event: - * cdef readonly bint pending - * cdef readonly bint active # <<<<<<<<<<<<<< - * - * cpdef stop(self) - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_12_dummy_event_6active_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_9_greenlet_12_dummy_event_6active_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_9_greenlet_12_dummy_event_6active___get__(((struct __pyx_obj_6gevent_9_greenlet__dummy_event *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_12_dummy_event_6active___get__(struct __pyx_obj_6gevent_9_greenlet__dummy_event *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->active); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 159, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._greenlet._dummy_event.active.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":839 - * - * - * def _kill(glet, exception, waiter): # <<<<<<<<<<<<<< - * try: - * glet.throw(exception) - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_1_kill(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_9_greenlet__kill[] = "_kill(glet, exception, waiter)"; -static PyMethodDef __pyx_mdef_6gevent_9_greenlet_1_kill = {"_kill", (PyCFunction)__pyx_pw_6gevent_9_greenlet_1_kill, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_9_greenlet__kill}; -static PyObject *__pyx_pw_6gevent_9_greenlet_1_kill(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_glet = 0; - PyObject *__pyx_v_exception = 0; - PyObject *__pyx_v_waiter = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_kill (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_glet,&__pyx_n_s_exception,&__pyx_n_s_waiter,0}; - PyObject* values[3] = {0,0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_glet)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_exception)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("_kill", 1, 3, 3, 1); __PYX_ERR(0, 839, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_waiter)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("_kill", 1, 3, 3, 2); __PYX_ERR(0, 839, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_kill") < 0)) __PYX_ERR(0, 839, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - } - __pyx_v_glet = values[0]; - __pyx_v_exception = values[1]; - __pyx_v_waiter = values[2]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("_kill", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 839, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._greenlet._kill", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_9_greenlet__kill(__pyx_self, __pyx_v_glet, __pyx_v_exception, __pyx_v_waiter); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet__kill(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_glet, PyObject *__pyx_v_exception, PyObject *__pyx_v_waiter) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - PyObject *__pyx_t_11 = NULL; - int __pyx_t_12; - int __pyx_t_13; - __Pyx_RefNannySetupContext("_kill", 0); - - /* "src/gevent/greenlet.py":840 - * - * def _kill(glet, exception, waiter): - * try: # <<<<<<<<<<<<<< - * glet.throw(exception) - * except: # pylint:disable=bare-except - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_t_3); - /*try:*/ { - - /* "src/gevent/greenlet.py":841 - * def _kill(glet, exception, waiter): - * try: - * glet.throw(exception) # <<<<<<<<<<<<<< - * except: # pylint:disable=bare-except - * # XXX do we need this here? - */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_glet, __pyx_n_s_throw); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 841, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - } - } - if (!__pyx_t_6) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_exception); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 841, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_4); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v_exception}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 841, __pyx_L3_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_4); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v_exception}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 841, __pyx_L3_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_4); - } else - #endif - { - __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 841, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL; - __Pyx_INCREF(__pyx_v_exception); - __Pyx_GIVEREF(__pyx_v_exception); - PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_exception); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 841, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - } - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "src/gevent/greenlet.py":840 - * - * def _kill(glet, exception, waiter): - * try: # <<<<<<<<<<<<<< - * glet.throw(exception) - * except: # pylint:disable=bare-except - */ - } - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L8_try_end; - __pyx_L3_error:; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "src/gevent/greenlet.py":842 - * try: - * glet.throw(exception) - * except: # pylint:disable=bare-except # <<<<<<<<<<<<<< - * # XXX do we need this here? - * glet.parent.handle_error(glet, *sys_exc_info()) - */ - /*except:*/ { - __Pyx_AddTraceback("gevent._greenlet._kill", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_7) < 0) __PYX_ERR(0, 842, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GOTREF(__pyx_t_7); - - /* "src/gevent/greenlet.py":844 - * except: # pylint:disable=bare-except - * # XXX do we need this here? - * glet.parent.handle_error(glet, *sys_exc_info()) # <<<<<<<<<<<<<< - * if waiter is not None: - * waiter.switch(None) - */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_glet, __pyx_n_s_parent); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 844, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_handle_error); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 844, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 844, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_INCREF(__pyx_v_glet); - __Pyx_GIVEREF(__pyx_v_glet); - PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_glet); - __Pyx_INCREF(__pyx_v_6gevent_9_greenlet_sys_exc_info); - __pyx_t_10 = __pyx_v_6gevent_9_greenlet_sys_exc_info; __pyx_t_11 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) { - __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10); - if (likely(__pyx_t_11)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); - __Pyx_INCREF(__pyx_t_11); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_10, function); - } - } - if (__pyx_t_11) { - __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 844, __pyx_L5_except_error) - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - } else { - __pyx_t_9 = __Pyx_PyObject_CallNoArg(__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 844, __pyx_L5_except_error) - } - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __pyx_t_10 = __Pyx_PySequence_Tuple(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 844, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_10); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = PyNumber_Add(__pyx_t_6, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 844, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_9, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 844, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_10); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - goto __pyx_L4_exception_handled; - } - __pyx_L5_except_error:; - - /* "src/gevent/greenlet.py":840 - * - * def _kill(glet, exception, waiter): - * try: # <<<<<<<<<<<<<< - * glet.throw(exception) - * except: # pylint:disable=bare-except - */ - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - goto __pyx_L1_error; - __pyx_L4_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - __pyx_L8_try_end:; - } - - /* "src/gevent/greenlet.py":845 - * # XXX do we need this here? - * glet.parent.handle_error(glet, *sys_exc_info()) - * if waiter is not None: # <<<<<<<<<<<<<< - * waiter.switch(None) - * - */ - __pyx_t_12 = (__pyx_v_waiter != Py_None); - __pyx_t_13 = (__pyx_t_12 != 0); - if (__pyx_t_13) { - - /* "src/gevent/greenlet.py":846 - * glet.parent.handle_error(glet, *sys_exc_info()) - * if waiter is not None: - * waiter.switch(None) # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_waiter, __pyx_n_s_switch); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 846, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 846, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - - /* "src/gevent/greenlet.py":845 - * # XXX do we need this here? - * glet.parent.handle_error(glet, *sys_exc_info()) - * if waiter is not None: # <<<<<<<<<<<<<< - * waiter.switch(None) - * - */ - } - - /* "src/gevent/greenlet.py":839 - * - * - * def _kill(glet, exception, waiter): # <<<<<<<<<<<<<< - * try: - * glet.throw(exception) - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_XDECREF(__pyx_t_9); - __Pyx_XDECREF(__pyx_t_10); - __Pyx_XDECREF(__pyx_t_11); - __Pyx_AddTraceback("gevent._greenlet._kill", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":849 - * - * - * def joinall(greenlets, timeout=None, raise_error=False, count=None): # <<<<<<<<<<<<<< - * """ - * Wait for the ``greenlets`` to finish. - */ - -static PyObject *__pyx_pw_6gevent_9_greenlet_3joinall(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_f_6gevent_9_greenlet_joinall(PyObject *__pyx_v_greenlets, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_9_greenlet_joinall *__pyx_optional_args) { - PyObject *__pyx_v_timeout = ((PyObject *)Py_None); - PyObject *__pyx_v_raise_error = ((PyObject *)Py_False); - PyObject *__pyx_v_count = ((PyObject *)Py_None); - PyObject *__pyx_v_done = 0; - PyObject *__pyx_v_obj = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - Py_ssize_t __pyx_t_6; - PyObject *(*__pyx_t_7)(PyObject *); - PyObject *__pyx_t_8 = NULL; - int __pyx_t_9; - __Pyx_RefNannySetupContext("joinall", 0); - if (__pyx_optional_args) { - if (__pyx_optional_args->__pyx_n > 0) { - __pyx_v_timeout = __pyx_optional_args->timeout; - if (__pyx_optional_args->__pyx_n > 1) { - __pyx_v_raise_error = __pyx_optional_args->raise_error; - if (__pyx_optional_args->__pyx_n > 2) { - __pyx_v_count = __pyx_optional_args->count; - } - } - } - } - - /* "src/gevent/greenlet.py":858 - * expired. - * """ - * if not raise_error: # <<<<<<<<<<<<<< - * return wait(greenlets, timeout=timeout, count=count) - * - */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_raise_error); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 858, __pyx_L1_error) - __pyx_t_2 = ((!__pyx_t_1) != 0); - if (__pyx_t_2) { - - /* "src/gevent/greenlet.py":859 - * """ - * if not raise_error: - * return wait(greenlets, timeout=timeout, count=count) # <<<<<<<<<<<<<< - * - * done = [] - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 859, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_INCREF(__pyx_v_greenlets); - __Pyx_GIVEREF(__pyx_v_greenlets); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_greenlets); - __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 859, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_timeout, __pyx_v_timeout) < 0) __PYX_ERR(0, 859, __pyx_L1_error) - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_count, __pyx_v_count) < 0) __PYX_ERR(0, 859, __pyx_L1_error) - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_6gevent_9_greenlet_wait, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 859, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_r = __pyx_t_5; - __pyx_t_5 = 0; - goto __pyx_L0; - - /* "src/gevent/greenlet.py":858 - * expired. - * """ - * if not raise_error: # <<<<<<<<<<<<<< - * return wait(greenlets, timeout=timeout, count=count) - * - */ - } - - /* "src/gevent/greenlet.py":861 - * return wait(greenlets, timeout=timeout, count=count) - * - * done = [] # <<<<<<<<<<<<<< - * for obj in iwait(greenlets, timeout=timeout, count=count): - * if getattr(obj, 'exception', None) is not None: - */ - __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 861, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_v_done = ((PyObject*)__pyx_t_5); - __pyx_t_5 = 0; - - /* "src/gevent/greenlet.py":862 - * - * done = [] - * for obj in iwait(greenlets, timeout=timeout, count=count): # <<<<<<<<<<<<<< - * if getattr(obj, 'exception', None) is not None: - * if hasattr(obj, '_raise_exception'): - */ - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 862, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_INCREF(__pyx_v_greenlets); - __Pyx_GIVEREF(__pyx_v_greenlets); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_greenlets); - __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 862, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_timeout, __pyx_v_timeout) < 0) __PYX_ERR(0, 862, __pyx_L1_error) - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_count, __pyx_v_count) < 0) __PYX_ERR(0, 862, __pyx_L1_error) - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_v_6gevent_9_greenlet_iwait, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 862, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { - __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); __pyx_t_6 = 0; - __pyx_t_7 = NULL; - } else { - __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 862, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_7 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 862, __pyx_L1_error) - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - for (;;) { - if (likely(!__pyx_t_7)) { - if (likely(PyList_CheckExact(__pyx_t_4))) { - if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_4)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 862, __pyx_L1_error) - #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 862, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - #endif - } else { - if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_4)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 862, __pyx_L1_error) - #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 862, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - #endif - } - } else { - __pyx_t_3 = __pyx_t_7(__pyx_t_4); - if (unlikely(!__pyx_t_3)) { - PyObject* exc_type = PyErr_Occurred(); - if (exc_type) { - if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 862, __pyx_L1_error) - } - break; - } - __Pyx_GOTREF(__pyx_t_3); - } - __Pyx_XDECREF_SET(__pyx_v_obj, __pyx_t_3); - __pyx_t_3 = 0; - - /* "src/gevent/greenlet.py":863 - * done = [] - * for obj in iwait(greenlets, timeout=timeout, count=count): - * if getattr(obj, 'exception', None) is not None: # <<<<<<<<<<<<<< - * if hasattr(obj, '_raise_exception'): - * obj._raise_exception() - */ - __pyx_t_3 = __Pyx_GetAttr3(__pyx_v_obj, __pyx_n_s_exception, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 863, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = (__pyx_t_3 != Py_None); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_1 = (__pyx_t_2 != 0); - if (__pyx_t_1) { - - /* "src/gevent/greenlet.py":864 - * for obj in iwait(greenlets, timeout=timeout, count=count): - * if getattr(obj, 'exception', None) is not None: - * if hasattr(obj, '_raise_exception'): # <<<<<<<<<<<<<< - * obj._raise_exception() - * else: - */ - __pyx_t_1 = __Pyx_HasAttr(__pyx_v_obj, __pyx_n_s_raise_exception); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 864, __pyx_L1_error) - __pyx_t_2 = (__pyx_t_1 != 0); - if (likely(__pyx_t_2)) { - - /* "src/gevent/greenlet.py":865 - * if getattr(obj, 'exception', None) is not None: - * if hasattr(obj, '_raise_exception'): - * obj._raise_exception() # <<<<<<<<<<<<<< - * else: - * raise obj.exception - */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_raise_exception); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 865, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_8 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_8)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_8); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - } - } - if (__pyx_t_8) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 865, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 865, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "src/gevent/greenlet.py":864 - * for obj in iwait(greenlets, timeout=timeout, count=count): - * if getattr(obj, 'exception', None) is not None: - * if hasattr(obj, '_raise_exception'): # <<<<<<<<<<<<<< - * obj._raise_exception() - * else: - */ - goto __pyx_L7; - } - - /* "src/gevent/greenlet.py":867 - * obj._raise_exception() - * else: - * raise obj.exception # <<<<<<<<<<<<<< - * done.append(obj) - * return done - */ - /*else*/ { - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_exception); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 867, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 867, __pyx_L1_error) - } - __pyx_L7:; - - /* "src/gevent/greenlet.py":863 - * done = [] - * for obj in iwait(greenlets, timeout=timeout, count=count): - * if getattr(obj, 'exception', None) is not None: # <<<<<<<<<<<<<< - * if hasattr(obj, '_raise_exception'): - * obj._raise_exception() - */ - } - - /* "src/gevent/greenlet.py":868 - * else: - * raise obj.exception - * done.append(obj) # <<<<<<<<<<<<<< - * return done - * - */ - __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_done, __pyx_v_obj); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 868, __pyx_L1_error) - - /* "src/gevent/greenlet.py":862 - * - * done = [] - * for obj in iwait(greenlets, timeout=timeout, count=count): # <<<<<<<<<<<<<< - * if getattr(obj, 'exception', None) is not None: - * if hasattr(obj, '_raise_exception'): - */ - } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "src/gevent/greenlet.py":869 - * raise obj.exception - * done.append(obj) - * return done # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_done); - __pyx_r = __pyx_v_done; - goto __pyx_L0; - - /* "src/gevent/greenlet.py":849 - * - * - * def joinall(greenlets, timeout=None, raise_error=False, count=None): # <<<<<<<<<<<<<< - * """ - * Wait for the ``greenlets`` to finish. - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_AddTraceback("gevent._greenlet.joinall", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_done); - __Pyx_XDECREF(__pyx_v_obj); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_3joinall(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_9_greenlet_2joinall[] = "joinall(greenlets, timeout=None, raise_error=False, count=None)\n\n Wait for the ``greenlets`` to finish.\n\n :param greenlets: A sequence (supporting :func:`len`) of greenlets to wait for.\n :keyword float timeout: If given, the maximum number of seconds to wait.\n :return: A sequence of the greenlets that finished before the timeout (if any)\n expired.\n "; -static PyMethodDef __pyx_mdef_6gevent_9_greenlet_3joinall = {"joinall", (PyCFunction)__pyx_pw_6gevent_9_greenlet_3joinall, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_9_greenlet_2joinall}; -static PyObject *__pyx_pw_6gevent_9_greenlet_3joinall(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_greenlets = 0; - PyObject *__pyx_v_timeout = 0; - PyObject *__pyx_v_raise_error = 0; - PyObject *__pyx_v_count = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("joinall (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_greenlets,&__pyx_n_s_timeout,&__pyx_n_s_raise_error,&__pyx_n_s_count,0}; - PyObject* values[4] = {0,0,0,0}; - values[1] = ((PyObject *)Py_None); - values[2] = ((PyObject *)Py_False); - values[3] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_greenlets)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeout); - if (value) { values[1] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_raise_error); - if (value) { values[2] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 3: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_count); - if (value) { values[3] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "joinall") < 0)) __PYX_ERR(0, 849, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_greenlets = values[0]; - __pyx_v_timeout = values[1]; - __pyx_v_raise_error = values[2]; - __pyx_v_count = values[3]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("joinall", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 849, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._greenlet.joinall", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_9_greenlet_2joinall(__pyx_self, __pyx_v_greenlets, __pyx_v_timeout, __pyx_v_raise_error, __pyx_v_count); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_2joinall(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_greenlets, PyObject *__pyx_v_timeout, PyObject *__pyx_v_raise_error, PyObject *__pyx_v_count) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - struct __pyx_opt_args_6gevent_9_greenlet_joinall __pyx_t_2; - __Pyx_RefNannySetupContext("joinall", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_2.__pyx_n = 3; - __pyx_t_2.timeout = __pyx_v_timeout; - __pyx_t_2.raise_error = __pyx_v_raise_error; - __pyx_t_2.count = __pyx_v_count; - __pyx_t_1 = __pyx_f_6gevent_9_greenlet_joinall(__pyx_v_greenlets, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 849, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._greenlet.joinall", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":872 - * - * - * def _killall3(greenlets, exception, waiter): # <<<<<<<<<<<<<< - * diehards = [] - * for g in greenlets: - */ - -static PyObject *__pyx_f_6gevent_9_greenlet__killall3(PyObject *__pyx_v_greenlets, PyObject *__pyx_v_exception, PyObject *__pyx_v_waiter) { - PyObject *__pyx_v_diehards = 0; - PyObject *__pyx_v_g = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - Py_ssize_t __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - int __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - PyObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; - PyObject *__pyx_t_13 = NULL; - PyObject *__pyx_t_14 = NULL; - PyObject *__pyx_t_15 = NULL; - int __pyx_t_16; - __Pyx_RefNannySetupContext("_killall3", 0); - - /* "src/gevent/greenlet.py":873 - * - * def _killall3(greenlets, exception, waiter): - * diehards = [] # <<<<<<<<<<<<<< - * for g in greenlets: - * if not g.dead: - */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 873, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_diehards = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":874 - * def _killall3(greenlets, exception, waiter): - * diehards = [] - * for g in greenlets: # <<<<<<<<<<<<<< - * if not g.dead: - * try: - */ - if (unlikely(__pyx_v_greenlets == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 874, __pyx_L1_error) - } - __pyx_t_1 = __pyx_v_greenlets; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; - for (;;) { - if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 874, __pyx_L1_error) - #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 874, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - #endif - __Pyx_XDECREF_SET(__pyx_v_g, __pyx_t_3); - __pyx_t_3 = 0; - - /* "src/gevent/greenlet.py":875 - * diehards = [] - * for g in greenlets: - * if not g.dead: # <<<<<<<<<<<<<< - * try: - * g.throw(exception) - */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_g, __pyx_n_s_dead); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 875, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 875, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = ((!__pyx_t_4) != 0); - if (__pyx_t_5) { - - /* "src/gevent/greenlet.py":876 - * for g in greenlets: - * if not g.dead: - * try: # <<<<<<<<<<<<<< - * g.throw(exception) - * except: # pylint:disable=bare-except - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8); - __Pyx_XGOTREF(__pyx_t_6); - __Pyx_XGOTREF(__pyx_t_7); - __Pyx_XGOTREF(__pyx_t_8); - /*try:*/ { - - /* "src/gevent/greenlet.py":877 - * if not g.dead: - * try: - * g.throw(exception) # <<<<<<<<<<<<<< - * except: # pylint:disable=bare-except - * g.parent.handle_error(g, *sys_exc_info()) - */ - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_g, __pyx_n_s_throw); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 877, __pyx_L6_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_10 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { - __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9); - if (likely(__pyx_t_10)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); - __Pyx_INCREF(__pyx_t_10); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_9, function); - } - } - if (!__pyx_t_10) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_exception); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 877, __pyx_L6_error) - __Pyx_GOTREF(__pyx_t_3); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_9)) { - PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_v_exception}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 877, __pyx_L6_error) - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_GOTREF(__pyx_t_3); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) { - PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_v_exception}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 877, __pyx_L6_error) - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_GOTREF(__pyx_t_3); - } else - #endif - { - __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 877, __pyx_L6_error) - __Pyx_GOTREF(__pyx_t_11); - __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10); __pyx_t_10 = NULL; - __Pyx_INCREF(__pyx_v_exception); - __Pyx_GIVEREF(__pyx_v_exception); - PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_v_exception); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 877, __pyx_L6_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - } - } - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "src/gevent/greenlet.py":876 - * for g in greenlets: - * if not g.dead: - * try: # <<<<<<<<<<<<<< - * g.throw(exception) - * except: # pylint:disable=bare-except - */ - } - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - goto __pyx_L13_try_end; - __pyx_L6_error:; - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "src/gevent/greenlet.py":878 - * try: - * g.throw(exception) - * except: # pylint:disable=bare-except # <<<<<<<<<<<<<< - * g.parent.handle_error(g, *sys_exc_info()) - * if not g.dead: - */ - /*except:*/ { - __Pyx_AddTraceback("gevent._greenlet._killall3", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_9, &__pyx_t_11) < 0) __PYX_ERR(0, 878, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GOTREF(__pyx_t_9); - __Pyx_GOTREF(__pyx_t_11); - - /* "src/gevent/greenlet.py":879 - * g.throw(exception) - * except: # pylint:disable=bare-except - * g.parent.handle_error(g, *sys_exc_info()) # <<<<<<<<<<<<<< - * if not g.dead: - * diehards.append(g) - */ - __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_g, __pyx_n_s_parent); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 879, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_10); - __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_handle_error); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 879, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_12); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 879, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_10); - __Pyx_INCREF(__pyx_v_g); - __Pyx_GIVEREF(__pyx_v_g); - PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_g); - __Pyx_INCREF(__pyx_v_6gevent_9_greenlet_sys_exc_info); - __pyx_t_14 = __pyx_v_6gevent_9_greenlet_sys_exc_info; __pyx_t_15 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_14))) { - __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_14); - if (likely(__pyx_t_15)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14); - __Pyx_INCREF(__pyx_t_15); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_14, function); - } - } - if (__pyx_t_15) { - __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_15); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 879, __pyx_L8_except_error) - __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; - } else { - __pyx_t_13 = __Pyx_PyObject_CallNoArg(__pyx_t_14); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 879, __pyx_L8_except_error) - } - __Pyx_GOTREF(__pyx_t_13); - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_t_14 = __Pyx_PySequence_Tuple(__pyx_t_13); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 879, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_14); - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - __pyx_t_13 = PyNumber_Add(__pyx_t_10, __pyx_t_14); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 879, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_13); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_13, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 879, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_14); - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - goto __pyx_L7_exception_handled; - } - __pyx_L8_except_error:; - - /* "src/gevent/greenlet.py":876 - * for g in greenlets: - * if not g.dead: - * try: # <<<<<<<<<<<<<< - * g.throw(exception) - * except: # pylint:disable=bare-except - */ - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); - goto __pyx_L1_error; - __pyx_L7_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); - __pyx_L13_try_end:; - } - - /* "src/gevent/greenlet.py":880 - * except: # pylint:disable=bare-except - * g.parent.handle_error(g, *sys_exc_info()) - * if not g.dead: # <<<<<<<<<<<<<< - * diehards.append(g) - * waiter.switch(diehards) - */ - __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_g, __pyx_n_s_dead); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 880, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_11); - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 880, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_4 = ((!__pyx_t_5) != 0); - if (__pyx_t_4) { - - /* "src/gevent/greenlet.py":881 - * g.parent.handle_error(g, *sys_exc_info()) - * if not g.dead: - * diehards.append(g) # <<<<<<<<<<<<<< - * waiter.switch(diehards) - * - */ - __pyx_t_16 = __Pyx_PyList_Append(__pyx_v_diehards, __pyx_v_g); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 881, __pyx_L1_error) - - /* "src/gevent/greenlet.py":880 - * except: # pylint:disable=bare-except - * g.parent.handle_error(g, *sys_exc_info()) - * if not g.dead: # <<<<<<<<<<<<<< - * diehards.append(g) - * waiter.switch(diehards) - */ - } - - /* "src/gevent/greenlet.py":875 - * diehards = [] - * for g in greenlets: - * if not g.dead: # <<<<<<<<<<<<<< - * try: - * g.throw(exception) - */ - } - - /* "src/gevent/greenlet.py":874 - * def _killall3(greenlets, exception, waiter): - * diehards = [] - * for g in greenlets: # <<<<<<<<<<<<<< - * if not g.dead: - * try: - */ - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":882 - * if not g.dead: - * diehards.append(g) - * waiter.switch(diehards) # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_waiter, __pyx_n_s_switch); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 882, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_11); - __pyx_t_9 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) { - __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_11); - if (likely(__pyx_t_9)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); - __Pyx_INCREF(__pyx_t_9); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_11, function); - } - } - if (!__pyx_t_9) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_v_diehards); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 882, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_11)) { - PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_v_diehards}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 882, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) { - PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_v_diehards}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 882, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 882, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_9); __pyx_t_9 = NULL; - __Pyx_INCREF(__pyx_v_diehards); - __Pyx_GIVEREF(__pyx_v_diehards); - PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_diehards); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 882, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - } - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":872 - * - * - * def _killall3(greenlets, exception, waiter): # <<<<<<<<<<<<<< - * diehards = [] - * for g in greenlets: - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_9); - __Pyx_XDECREF(__pyx_t_10); - __Pyx_XDECREF(__pyx_t_11); - __Pyx_XDECREF(__pyx_t_12); - __Pyx_XDECREF(__pyx_t_13); - __Pyx_XDECREF(__pyx_t_14); - __Pyx_XDECREF(__pyx_t_15); - __Pyx_AddTraceback("gevent._greenlet._killall3", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_diehards); - __Pyx_XDECREF(__pyx_v_g); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":885 - * - * - * def _killall(greenlets, exception): # <<<<<<<<<<<<<< - * for g in greenlets: - * if not g.dead: - */ - -static PyObject *__pyx_f_6gevent_9_greenlet__killall(PyObject *__pyx_v_greenlets, PyObject *__pyx_v_exception) { - PyObject *__pyx_v_g = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - Py_ssize_t __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - int __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - PyObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; - PyObject *__pyx_t_13 = NULL; - PyObject *__pyx_t_14 = NULL; - PyObject *__pyx_t_15 = NULL; - __Pyx_RefNannySetupContext("_killall", 0); - - /* "src/gevent/greenlet.py":886 - * - * def _killall(greenlets, exception): - * for g in greenlets: # <<<<<<<<<<<<<< - * if not g.dead: - * try: - */ - if (unlikely(__pyx_v_greenlets == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 886, __pyx_L1_error) - } - __pyx_t_1 = __pyx_v_greenlets; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; - for (;;) { - if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 886, __pyx_L1_error) - #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 886, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - #endif - __Pyx_XDECREF_SET(__pyx_v_g, __pyx_t_3); - __pyx_t_3 = 0; - - /* "src/gevent/greenlet.py":887 - * def _killall(greenlets, exception): - * for g in greenlets: - * if not g.dead: # <<<<<<<<<<<<<< - * try: - * g.throw(exception) - */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_g, __pyx_n_s_dead); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 887, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 887, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = ((!__pyx_t_4) != 0); - if (__pyx_t_5) { - - /* "src/gevent/greenlet.py":888 - * for g in greenlets: - * if not g.dead: - * try: # <<<<<<<<<<<<<< - * g.throw(exception) - * except: # pylint:disable=bare-except - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8); - __Pyx_XGOTREF(__pyx_t_6); - __Pyx_XGOTREF(__pyx_t_7); - __Pyx_XGOTREF(__pyx_t_8); - /*try:*/ { - - /* "src/gevent/greenlet.py":889 - * if not g.dead: - * try: - * g.throw(exception) # <<<<<<<<<<<<<< - * except: # pylint:disable=bare-except - * g.parent.handle_error(g, *sys_exc_info()) - */ - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_g, __pyx_n_s_throw); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 889, __pyx_L6_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_10 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { - __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9); - if (likely(__pyx_t_10)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); - __Pyx_INCREF(__pyx_t_10); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_9, function); - } - } - if (!__pyx_t_10) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_exception); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 889, __pyx_L6_error) - __Pyx_GOTREF(__pyx_t_3); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_9)) { - PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_v_exception}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 889, __pyx_L6_error) - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_GOTREF(__pyx_t_3); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) { - PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_v_exception}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 889, __pyx_L6_error) - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_GOTREF(__pyx_t_3); - } else - #endif - { - __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 889, __pyx_L6_error) - __Pyx_GOTREF(__pyx_t_11); - __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10); __pyx_t_10 = NULL; - __Pyx_INCREF(__pyx_v_exception); - __Pyx_GIVEREF(__pyx_v_exception); - PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_v_exception); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 889, __pyx_L6_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - } - } - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "src/gevent/greenlet.py":888 - * for g in greenlets: - * if not g.dead: - * try: # <<<<<<<<<<<<<< - * g.throw(exception) - * except: # pylint:disable=bare-except - */ - } - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - goto __pyx_L13_try_end; - __pyx_L6_error:; - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "src/gevent/greenlet.py":890 - * try: - * g.throw(exception) - * except: # pylint:disable=bare-except # <<<<<<<<<<<<<< - * g.parent.handle_error(g, *sys_exc_info()) - * - */ - /*except:*/ { - __Pyx_AddTraceback("gevent._greenlet._killall", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_9, &__pyx_t_11) < 0) __PYX_ERR(0, 890, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GOTREF(__pyx_t_9); - __Pyx_GOTREF(__pyx_t_11); - - /* "src/gevent/greenlet.py":891 - * g.throw(exception) - * except: # pylint:disable=bare-except - * g.parent.handle_error(g, *sys_exc_info()) # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_g, __pyx_n_s_parent); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 891, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_10); - __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_handle_error); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 891, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_12); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 891, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_10); - __Pyx_INCREF(__pyx_v_g); - __Pyx_GIVEREF(__pyx_v_g); - PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_g); - __Pyx_INCREF(__pyx_v_6gevent_9_greenlet_sys_exc_info); - __pyx_t_14 = __pyx_v_6gevent_9_greenlet_sys_exc_info; __pyx_t_15 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_14))) { - __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_14); - if (likely(__pyx_t_15)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14); - __Pyx_INCREF(__pyx_t_15); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_14, function); - } - } - if (__pyx_t_15) { - __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_15); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 891, __pyx_L8_except_error) - __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; - } else { - __pyx_t_13 = __Pyx_PyObject_CallNoArg(__pyx_t_14); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 891, __pyx_L8_except_error) - } - __Pyx_GOTREF(__pyx_t_13); - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_t_14 = __Pyx_PySequence_Tuple(__pyx_t_13); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 891, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_14); - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - __pyx_t_13 = PyNumber_Add(__pyx_t_10, __pyx_t_14); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 891, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_13); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_13, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 891, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_14); - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - goto __pyx_L7_exception_handled; - } - __pyx_L8_except_error:; - - /* "src/gevent/greenlet.py":888 - * for g in greenlets: - * if not g.dead: - * try: # <<<<<<<<<<<<<< - * g.throw(exception) - * except: # pylint:disable=bare-except - */ - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); - goto __pyx_L1_error; - __pyx_L7_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); - __pyx_L13_try_end:; - } - - /* "src/gevent/greenlet.py":887 - * def _killall(greenlets, exception): - * for g in greenlets: - * if not g.dead: # <<<<<<<<<<<<<< - * try: - * g.throw(exception) - */ - } - - /* "src/gevent/greenlet.py":886 - * - * def _killall(greenlets, exception): - * for g in greenlets: # <<<<<<<<<<<<<< - * if not g.dead: - * try: - */ - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":885 - * - * - * def _killall(greenlets, exception): # <<<<<<<<<<<<<< - * for g in greenlets: - * if not g.dead: - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_9); - __Pyx_XDECREF(__pyx_t_10); - __Pyx_XDECREF(__pyx_t_11); - __Pyx_XDECREF(__pyx_t_12); - __Pyx_XDECREF(__pyx_t_13); - __Pyx_XDECREF(__pyx_t_14); - __Pyx_XDECREF(__pyx_t_15); - __Pyx_AddTraceback("gevent._greenlet._killall", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_g); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":894 - * - * - * def killall(greenlets, exception=GreenletExit, block=True, timeout=None): # <<<<<<<<<<<<<< - * """ - * Forceably terminate all the ``greenlets`` by causing them to raise ``exception``. - */ - -static PyObject *__pyx_pf_6gevent_9_greenlet_7__defaults__(CYTHON_UNUSED PyObject *__pyx_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("__defaults__", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 894, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_exception); - __Pyx_GIVEREF(__Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_exception); - PyTuple_SET_ITEM(__pyx_t_1, 0, __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_exception); - __Pyx_INCREF(((PyObject *)Py_True)); - __Pyx_GIVEREF(((PyObject *)Py_True)); - PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)Py_True)); - __Pyx_INCREF(((PyObject *)Py_None)); - __Pyx_GIVEREF(((PyObject *)Py_None)); - PyTuple_SET_ITEM(__pyx_t_1, 2, ((PyObject *)Py_None)); - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 894, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - PyTuple_SET_ITEM(__pyx_t_2, 1, Py_None); - __pyx_t_1 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent._greenlet.__defaults__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_9_greenlet_5killall(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_9_greenlet_4killall[] = "killall(greenlets, exception=GreenletExit, block=True, timeout=None)\n\n Forceably terminate all the ``greenlets`` by causing them to raise ``exception``.\n\n .. caution:: Use care when killing greenlets. If they are not prepared for exceptions,\n this could result in corrupted state.\n\n :param greenlets: A **bounded** iterable of the non-None greenlets to terminate.\n *All* the items in this iterable must be greenlets that belong to the same thread.\n :keyword exception: The exception to raise in the greenlets. By default this is\n :class:`GreenletExit`.\n :keyword bool block: If True (the default) then this function only returns when all the\n greenlets are dead; the current greenlet is unscheduled during that process.\n If greenlets ignore the initial exception raised in them,\n then they will be joined (with :func:`gevent.joinall`) and allowed to die naturally.\n If False, this function returns immediately and greenlets will raise\n the exception asynchronously.\n :keyword float timeout: A time in seconds to wait for greenlets to die. If given, it is\n only honored when ``block`` is True.\n :raise Timeout: If blocking and a timeout is given that elapses before\n all the greenlets are dead.\n\n .. versionchanged:: 1.1a2\n *greenlets* can be any iterable of greenlets, like an iterator or a set.\n Previously it had to be a list or tuple.\n "; -static PyMethodDef __pyx_mdef_6gevent_9_greenlet_5killall = {"killall", (PyCFunction)__pyx_pw_6gevent_9_greenlet_5killall, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_9_greenlet_4killall}; -static PyObject *__pyx_pw_6gevent_9_greenlet_5killall(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_greenlets = 0; - PyObject *__pyx_v_exception = 0; - PyObject *__pyx_v_block = 0; - PyObject *__pyx_v_timeout = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("killall (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_greenlets,&__pyx_n_s_exception,&__pyx_n_s_block,&__pyx_n_s_timeout,0}; - PyObject* values[4] = {0,0,0,0}; - __pyx_defaults *__pyx_dynamic_args = __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self); - values[1] = __pyx_dynamic_args->__pyx_arg_exception; - values[2] = ((PyObject *)((PyObject *)Py_True)); - values[3] = ((PyObject *)((PyObject *)Py_None)); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_greenlets)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_exception); - if (value) { values[1] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_block); - if (value) { values[2] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 3: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeout); - if (value) { values[3] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "killall") < 0)) __PYX_ERR(0, 894, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_greenlets = values[0]; - __pyx_v_exception = values[1]; - __pyx_v_block = values[2]; - __pyx_v_timeout = values[3]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("killall", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 894, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._greenlet.killall", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_9_greenlet_4killall(__pyx_self, __pyx_v_greenlets, __pyx_v_exception, __pyx_v_block, __pyx_v_timeout); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_9_greenlet_4killall(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_greenlets, PyObject *__pyx_v_exception, PyObject *__pyx_v_block, PyObject *__pyx_v_timeout) { - PyObject *__pyx_v_loop = NULL; - struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_waiter = NULL; - PyObject *__pyx_v_t = NULL; - PyObject *__pyx_v_alive = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - int __pyx_t_7; - PyObject *__pyx_t_8 = NULL; - int __pyx_t_9; - char const *__pyx_t_10; - PyObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; - PyObject *__pyx_t_13 = NULL; - PyObject *__pyx_t_14 = NULL; - PyObject *__pyx_t_15 = NULL; - PyObject *__pyx_t_16 = NULL; - __Pyx_RefNannySetupContext("killall", 0); - __Pyx_INCREF(__pyx_v_greenlets); - - /* "src/gevent/greenlet.py":921 - * """ - * # support non-indexable containers like iterators or set objects - * greenlets = list(greenlets) # <<<<<<<<<<<<<< - * if not greenlets: - * return - */ - __pyx_t_1 = PySequence_List(__pyx_v_greenlets); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 921, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF_SET(__pyx_v_greenlets, __pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":922 - * # support non-indexable containers like iterators or set objects - * greenlets = list(greenlets) - * if not greenlets: # <<<<<<<<<<<<<< - * return - * loop = greenlets[0].loop - */ - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_greenlets); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 922, __pyx_L1_error) - __pyx_t_3 = ((!__pyx_t_2) != 0); - if (__pyx_t_3) { - - /* "src/gevent/greenlet.py":923 - * greenlets = list(greenlets) - * if not greenlets: - * return # <<<<<<<<<<<<<< - * loop = greenlets[0].loop - * if block: - */ - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - /* "src/gevent/greenlet.py":922 - * # support non-indexable containers like iterators or set objects - * greenlets = list(greenlets) - * if not greenlets: # <<<<<<<<<<<<<< - * return - * loop = greenlets[0].loop - */ - } - - /* "src/gevent/greenlet.py":924 - * if not greenlets: - * return - * loop = greenlets[0].loop # <<<<<<<<<<<<<< - * if block: - * waiter = Waiter() # pylint:disable=undefined-variable - */ - __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_greenlets, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 924, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_loop); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 924, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_loop = __pyx_t_4; - __pyx_t_4 = 0; - - /* "src/gevent/greenlet.py":925 - * return - * loop = greenlets[0].loop - * if block: # <<<<<<<<<<<<<< - * waiter = Waiter() # pylint:disable=undefined-variable - * loop.run_callback(_killall3, greenlets, exception, waiter) - */ - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_block); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 925, __pyx_L1_error) - if (__pyx_t_3) { - - /* "src/gevent/greenlet.py":926 - * loop = greenlets[0].loop - * if block: - * waiter = Waiter() # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * loop.run_callback(_killall3, greenlets, exception, waiter) - * t = Timeout._start_new_or_dummy(timeout) - */ - __pyx_t_4 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_6gevent_8__waiter_Waiter)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 926, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_v_waiter = ((struct __pyx_obj_6gevent_8__waiter_Waiter *)__pyx_t_4); - __pyx_t_4 = 0; - - /* "src/gevent/greenlet.py":927 - * if block: - * waiter = Waiter() # pylint:disable=undefined-variable - * loop.run_callback(_killall3, greenlets, exception, waiter) # <<<<<<<<<<<<<< - * t = Timeout._start_new_or_dummy(timeout) - * try: - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_loop, __pyx_n_s_run_callback); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 927, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = __Pyx_CFunc_object____list____object____object___to_py(__pyx_f_6gevent_9_greenlet__killall3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 927, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = NULL; - __pyx_t_7 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_7 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_1)) { - PyObject *__pyx_temp[5] = {__pyx_t_6, __pyx_t_5, __pyx_v_greenlets, __pyx_v_exception, ((PyObject *)__pyx_v_waiter)}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 4+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 927, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { - PyObject *__pyx_temp[5] = {__pyx_t_6, __pyx_t_5, __pyx_v_greenlets, __pyx_v_exception, ((PyObject *)__pyx_v_waiter)}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 4+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 927, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else - #endif - { - __pyx_t_8 = PyTuple_New(4+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 927, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - if (__pyx_t_6) { - __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; - } - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_5); - __Pyx_INCREF(__pyx_v_greenlets); - __Pyx_GIVEREF(__pyx_v_greenlets); - PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_greenlets); - __Pyx_INCREF(__pyx_v_exception); - __Pyx_GIVEREF(__pyx_v_exception); - PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_7, __pyx_v_exception); - __Pyx_INCREF(((PyObject *)__pyx_v_waiter)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_waiter)); - PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_7, ((PyObject *)__pyx_v_waiter)); - __pyx_t_5 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 927, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "src/gevent/greenlet.py":928 - * waiter = Waiter() # pylint:disable=undefined-variable - * loop.run_callback(_killall3, greenlets, exception, waiter) - * t = Timeout._start_new_or_dummy(timeout) # <<<<<<<<<<<<<< - * try: - * alive = waiter.get() - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_6gevent_9_greenlet_Timeout, __pyx_n_s_start_new_or_dummy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 928, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_8 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_8)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_8); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - } - } - if (!__pyx_t_8) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_timeout); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 928, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_1)) { - PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_v_timeout}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 928, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_GOTREF(__pyx_t_4); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { - PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_v_timeout}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 928, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_GOTREF(__pyx_t_4); - } else - #endif - { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 928, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8); __pyx_t_8 = NULL; - __Pyx_INCREF(__pyx_v_timeout); - __Pyx_GIVEREF(__pyx_v_timeout); - PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_timeout); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 928, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_t = __pyx_t_4; - __pyx_t_4 = 0; - - /* "src/gevent/greenlet.py":929 - * loop.run_callback(_killall3, greenlets, exception, waiter) - * t = Timeout._start_new_or_dummy(timeout) - * try: # <<<<<<<<<<<<<< - * alive = waiter.get() - * if alive: - */ - /*try:*/ { - - /* "src/gevent/greenlet.py":930 - * t = Timeout._start_new_or_dummy(timeout) - * try: - * alive = waiter.get() # <<<<<<<<<<<<<< - * if alive: - * joinall(alive, raise_error=False) - */ - __pyx_t_4 = ((struct __pyx_vtabstruct_6gevent_8__waiter_Waiter *)__pyx_v_waiter->__pyx_vtab)->get(__pyx_v_waiter, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 930, __pyx_L6_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_v_alive = __pyx_t_4; - __pyx_t_4 = 0; - - /* "src/gevent/greenlet.py":931 - * try: - * alive = waiter.get() - * if alive: # <<<<<<<<<<<<<< - * joinall(alive, raise_error=False) - * finally: - */ - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_alive); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 931, __pyx_L6_error) - if (__pyx_t_3) { - - /* "src/gevent/greenlet.py":932 - * alive = waiter.get() - * if alive: - * joinall(alive, raise_error=False) # <<<<<<<<<<<<<< - * finally: - * t.cancel() - */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_joinall); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 932, __pyx_L6_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 932, __pyx_L6_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_v_alive); - __Pyx_GIVEREF(__pyx_v_alive); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_alive); - __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 932, __pyx_L6_error) - __Pyx_GOTREF(__pyx_t_5); - if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_raise_error, Py_False) < 0) __PYX_ERR(0, 932, __pyx_L6_error) - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 932, __pyx_L6_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - - /* "src/gevent/greenlet.py":931 - * try: - * alive = waiter.get() - * if alive: # <<<<<<<<<<<<<< - * joinall(alive, raise_error=False) - * finally: - */ - } - } - - /* "src/gevent/greenlet.py":934 - * joinall(alive, raise_error=False) - * finally: - * t.cancel() # <<<<<<<<<<<<<< - * else: - * loop.run_callback(_killall, greenlets, exception) - */ - /*finally:*/ { - /*normal exit:*/{ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_t, __pyx_n_s_cancel); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 934, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_1 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_1)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_1); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - } - } - if (__pyx_t_1) { - __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 934, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else { - __pyx_t_8 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 934, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - goto __pyx_L7; - } - __pyx_L6_error:; - /*exception exit:*/{ - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16); - if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13) < 0)) __Pyx_ErrFetch(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13); - __Pyx_XGOTREF(__pyx_t_11); - __Pyx_XGOTREF(__pyx_t_12); - __Pyx_XGOTREF(__pyx_t_13); - __Pyx_XGOTREF(__pyx_t_14); - __Pyx_XGOTREF(__pyx_t_15); - __Pyx_XGOTREF(__pyx_t_16); - __pyx_t_7 = __pyx_lineno; __pyx_t_9 = __pyx_clineno; __pyx_t_10 = __pyx_filename; - { - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_t, __pyx_n_s_cancel); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 934, __pyx_L10_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_1 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_1)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_1); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - } - } - if (__pyx_t_1) { - __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 934, __pyx_L10_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else { - __pyx_t_8 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 934, __pyx_L10_error) - } - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_14); - __Pyx_XGIVEREF(__pyx_t_15); - __Pyx_XGIVEREF(__pyx_t_16); - __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16); - } - __Pyx_XGIVEREF(__pyx_t_11); - __Pyx_XGIVEREF(__pyx_t_12); - __Pyx_XGIVEREF(__pyx_t_13); - __Pyx_ErrRestore(__pyx_t_11, __pyx_t_12, __pyx_t_13); - __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; - __pyx_lineno = __pyx_t_7; __pyx_clineno = __pyx_t_9; __pyx_filename = __pyx_t_10; - goto __pyx_L1_error; - __pyx_L10_error:; - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_14); - __Pyx_XGIVEREF(__pyx_t_15); - __Pyx_XGIVEREF(__pyx_t_16); - __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16); - } - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; - __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; - goto __pyx_L1_error; - } - __pyx_L7:; - } - - /* "src/gevent/greenlet.py":925 - * return - * loop = greenlets[0].loop - * if block: # <<<<<<<<<<<<<< - * waiter = Waiter() # pylint:disable=undefined-variable - * loop.run_callback(_killall3, greenlets, exception, waiter) - */ - goto __pyx_L4; - } - - /* "src/gevent/greenlet.py":936 - * t.cancel() - * else: - * loop.run_callback(_killall, greenlets, exception) # <<<<<<<<<<<<<< - * - * def _init(): - */ - /*else*/ { - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_loop, __pyx_n_s_run_callback); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 936, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_1 = __Pyx_CFunc_object____list____object___to_py(__pyx_f_6gevent_9_greenlet__killall); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 936, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = NULL; - __pyx_t_9 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - __pyx_t_9 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_t_1, __pyx_v_greenlets, __pyx_v_exception}; - __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_9, 3+__pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 936, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_t_1, __pyx_v_greenlets, __pyx_v_exception}; - __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_9, 3+__pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 936, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else - #endif - { - __pyx_t_6 = PyTuple_New(3+__pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 936, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (__pyx_t_4) { - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; - } - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_9, __pyx_t_1); - __Pyx_INCREF(__pyx_v_greenlets); - __Pyx_GIVEREF(__pyx_v_greenlets); - PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_9, __pyx_v_greenlets); - __Pyx_INCREF(__pyx_v_exception); - __Pyx_GIVEREF(__pyx_v_exception); - PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_9, __pyx_v_exception); - __pyx_t_1 = 0; - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 936, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } - __pyx_L4:; - - /* "src/gevent/greenlet.py":894 - * - * - * def killall(greenlets, exception=GreenletExit, block=True, timeout=None): # <<<<<<<<<<<<<< - * """ - * Forceably terminate all the ``greenlets`` by causing them to raise ``exception``. - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_AddTraceback("gevent._greenlet.killall", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_loop); - __Pyx_XDECREF((PyObject *)__pyx_v_waiter); - __Pyx_XDECREF(__pyx_v_t); - __Pyx_XDECREF(__pyx_v_alive); - __Pyx_XDECREF(__pyx_v_greenlets); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/greenlet.py":938 - * loop.run_callback(_killall, greenlets, exception) - * - * def _init(): # <<<<<<<<<<<<<< - * greenlet_init() # pylint:disable=undefined-variable - * - */ - -static void __pyx_f_6gevent_9_greenlet__init(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_init", 0); - - /* "src/gevent/greenlet.py":939 - * - * def _init(): - * greenlet_init() # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * - * _init() - */ - __pyx_f_6gevent_9_greenlet_greenlet_init(); - - /* "src/gevent/greenlet.py":938 - * loop.run_callback(_killall, greenlets, exception) - * - * def _init(): # <<<<<<<<<<<<<< - * greenlet_init() # pylint:disable=undefined-variable - * - */ - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -/* "gevent/__greenlet_primitives.pxd":23 - * - * @cython.final - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - -static CYTHON_INLINE PyGreenlet *__pyx_f_6gevent_21__greenlet_primitives_getcurrent(void) { - PyGreenlet *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("getcurrent", 0); - - /* "gevent/__greenlet_primitives.pxd":24 - * @cython.final - * cdef inline greenlet getcurrent(): - * return PyGreenlet_GetCurrent() # <<<<<<<<<<<<<< - * - * cdef bint _greenlet_imported - */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __pyx_t_1 = ((PyObject *)PyGreenlet_GetCurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 24, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = ((PyGreenlet *)__pyx_t_1); - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "gevent/__greenlet_primitives.pxd":23 - * - * @cython.final - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__greenlet_primitives.getcurrent", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__greenlet_primitives.pxd":28 - * cdef bint _greenlet_imported - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - -static CYTHON_INLINE void __pyx_f_6gevent_21__greenlet_primitives_greenlet_init(void) { - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("greenlet_init", 0); - - /* "gevent/__greenlet_primitives.pxd":30 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - __pyx_t_1 = ((!(__pyx_v_6gevent_21__greenlet_primitives__greenlet_imported != 0)) != 0); - if (__pyx_t_1) { - - /* "gevent/__greenlet_primitives.pxd":31 - * global _greenlet_imported - * if not _greenlet_imported: - * PyGreenlet_Import() # <<<<<<<<<<<<<< - * _greenlet_imported = True - * - */ - PyGreenlet_Import(); - - /* "gevent/__greenlet_primitives.pxd":32 - * if not _greenlet_imported: - * PyGreenlet_Import() - * _greenlet_imported = True # <<<<<<<<<<<<<< - * - * cdef inline object _greenlet_switch(greenlet self): - */ - __pyx_v_6gevent_21__greenlet_primitives__greenlet_imported = 1; - - /* "gevent/__greenlet_primitives.pxd":30 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - } - - /* "gevent/__greenlet_primitives.pxd":28 - * cdef bint _greenlet_imported - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -/* "gevent/__greenlet_primitives.pxd":34 - * _greenlet_imported = True - * - * cdef inline object _greenlet_switch(greenlet self): # <<<<<<<<<<<<<< - * return PyGreenlet_Switch(self, NULL, NULL) - * - */ - -static CYTHON_INLINE PyObject *__pyx_f_6gevent_21__greenlet_primitives__greenlet_switch(PyGreenlet *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_greenlet_switch", 0); - - /* "gevent/__greenlet_primitives.pxd":35 - * - * cdef inline object _greenlet_switch(greenlet self): - * return PyGreenlet_Switch(self, NULL, NULL) # <<<<<<<<<<<<<< - * - * cdef class TrackedRawGreenlet(greenlet): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyGreenlet_Switch(__pyx_v_self, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 35, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "gevent/__greenlet_primitives.pxd":34 - * _greenlet_imported = True - * - * cdef inline object _greenlet_switch(greenlet self): # <<<<<<<<<<<<<< - * return PyGreenlet_Switch(self, NULL, NULL) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__greenlet_primitives._greenlet_switch", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__waiter.pxd":24 - * void PyGreenlet_Import() - * - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - -static CYTHON_INLINE PyGreenlet *__pyx_f_6gevent_8__waiter_getcurrent(void) { - PyGreenlet *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("getcurrent", 0); - - /* "gevent/__waiter.pxd":25 - * - * cdef inline greenlet getcurrent(): - * return PyGreenlet_GetCurrent() # <<<<<<<<<<<<<< - * - * cdef inline void greenlet_init(): - */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __pyx_t_1 = ((PyObject *)PyGreenlet_GetCurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 25, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = ((PyGreenlet *)__pyx_t_1); - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "gevent/__waiter.pxd":24 - * void PyGreenlet_Import() - * - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__waiter.getcurrent", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__waiter.pxd":27 - * return PyGreenlet_GetCurrent() - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - -static CYTHON_INLINE void __pyx_f_6gevent_8__waiter_greenlet_init(void) { - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("greenlet_init", 0); - - /* "gevent/__waiter.pxd":29 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - __pyx_t_1 = ((!(__pyx_v_6gevent_8__waiter__greenlet_imported != 0)) != 0); - if (__pyx_t_1) { - - /* "gevent/__waiter.pxd":30 - * global _greenlet_imported - * if not _greenlet_imported: - * PyGreenlet_Import() # <<<<<<<<<<<<<< - * _greenlet_imported = True - * - */ - PyGreenlet_Import(); - - /* "gevent/__waiter.pxd":31 - * if not _greenlet_imported: - * PyGreenlet_Import() - * _greenlet_imported = True # <<<<<<<<<<<<<< - * - * cdef class Waiter: - */ - __pyx_v_6gevent_8__waiter__greenlet_imported = 1; - - /* "gevent/__waiter.pxd":29 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - } - - /* "gevent/__waiter.pxd":27 - * return PyGreenlet_GetCurrent() - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -/* "gevent/_greenlet.pxd":27 - * - * @cython.final - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - -static CYTHON_INLINE PyGreenlet *__pyx_f_6gevent_9_greenlet_getcurrent(void) { - PyGreenlet *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("getcurrent", 0); - - /* "gevent/_greenlet.pxd":28 - * @cython.final - * cdef inline greenlet getcurrent(): - * return PyGreenlet_GetCurrent() # <<<<<<<<<<<<<< - * - * cdef bint _greenlet_imported - */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __pyx_t_1 = ((PyObject *)PyGreenlet_GetCurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 28, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = ((PyGreenlet *)__pyx_t_1); - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "gevent/_greenlet.pxd":27 - * - * @cython.final - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._greenlet.getcurrent", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/_greenlet.pxd":32 - * cdef bint _greenlet_imported - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - -static CYTHON_INLINE void __pyx_f_6gevent_9_greenlet_greenlet_init(void) { - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("greenlet_init", 0); - - /* "gevent/_greenlet.pxd":34 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - __pyx_t_1 = ((!(__pyx_v_6gevent_9_greenlet__greenlet_imported != 0)) != 0); - if (__pyx_t_1) { - - /* "gevent/_greenlet.pxd":35 - * global _greenlet_imported - * if not _greenlet_imported: - * PyGreenlet_Import() # <<<<<<<<<<<<<< - * _greenlet_imported = True - * - */ - PyGreenlet_Import(); - - /* "gevent/_greenlet.pxd":36 - * if not _greenlet_imported: - * PyGreenlet_Import() - * _greenlet_imported = True # <<<<<<<<<<<<<< - * - * cdef extern from "Python.h": - */ - __pyx_v_6gevent_9_greenlet__greenlet_imported = 1; - - /* "gevent/_greenlet.pxd":34 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - } - - /* "gevent/_greenlet.pxd":32 - * cdef bint _greenlet_imported - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -/* "cfunc.to_py":65 - * @cname("__Pyx_CFunc_object____list____object____object___to_py") - * cdef object __Pyx_CFunc_object____list____object____object___to_py(object (*f)(list, object, object) ): - * def wrap(list greenlets, object exception, object waiter): # <<<<<<<<<<<<<< - * """wrap(greenlets: list, exception, waiter)""" - * return f(greenlets, exception, waiter) - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_11cfunc_dot_to_py_54__Pyx_CFunc_object____list____object____object___to_py_1wrap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_11cfunc_dot_to_py_54__Pyx_CFunc_object____list____object____object___to_py_wrap[] = "wrap(greenlets: list, exception, waiter)"; -static PyMethodDef __pyx_mdef_11cfunc_dot_to_py_54__Pyx_CFunc_object____list____object____object___to_py_1wrap = {"wrap", (PyCFunction)__pyx_pw_11cfunc_dot_to_py_54__Pyx_CFunc_object____list____object____object___to_py_1wrap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cfunc_dot_to_py_54__Pyx_CFunc_object____list____object____object___to_py_wrap}; -static PyObject *__pyx_pw_11cfunc_dot_to_py_54__Pyx_CFunc_object____list____object____object___to_py_1wrap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_greenlets = 0; - PyObject *__pyx_v_exception = 0; - PyObject *__pyx_v_waiter = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("wrap (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_greenlets,&__pyx_n_s_exception,&__pyx_n_s_waiter,0}; - PyObject* values[3] = {0,0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_greenlets)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_exception)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("wrap", 1, 3, 3, 1); __PYX_ERR(4, 65, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_waiter)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("wrap", 1, 3, 3, 2); __PYX_ERR(4, 65, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "wrap") < 0)) __PYX_ERR(4, 65, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - } - __pyx_v_greenlets = ((PyObject*)values[0]); - __pyx_v_exception = values[1]; - __pyx_v_waiter = values[2]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("wrap", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(4, 65, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("cfunc.to_py.__Pyx_CFunc_object____list____object____object___to_py.wrap", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_greenlets), (&PyList_Type), 1, "greenlets", 1))) __PYX_ERR(4, 65, __pyx_L1_error) - __pyx_r = __pyx_pf_11cfunc_dot_to_py_54__Pyx_CFunc_object____list____object____object___to_py_wrap(__pyx_self, __pyx_v_greenlets, __pyx_v_exception, __pyx_v_waiter); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = NULL; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_11cfunc_dot_to_py_54__Pyx_CFunc_object____list____object____object___to_py_wrap(PyObject *__pyx_self, PyObject *__pyx_v_greenlets, PyObject *__pyx_v_exception, PyObject *__pyx_v_waiter) { - struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py *__pyx_cur_scope; - struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py *__pyx_outer_scope; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("wrap", 0); - __pyx_outer_scope = (struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py *) __Pyx_CyFunction_GetClosure(__pyx_self); - __pyx_cur_scope = __pyx_outer_scope; - - /* "cfunc.to_py":67 - * def wrap(list greenlets, object exception, object waiter): - * """wrap(greenlets: list, exception, waiter)""" - * return f(greenlets, exception, waiter) # <<<<<<<<<<<<<< - * return wrap - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_cur_scope->__pyx_v_f(__pyx_v_greenlets, __pyx_v_exception, __pyx_v_waiter); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 67, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "cfunc.to_py":65 - * @cname("__Pyx_CFunc_object____list____object____object___to_py") - * cdef object __Pyx_CFunc_object____list____object____object___to_py(object (*f)(list, object, object) ): - * def wrap(list greenlets, object exception, object waiter): # <<<<<<<<<<<<<< - * """wrap(greenlets: list, exception, waiter)""" - * return f(greenlets, exception, waiter) - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("cfunc.to_py.__Pyx_CFunc_object____list____object____object___to_py.wrap", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "cfunc.to_py":64 - * - * @cname("__Pyx_CFunc_object____list____object____object___to_py") - * cdef object __Pyx_CFunc_object____list____object____object___to_py(object (*f)(list, object, object) ): # <<<<<<<<<<<<<< - * def wrap(list greenlets, object exception, object waiter): - * """wrap(greenlets: list, exception, waiter)""" - */ - -static PyObject *__Pyx_CFunc_object____list____object____object___to_py(PyObject *(*__pyx_v_f)(PyObject *, PyObject *, PyObject *)) { - struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py *__pyx_cur_scope; - PyObject *__pyx_v_wrap = 0; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__Pyx_CFunc_object____list____object____object___to_py", 0); - __pyx_cur_scope = (struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py *)__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py(__pyx_ptype___pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py, __pyx_empty_tuple, NULL); - if (unlikely(!__pyx_cur_scope)) { - __pyx_cur_scope = ((struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py *)Py_None); - __Pyx_INCREF(Py_None); - __PYX_ERR(4, 64, __pyx_L1_error) - } else { - __Pyx_GOTREF(__pyx_cur_scope); - } - __pyx_cur_scope->__pyx_v_f = __pyx_v_f; - - /* "cfunc.to_py":65 - * @cname("__Pyx_CFunc_object____list____object____object___to_py") - * cdef object __Pyx_CFunc_object____list____object____object___to_py(object (*f)(list, object, object) ): - * def wrap(list greenlets, object exception, object waiter): # <<<<<<<<<<<<<< - * """wrap(greenlets: list, exception, waiter)""" - * return f(greenlets, exception, waiter) - */ - __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_11cfunc_dot_to_py_54__Pyx_CFunc_object____list____object____object___to_py_1wrap, 0, __pyx_n_s_Pyx_CFunc_object____list____ob, ((PyObject*)__pyx_cur_scope), __pyx_n_s_cfunc_to_py, __pyx_d, ((PyObject *)__pyx_codeobj__20)); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 65, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_wrap = __pyx_t_1; - __pyx_t_1 = 0; - - /* "cfunc.to_py":68 - * """wrap(greenlets: list, exception, waiter)""" - * return f(greenlets, exception, waiter) - * return wrap # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_wrap); - __pyx_r = __pyx_v_wrap; - goto __pyx_L0; - - /* "cfunc.to_py":64 - * - * @cname("__Pyx_CFunc_object____list____object____object___to_py") - * cdef object __Pyx_CFunc_object____list____object____object___to_py(object (*f)(list, object, object) ): # <<<<<<<<<<<<<< - * def wrap(list greenlets, object exception, object waiter): - * """wrap(greenlets: list, exception, waiter)""" - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("cfunc.to_py.__Pyx_CFunc_object____list____object____object___to_py", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_wrap); - __Pyx_DECREF(((PyObject *)__pyx_cur_scope)); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "cfunc.to_py":65 - * @cname("__Pyx_CFunc_object____list____object___to_py") - * cdef object __Pyx_CFunc_object____list____object___to_py(object (*f)(list, object) ): - * def wrap(list greenlets, object exception): # <<<<<<<<<<<<<< - * """wrap(greenlets: list, exception)""" - * return f(greenlets, exception) - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_11cfunc_dot_to_py_44__Pyx_CFunc_object____list____object___to_py_1wrap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_11cfunc_dot_to_py_44__Pyx_CFunc_object____list____object___to_py_wrap[] = "wrap(greenlets: list, exception)"; -static PyMethodDef __pyx_mdef_11cfunc_dot_to_py_44__Pyx_CFunc_object____list____object___to_py_1wrap = {"wrap", (PyCFunction)__pyx_pw_11cfunc_dot_to_py_44__Pyx_CFunc_object____list____object___to_py_1wrap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_11cfunc_dot_to_py_44__Pyx_CFunc_object____list____object___to_py_wrap}; -static PyObject *__pyx_pw_11cfunc_dot_to_py_44__Pyx_CFunc_object____list____object___to_py_1wrap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_greenlets = 0; - PyObject *__pyx_v_exception = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("wrap (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_greenlets,&__pyx_n_s_exception,0}; - PyObject* values[2] = {0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_greenlets)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_exception)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("wrap", 1, 2, 2, 1); __PYX_ERR(4, 65, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "wrap") < 0)) __PYX_ERR(4, 65, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - } - __pyx_v_greenlets = ((PyObject*)values[0]); - __pyx_v_exception = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("wrap", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(4, 65, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("cfunc.to_py.__Pyx_CFunc_object____list____object___to_py.wrap", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_greenlets), (&PyList_Type), 1, "greenlets", 1))) __PYX_ERR(4, 65, __pyx_L1_error) - __pyx_r = __pyx_pf_11cfunc_dot_to_py_44__Pyx_CFunc_object____list____object___to_py_wrap(__pyx_self, __pyx_v_greenlets, __pyx_v_exception); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = NULL; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_11cfunc_dot_to_py_44__Pyx_CFunc_object____list____object___to_py_wrap(PyObject *__pyx_self, PyObject *__pyx_v_greenlets, PyObject *__pyx_v_exception) { - struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_object____list____object___to_py *__pyx_cur_scope; - struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_object____list____object___to_py *__pyx_outer_scope; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("wrap", 0); - __pyx_outer_scope = (struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_object____list____object___to_py *) __Pyx_CyFunction_GetClosure(__pyx_self); - __pyx_cur_scope = __pyx_outer_scope; - - /* "cfunc.to_py":67 - * def wrap(list greenlets, object exception): - * """wrap(greenlets: list, exception)""" - * return f(greenlets, exception) # <<<<<<<<<<<<<< - * return wrap - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_cur_scope->__pyx_v_f(__pyx_v_greenlets, __pyx_v_exception); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 67, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "cfunc.to_py":65 - * @cname("__Pyx_CFunc_object____list____object___to_py") - * cdef object __Pyx_CFunc_object____list____object___to_py(object (*f)(list, object) ): - * def wrap(list greenlets, object exception): # <<<<<<<<<<<<<< - * """wrap(greenlets: list, exception)""" - * return f(greenlets, exception) - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("cfunc.to_py.__Pyx_CFunc_object____list____object___to_py.wrap", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "cfunc.to_py":64 - * - * @cname("__Pyx_CFunc_object____list____object___to_py") - * cdef object __Pyx_CFunc_object____list____object___to_py(object (*f)(list, object) ): # <<<<<<<<<<<<<< - * def wrap(list greenlets, object exception): - * """wrap(greenlets: list, exception)""" - */ - -static PyObject *__Pyx_CFunc_object____list____object___to_py(PyObject *(*__pyx_v_f)(PyObject *, PyObject *)) { - struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_object____list____object___to_py *__pyx_cur_scope; - PyObject *__pyx_v_wrap = 0; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__Pyx_CFunc_object____list____object___to_py", 0); - __pyx_cur_scope = (struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_object____list____object___to_py *)__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_object____list____object___to_py(__pyx_ptype___pyx_scope_struct____Pyx_CFunc_object____list____object___to_py, __pyx_empty_tuple, NULL); - if (unlikely(!__pyx_cur_scope)) { - __pyx_cur_scope = ((struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_object____list____object___to_py *)Py_None); - __Pyx_INCREF(Py_None); - __PYX_ERR(4, 64, __pyx_L1_error) - } else { - __Pyx_GOTREF(__pyx_cur_scope); - } - __pyx_cur_scope->__pyx_v_f = __pyx_v_f; - - /* "cfunc.to_py":65 - * @cname("__Pyx_CFunc_object____list____object___to_py") - * cdef object __Pyx_CFunc_object____list____object___to_py(object (*f)(list, object) ): - * def wrap(list greenlets, object exception): # <<<<<<<<<<<<<< - * """wrap(greenlets: list, exception)""" - * return f(greenlets, exception) - */ - __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_11cfunc_dot_to_py_44__Pyx_CFunc_object____list____object___to_py_1wrap, 0, __pyx_n_s_Pyx_CFunc_object____list____ob_2, ((PyObject*)__pyx_cur_scope), __pyx_n_s_cfunc_to_py, __pyx_d, ((PyObject *)__pyx_codeobj__22)); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 65, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_wrap = __pyx_t_1; - __pyx_t_1 = 0; - - /* "cfunc.to_py":68 - * """wrap(greenlets: list, exception)""" - * return f(greenlets, exception) - * return wrap # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_wrap); - __pyx_r = __pyx_v_wrap; - goto __pyx_L0; - - /* "cfunc.to_py":64 - * - * @cname("__Pyx_CFunc_object____list____object___to_py") - * cdef object __Pyx_CFunc_object____list____object___to_py(object (*f)(list, object) ): # <<<<<<<<<<<<<< - * def wrap(list greenlets, object exception): - * """wrap(greenlets: list, exception)""" - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("cfunc.to_py.__Pyx_CFunc_object____list____object___to_py", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_wrap); - __Pyx_DECREF(((PyObject *)__pyx_cur_scope)); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_tp_new_6gevent_9_greenlet_SpawnedLink(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *p; - PyObject *o; - if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { - o = (*t->tp_alloc)(t, 0); - } else { - o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); - } - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *)o); - p->callback = Py_None; Py_INCREF(Py_None); - return o; -} - -static void __pyx_tp_dealloc_6gevent_9_greenlet_SpawnedLink(PyObject *o) { - struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *p = (struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - #endif - PyObject_GC_UnTrack(o); - Py_CLEAR(p->callback); - (*Py_TYPE(o)->tp_free)(o); -} - -static int __pyx_tp_traverse_6gevent_9_greenlet_SpawnedLink(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *p = (struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *)o; - if (p->callback) { - e = (*v)(p->callback, a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_6gevent_9_greenlet_SpawnedLink(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *p = (struct __pyx_obj_6gevent_9_greenlet_SpawnedLink *)o; - tmp = ((PyObject*)p->callback); - p->callback = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyObject *__pyx_tp_getattro_6gevent_9_greenlet_SpawnedLink(PyObject *o, PyObject *n) { - PyObject *v = __Pyx_PyObject_GenericGetAttr(o, n); - if (!v && PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Clear(); - v = __pyx_pw_6gevent_9_greenlet_11SpawnedLink_13__getattr__(o, n); - } - return v; -} - -static PyObject *__pyx_tp_richcompare_6gevent_9_greenlet_SpawnedLink(PyObject *o1, PyObject *o2, int op) { - switch (op) { - case Py_EQ: { - return __pyx_pw_6gevent_9_greenlet_11SpawnedLink_7__eq__(o1, o2); - } - case Py_NE: { - PyObject *ret; - ret = __pyx_pw_6gevent_9_greenlet_11SpawnedLink_7__eq__(o1, o2); - if (likely(ret && ret != Py_NotImplemented)) { - int b = __Pyx_PyObject_IsTrue(ret); Py_DECREF(ret); - if (unlikely(b < 0)) return NULL; - ret = (b) ? Py_False : Py_True; - Py_INCREF(ret); - } - return ret; - } - default: { - return __Pyx_NewRef(Py_NotImplemented); - } - } -} - -static PyObject *__pyx_getprop_6gevent_9_greenlet_11SpawnedLink_callback(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_9_greenlet_11SpawnedLink_8callback_1__get__(o); -} - -static int __pyx_setprop_6gevent_9_greenlet_11SpawnedLink_callback(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { - if (v) { - return __pyx_pw_6gevent_9_greenlet_11SpawnedLink_8callback_3__set__(o, v); - } - else { - return __pyx_pw_6gevent_9_greenlet_11SpawnedLink_8callback_5__del__(o); - } -} - -static PyMethodDef __pyx_methods_6gevent_9_greenlet_SpawnedLink[] = { - {"__getattr__", (PyCFunction)__pyx_pw_6gevent_9_greenlet_11SpawnedLink_13__getattr__, METH_O|METH_COEXIST, 0}, - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_6gevent_9_greenlet_SpawnedLink[] = { - {(char *)"callback", __pyx_getprop_6gevent_9_greenlet_11SpawnedLink_callback, __pyx_setprop_6gevent_9_greenlet_11SpawnedLink_callback, (char *)"callback: object", 0}, - {0, 0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_9_greenlet_SpawnedLink = { - PyVarObject_HEAD_INIT(0, 0) - "gevent._greenlet.SpawnedLink", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_9_greenlet_SpawnedLink), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_9_greenlet_SpawnedLink, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - __pyx_pw_6gevent_9_greenlet_11SpawnedLink_11__repr__, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - __pyx_pw_6gevent_9_greenlet_11SpawnedLink_5__hash__, /*tp_hash*/ - __pyx_pw_6gevent_9_greenlet_11SpawnedLink_3__call__, /*tp_call*/ - __pyx_pw_6gevent_9_greenlet_11SpawnedLink_9__str__, /*tp_str*/ - __pyx_tp_getattro_6gevent_9_greenlet_SpawnedLink, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "SpawnedLink(callback)\n\n A wrapper around link that calls it in another greenlet.\n\n Can be called only from main loop.\n ", /*tp_doc*/ - __pyx_tp_traverse_6gevent_9_greenlet_SpawnedLink, /*tp_traverse*/ - __pyx_tp_clear_6gevent_9_greenlet_SpawnedLink, /*tp_clear*/ - __pyx_tp_richcompare_6gevent_9_greenlet_SpawnedLink, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_9_greenlet_SpawnedLink, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_6gevent_9_greenlet_SpawnedLink, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_9_greenlet_11SpawnedLink_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_9_greenlet_SpawnedLink, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; - -static PyObject *__pyx_tp_new_6gevent_9_greenlet_SuccessSpawnedLink(PyTypeObject *t, PyObject *a, PyObject *k) { - PyObject *o = __pyx_tp_new_6gevent_9_greenlet_SpawnedLink(t, a, k); - if (unlikely(!o)) return 0; - return o; -} - -static PyMethodDef __pyx_methods_6gevent_9_greenlet_SuccessSpawnedLink[] = { - {0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_9_greenlet_SuccessSpawnedLink = { - PyVarObject_HEAD_INIT(0, 0) - "gevent._greenlet.SuccessSpawnedLink", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_9_greenlet_SuccessSpawnedLink), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_9_greenlet_SpawnedLink, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_9_greenlet_11SpawnedLink_11__repr__, /*tp_repr*/ - #else - 0, /*tp_repr*/ - #endif - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - __pyx_pw_6gevent_9_greenlet_18SuccessSpawnedLink_1__call__, /*tp_call*/ - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_9_greenlet_11SpawnedLink_9__str__, /*tp_str*/ - #else - 0, /*tp_str*/ - #endif - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "A wrapper around link that calls it in another greenlet only if source succeed.\n\n Can be called only from main loop.\n ", /*tp_doc*/ - __pyx_tp_traverse_6gevent_9_greenlet_SpawnedLink, /*tp_traverse*/ - __pyx_tp_clear_6gevent_9_greenlet_SpawnedLink, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_9_greenlet_SuccessSpawnedLink, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_9_greenlet_11SpawnedLink_1__init__, /*tp_init*/ - #else - 0, /*tp_init*/ - #endif - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_9_greenlet_SuccessSpawnedLink, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; - -static PyObject *__pyx_tp_new_6gevent_9_greenlet_FailureSpawnedLink(PyTypeObject *t, PyObject *a, PyObject *k) { - PyObject *o = __pyx_tp_new_6gevent_9_greenlet_SpawnedLink(t, a, k); - if (unlikely(!o)) return 0; - return o; -} - -static PyMethodDef __pyx_methods_6gevent_9_greenlet_FailureSpawnedLink[] = { - {0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_9_greenlet_FailureSpawnedLink = { - PyVarObject_HEAD_INIT(0, 0) - "gevent._greenlet.FailureSpawnedLink", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_9_greenlet_FailureSpawnedLink), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_9_greenlet_SpawnedLink, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_9_greenlet_11SpawnedLink_11__repr__, /*tp_repr*/ - #else - 0, /*tp_repr*/ - #endif - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - __pyx_pw_6gevent_9_greenlet_18FailureSpawnedLink_1__call__, /*tp_call*/ - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_9_greenlet_11SpawnedLink_9__str__, /*tp_str*/ - #else - 0, /*tp_str*/ - #endif - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "A wrapper around link that calls it in another greenlet only if source failed.\n\n Can be called only from main loop.\n ", /*tp_doc*/ - __pyx_tp_traverse_6gevent_9_greenlet_SpawnedLink, /*tp_traverse*/ - __pyx_tp_clear_6gevent_9_greenlet_SpawnedLink, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_9_greenlet_FailureSpawnedLink, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_9_greenlet_11SpawnedLink_1__init__, /*tp_init*/ - #else - 0, /*tp_init*/ - #endif - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_9_greenlet_FailureSpawnedLink, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; - -static PyObject *__pyx_tp_new_6gevent_9_greenlet__Frame(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - struct __pyx_obj_6gevent_9_greenlet__Frame *p; - PyObject *o; - o = (*t->tp_alloc)(t, 0); - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_9_greenlet__Frame *)o); - p->f_code = ((PyCodeObject *)Py_None); Py_INCREF(Py_None); - p->f_back = ((struct __pyx_obj_6gevent_9_greenlet__Frame *)Py_None); Py_INCREF(Py_None); - return o; -} - -static void __pyx_tp_dealloc_6gevent_9_greenlet__Frame(PyObject *o) { - struct __pyx_obj_6gevent_9_greenlet__Frame *p = (struct __pyx_obj_6gevent_9_greenlet__Frame *)o; - PyObject_GC_UnTrack(o); - Py_CLEAR(p->f_code); - Py_CLEAR(p->f_back); - (*Py_TYPE(o)->tp_free)(o); -} - -static int __pyx_tp_traverse_6gevent_9_greenlet__Frame(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_6gevent_9_greenlet__Frame *p = (struct __pyx_obj_6gevent_9_greenlet__Frame *)o; - if (p->f_code) { - e = (*v)(((PyObject *)p->f_code), a); if (e) return e; - } - if (p->f_back) { - e = (*v)(((PyObject *)p->f_back), a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_6gevent_9_greenlet__Frame(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_6gevent_9_greenlet__Frame *p = (struct __pyx_obj_6gevent_9_greenlet__Frame *)o; - tmp = ((PyObject*)p->f_code); - p->f_code = ((PyCodeObject *)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->f_back); - p->f_back = ((struct __pyx_obj_6gevent_9_greenlet__Frame *)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyObject *__pyx_getprop_6gevent_9_greenlet_6_Frame_f_globals(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_9_greenlet_6_Frame_9f_globals_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_9_greenlet_6_Frame_f_code(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_9_greenlet_6_Frame_6f_code_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_9_greenlet_6_Frame_f_lineno(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_9_greenlet_6_Frame_8f_lineno_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_9_greenlet_6_Frame_f_back(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_9_greenlet_6_Frame_6f_back_1__get__(o); -} - -static PyMethodDef __pyx_methods_6gevent_9_greenlet__Frame[] = { - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_6gevent_9_greenlet__Frame[] = { - {(char *)"f_globals", __pyx_getprop_6gevent_9_greenlet_6_Frame_f_globals, 0, (char *)0, 0}, - {(char *)"f_code", __pyx_getprop_6gevent_9_greenlet_6_Frame_f_code, 0, (char *)0, 0}, - {(char *)"f_lineno", __pyx_getprop_6gevent_9_greenlet_6_Frame_f_lineno, 0, (char *)0, 0}, - {(char *)"f_back", __pyx_getprop_6gevent_9_greenlet_6_Frame_f_back, 0, (char *)0, 0}, - {0, 0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_9_greenlet__Frame = { - PyVarObject_HEAD_INIT(0, 0) - "gevent._greenlet._Frame", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_9_greenlet__Frame), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_9_greenlet__Frame, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "_Frame(f_code, f_lineno, f_back)", /*tp_doc*/ - __pyx_tp_traverse_6gevent_9_greenlet__Frame, /*tp_traverse*/ - __pyx_tp_clear_6gevent_9_greenlet__Frame, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_9_greenlet__Frame, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_6gevent_9_greenlet__Frame, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_9_greenlet_6_Frame_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_9_greenlet__Frame, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; -static struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet __pyx_vtable_6gevent_9_greenlet_Greenlet; - -static PyObject *__pyx_tp_new_6gevent_9_greenlet_Greenlet(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_obj_6gevent_9_greenlet_Greenlet *p; - PyObject *o = __pyx_ptype_6gevent_9_greenlet_greenlet->tp_new(t, a, k); - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_9_greenlet_Greenlet *)o); - p->__pyx_vtab = __pyx_vtabptr_6gevent_9_greenlet_Greenlet; - p->value = Py_None; Py_INCREF(Py_None); - p->args = ((PyObject*)Py_None); Py_INCREF(Py_None); - p->kwargs = ((PyObject*)Py_None); Py_INCREF(Py_None); - p->spawning_greenlet = Py_None; Py_INCREF(Py_None); - p->spawn_tree_locals = ((PyObject*)Py_None); Py_INCREF(Py_None); - p->_spawning_stack_frames = ((PyObject*)Py_None); Py_INCREF(Py_None); - p->_links = ((PyObject*)Py_None); Py_INCREF(Py_None); - p->_exc_info = ((PyObject*)Py_None); Py_INCREF(Py_None); - p->_notifier = Py_None; Py_INCREF(Py_None); - p->_start_event = Py_None; Py_INCREF(Py_None); - p->_formatted_info = ((PyObject*)Py_None); Py_INCREF(Py_None); - p->_ident = Py_None; Py_INCREF(Py_None); - return o; -} - -static void __pyx_tp_dealloc_6gevent_9_greenlet_Greenlet(PyObject *o) { - struct __pyx_obj_6gevent_9_greenlet_Greenlet *p = (struct __pyx_obj_6gevent_9_greenlet_Greenlet *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - #endif - PyObject_GC_UnTrack(o); - Py_CLEAR(p->value); - Py_CLEAR(p->args); - Py_CLEAR(p->kwargs); - Py_CLEAR(p->spawning_greenlet); - Py_CLEAR(p->spawn_tree_locals); - Py_CLEAR(p->_spawning_stack_frames); - Py_CLEAR(p->_links); - Py_CLEAR(p->_exc_info); - Py_CLEAR(p->_notifier); - Py_CLEAR(p->_start_event); - Py_CLEAR(p->_formatted_info); - Py_CLEAR(p->_ident); - #if CYTHON_USE_TYPE_SLOTS - if (PyType_IS_GC(Py_TYPE(o)->tp_base)) - #endif - PyObject_GC_Track(o); - if (likely(__pyx_ptype_6gevent_9_greenlet_greenlet)) __pyx_ptype_6gevent_9_greenlet_greenlet->tp_dealloc(o); else __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_6gevent_9_greenlet_Greenlet); -} - -static int __pyx_tp_traverse_6gevent_9_greenlet_Greenlet(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_6gevent_9_greenlet_Greenlet *p = (struct __pyx_obj_6gevent_9_greenlet_Greenlet *)o; - e = ((likely(__pyx_ptype_6gevent_9_greenlet_greenlet)) ? ((__pyx_ptype_6gevent_9_greenlet_greenlet->tp_traverse) ? __pyx_ptype_6gevent_9_greenlet_greenlet->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_6gevent_9_greenlet_Greenlet)); if (e) return e; - if (p->value) { - e = (*v)(p->value, a); if (e) return e; - } - if (p->args) { - e = (*v)(p->args, a); if (e) return e; - } - if (p->kwargs) { - e = (*v)(p->kwargs, a); if (e) return e; - } - if (p->spawning_greenlet) { - e = (*v)(p->spawning_greenlet, a); if (e) return e; - } - if (p->spawn_tree_locals) { - e = (*v)(p->spawn_tree_locals, a); if (e) return e; - } - if (p->_spawning_stack_frames) { - e = (*v)(p->_spawning_stack_frames, a); if (e) return e; - } - if (p->_links) { - e = (*v)(p->_links, a); if (e) return e; - } - if (p->_exc_info) { - e = (*v)(p->_exc_info, a); if (e) return e; - } - if (p->_notifier) { - e = (*v)(p->_notifier, a); if (e) return e; - } - if (p->_start_event) { - e = (*v)(p->_start_event, a); if (e) return e; - } - if (p->_ident) { - e = (*v)(p->_ident, a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_6gevent_9_greenlet_Greenlet(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_6gevent_9_greenlet_Greenlet *p = (struct __pyx_obj_6gevent_9_greenlet_Greenlet *)o; - if (likely(__pyx_ptype_6gevent_9_greenlet_greenlet)) { if (__pyx_ptype_6gevent_9_greenlet_greenlet->tp_clear) __pyx_ptype_6gevent_9_greenlet_greenlet->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_6gevent_9_greenlet_Greenlet); - tmp = ((PyObject*)p->value); - p->value = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->args); - p->args = ((PyObject*)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->kwargs); - p->kwargs = ((PyObject*)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->spawning_greenlet); - p->spawning_greenlet = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->spawn_tree_locals); - p->spawn_tree_locals = ((PyObject*)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->_spawning_stack_frames); - p->_spawning_stack_frames = ((PyObject*)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->_links); - p->_links = ((PyObject*)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->_exc_info); - p->_exc_info = ((PyObject*)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->_notifier); - p->_notifier = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->_start_event); - p->_start_event = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->_ident); - p->_ident = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyObject *__pyx_getprop_6gevent_9_greenlet_8Greenlet_minimal_ident(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_9_greenlet_8Greenlet_13minimal_ident_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_9_greenlet_8Greenlet_loop(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_9_greenlet_8Greenlet_4loop_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_9_greenlet_8Greenlet_dead(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_9_greenlet_8Greenlet_4dead_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_9_greenlet_8Greenlet_started(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_9_greenlet_8Greenlet_7started_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_9_greenlet_8Greenlet_exception(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_9_greenlet_8Greenlet_9exception_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_9_greenlet_8Greenlet_exc_info(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_9_greenlet_8Greenlet_8exc_info_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_9_greenlet_8Greenlet_value(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_9_greenlet_8Greenlet_5value_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_9_greenlet_8Greenlet_args(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_9_greenlet_8Greenlet_4args_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_9_greenlet_8Greenlet_kwargs(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_9_greenlet_8Greenlet_6kwargs_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_9_greenlet_8Greenlet_spawning_greenlet(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_9_greenlet_8Greenlet_17spawning_greenlet_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_9_greenlet_8Greenlet_spawn_tree_locals(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_9_greenlet_8Greenlet_17spawn_tree_locals_1__get__(o); -} - -static int __pyx_setprop_6gevent_9_greenlet_8Greenlet_spawn_tree_locals(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { - if (v) { - return __pyx_pw_6gevent_9_greenlet_8Greenlet_17spawn_tree_locals_3__set__(o, v); - } - else { - return __pyx_pw_6gevent_9_greenlet_8Greenlet_17spawn_tree_locals_5__del__(o); - } -} - -static PyObject *__pyx_getprop_6gevent_9_greenlet_8Greenlet__spawning_stack_frames(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_9_greenlet_8Greenlet_22_spawning_stack_frames_1__get__(o); -} - -static PyMethodDef __pyx_methods_6gevent_9_greenlet_Greenlet[] = { - {"spawning_stack", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_3spawning_stack, METH_NOARGS, __pyx_doc_6gevent_9_greenlet_8Greenlet_2spawning_stack}, - {"name", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_5name, METH_NOARGS, __pyx_doc_6gevent_9_greenlet_8Greenlet_4name}, - {"_raise_exception", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_7_raise_exception, METH_NOARGS, __pyx_doc_6gevent_9_greenlet_8Greenlet_6_raise_exception}, - {"throw", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_19throw, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_9_greenlet_8Greenlet_18throw}, - {"start", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_21start, METH_NOARGS, __pyx_doc_6gevent_9_greenlet_8Greenlet_20start}, - {"start_later", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_23start_later, METH_O, __pyx_doc_6gevent_9_greenlet_8Greenlet_22start_later}, - {"spawn", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_25spawn, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_9_greenlet_8Greenlet_24spawn}, - {"spawn_later", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_27spawn_later, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_9_greenlet_8Greenlet_26spawn_later}, - {"kill", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_29kill, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_9_greenlet_8Greenlet_28kill}, - {"get", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_31get, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_9_greenlet_8Greenlet_30get}, - {"run", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_35run, METH_NOARGS, __pyx_doc_6gevent_9_greenlet_8Greenlet_34run}, - {"_run", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_37_run, METH_NOARGS, __pyx_doc_6gevent_9_greenlet_8Greenlet_36_run}, - {"link", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_43link, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_9_greenlet_8Greenlet_42link}, - {"unlink", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_45unlink, METH_O, __pyx_doc_6gevent_9_greenlet_8Greenlet_44unlink}, - {"unlink_all", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_47unlink_all, METH_NOARGS, __pyx_doc_6gevent_9_greenlet_8Greenlet_46unlink_all}, - {"link_value", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_49link_value, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_9_greenlet_8Greenlet_48link_value}, - {"link_exception", (PyCFunction)__pyx_pw_6gevent_9_greenlet_8Greenlet_51link_exception, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_9_greenlet_8Greenlet_50link_exception}, - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_6gevent_9_greenlet_Greenlet[] = { - {(char *)"minimal_ident", __pyx_getprop_6gevent_9_greenlet_8Greenlet_minimal_ident, 0, (char *)"\n A small, unique integer that identifies this object.\n\n This is similar to :attr:`threading.Thread.ident` (and `id`)\n in that as long as this object is alive, no other greenlet *in\n this hub* will have the same id, but it makes a stronger\n guarantee that the assigned values will be small and\n sequential. Sometime after this object has died, the value\n will be available for reuse.\n\n To get ids that are unique across all hubs, combine this with\n the hub's ``minimal_ident``.\n\n .. versionadded:: 1.3a2\n ", 0}, - {(char *)"loop", __pyx_getprop_6gevent_9_greenlet_8Greenlet_loop, 0, (char *)0, 0}, - {(char *)"dead", __pyx_getprop_6gevent_9_greenlet_8Greenlet_dead, 0, (char *)"Boolean indicating that the greenlet is dead and will not run again.", 0}, - {(char *)"started", __pyx_getprop_6gevent_9_greenlet_8Greenlet_started, 0, (char *)0, 0}, - {(char *)"exception", __pyx_getprop_6gevent_9_greenlet_8Greenlet_exception, 0, (char *)"\n Holds the exception instance raised by the function if the\n greenlet has finished with an error. Otherwise ``None``.\n ", 0}, - {(char *)"exc_info", __pyx_getprop_6gevent_9_greenlet_8Greenlet_exc_info, 0, (char *)"\n Holds the exc_info three-tuple raised by the function if the\n greenlet finished with an error. Otherwise a false value.\n\n .. note:: This is a provisional API and may change.\n\n .. versionadded:: 1.1\n ", 0}, - {(char *)"value", __pyx_getprop_6gevent_9_greenlet_8Greenlet_value, 0, (char *)0, 0}, - {(char *)"args", __pyx_getprop_6gevent_9_greenlet_8Greenlet_args, 0, (char *)0, 0}, - {(char *)"kwargs", __pyx_getprop_6gevent_9_greenlet_8Greenlet_kwargs, 0, (char *)0, 0}, - {(char *)"spawning_greenlet", __pyx_getprop_6gevent_9_greenlet_8Greenlet_spawning_greenlet, 0, (char *)0, 0}, - {(char *)"spawn_tree_locals", __pyx_getprop_6gevent_9_greenlet_8Greenlet_spawn_tree_locals, __pyx_setprop_6gevent_9_greenlet_8Greenlet_spawn_tree_locals, (char *)"spawn_tree_locals: dict", 0}, - {(char *)"_spawning_stack_frames", __pyx_getprop_6gevent_9_greenlet_8Greenlet__spawning_stack_frames, 0, (char *)0, 0}, - {0, 0, 0, 0, 0} -}; - -static PyNumberMethods __pyx_tp_as_number_Greenlet = { - 0, /*nb_add*/ - 0, /*nb_subtract*/ - 0, /*nb_multiply*/ - #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000) - 0, /*nb_divide*/ - #endif - 0, /*nb_remainder*/ - 0, /*nb_divmod*/ - 0, /*nb_power*/ - 0, /*nb_negative*/ - 0, /*nb_positive*/ - 0, /*nb_absolute*/ - __pyx_pw_6gevent_9_greenlet_8Greenlet_9__nonzero__, /*nb_nonzero*/ - 0, /*nb_invert*/ - 0, /*nb_lshift*/ - 0, /*nb_rshift*/ - 0, /*nb_and*/ - 0, /*nb_xor*/ - 0, /*nb_or*/ - #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000) - 0, /*nb_coerce*/ - #endif - 0, /*nb_int*/ - #if PY_MAJOR_VERSION < 3 - 0, /*nb_long*/ - #else - 0, /*reserved*/ - #endif - 0, /*nb_float*/ - #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000) - 0, /*nb_oct*/ - #endif - #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000) - 0, /*nb_hex*/ - #endif - 0, /*nb_inplace_add*/ - 0, /*nb_inplace_subtract*/ - 0, /*nb_inplace_multiply*/ - #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000) - 0, /*nb_inplace_divide*/ - #endif - 0, /*nb_inplace_remainder*/ - 0, /*nb_inplace_power*/ - 0, /*nb_inplace_lshift*/ - 0, /*nb_inplace_rshift*/ - 0, /*nb_inplace_and*/ - 0, /*nb_inplace_xor*/ - 0, /*nb_inplace_or*/ - 0, /*nb_floor_divide*/ - 0, /*nb_true_divide*/ - 0, /*nb_inplace_floor_divide*/ - 0, /*nb_inplace_true_divide*/ - 0, /*nb_index*/ - #if PY_VERSION_HEX >= 0x03050000 - 0, /*nb_matrix_multiply*/ - #endif - #if PY_VERSION_HEX >= 0x03050000 - 0, /*nb_inplace_matrix_multiply*/ - #endif -}; - -static PyTypeObject __pyx_type_6gevent_9_greenlet_Greenlet = { - PyVarObject_HEAD_INIT(0, 0) - "gevent._greenlet.Greenlet", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_9_greenlet_Greenlet), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_9_greenlet_Greenlet, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - __pyx_pw_6gevent_9_greenlet_8Greenlet_15__repr__, /*tp_repr*/ - &__pyx_tp_as_number_Greenlet, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "Greenlet(run=None, *args, **kwargs)\n\n A light-weight cooperatively-scheduled execution unit.\n ", /*tp_doc*/ - __pyx_tp_traverse_6gevent_9_greenlet_Greenlet, /*tp_traverse*/ - __pyx_tp_clear_6gevent_9_greenlet_Greenlet, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_9_greenlet_Greenlet, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_6gevent_9_greenlet_Greenlet, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_9_greenlet_8Greenlet_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_9_greenlet_Greenlet, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; -static struct __pyx_vtabstruct_6gevent_9_greenlet__dummy_event __pyx_vtable_6gevent_9_greenlet__dummy_event; - -static PyObject *__pyx_tp_new_6gevent_9_greenlet__dummy_event(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - struct __pyx_obj_6gevent_9_greenlet__dummy_event *p; - PyObject *o; - o = (*t->tp_alloc)(t, 0); - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_9_greenlet__dummy_event *)o); - p->__pyx_vtab = __pyx_vtabptr_6gevent_9_greenlet__dummy_event; - return o; -} - -static void __pyx_tp_dealloc_6gevent_9_greenlet__dummy_event(PyObject *o) { - (*Py_TYPE(o)->tp_free)(o); -} - -static PyObject *__pyx_getprop_6gevent_9_greenlet_12_dummy_event_pending(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_9_greenlet_12_dummy_event_7pending_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_9_greenlet_12_dummy_event_active(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_9_greenlet_12_dummy_event_6active_1__get__(o); -} - -static PyMethodDef __pyx_methods_6gevent_9_greenlet__dummy_event[] = { - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_6gevent_9_greenlet__dummy_event[] = { - {(char *)"pending", __pyx_getprop_6gevent_9_greenlet_12_dummy_event_pending, 0, (char *)0, 0}, - {(char *)"active", __pyx_getprop_6gevent_9_greenlet_12_dummy_event_active, 0, (char *)0, 0}, - {0, 0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_9_greenlet__dummy_event = { - PyVarObject_HEAD_INIT(0, 0) - "gevent._greenlet._dummy_event", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_9_greenlet__dummy_event), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_9_greenlet__dummy_event, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER, /*tp_flags*/ - "_dummy_event()", /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_9_greenlet__dummy_event, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_6gevent_9_greenlet__dummy_event, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_9_greenlet_12_dummy_event_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_9_greenlet__dummy_event, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; - -static struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py *__pyx_freelist___pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py[8]; -static int __pyx_freecount___pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py = 0; - -static PyObject *__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - PyObject *o; - if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount___pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py)))) { - o = (PyObject*)__pyx_freelist___pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py[--__pyx_freecount___pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py]; - memset(o, 0, sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py)); - (void) PyObject_INIT(o, t); - } else { - o = (*t->tp_alloc)(t, 0); - if (unlikely(!o)) return 0; - } - return o; -} - -static void __pyx_tp_dealloc___pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py(PyObject *o) { - if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount___pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py)))) { - __pyx_freelist___pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py[__pyx_freecount___pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py++] = ((struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py *)o); - } else { - (*Py_TYPE(o)->tp_free)(o); - } -} - -static PyTypeObject __pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py = { - PyVarObject_HEAD_INIT(0, 0) - "gevent._greenlet.__pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py", /*tp_name*/ - sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc___pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER, /*tp_flags*/ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - 0, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - 0, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new___pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; - -static struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_object____list____object___to_py *__pyx_freelist___pyx_scope_struct____Pyx_CFunc_object____list____object___to_py[8]; -static int __pyx_freecount___pyx_scope_struct____Pyx_CFunc_object____list____object___to_py = 0; - -static PyObject *__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_object____list____object___to_py(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - PyObject *o; - if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount___pyx_scope_struct____Pyx_CFunc_object____list____object___to_py > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_object____list____object___to_py)))) { - o = (PyObject*)__pyx_freelist___pyx_scope_struct____Pyx_CFunc_object____list____object___to_py[--__pyx_freecount___pyx_scope_struct____Pyx_CFunc_object____list____object___to_py]; - memset(o, 0, sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_object____list____object___to_py)); - (void) PyObject_INIT(o, t); - } else { - o = (*t->tp_alloc)(t, 0); - if (unlikely(!o)) return 0; - } - return o; -} - -static void __pyx_tp_dealloc___pyx_scope_struct____Pyx_CFunc_object____list____object___to_py(PyObject *o) { - if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount___pyx_scope_struct____Pyx_CFunc_object____list____object___to_py < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_object____list____object___to_py)))) { - __pyx_freelist___pyx_scope_struct____Pyx_CFunc_object____list____object___to_py[__pyx_freecount___pyx_scope_struct____Pyx_CFunc_object____list____object___to_py++] = ((struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_object____list____object___to_py *)o); - } else { - (*Py_TYPE(o)->tp_free)(o); - } -} - -static PyTypeObject __pyx_scope_struct____Pyx_CFunc_object____list____object___to_py = { - PyVarObject_HEAD_INIT(0, 0) - "gevent._greenlet.__pyx_scope_struct____Pyx_CFunc_object____list____object___to_py", /*tp_name*/ - sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_object____list____object___to_py), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc___pyx_scope_struct____Pyx_CFunc_object____list____object___to_py, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER, /*tp_flags*/ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - 0, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - 0, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new___pyx_scope_struct____Pyx_CFunc_object____list____object___to_py, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; - -static PyMethodDef __pyx_methods[] = { - {0, 0, 0, 0} -}; - -#if PY_MAJOR_VERSION >= 3 -#if CYTHON_PEP489_MULTI_PHASE_INIT -static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ -static int __pyx_pymod_exec__greenlet(PyObject* module); /*proto*/ -static PyModuleDef_Slot __pyx_moduledef_slots[] = { - {Py_mod_create, (void*)__pyx_pymod_create}, - {Py_mod_exec, (void*)__pyx_pymod_exec__greenlet}, - {0, NULL} -}; -#endif - -static struct PyModuleDef __pyx_moduledef = { - PyModuleDef_HEAD_INIT, - "_greenlet", - 0, /* m_doc */ - #if CYTHON_PEP489_MULTI_PHASE_INIT - 0, /* m_size */ - #else - -1, /* m_size */ - #endif - __pyx_methods /* m_methods */, - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_moduledef_slots, /* m_slots */ - #else - NULL, /* m_reload */ - #endif - NULL, /* m_traverse */ - NULL, /* m_clear */ - NULL /* m_free */ -}; -#endif - -static __Pyx_StringTabEntry __pyx_string_tab[] = { - {&__pyx_n_s_AssertionError, __pyx_k_AssertionError, sizeof(__pyx_k_AssertionError), 0, 0, 1, 1}, - {&__pyx_n_s_AttributeError, __pyx_k_AttributeError, sizeof(__pyx_k_AttributeError), 0, 0, 1, 1}, - {&__pyx_kp_s_Cannot_start_the_dummy_event, __pyx_k_Cannot_start_the_dummy_event, sizeof(__pyx_k_Cannot_start_the_dummy_event), 0, 0, 1, 0}, - {&__pyx_kp_s_Expected_callable_r, __pyx_k_Expected_callable_r, sizeof(__pyx_k_Expected_callable_r), 0, 0, 1, 0}, - {&__pyx_n_s_GEVENT_CONFIG, __pyx_k_GEVENT_CONFIG, sizeof(__pyx_k_GEVENT_CONFIG), 0, 0, 1, 1}, - {&__pyx_n_s_Greenlet, __pyx_k_Greenlet, sizeof(__pyx_k_Greenlet), 0, 0, 1, 1}, - {&__pyx_n_s_GreenletExit, __pyx_k_GreenletExit, sizeof(__pyx_k_GreenletExit), 0, 0, 1, 1}, - {&__pyx_n_s_Greenlet__formatinfo, __pyx_k_Greenlet__formatinfo, sizeof(__pyx_k_Greenlet__formatinfo), 0, 0, 1, 1}, - {&__pyx_n_s_Greenlet__notify_links, __pyx_k_Greenlet__notify_links, sizeof(__pyx_k_Greenlet__notify_links), 0, 0, 1, 1}, - {&__pyx_n_s_Greenlet__raise_exception, __pyx_k_Greenlet__raise_exception, sizeof(__pyx_k_Greenlet__raise_exception), 0, 0, 1, 1}, - {&__pyx_n_s_Greenlet__run, __pyx_k_Greenlet__run, sizeof(__pyx_k_Greenlet__run), 0, 0, 1, 1}, - {&__pyx_kp_s_Greenlet_d, __pyx_k_Greenlet_d, sizeof(__pyx_k_Greenlet_d), 0, 0, 1, 0}, - {&__pyx_n_s_Greenlet_get, __pyx_k_Greenlet_get, sizeof(__pyx_k_Greenlet_get), 0, 0, 1, 1}, - {&__pyx_n_s_Greenlet_has_links, __pyx_k_Greenlet_has_links, sizeof(__pyx_k_Greenlet_has_links), 0, 0, 1, 1}, - {&__pyx_n_s_Greenlet_join, __pyx_k_Greenlet_join, sizeof(__pyx_k_Greenlet_join), 0, 0, 1, 1}, - {&__pyx_n_s_Greenlet_kill, __pyx_k_Greenlet_kill, sizeof(__pyx_k_Greenlet_kill), 0, 0, 1, 1}, - {&__pyx_n_s_Greenlet_link, __pyx_k_Greenlet_link, sizeof(__pyx_k_Greenlet_link), 0, 0, 1, 1}, - {&__pyx_n_s_Greenlet_link_exception, __pyx_k_Greenlet_link_exception, sizeof(__pyx_k_Greenlet_link_exception), 0, 0, 1, 1}, - {&__pyx_n_s_Greenlet_link_value, __pyx_k_Greenlet_link_value, sizeof(__pyx_k_Greenlet_link_value), 0, 0, 1, 1}, - {&__pyx_n_s_Greenlet_name, __pyx_k_Greenlet_name, sizeof(__pyx_k_Greenlet_name), 0, 0, 1, 1}, - {&__pyx_n_s_Greenlet_rawlink, __pyx_k_Greenlet_rawlink, sizeof(__pyx_k_Greenlet_rawlink), 0, 0, 1, 1}, - {&__pyx_n_s_Greenlet_ready, __pyx_k_Greenlet_ready, sizeof(__pyx_k_Greenlet_ready), 0, 0, 1, 1}, - {&__pyx_n_s_Greenlet_run, __pyx_k_Greenlet_run, sizeof(__pyx_k_Greenlet_run), 0, 0, 1, 1}, - {&__pyx_n_s_Greenlet_spawn, __pyx_k_Greenlet_spawn, sizeof(__pyx_k_Greenlet_spawn), 0, 0, 1, 1}, - {&__pyx_n_s_Greenlet_spawn_later, __pyx_k_Greenlet_spawn_later, sizeof(__pyx_k_Greenlet_spawn_later), 0, 0, 1, 1}, - {&__pyx_n_s_Greenlet_spawning_stack, __pyx_k_Greenlet_spawning_stack, sizeof(__pyx_k_Greenlet_spawning_stack), 0, 0, 1, 1}, - {&__pyx_n_s_Greenlet_start, __pyx_k_Greenlet_start, sizeof(__pyx_k_Greenlet_start), 0, 0, 1, 1}, - {&__pyx_n_s_Greenlet_start_later, __pyx_k_Greenlet_start_later, sizeof(__pyx_k_Greenlet_start_later), 0, 0, 1, 1}, - {&__pyx_n_s_Greenlet_successful, __pyx_k_Greenlet_successful, sizeof(__pyx_k_Greenlet_successful), 0, 0, 1, 1}, - {&__pyx_n_s_Greenlet_throw, __pyx_k_Greenlet_throw, sizeof(__pyx_k_Greenlet_throw), 0, 0, 1, 1}, - {&__pyx_n_s_Greenlet_unlink, __pyx_k_Greenlet_unlink, sizeof(__pyx_k_Greenlet_unlink), 0, 0, 1, 1}, - {&__pyx_n_s_Greenlet_unlink_all, __pyx_k_Greenlet_unlink_all, sizeof(__pyx_k_Greenlet_unlink_all), 0, 0, 1, 1}, - {&__pyx_n_s_InvalidSwitchError, __pyx_k_InvalidSwitchError, sizeof(__pyx_k_InvalidSwitchError), 0, 0, 1, 1}, - {&__pyx_kp_s_Invalid_switch_into_Greenlet_get, __pyx_k_Invalid_switch_into_Greenlet_get, sizeof(__pyx_k_Invalid_switch_into_Greenlet_get), 0, 0, 1, 0}, - {&__pyx_kp_s_Invalid_switch_into_Greenlet_joi, __pyx_k_Invalid_switch_into_Greenlet_joi, sizeof(__pyx_k_Invalid_switch_into_Greenlet_joi), 0, 0, 1, 0}, - {&__pyx_n_s_Lazy, __pyx_k_Lazy, sizeof(__pyx_k_Lazy), 0, 0, 1, 1}, - {&__pyx_n_s_NameError, __pyx_k_NameError, sizeof(__pyx_k_NameError), 0, 0, 1, 1}, - {&__pyx_n_s_PYPY, __pyx_k_PYPY, sizeof(__pyx_k_PYPY), 0, 0, 1, 1}, - {&__pyx_n_s_PYPY_2, __pyx_k_PYPY_2, sizeof(__pyx_k_PYPY_2), 0, 0, 1, 1}, - {&__pyx_n_s_Pyx_CFunc_object____list____ob, __pyx_k_Pyx_CFunc_object____list____ob, sizeof(__pyx_k_Pyx_CFunc_object____list____ob), 0, 0, 1, 1}, - {&__pyx_n_s_Pyx_CFunc_object____list____ob_2, __pyx_k_Pyx_CFunc_object____list____ob_2, sizeof(__pyx_k_Pyx_CFunc_object____list____ob_2), 0, 0, 1, 1}, - {&__pyx_n_s_SpawnedLink, __pyx_k_SpawnedLink, sizeof(__pyx_k_SpawnedLink), 0, 0, 1, 1}, - {&__pyx_kp_s_The_run_argument_or_self__run_mu, __pyx_k_The_run_argument_or_self__run_mu, sizeof(__pyx_k_The_run_argument_or_self__run_mu), 0, 0, 1, 0}, - {&__pyx_n_s_Timeout, __pyx_k_Timeout, sizeof(__pyx_k_Timeout), 0, 0, 1, 1}, - {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1}, - {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1}, - {&__pyx_n_s_Waiter, __pyx_k_Waiter, sizeof(__pyx_k_Waiter), 0, 0, 1, 1}, - {&__pyx_kp_s__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 0, 1, 0}, - {&__pyx_kp_s__3, __pyx_k__3, sizeof(__pyx_k__3), 0, 0, 1, 0}, - {&__pyx_kp_s__4, __pyx_k__4, sizeof(__pyx_k__4), 0, 0, 1, 0}, - {&__pyx_kp_s__5, __pyx_k__5, sizeof(__pyx_k__5), 0, 0, 1, 0}, - {&__pyx_kp_s__6, __pyx_k__6, sizeof(__pyx_k__6), 0, 0, 1, 0}, - {&__pyx_kp_s__7, __pyx_k__7, sizeof(__pyx_k__7), 0, 0, 1, 0}, - {&__pyx_n_s_active, __pyx_k_active, sizeof(__pyx_k_active), 0, 0, 1, 1}, - {&__pyx_n_s_alive, __pyx_k_alive, sizeof(__pyx_k_alive), 0, 0, 1, 1}, - {&__pyx_n_s_all, __pyx_k_all, sizeof(__pyx_k_all), 0, 0, 1, 1}, - {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1}, - {&__pyx_n_s_block, __pyx_k_block, sizeof(__pyx_k_block), 0, 0, 1, 1}, - {&__pyx_n_s_bool, __pyx_k_bool, sizeof(__pyx_k_bool), 0, 0, 1, 1}, - {&__pyx_n_s_call, __pyx_k_call, sizeof(__pyx_k_call), 0, 0, 1, 1}, - {&__pyx_n_s_callback, __pyx_k_callback, sizeof(__pyx_k_callback), 0, 0, 1, 1}, - {&__pyx_n_s_cancel, __pyx_k_cancel, sizeof(__pyx_k_cancel), 0, 0, 1, 1}, - {&__pyx_n_s_cancelled_start_event, __pyx_k_cancelled_start_event, sizeof(__pyx_k_cancelled_start_event), 0, 0, 1, 1}, - {&__pyx_n_s_cb, __pyx_k_cb, sizeof(__pyx_k_cb), 0, 0, 1, 1}, - {&__pyx_n_s_cfunc_to_py, __pyx_k_cfunc_to_py, sizeof(__pyx_k_cfunc_to_py), 0, 0, 1, 1}, - {&__pyx_n_s_class, __pyx_k_class, sizeof(__pyx_k_class), 0, 0, 1, 1}, - {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, - {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1}, - {&__pyx_n_s_cls, __pyx_k_cls, sizeof(__pyx_k_cls), 0, 0, 1, 1}, - {&__pyx_n_s_config, __pyx_k_config, sizeof(__pyx_k_config), 0, 0, 1, 1}, - {&__pyx_n_s_continuation, __pyx_k_continuation, sizeof(__pyx_k_continuation), 0, 0, 1, 1}, - {&__pyx_n_s_continulet, __pyx_k_continulet, sizeof(__pyx_k_continulet), 0, 0, 1, 1}, - {&__pyx_n_s_continulet_2, __pyx_k_continulet_2, sizeof(__pyx_k_continulet_2), 0, 0, 1, 1}, - {&__pyx_n_s_count, __pyx_k_count, sizeof(__pyx_k_count), 0, 0, 1, 1}, - {&__pyx_n_s_dead, __pyx_k_dead, sizeof(__pyx_k_dead), 0, 0, 1, 1}, - {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1}, - {&__pyx_n_s_dummy_event_close, __pyx_k_dummy_event_close, sizeof(__pyx_k_dummy_event_close), 0, 0, 1, 1}, - {&__pyx_n_s_dummy_event_start, __pyx_k_dummy_event_start, sizeof(__pyx_k_dummy_event_start), 0, 0, 1, 1}, - {&__pyx_n_s_dummy_event_stop, __pyx_k_dummy_event_stop, sizeof(__pyx_k_dummy_event_stop), 0, 0, 1, 1}, - {&__pyx_n_s_dump_traceback, __pyx_k_dump_traceback, sizeof(__pyx_k_dump_traceback), 0, 0, 1, 1}, - {&__pyx_n_s_exc_info, __pyx_k_exc_info, sizeof(__pyx_k_exc_info), 0, 0, 1, 1}, - {&__pyx_n_s_exception, __pyx_k_exception, sizeof(__pyx_k_exception), 0, 0, 1, 1}, - {&__pyx_n_s_f_back, __pyx_k_f_back, sizeof(__pyx_k_f_back), 0, 0, 1, 1}, - {&__pyx_n_s_f_code, __pyx_k_f_code, sizeof(__pyx_k_f_code), 0, 0, 1, 1}, - {&__pyx_n_s_f_lineno, __pyx_k_f_lineno, sizeof(__pyx_k_f_lineno), 0, 0, 1, 1}, - {&__pyx_n_s_formatinfo, __pyx_k_formatinfo, sizeof(__pyx_k_formatinfo), 0, 0, 1, 1}, - {&__pyx_n_s_g, __pyx_k_g, sizeof(__pyx_k_g), 0, 0, 1, 1}, - {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1}, - {&__pyx_n_s_get_2, __pyx_k_get_2, sizeof(__pyx_k_get_2), 0, 0, 1, 1}, - {&__pyx_n_s_get_hub_class, __pyx_k_get_hub_class, sizeof(__pyx_k_get_hub_class), 0, 0, 1, 1}, - {&__pyx_n_s_get_hub_noargs, __pyx_k_get_hub_noargs, sizeof(__pyx_k_get_hub_noargs), 0, 0, 1, 1}, - {&__pyx_n_s_getcurrent, __pyx_k_getcurrent, sizeof(__pyx_k_getcurrent), 0, 0, 1, 1}, - {&__pyx_n_s_getframe, __pyx_k_getframe, sizeof(__pyx_k_getframe), 0, 0, 1, 1}, - {&__pyx_n_s_gevent, __pyx_k_gevent, sizeof(__pyx_k_gevent), 0, 0, 1, 1}, - {&__pyx_n_s_gevent__compat, __pyx_k_gevent__compat, sizeof(__pyx_k_gevent__compat), 0, 0, 1, 1}, - {&__pyx_n_s_gevent__config, __pyx_k_gevent__config, sizeof(__pyx_k_gevent__config), 0, 0, 1, 1}, - {&__pyx_n_s_gevent__greenlet, __pyx_k_gevent__greenlet, sizeof(__pyx_k_gevent__greenlet), 0, 0, 1, 1}, - {&__pyx_n_s_gevent__hub_local, __pyx_k_gevent__hub_local, sizeof(__pyx_k_gevent__hub_local), 0, 0, 1, 1}, - {&__pyx_n_s_gevent__hub_primitives, __pyx_k_gevent__hub_primitives, sizeof(__pyx_k_gevent__hub_primitives), 0, 0, 1, 1}, - {&__pyx_n_s_gevent__tblib, __pyx_k_gevent__tblib, sizeof(__pyx_k_gevent__tblib), 0, 0, 1, 1}, - {&__pyx_n_s_gevent__util, __pyx_k_gevent__util, sizeof(__pyx_k_gevent__util), 0, 0, 1, 1}, - {&__pyx_n_s_gevent_exceptions, __pyx_k_gevent_exceptions, sizeof(__pyx_k_gevent_exceptions), 0, 0, 1, 1}, - {&__pyx_n_s_gevent_timeout, __pyx_k_gevent_timeout, sizeof(__pyx_k_gevent_timeout), 0, 0, 1, 1}, - {&__pyx_n_s_glet, __pyx_k_glet, sizeof(__pyx_k_glet), 0, 0, 1, 1}, - {&__pyx_n_s_greenlet, __pyx_k_greenlet, sizeof(__pyx_k_greenlet), 0, 0, 1, 1}, - {&__pyx_n_s_greenlet__init, __pyx_k_greenlet__init, sizeof(__pyx_k_greenlet__init), 0, 0, 1, 1}, - {&__pyx_n_s_greenlet_imported, __pyx_k_greenlet_imported, sizeof(__pyx_k_greenlet_imported), 0, 0, 1, 1}, - {&__pyx_n_s_greenlet_init, __pyx_k_greenlet_init, sizeof(__pyx_k_greenlet_init), 0, 0, 1, 1}, - {&__pyx_n_s_greenlets, __pyx_k_greenlets, sizeof(__pyx_k_greenlets), 0, 0, 1, 1}, - {&__pyx_n_s_handle_error, __pyx_k_handle_error, sizeof(__pyx_k_handle_error), 0, 0, 1, 1}, - {&__pyx_n_s_has_links, __pyx_k_has_links, sizeof(__pyx_k_has_links), 0, 0, 1, 1}, - {&__pyx_n_s_hex, __pyx_k_hex, sizeof(__pyx_k_hex), 0, 0, 1, 1}, - {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1}, - {&__pyx_n_s_ident_registry, __pyx_k_ident_registry, sizeof(__pyx_k_ident_registry), 0, 0, 1, 1}, - {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, - {&__pyx_n_s_import_c_accel, __pyx_k_import_c_accel, sizeof(__pyx_k_import_c_accel), 0, 0, 1, 1}, - {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1}, - {&__pyx_n_s_items, __pyx_k_items, sizeof(__pyx_k_items), 0, 0, 1, 1}, - {&__pyx_n_s_iwait, __pyx_k_iwait, sizeof(__pyx_k_iwait), 0, 0, 1, 1}, - {&__pyx_n_s_iwait_on_objects, __pyx_k_iwait_on_objects, sizeof(__pyx_k_iwait_on_objects), 0, 0, 1, 1}, - {&__pyx_n_s_join, __pyx_k_join, sizeof(__pyx_k_join), 0, 0, 1, 1}, - {&__pyx_n_s_joinall, __pyx_k_joinall, sizeof(__pyx_k_joinall), 0, 0, 1, 1}, - {&__pyx_n_s_kill, __pyx_k_kill, sizeof(__pyx_k_kill), 0, 0, 1, 1}, - {&__pyx_n_s_kill_2, __pyx_k_kill_2, sizeof(__pyx_k_kill_2), 0, 0, 1, 1}, - {&__pyx_n_s_killall, __pyx_k_killall, sizeof(__pyx_k_killall), 0, 0, 1, 1}, - {&__pyx_n_s_kwargs, __pyx_k_kwargs, sizeof(__pyx_k_kwargs), 0, 0, 1, 1}, - {&__pyx_n_s_lambda, __pyx_k_lambda, sizeof(__pyx_k_lambda), 0, 0, 1, 1}, - {&__pyx_n_s_link, __pyx_k_link, sizeof(__pyx_k_link), 0, 0, 1, 1}, - {&__pyx_n_s_link_exception, __pyx_k_link_exception, sizeof(__pyx_k_link_exception), 0, 0, 1, 1}, - {&__pyx_n_s_link_value, __pyx_k_link_value, sizeof(__pyx_k_link_value), 0, 0, 1, 1}, - {&__pyx_n_s_load_traceback, __pyx_k_load_traceback, sizeof(__pyx_k_load_traceback), 0, 0, 1, 1}, - {&__pyx_n_s_loop, __pyx_k_loop, sizeof(__pyx_k_loop), 0, 0, 1, 1}, - {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, - {&__pyx_n_s_minimal_ident, __pyx_k_minimal_ident, sizeof(__pyx_k_minimal_ident), 0, 0, 1, 1}, - {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, - {&__pyx_n_s_name_2, __pyx_k_name_2, sizeof(__pyx_k_name_2), 0, 0, 1, 1}, - {&__pyx_n_s_nonzero, __pyx_k_nonzero, sizeof(__pyx_k_nonzero), 0, 0, 1, 1}, - {&__pyx_n_s_notify_links, __pyx_k_notify_links, sizeof(__pyx_k_notify_links), 0, 0, 1, 1}, - {&__pyx_n_s_parent, __pyx_k_parent, sizeof(__pyx_k_parent), 0, 0, 1, 1}, - {&__pyx_n_s_pending, __pyx_k_pending, sizeof(__pyx_k_pending), 0, 0, 1, 1}, - {&__pyx_n_s_pop, __pyx_k_pop, sizeof(__pyx_k_pop), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_capi, __pyx_k_pyx_capi, sizeof(__pyx_k_pyx_capi), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1}, - {&__pyx_n_s_raise_error, __pyx_k_raise_error, sizeof(__pyx_k_raise_error), 0, 0, 1, 1}, - {&__pyx_n_s_raise_exception, __pyx_k_raise_exception, sizeof(__pyx_k_raise_exception), 0, 0, 1, 1}, - {&__pyx_n_s_rawlink, __pyx_k_rawlink, sizeof(__pyx_k_rawlink), 0, 0, 1, 1}, - {&__pyx_n_s_readproperty, __pyx_k_readproperty, sizeof(__pyx_k_readproperty), 0, 0, 1, 1}, - {&__pyx_n_s_ready, __pyx_k_ready, sizeof(__pyx_k_ready), 0, 0, 1, 1}, - {&__pyx_n_s_ref, __pyx_k_ref, sizeof(__pyx_k_ref), 0, 0, 1, 1}, - {&__pyx_n_s_remove, __pyx_k_remove, sizeof(__pyx_k_remove), 0, 0, 1, 1}, - {&__pyx_n_s_reraise, __pyx_k_reraise, sizeof(__pyx_k_reraise), 0, 0, 1, 1}, - {&__pyx_n_s_result, __pyx_k_result, sizeof(__pyx_k_result), 0, 0, 1, 1}, - {&__pyx_n_s_reversed, __pyx_k_reversed, sizeof(__pyx_k_reversed), 0, 0, 1, 1}, - {&__pyx_n_s_run, __pyx_k_run, sizeof(__pyx_k_run), 0, 0, 1, 1}, - {&__pyx_n_s_run_2, __pyx_k_run_2, sizeof(__pyx_k_run_2), 0, 0, 1, 1}, - {&__pyx_n_s_run_callback, __pyx_k_run_callback, sizeof(__pyx_k_run_callback), 0, 0, 1, 1}, - {&__pyx_kp_s_s_s, __pyx_k_s_s, sizeof(__pyx_k_s_s), 0, 0, 1, 0}, - {&__pyx_kp_s_s_s_at_s, __pyx_k_s_s_at_s, sizeof(__pyx_k_s_s_at_s), 0, 0, 1, 0}, - {&__pyx_n_s_seconds, __pyx_k_seconds, sizeof(__pyx_k_seconds), 0, 0, 1, 1}, - {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1}, - {&__pyx_n_s_self_2, __pyx_k_self_2, sizeof(__pyx_k_self_2), 0, 0, 1, 1}, - {&__pyx_n_s_slots, __pyx_k_slots, sizeof(__pyx_k_slots), 0, 0, 1, 1}, - {&__pyx_n_s_source, __pyx_k_source, sizeof(__pyx_k_source), 0, 0, 1, 1}, - {&__pyx_n_s_spawn, __pyx_k_spawn, sizeof(__pyx_k_spawn), 0, 0, 1, 1}, - {&__pyx_n_s_spawn_later, __pyx_k_spawn_later, sizeof(__pyx_k_spawn_later), 0, 0, 1, 1}, - {&__pyx_n_s_spawn_tree_locals, __pyx_k_spawn_tree_locals, sizeof(__pyx_k_spawn_tree_locals), 0, 0, 1, 1}, - {&__pyx_n_s_spawning_stack, __pyx_k_spawning_stack, sizeof(__pyx_k_spawning_stack), 0, 0, 1, 1}, - {&__pyx_n_s_spawning_stack_frames, __pyx_k_spawning_stack_frames, sizeof(__pyx_k_spawning_stack_frames), 0, 0, 1, 1}, - {&__pyx_n_s_spawning_stack_limit, __pyx_k_spawning_stack_limit, sizeof(__pyx_k_spawning_stack_limit), 0, 0, 1, 1}, - {&__pyx_kp_s_src_gevent_greenlet_py, __pyx_k_src_gevent_greenlet_py, sizeof(__pyx_k_src_gevent_greenlet_py), 0, 0, 1, 0}, - {&__pyx_n_s_start, __pyx_k_start, sizeof(__pyx_k_start), 0, 0, 1, 1}, - {&__pyx_n_s_start_completed_event, __pyx_k_start_completed_event, sizeof(__pyx_k_start_completed_event), 0, 0, 1, 1}, - {&__pyx_n_s_start_later, __pyx_k_start_later, sizeof(__pyx_k_start_later), 0, 0, 1, 1}, - {&__pyx_n_s_start_new_or_dummy, __pyx_k_start_new_or_dummy, sizeof(__pyx_k_start_new_or_dummy), 0, 0, 1, 1}, - {&__pyx_n_s_stop, __pyx_k_stop, sizeof(__pyx_k_stop), 0, 0, 1, 1}, - {&__pyx_kp_s_stringsource, __pyx_k_stringsource, sizeof(__pyx_k_stringsource), 0, 0, 1, 0}, - {&__pyx_n_s_successful, __pyx_k_successful, sizeof(__pyx_k_successful), 0, 0, 1, 1}, - {&__pyx_n_s_switch, __pyx_k_switch, sizeof(__pyx_k_switch), 0, 0, 1, 1}, - {&__pyx_n_s_sys, __pyx_k_sys, sizeof(__pyx_k_sys), 0, 0, 1, 1}, - {&__pyx_n_s_sys_exc_info, __pyx_k_sys_exc_info, sizeof(__pyx_k_sys_exc_info), 0, 0, 1, 1}, - {&__pyx_n_s_sys_getframe, __pyx_k_sys_getframe, sizeof(__pyx_k_sys_getframe), 0, 0, 1, 1}, - {&__pyx_n_s_t, __pyx_k_t, sizeof(__pyx_k_t), 0, 0, 1, 1}, - {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, - {&__pyx_n_s_threadlocal, __pyx_k_threadlocal, sizeof(__pyx_k_threadlocal), 0, 0, 1, 1}, - {&__pyx_n_s_throw, __pyx_k_throw, sizeof(__pyx_k_throw), 0, 0, 1, 1}, - {&__pyx_n_s_timeout, __pyx_k_timeout, sizeof(__pyx_k_timeout), 0, 0, 1, 1}, - {&__pyx_n_s_timer, __pyx_k_timer, sizeof(__pyx_k_timer), 0, 0, 1, 1}, - {&__pyx_n_s_track_greenlet_tree, __pyx_k_track_greenlet_tree, sizeof(__pyx_k_track_greenlet_tree), 0, 0, 1, 1}, - {&__pyx_n_s_unlink, __pyx_k_unlink, sizeof(__pyx_k_unlink), 0, 0, 1, 1}, - {&__pyx_n_s_unlink_all, __pyx_k_unlink_all, sizeof(__pyx_k_unlink_all), 0, 0, 1, 1}, - {&__pyx_n_s_wait, __pyx_k_wait, sizeof(__pyx_k_wait), 0, 0, 1, 1}, - {&__pyx_n_s_wait_on_objects, __pyx_k_wait_on_objects, sizeof(__pyx_k_wait_on_objects), 0, 0, 1, 1}, - {&__pyx_n_s_waiter, __pyx_k_waiter, sizeof(__pyx_k_waiter), 0, 0, 1, 1}, - {&__pyx_n_s_waiter_2, __pyx_k_waiter_2, sizeof(__pyx_k_waiter_2), 0, 0, 1, 1}, - {&__pyx_n_s_weakref, __pyx_k_weakref, sizeof(__pyx_k_weakref), 0, 0, 1, 1}, - {&__pyx_n_s_wrap, __pyx_k_wrap, sizeof(__pyx_k_wrap), 0, 0, 1, 1}, - {&__pyx_n_s_wref, __pyx_k_wref, sizeof(__pyx_k_wref), 0, 0, 1, 1}, - {0, 0, 0, 0, 0, 0, 0} -}; -static int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin___import__ = __Pyx_GetBuiltinName(__pyx_n_s_import); if (!__pyx_builtin___import__) __PYX_ERR(0, 45, __pyx_L1_error) - __pyx_builtin_NameError = __Pyx_GetBuiltinName(__pyx_n_s_NameError); if (!__pyx_builtin_NameError) __PYX_ERR(0, 323, __pyx_L1_error) - __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 65, __pyx_L1_error) - __pyx_builtin_reversed = __Pyx_GetBuiltinName(__pyx_n_s_reversed); if (!__pyx_builtin_reversed) __PYX_ERR(0, 127, __pyx_L1_error) - __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 135, __pyx_L1_error) - __pyx_builtin_AttributeError = __Pyx_GetBuiltinName(__pyx_n_s_AttributeError); if (!__pyx_builtin_AttributeError) __PYX_ERR(0, 251, __pyx_L1_error) - __pyx_builtin_hex = __Pyx_GetBuiltinName(__pyx_n_s_hex); if (!__pyx_builtin_hex) __PYX_ERR(0, 429, __pyx_L1_error) - __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_n_s_id); if (!__pyx_builtin_id) __PYX_ERR(0, 429, __pyx_L1_error) - __pyx_builtin_AssertionError = __Pyx_GetBuiltinName(__pyx_n_s_AssertionError); if (!__pyx_builtin_AssertionError) __PYX_ERR(0, 830, __pyx_L1_error) - return 0; - __pyx_L1_error:; - return -1; -} - -static int __Pyx_InitCachedConstants(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - - /* "src/gevent/greenlet.py":222 - * # itself has never been documented or supported. - * if not callable(self._run): - * raise TypeError("The run argument or self._run must be callable") # <<<<<<<<<<<<<< - * - * self.args = args - */ - __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_s_The_run_argument_or_self__run_mu); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 222, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple_); - __Pyx_GIVEREF(__pyx_tuple_); - - /* "src/gevent/greenlet.py":560 - * """ - * if cls is Greenlet and not args and 'run' not in kwargs: - * raise TypeError("") # <<<<<<<<<<<<<< - * g = cls(*args, **kwargs) - * g.start_later(seconds) - */ - __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s__4); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 560, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__8); - __Pyx_GIVEREF(__pyx_tuple__8); - - /* "src/gevent/greenlet.py":690 - * - * def _report_result(self, result): - * self._exc_info = (None, None, None) # <<<<<<<<<<<<<< - * self.value = result - * if self._links and not self._notifier: - */ - __pyx_tuple__10 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 690, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__10); - __Pyx_GIVEREF(__pyx_tuple__10); - - /* "src/gevent/greenlet.py":722 - * self._report_result(result) - * finally: - * self.__dict__.pop('_run', None) # <<<<<<<<<<<<<< - * self.args = () - * self.kwargs.clear() - */ - __pyx_tuple__11 = PyTuple_Pack(2, __pyx_n_s_run_2, Py_None); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 722, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__11); - __Pyx_GIVEREF(__pyx_tuple__11); - __pyx_tuple__12 = PyTuple_Pack(2, __pyx_n_s_run_2, Py_None); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 722, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__12); - __Pyx_GIVEREF(__pyx_tuple__12); - __pyx_tuple__13 = PyTuple_Pack(2, __pyx_n_s_run_2, Py_None); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 722, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__13); - __Pyx_GIVEREF(__pyx_tuple__13); - - /* "src/gevent/greenlet.py":830 - * - * def start(self, cb): # pylint:disable=unused-argument - * raise AssertionError("Cannot start the dummy event") # <<<<<<<<<<<<<< - * - * def close(self): - */ - __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_Cannot_start_the_dummy_event); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 830, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__17); - __Pyx_GIVEREF(__pyx_tuple__17); - - /* "src/gevent/greenlet.py":846 - * glet.parent.handle_error(glet, *sys_exc_info()) - * if waiter is not None: - * waiter.switch(None) # <<<<<<<<<<<<<< - * - * - */ - __pyx_tuple__18 = PyTuple_Pack(1, Py_None); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 846, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__18); - __Pyx_GIVEREF(__pyx_tuple__18); - - /* "cfunc.to_py":65 - * @cname("__Pyx_CFunc_object____list____object____object___to_py") - * cdef object __Pyx_CFunc_object____list____object____object___to_py(object (*f)(list, object, object) ): - * def wrap(list greenlets, object exception, object waiter): # <<<<<<<<<<<<<< - * """wrap(greenlets: list, exception, waiter)""" - * return f(greenlets, exception, waiter) - */ - __pyx_tuple__19 = PyTuple_Pack(3, __pyx_n_s_greenlets, __pyx_n_s_exception, __pyx_n_s_waiter); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(4, 65, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__19); - __Pyx_GIVEREF(__pyx_tuple__19); - __pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__19, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_wrap, 65, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) __PYX_ERR(4, 65, __pyx_L1_error) - __pyx_tuple__21 = PyTuple_Pack(2, __pyx_n_s_greenlets, __pyx_n_s_exception); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(4, 65, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__21); - __Pyx_GIVEREF(__pyx_tuple__21); - __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_wrap, 65, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(4, 65, __pyx_L1_error) - - /* "src/gevent/greenlet.py":45 - * # is assignment) without generating a 'lvalue is not valid target' - * # error. - * locals()['getcurrent'] = __import__('greenlet').getcurrent # <<<<<<<<<<<<<< - * locals()['greenlet_init'] = lambda: None - * locals()['Waiter'] = _waiter.Waiter - */ - __pyx_tuple__23 = PyTuple_Pack(1, __pyx_n_s_greenlet); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 45, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__23); - __Pyx_GIVEREF(__pyx_tuple__23); - - /* "src/gevent/greenlet.py":114 - * class _Frame(object): - * - * __slots__ = ('f_code', 'f_lineno', 'f_back') # <<<<<<<<<<<<<< - * - * def __init__(self, f_code, f_lineno, f_back): - */ - __pyx_tuple__24 = PyTuple_Pack(3, __pyx_n_s_f_code, __pyx_n_s_f_lineno, __pyx_n_s_f_back); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 114, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__24); - __Pyx_GIVEREF(__pyx_tuple__24); - - /* "src/gevent/greenlet.py":268 - * - * @Lazy - * def spawning_stack(self): # <<<<<<<<<<<<<< - * # Store this in the __dict__. We don't use it from the C - * # code. It's tempting to discard _spawning_stack_frames - */ - __pyx_tuple__25 = PyTuple_Pack(1, __pyx_n_s_self_2); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 268, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__25); - __Pyx_GIVEREF(__pyx_tuple__25); - __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_greenlet_py, __pyx_n_s_spawning_stack, 268, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(0, 268, __pyx_L1_error) - - /* "src/gevent/greenlet.py":301 - * - * @readproperty - * def name(self): # <<<<<<<<<<<<<< - * """ - * The greenlet name. By default, a unique name is constructed using - */ - __pyx_tuple__27 = PyTuple_Pack(1, __pyx_n_s_self_2); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 301, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__27); - __Pyx_GIVEREF(__pyx_tuple__27); - __pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_greenlet_py, __pyx_n_s_name_2, 301, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) __PYX_ERR(0, 301, __pyx_L1_error) - - /* "src/gevent/greenlet.py":311 - * return 'Greenlet-%d' % (self.minimal_ident) - * - * def _raise_exception(self): # <<<<<<<<<<<<<< - * reraise(*self.exc_info) - * - */ - __pyx_tuple__29 = PyTuple_Pack(1, __pyx_n_s_self_2); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 311, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__29); - __Pyx_GIVEREF(__pyx_tuple__29); - __pyx_codeobj__30 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__29, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_greenlet_py, __pyx_n_s_raise_exception, 311, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__30)) __PYX_ERR(0, 311, __pyx_L1_error) - - /* "src/gevent/greenlet.py":402 - * return bool(self) - * - * def ready(self): # <<<<<<<<<<<<<< - * """ - * Return a true value if and only if the greenlet has finished - */ - __pyx_tuple__31 = PyTuple_Pack(1, __pyx_n_s_self_2); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 402, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__31); - __Pyx_GIVEREF(__pyx_tuple__31); - __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__31, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_greenlet_py, __pyx_n_s_ready, 402, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) __PYX_ERR(0, 402, __pyx_L1_error) - - /* "src/gevent/greenlet.py":413 - * return self.dead or self._exc_info is not None - * - * def successful(self): # <<<<<<<<<<<<<< - * """ - * Return a true value if and only if the greenlet has finished execution - */ - __pyx_tuple__33 = PyTuple_Pack(1, __pyx_n_s_self_2); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 413, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__33); - __Pyx_GIVEREF(__pyx_tuple__33); - __pyx_codeobj__34 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_greenlet_py, __pyx_n_s_successful, 413, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__34)) __PYX_ERR(0, 413, __pyx_L1_error) - - /* "src/gevent/greenlet.py":436 - * - * - * def _formatinfo(self): # <<<<<<<<<<<<<< - * info = self._formatted_info - * if info is not None: - */ - __pyx_tuple__35 = PyTuple_Pack(1, __pyx_n_s_self_2); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(0, 436, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__35); - __Pyx_GIVEREF(__pyx_tuple__35); - __pyx_codeobj__36 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__35, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_greenlet_py, __pyx_n_s_formatinfo, 436, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__36)) __PYX_ERR(0, 436, __pyx_L1_error) - - /* "src/gevent/greenlet.py":486 - * return (ei[0], ei[1], load_traceback(ei[2])) - * - * def throw(self, *args): # <<<<<<<<<<<<<< - * """Immediately switch into the greenlet and raise an exception in it. - * - */ - __pyx_tuple__37 = PyTuple_Pack(2, __pyx_n_s_self_2, __pyx_n_s_args); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(0, 486, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__37); - __Pyx_GIVEREF(__pyx_tuple__37); - __pyx_codeobj__38 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__37, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_greenlet_py, __pyx_n_s_throw, 486, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__38)) __PYX_ERR(0, 486, __pyx_L1_error) - - /* "src/gevent/greenlet.py":508 - * self.__handle_death_before_start(args) - * - * def start(self): # <<<<<<<<<<<<<< - * """Schedule the greenlet to run in this loop iteration""" - * if self._start_event is None: - */ - __pyx_tuple__39 = PyTuple_Pack(1, __pyx_n_s_self_2); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(0, 508, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__39); - __Pyx_GIVEREF(__pyx_tuple__39); - __pyx_codeobj__40 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__39, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_greenlet_py, __pyx_n_s_start, 508, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__40)) __PYX_ERR(0, 508, __pyx_L1_error) - - /* "src/gevent/greenlet.py":513 - * self._start_event = self.parent.loop.run_callback(self.switch) - * - * def start_later(self, seconds): # <<<<<<<<<<<<<< - * """ - * start_later(seconds) -> None - */ - __pyx_tuple__41 = PyTuple_Pack(2, __pyx_n_s_self_2, __pyx_n_s_seconds); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(0, 513, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__41); - __Pyx_GIVEREF(__pyx_tuple__41); - __pyx_codeobj__42 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__41, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_greenlet_py, __pyx_n_s_start_later, 513, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__42)) __PYX_ERR(0, 513, __pyx_L1_error) - - /* "src/gevent/greenlet.py":525 - * - * @classmethod - * def spawn(cls, *args, **kwargs): # <<<<<<<<<<<<<< - * """ - * spawn(function, *args, **kwargs) -> Greenlet - */ - __pyx_tuple__43 = PyTuple_Pack(4, __pyx_n_s_cls, __pyx_n_s_args, __pyx_n_s_kwargs, __pyx_n_s_g); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(0, 525, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__43); - __Pyx_GIVEREF(__pyx_tuple__43); - __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__43, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_greenlet_py, __pyx_n_s_spawn, 525, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) __PYX_ERR(0, 525, __pyx_L1_error) - - /* "src/gevent/greenlet.py":543 - * - * @classmethod - * def spawn_later(cls, seconds, *args, **kwargs): # <<<<<<<<<<<<<< - * """ - * spawn_later(seconds, function, *args, **kwargs) -> Greenlet - */ - __pyx_tuple__45 = PyTuple_Pack(5, __pyx_n_s_cls, __pyx_n_s_seconds, __pyx_n_s_args, __pyx_n_s_kwargs, __pyx_n_s_g); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 543, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__45); - __Pyx_GIVEREF(__pyx_tuple__45); - __pyx_codeobj__46 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__45, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_greenlet_py, __pyx_n_s_spawn_later, 543, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__46)) __PYX_ERR(0, 543, __pyx_L1_error) - - /* "src/gevent/greenlet.py":565 - * return g - * - * def kill(self, exception=GreenletExit, block=True, timeout=None): # <<<<<<<<<<<<<< - * """ - * Raise the ``exception`` in the greenlet. - */ - __pyx_tuple__47 = PyTuple_Pack(5, __pyx_n_s_self_2, __pyx_n_s_exception, __pyx_n_s_block, __pyx_n_s_timeout, __pyx_n_s_waiter); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(0, 565, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__47); - __Pyx_GIVEREF(__pyx_tuple__47); - __pyx_codeobj__48 = (PyObject*)__Pyx_PyCode_New(4, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__47, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_greenlet_py, __pyx_n_s_kill_2, 565, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__48)) __PYX_ERR(0, 565, __pyx_L1_error) - - /* "src/gevent/greenlet.py":617 - * # thus it should not raise when the greenlet is already killed (= not started) - * - * def get(self, block=True, timeout=None): # <<<<<<<<<<<<<< - * """ - * get(block=True, timeout=None) -> object - */ - __pyx_tuple__49 = PyTuple_Pack(6, __pyx_n_s_self_2, __pyx_n_s_block, __pyx_n_s_timeout, __pyx_n_s_switch, __pyx_n_s_t, __pyx_n_s_result); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(0, 617, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__49); - __Pyx_GIVEREF(__pyx_tuple__49); - __pyx_codeobj__50 = (PyObject*)__Pyx_PyCode_New(3, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__49, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_greenlet_py, __pyx_n_s_get_2, 617, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__50)) __PYX_ERR(0, 617, __pyx_L1_error) - - /* "src/gevent/greenlet.py":661 - * self._raise_exception() - * - * def join(self, timeout=None): # <<<<<<<<<<<<<< - * """ - * join(timeout=None) -> None - */ - __pyx_tuple__51 = PyTuple_Pack(2, __pyx_n_s_self_2, __pyx_n_s_timeout); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(0, 661, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__51); - __Pyx_GIVEREF(__pyx_tuple__51); - __pyx_codeobj__52 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__51, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_greenlet_py, __pyx_n_s_join, 661, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__52)) __PYX_ERR(0, 661, __pyx_L1_error) - - /* "src/gevent/greenlet.py":710 - * del exc_info - * - * def run(self): # <<<<<<<<<<<<<< - * try: - * self.__cancel_start() - */ - __pyx_tuple__53 = PyTuple_Pack(2, __pyx_n_s_self_2, __pyx_n_s_result); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(0, 710, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__53); - __Pyx_GIVEREF(__pyx_tuple__53); - __pyx_codeobj__54 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__53, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_greenlet_py, __pyx_n_s_run, 710, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__54)) __PYX_ERR(0, 710, __pyx_L1_error) - - /* "src/gevent/greenlet.py":726 - * self.kwargs.clear() - * - * def _run(self): # <<<<<<<<<<<<<< - * """ - * Subclasses may override this method to take any number of - */ - __pyx_tuple__55 = PyTuple_Pack(1, __pyx_n_s_self_2); if (unlikely(!__pyx_tuple__55)) __PYX_ERR(0, 726, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__55); - __Pyx_GIVEREF(__pyx_tuple__55); - __pyx_codeobj__56 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__55, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_greenlet_py, __pyx_n_s_run_2, 726, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__56)) __PYX_ERR(0, 726, __pyx_L1_error) - - /* "src/gevent/greenlet.py":740 - * return - * - * def has_links(self): # <<<<<<<<<<<<<< - * return len(self._links) - * - */ - __pyx_tuple__57 = PyTuple_Pack(1, __pyx_n_s_self_2); if (unlikely(!__pyx_tuple__57)) __PYX_ERR(0, 740, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__57); - __Pyx_GIVEREF(__pyx_tuple__57); - __pyx_codeobj__58 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__57, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_greenlet_py, __pyx_n_s_has_links, 740, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__58)) __PYX_ERR(0, 740, __pyx_L1_error) - - /* "src/gevent/greenlet.py":743 - * return len(self._links) - * - * def rawlink(self, callback): # <<<<<<<<<<<<<< - * """ - * Register a callable to be executed when the greenlet finishes - */ - __pyx_tuple__59 = PyTuple_Pack(2, __pyx_n_s_self_2, __pyx_n_s_callback); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(0, 743, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__59); - __Pyx_GIVEREF(__pyx_tuple__59); - __pyx_codeobj__60 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__59, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_greenlet_py, __pyx_n_s_rawlink, 743, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__60)) __PYX_ERR(0, 743, __pyx_L1_error) - - /* "src/gevent/greenlet.py":759 - * self._notifier = self.parent.loop.run_callback(self._notify_links) - * - * def link(self, callback, SpawnedLink=SpawnedLink): # <<<<<<<<<<<<<< - * """ - * Link greenlet's completion to a callable. - */ - __pyx_tuple__61 = PyTuple_Pack(3, __pyx_n_s_self_2, __pyx_n_s_callback, __pyx_n_s_SpawnedLink); if (unlikely(!__pyx_tuple__61)) __PYX_ERR(0, 759, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__61); - __Pyx_GIVEREF(__pyx_tuple__61); - __pyx_codeobj__62 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__61, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_greenlet_py, __pyx_n_s_link, 759, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__62)) __PYX_ERR(0, 759, __pyx_L1_error) - - /* "src/gevent/greenlet.py":773 - * self.rawlink(SpawnedLink(callback)) - * - * def unlink(self, callback): # <<<<<<<<<<<<<< - * """Remove the callback set by :meth:`link` or :meth:`rawlink`""" - * try: - */ - __pyx_tuple__63 = PyTuple_Pack(2, __pyx_n_s_self_2, __pyx_n_s_callback); if (unlikely(!__pyx_tuple__63)) __PYX_ERR(0, 773, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__63); - __Pyx_GIVEREF(__pyx_tuple__63); - __pyx_codeobj__64 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__63, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_greenlet_py, __pyx_n_s_unlink, 773, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__64)) __PYX_ERR(0, 773, __pyx_L1_error) - - /* "src/gevent/greenlet.py":780 - * pass - * - * def unlink_all(self): # <<<<<<<<<<<<<< - * """ - * Remove all the callbacks. - */ - __pyx_tuple__65 = PyTuple_Pack(1, __pyx_n_s_self_2); if (unlikely(!__pyx_tuple__65)) __PYX_ERR(0, 780, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__65); - __Pyx_GIVEREF(__pyx_tuple__65); - __pyx_codeobj__66 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__65, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_greenlet_py, __pyx_n_s_unlink_all, 780, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__66)) __PYX_ERR(0, 780, __pyx_L1_error) - - /* "src/gevent/greenlet.py":788 - * del self._links[:] - * - * def link_value(self, callback, SpawnedLink=SuccessSpawnedLink): # <<<<<<<<<<<<<< - * """ - * Like :meth:`link` but *callback* is only notified when the greenlet - */ - __pyx_tuple__67 = PyTuple_Pack(3, __pyx_n_s_self_2, __pyx_n_s_callback, __pyx_n_s_SpawnedLink); if (unlikely(!__pyx_tuple__67)) __PYX_ERR(0, 788, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__67); - __Pyx_GIVEREF(__pyx_tuple__67); - __pyx_codeobj__68 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__67, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_greenlet_py, __pyx_n_s_link_value, 788, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__68)) __PYX_ERR(0, 788, __pyx_L1_error) - - /* "src/gevent/greenlet.py":796 - * self.link(callback, SpawnedLink=SpawnedLink) - * - * def link_exception(self, callback, SpawnedLink=FailureSpawnedLink): # <<<<<<<<<<<<<< - * """ - * Like :meth:`link` but *callback* is only notified when the - */ - __pyx_tuple__69 = PyTuple_Pack(3, __pyx_n_s_self_2, __pyx_n_s_callback, __pyx_n_s_SpawnedLink); if (unlikely(!__pyx_tuple__69)) __PYX_ERR(0, 796, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__69); - __Pyx_GIVEREF(__pyx_tuple__69); - __pyx_codeobj__70 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__69, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_greenlet_py, __pyx_n_s_link_exception, 796, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__70)) __PYX_ERR(0, 796, __pyx_L1_error) - - /* "src/gevent/greenlet.py":804 - * self.link(callback, SpawnedLink=SpawnedLink) - * - * def _notify_links(self): # <<<<<<<<<<<<<< - * while self._links: - * # Early links are allowed to remove later links - */ - __pyx_tuple__71 = PyTuple_Pack(1, __pyx_n_s_self_2); if (unlikely(!__pyx_tuple__71)) __PYX_ERR(0, 804, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__71); - __Pyx_GIVEREF(__pyx_tuple__71); - __pyx_codeobj__72 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__71, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_greenlet_py, __pyx_n_s_notify_links, 804, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__72)) __PYX_ERR(0, 804, __pyx_L1_error) - - /* "src/gevent/greenlet.py":821 - * - * class _dummy_event(object): - * __slots__ = ('pending', 'active') # <<<<<<<<<<<<<< - * - * def __init__(self): - */ - __pyx_tuple__73 = PyTuple_Pack(2, __pyx_n_s_pending, __pyx_n_s_active); if (unlikely(!__pyx_tuple__73)) __PYX_ERR(0, 821, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__73); - __Pyx_GIVEREF(__pyx_tuple__73); - - /* "src/gevent/greenlet.py":826 - * self.pending = self.active = False - * - * def stop(self): # <<<<<<<<<<<<<< - * pass - * - */ - __pyx_tuple__74 = PyTuple_Pack(1, __pyx_n_s_self_2); if (unlikely(!__pyx_tuple__74)) __PYX_ERR(0, 826, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__74); - __Pyx_GIVEREF(__pyx_tuple__74); - __pyx_codeobj__75 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__74, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_greenlet_py, __pyx_n_s_stop, 826, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__75)) __PYX_ERR(0, 826, __pyx_L1_error) - - /* "src/gevent/greenlet.py":829 - * pass - * - * def start(self, cb): # pylint:disable=unused-argument # <<<<<<<<<<<<<< - * raise AssertionError("Cannot start the dummy event") - * - */ - __pyx_tuple__76 = PyTuple_Pack(2, __pyx_n_s_self_2, __pyx_n_s_cb); if (unlikely(!__pyx_tuple__76)) __PYX_ERR(0, 829, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__76); - __Pyx_GIVEREF(__pyx_tuple__76); - __pyx_codeobj__77 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__76, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_greenlet_py, __pyx_n_s_start, 829, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__77)) __PYX_ERR(0, 829, __pyx_L1_error) - - /* "src/gevent/greenlet.py":832 - * raise AssertionError("Cannot start the dummy event") - * - * def close(self): # <<<<<<<<<<<<<< - * pass - * - */ - __pyx_tuple__78 = PyTuple_Pack(1, __pyx_n_s_self_2); if (unlikely(!__pyx_tuple__78)) __PYX_ERR(0, 832, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__78); - __Pyx_GIVEREF(__pyx_tuple__78); - __pyx_codeobj__79 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__78, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_greenlet_py, __pyx_n_s_close, 832, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__79)) __PYX_ERR(0, 832, __pyx_L1_error) - - /* "src/gevent/greenlet.py":839 - * - * - * def _kill(glet, exception, waiter): # <<<<<<<<<<<<<< - * try: - * glet.throw(exception) - */ - __pyx_tuple__80 = PyTuple_Pack(3, __pyx_n_s_glet, __pyx_n_s_exception, __pyx_n_s_waiter); if (unlikely(!__pyx_tuple__80)) __PYX_ERR(0, 839, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__80); - __Pyx_GIVEREF(__pyx_tuple__80); - __pyx_codeobj__81 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__80, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_greenlet_py, __pyx_n_s_kill, 839, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__81)) __PYX_ERR(0, 839, __pyx_L1_error) - - /* "src/gevent/greenlet.py":849 - * - * - * def joinall(greenlets, timeout=None, raise_error=False, count=None): # <<<<<<<<<<<<<< - * """ - * Wait for the ``greenlets`` to finish. - */ - __pyx_tuple__82 = PyTuple_Pack(4, __pyx_n_s_greenlets, __pyx_n_s_timeout, __pyx_n_s_raise_error, __pyx_n_s_count); if (unlikely(!__pyx_tuple__82)) __PYX_ERR(0, 849, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__82); - __Pyx_GIVEREF(__pyx_tuple__82); - __pyx_codeobj__83 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__82, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_greenlet_py, __pyx_n_s_joinall, 849, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__83)) __PYX_ERR(0, 849, __pyx_L1_error) - - /* "src/gevent/greenlet.py":894 - * - * - * def killall(greenlets, exception=GreenletExit, block=True, timeout=None): # <<<<<<<<<<<<<< - * """ - * Forceably terminate all the ``greenlets`` by causing them to raise ``exception``. - */ - __pyx_tuple__84 = PyTuple_Pack(8, __pyx_n_s_greenlets, __pyx_n_s_exception, __pyx_n_s_block, __pyx_n_s_timeout, __pyx_n_s_loop, __pyx_n_s_waiter, __pyx_n_s_t, __pyx_n_s_alive); if (unlikely(!__pyx_tuple__84)) __PYX_ERR(0, 894, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__84); - __Pyx_GIVEREF(__pyx_tuple__84); - __pyx_codeobj__85 = (PyObject*)__Pyx_PyCode_New(4, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__84, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_greenlet_py, __pyx_n_s_killall, 894, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__85)) __PYX_ERR(0, 894, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_InitGlobals(void) { - __pyx_umethod_PyDict_Type_items.type = (PyObject*)&PyDict_Type; - if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_10 = PyInt_FromLong(10); if (unlikely(!__pyx_int_10)) __PYX_ERR(0, 1, __pyx_L1_error) - return 0; - __pyx_L1_error:; - return -1; -} - -static int __Pyx_modinit_global_init_code(void); /*proto*/ -static int __Pyx_modinit_variable_export_code(void); /*proto*/ -static int __Pyx_modinit_function_export_code(void); /*proto*/ -static int __Pyx_modinit_type_init_code(void); /*proto*/ -static int __Pyx_modinit_type_import_code(void); /*proto*/ -static int __Pyx_modinit_variable_import_code(void); /*proto*/ -static int __Pyx_modinit_function_import_code(void); /*proto*/ - -static int __Pyx_modinit_global_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); - /*--- Global init code ---*/ - __pyx_v_6gevent_9_greenlet_sys_getframe = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_9_greenlet_sys_exc_info = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_9_greenlet_Timeout = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_9_greenlet_GreenletExit = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_9_greenlet_InvalidSwitchError = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_9_greenlet__greenlet__init__ = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_9_greenlet__threadlocal = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_9_greenlet_get_hub_class = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_9_greenlet_wref = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_9_greenlet_dump_traceback = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_9_greenlet_load_traceback = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_9_greenlet_wait = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_9_greenlet_iwait = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_9_greenlet_reraise = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_9_greenlet_GEVENT_CONFIG = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_9_greenlet__cancelled_start_event = ((struct __pyx_obj_6gevent_9_greenlet__dummy_event *)Py_None); Py_INCREF(Py_None); - __pyx_v_6gevent_9_greenlet__start_completed_event = ((struct __pyx_obj_6gevent_9_greenlet__dummy_event *)Py_None); Py_INCREF(Py_None); - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_variable_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); - /*--- Variable export code ---*/ - if (__Pyx_ExportVoidPtr(__pyx_n_s_PYPY, (void *)&__pyx_v_6gevent_9_greenlet__PYPY, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_sys_getframe, (void *)&__pyx_v_6gevent_9_greenlet_sys_getframe, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_sys_exc_info, (void *)&__pyx_v_6gevent_9_greenlet_sys_exc_info, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_Timeout, (void *)&__pyx_v_6gevent_9_greenlet_Timeout, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_GreenletExit, (void *)&__pyx_v_6gevent_9_greenlet_GreenletExit, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_InvalidSwitchError, (void *)&__pyx_v_6gevent_9_greenlet_InvalidSwitchError, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_greenlet_imported, (void *)&__pyx_v_6gevent_9_greenlet__greenlet_imported, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_greenlet__init, (void *)&__pyx_v_6gevent_9_greenlet__greenlet__init__, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_threadlocal, (void *)&__pyx_v_6gevent_9_greenlet__threadlocal, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_get_hub_class, (void *)&__pyx_v_6gevent_9_greenlet_get_hub_class, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_wref, (void *)&__pyx_v_6gevent_9_greenlet_wref, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_dump_traceback, (void *)&__pyx_v_6gevent_9_greenlet_dump_traceback, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_load_traceback, (void *)&__pyx_v_6gevent_9_greenlet_load_traceback, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_wait, (void *)&__pyx_v_6gevent_9_greenlet_wait, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_iwait, (void *)&__pyx_v_6gevent_9_greenlet_iwait, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_reraise, (void *)&__pyx_v_6gevent_9_greenlet_reraise, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_GEVENT_CONFIG, (void *)&__pyx_v_6gevent_9_greenlet_GEVENT_CONFIG, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_cancelled_start_event, (void *)&__pyx_v_6gevent_9_greenlet__cancelled_start_event, "struct __pyx_obj_6gevent_9_greenlet__dummy_event *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_start_completed_event, (void *)&__pyx_v_6gevent_9_greenlet__start_completed_event, "struct __pyx_obj_6gevent_9_greenlet__dummy_event *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_function_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); - /*--- Function export code ---*/ - if (__Pyx_ExportFunction("_init", (void (*)(void))__pyx_f_6gevent_9_greenlet__init, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportFunction("_extract_stack", (void (*)(void))__pyx_f_6gevent_9_greenlet__extract_stack, "PyObject *(int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportFunction("_Frame_from_list", (void (*)(void))__pyx_f_6gevent_9_greenlet__Frame_from_list, "struct __pyx_obj_6gevent_9_greenlet__Frame *(PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportFunction("_killall3", (void (*)(void))__pyx_f_6gevent_9_greenlet__killall3, "PyObject *(PyObject *, PyObject *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportFunction("_killall", (void (*)(void))__pyx_f_6gevent_9_greenlet__killall, "PyObject *(PyObject *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportFunction("joinall", (void (*)(void))__pyx_f_6gevent_9_greenlet_joinall, "PyObject *(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_9_greenlet_joinall *__pyx_optional_args)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_type_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); - /*--- Type init code ---*/ - __pyx_ptype_6gevent_9_greenlet_greenlet = __Pyx_ImportType("greenlet", "greenlet", sizeof(PyGreenlet), 0); if (unlikely(!__pyx_ptype_6gevent_9_greenlet_greenlet)) __PYX_ERR(1, 17, __pyx_L1_error) - __pyx_ptype_6gevent_9_greenlet_CodeType = __Pyx_ImportType("types", "CodeType", sizeof(PyCodeObject), 0); if (unlikely(!__pyx_ptype_6gevent_9_greenlet_CodeType)) __PYX_ERR(1, 40, __pyx_L1_error) - __pyx_ptype_6gevent_9_greenlet_FrameType = __Pyx_ImportType("types", "FrameType", sizeof(PyFrameObject), 0); if (unlikely(!__pyx_ptype_6gevent_9_greenlet_FrameType)) __PYX_ERR(1, 45, __pyx_L1_error) - if (PyType_Ready(&__pyx_type_6gevent_9_greenlet_SpawnedLink) < 0) __PYX_ERR(0, 55, __pyx_L1_error) - __pyx_type_6gevent_9_greenlet_SpawnedLink.tp_print = 0; - if (PyObject_SetAttrString(__pyx_m, "SpawnedLink", (PyObject *)&__pyx_type_6gevent_9_greenlet_SpawnedLink) < 0) __PYX_ERR(0, 55, __pyx_L1_error) - __pyx_ptype_6gevent_9_greenlet_SpawnedLink = &__pyx_type_6gevent_9_greenlet_SpawnedLink; - __pyx_type_6gevent_9_greenlet_SuccessSpawnedLink.tp_base = __pyx_ptype_6gevent_9_greenlet_SpawnedLink; - if (PyType_Ready(&__pyx_type_6gevent_9_greenlet_SuccessSpawnedLink) < 0) __PYX_ERR(0, 89, __pyx_L1_error) - __pyx_type_6gevent_9_greenlet_SuccessSpawnedLink.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_9_greenlet_SuccessSpawnedLink.tp_dictoffset && __pyx_type_6gevent_9_greenlet_SuccessSpawnedLink.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_9_greenlet_SuccessSpawnedLink.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; - } - if (PyObject_SetAttrString(__pyx_m, "SuccessSpawnedLink", (PyObject *)&__pyx_type_6gevent_9_greenlet_SuccessSpawnedLink) < 0) __PYX_ERR(0, 89, __pyx_L1_error) - __pyx_ptype_6gevent_9_greenlet_SuccessSpawnedLink = &__pyx_type_6gevent_9_greenlet_SuccessSpawnedLink; - __pyx_type_6gevent_9_greenlet_FailureSpawnedLink.tp_base = __pyx_ptype_6gevent_9_greenlet_SpawnedLink; - if (PyType_Ready(&__pyx_type_6gevent_9_greenlet_FailureSpawnedLink) < 0) __PYX_ERR(0, 101, __pyx_L1_error) - __pyx_type_6gevent_9_greenlet_FailureSpawnedLink.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_9_greenlet_FailureSpawnedLink.tp_dictoffset && __pyx_type_6gevent_9_greenlet_FailureSpawnedLink.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_9_greenlet_FailureSpawnedLink.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; - } - if (PyObject_SetAttrString(__pyx_m, "FailureSpawnedLink", (PyObject *)&__pyx_type_6gevent_9_greenlet_FailureSpawnedLink) < 0) __PYX_ERR(0, 101, __pyx_L1_error) - __pyx_ptype_6gevent_9_greenlet_FailureSpawnedLink = &__pyx_type_6gevent_9_greenlet_FailureSpawnedLink; - if (PyType_Ready(&__pyx_type_6gevent_9_greenlet__Frame) < 0) __PYX_ERR(0, 112, __pyx_L1_error) - __pyx_type_6gevent_9_greenlet__Frame.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_9_greenlet__Frame.tp_dictoffset && __pyx_type_6gevent_9_greenlet__Frame.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_9_greenlet__Frame.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; - } - if (PyObject_SetAttrString(__pyx_m, "_Frame", (PyObject *)&__pyx_type_6gevent_9_greenlet__Frame) < 0) __PYX_ERR(0, 112, __pyx_L1_error) - __pyx_ptype_6gevent_9_greenlet__Frame = &__pyx_type_6gevent_9_greenlet__Frame; - __pyx_vtabptr_6gevent_9_greenlet_Greenlet = &__pyx_vtable_6gevent_9_greenlet_Greenlet; - __pyx_vtable_6gevent_9_greenlet_Greenlet.has_links = (int (*)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, int __pyx_skip_dispatch))__pyx_f_6gevent_9_greenlet_8Greenlet_has_links; - __pyx_vtable_6gevent_9_greenlet_Greenlet.join = (PyObject *(*)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_9_greenlet_8Greenlet_join *__pyx_optional_args))__pyx_f_6gevent_9_greenlet_8Greenlet_join; - __pyx_vtable_6gevent_9_greenlet_Greenlet.ready = (int (*)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, int __pyx_skip_dispatch))__pyx_f_6gevent_9_greenlet_8Greenlet_ready; - __pyx_vtable_6gevent_9_greenlet_Greenlet.successful = (int (*)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, int __pyx_skip_dispatch))__pyx_f_6gevent_9_greenlet_8Greenlet_successful; - __pyx_vtable_6gevent_9_greenlet_Greenlet.rawlink = (PyObject *(*)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, PyObject *, int __pyx_skip_dispatch))__pyx_f_6gevent_9_greenlet_8Greenlet_rawlink; - __pyx_vtable_6gevent_9_greenlet_Greenlet._formatinfo = (PyObject *(*)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, int __pyx_skip_dispatch))__pyx_f_6gevent_9_greenlet_8Greenlet__formatinfo; - __pyx_vtable_6gevent_9_greenlet_Greenlet._get_minimal_ident = (PyObject *(*)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *))__pyx_f_6gevent_9_greenlet_8Greenlet__get_minimal_ident; - __pyx_vtable_6gevent_9_greenlet_Greenlet.__pyx___started_but_aborted = (int (*)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *))__pyx_f_6gevent_9_greenlet_8Greenlet___started_but_aborted; - __pyx_vtable_6gevent_9_greenlet_Greenlet.__pyx___start_cancelled_by_kill = (int (*)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *))__pyx_f_6gevent_9_greenlet_8Greenlet___start_cancelled_by_kill; - __pyx_vtable_6gevent_9_greenlet_Greenlet.__pyx___start_pending = (int (*)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *))__pyx_f_6gevent_9_greenlet_8Greenlet___start_pending; - __pyx_vtable_6gevent_9_greenlet_Greenlet.__pyx___never_started_or_killed = (int (*)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *))__pyx_f_6gevent_9_greenlet_8Greenlet___never_started_or_killed; - __pyx_vtable_6gevent_9_greenlet_Greenlet.__pyx___start_completed = (int (*)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *))__pyx_f_6gevent_9_greenlet_8Greenlet___start_completed; - __pyx_vtable_6gevent_9_greenlet_Greenlet.__pyx___handle_death_before_start = (PyObject *(*)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, PyObject *))__pyx_f_6gevent_9_greenlet_8Greenlet___handle_death_before_start; - __pyx_vtable_6gevent_9_greenlet_Greenlet.__pyx___cancel_start = (PyObject *(*)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *))__pyx_f_6gevent_9_greenlet_8Greenlet___cancel_start; - __pyx_vtable_6gevent_9_greenlet_Greenlet._report_result = (PyObject *(*)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, PyObject *))__pyx_f_6gevent_9_greenlet_8Greenlet__report_result; - __pyx_vtable_6gevent_9_greenlet_Greenlet._report_error = (PyObject *(*)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, PyObject *))__pyx_f_6gevent_9_greenlet_8Greenlet__report_error; - __pyx_vtable_6gevent_9_greenlet_Greenlet._notify_links = (PyObject *(*)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, int __pyx_skip_dispatch))__pyx_f_6gevent_9_greenlet_8Greenlet__notify_links; - __pyx_type_6gevent_9_greenlet_Greenlet.tp_base = __pyx_ptype_6gevent_9_greenlet_greenlet; - if (PyType_Ready(&__pyx_type_6gevent_9_greenlet_Greenlet) < 0) __PYX_ERR(0, 157, __pyx_L1_error) - __pyx_type_6gevent_9_greenlet_Greenlet.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_9_greenlet_Greenlet.tp_dictoffset && __pyx_type_6gevent_9_greenlet_Greenlet.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_9_greenlet_Greenlet.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - #if CYTHON_COMPILING_IN_CPYTHON - { - PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_6gevent_9_greenlet_Greenlet, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 157, __pyx_L1_error) - if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) { - __pyx_wrapperbase_6gevent_9_greenlet_8Greenlet___init__ = *((PyWrapperDescrObject *)wrapper)->d_base; - __pyx_wrapperbase_6gevent_9_greenlet_8Greenlet___init__.doc = __pyx_doc_6gevent_9_greenlet_8Greenlet___init__; - ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_6gevent_9_greenlet_8Greenlet___init__; - } - } - #endif - if (__Pyx_SetVtable(__pyx_type_6gevent_9_greenlet_Greenlet.tp_dict, __pyx_vtabptr_6gevent_9_greenlet_Greenlet) < 0) __PYX_ERR(0, 157, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "Greenlet", (PyObject *)&__pyx_type_6gevent_9_greenlet_Greenlet) < 0) __PYX_ERR(0, 157, __pyx_L1_error) - __pyx_ptype_6gevent_9_greenlet_Greenlet = &__pyx_type_6gevent_9_greenlet_Greenlet; - __pyx_vtabptr_6gevent_9_greenlet__dummy_event = &__pyx_vtable_6gevent_9_greenlet__dummy_event; - __pyx_vtable_6gevent_9_greenlet__dummy_event.stop = (PyObject *(*)(struct __pyx_obj_6gevent_9_greenlet__dummy_event *, int __pyx_skip_dispatch))__pyx_f_6gevent_9_greenlet_12_dummy_event_stop; - __pyx_vtable_6gevent_9_greenlet__dummy_event.start = (PyObject *(*)(struct __pyx_obj_6gevent_9_greenlet__dummy_event *, PyObject *, int __pyx_skip_dispatch))__pyx_f_6gevent_9_greenlet_12_dummy_event_start; - __pyx_vtable_6gevent_9_greenlet__dummy_event.close = (PyObject *(*)(struct __pyx_obj_6gevent_9_greenlet__dummy_event *, int __pyx_skip_dispatch))__pyx_f_6gevent_9_greenlet_12_dummy_event_close; - if (PyType_Ready(&__pyx_type_6gevent_9_greenlet__dummy_event) < 0) __PYX_ERR(0, 820, __pyx_L1_error) - __pyx_type_6gevent_9_greenlet__dummy_event.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_9_greenlet__dummy_event.tp_dictoffset && __pyx_type_6gevent_9_greenlet__dummy_event.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_9_greenlet__dummy_event.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; - } - if (__Pyx_SetVtable(__pyx_type_6gevent_9_greenlet__dummy_event.tp_dict, __pyx_vtabptr_6gevent_9_greenlet__dummy_event) < 0) __PYX_ERR(0, 820, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "_dummy_event", (PyObject *)&__pyx_type_6gevent_9_greenlet__dummy_event) < 0) __PYX_ERR(0, 820, __pyx_L1_error) - __pyx_ptype_6gevent_9_greenlet__dummy_event = &__pyx_type_6gevent_9_greenlet__dummy_event; - if (PyType_Ready(&__pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py) < 0) __PYX_ERR(4, 64, __pyx_L1_error) - __pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py.tp_dictoffset && __pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; - } - __pyx_ptype___pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py = &__pyx_scope_struct____Pyx_CFunc_object____list____object____object___to_py; - if (PyType_Ready(&__pyx_scope_struct____Pyx_CFunc_object____list____object___to_py) < 0) __PYX_ERR(4, 64, __pyx_L1_error) - __pyx_scope_struct____Pyx_CFunc_object____list____object___to_py.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_scope_struct____Pyx_CFunc_object____list____object___to_py.tp_dictoffset && __pyx_scope_struct____Pyx_CFunc_object____list____object___to_py.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_scope_struct____Pyx_CFunc_object____list____object___to_py.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; - } - __pyx_ptype___pyx_scope_struct____Pyx_CFunc_object____list____object___to_py = &__pyx_scope_struct____Pyx_CFunc_object____list____object___to_py; - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_type_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); - /*--- Type import code ---*/ - __pyx_ptype_6gevent_7__ident_ref = __Pyx_ImportType("weakref", "ref", sizeof(PyWeakReference), 0); if (unlikely(!__pyx_ptype_6gevent_7__ident_ref)) __PYX_ERR(5, 5, __pyx_L1_error) - __pyx_ptype_6gevent_7__ident_ValuedWeakRef = __Pyx_ImportType("gevent.__ident", "ValuedWeakRef", sizeof(struct __pyx_obj_6gevent_7__ident_ValuedWeakRef), 1); if (unlikely(!__pyx_ptype_6gevent_7__ident_ValuedWeakRef)) __PYX_ERR(5, 15, __pyx_L1_error) - __pyx_ptype_6gevent_7__ident_IdentRegistry = __Pyx_ImportType("gevent.__ident", "IdentRegistry", sizeof(struct __pyx_obj_6gevent_7__ident_IdentRegistry), 1); if (unlikely(!__pyx_ptype_6gevent_7__ident_IdentRegistry)) __PYX_ERR(5, 19, __pyx_L1_error) - __pyx_vtabptr_6gevent_7__ident_IdentRegistry = (struct __pyx_vtabstruct_6gevent_7__ident_IdentRegistry*)__Pyx_GetVtable(__pyx_ptype_6gevent_7__ident_IdentRegistry->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_7__ident_IdentRegistry)) __PYX_ERR(5, 19, __pyx_L1_error) - __pyx_ptype_6gevent_21__greenlet_primitives_greenlet = __Pyx_ImportType("greenlet", "greenlet", sizeof(PyGreenlet), 0); if (unlikely(!__pyx_ptype_6gevent_21__greenlet_primitives_greenlet)) __PYX_ERR(2, 12, __pyx_L1_error) - __pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet = __Pyx_ImportType("gevent.__greenlet_primitives", "TrackedRawGreenlet", sizeof(struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet), 1); if (unlikely(!__pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet)) __PYX_ERR(2, 37, __pyx_L1_error) - __pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop = __Pyx_ImportType("gevent.__greenlet_primitives", "SwitchOutGreenletWithLoop", sizeof(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop), 1); if (unlikely(!__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop)) __PYX_ERR(2, 40, __pyx_L1_error) - __pyx_vtabptr_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop = (struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop*)__Pyx_GetVtable(__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop)) __PYX_ERR(2, 40, __pyx_L1_error) - __pyx_ptype_6gevent_8__waiter_greenlet = __Pyx_ImportType("greenlet", "greenlet", sizeof(PyGreenlet), 0); if (unlikely(!__pyx_ptype_6gevent_8__waiter_greenlet)) __PYX_ERR(3, 15, __pyx_L1_error) - __pyx_ptype_6gevent_8__waiter_Waiter = __Pyx_ImportType("gevent.__waiter", "Waiter", sizeof(struct __pyx_obj_6gevent_8__waiter_Waiter), 1); if (unlikely(!__pyx_ptype_6gevent_8__waiter_Waiter)) __PYX_ERR(3, 33, __pyx_L1_error) - __pyx_vtabptr_6gevent_8__waiter_Waiter = (struct __pyx_vtabstruct_6gevent_8__waiter_Waiter*)__Pyx_GetVtable(__pyx_ptype_6gevent_8__waiter_Waiter->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_8__waiter_Waiter)) __PYX_ERR(3, 33, __pyx_L1_error) - __pyx_ptype_6gevent_8__waiter_MultipleWaiter = __Pyx_ImportType("gevent.__waiter", "MultipleWaiter", sizeof(struct __pyx_obj_6gevent_8__waiter_MultipleWaiter), 1); if (unlikely(!__pyx_ptype_6gevent_8__waiter_MultipleWaiter)) __PYX_ERR(3, 47, __pyx_L1_error) - __pyx_vtabptr_6gevent_8__waiter_MultipleWaiter = (struct __pyx_vtabstruct_6gevent_8__waiter_MultipleWaiter*)__Pyx_GetVtable(__pyx_ptype_6gevent_8__waiter_MultipleWaiter->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_8__waiter_MultipleWaiter)) __PYX_ERR(3, 47, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_variable_import_code(void) { - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); - /*--- Variable import code ---*/ - __pyx_t_1 = __Pyx_ImportModule("gevent.__ident"); if (!__pyx_t_1) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_1, "heappop", (void **)&__pyx_vp_6gevent_7__ident_heappop, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_1, "heappush", (void **)&__pyx_vp_6gevent_7__ident_heappush, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_1, "WeakKeyDictionary", (void **)&__pyx_vp_6gevent_7__ident_WeakKeyDictionary, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_2 = __Pyx_ImportModule("gevent.__greenlet_primitives"); if (!__pyx_t_2) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_2, "wref", (void **)&__pyx_vp_6gevent_21__greenlet_primitives_wref, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_2, "BlockingSwitchOutError", (void **)&__pyx_vp_6gevent_21__greenlet_primitives_BlockingSwitchOutError, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_2, "_greenlet_imported", (void **)&__pyx_vp_6gevent_21__greenlet_primitives__greenlet_imported, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_3 = __Pyx_ImportModule("gevent.__hub_local"); if (!__pyx_t_3) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_3, "_threadlocal", (void **)&__pyx_vp_6gevent_11__hub_local__threadlocal, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_4 = __Pyx_ImportModule("gevent.__waiter"); if (!__pyx_t_4) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_4, "sys", (void **)&__pyx_vp_6gevent_8__waiter_sys, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_4, "ConcurrentObjectUseError", (void **)&__pyx_vp_6gevent_8__waiter_ConcurrentObjectUseError, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_4, "_greenlet_imported", (void **)&__pyx_vp_6gevent_8__waiter__greenlet_imported, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_4, "_NONE", (void **)&__pyx_vp_6gevent_8__waiter__NONE, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_function_import_code(void) { - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); - /*--- Function import code ---*/ - __pyx_t_1 = __Pyx_ImportModule("gevent.__hub_local"); if (!__pyx_t_1) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportFunction(__pyx_t_1, "get_hub_noargs", (void (**)(void))&__pyx_f_6gevent_11__hub_local_get_hub_noargs, "struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *(int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_RefNannyFinishContext(); - return -1; -} - - -#if PY_MAJOR_VERSION < 3 -#ifdef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC void -#else -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -#endif -#else -#ifdef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC PyObject * -#else -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -#endif -#endif -#ifndef CYTHON_SMALL_CODE -#if defined(__clang__) - #define CYTHON_SMALL_CODE -#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4))) - #define CYTHON_SMALL_CODE __attribute__((cold)) -#else - #define CYTHON_SMALL_CODE -#endif -#endif - - -#if PY_MAJOR_VERSION < 3 -__Pyx_PyMODINIT_FUNC init_greenlet(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC init_greenlet(void) -#else -__Pyx_PyMODINIT_FUNC PyInit__greenlet(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC PyInit__greenlet(void) -#if CYTHON_PEP489_MULTI_PHASE_INIT -{ - return PyModuleDef_Init(&__pyx_moduledef); -} -static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) { - PyObject *value = PyObject_GetAttrString(spec, from_name); - int result = 0; - if (likely(value)) { - result = PyDict_SetItemString(moddict, to_name, value); - Py_DECREF(value); - } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Clear(); - } else { - result = -1; - } - return result; -} -static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) { - PyObject *module = NULL, *moddict, *modname; - if (__pyx_m) - return __Pyx_NewRef(__pyx_m); - modname = PyObject_GetAttrString(spec, "name"); - if (unlikely(!modname)) goto bad; - module = PyModule_NewObject(modname); - Py_DECREF(modname); - if (unlikely(!module)) goto bad; - moddict = PyModule_GetDict(module); - if (unlikely(!moddict)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__") < 0)) goto bad; - return module; -bad: - Py_XDECREF(module); - return NULL; -} - - -static int __pyx_pymod_exec__greenlet(PyObject *__pyx_pyinit_module) -#endif -#endif -{ - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - int __pyx_t_10; - __Pyx_RefNannyDeclarations - #if CYTHON_PEP489_MULTI_PHASE_INIT - if (__pyx_m && __pyx_m == __pyx_pyinit_module) return 0; - #elif PY_MAJOR_VERSION >= 3 - if (__pyx_m) return __Pyx_NewRef(__pyx_m); - #endif - #if CYTHON_REFNANNY -__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); -if (!__Pyx_RefNanny) { - PyErr_Clear(); - __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); - if (!__Pyx_RefNanny) - Py_FatalError("failed to import 'refnanny' module"); -} -#endif - __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit__greenlet(void)", 0); - if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) - #ifdef __Pyx_CyFunction_USED - if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_FusedFunction_USED - if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Coroutine_USED - if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Generator_USED - if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_AsyncGen_USED - if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_StopAsyncIteration_USED - if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - /*--- Library function declarations ---*/ - /*--- Threads initialization code ---*/ - #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS - #ifdef WITH_THREAD /* Python build with threading support? */ - PyEval_InitThreads(); - #endif - #endif - /*--- Module creation code ---*/ - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_m = __pyx_pyinit_module; - Py_INCREF(__pyx_m); - #else - #if PY_MAJOR_VERSION < 3 - __pyx_m = Py_InitModule4("_greenlet", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); - #else - __pyx_m = PyModule_Create(&__pyx_moduledef); - #endif - if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) - Py_INCREF(__pyx_d); - __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) - #if CYTHON_COMPILING_IN_PYPY - Py_INCREF(__pyx_b); - #endif - if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - /*--- Initialize various global constants etc. ---*/ - if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) - if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - if (__pyx_module_is_main_gevent___greenlet) { - if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - } - #if PY_MAJOR_VERSION >= 3 - { - PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) - if (!PyDict_GetItemString(modules, "gevent._greenlet")) { - if (unlikely(PyDict_SetItemString(modules, "gevent._greenlet", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) - } - } - #endif - /*--- Builtin init code ---*/ - if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Constants init code ---*/ - if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Global type/function init code ---*/ - (void)__Pyx_modinit_global_init_code(); - if (unlikely(__Pyx_modinit_variable_export_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_function_export_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_type_init_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_type_import_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_variable_import_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_function_import_code() != 0)) goto __pyx_L1_error; - /*--- Execution code ---*/ - #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) - if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - - /* "src/gevent/greenlet.py":6 - * from __future__ import absolute_import, print_function, division - * - * from sys import _getframe as sys_getframe # <<<<<<<<<<<<<< - * from sys import exc_info as sys_exc_info - * from weakref import ref as wref - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_getframe); - __Pyx_GIVEREF(__pyx_n_s_getframe); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_getframe); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_sys, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_getframe); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_v_6gevent_9_greenlet_sys_getframe); - __Pyx_DECREF_SET(__pyx_v_6gevent_9_greenlet_sys_getframe, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/greenlet.py":7 - * - * from sys import _getframe as sys_getframe - * from sys import exc_info as sys_exc_info # <<<<<<<<<<<<<< - * from weakref import ref as wref - * - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_exc_info); - __Pyx_GIVEREF(__pyx_n_s_exc_info); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_exc_info); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_sys, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_exc_info); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_v_6gevent_9_greenlet_sys_exc_info); - __Pyx_DECREF_SET(__pyx_v_6gevent_9_greenlet_sys_exc_info, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":8 - * from sys import _getframe as sys_getframe - * from sys import exc_info as sys_exc_info - * from weakref import ref as wref # <<<<<<<<<<<<<< - * - * # XXX: How to get cython to let us rename this as RawGreenlet - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_ref); - __Pyx_GIVEREF(__pyx_n_s_ref); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_ref); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_weakref, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_ref); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_v_6gevent_9_greenlet_wref); - __Pyx_DECREF_SET(__pyx_v_6gevent_9_greenlet_wref, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/greenlet.py":12 - * # XXX: How to get cython to let us rename this as RawGreenlet - * # like we prefer? - * from greenlet import greenlet # <<<<<<<<<<<<<< - * from greenlet import GreenletExit - * - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_greenlet); - __Pyx_GIVEREF(__pyx_n_s_greenlet); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_greenlet); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_greenlet, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":13 - * # like we prefer? - * from greenlet import greenlet - * from greenlet import GreenletExit # <<<<<<<<<<<<<< - * - * from gevent._compat import reraise - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_GreenletExit); - __Pyx_GIVEREF(__pyx_n_s_GreenletExit); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_GreenletExit); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_greenlet, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_GreenletExit); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_v_6gevent_9_greenlet_GreenletExit); - __Pyx_DECREF_SET(__pyx_v_6gevent_9_greenlet_GreenletExit, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/greenlet.py":15 - * from greenlet import GreenletExit - * - * from gevent._compat import reraise # <<<<<<<<<<<<<< - * from gevent._compat import PYPY as _PYPY - * from gevent._tblib import dump_traceback - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_reraise); - __Pyx_GIVEREF(__pyx_n_s_reraise); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_reraise); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_gevent__compat, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_reraise); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_v_6gevent_9_greenlet_reraise); - __Pyx_DECREF_SET(__pyx_v_6gevent_9_greenlet_reraise, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":16 - * - * from gevent._compat import reraise - * from gevent._compat import PYPY as _PYPY # <<<<<<<<<<<<<< - * from gevent._tblib import dump_traceback - * from gevent._tblib import load_traceback - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 16, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_PYPY_2); - __Pyx_GIVEREF(__pyx_n_s_PYPY_2); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PYPY_2); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_gevent__compat, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 16, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_PYPY_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 16, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 16, __pyx_L1_error) - __pyx_v_6gevent_9_greenlet__PYPY = __pyx_t_3; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/greenlet.py":17 - * from gevent._compat import reraise - * from gevent._compat import PYPY as _PYPY - * from gevent._tblib import dump_traceback # <<<<<<<<<<<<<< - * from gevent._tblib import load_traceback - * - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 17, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_dump_traceback); - __Pyx_GIVEREF(__pyx_n_s_dump_traceback); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_dump_traceback); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_gevent__tblib, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 17, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_dump_traceback); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 17, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_v_6gevent_9_greenlet_dump_traceback); - __Pyx_DECREF_SET(__pyx_v_6gevent_9_greenlet_dump_traceback, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":18 - * from gevent._compat import PYPY as _PYPY - * from gevent._tblib import dump_traceback - * from gevent._tblib import load_traceback # <<<<<<<<<<<<<< - * - * from gevent.exceptions import InvalidSwitchError - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 18, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_load_traceback); - __Pyx_GIVEREF(__pyx_n_s_load_traceback); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_load_traceback); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_gevent__tblib, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 18, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_load_traceback); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 18, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_v_6gevent_9_greenlet_load_traceback); - __Pyx_DECREF_SET(__pyx_v_6gevent_9_greenlet_load_traceback, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/greenlet.py":20 - * from gevent._tblib import load_traceback - * - * from gevent.exceptions import InvalidSwitchError # <<<<<<<<<<<<<< - * - * from gevent._hub_primitives import iwait_on_objects as iwait - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 20, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_InvalidSwitchError); - __Pyx_GIVEREF(__pyx_n_s_InvalidSwitchError); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_InvalidSwitchError); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_gevent_exceptions, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 20, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_InvalidSwitchError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 20, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_v_6gevent_9_greenlet_InvalidSwitchError); - __Pyx_DECREF_SET(__pyx_v_6gevent_9_greenlet_InvalidSwitchError, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":22 - * from gevent.exceptions import InvalidSwitchError - * - * from gevent._hub_primitives import iwait_on_objects as iwait # <<<<<<<<<<<<<< - * from gevent._hub_primitives import wait_on_objects as wait - * - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 22, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_iwait_on_objects); - __Pyx_GIVEREF(__pyx_n_s_iwait_on_objects); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_iwait_on_objects); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_gevent__hub_primitives, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 22, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_iwait_on_objects); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 22, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_v_6gevent_9_greenlet_iwait); - __Pyx_DECREF_SET(__pyx_v_6gevent_9_greenlet_iwait, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/greenlet.py":23 - * - * from gevent._hub_primitives import iwait_on_objects as iwait - * from gevent._hub_primitives import wait_on_objects as wait # <<<<<<<<<<<<<< - * - * from gevent.timeout import Timeout - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 23, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_wait_on_objects); - __Pyx_GIVEREF(__pyx_n_s_wait_on_objects); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_wait_on_objects); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_gevent__hub_primitives, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_wait_on_objects); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 23, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_v_6gevent_9_greenlet_wait); - __Pyx_DECREF_SET(__pyx_v_6gevent_9_greenlet_wait, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":25 - * from gevent._hub_primitives import wait_on_objects as wait - * - * from gevent.timeout import Timeout # <<<<<<<<<<<<<< - * - * from gevent._config import config as GEVENT_CONFIG - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 25, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_Timeout); - __Pyx_GIVEREF(__pyx_n_s_Timeout); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_Timeout); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_gevent_timeout, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 25, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Timeout); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 25, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_v_6gevent_9_greenlet_Timeout); - __Pyx_DECREF_SET(__pyx_v_6gevent_9_greenlet_Timeout, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/greenlet.py":27 - * from gevent.timeout import Timeout - * - * from gevent._config import config as GEVENT_CONFIG # <<<<<<<<<<<<<< - * from gevent._util import Lazy - * from gevent._util import readproperty - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 27, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_config); - __Pyx_GIVEREF(__pyx_n_s_config); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_config); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_gevent__config, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 27, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_config); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 27, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_v_6gevent_9_greenlet_GEVENT_CONFIG); - __Pyx_DECREF_SET(__pyx_v_6gevent_9_greenlet_GEVENT_CONFIG, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":28 - * - * from gevent._config import config as GEVENT_CONFIG - * from gevent._util import Lazy # <<<<<<<<<<<<<< - * from gevent._util import readproperty - * from gevent._hub_local import get_hub_noargs as get_hub - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 28, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_Lazy); - __Pyx_GIVEREF(__pyx_n_s_Lazy); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_Lazy); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_gevent__util, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 28, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Lazy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 28, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_Lazy, __pyx_t_1) < 0) __PYX_ERR(0, 28, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/greenlet.py":29 - * from gevent._config import config as GEVENT_CONFIG - * from gevent._util import Lazy - * from gevent._util import readproperty # <<<<<<<<<<<<<< - * from gevent._hub_local import get_hub_noargs as get_hub - * from gevent import _waiter - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 29, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_readproperty); - __Pyx_GIVEREF(__pyx_n_s_readproperty); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_readproperty); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_gevent__util, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 29, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_readproperty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 29, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_readproperty, __pyx_t_2) < 0) __PYX_ERR(0, 29, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":30 - * from gevent._util import Lazy - * from gevent._util import readproperty - * from gevent._hub_local import get_hub_noargs as get_hub # <<<<<<<<<<<<<< - * from gevent import _waiter - * - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 30, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_get_hub_noargs); - __Pyx_GIVEREF(__pyx_n_s_get_hub_noargs); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_get_hub_noargs); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_gevent__hub_local, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 30, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_get_hub_noargs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 30, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_hub_noargs, __pyx_t_1) < 0) __PYX_ERR(0, 30, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/greenlet.py":31 - * from gevent._util import readproperty - * from gevent._hub_local import get_hub_noargs as get_hub - * from gevent import _waiter # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 31, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_waiter_2); - __Pyx_GIVEREF(__pyx_n_s_waiter_2); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_waiter_2); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_gevent, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 31, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_waiter_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 31, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_waiter_2, __pyx_t_2) < 0) __PYX_ERR(0, 31, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":34 - * - * - * __all__ = [ # <<<<<<<<<<<<<< - * 'Greenlet', - * 'joinall', - */ - __pyx_t_1 = PyList_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 34, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_Greenlet); - __Pyx_GIVEREF(__pyx_n_s_Greenlet); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_Greenlet); - __Pyx_INCREF(__pyx_n_s_joinall); - __Pyx_GIVEREF(__pyx_n_s_joinall); - PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_joinall); - __Pyx_INCREF(__pyx_n_s_killall); - __Pyx_GIVEREF(__pyx_n_s_killall); - PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_s_killall); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_all, __pyx_t_1) < 0) __PYX_ERR(0, 34, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":45 - * # is assignment) without generating a 'lvalue is not valid target' - * # error. - * locals()['getcurrent'] = __import__('greenlet').getcurrent # <<<<<<<<<<<<<< - * locals()['greenlet_init'] = lambda: None - * locals()['Waiter'] = _waiter.Waiter - */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin___import__, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 45, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_getcurrent); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 45, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_Globals(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 45, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (unlikely(PyDict_SetItem(__pyx_t_1, __pyx_n_s_getcurrent, __pyx_t_2) < 0)) __PYX_ERR(0, 45, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/greenlet.py":46 - * # error. - * locals()['getcurrent'] = __import__('greenlet').getcurrent - * locals()['greenlet_init'] = lambda: None # <<<<<<<<<<<<<< - * locals()['Waiter'] = _waiter.Waiter - * - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_9_greenlet_6lambda, 0, __pyx_n_s_lambda, NULL, __pyx_n_s_gevent__greenlet, __pyx_d, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 46, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_Globals(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 46, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (unlikely(PyDict_SetItem(__pyx_t_1, __pyx_n_s_greenlet_init, __pyx_t_2) < 0)) __PYX_ERR(0, 46, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/greenlet.py":47 - * locals()['getcurrent'] = __import__('greenlet').getcurrent - * locals()['greenlet_init'] = lambda: None - * locals()['Waiter'] = _waiter.Waiter # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_waiter_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 47, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Waiter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 47, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_Globals(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 47, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (unlikely(PyDict_SetItem(__pyx_t_2, __pyx_n_s_Waiter, __pyx_t_1) < 0)) __PYX_ERR(0, 47, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":50 - * - * - * if _PYPY: # <<<<<<<<<<<<<< - * import _continuation # pylint:disable=import-error - * _continulet = _continuation.continulet - */ - __pyx_t_3 = (__pyx_v_6gevent_9_greenlet__PYPY != 0); - if (__pyx_t_3) { - - /* "src/gevent/greenlet.py":51 - * - * if _PYPY: - * import _continuation # pylint:disable=import-error # <<<<<<<<<<<<<< - * _continulet = _continuation.continulet - * - */ - __pyx_t_1 = __Pyx_Import(__pyx_n_s_continuation, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 51, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_continuation, __pyx_t_1) < 0) __PYX_ERR(0, 51, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":52 - * if _PYPY: - * import _continuation # pylint:disable=import-error - * _continulet = _continuation.continulet # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_continuation); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 52, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_continulet); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 52, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (PyDict_SetItem(__pyx_d, __pyx_n_s_continulet_2, __pyx_t_2) < 0) __PYX_ERR(0, 52, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/greenlet.py":50 - * - * - * if _PYPY: # <<<<<<<<<<<<<< - * import _continuation # pylint:disable=import-error - * _continulet = _continuation.continulet - */ - } - - /* "src/gevent/greenlet.py":61 - * Can be called only from main loop. - * """ - * __slots__ = ['callback'] # <<<<<<<<<<<<<< - * - * def __init__(self, callback): - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 61, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_callback); - __Pyx_GIVEREF(__pyx_n_s_callback); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_callback); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet_SpawnedLink->tp_dict, __pyx_n_s_slots, __pyx_t_2) < 0) __PYX_ERR(0, 61, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_9_greenlet_SpawnedLink); - - /* "src/gevent/greenlet.py":94 - * Can be called only from main loop. - * """ - * __slots__ = [] # <<<<<<<<<<<<<< - * - * def __call__(self, source): - */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 94, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet_SuccessSpawnedLink->tp_dict, __pyx_n_s_slots, __pyx_t_2) < 0) __PYX_ERR(0, 94, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_9_greenlet_SuccessSpawnedLink); - - /* "src/gevent/greenlet.py":106 - * Can be called only from main loop. - * """ - * __slots__ = [] # <<<<<<<<<<<<<< - * - * def __call__(self, source): - */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 106, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet_FailureSpawnedLink->tp_dict, __pyx_n_s_slots, __pyx_t_2) < 0) __PYX_ERR(0, 106, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_9_greenlet_FailureSpawnedLink); - - /* "src/gevent/greenlet.py":114 - * class _Frame(object): - * - * __slots__ = ('f_code', 'f_lineno', 'f_back') # <<<<<<<<<<<<<< - * - * def __init__(self, f_code, f_lineno, f_back): - */ - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet__Frame->tp_dict, __pyx_n_s_slots, __pyx_tuple__24) < 0) __PYX_ERR(0, 114, __pyx_L1_error) - PyType_Modified(__pyx_ptype_6gevent_9_greenlet__Frame); - - /* "src/gevent/greenlet.py":155 - * - * - * _greenlet__init__ = greenlet.__init__ # <<<<<<<<<<<<<< - * - * class Greenlet(greenlet): - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_6gevent_9_greenlet_greenlet), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 155, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_v_6gevent_9_greenlet__greenlet__init__); - __Pyx_DECREF_SET(__pyx_v_6gevent_9_greenlet__greenlet__init__, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - - /* "src/gevent/greenlet.py":163 - * # pylint:disable=too-many-public-methods,too-many-instance-attributes - * - * spawning_stack_limit = 10 # <<<<<<<<<<<<<< - * - * # pylint:disable=keyword-arg-before-vararg,super-init-not-called - */ - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet_Greenlet->tp_dict, __pyx_n_s_spawning_stack_limit, __pyx_int_10) < 0) __PYX_ERR(0, 163, __pyx_L1_error) - PyType_Modified(__pyx_ptype_6gevent_9_greenlet_Greenlet); - - /* "src/gevent/greenlet.py":268 - * - * @Lazy - * def spawning_stack(self): # <<<<<<<<<<<<<< - * # Store this in the __dict__. We don't use it from the C - * # code. It's tempting to discard _spawning_stack_frames - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_9_greenlet_8Greenlet_3spawning_stack, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Greenlet_spawning_stack, NULL, __pyx_n_s_gevent__greenlet, __pyx_d, ((PyObject *)__pyx_codeobj__26)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 268, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet_Greenlet->tp_dict, __pyx_n_s_spawning_stack, __pyx_t_2) < 0) __PYX_ERR(0, 268, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_9_greenlet_Greenlet); - - /* "src/gevent/greenlet.py":267 - * self._spawning_stack_frames = None - * - * @Lazy # <<<<<<<<<<<<<< - * def spawning_stack(self): - * # Store this in the __dict__. We don't use it from the C - */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_Lazy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 267, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - - /* "src/gevent/greenlet.py":268 - * - * @Lazy - * def spawning_stack(self): # <<<<<<<<<<<<<< - * # Store this in the __dict__. We don't use it from the C - * # code. It's tempting to discard _spawning_stack_frames - */ - __pyx_t_4 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6gevent_9_greenlet_Greenlet, __pyx_n_s_spawning_stack); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 268, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - } - } - if (!__pyx_t_5) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 267, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_1)) { - PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 267, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { - PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 267, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else - #endif - { - __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 267, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL; - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4); - __pyx_t_4 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 267, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet_Greenlet->tp_dict, __pyx_n_s_spawning_stack, __pyx_t_2) < 0) __PYX_ERR(0, 268, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_9_greenlet_Greenlet); - - /* "src/gevent/greenlet.py":301 - * - * @readproperty - * def name(self): # <<<<<<<<<<<<<< - * """ - * The greenlet name. By default, a unique name is constructed using - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_9_greenlet_8Greenlet_5name, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Greenlet_name, NULL, __pyx_n_s_gevent__greenlet, __pyx_d, ((PyObject *)__pyx_codeobj__28)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 301, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet_Greenlet->tp_dict, __pyx_n_s_name_2, __pyx_t_2) < 0) __PYX_ERR(0, 301, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_9_greenlet_Greenlet); - - /* "src/gevent/greenlet.py":300 - * return self._ident - * - * @readproperty # <<<<<<<<<<<<<< - * def name(self): - * """ - */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_readproperty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 300, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - - /* "src/gevent/greenlet.py":301 - * - * @readproperty - * def name(self): # <<<<<<<<<<<<<< - * """ - * The greenlet name. By default, a unique name is constructed using - */ - __pyx_t_6 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6gevent_9_greenlet_Greenlet, __pyx_n_s_name_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 301, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - } - } - if (!__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 300, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_1)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_6}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 300, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_6}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 300, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } else - #endif - { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 300, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_GIVEREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_6); - __pyx_t_6 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 300, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet_Greenlet->tp_dict, __pyx_n_s_name_2, __pyx_t_2) < 0) __PYX_ERR(0, 301, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_9_greenlet_Greenlet); - - /* "src/gevent/greenlet.py":311 - * return 'Greenlet-%d' % (self.minimal_ident) - * - * def _raise_exception(self): # <<<<<<<<<<<<<< - * reraise(*self.exc_info) - * - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_9_greenlet_8Greenlet_7_raise_exception, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Greenlet__raise_exception, NULL, __pyx_n_s_gevent__greenlet, __pyx_d, ((PyObject *)__pyx_codeobj__30)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 311, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet_Greenlet->tp_dict, __pyx_n_s_raise_exception, __pyx_t_2) < 0) __PYX_ERR(0, 311, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_9_greenlet_Greenlet); - - /* "src/gevent/greenlet.py":321 - * def __nonzero__(self): - * return self._start_event is not None and self._exc_info is None - * try: # <<<<<<<<<<<<<< - * __bool__ = __nonzero__ # Python 3 - * except NameError: # pragma: no cover - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9); - __Pyx_XGOTREF(__pyx_t_7); - __Pyx_XGOTREF(__pyx_t_8); - __Pyx_XGOTREF(__pyx_t_9); - /*try:*/ { - - /* "src/gevent/greenlet.py":322 - * return self._start_event is not None and self._exc_info is None - * try: - * __bool__ = __nonzero__ # Python 3 # <<<<<<<<<<<<<< - * except NameError: # pragma: no cover - * # When we're compiled with Cython, the __nonzero__ function - */ - __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6gevent_9_greenlet_Greenlet, __pyx_n_s_nonzero); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 322, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet_Greenlet->tp_dict, __pyx_n_s_bool, __pyx_t_2) < 0) __PYX_ERR(0, 322, __pyx_L3_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_9_greenlet_Greenlet); - - /* "src/gevent/greenlet.py":321 - * def __nonzero__(self): - * return self._start_event is not None and self._exc_info is None - * try: # <<<<<<<<<<<<<< - * __bool__ = __nonzero__ # Python 3 - * except NameError: # pragma: no cover - */ - } - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - goto __pyx_L8_try_end; - __pyx_L3_error:; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/greenlet.py":323 - * try: - * __bool__ = __nonzero__ # Python 3 - * except NameError: # pragma: no cover # <<<<<<<<<<<<<< - * # When we're compiled with Cython, the __nonzero__ function - * # goes directly into the slot and can't be accessed by name. - */ - __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_NameError); - if (__pyx_t_10) { - __Pyx_ErrRestore(0,0,0); - goto __pyx_L4_exception_handled; - } - goto __pyx_L5_except_error; - __pyx_L5_except_error:; - - /* "src/gevent/greenlet.py":321 - * def __nonzero__(self): - * return self._start_event is not None and self._exc_info is None - * try: # <<<<<<<<<<<<<< - * __bool__ = __nonzero__ # Python 3 - * except NameError: # pragma: no cover - */ - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_XGIVEREF(__pyx_t_9); - __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9); - goto __pyx_L1_error; - __pyx_L4_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_XGIVEREF(__pyx_t_9); - __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9); - __pyx_L8_try_end:; - } - - /* "src/gevent/greenlet.py":330 - * ### Lifecycle - * - * if _PYPY: # <<<<<<<<<<<<<< - * # oops - pypy's .dead relies on __nonzero__ which we overriden above - * @property - */ - __pyx_t_3 = (__pyx_v_6gevent_9_greenlet__PYPY != 0); - if (__pyx_t_3) { - - /* "src/gevent/greenlet.py":343 - * else: - * @property - * def dead(self): # <<<<<<<<<<<<<< - * "Boolean indicating that the greenlet is dead and will not run again." - * return self.__start_cancelled_by_kill() or self.__started_but_aborted() or greenlet.dead.__get__(self) - */ - goto __pyx_L9; - } - /*else*/ { - } - __pyx_L9:; - - /* "src/gevent/greenlet.py":402 - * return bool(self) - * - * def ready(self): # <<<<<<<<<<<<<< - * """ - * Return a true value if and only if the greenlet has finished - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_9_greenlet_8Greenlet_11ready, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Greenlet_ready, NULL, __pyx_n_s_gevent__greenlet, __pyx_d, ((PyObject *)__pyx_codeobj__32)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 402, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet_Greenlet->tp_dict, __pyx_n_s_ready, __pyx_t_2) < 0) __PYX_ERR(0, 402, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_9_greenlet_Greenlet); - - /* "src/gevent/greenlet.py":413 - * return self.dead or self._exc_info is not None - * - * def successful(self): # <<<<<<<<<<<<<< - * """ - * Return a true value if and only if the greenlet has finished execution - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_9_greenlet_8Greenlet_13successful, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Greenlet_successful, NULL, __pyx_n_s_gevent__greenlet, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 413, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet_Greenlet->tp_dict, __pyx_n_s_successful, __pyx_t_2) < 0) __PYX_ERR(0, 413, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_9_greenlet_Greenlet); - - /* "src/gevent/greenlet.py":436 - * - * - * def _formatinfo(self): # <<<<<<<<<<<<<< - * info = self._formatted_info - * if info is not None: - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_9_greenlet_8Greenlet_17_formatinfo, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Greenlet__formatinfo, NULL, __pyx_n_s_gevent__greenlet, __pyx_d, ((PyObject *)__pyx_codeobj__36)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 436, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet_Greenlet->tp_dict, __pyx_n_s_formatinfo, __pyx_t_2) < 0) __PYX_ERR(0, 436, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_9_greenlet_Greenlet); - - /* "src/gevent/greenlet.py":486 - * return (ei[0], ei[1], load_traceback(ei[2])) - * - * def throw(self, *args): # <<<<<<<<<<<<<< - * """Immediately switch into the greenlet and raise an exception in it. - * - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_9_greenlet_8Greenlet_19throw, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Greenlet_throw, NULL, __pyx_n_s_gevent__greenlet, __pyx_d, ((PyObject *)__pyx_codeobj__38)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 486, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet_Greenlet->tp_dict, __pyx_n_s_throw, __pyx_t_2) < 0) __PYX_ERR(0, 486, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_9_greenlet_Greenlet); - - /* "src/gevent/greenlet.py":508 - * self.__handle_death_before_start(args) - * - * def start(self): # <<<<<<<<<<<<<< - * """Schedule the greenlet to run in this loop iteration""" - * if self._start_event is None: - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_9_greenlet_8Greenlet_21start, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Greenlet_start, NULL, __pyx_n_s_gevent__greenlet, __pyx_d, ((PyObject *)__pyx_codeobj__40)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 508, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet_Greenlet->tp_dict, __pyx_n_s_start, __pyx_t_2) < 0) __PYX_ERR(0, 508, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_9_greenlet_Greenlet); - - /* "src/gevent/greenlet.py":513 - * self._start_event = self.parent.loop.run_callback(self.switch) - * - * def start_later(self, seconds): # <<<<<<<<<<<<<< - * """ - * start_later(seconds) -> None - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_9_greenlet_8Greenlet_23start_later, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Greenlet_start_later, NULL, __pyx_n_s_gevent__greenlet, __pyx_d, ((PyObject *)__pyx_codeobj__42)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 513, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet_Greenlet->tp_dict, __pyx_n_s_start_later, __pyx_t_2) < 0) __PYX_ERR(0, 513, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_9_greenlet_Greenlet); - - /* "src/gevent/greenlet.py":525 - * - * @classmethod - * def spawn(cls, *args, **kwargs): # <<<<<<<<<<<<<< - * """ - * spawn(function, *args, **kwargs) -> Greenlet - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_9_greenlet_8Greenlet_25spawn, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Greenlet_spawn, NULL, __pyx_n_s_gevent__greenlet, __pyx_d, ((PyObject *)__pyx_codeobj__44)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 525, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet_Greenlet->tp_dict, __pyx_n_s_spawn, __pyx_t_2) < 0) __PYX_ERR(0, 525, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_9_greenlet_Greenlet); - - /* "src/gevent/greenlet.py":524 - * self._start_event.start(self.switch) - * - * @classmethod # <<<<<<<<<<<<<< - * def spawn(cls, *args, **kwargs): - * """ - */ - __pyx_t_2 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6gevent_9_greenlet_Greenlet, __pyx_n_s_spawn); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 525, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_Method_ClassMethod(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 524, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet_Greenlet->tp_dict, __pyx_n_s_spawn, __pyx_t_1) < 0) __PYX_ERR(0, 525, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - PyType_Modified(__pyx_ptype_6gevent_9_greenlet_Greenlet); - - /* "src/gevent/greenlet.py":543 - * - * @classmethod - * def spawn_later(cls, seconds, *args, **kwargs): # <<<<<<<<<<<<<< - * """ - * spawn_later(seconds, function, *args, **kwargs) -> Greenlet - */ - __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_9_greenlet_8Greenlet_27spawn_later, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Greenlet_spawn_later, NULL, __pyx_n_s_gevent__greenlet, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 543, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet_Greenlet->tp_dict, __pyx_n_s_spawn_later, __pyx_t_1) < 0) __PYX_ERR(0, 543, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - PyType_Modified(__pyx_ptype_6gevent_9_greenlet_Greenlet); - - /* "src/gevent/greenlet.py":542 - * return g - * - * @classmethod # <<<<<<<<<<<<<< - * def spawn_later(cls, seconds, *args, **kwargs): - * """ - */ - __pyx_t_1 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6gevent_9_greenlet_Greenlet, __pyx_n_s_spawn_later); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 543, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 542, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet_Greenlet->tp_dict, __pyx_n_s_spawn_later, __pyx_t_2) < 0) __PYX_ERR(0, 543, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_9_greenlet_Greenlet); - - /* "src/gevent/greenlet.py":565 - * return g - * - * def kill(self, exception=GreenletExit, block=True, timeout=None): # <<<<<<<<<<<<<< - * """ - * Raise the ``exception`` in the greenlet. - */ - __Pyx_INCREF(__pyx_v_6gevent_9_greenlet_GreenletExit); - __pyx_k__9 = __pyx_v_6gevent_9_greenlet_GreenletExit; - __Pyx_GIVEREF(__pyx_v_6gevent_9_greenlet_GreenletExit); - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_9_greenlet_8Greenlet_29kill, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Greenlet_kill, NULL, __pyx_n_s_gevent__greenlet, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 565, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet_Greenlet->tp_dict, __pyx_n_s_kill_2, __pyx_t_2) < 0) __PYX_ERR(0, 565, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_9_greenlet_Greenlet); - - /* "src/gevent/greenlet.py":617 - * # thus it should not raise when the greenlet is already killed (= not started) - * - * def get(self, block=True, timeout=None): # <<<<<<<<<<<<<< - * """ - * get(block=True, timeout=None) -> object - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_9_greenlet_8Greenlet_31get, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Greenlet_get, NULL, __pyx_n_s_gevent__greenlet, __pyx_d, ((PyObject *)__pyx_codeobj__50)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 617, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet_Greenlet->tp_dict, __pyx_n_s_get_2, __pyx_t_2) < 0) __PYX_ERR(0, 617, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_9_greenlet_Greenlet); - - /* "src/gevent/greenlet.py":661 - * self._raise_exception() - * - * def join(self, timeout=None): # <<<<<<<<<<<<<< - * """ - * join(timeout=None) -> None - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_9_greenlet_8Greenlet_33join, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Greenlet_join, NULL, __pyx_n_s_gevent__greenlet, __pyx_d, ((PyObject *)__pyx_codeobj__52)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 661, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet_Greenlet->tp_dict, __pyx_n_s_join, __pyx_t_2) < 0) __PYX_ERR(0, 661, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_9_greenlet_Greenlet); - - /* "src/gevent/greenlet.py":710 - * del exc_info - * - * def run(self): # <<<<<<<<<<<<<< - * try: - * self.__cancel_start() - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_9_greenlet_8Greenlet_35run, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Greenlet_run, NULL, __pyx_n_s_gevent__greenlet, __pyx_d, ((PyObject *)__pyx_codeobj__54)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 710, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet_Greenlet->tp_dict, __pyx_n_s_run, __pyx_t_2) < 0) __PYX_ERR(0, 710, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_9_greenlet_Greenlet); - - /* "src/gevent/greenlet.py":726 - * self.kwargs.clear() - * - * def _run(self): # <<<<<<<<<<<<<< - * """ - * Subclasses may override this method to take any number of - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_9_greenlet_8Greenlet_37_run, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Greenlet__run, NULL, __pyx_n_s_gevent__greenlet, __pyx_d, ((PyObject *)__pyx_codeobj__56)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 726, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet_Greenlet->tp_dict, __pyx_n_s_run_2, __pyx_t_2) < 0) __PYX_ERR(0, 726, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_9_greenlet_Greenlet); - - /* "src/gevent/greenlet.py":740 - * return - * - * def has_links(self): # <<<<<<<<<<<<<< - * return len(self._links) - * - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_9_greenlet_8Greenlet_39has_links, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Greenlet_has_links, NULL, __pyx_n_s_gevent__greenlet, __pyx_d, ((PyObject *)__pyx_codeobj__58)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 740, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet_Greenlet->tp_dict, __pyx_n_s_has_links, __pyx_t_2) < 0) __PYX_ERR(0, 740, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_9_greenlet_Greenlet); - - /* "src/gevent/greenlet.py":743 - * return len(self._links) - * - * def rawlink(self, callback): # <<<<<<<<<<<<<< - * """ - * Register a callable to be executed when the greenlet finishes - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_9_greenlet_8Greenlet_41rawlink, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Greenlet_rawlink, NULL, __pyx_n_s_gevent__greenlet, __pyx_d, ((PyObject *)__pyx_codeobj__60)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 743, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet_Greenlet->tp_dict, __pyx_n_s_rawlink, __pyx_t_2) < 0) __PYX_ERR(0, 743, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_9_greenlet_Greenlet); - - /* "src/gevent/greenlet.py":759 - * self._notifier = self.parent.loop.run_callback(self._notify_links) - * - * def link(self, callback, SpawnedLink=SpawnedLink): # <<<<<<<<<<<<<< - * """ - * Link greenlet's completion to a callable. - */ - __Pyx_INCREF(((PyObject *)__pyx_ptype_6gevent_9_greenlet_SpawnedLink)); - __pyx_k__14 = ((PyObject *)__pyx_ptype_6gevent_9_greenlet_SpawnedLink); - __Pyx_GIVEREF(__pyx_ptype_6gevent_9_greenlet_SpawnedLink); - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_9_greenlet_8Greenlet_43link, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Greenlet_link, NULL, __pyx_n_s_gevent__greenlet, __pyx_d, ((PyObject *)__pyx_codeobj__62)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 759, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet_Greenlet->tp_dict, __pyx_n_s_link, __pyx_t_2) < 0) __PYX_ERR(0, 759, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_9_greenlet_Greenlet); - - /* "src/gevent/greenlet.py":773 - * self.rawlink(SpawnedLink(callback)) - * - * def unlink(self, callback): # <<<<<<<<<<<<<< - * """Remove the callback set by :meth:`link` or :meth:`rawlink`""" - * try: - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_9_greenlet_8Greenlet_45unlink, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Greenlet_unlink, NULL, __pyx_n_s_gevent__greenlet, __pyx_d, ((PyObject *)__pyx_codeobj__64)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 773, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet_Greenlet->tp_dict, __pyx_n_s_unlink, __pyx_t_2) < 0) __PYX_ERR(0, 773, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_9_greenlet_Greenlet); - - /* "src/gevent/greenlet.py":780 - * pass - * - * def unlink_all(self): # <<<<<<<<<<<<<< - * """ - * Remove all the callbacks. - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_9_greenlet_8Greenlet_47unlink_all, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Greenlet_unlink_all, NULL, __pyx_n_s_gevent__greenlet, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 780, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet_Greenlet->tp_dict, __pyx_n_s_unlink_all, __pyx_t_2) < 0) __PYX_ERR(0, 780, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_9_greenlet_Greenlet); - - /* "src/gevent/greenlet.py":788 - * del self._links[:] - * - * def link_value(self, callback, SpawnedLink=SuccessSpawnedLink): # <<<<<<<<<<<<<< - * """ - * Like :meth:`link` but *callback* is only notified when the greenlet - */ - __Pyx_INCREF(((PyObject *)__pyx_ptype_6gevent_9_greenlet_SuccessSpawnedLink)); - __pyx_k__15 = ((PyObject *)__pyx_ptype_6gevent_9_greenlet_SuccessSpawnedLink); - __Pyx_GIVEREF(__pyx_ptype_6gevent_9_greenlet_SuccessSpawnedLink); - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_9_greenlet_8Greenlet_49link_value, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Greenlet_link_value, NULL, __pyx_n_s_gevent__greenlet, __pyx_d, ((PyObject *)__pyx_codeobj__68)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 788, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet_Greenlet->tp_dict, __pyx_n_s_link_value, __pyx_t_2) < 0) __PYX_ERR(0, 788, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_9_greenlet_Greenlet); - - /* "src/gevent/greenlet.py":796 - * self.link(callback, SpawnedLink=SpawnedLink) - * - * def link_exception(self, callback, SpawnedLink=FailureSpawnedLink): # <<<<<<<<<<<<<< - * """ - * Like :meth:`link` but *callback* is only notified when the - */ - __Pyx_INCREF(((PyObject *)__pyx_ptype_6gevent_9_greenlet_FailureSpawnedLink)); - __pyx_k__16 = ((PyObject *)__pyx_ptype_6gevent_9_greenlet_FailureSpawnedLink); - __Pyx_GIVEREF(__pyx_ptype_6gevent_9_greenlet_FailureSpawnedLink); - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_9_greenlet_8Greenlet_51link_exception, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Greenlet_link_exception, NULL, __pyx_n_s_gevent__greenlet, __pyx_d, ((PyObject *)__pyx_codeobj__70)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 796, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet_Greenlet->tp_dict, __pyx_n_s_link_exception, __pyx_t_2) < 0) __PYX_ERR(0, 796, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_9_greenlet_Greenlet); - - /* "src/gevent/greenlet.py":804 - * self.link(callback, SpawnedLink=SpawnedLink) - * - * def _notify_links(self): # <<<<<<<<<<<<<< - * while self._links: - * # Early links are allowed to remove later links - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_9_greenlet_8Greenlet_53_notify_links, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Greenlet__notify_links, NULL, __pyx_n_s_gevent__greenlet, __pyx_d, ((PyObject *)__pyx_codeobj__72)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 804, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet_Greenlet->tp_dict, __pyx_n_s_notify_links, __pyx_t_2) < 0) __PYX_ERR(0, 804, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_9_greenlet_Greenlet); - - /* "src/gevent/greenlet.py":821 - * - * class _dummy_event(object): - * __slots__ = ('pending', 'active') # <<<<<<<<<<<<<< - * - * def __init__(self): - */ - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet__dummy_event->tp_dict, __pyx_n_s_slots, __pyx_tuple__73) < 0) __PYX_ERR(0, 821, __pyx_L1_error) - PyType_Modified(__pyx_ptype_6gevent_9_greenlet__dummy_event); - - /* "src/gevent/greenlet.py":826 - * self.pending = self.active = False - * - * def stop(self): # <<<<<<<<<<<<<< - * pass - * - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_9_greenlet_12_dummy_event_3stop, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_dummy_event_stop, NULL, __pyx_n_s_gevent__greenlet, __pyx_d, ((PyObject *)__pyx_codeobj__75)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 826, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet__dummy_event->tp_dict, __pyx_n_s_stop, __pyx_t_2) < 0) __PYX_ERR(0, 826, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_9_greenlet__dummy_event); - - /* "src/gevent/greenlet.py":829 - * pass - * - * def start(self, cb): # pylint:disable=unused-argument # <<<<<<<<<<<<<< - * raise AssertionError("Cannot start the dummy event") - * - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_9_greenlet_12_dummy_event_5start, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_dummy_event_start, NULL, __pyx_n_s_gevent__greenlet, __pyx_d, ((PyObject *)__pyx_codeobj__77)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 829, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet__dummy_event->tp_dict, __pyx_n_s_start, __pyx_t_2) < 0) __PYX_ERR(0, 829, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_9_greenlet__dummy_event); - - /* "src/gevent/greenlet.py":832 - * raise AssertionError("Cannot start the dummy event") - * - * def close(self): # <<<<<<<<<<<<<< - * pass - * - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_9_greenlet_12_dummy_event_7close, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_dummy_event_close, NULL, __pyx_n_s_gevent__greenlet, __pyx_d, ((PyObject *)__pyx_codeobj__79)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 832, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_9_greenlet__dummy_event->tp_dict, __pyx_n_s_close, __pyx_t_2) < 0) __PYX_ERR(0, 832, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_9_greenlet__dummy_event); - - /* "src/gevent/greenlet.py":835 - * pass - * - * _cancelled_start_event = _dummy_event() # <<<<<<<<<<<<<< - * _start_completed_event = _dummy_event() - * - */ - __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_6gevent_9_greenlet__dummy_event)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 835, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_XGOTREF(((PyObject *)__pyx_v_6gevent_9_greenlet__cancelled_start_event)); - __Pyx_DECREF_SET(__pyx_v_6gevent_9_greenlet__cancelled_start_event, ((struct __pyx_obj_6gevent_9_greenlet__dummy_event *)__pyx_t_2)); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - - /* "src/gevent/greenlet.py":836 - * - * _cancelled_start_event = _dummy_event() - * _start_completed_event = _dummy_event() # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_6gevent_9_greenlet__dummy_event)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 836, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_XGOTREF(((PyObject *)__pyx_v_6gevent_9_greenlet__start_completed_event)); - __Pyx_DECREF_SET(__pyx_v_6gevent_9_greenlet__start_completed_event, ((struct __pyx_obj_6gevent_9_greenlet__dummy_event *)__pyx_t_2)); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - - /* "src/gevent/greenlet.py":839 - * - * - * def _kill(glet, exception, waiter): # <<<<<<<<<<<<<< - * try: - * glet.throw(exception) - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_9_greenlet_1_kill, 0, __pyx_n_s_kill, NULL, __pyx_n_s_gevent__greenlet, __pyx_d, ((PyObject *)__pyx_codeobj__81)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 839, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_kill, __pyx_t_2) < 0) __PYX_ERR(0, 839, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/greenlet.py":849 - * - * - * def joinall(greenlets, timeout=None, raise_error=False, count=None): # <<<<<<<<<<<<<< - * """ - * Wait for the ``greenlets`` to finish. - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_9_greenlet_3joinall, 0, __pyx_n_s_joinall, NULL, __pyx_n_s_gevent__greenlet, __pyx_d, ((PyObject *)__pyx_codeobj__83)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 849, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_joinall, __pyx_t_2) < 0) __PYX_ERR(0, 849, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/greenlet.py":894 - * - * - * def killall(greenlets, exception=GreenletExit, block=True, timeout=None): # <<<<<<<<<<<<<< - * """ - * Forceably terminate all the ``greenlets`` by causing them to raise ``exception``. - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_9_greenlet_5killall, 0, __pyx_n_s_killall, NULL, __pyx_n_s_gevent__greenlet, __pyx_d, ((PyObject *)__pyx_codeobj__85)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 894, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (!__Pyx_CyFunction_InitDefaults(__pyx_t_2, sizeof(__pyx_defaults), 1)) __PYX_ERR(0, 894, __pyx_L1_error) - __Pyx_INCREF(__pyx_v_6gevent_9_greenlet_GreenletExit); - __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_t_2)->__pyx_arg_exception = __pyx_v_6gevent_9_greenlet_GreenletExit; - __Pyx_GIVEREF(__pyx_v_6gevent_9_greenlet_GreenletExit); - __Pyx_CyFunction_SetDefaultsGetter(__pyx_t_2, __pyx_pf_6gevent_9_greenlet_7__defaults__); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_killall, __pyx_t_2) < 0) __PYX_ERR(0, 894, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/greenlet.py":941 - * greenlet_init() # pylint:disable=undefined-variable - * - * _init() # <<<<<<<<<<<<<< - * - * from gevent._util import import_c_accel - */ - __pyx_f_6gevent_9_greenlet__init(); - - /* "src/gevent/greenlet.py":943 - * _init() - * - * from gevent._util import import_c_accel # <<<<<<<<<<<<<< - * import_c_accel(globals(), 'gevent._greenlet') - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 943, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_import_c_accel); - __Pyx_GIVEREF(__pyx_n_s_import_c_accel); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_import_c_accel); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_gevent__util, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 943, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_import_c_accel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 943, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_import_c_accel, __pyx_t_2) < 0) __PYX_ERR(0, 943, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/greenlet.py":944 - * - * from gevent._util import import_c_accel - * import_c_accel(globals(), 'gevent._greenlet') # <<<<<<<<<<<<<< - */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_import_c_accel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 944, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_Globals(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 944, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 944, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_gevent__greenlet); - __Pyx_GIVEREF(__pyx_n_s_gevent__greenlet); - PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_n_s_gevent__greenlet); - __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 944, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/greenlet.py":1 - * # Copyright (c) 2009-2012 Denis Bilenko. See LICENSE for details. # <<<<<<<<<<<<<< - * # cython: auto_pickle=False,embedsignature=True,always_allow_keywords=False - * - */ - __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "cfunc.to_py":64 - * - * @cname("__Pyx_CFunc_object____list____object___to_py") - * cdef object __Pyx_CFunc_object____list____object___to_py(object (*f)(list, object) ): # <<<<<<<<<<<<<< - * def wrap(list greenlets, object exception): - * """wrap(greenlets: list, exception)""" - */ - - /*--- Wrapped vars code ---*/ - - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - if (__pyx_m) { - if (__pyx_d) { - __Pyx_AddTraceback("init gevent._greenlet", 0, __pyx_lineno, __pyx_filename); - } - Py_DECREF(__pyx_m); __pyx_m = 0; - } else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_ImportError, "init gevent._greenlet"); - } - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - #if CYTHON_PEP489_MULTI_PHASE_INIT - return (__pyx_m != NULL) ? 0 : -1; - #elif PY_MAJOR_VERSION >= 3 - return __pyx_m; - #else - return; - #endif -} - -/* --- Runtime support code --- */ -/* Refnanny */ -#if CYTHON_REFNANNY -static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { - PyObject *m = NULL, *p = NULL; - void *r = NULL; - m = PyImport_ImportModule((char *)modname); - if (!m) goto end; - p = PyObject_GetAttrString(m, (char *)"RefNannyAPI"); - if (!p) goto end; - r = PyLong_AsVoidPtr(p); -end: - Py_XDECREF(p); - Py_XDECREF(m); - return (__Pyx_RefNannyAPIStruct *)r; -} -#endif - -/* PyObjectGetAttrStr */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_getattro)) - return tp->tp_getattro(obj, attr_name); -#if PY_MAJOR_VERSION < 3 - if (likely(tp->tp_getattr)) - return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); -#endif - return PyObject_GetAttr(obj, attr_name); -} -#endif - -/* GetBuiltinName */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name) { - PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); - if (unlikely(!result)) { - PyErr_Format(PyExc_NameError, -#if PY_MAJOR_VERSION >= 3 - "name '%U' is not defined", name); -#else - "name '%.200s' is not defined", PyString_AS_STRING(name)); -#endif - } - return result; -} - -/* RaiseDoubleKeywords */ -static void __Pyx_RaiseDoubleKeywordsError( - const char* func_name, - PyObject* kw_name) -{ - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION >= 3 - "%s() got multiple values for keyword argument '%U'", func_name, kw_name); - #else - "%s() got multiple values for keyword argument '%s'", func_name, - PyString_AsString(kw_name)); - #endif -} - -/* ParseKeywords */ -static int __Pyx_ParseOptionalKeywords( - PyObject *kwds, - PyObject **argnames[], - PyObject *kwds2, - PyObject *values[], - Py_ssize_t num_pos_args, - const char* function_name) -{ - PyObject *key = 0, *value = 0; - Py_ssize_t pos = 0; - PyObject*** name; - PyObject*** first_kw_arg = argnames + num_pos_args; - while (PyDict_Next(kwds, &pos, &key, &value)) { - name = first_kw_arg; - while (*name && (**name != key)) name++; - if (*name) { - values[name-argnames] = value; - continue; - } - name = first_kw_arg; - #if PY_MAJOR_VERSION < 3 - if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) { - while (*name) { - if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) - && _PyString_Eq(**name, key)) { - values[name-argnames] = value; - break; - } - name++; - } - if (*name) continue; - else { - PyObject*** argname = argnames; - while (argname != first_kw_arg) { - if ((**argname == key) || ( - (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) - && _PyString_Eq(**argname, key))) { - goto arg_passed_twice; - } - argname++; - } - } - } else - #endif - if (likely(PyUnicode_Check(key))) { - while (*name) { - int cmp = (**name == key) ? 0 : - #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 : - #endif - PyUnicode_Compare(**name, key); - if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; - if (cmp == 0) { - values[name-argnames] = value; - break; - } - name++; - } - if (*name) continue; - else { - PyObject*** argname = argnames; - while (argname != first_kw_arg) { - int cmp = (**argname == key) ? 0 : - #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 : - #endif - PyUnicode_Compare(**argname, key); - if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; - if (cmp == 0) goto arg_passed_twice; - argname++; - } - } - } else - goto invalid_keyword_type; - if (kwds2) { - if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; - } else { - goto invalid_keyword; - } - } - return 0; -arg_passed_twice: - __Pyx_RaiseDoubleKeywordsError(function_name, key); - goto bad; -invalid_keyword_type: - PyErr_Format(PyExc_TypeError, - "%.200s() keywords must be strings", function_name); - goto bad; -invalid_keyword: - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION < 3 - "%.200s() got an unexpected keyword argument '%.200s'", - function_name, PyString_AsString(key)); - #else - "%s() got an unexpected keyword argument '%U'", - function_name, key); - #endif -bad: - return -1; -} - -/* RaiseArgTupleInvalid */ -static void __Pyx_RaiseArgtupleInvalid( - const char* func_name, - int exact, - Py_ssize_t num_min, - Py_ssize_t num_max, - Py_ssize_t num_found) -{ - Py_ssize_t num_expected; - const char *more_or_less; - if (num_found < num_min) { - num_expected = num_min; - more_or_less = "at least"; - } else { - num_expected = num_max; - more_or_less = "at most"; - } - if (exact) { - more_or_less = "exactly"; - } - PyErr_Format(PyExc_TypeError, - "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", - func_name, more_or_less, num_expected, - (num_expected == 1) ? "" : "s", num_found); -} - -/* PyCFunctionFastCall */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { - PyCFunctionObject *func = (PyCFunctionObject*)func_obj; - PyCFunction meth = PyCFunction_GET_FUNCTION(func); - PyObject *self = PyCFunction_GET_SELF(func); - int flags = PyCFunction_GET_FLAGS(func); - assert(PyCFunction_Check(func)); - assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))); - assert(nargs >= 0); - assert(nargs == 0 || args != NULL); - /* _PyCFunction_FastCallDict() must not be called with an exception set, - because it may clear it (directly or indirectly) and so the - caller loses its exception */ - assert(!PyErr_Occurred()); - if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { - return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL); - } else { - return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs); - } -} -#endif - -/* PyFunctionFastCall */ -#if CYTHON_FAST_PYCALL -#include "frameobject.h" -static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, - PyObject *globals) { - PyFrameObject *f; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject **fastlocals; - Py_ssize_t i; - PyObject *result; - assert(globals != NULL); - /* XXX Perhaps we should create a specialized - PyFrame_New() that doesn't take locals, but does - take builtins without sanity checking them. - */ - assert(tstate != NULL); - f = PyFrame_New(tstate, co, globals, NULL); - if (f == NULL) { - return NULL; - } - fastlocals = f->f_localsplus; - for (i = 0; i < na; i++) { - Py_INCREF(*args); - fastlocals[i] = *args++; - } - result = PyEval_EvalFrameEx(f,0); - ++tstate->recursion_depth; - Py_DECREF(f); - --tstate->recursion_depth; - return result; -} -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs) { - PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); - PyObject *globals = PyFunction_GET_GLOBALS(func); - PyObject *argdefs = PyFunction_GET_DEFAULTS(func); - PyObject *closure; -#if PY_MAJOR_VERSION >= 3 - PyObject *kwdefs; -#endif - PyObject *kwtuple, **k; - PyObject **d; - Py_ssize_t nd; - Py_ssize_t nk; - PyObject *result; - assert(kwargs == NULL || PyDict_Check(kwargs)); - nk = kwargs ? PyDict_Size(kwargs) : 0; - if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { - return NULL; - } - if ( -#if PY_MAJOR_VERSION >= 3 - co->co_kwonlyargcount == 0 && -#endif - likely(kwargs == NULL || nk == 0) && - co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { - if (argdefs == NULL && co->co_argcount == nargs) { - result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); - goto done; - } - else if (nargs == 0 && argdefs != NULL - && co->co_argcount == Py_SIZE(argdefs)) { - /* function called with no arguments, but all parameters have - a default value: use default values as arguments .*/ - args = &PyTuple_GET_ITEM(argdefs, 0); - result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); - goto done; - } - } - if (kwargs != NULL) { - Py_ssize_t pos, i; - kwtuple = PyTuple_New(2 * nk); - if (kwtuple == NULL) { - result = NULL; - goto done; - } - k = &PyTuple_GET_ITEM(kwtuple, 0); - pos = i = 0; - while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { - Py_INCREF(k[i]); - Py_INCREF(k[i+1]); - i += 2; - } - nk = i / 2; - } - else { - kwtuple = NULL; - k = NULL; - } - closure = PyFunction_GET_CLOSURE(func); -#if PY_MAJOR_VERSION >= 3 - kwdefs = PyFunction_GET_KW_DEFAULTS(func); -#endif - if (argdefs != NULL) { - d = &PyTuple_GET_ITEM(argdefs, 0); - nd = Py_SIZE(argdefs); - } - else { - d = NULL; - nd = 0; - } -#if PY_MAJOR_VERSION >= 3 - result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, - args, nargs, - k, (int)nk, - d, (int)nd, kwdefs, closure); -#else - result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, - args, nargs, - k, (int)nk, - d, (int)nd, closure); -#endif - Py_XDECREF(kwtuple); -done: - Py_LeaveRecursiveCall(); - return result; -} -#endif -#endif - -/* PyObjectCall */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { - PyObject *result; - ternaryfunc call = func->ob_type->tp_call; - if (unlikely(!call)) - return PyObject_Call(func, arg, kw); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = (*call)(func, arg, kw); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCallMethO */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { - PyObject *self, *result; - PyCFunction cfunc; - cfunc = PyCFunction_GET_FUNCTION(func); - self = PyCFunction_GET_SELF(func); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = cfunc(self, arg); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCallOneArg */ -#if CYTHON_COMPILING_IN_CPYTHON -static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_New(1); - if (unlikely(!args)) return NULL; - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 0, arg); - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, &arg, 1); - } -#endif - if (likely(PyCFunction_Check(func))) { - if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { - return __Pyx_PyObject_CallMethO(func, arg); -#if CYTHON_FAST_PYCCALL - } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { - return __Pyx_PyCFunction_FastCall(func, &arg, 1); -#endif - } - } - return __Pyx__PyObject_CallOneArg(func, arg); -} -#else -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_Pack(1, arg); - if (unlikely(!args)) return NULL; - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -#endif - -/* PyErrFetchRestore */ -#if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - tmp_type = tstate->curexc_type; - tmp_value = tstate->curexc_value; - tmp_tb = tstate->curexc_traceback; - tstate->curexc_type = type; - tstate->curexc_value = value; - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - *type = tstate->curexc_type; - *value = tstate->curexc_value; - *tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -} -#endif - -/* RaiseException */ -#if PY_MAJOR_VERSION < 3 -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, - CYTHON_UNUSED PyObject *cause) { - __Pyx_PyThreadState_declare - Py_XINCREF(type); - if (!value || value == Py_None) - value = NULL; - else - Py_INCREF(value); - if (!tb || tb == Py_None) - tb = NULL; - else { - Py_INCREF(tb); - if (!PyTraceBack_Check(tb)) { - PyErr_SetString(PyExc_TypeError, - "raise: arg 3 must be a traceback or None"); - goto raise_error; - } - } - if (PyType_Check(type)) { -#if CYTHON_COMPILING_IN_PYPY - if (!value) { - Py_INCREF(Py_None); - value = Py_None; - } -#endif - PyErr_NormalizeException(&type, &value, &tb); - } else { - if (value) { - PyErr_SetString(PyExc_TypeError, - "instance exception may not have a separate value"); - goto raise_error; - } - value = type; - type = (PyObject*) Py_TYPE(type); - Py_INCREF(type); - if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { - PyErr_SetString(PyExc_TypeError, - "raise: exception class must be a subclass of BaseException"); - goto raise_error; - } - } - __Pyx_PyThreadState_assign - __Pyx_ErrRestore(type, value, tb); - return; -raise_error: - Py_XDECREF(value); - Py_XDECREF(type); - Py_XDECREF(tb); - return; -} -#else -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { - PyObject* owned_instance = NULL; - if (tb == Py_None) { - tb = 0; - } else if (tb && !PyTraceBack_Check(tb)) { - PyErr_SetString(PyExc_TypeError, - "raise: arg 3 must be a traceback or None"); - goto bad; - } - if (value == Py_None) - value = 0; - if (PyExceptionInstance_Check(type)) { - if (value) { - PyErr_SetString(PyExc_TypeError, - "instance exception may not have a separate value"); - goto bad; - } - value = type; - type = (PyObject*) Py_TYPE(value); - } else if (PyExceptionClass_Check(type)) { - PyObject *instance_class = NULL; - if (value && PyExceptionInstance_Check(value)) { - instance_class = (PyObject*) Py_TYPE(value); - if (instance_class != type) { - int is_subclass = PyObject_IsSubclass(instance_class, type); - if (!is_subclass) { - instance_class = NULL; - } else if (unlikely(is_subclass == -1)) { - goto bad; - } else { - type = instance_class; - } - } - } - if (!instance_class) { - PyObject *args; - if (!value) - args = PyTuple_New(0); - else if (PyTuple_Check(value)) { - Py_INCREF(value); - args = value; - } else - args = PyTuple_Pack(1, value); - if (!args) - goto bad; - owned_instance = PyObject_Call(type, args, NULL); - Py_DECREF(args); - if (!owned_instance) - goto bad; - value = owned_instance; - if (!PyExceptionInstance_Check(value)) { - PyErr_Format(PyExc_TypeError, - "calling %R should have returned an instance of " - "BaseException, not %R", - type, Py_TYPE(value)); - goto bad; - } - } - } else { - PyErr_SetString(PyExc_TypeError, - "raise: exception class must be a subclass of BaseException"); - goto bad; - } - if (cause) { - PyObject *fixed_cause; - if (cause == Py_None) { - fixed_cause = NULL; - } else if (PyExceptionClass_Check(cause)) { - fixed_cause = PyObject_CallObject(cause, NULL); - if (fixed_cause == NULL) - goto bad; - } else if (PyExceptionInstance_Check(cause)) { - fixed_cause = cause; - Py_INCREF(fixed_cause); - } else { - PyErr_SetString(PyExc_TypeError, - "exception causes must derive from " - "BaseException"); - goto bad; - } - PyException_SetCause(value, fixed_cause); - } - PyErr_SetObject(type, value); - if (tb) { -#if CYTHON_COMPILING_IN_PYPY - PyObject *tmp_type, *tmp_value, *tmp_tb; - PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); - Py_INCREF(tb); - PyErr_Restore(tmp_type, tmp_value, tb); - Py_XDECREF(tmp_tb); -#else - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject* tmp_tb = tstate->curexc_traceback; - if (tb != tmp_tb) { - Py_INCREF(tb); - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_tb); - } -#endif - } -bad: - Py_XDECREF(owned_instance); - return; -} -#endif - -/* PyErrExceptionMatches */ -#if CYTHON_FAST_THREAD_STATE -static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; i<n; i++) { - if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1; - } -#endif - for (i=0; i<n; i++) { - if (__Pyx_PyErr_GivenExceptionMatches(exc_type, PyTuple_GET_ITEM(tuple, i))) return 1; - } - return 0; -} -static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) { - PyObject *exc_type = tstate->curexc_type; - if (exc_type == err) return 1; - if (unlikely(!exc_type)) return 0; - if (unlikely(PyTuple_Check(err))) - return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); - return __Pyx_PyErr_GivenExceptionMatches(exc_type, err); -} -#endif - -/* GetAttr */ -static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) { -#if CYTHON_USE_TYPE_SLOTS -#if PY_MAJOR_VERSION >= 3 - if (likely(PyUnicode_Check(n))) -#else - if (likely(PyString_Check(n))) -#endif - return __Pyx_PyObject_GetAttrStr(o, n); -#endif - return PyObject_GetAttr(o, n); -} - -/* GetAttr3 */ -static PyObject *__Pyx_GetAttr3Default(PyObject *d) { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) - return NULL; - __Pyx_PyErr_Clear(); - Py_INCREF(d); - return d; -} -static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) { - PyObject *r = __Pyx_GetAttr(o, n); - return (likely(r)) ? r : __Pyx_GetAttr3Default(d); -} - -/* BytesEquals */ -static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { -#if CYTHON_COMPILING_IN_PYPY - return PyObject_RichCompareBool(s1, s2, equals); -#else - if (s1 == s2) { - return (equals == Py_EQ); - } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) { - const char *ps1, *ps2; - Py_ssize_t length = PyBytes_GET_SIZE(s1); - if (length != PyBytes_GET_SIZE(s2)) - return (equals == Py_NE); - ps1 = PyBytes_AS_STRING(s1); - ps2 = PyBytes_AS_STRING(s2); - if (ps1[0] != ps2[0]) { - return (equals == Py_NE); - } else if (length == 1) { - return (equals == Py_EQ); - } else { - int result; -#if CYTHON_USE_UNICODE_INTERNALS - Py_hash_t hash1, hash2; - hash1 = ((PyBytesObject*)s1)->ob_shash; - hash2 = ((PyBytesObject*)s2)->ob_shash; - if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { - return (equals == Py_NE); - } -#endif - result = memcmp(ps1, ps2, (size_t)length); - return (equals == Py_EQ) ? (result == 0) : (result != 0); - } - } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) { - return (equals == Py_NE); - } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) { - return (equals == Py_NE); - } else { - int result; - PyObject* py_result = PyObject_RichCompare(s1, s2, equals); - if (!py_result) - return -1; - result = __Pyx_PyObject_IsTrue(py_result); - Py_DECREF(py_result); - return result; - } -#endif -} - -/* UnicodeEquals */ -static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { -#if CYTHON_COMPILING_IN_PYPY - return PyObject_RichCompareBool(s1, s2, equals); -#else -#if PY_MAJOR_VERSION < 3 - PyObject* owned_ref = NULL; -#endif - int s1_is_unicode, s2_is_unicode; - if (s1 == s2) { - goto return_eq; - } - s1_is_unicode = PyUnicode_CheckExact(s1); - s2_is_unicode = PyUnicode_CheckExact(s2); -#if PY_MAJOR_VERSION < 3 - if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) { - owned_ref = PyUnicode_FromObject(s2); - if (unlikely(!owned_ref)) - return -1; - s2 = owned_ref; - s2_is_unicode = 1; - } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) { - owned_ref = PyUnicode_FromObject(s1); - if (unlikely(!owned_ref)) - return -1; - s1 = owned_ref; - s1_is_unicode = 1; - } else if (((!s2_is_unicode) & (!s1_is_unicode))) { - return __Pyx_PyBytes_Equals(s1, s2, equals); - } -#endif - if (s1_is_unicode & s2_is_unicode) { - Py_ssize_t length; - int kind; - void *data1, *data2; - if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0)) - return -1; - length = __Pyx_PyUnicode_GET_LENGTH(s1); - if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) { - goto return_ne; - } -#if CYTHON_USE_UNICODE_INTERNALS - { - Py_hash_t hash1, hash2; - #if CYTHON_PEP393_ENABLED - hash1 = ((PyASCIIObject*)s1)->hash; - hash2 = ((PyASCIIObject*)s2)->hash; - #else - hash1 = ((PyUnicodeObject*)s1)->hash; - hash2 = ((PyUnicodeObject*)s2)->hash; - #endif - if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { - goto return_ne; - } - } -#endif - kind = __Pyx_PyUnicode_KIND(s1); - if (kind != __Pyx_PyUnicode_KIND(s2)) { - goto return_ne; - } - data1 = __Pyx_PyUnicode_DATA(s1); - data2 = __Pyx_PyUnicode_DATA(s2); - if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) { - goto return_ne; - } else if (length == 1) { - goto return_eq; - } else { - int result = memcmp(data1, data2, (size_t)(length * kind)); - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(owned_ref); - #endif - return (equals == Py_EQ) ? (result == 0) : (result != 0); - } - } else if ((s1 == Py_None) & s2_is_unicode) { - goto return_ne; - } else if ((s2 == Py_None) & s1_is_unicode) { - goto return_ne; - } else { - int result; - PyObject* py_result = PyObject_RichCompare(s1, s2, equals); - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(owned_ref); - #endif - if (!py_result) - return -1; - result = __Pyx_PyObject_IsTrue(py_result); - Py_DECREF(py_result); - return result; - } -return_eq: - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(owned_ref); - #endif - return (equals == Py_EQ); -return_ne: - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(owned_ref); - #endif - return (equals == Py_NE); -#endif -} - -/* PyObjectCallNoArg */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, NULL, 0); - } -#endif -#ifdef __Pyx_CyFunction_USED - if (likely(PyCFunction_Check(func) || __Pyx_TypeCheck(func, __pyx_CyFunctionType))) { -#else - if (likely(PyCFunction_Check(func))) { -#endif - if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { - return __Pyx_PyObject_CallMethO(func, NULL); - } - } - return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL); -} -#endif - -/* ExtTypeTest */ - static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { - if (unlikely(!type)) { - PyErr_SetString(PyExc_SystemError, "Missing type object"); - return 0; - } - if (likely(__Pyx_TypeCheck(obj, type))) - return 1; - PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s", - Py_TYPE(obj)->tp_name, type->tp_name); - return 0; -} - -/* GetItemInt */ - static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { - PyObject *r; - if (!j) return NULL; - r = PyObject_GetItem(o, j); - Py_DECREF(j); - return r; -} -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - Py_ssize_t wrapped_i = i; - if (wraparound & unlikely(i < 0)) { - wrapped_i += PyList_GET_SIZE(o); - } - if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyList_GET_SIZE(o)))) { - PyObject *r = PyList_GET_ITEM(o, wrapped_i); - Py_INCREF(r); - return r; - } - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -#else - return PySequence_GetItem(o, i); -#endif -} -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - Py_ssize_t wrapped_i = i; - if (wraparound & unlikely(i < 0)) { - wrapped_i += PyTuple_GET_SIZE(o); - } - if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyTuple_GET_SIZE(o)))) { - PyObject *r = PyTuple_GET_ITEM(o, wrapped_i); - Py_INCREF(r); - return r; - } - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -#else - return PySequence_GetItem(o, i); -#endif -} -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS - if (is_list || PyList_CheckExact(o)) { - Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); - if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) { - PyObject *r = PyList_GET_ITEM(o, n); - Py_INCREF(r); - return r; - } - } - else if (PyTuple_CheckExact(o)) { - Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); - if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) { - PyObject *r = PyTuple_GET_ITEM(o, n); - Py_INCREF(r); - return r; - } - } else { - PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; - if (likely(m && m->sq_item)) { - if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { - Py_ssize_t l = m->sq_length(o); - if (likely(l >= 0)) { - i += l; - } else { - if (!PyErr_ExceptionMatches(PyExc_OverflowError)) - return NULL; - PyErr_Clear(); - } - } - return m->sq_item(o, i); - } - } -#else - if (is_list || PySequence_Check(o)) { - return PySequence_GetItem(o, i); - } -#endif - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -} - -/* SaveResetException */ - #if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - #if PY_VERSION_HEX >= 0x030700A3 - *type = tstate->exc_state.exc_type; - *value = tstate->exc_state.exc_value; - *tb = tstate->exc_state.exc_traceback; - #else - *type = tstate->exc_type; - *value = tstate->exc_value; - *tb = tstate->exc_traceback; - #endif - Py_XINCREF(*type); - Py_XINCREF(*value); - Py_XINCREF(*tb); -} -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - #if PY_VERSION_HEX >= 0x030700A3 - tmp_type = tstate->exc_state.exc_type; - tmp_value = tstate->exc_state.exc_value; - tmp_tb = tstate->exc_state.exc_traceback; - tstate->exc_state.exc_type = type; - tstate->exc_state.exc_value = value; - tstate->exc_state.exc_traceback = tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = type; - tstate->exc_value = value; - tstate->exc_traceback = tb; - #endif - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} -#endif - -/* GetException */ - #if CYTHON_FAST_THREAD_STATE -static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { -#else -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) { -#endif - PyObject *local_type, *local_value, *local_tb; -#if CYTHON_FAST_THREAD_STATE - PyObject *tmp_type, *tmp_value, *tmp_tb; - local_type = tstate->curexc_type; - local_value = tstate->curexc_value; - local_tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -#else - PyErr_Fetch(&local_type, &local_value, &local_tb); -#endif - PyErr_NormalizeException(&local_type, &local_value, &local_tb); -#if CYTHON_FAST_THREAD_STATE - if (unlikely(tstate->curexc_type)) -#else - if (unlikely(PyErr_Occurred())) -#endif - goto bad; - #if PY_MAJOR_VERSION >= 3 - if (local_tb) { - if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) - goto bad; - } - #endif - Py_XINCREF(local_tb); - Py_XINCREF(local_type); - Py_XINCREF(local_value); - *type = local_type; - *value = local_value; - *tb = local_tb; -#if CYTHON_FAST_THREAD_STATE - #if PY_VERSION_HEX >= 0x030700A3 - tmp_type = tstate->exc_state.exc_type; - tmp_value = tstate->exc_state.exc_value; - tmp_tb = tstate->exc_state.exc_traceback; - tstate->exc_state.exc_type = local_type; - tstate->exc_state.exc_value = local_value; - tstate->exc_state.exc_traceback = local_tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = local_type; - tstate->exc_value = local_value; - tstate->exc_traceback = local_tb; - #endif - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -#else - PyErr_SetExcInfo(local_type, local_value, local_tb); -#endif - return 0; -bad: - *type = 0; - *value = 0; - *tb = 0; - Py_XDECREF(local_type); - Py_XDECREF(local_value); - Py_XDECREF(local_tb); - return -1; -} - -/* PyObjectSetAttrStr */ - #if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_setattro)) - return tp->tp_setattro(obj, attr_name, value); -#if PY_MAJOR_VERSION < 3 - if (likely(tp->tp_setattr)) - return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value); -#endif - return PyObject_SetAttr(obj, attr_name, value); -} -#endif - -/* WriteUnraisableException */ - static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, - CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename, - int full_traceback, CYTHON_UNUSED int nogil) { - PyObject *old_exc, *old_val, *old_tb; - PyObject *ctx; - __Pyx_PyThreadState_declare -#ifdef WITH_THREAD - PyGILState_STATE state; - if (nogil) - state = PyGILState_Ensure(); -#ifdef _MSC_VER - else state = (PyGILState_STATE)-1; -#endif -#endif - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&old_exc, &old_val, &old_tb); - if (full_traceback) { - Py_XINCREF(old_exc); - Py_XINCREF(old_val); - Py_XINCREF(old_tb); - __Pyx_ErrRestore(old_exc, old_val, old_tb); - PyErr_PrintEx(1); - } - #if PY_MAJOR_VERSION < 3 - ctx = PyString_FromString(name); - #else - ctx = PyUnicode_FromString(name); - #endif - __Pyx_ErrRestore(old_exc, old_val, old_tb); - if (!ctx) { - PyErr_WriteUnraisable(Py_None); - } else { - PyErr_WriteUnraisable(ctx); - Py_DECREF(ctx); - } -#ifdef WITH_THREAD - if (nogil) - PyGILState_Release(state); -#endif -} - -/* UnpackUnboundCMethod */ - static int __Pyx_TryUnpackUnboundCMethod(__Pyx_CachedCFunction* target) { - PyObject *method; - method = __Pyx_PyObject_GetAttrStr(target->type, *target->method_name); - if (unlikely(!method)) - return -1; - target->method = method; -#if CYTHON_COMPILING_IN_CPYTHON - #if PY_MAJOR_VERSION >= 3 - if (likely(__Pyx_TypeCheck(method, &PyMethodDescr_Type))) - #endif - { - PyMethodDescrObject *descr = (PyMethodDescrObject*) method; - target->func = descr->d_method->ml_meth; - target->flag = descr->d_method->ml_flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST); - } -#endif - return 0; -} - -/* CallUnboundCMethod0 */ - static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self) { - PyObject *args, *result = NULL; - if (unlikely(!cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL; -#if CYTHON_ASSUME_SAFE_MACROS - args = PyTuple_New(1); - if (unlikely(!args)) goto bad; - Py_INCREF(self); - PyTuple_SET_ITEM(args, 0, self); -#else - args = PyTuple_Pack(1, self); - if (unlikely(!args)) goto bad; -#endif - result = __Pyx_PyObject_Call(cfunc->method, args, NULL); - Py_DECREF(args); -bad: - return result; -} - -/* py_dict_items */ - static CYTHON_INLINE PyObject* __Pyx_PyDict_Items(PyObject* d) { - if (PY_MAJOR_VERSION >= 3) - return __Pyx_CallUnboundCMethod0(&__pyx_umethod_PyDict_Type_items, d); - else - return PyDict_Items(d); -} - -/* RaiseTooManyValuesToUnpack */ - static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { - PyErr_Format(PyExc_ValueError, - "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); -} - -/* RaiseNeedMoreValuesToUnpack */ - static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { - PyErr_Format(PyExc_ValueError, - "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", - index, (index == 1) ? "" : "s"); -} - -/* IterFinish */ - static CYTHON_INLINE int __Pyx_IterFinish(void) { -#if CYTHON_FAST_THREAD_STATE - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject* exc_type = tstate->curexc_type; - if (unlikely(exc_type)) { - if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) { - PyObject *exc_value, *exc_tb; - exc_value = tstate->curexc_value; - exc_tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; - Py_DECREF(exc_type); - Py_XDECREF(exc_value); - Py_XDECREF(exc_tb); - return 0; - } else { - return -1; - } - } - return 0; -#else - if (unlikely(PyErr_Occurred())) { - if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) { - PyErr_Clear(); - return 0; - } else { - return -1; - } - } - return 0; -#endif -} - -/* UnpackItemEndCheck */ - static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { - if (unlikely(retval)) { - Py_DECREF(retval); - __Pyx_RaiseTooManyValuesError(expected); - return -1; - } else { - return __Pyx_IterFinish(); - } - return 0; -} - -/* StringJoin */ - #if !CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyBytes_Join(PyObject* sep, PyObject* values) { - return PyObject_CallMethodObjArgs(sep, __pyx_n_s_join, values, NULL); -} -#endif - -/* KeywordStringCheck */ - static int __Pyx_CheckKeywordStrings( - PyObject *kwdict, - const char* function_name, - int kw_allowed) -{ - PyObject* key = 0; - Py_ssize_t pos = 0; -#if CYTHON_COMPILING_IN_PYPY - if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0)) - goto invalid_keyword; - return 1; -#else - while (PyDict_Next(kwdict, &pos, &key, 0)) { - #if PY_MAJOR_VERSION < 3 - if (unlikely(!PyString_Check(key))) - #endif - if (unlikely(!PyUnicode_Check(key))) - goto invalid_keyword_type; - } - if ((!kw_allowed) && unlikely(key)) - goto invalid_keyword; - return 1; -invalid_keyword_type: - PyErr_Format(PyExc_TypeError, - "%.200s() keywords must be strings", function_name); - return 0; -#endif -invalid_keyword: - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION < 3 - "%.200s() got an unexpected keyword argument '%.200s'", - function_name, PyString_AsString(key)); - #else - "%s() got an unexpected keyword argument '%U'", - function_name, key); - #endif - return 0; -} - -/* SwapException */ - #if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - #if PY_VERSION_HEX >= 0x030700A3 - tmp_type = tstate->exc_state.exc_type; - tmp_value = tstate->exc_state.exc_value; - tmp_tb = tstate->exc_state.exc_traceback; - tstate->exc_state.exc_type = *type; - tstate->exc_state.exc_value = *value; - tstate->exc_state.exc_traceback = *tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = *type; - tstate->exc_value = *value; - tstate->exc_traceback = *tb; - #endif - *type = tmp_type; - *value = tmp_value; - *tb = tmp_tb; -} -#else -static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); - PyErr_SetExcInfo(*type, *value, *tb); - *type = tmp_type; - *value = tmp_value; - *tb = tmp_tb; -} -#endif - -/* GetModuleGlobalName */ - static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { - PyObject *result; -#if !CYTHON_AVOID_BORROWED_REFS -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 - result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); - if (likely(result)) { - Py_INCREF(result); - } else if (unlikely(PyErr_Occurred())) { - result = NULL; - } else { -#else - result = PyDict_GetItem(__pyx_d, name); - if (likely(result)) { - Py_INCREF(result); - } else { -#endif -#else - result = PyObject_GetItem(__pyx_d, name); - if (!result) { - PyErr_Clear(); -#endif - result = __Pyx_GetBuiltinName(name); - } - return result; -} - -/* None */ - static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) { - PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname); -} - -/* SliceObject */ - static CYTHON_INLINE int __Pyx_PyObject_SetSlice(PyObject* obj, PyObject* value, - Py_ssize_t cstart, Py_ssize_t cstop, - PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice, - int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) { -#if CYTHON_USE_TYPE_SLOTS - PyMappingMethods* mp; -#if PY_MAJOR_VERSION < 3 - PySequenceMethods* ms = Py_TYPE(obj)->tp_as_sequence; - if (likely(ms && ms->sq_ass_slice)) { - if (!has_cstart) { - if (_py_start && (*_py_start != Py_None)) { - cstart = __Pyx_PyIndex_AsSsize_t(*_py_start); - if ((cstart == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad; - } else - cstart = 0; - } - if (!has_cstop) { - if (_py_stop && (*_py_stop != Py_None)) { - cstop = __Pyx_PyIndex_AsSsize_t(*_py_stop); - if ((cstop == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad; - } else - cstop = PY_SSIZE_T_MAX; - } - if (wraparound && unlikely((cstart < 0) | (cstop < 0)) && likely(ms->sq_length)) { - Py_ssize_t l = ms->sq_length(obj); - if (likely(l >= 0)) { - if (cstop < 0) { - cstop += l; - if (cstop < 0) cstop = 0; - } - if (cstart < 0) { - cstart += l; - if (cstart < 0) cstart = 0; - } - } else { - if (!PyErr_ExceptionMatches(PyExc_OverflowError)) - goto bad; - PyErr_Clear(); - } - } - return ms->sq_ass_slice(obj, cstart, cstop, value); - } -#endif - mp = Py_TYPE(obj)->tp_as_mapping; - if (likely(mp && mp->mp_ass_subscript)) -#endif - { - int result; - PyObject *py_slice, *py_start, *py_stop; - if (_py_slice) { - py_slice = *_py_slice; - } else { - PyObject* owned_start = NULL; - PyObject* owned_stop = NULL; - if (_py_start) { - py_start = *_py_start; - } else { - if (has_cstart) { - owned_start = py_start = PyInt_FromSsize_t(cstart); - if (unlikely(!py_start)) goto bad; - } else - py_start = Py_None; - } - if (_py_stop) { - py_stop = *_py_stop; - } else { - if (has_cstop) { - owned_stop = py_stop = PyInt_FromSsize_t(cstop); - if (unlikely(!py_stop)) { - Py_XDECREF(owned_start); - goto bad; - } - } else - py_stop = Py_None; - } - py_slice = PySlice_New(py_start, py_stop, Py_None); - Py_XDECREF(owned_start); - Py_XDECREF(owned_stop); - if (unlikely(!py_slice)) goto bad; - } -#if CYTHON_USE_TYPE_SLOTS - result = mp->mp_ass_subscript(obj, py_slice, value); -#else - result = value ? PyObject_SetItem(obj, py_slice, value) : PyObject_DelItem(obj, py_slice); -#endif - if (!_py_slice) { - Py_DECREF(py_slice); - } - return result; - } - PyErr_Format(PyExc_TypeError, - "'%.200s' object does not support slice %.10s", - Py_TYPE(obj)->tp_name, value ? "assignment" : "deletion"); -bad: - return -1; -} - -/* PyObjectCallMethod1 */ - static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) { - PyObject *result = NULL; -#if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(method))) { - PyObject *self = PyMethod_GET_SELF(method); - if (likely(self)) { - PyObject *args; - PyObject *function = PyMethod_GET_FUNCTION(method); - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(function)) { - PyObject *args[2] = {self, arg}; - result = __Pyx_PyFunction_FastCall(function, args, 2); - goto done; - } - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(function)) { - PyObject *args[2] = {self, arg}; - result = __Pyx_PyCFunction_FastCall(function, args, 2); - goto done; - } - #endif - args = PyTuple_New(2); - if (unlikely(!args)) goto done; - Py_INCREF(self); - PyTuple_SET_ITEM(args, 0, self); - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 1, arg); - Py_INCREF(function); - result = __Pyx_PyObject_Call(function, args, NULL); - Py_DECREF(args); - Py_DECREF(function); - return result; - } - } -#endif - result = __Pyx_PyObject_CallOneArg(method, arg); - goto done; -done: - return result; -} -static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { - PyObject *method, *result; - method = __Pyx_PyObject_GetAttrStr(obj, method_name); - if (unlikely(!method)) return NULL; - result = __Pyx__PyObject_CallMethod1(method, arg); - Py_DECREF(method); - return result; -} - -/* pop_index */ - static PyObject* __Pyx__PyObject_PopNewIndex(PyObject* L, PyObject* py_ix) { - PyObject *r; - if (unlikely(!py_ix)) return NULL; - r = __Pyx__PyObject_PopIndex(L, py_ix); - Py_DECREF(py_ix); - return r; -} -static PyObject* __Pyx__PyObject_PopIndex(PyObject* L, PyObject* py_ix) { - return __Pyx_PyObject_CallMethod1(L, __pyx_n_s_pop, py_ix); -} -#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS -static PyObject* __Pyx__PyList_PopIndex(PyObject* L, PyObject* py_ix, Py_ssize_t ix) { - Py_ssize_t size = PyList_GET_SIZE(L); - if (likely(size > (((PyListObject*)L)->allocated >> 1))) { - Py_ssize_t cix = ix; - if (cix < 0) { - cix += size; - } - if (likely(0 <= cix && cix < size)) { - PyObject* v = PyList_GET_ITEM(L, cix); - Py_SIZE(L) -= 1; - size -= 1; - memmove(&PyList_GET_ITEM(L, cix), &PyList_GET_ITEM(L, cix+1), (size_t)(size-cix)*sizeof(PyObject*)); - return v; - } - } - if (py_ix == Py_None) { - return __Pyx__PyObject_PopNewIndex(L, PyInt_FromSsize_t(ix)); - } else { - return __Pyx__PyObject_PopIndex(L, py_ix); - } -} -#endif - -/* HasAttr */ - static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) { - PyObject *r; - if (unlikely(!__Pyx_PyBaseString_Check(n))) { - PyErr_SetString(PyExc_TypeError, - "hasattr(): attribute name must be string"); - return -1; - } - r = __Pyx_GetAttr(o, n); - if (unlikely(!r)) { - PyErr_Clear(); - return 0; - } else { - Py_DECREF(r); - return 1; - } -} - -/* ArgTypeTest */ - static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact) -{ - if (unlikely(!type)) { - PyErr_SetString(PyExc_SystemError, "Missing type object"); - return 0; - } - else if (exact) { - #if PY_MAJOR_VERSION == 2 - if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1; - #endif - } - else { - if (likely(__Pyx_TypeCheck(obj, type))) return 1; - } - PyErr_Format(PyExc_TypeError, - "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)", - name, type->tp_name, Py_TYPE(obj)->tp_name); - return 0; -} - -/* FetchCommonType */ - static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { - PyObject* fake_module; - PyTypeObject* cached_type = NULL; - fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI); - if (!fake_module) return NULL; - Py_INCREF(fake_module); - cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name); - if (cached_type) { - if (!PyType_Check((PyObject*)cached_type)) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s is not a type object", - type->tp_name); - goto bad; - } - if (cached_type->tp_basicsize != type->tp_basicsize) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s has the wrong size, try recompiling", - type->tp_name); - goto bad; - } - } else { - if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; - PyErr_Clear(); - if (PyType_Ready(type) < 0) goto bad; - if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0) - goto bad; - Py_INCREF(type); - cached_type = type; - } -done: - Py_DECREF(fake_module); - return cached_type; -bad: - Py_XDECREF(cached_type); - cached_type = NULL; - goto done; -} - -/* CythonFunction */ - #include <structmember.h> -static PyObject * -__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure) -{ - if (unlikely(op->func_doc == NULL)) { - if (op->func.m_ml->ml_doc) { -#if PY_MAJOR_VERSION >= 3 - op->func_doc = PyUnicode_FromString(op->func.m_ml->ml_doc); -#else - op->func_doc = PyString_FromString(op->func.m_ml->ml_doc); -#endif - if (unlikely(op->func_doc == NULL)) - return NULL; - } else { - Py_INCREF(Py_None); - return Py_None; - } - } - Py_INCREF(op->func_doc); - return op->func_doc; -} -static int -__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp = op->func_doc; - if (value == NULL) { - value = Py_None; - } - Py_INCREF(value); - op->func_doc = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op) -{ - if (unlikely(op->func_name == NULL)) { -#if PY_MAJOR_VERSION >= 3 - op->func_name = PyUnicode_InternFromString(op->func.m_ml->ml_name); -#else - op->func_name = PyString_InternFromString(op->func.m_ml->ml_name); -#endif - if (unlikely(op->func_name == NULL)) - return NULL; - } - Py_INCREF(op->func_name); - return op->func_name; -} -static int -__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; -#if PY_MAJOR_VERSION >= 3 - if (unlikely(value == NULL || !PyUnicode_Check(value))) { -#else - if (unlikely(value == NULL || !PyString_Check(value))) { -#endif - PyErr_SetString(PyExc_TypeError, - "__name__ must be set to a string object"); - return -1; - } - tmp = op->func_name; - Py_INCREF(value); - op->func_name = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op) -{ - Py_INCREF(op->func_qualname); - return op->func_qualname; -} -static int -__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; -#if PY_MAJOR_VERSION >= 3 - if (unlikely(value == NULL || !PyUnicode_Check(value))) { -#else - if (unlikely(value == NULL || !PyString_Check(value))) { -#endif - PyErr_SetString(PyExc_TypeError, - "__qualname__ must be set to a string object"); - return -1; - } - tmp = op->func_qualname; - Py_INCREF(value); - op->func_qualname = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure) -{ - PyObject *self; - self = m->func_closure; - if (self == NULL) - self = Py_None; - Py_INCREF(self); - return self; -} -static PyObject * -__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op) -{ - if (unlikely(op->func_dict == NULL)) { - op->func_dict = PyDict_New(); - if (unlikely(op->func_dict == NULL)) - return NULL; - } - Py_INCREF(op->func_dict); - return op->func_dict; -} -static int -__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; - if (unlikely(value == NULL)) { - PyErr_SetString(PyExc_TypeError, - "function's dictionary may not be deleted"); - return -1; - } - if (unlikely(!PyDict_Check(value))) { - PyErr_SetString(PyExc_TypeError, - "setting function's dictionary to a non-dict"); - return -1; - } - tmp = op->func_dict; - Py_INCREF(value); - op->func_dict = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op) -{ - Py_INCREF(op->func_globals); - return op->func_globals; -} -static PyObject * -__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op) -{ - Py_INCREF(Py_None); - return Py_None; -} -static PyObject * -__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op) -{ - PyObject* result = (op->func_code) ? op->func_code : Py_None; - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { - int result = 0; - PyObject *res = op->defaults_getter((PyObject *) op); - if (unlikely(!res)) - return -1; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - op->defaults_tuple = PyTuple_GET_ITEM(res, 0); - Py_INCREF(op->defaults_tuple); - op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); - Py_INCREF(op->defaults_kwdict); - #else - op->defaults_tuple = PySequence_ITEM(res, 0); - if (unlikely(!op->defaults_tuple)) result = -1; - else { - op->defaults_kwdict = PySequence_ITEM(res, 1); - if (unlikely(!op->defaults_kwdict)) result = -1; - } - #endif - Py_DECREF(res); - return result; -} -static int -__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value) { - value = Py_None; - } else if (value != Py_None && !PyTuple_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__defaults__ must be set to a tuple object"); - return -1; - } - Py_INCREF(value); - tmp = op->defaults_tuple; - op->defaults_tuple = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) { - PyObject* result = op->defaults_tuple; - if (unlikely(!result)) { - if (op->defaults_getter) { - if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; - result = op->defaults_tuple; - } else { - result = Py_None; - } - } - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value) { - value = Py_None; - } else if (value != Py_None && !PyDict_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__kwdefaults__ must be set to a dict object"); - return -1; - } - Py_INCREF(value); - tmp = op->defaults_kwdict; - op->defaults_kwdict = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) { - PyObject* result = op->defaults_kwdict; - if (unlikely(!result)) { - if (op->defaults_getter) { - if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; - result = op->defaults_kwdict; - } else { - result = Py_None; - } - } - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value || value == Py_None) { - value = NULL; - } else if (!PyDict_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__annotations__ must be set to a dict object"); - return -1; - } - Py_XINCREF(value); - tmp = op->func_annotations; - op->func_annotations = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op) { - PyObject* result = op->func_annotations; - if (unlikely(!result)) { - result = PyDict_New(); - if (unlikely(!result)) return NULL; - op->func_annotations = result; - } - Py_INCREF(result); - return result; -} -static PyGetSetDef __pyx_CyFunction_getsets[] = { - {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, - {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, - {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, - {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, - {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, - {(char *) "__self__", (getter)__Pyx_CyFunction_get_self, 0, 0, 0}, - {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, - {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, - {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, - {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, - {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, - {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, - {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, - {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, - {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, - {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, - {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, - {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, - {0, 0, 0, 0, 0} -}; -static PyMemberDef __pyx_CyFunction_members[] = { - {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), PY_WRITE_RESTRICTED, 0}, - {0, 0, 0, 0, 0} -}; -static PyObject * -__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args) -{ -#if PY_MAJOR_VERSION >= 3 - return PyUnicode_FromString(m->func.m_ml->ml_name); -#else - return PyString_FromString(m->func.m_ml->ml_name); -#endif -} -static PyMethodDef __pyx_CyFunction_methods[] = { - {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, - {0, 0, 0, 0} -}; -#if PY_VERSION_HEX < 0x030500A0 -#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) -#else -#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func.m_weakreflist) -#endif -static PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *ml, int flags, PyObject* qualname, - PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { - __pyx_CyFunctionObject *op = PyObject_GC_New(__pyx_CyFunctionObject, type); - if (op == NULL) - return NULL; - op->flags = flags; - __Pyx_CyFunction_weakreflist(op) = NULL; - op->func.m_ml = ml; - op->func.m_self = (PyObject *) op; - Py_XINCREF(closure); - op->func_closure = closure; - Py_XINCREF(module); - op->func.m_module = module; - op->func_dict = NULL; - op->func_name = NULL; - Py_INCREF(qualname); - op->func_qualname = qualname; - op->func_doc = NULL; - op->func_classobj = NULL; - op->func_globals = globals; - Py_INCREF(op->func_globals); - Py_XINCREF(code); - op->func_code = code; - op->defaults_pyobjects = 0; - op->defaults = NULL; - op->defaults_tuple = NULL; - op->defaults_kwdict = NULL; - op->defaults_getter = NULL; - op->func_annotations = NULL; - PyObject_GC_Track(op); - return (PyObject *) op; -} -static int -__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) -{ - Py_CLEAR(m->func_closure); - Py_CLEAR(m->func.m_module); - Py_CLEAR(m->func_dict); - Py_CLEAR(m->func_name); - Py_CLEAR(m->func_qualname); - Py_CLEAR(m->func_doc); - Py_CLEAR(m->func_globals); - Py_CLEAR(m->func_code); - Py_CLEAR(m->func_classobj); - Py_CLEAR(m->defaults_tuple); - Py_CLEAR(m->defaults_kwdict); - Py_CLEAR(m->func_annotations); - if (m->defaults) { - PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); - int i; - for (i = 0; i < m->defaults_pyobjects; i++) - Py_XDECREF(pydefaults[i]); - PyObject_Free(m->defaults); - m->defaults = NULL; - } - return 0; -} -static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) -{ - if (__Pyx_CyFunction_weakreflist(m) != NULL) - PyObject_ClearWeakRefs((PyObject *) m); - __Pyx_CyFunction_clear(m); - PyObject_GC_Del(m); -} -static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) -{ - PyObject_GC_UnTrack(m); - __Pyx__CyFunction_dealloc(m); -} -static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) -{ - Py_VISIT(m->func_closure); - Py_VISIT(m->func.m_module); - Py_VISIT(m->func_dict); - Py_VISIT(m->func_name); - Py_VISIT(m->func_qualname); - Py_VISIT(m->func_doc); - Py_VISIT(m->func_globals); - Py_VISIT(m->func_code); - Py_VISIT(m->func_classobj); - Py_VISIT(m->defaults_tuple); - Py_VISIT(m->defaults_kwdict); - if (m->defaults) { - PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); - int i; - for (i = 0; i < m->defaults_pyobjects; i++) - Py_VISIT(pydefaults[i]); - } - return 0; -} -static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type) -{ - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) { - Py_INCREF(func); - return func; - } - if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) { - if (type == NULL) - type = (PyObject *)(Py_TYPE(obj)); - return __Pyx_PyMethod_New(func, type, (PyObject *)(Py_TYPE(type))); - } - if (obj == Py_None) - obj = NULL; - return __Pyx_PyMethod_New(func, obj, type); -} -static PyObject* -__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) -{ -#if PY_MAJOR_VERSION >= 3 - return PyUnicode_FromFormat("<cyfunction %U at %p>", - op->func_qualname, (void *)op); -#else - return PyString_FromFormat("<cyfunction %s at %p>", - PyString_AsString(op->func_qualname), (void *)op); -#endif -} -static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { - PyCFunctionObject* f = (PyCFunctionObject*)func; - PyCFunction meth = f->m_ml->ml_meth; - Py_ssize_t size; - switch (f->m_ml->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { - case METH_VARARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) - return (*meth)(self, arg); - break; - case METH_VARARGS | METH_KEYWORDS: - return (*(PyCFunctionWithKeywords)meth)(self, arg, kw); - case METH_NOARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { - size = PyTuple_GET_SIZE(arg); - if (likely(size == 0)) - return (*meth)(self, NULL); - PyErr_Format(PyExc_TypeError, - "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", - f->m_ml->ml_name, size); - return NULL; - } - break; - case METH_O: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { - size = PyTuple_GET_SIZE(arg); - if (likely(size == 1)) { - PyObject *result, *arg0; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - arg0 = PyTuple_GET_ITEM(arg, 0); - #else - arg0 = PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; - #endif - result = (*meth)(self, arg0); - #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) - Py_DECREF(arg0); - #endif - return result; - } - PyErr_Format(PyExc_TypeError, - "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", - f->m_ml->ml_name, size); - return NULL; - } - break; - default: - PyErr_SetString(PyExc_SystemError, "Bad call flags in " - "__Pyx_CyFunction_Call. METH_OLDARGS is no " - "longer supported!"); - return NULL; - } - PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", - f->m_ml->ml_name); - return NULL; -} -static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { - return __Pyx_CyFunction_CallMethod(func, ((PyCFunctionObject*)func)->m_self, arg, kw); -} -static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { - PyObject *result; - __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; - if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { - Py_ssize_t argc; - PyObject *new_args; - PyObject *self; - argc = PyTuple_GET_SIZE(args); - new_args = PyTuple_GetSlice(args, 1, argc); - if (unlikely(!new_args)) - return NULL; - self = PyTuple_GetItem(args, 0); - if (unlikely(!self)) { - Py_DECREF(new_args); - return NULL; - } - result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); - Py_DECREF(new_args); - } else { - result = __Pyx_CyFunction_Call(func, args, kw); - } - return result; -} -static PyTypeObject __pyx_CyFunctionType_type = { - PyVarObject_HEAD_INIT(0, 0) - "cython_function_or_method", - sizeof(__pyx_CyFunctionObject), - 0, - (destructor) __Pyx_CyFunction_dealloc, - 0, - 0, - 0, -#if PY_MAJOR_VERSION < 3 - 0, -#else - 0, -#endif - (reprfunc) __Pyx_CyFunction_repr, - 0, - 0, - 0, - 0, - __Pyx_CyFunction_CallAsMethod, - 0, - 0, - 0, - 0, - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, - 0, - (traverseproc) __Pyx_CyFunction_traverse, - (inquiry) __Pyx_CyFunction_clear, - 0, -#if PY_VERSION_HEX < 0x030500A0 - offsetof(__pyx_CyFunctionObject, func_weakreflist), -#else - offsetof(PyCFunctionObject, m_weakreflist), -#endif - 0, - 0, - __pyx_CyFunction_methods, - __pyx_CyFunction_members, - __pyx_CyFunction_getsets, - 0, - 0, - __Pyx_CyFunction_descr_get, - 0, - offsetof(__pyx_CyFunctionObject, func_dict), - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, -#if PY_VERSION_HEX >= 0x030400a1 - 0, -#endif -}; -static int __pyx_CyFunction_init(void) { - __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); - if (unlikely(__pyx_CyFunctionType == NULL)) { - return -1; - } - return 0; -} -static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults = PyObject_Malloc(size); - if (unlikely(!m->defaults)) - return PyErr_NoMemory(); - memset(m->defaults, 0, size); - m->defaults_pyobjects = pyobjects; - return m->defaults; -} -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults_tuple = tuple; - Py_INCREF(tuple); -} -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults_kwdict = dict; - Py_INCREF(dict); -} -static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->func_annotations = dict; - Py_INCREF(dict); -} - -/* PyObject_GenericGetAttrNoDict */ - #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { - PyErr_Format(PyExc_AttributeError, -#if PY_MAJOR_VERSION >= 3 - "'%.50s' object has no attribute '%U'", - tp->tp_name, attr_name); -#else - "'%.50s' object has no attribute '%.400s'", - tp->tp_name, PyString_AS_STRING(attr_name)); -#endif - return NULL; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { - PyObject *descr; - PyTypeObject *tp = Py_TYPE(obj); - if (unlikely(!PyString_Check(attr_name))) { - return PyObject_GenericGetAttr(obj, attr_name); - } - assert(!tp->tp_dictoffset); - descr = _PyType_Lookup(tp, attr_name); - if (unlikely(!descr)) { - return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); - } - Py_INCREF(descr); - #if PY_MAJOR_VERSION < 3 - if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) - #endif - { - descrgetfunc f = Py_TYPE(descr)->tp_descr_get; - if (unlikely(f)) { - PyObject *res = f(descr, obj, (PyObject *)tp); - Py_DECREF(descr); - return res; - } - } - return descr; -} -#endif - -/* PyObject_GenericGetAttr */ - #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) { - if (unlikely(Py_TYPE(obj)->tp_dictoffset)) { - return PyObject_GenericGetAttr(obj, attr_name); - } - return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name); -} -#endif - -/* CallNextTpDealloc */ - static void __Pyx_call_next_tp_dealloc(PyObject* obj, destructor current_tp_dealloc) { - PyTypeObject* type = Py_TYPE(obj); - while (type && type->tp_dealloc != current_tp_dealloc) - type = type->tp_base; - while (type && type->tp_dealloc == current_tp_dealloc) - type = type->tp_base; - if (type) - type->tp_dealloc(obj); -} - -/* CallNextTpTraverse */ - static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse) { - PyTypeObject* type = Py_TYPE(obj); - while (type && type->tp_traverse != current_tp_traverse) - type = type->tp_base; - while (type && type->tp_traverse == current_tp_traverse) - type = type->tp_base; - if (type && type->tp_traverse) - return type->tp_traverse(obj, v, a); - return 0; -} - -/* CallNextTpClear */ - static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_clear) { - PyTypeObject* type = Py_TYPE(obj); - while (type && type->tp_clear != current_tp_clear) - type = type->tp_base; - while (type && type->tp_clear == current_tp_clear) - type = type->tp_base; - if (type && type->tp_clear) - type->tp_clear(obj); -} - -/* SetVTable */ - static int __Pyx_SetVtable(PyObject *dict, void *vtable) { -#if PY_VERSION_HEX >= 0x02070000 - PyObject *ob = PyCapsule_New(vtable, 0, 0); -#else - PyObject *ob = PyCObject_FromVoidPtr(vtable, 0); -#endif - if (!ob) - goto bad; - if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0) - goto bad; - Py_DECREF(ob); - return 0; -bad: - Py_XDECREF(ob); - return -1; -} - -/* GetVTable */ - static void* __Pyx_GetVtable(PyObject *dict) { - void* ptr; - PyObject *ob = PyObject_GetItem(dict, __pyx_n_s_pyx_vtable); - if (!ob) - goto bad; -#if PY_VERSION_HEX >= 0x02070000 - ptr = PyCapsule_GetPointer(ob, 0); -#else - ptr = PyCObject_AsVoidPtr(ob); -#endif - if (!ptr && !PyErr_Occurred()) - PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type"); - Py_DECREF(ob); - return ptr; -bad: - Py_XDECREF(ob); - return NULL; -} - -/* Import */ - static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { - PyObject *empty_list = 0; - PyObject *module = 0; - PyObject *global_dict = 0; - PyObject *empty_dict = 0; - PyObject *list; - #if PY_MAJOR_VERSION < 3 - PyObject *py_import; - py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); - if (!py_import) - goto bad; - #endif - if (from_list) - list = from_list; - else { - empty_list = PyList_New(0); - if (!empty_list) - goto bad; - list = empty_list; - } - global_dict = PyModule_GetDict(__pyx_m); - if (!global_dict) - goto bad; - empty_dict = PyDict_New(); - if (!empty_dict) - goto bad; - { - #if PY_MAJOR_VERSION >= 3 - if (level == -1) { - if (strchr(__Pyx_MODULE_NAME, '.')) { - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, 1); - if (!module) { - if (!PyErr_ExceptionMatches(PyExc_ImportError)) - goto bad; - PyErr_Clear(); - } - } - level = 0; - } - #endif - if (!module) { - #if PY_MAJOR_VERSION < 3 - PyObject *py_level = PyInt_FromLong(level); - if (!py_level) - goto bad; - module = PyObject_CallFunctionObjArgs(py_import, - name, global_dict, empty_dict, list, py_level, NULL); - Py_DECREF(py_level); - #else - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, level); - #endif - } - } -bad: - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(py_import); - #endif - Py_XDECREF(empty_list); - Py_XDECREF(empty_dict); - return module; -} - -/* ImportFrom */ - static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { - PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); - if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Format(PyExc_ImportError, - #if PY_MAJOR_VERSION < 3 - "cannot import name %.230s", PyString_AS_STRING(name)); - #else - "cannot import name %S", name); - #endif - } - return value; -} - -/* GetNameInClass */ - static PyObject *__Pyx_GetGlobalNameAfterAttributeLookup(PyObject *name) { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) - return NULL; - __Pyx_PyErr_Clear(); - return __Pyx_GetModuleGlobalName(name); -} -static PyObject *__Pyx_GetNameInClass(PyObject *nmspace, PyObject *name) { - PyObject *result; - result = __Pyx_PyObject_GetAttrStr(nmspace, name); - if (!result) { - result = __Pyx_GetGlobalNameAfterAttributeLookup(name); - } - return result; -} - -/* ClassMethod */ - static PyObject* __Pyx_Method_ClassMethod(PyObject *method) { -#if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM <= 0x05080000 - if (PyObject_TypeCheck(method, &PyWrapperDescr_Type)) { - return PyClassMethod_New(method); - } -#else -#if CYTHON_COMPILING_IN_PYSTON || CYTHON_COMPILING_IN_PYPY - if (PyMethodDescr_Check(method)) { -#else - static PyTypeObject *methoddescr_type = NULL; - if (methoddescr_type == NULL) { - PyObject *meth = PyObject_GetAttrString((PyObject*)&PyList_Type, "append"); - if (!meth) return NULL; - methoddescr_type = Py_TYPE(meth); - Py_DECREF(meth); - } - if (__Pyx_TypeCheck(method, methoddescr_type)) { -#endif - PyMethodDescrObject *descr = (PyMethodDescrObject *)method; - #if PY_VERSION_HEX < 0x03020000 - PyTypeObject *d_type = descr->d_type; - #else - PyTypeObject *d_type = descr->d_common.d_type; - #endif - return PyDescr_NewClassMethod(d_type, descr->d_method); - } -#endif - else if (PyMethod_Check(method)) { - return PyClassMethod_New(PyMethod_GET_FUNCTION(method)); - } - else if (PyCFunction_Check(method)) { - return PyClassMethod_New(method); - } -#ifdef __Pyx_CyFunction_USED - else if (__Pyx_TypeCheck(method, __pyx_CyFunctionType)) { - return PyClassMethod_New(method); - } -#endif - PyErr_SetString(PyExc_TypeError, - "Class-level classmethod() can only be called on " - "a method_descriptor or instance method."); - return NULL; -} - -/* Globals */ - static PyObject* __Pyx_Globals(void) { - Py_ssize_t i; - PyObject *names; - PyObject *globals = __pyx_d; - Py_INCREF(globals); - names = PyObject_Dir(__pyx_m); - if (!names) - goto bad; - for (i = PyList_GET_SIZE(names)-1; i >= 0; i--) { -#if CYTHON_COMPILING_IN_PYPY - PyObject* name = PySequence_ITEM(names, i); - if (!name) - goto bad; -#else - PyObject* name = PyList_GET_ITEM(names, i); -#endif - if (!PyDict_Contains(globals, name)) { - PyObject* value = __Pyx_GetAttr(__pyx_m, name); - if (!value) { -#if CYTHON_COMPILING_IN_PYPY - Py_DECREF(name); -#endif - goto bad; - } - if (PyDict_SetItem(globals, name, value) < 0) { -#if CYTHON_COMPILING_IN_PYPY - Py_DECREF(name); -#endif - Py_DECREF(value); - goto bad; - } - } -#if CYTHON_COMPILING_IN_PYPY - Py_DECREF(name); -#endif - } - Py_DECREF(names); - return globals; -bad: - Py_XDECREF(names); - Py_XDECREF(globals); - return NULL; -} - -/* CLineInTraceback */ - #ifndef CYTHON_CLINE_IN_TRACEBACK -static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) { - PyObject *use_cline; - PyObject *ptype, *pvalue, *ptraceback; -#if CYTHON_COMPILING_IN_CPYTHON - PyObject **cython_runtime_dict; -#endif - if (unlikely(!__pyx_cython_runtime)) { - return c_line; - } - __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); -#if CYTHON_COMPILING_IN_CPYTHON - cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); - if (likely(cython_runtime_dict)) { - use_cline = __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback); - } else -#endif - { - PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); - if (use_cline_obj) { - use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; - Py_DECREF(use_cline_obj); - } else { - PyErr_Clear(); - use_cline = NULL; - } - } - if (!use_cline) { - c_line = 0; - PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); - } - else if (PyObject_Not(use_cline) != 0) { - c_line = 0; - } - __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); - return c_line; -} -#endif - -/* CodeObjectCache */ - static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { - int start = 0, mid = 0, end = count - 1; - if (end >= 0 && code_line > entries[end].code_line) { - return count; - } - while (start < end) { - mid = start + (end - start) / 2; - if (code_line < entries[mid].code_line) { - end = mid; - } else if (code_line > entries[mid].code_line) { - start = mid + 1; - } else { - return mid; - } - } - if (code_line <= entries[mid].code_line) { - return mid; - } else { - return mid + 1; - } -} -static PyCodeObject *__pyx_find_code_object(int code_line) { - PyCodeObject* code_object; - int pos; - if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { - return NULL; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { - return NULL; - } - code_object = __pyx_code_cache.entries[pos].code_object; - Py_INCREF(code_object); - return code_object; -} -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { - int pos, i; - __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; - if (unlikely(!code_line)) { - return; - } - if (unlikely(!entries)) { - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); - if (likely(entries)) { - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = 64; - __pyx_code_cache.count = 1; - entries[0].code_line = code_line; - entries[0].code_object = code_object; - Py_INCREF(code_object); - } - return; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { - PyCodeObject* tmp = entries[pos].code_object; - entries[pos].code_object = code_object; - Py_DECREF(tmp); - return; - } - if (__pyx_code_cache.count == __pyx_code_cache.max_count) { - int new_max = __pyx_code_cache.max_count + 64; - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( - __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry)); - if (unlikely(!entries)) { - return; - } - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = new_max; - } - for (i=__pyx_code_cache.count; i>pos; i--) { - entries[i] = entries[i-1]; - } - entries[pos].code_line = code_line; - entries[pos].code_object = code_object; - __pyx_code_cache.count++; - Py_INCREF(code_object); -} - -/* AddTraceback */ - #include "compile.h" -#include "frameobject.h" -#include "traceback.h" -static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( - const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyObject *py_srcfile = 0; - PyObject *py_funcname = 0; - #if PY_MAJOR_VERSION < 3 - py_srcfile = PyString_FromString(filename); - #else - py_srcfile = PyUnicode_FromString(filename); - #endif - if (!py_srcfile) goto bad; - if (c_line) { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #else - py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #endif - } - else { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromString(funcname); - #else - py_funcname = PyUnicode_FromString(funcname); - #endif - } - if (!py_funcname) goto bad; - py_code = __Pyx_PyCode_New( - 0, - 0, - 0, - 0, - 0, - __pyx_empty_bytes, /*PyObject *code,*/ - __pyx_empty_tuple, /*PyObject *consts,*/ - __pyx_empty_tuple, /*PyObject *names,*/ - __pyx_empty_tuple, /*PyObject *varnames,*/ - __pyx_empty_tuple, /*PyObject *freevars,*/ - __pyx_empty_tuple, /*PyObject *cellvars,*/ - py_srcfile, /*PyObject *filename,*/ - py_funcname, /*PyObject *name,*/ - py_line, - __pyx_empty_bytes /*PyObject *lnotab*/ - ); - Py_DECREF(py_srcfile); - Py_DECREF(py_funcname); - return py_code; -bad: - Py_XDECREF(py_srcfile); - Py_XDECREF(py_funcname); - return NULL; -} -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyFrameObject *py_frame = 0; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - if (c_line) { - c_line = __Pyx_CLineForTraceback(tstate, c_line); - } - py_code = __pyx_find_code_object(c_line ? -c_line : py_line); - if (!py_code) { - py_code = __Pyx_CreateCodeObjectForTraceback( - funcname, c_line, py_line, filename); - if (!py_code) goto bad; - __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); - } - py_frame = PyFrame_New( - tstate, /*PyThreadState *tstate,*/ - py_code, /*PyCodeObject *code,*/ - __pyx_d, /*PyObject *globals,*/ - 0 /*PyObject *locals*/ - ); - if (!py_frame) goto bad; - __Pyx_PyFrame_SetLineNumber(py_frame, py_line); - PyTraceBack_Here(py_frame); -bad: - Py_XDECREF(py_code); - Py_XDECREF(py_frame); -} - -/* CIntFromPyVerify */ - #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) -#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) -#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ - {\ - func_type value = func_value;\ - if (sizeof(target_type) < sizeof(func_type)) {\ - if (unlikely(value != (func_type) (target_type) value)) {\ - func_type zero = 0;\ - if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ - return (target_type) -1;\ - if (is_unsigned && unlikely(value < zero))\ - goto raise_neg_overflow;\ - else\ - goto raise_overflow;\ - }\ - }\ - return (target_type) value;\ - } - -/* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { - const int neg_one = (int) -1, const_zero = (int) 0; - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(int) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(int) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -#endif - } - } else { - if (sizeof(int) <= sizeof(long)) { - return PyInt_FromLong((long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); -#endif - } - } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; - return _PyLong_FromByteArray(bytes, sizeof(int), - little, !is_unsigned); - } -} - -/* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { - const long neg_one = (long) -1, const_zero = (long) 0; - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(long) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(long) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -#endif - } - } else { - if (sizeof(long) <= sizeof(long)) { - return PyInt_FromLong((long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); -#endif - } - } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; - return _PyLong_FromByteArray(bytes, sizeof(long), - little, !is_unsigned); - } -} - -/* CIntFromPy */ - static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { - const int neg_one = (int) -1, const_zero = (int) 0; - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(int) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (int) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (int) 0; - case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { - return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { - return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { - return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (int) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(int) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (int) 0; - case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) - case -2: - if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - } -#endif - if (sizeof(int) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - int val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (int) -1; - } - } else { - int val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (int) -1; - val = __Pyx_PyInt_As_int(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to int"); - return (int) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to int"); - return (int) -1; -} - -/* CIntFromPy */ - static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { - const long neg_one = (long) -1, const_zero = (long) 0; - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(long) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (long) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { - return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { - return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { - return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (long) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(long) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) - case -2: - if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - } -#endif - if (sizeof(long) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - long val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (long) -1; - } - } else { - long val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (long) -1; - val = __Pyx_PyInt_As_long(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to long"); - return (long) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to long"); - return (long) -1; -} - -/* FastTypeChecks */ - #if CYTHON_COMPILING_IN_CPYTHON -static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { - while (a) { - a = a->tp_base; - if (a == b) - return 1; - } - return b == &PyBaseObject_Type; -} -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { - PyObject *mro; - if (a == b) return 1; - mro = a->tp_mro; - if (likely(mro)) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(mro); - for (i = 0; i < n; i++) { - if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) - return 1; - } - return 0; - } - return __Pyx_InBases(a, b); -} -#if PY_MAJOR_VERSION == 2 -static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { - PyObject *exception, *value, *tb; - int res; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&exception, &value, &tb); - res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - if (!res) { - res = PyObject_IsSubclass(err, exc_type2); - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - } - __Pyx_ErrRestore(exception, value, tb); - return res; -} -#else -static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { - int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0; - if (!res) { - res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); - } - return res; -} -#endif -static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - assert(PyExceptionClass_Check(exc_type)); - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; i<n; i++) { - if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1; - } -#endif - for (i=0; i<n; i++) { - PyObject *t = PyTuple_GET_ITEM(tuple, i); - #if PY_MAJOR_VERSION < 3 - if (likely(exc_type == t)) return 1; - #endif - if (likely(PyExceptionClass_Check(t))) { - if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1; - } else { - } - } - return 0; -} -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) { - if (likely(err == exc_type)) return 1; - if (likely(PyExceptionClass_Check(err))) { - if (likely(PyExceptionClass_Check(exc_type))) { - return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type); - } else if (likely(PyTuple_Check(exc_type))) { - return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type); - } else { - } - } - return PyErr_GivenExceptionMatches(err, exc_type); -} -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) { - assert(PyExceptionClass_Check(exc_type1)); - assert(PyExceptionClass_Check(exc_type2)); - if (likely(err == exc_type1 || err == exc_type2)) return 1; - if (likely(PyExceptionClass_Check(err))) { - return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2); - } - return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2)); -} -#endif - -/* CheckBinaryVersion */ - static int __Pyx_check_binary_version(void) { - char ctversion[4], rtversion[4]; - PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); - PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); - if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) { - char message[200]; - PyOS_snprintf(message, sizeof(message), - "compiletime version %s of module '%.100s' " - "does not match runtime version %s", - ctversion, __Pyx_MODULE_NAME, rtversion); - return PyErr_WarnEx(NULL, message, 1); - } - return 0; -} - -/* VoidPtrExport */ - static int __Pyx_ExportVoidPtr(PyObject *name, void *p, const char *sig) { - PyObject *d; - PyObject *cobj = 0; - d = PyDict_GetItem(__pyx_d, __pyx_n_s_pyx_capi); - Py_XINCREF(d); - if (!d) { - d = PyDict_New(); - if (!d) - goto bad; - if (__Pyx_PyObject_SetAttrStr(__pyx_m, __pyx_n_s_pyx_capi, d) < 0) - goto bad; - } -#if PY_VERSION_HEX >= 0x02070000 - cobj = PyCapsule_New(p, sig, 0); -#else - cobj = PyCObject_FromVoidPtrAndDesc(p, (void *)sig, 0); -#endif - if (!cobj) - goto bad; - if (PyDict_SetItem(d, name, cobj) < 0) - goto bad; - Py_DECREF(cobj); - Py_DECREF(d); - return 0; -bad: - Py_XDECREF(cobj); - Py_XDECREF(d); - return -1; -} - -/* FunctionExport */ - static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) { - PyObject *d = 0; - PyObject *cobj = 0; - union { - void (*fp)(void); - void *p; - } tmp; - d = PyObject_GetAttrString(__pyx_m, (char *)"__pyx_capi__"); - if (!d) { - PyErr_Clear(); - d = PyDict_New(); - if (!d) - goto bad; - Py_INCREF(d); - if (PyModule_AddObject(__pyx_m, (char *)"__pyx_capi__", d) < 0) - goto bad; - } - tmp.fp = f; -#if PY_VERSION_HEX >= 0x02070000 - cobj = PyCapsule_New(tmp.p, sig, 0); -#else - cobj = PyCObject_FromVoidPtrAndDesc(tmp.p, (void *)sig, 0); -#endif - if (!cobj) - goto bad; - if (PyDict_SetItemString(d, name, cobj) < 0) - goto bad; - Py_DECREF(cobj); - Py_DECREF(d); - return 0; -bad: - Py_XDECREF(cobj); - Py_XDECREF(d); - return -1; -} - -/* ModuleImport */ - #ifndef __PYX_HAVE_RT_ImportModule -#define __PYX_HAVE_RT_ImportModule -static PyObject *__Pyx_ImportModule(const char *name) { - PyObject *py_name = 0; - PyObject *py_module = 0; - py_name = __Pyx_PyIdentifier_FromString(name); - if (!py_name) - goto bad; - py_module = PyImport_Import(py_name); - Py_DECREF(py_name); - return py_module; -bad: - Py_XDECREF(py_name); - return 0; -} -#endif - -/* TypeImport */ - #ifndef __PYX_HAVE_RT_ImportType -#define __PYX_HAVE_RT_ImportType -static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, - size_t size, int strict) -{ - PyObject *py_module = 0; - PyObject *result = 0; - PyObject *py_name = 0; - char warning[200]; - Py_ssize_t basicsize; -#ifdef Py_LIMITED_API - PyObject *py_basicsize; -#endif - py_module = __Pyx_ImportModule(module_name); - if (!py_module) - goto bad; - py_name = __Pyx_PyIdentifier_FromString(class_name); - if (!py_name) - goto bad; - result = PyObject_GetAttr(py_module, py_name); - Py_DECREF(py_name); - py_name = 0; - Py_DECREF(py_module); - py_module = 0; - if (!result) - goto bad; - if (!PyType_Check(result)) { - PyErr_Format(PyExc_TypeError, - "%.200s.%.200s is not a type object", - module_name, class_name); - goto bad; - } -#ifndef Py_LIMITED_API - basicsize = ((PyTypeObject *)result)->tp_basicsize; -#else - py_basicsize = PyObject_GetAttrString(result, "__basicsize__"); - if (!py_basicsize) - goto bad; - basicsize = PyLong_AsSsize_t(py_basicsize); - Py_DECREF(py_basicsize); - py_basicsize = 0; - if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred()) - goto bad; -#endif - if (!strict && (size_t)basicsize > size) { - PyOS_snprintf(warning, sizeof(warning), - "%s.%s size changed, may indicate binary incompatibility. Expected %zd, got %zd", - module_name, class_name, basicsize, size); - if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad; - } - else if ((size_t)basicsize != size) { - PyErr_Format(PyExc_ValueError, - "%.200s.%.200s has the wrong size, try recompiling. Expected %zd, got %zd", - module_name, class_name, basicsize, size); - goto bad; - } - return (PyTypeObject *)result; -bad: - Py_XDECREF(py_module); - Py_XDECREF(result); - return NULL; -} -#endif - -/* VoidPtrImport */ - #ifndef __PYX_HAVE_RT_ImportVoidPtr -#define __PYX_HAVE_RT_ImportVoidPtr -static int __Pyx_ImportVoidPtr(PyObject *module, const char *name, void **p, const char *sig) { - PyObject *d = 0; - PyObject *cobj = 0; - d = PyObject_GetAttrString(module, (char *)"__pyx_capi__"); - if (!d) - goto bad; - cobj = PyDict_GetItemString(d, name); - if (!cobj) { - PyErr_Format(PyExc_ImportError, - "%.200s does not export expected C variable %.200s", - PyModule_GetName(module), name); - goto bad; - } -#if PY_VERSION_HEX >= 0x02070000 - if (!PyCapsule_IsValid(cobj, sig)) { - PyErr_Format(PyExc_TypeError, - "C variable %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", - PyModule_GetName(module), name, sig, PyCapsule_GetName(cobj)); - goto bad; - } - *p = PyCapsule_GetPointer(cobj, sig); -#else - {const char *desc, *s1, *s2; - desc = (const char *)PyCObject_GetDesc(cobj); - if (!desc) - goto bad; - s1 = desc; s2 = sig; - while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; } - if (*s1 != *s2) { - PyErr_Format(PyExc_TypeError, - "C variable %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", - PyModule_GetName(module), name, sig, desc); - goto bad; - } - *p = PyCObject_AsVoidPtr(cobj);} -#endif - if (!(*p)) - goto bad; - Py_DECREF(d); - return 0; -bad: - Py_XDECREF(d); - return -1; -} -#endif - -/* FunctionImport */ - #ifndef __PYX_HAVE_RT_ImportFunction -#define __PYX_HAVE_RT_ImportFunction -static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) { - PyObject *d = 0; - PyObject *cobj = 0; - union { - void (*fp)(void); - void *p; - } tmp; - d = PyObject_GetAttrString(module, (char *)"__pyx_capi__"); - if (!d) - goto bad; - cobj = PyDict_GetItemString(d, funcname); - if (!cobj) { - PyErr_Format(PyExc_ImportError, - "%.200s does not export expected C function %.200s", - PyModule_GetName(module), funcname); - goto bad; - } -#if PY_VERSION_HEX >= 0x02070000 - if (!PyCapsule_IsValid(cobj, sig)) { - PyErr_Format(PyExc_TypeError, - "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", - PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj)); - goto bad; - } - tmp.p = PyCapsule_GetPointer(cobj, sig); -#else - {const char *desc, *s1, *s2; - desc = (const char *)PyCObject_GetDesc(cobj); - if (!desc) - goto bad; - s1 = desc; s2 = sig; - while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; } - if (*s1 != *s2) { - PyErr_Format(PyExc_TypeError, - "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", - PyModule_GetName(module), funcname, sig, desc); - goto bad; - } - tmp.p = PyCObject_AsVoidPtr(cobj);} -#endif - *f = tmp.fp; - if (!(*f)) - goto bad; - Py_DECREF(d); - return 0; -bad: - Py_XDECREF(d); - return -1; -} -#endif - -/* InitStrings */ - static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { - while (t->p) { - #if PY_MAJOR_VERSION < 3 - if (t->is_unicode) { - *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); - } else if (t->intern) { - *t->p = PyString_InternFromString(t->s); - } else { - *t->p = PyString_FromStringAndSize(t->s, t->n - 1); - } - #else - if (t->is_unicode | t->is_str) { - if (t->intern) { - *t->p = PyUnicode_InternFromString(t->s); - } else if (t->encoding) { - *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL); - } else { - *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1); - } - } else { - *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1); - } - #endif - if (!*t->p) - return -1; - if (PyObject_Hash(*t->p) == -1) - return -1; - ++t; - } - return 0; -} - -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { - return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); -} -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { - Py_ssize_t ignore; - return __Pyx_PyObject_AsStringAndSize(o, &ignore); -} -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -#if !CYTHON_PEP393_ENABLED -static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - char* defenc_c; - PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); - if (!defenc) return NULL; - defenc_c = PyBytes_AS_STRING(defenc); -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - { - char* end = defenc_c + PyBytes_GET_SIZE(defenc); - char* c; - for (c = defenc_c; c < end; c++) { - if ((unsigned char) (*c) >= 128) { - PyUnicode_AsASCIIString(o); - return NULL; - } - } - } -#endif - *length = PyBytes_GET_SIZE(defenc); - return defenc_c; -} -#else -static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - if (likely(PyUnicode_IS_ASCII(o))) { - *length = PyUnicode_GET_LENGTH(o); - return PyUnicode_AsUTF8(o); - } else { - PyUnicode_AsASCIIString(o); - return NULL; - } -#else - return PyUnicode_AsUTF8AndSize(o, length); -#endif -} -#endif -#endif -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT - if ( -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - __Pyx_sys_getdefaultencoding_not_ascii && -#endif - PyUnicode_Check(o)) { - return __Pyx_PyUnicode_AsStringAndSize(o, length); - } else -#endif -#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) - if (PyByteArray_Check(o)) { - *length = PyByteArray_GET_SIZE(o); - return PyByteArray_AS_STRING(o); - } else -#endif - { - char* result; - int r = PyBytes_AsStringAndSize(o, &result, length); - if (unlikely(r < 0)) { - return NULL; - } else { - return result; - } - } -} -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { - int is_true = x == Py_True; - if (is_true | (x == Py_False) | (x == Py_None)) return is_true; - else return PyObject_IsTrue(x); -} -static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { -#if PY_MAJOR_VERSION >= 3 - if (PyLong_Check(result)) { - if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, - "__int__ returned non-int (type %.200s). " - "The ability to return an instance of a strict subclass of int " - "is deprecated, and may be removed in a future version of Python.", - Py_TYPE(result)->tp_name)) { - Py_DECREF(result); - return NULL; - } - return result; - } -#endif - PyErr_Format(PyExc_TypeError, - "__%.4s__ returned non-%.4s (type %.200s)", - type_name, type_name, Py_TYPE(result)->tp_name); - Py_DECREF(result); - return NULL; -} -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { -#if CYTHON_USE_TYPE_SLOTS - PyNumberMethods *m; -#endif - const char *name = NULL; - PyObject *res = NULL; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x) || PyLong_Check(x))) -#else - if (likely(PyLong_Check(x))) -#endif - return __Pyx_NewRef(x); -#if CYTHON_USE_TYPE_SLOTS - m = Py_TYPE(x)->tp_as_number; - #if PY_MAJOR_VERSION < 3 - if (m && m->nb_int) { - name = "int"; - res = m->nb_int(x); - } - else if (m && m->nb_long) { - name = "long"; - res = m->nb_long(x); - } - #else - if (likely(m && m->nb_int)) { - name = "int"; - res = m->nb_int(x); - } - #endif -#else - if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { - res = PyNumber_Int(x); - } -#endif - if (likely(res)) { -#if PY_MAJOR_VERSION < 3 - if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { -#else - if (unlikely(!PyLong_CheckExact(res))) { -#endif - return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); - } - } - else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_TypeError, - "an integer is required"); - } - return res; -} -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { - Py_ssize_t ival; - PyObject *x; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(b))) { - if (sizeof(Py_ssize_t) >= sizeof(long)) - return PyInt_AS_LONG(b); - else - return PyInt_AsSsize_t(x); - } -#endif - if (likely(PyLong_CheckExact(b))) { - #if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)b)->ob_digit; - const Py_ssize_t size = Py_SIZE(b); - if (likely(__Pyx_sst_abs(size) <= 1)) { - ival = likely(size) ? digits[0] : 0; - if (size == -1) ival = -ival; - return ival; - } else { - switch (size) { - case 2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - } - } - #endif - return PyLong_AsSsize_t(b); - } - x = PyNumber_Index(b); - if (!x) return -1; - ival = PyInt_AsSsize_t(x); - Py_DECREF(x); - return ival; -} -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { - return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); -} -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { - return PyInt_FromSize_t(ival); -} - - -#endif /* Py_PYTHON_H */ diff --git a/python/gevent/greenlet.py b/python/gevent/greenlet.py deleted file mode 100644 index 1d37034..0000000 --- a/python/gevent/greenlet.py +++ /dev/null @@ -1,944 +0,0 @@ -# Copyright (c) 2009-2012 Denis Bilenko. See LICENSE for details. -# cython: auto_pickle=False,embedsignature=True,always_allow_keywords=False - -from __future__ import absolute_import, print_function, division - -from sys import _getframe as sys_getframe -from sys import exc_info as sys_exc_info -from weakref import ref as wref - -# XXX: How to get cython to let us rename this as RawGreenlet -# like we prefer? -from greenlet import greenlet -from greenlet import GreenletExit - -from gevent._compat import reraise -from gevent._compat import PYPY as _PYPY -from gevent._tblib import dump_traceback -from gevent._tblib import load_traceback - -from gevent.exceptions import InvalidSwitchError - -from gevent._hub_primitives import iwait_on_objects as iwait -from gevent._hub_primitives import wait_on_objects as wait - -from gevent.timeout import Timeout - -from gevent._config import config as GEVENT_CONFIG -from gevent._util import Lazy -from gevent._util import readproperty -from gevent._hub_local import get_hub_noargs as get_hub -from gevent import _waiter - - -__all__ = [ - 'Greenlet', - 'joinall', - 'killall', -] - - -# In Cython, we define these as 'cdef inline' functions. The -# compilation unit cannot have a direct assignment to them (import -# is assignment) without generating a 'lvalue is not valid target' -# error. -locals()['getcurrent'] = __import__('greenlet').getcurrent -locals()['greenlet_init'] = lambda: None -locals()['Waiter'] = _waiter.Waiter - - -if _PYPY: - import _continuation # pylint:disable=import-error - _continulet = _continuation.continulet - - -class SpawnedLink(object): - """ - A wrapper around link that calls it in another greenlet. - - Can be called only from main loop. - """ - __slots__ = ['callback'] - - def __init__(self, callback): - if not callable(callback): - raise TypeError("Expected callable: %r" % (callback, )) - self.callback = callback - - def __call__(self, source): - g = greenlet(self.callback, get_hub()) - g.switch(source) - - def __hash__(self): - return hash(self.callback) - - def __eq__(self, other): - return self.callback == getattr(other, 'callback', other) - - def __str__(self): - return str(self.callback) - - def __repr__(self): - return repr(self.callback) - - def __getattr__(self, item): - assert item != 'callback' - return getattr(self.callback, item) - - -class SuccessSpawnedLink(SpawnedLink): - """A wrapper around link that calls it in another greenlet only if source succeed. - - Can be called only from main loop. - """ - __slots__ = [] - - def __call__(self, source): - if source.successful(): - return SpawnedLink.__call__(self, source) - - -class FailureSpawnedLink(SpawnedLink): - """A wrapper around link that calls it in another greenlet only if source failed. - - Can be called only from main loop. - """ - __slots__ = [] - - def __call__(self, source): - if not source.successful(): - return SpawnedLink.__call__(self, source) - -class _Frame(object): - - __slots__ = ('f_code', 'f_lineno', 'f_back') - - def __init__(self, f_code, f_lineno, f_back): - self.f_code = f_code - self.f_lineno = f_lineno - self.f_back = f_back - - @property - def f_globals(self): - return None - -def _Frame_from_list(frames): - previous = None - for frame in reversed(frames): - f = _Frame(frame[0], frame[1], previous) - previous = f - return previous - -def _extract_stack(limit): - try: - frame = sys_getframe() - except ValueError: - # In certain embedded cases that directly use the Python C api - # to call Greenlet.spawn (e.g., uwsgi) this can raise - # `ValueError: call stack is not deep enough`. This is because - # the Cython stack frames for Greenlet.spawn -> - # Greenlet.__init__ -> _extract_stack are all on the C level, - # not the Python level. - # See https://github.com/gevent/gevent/issues/1212 - frame = None - - frames = [] - - while limit and frame is not None: - limit -= 1 - frames.append((frame.f_code, frame.f_lineno)) - frame = frame.f_back - - return frames - - -_greenlet__init__ = greenlet.__init__ - -class Greenlet(greenlet): - """ - A light-weight cooperatively-scheduled execution unit. - """ - # pylint:disable=too-many-public-methods,too-many-instance-attributes - - spawning_stack_limit = 10 - - # pylint:disable=keyword-arg-before-vararg,super-init-not-called - def __init__(self, run=None, *args, **kwargs): - """ - :param args: The arguments passed to the ``run`` function. - :param kwargs: The keyword arguments passed to the ``run`` function. - :keyword callable run: The callable object to run. If not given, this object's - `_run` method will be invoked (typically defined by subclasses). - - .. versionchanged:: 1.1b1 - The ``run`` argument to the constructor is now verified to be a callable - object. Previously, passing a non-callable object would fail after the greenlet - was spawned. - - .. versionchanged:: 1.3b1 - The ``GEVENT_TRACK_GREENLET_TREE`` configuration value may be set to - a false value to disable ``spawn_tree_locals``, ``spawning_greenlet``, - and ``spawning_stack``. The first two will be None in that case, and the - latter will be empty. - """ - # The attributes are documented in the .rst file - - # greenlet.greenlet(run=None, parent=None) - # Calling it with both positional arguments instead of a keyword - # argument (parent=get_hub()) speeds up creation of this object ~30%: - # python -m timeit -s 'import gevent' 'gevent.Greenlet()' - # Python 3.5: 2.70usec with keywords vs 1.94usec with positional - # Python 3.4: 2.32usec with keywords vs 1.74usec with positional - # Python 3.3: 2.55usec with keywords vs 1.92usec with positional - # Python 2.7: 1.73usec with keywords vs 1.40usec with positional - - # Timings taken Feb 21 2018 prior to integration of #755 - # python -m perf timeit -s 'import gevent' 'gevent.Greenlet()' - # 3.6.4 : Mean +- std dev: 1.08 us +- 0.05 us - # 2.7.14 : Mean +- std dev: 1.44 us +- 0.06 us - # PyPy2 5.10.0: Mean +- std dev: 2.14 ns +- 0.08 ns - - # After the integration of spawning_stack, spawning_greenlet, - # and spawn_tree_locals on that same date: - # 3.6.4 : Mean +- std dev: 8.92 us +- 0.36 us -> 8.2x - # 2.7.14 : Mean +- std dev: 14.8 us +- 0.5 us -> 10.2x - # PyPy2 5.10.0: Mean +- std dev: 3.24 us +- 0.17 us -> 1.5x - - # Compiling with Cython gets us to these numbers: - # 3.6.4 : Mean +- std dev: 3.63 us +- 0.14 us - # 2.7.14 : Mean +- std dev: 3.37 us +- 0.20 us - # PyPy2 5.10.0 : Mean +- std dev: 4.44 us +- 0.28 us - - - _greenlet__init__(self, None, get_hub()) - - if run is not None: - self._run = run - - # If they didn't pass a callable at all, then they must - # already have one. Note that subclassing to override the run() method - # itself has never been documented or supported. - if not callable(self._run): - raise TypeError("The run argument or self._run must be callable") - - self.args = args - self.kwargs = kwargs - self.value = None - - #: An event, such as a timer or a callback that fires. It is established in - #: start() and start_later() as those two objects, respectively. - #: Once this becomes non-None, the Greenlet cannot be started again. Conversely, - #: kill() and throw() check for non-None to determine if this object has ever been - #: scheduled for starting. A placeholder _dummy_event is assigned by them to prevent - #: the greenlet from being started in the future, if necessary. - self._start_event = None - - self._notifier = None - self._formatted_info = None - self._links = [] - self._ident = None - - # Initial state: None. - # Completed successfully: (None, None, None) - # Failed with exception: (t, v, dump_traceback(tb))) - self._exc_info = None - - if GEVENT_CONFIG.track_greenlet_tree: - spawner = getcurrent() # pylint:disable=undefined-variable - self.spawning_greenlet = wref(spawner) - try: - self.spawn_tree_locals = spawner.spawn_tree_locals - except AttributeError: - self.spawn_tree_locals = {} - if spawner.parent is not None: - # The main greenlet has no parent. - # Its children get separate locals. - spawner.spawn_tree_locals = self.spawn_tree_locals - - self._spawning_stack_frames = _extract_stack(self.spawning_stack_limit) - self._spawning_stack_frames.extend(getattr(spawner, '_spawning_stack_frames', [])) - else: - # None is the default for all of these in Cython, but we - # need to declare them for pure-Python mode. - self.spawning_greenlet = None - self.spawn_tree_locals = None - self._spawning_stack_frames = None - - @Lazy - def spawning_stack(self): - # Store this in the __dict__. We don't use it from the C - # code. It's tempting to discard _spawning_stack_frames - # after this, but child greenlets may still be created - # that need it. - return _Frame_from_list(self._spawning_stack_frames or []) - - def _get_minimal_ident(self): - reg = self.parent.ident_registry - return reg.get_ident(self) - - @property - def minimal_ident(self): - """ - A small, unique integer that identifies this object. - - This is similar to :attr:`threading.Thread.ident` (and `id`) - in that as long as this object is alive, no other greenlet *in - this hub* will have the same id, but it makes a stronger - guarantee that the assigned values will be small and - sequential. Sometime after this object has died, the value - will be available for reuse. - - To get ids that are unique across all hubs, combine this with - the hub's ``minimal_ident``. - - .. versionadded:: 1.3a2 - """ - if self._ident is None: - self._ident = self._get_minimal_ident() - return self._ident - - @readproperty - def name(self): - """ - The greenlet name. By default, a unique name is constructed using - the :attr:`minimal_ident`. You can assign a string to this - value to change it. It is shown in the `repr` of this object. - - .. versionadded:: 1.3a2 - """ - return 'Greenlet-%d' % (self.minimal_ident) - - def _raise_exception(self): - reraise(*self.exc_info) - - @property - def loop(self): - # needed by killall - return self.parent.loop - - def __nonzero__(self): - return self._start_event is not None and self._exc_info is None - try: - __bool__ = __nonzero__ # Python 3 - except NameError: # pragma: no cover - # When we're compiled with Cython, the __nonzero__ function - # goes directly into the slot and can't be accessed by name. - pass - - ### Lifecycle - - if _PYPY: - # oops - pypy's .dead relies on __nonzero__ which we overriden above - @property - def dead(self): - "Boolean indicating that the greenlet is dead and will not run again." - if self._greenlet__main: - return False - if self.__start_cancelled_by_kill() or self.__started_but_aborted(): - return True - - return self._greenlet__started and not _continulet.is_pending(self) - else: - @property - def dead(self): - "Boolean indicating that the greenlet is dead and will not run again." - return self.__start_cancelled_by_kill() or self.__started_but_aborted() or greenlet.dead.__get__(self) - - def __never_started_or_killed(self): - return self._start_event is None - - def __start_pending(self): - return (self._start_event is not None - and (self._start_event.pending or getattr(self._start_event, 'active', False))) - - def __start_cancelled_by_kill(self): - return self._start_event is _cancelled_start_event - - def __start_completed(self): - return self._start_event is _start_completed_event - - def __started_but_aborted(self): - return (not self.__never_started_or_killed() # we have been started or killed - and not self.__start_cancelled_by_kill() # we weren't killed, so we must have been started - and not self.__start_completed() # the start never completed - and not self.__start_pending()) # and we're not pending, so we must have been aborted - - def __cancel_start(self): - if self._start_event is None: - # prevent self from ever being started in the future - self._start_event = _cancelled_start_event - # cancel any pending start event - # NOTE: If this was a real pending start event, this will leave a - # "dangling" callback/timer object in the hub.loop.callbacks list; - # depending on where we are in the event loop, it may even be in a local - # variable copy of that list (in _run_callbacks). This isn't a problem, - # except for the leak-tests. - self._start_event.stop() - self._start_event.close() - - def __handle_death_before_start(self, args): - # args is (t, v, tb) or simply t or v - if self._exc_info is None and self.dead: - # the greenlet was never switched to before and it will never be, _report_error was not called - # the result was not set and the links weren't notified. let's do it here. - # checking that self.dead is true is essential, because throw() does not necessarily kill the greenlet - # (if the exception raised by throw() is caught somewhere inside the greenlet). - if len(args) == 1: - arg = args[0] - #if isinstance(arg, type): - if type(arg) is type(Exception): - args = (arg, arg(), None) - else: - args = (type(arg), arg, None) - elif not args: - args = (GreenletExit, GreenletExit(), None) - self._report_error(args) - - @property - def started(self): - # DEPRECATED - return bool(self) - - def ready(self): - """ - Return a true value if and only if the greenlet has finished - execution. - - .. versionchanged:: 1.1 - This function is only guaranteed to return true or false *values*, not - necessarily the literal constants ``True`` or ``False``. - """ - return self.dead or self._exc_info is not None - - def successful(self): - """ - Return a true value if and only if the greenlet has finished execution - successfully, that is, without raising an error. - - .. tip:: A greenlet that has been killed with the default - :class:`GreenletExit` exception is considered successful. - That is, ``GreenletExit`` is not considered an error. - - .. note:: This function is only guaranteed to return true or false *values*, - not necessarily the literal constants ``True`` or ``False``. - """ - return self._exc_info is not None and self._exc_info[1] is None - - def __repr__(self): - classname = self.__class__.__name__ - result = '<%s "%s" at %s' % (classname, self.name, hex(id(self))) - formatted = self._formatinfo() - if formatted: - result += ': ' + formatted - return result + '>' - - - def _formatinfo(self): - info = self._formatted_info - if info is not None: - return info - - # Are we running an arbitrary function provided to the constructor, - # or did a subclass override _run? - func = self._run - im_self = getattr(func, '__self__', None) - if im_self is self: - funcname = '_run' - elif im_self is not None: - funcname = repr(func) - else: - funcname = getattr(func, '__name__', '') or repr(func) - - result = funcname - args = [] - if self.args: - args = [repr(x)[:50] for x in self.args] - if self.kwargs: - args.extend(['%s=%s' % (key, repr(value)[:50]) for (key, value) in self.kwargs.items()]) - if args: - result += '(' + ', '.join(args) + ')' - # it is important to save the result here, because once the greenlet exits '_run' attribute will be removed - self._formatted_info = result - return result - - @property - def exception(self): - """ - Holds the exception instance raised by the function if the - greenlet has finished with an error. Otherwise ``None``. - """ - return self._exc_info[1] if self._exc_info is not None else None - - @property - def exc_info(self): - """ - Holds the exc_info three-tuple raised by the function if the - greenlet finished with an error. Otherwise a false value. - - .. note:: This is a provisional API and may change. - - .. versionadded:: 1.1 - """ - ei = self._exc_info - if ei is not None and ei[0] is not None: - return (ei[0], ei[1], load_traceback(ei[2])) - - def throw(self, *args): - """Immediately switch into the greenlet and raise an exception in it. - - Should only be called from the HUB, otherwise the current greenlet is left unscheduled forever. - To raise an exception in a safe manner from any greenlet, use :meth:`kill`. - - If a greenlet was started but never switched to yet, then also - a) cancel the event that will start it - b) fire the notifications as if an exception was raised in a greenlet - """ - self.__cancel_start() - - try: - if not self.dead: - # Prevent switching into a greenlet *at all* if we had never - # started it. Usually this is the same thing that happens by throwing, - # but if this is done from the hub with nothing else running, prevents a - # LoopExit. - greenlet.throw(self, *args) - finally: - self.__handle_death_before_start(args) - - def start(self): - """Schedule the greenlet to run in this loop iteration""" - if self._start_event is None: - self._start_event = self.parent.loop.run_callback(self.switch) - - def start_later(self, seconds): - """ - start_later(seconds) -> None - - Schedule the greenlet to run in the future loop iteration - *seconds* later - """ - if self._start_event is None: - self._start_event = self.parent.loop.timer(seconds) - self._start_event.start(self.switch) - - @classmethod - def spawn(cls, *args, **kwargs): - """ - spawn(function, *args, **kwargs) -> Greenlet - - Create a new :class:`Greenlet` object and schedule it to run ``function(*args, **kwargs)``. - This can be used as ``gevent.spawn`` or ``Greenlet.spawn``. - - The arguments are passed to :meth:`Greenlet.__init__`. - - .. versionchanged:: 1.1b1 - If a *function* is given that is not callable, immediately raise a :exc:`TypeError` - instead of spawning a greenlet that will raise an uncaught TypeError. - """ - g = cls(*args, **kwargs) - g.start() - return g - - @classmethod - def spawn_later(cls, seconds, *args, **kwargs): - """ - spawn_later(seconds, function, *args, **kwargs) -> Greenlet - - Create and return a new `Greenlet` object scheduled to run ``function(*args, **kwargs)`` - in a future loop iteration *seconds* later. This can be used as ``Greenlet.spawn_later`` - or ``gevent.spawn_later``. - - The arguments are passed to :meth:`Greenlet.__init__`. - - .. versionchanged:: 1.1b1 - If an argument that's meant to be a function (the first argument in *args*, or the ``run`` keyword ) - is given to this classmethod (and not a classmethod of a subclass), - it is verified to be callable. Previously, the spawned greenlet would have failed - when it started running. - """ - if cls is Greenlet and not args and 'run' not in kwargs: - raise TypeError("") - g = cls(*args, **kwargs) - g.start_later(seconds) - return g - - def kill(self, exception=GreenletExit, block=True, timeout=None): - """ - Raise the ``exception`` in the greenlet. - - If ``block`` is ``True`` (the default), wait until the greenlet dies or the optional timeout expires. - If block is ``False``, the current greenlet is not unscheduled. - - The function always returns ``None`` and never raises an error. - - .. note:: - - Depending on what this greenlet is executing and the state - of the event loop, the exception may or may not be raised - immediately when this greenlet resumes execution. It may - be raised on a subsequent green call, or, if this greenlet - exits before making such a call, it may not be raised at - all. As of 1.1, an example where the exception is raised - later is if this greenlet had called :func:`sleep(0) - <gevent.sleep>`; an example where the exception is raised - immediately is if this greenlet had called - :func:`sleep(0.1) <gevent.sleep>`. - - .. caution:: - - Use care when killing greenlets. If the code executing is not - exception safe (e.g., makes proper use of ``finally``) then an - unexpected exception could result in corrupted state. - - See also :func:`gevent.kill`. - - :keyword type exception: The type of exception to raise in the greenlet. The default - is :class:`GreenletExit`, which indicates a :meth:`successful` completion - of the greenlet. - - .. versionchanged:: 0.13.0 - *block* is now ``True`` by default. - .. versionchanged:: 1.1a2 - If this greenlet had never been switched to, killing it will prevent it from ever being switched to. - """ - self.__cancel_start() - - if self.dead: - self.__handle_death_before_start((exception,)) - else: - waiter = Waiter() if block else None # pylint:disable=undefined-variable - self.parent.loop.run_callback(_kill, self, exception, waiter) - if block: - waiter.get() - self.join(timeout) - # it should be OK to use kill() in finally or kill a greenlet from more than one place; - # thus it should not raise when the greenlet is already killed (= not started) - - def get(self, block=True, timeout=None): - """ - get(block=True, timeout=None) -> object - - Return the result the greenlet has returned or re-raise the - exception it has raised. - - If block is ``False``, raise :class:`gevent.Timeout` if the - greenlet is still alive. If block is ``True``, unschedule the - current greenlet until the result is available or the timeout - expires. In the latter case, :class:`gevent.Timeout` is - raised. - """ - if self.ready(): - if self.successful(): - return self.value - self._raise_exception() - if not block: - raise Timeout() - - switch = getcurrent().switch # pylint:disable=undefined-variable - self.rawlink(switch) - try: - t = Timeout._start_new_or_dummy(timeout) - try: - result = self.parent.switch() - if result is not self: - raise InvalidSwitchError('Invalid switch into Greenlet.get(): %r' % (result, )) - finally: - t.cancel() - except: - # unlinking in 'except' instead of finally is an optimization: - # if switch occurred normally then link was already removed in _notify_links - # and there's no need to touch the links set. - # Note, however, that if "Invalid switch" assert was removed and invalid switch - # did happen, the link would remain, causing another invalid switch later in this greenlet. - self.unlink(switch) - raise - - if self.ready(): - if self.successful(): - return self.value - self._raise_exception() - - def join(self, timeout=None): - """ - join(timeout=None) -> None - - Wait until the greenlet finishes or *timeout* expires. Return - ``None`` regardless. - """ - if self.ready(): - return - - switch = getcurrent().switch # pylint:disable=undefined-variable - self.rawlink(switch) - try: - t = Timeout._start_new_or_dummy(timeout) - try: - result = self.parent.switch() - if result is not self: - raise InvalidSwitchError('Invalid switch into Greenlet.join(): %r' % (result, )) - finally: - t.cancel() - except Timeout as ex: - self.unlink(switch) - if ex is not t: - raise - except: - self.unlink(switch) - raise - - def _report_result(self, result): - self._exc_info = (None, None, None) - self.value = result - if self._links and not self._notifier: - self._notifier = self.parent.loop.run_callback(self._notify_links) - - def _report_error(self, exc_info): - if isinstance(exc_info[1], GreenletExit): - self._report_result(exc_info[1]) - return - - self._exc_info = exc_info[0], exc_info[1], dump_traceback(exc_info[2]) - - if self._links and not self._notifier: - self._notifier = self.parent.loop.run_callback(self._notify_links) - - try: - self.parent.handle_error(self, *exc_info) - finally: - del exc_info - - def run(self): - try: - self.__cancel_start() - self._start_event = _start_completed_event - - try: - result = self._run(*self.args, **self.kwargs) - except: # pylint:disable=bare-except - self._report_error(sys_exc_info()) - return - self._report_result(result) - finally: - self.__dict__.pop('_run', None) - self.args = () - self.kwargs.clear() - - def _run(self): - """ - Subclasses may override this method to take any number of - arguments and keyword arguments. - - .. versionadded:: 1.1a3 - Previously, if no callable object was - passed to the constructor, the spawned greenlet would later - fail with an AttributeError. - """ - # We usually override this in __init__ - # pylint: disable=method-hidden - return - - def has_links(self): - return len(self._links) - - def rawlink(self, callback): - """ - Register a callable to be executed when the greenlet finishes - execution. - - The *callback* will be called with this instance as an - argument. - - .. caution:: The callable will be called in the HUB greenlet. - """ - if not callable(callback): - raise TypeError('Expected callable: %r' % (callback, )) - self._links.append(callback) # pylint:disable=no-member - if self.ready() and self._links and not self._notifier: - self._notifier = self.parent.loop.run_callback(self._notify_links) - - def link(self, callback, SpawnedLink=SpawnedLink): - """ - Link greenlet's completion to a callable. - - The *callback* will be called with this instance as an - argument once this greenlet is dead. A callable is called in - its own :class:`greenlet.greenlet` (*not* a - :class:`Greenlet`). - """ - # XXX: Is the redefinition of SpawnedLink supposed to just be an - # optimization, or do people use it? It's not documented - # pylint:disable=redefined-outer-name - self.rawlink(SpawnedLink(callback)) - - def unlink(self, callback): - """Remove the callback set by :meth:`link` or :meth:`rawlink`""" - try: - self._links.remove(callback) # pylint:disable=no-member - except ValueError: - pass - - def unlink_all(self): - """ - Remove all the callbacks. - - .. versionadded:: 1.3a2 - """ - del self._links[:] - - def link_value(self, callback, SpawnedLink=SuccessSpawnedLink): - """ - Like :meth:`link` but *callback* is only notified when the greenlet - has completed successfully. - """ - # pylint:disable=redefined-outer-name - self.link(callback, SpawnedLink=SpawnedLink) - - def link_exception(self, callback, SpawnedLink=FailureSpawnedLink): - """ - Like :meth:`link` but *callback* is only notified when the - greenlet dies because of an unhandled exception. - """ - # pylint:disable=redefined-outer-name - self.link(callback, SpawnedLink=SpawnedLink) - - def _notify_links(self): - while self._links: - # Early links are allowed to remove later links - # before we get to them, and they're also allowed to - # add new links, so we have to be careful about iterating. - - # We don't expect this list to be very large, so the time spent - # manipulating it should be small. a deque is probably not justified. - # Cython has optimizations to transform this into a memmove anyway. - link = self._links.pop(0) - try: - link(self) - except: # pylint:disable=bare-except - self.parent.handle_error((link, self), *sys_exc_info()) - - -class _dummy_event(object): - __slots__ = ('pending', 'active') - - def __init__(self): - self.pending = self.active = False - - def stop(self): - pass - - def start(self, cb): # pylint:disable=unused-argument - raise AssertionError("Cannot start the dummy event") - - def close(self): - pass - -_cancelled_start_event = _dummy_event() -_start_completed_event = _dummy_event() - - -def _kill(glet, exception, waiter): - try: - glet.throw(exception) - except: # pylint:disable=bare-except - # XXX do we need this here? - glet.parent.handle_error(glet, *sys_exc_info()) - if waiter is not None: - waiter.switch(None) - - -def joinall(greenlets, timeout=None, raise_error=False, count=None): - """ - Wait for the ``greenlets`` to finish. - - :param greenlets: A sequence (supporting :func:`len`) of greenlets to wait for. - :keyword float timeout: If given, the maximum number of seconds to wait. - :return: A sequence of the greenlets that finished before the timeout (if any) - expired. - """ - if not raise_error: - return wait(greenlets, timeout=timeout, count=count) - - done = [] - for obj in iwait(greenlets, timeout=timeout, count=count): - if getattr(obj, 'exception', None) is not None: - if hasattr(obj, '_raise_exception'): - obj._raise_exception() - else: - raise obj.exception - done.append(obj) - return done - - -def _killall3(greenlets, exception, waiter): - diehards = [] - for g in greenlets: - if not g.dead: - try: - g.throw(exception) - except: # pylint:disable=bare-except - g.parent.handle_error(g, *sys_exc_info()) - if not g.dead: - diehards.append(g) - waiter.switch(diehards) - - -def _killall(greenlets, exception): - for g in greenlets: - if not g.dead: - try: - g.throw(exception) - except: # pylint:disable=bare-except - g.parent.handle_error(g, *sys_exc_info()) - - -def killall(greenlets, exception=GreenletExit, block=True, timeout=None): - """ - Forceably terminate all the ``greenlets`` by causing them to raise ``exception``. - - .. caution:: Use care when killing greenlets. If they are not prepared for exceptions, - this could result in corrupted state. - - :param greenlets: A **bounded** iterable of the non-None greenlets to terminate. - *All* the items in this iterable must be greenlets that belong to the same thread. - :keyword exception: The exception to raise in the greenlets. By default this is - :class:`GreenletExit`. - :keyword bool block: If True (the default) then this function only returns when all the - greenlets are dead; the current greenlet is unscheduled during that process. - If greenlets ignore the initial exception raised in them, - then they will be joined (with :func:`gevent.joinall`) and allowed to die naturally. - If False, this function returns immediately and greenlets will raise - the exception asynchronously. - :keyword float timeout: A time in seconds to wait for greenlets to die. If given, it is - only honored when ``block`` is True. - :raise Timeout: If blocking and a timeout is given that elapses before - all the greenlets are dead. - - .. versionchanged:: 1.1a2 - *greenlets* can be any iterable of greenlets, like an iterator or a set. - Previously it had to be a list or tuple. - """ - # support non-indexable containers like iterators or set objects - greenlets = list(greenlets) - if not greenlets: - return - loop = greenlets[0].loop - if block: - waiter = Waiter() # pylint:disable=undefined-variable - loop.run_callback(_killall3, greenlets, exception, waiter) - t = Timeout._start_new_or_dummy(timeout) - try: - alive = waiter.get() - if alive: - joinall(alive, raise_error=False) - finally: - t.cancel() - else: - loop.run_callback(_killall, greenlets, exception) - -def _init(): - greenlet_init() # pylint:disable=undefined-variable - -_init() - -from gevent._util import import_c_accel -import_c_accel(globals(), 'gevent._greenlet') diff --git a/python/gevent/hub.py b/python/gevent/hub.py deleted file mode 100644 index ca88d20..0000000 --- a/python/gevent/hub.py +++ /dev/null @@ -1,733 +0,0 @@ -# Copyright (c) 2009-2015 Denis Bilenko. See LICENSE for details. -""" -Event-loop hub. -""" -from __future__ import absolute_import, print_function -# XXX: FIXME: Refactor to make this smaller -# pylint:disable=too-many-lines -from functools import partial as _functools_partial - -import sys -import traceback - - -from greenlet import greenlet as RawGreenlet -from greenlet import getcurrent -from greenlet import GreenletExit - - - -__all__ = [ - 'getcurrent', - 'GreenletExit', - 'spawn_raw', - 'sleep', - 'kill', - 'signal', - 'reinit', - 'get_hub', - 'Hub', - 'Waiter', -] - -from gevent._config import config as GEVENT_CONFIG -from gevent._compat import thread_mod_name -from gevent._util import readproperty -from gevent._util import Lazy -from gevent._util import gmctime -from gevent._ident import IdentRegistry - -from gevent._hub_local import get_hub -from gevent._hub_local import get_loop -from gevent._hub_local import set_hub -from gevent._hub_local import set_loop -from gevent._hub_local import get_hub_if_exists as _get_hub -from gevent._hub_local import get_hub_noargs as _get_hub_noargs -from gevent._hub_local import set_default_hub_class - -from gevent._greenlet_primitives import TrackedRawGreenlet -from gevent._hub_primitives import WaitOperationsGreenlet - -# Export -from gevent import _hub_primitives -wait = _hub_primitives.wait_on_objects -iwait = _hub_primitives.iwait_on_objects - - -from gevent.exceptions import LoopExit - -from gevent._waiter import Waiter - -# Need the real get_ident. We're imported early enough (by gevent/__init__.py) -# that we can be sure nothing is monkey patched yet. -get_thread_ident = __import__(thread_mod_name).get_ident -MAIN_THREAD_IDENT = get_thread_ident() # XXX: Assuming import is done on the main thread. - - -def spawn_raw(function, *args, **kwargs): - """ - Create a new :class:`greenlet.greenlet` object and schedule it to - run ``function(*args, **kwargs)``. - - This returns a raw :class:`~greenlet.greenlet` which does not have all the useful - methods that :class:`gevent.Greenlet` has. Typically, applications - should prefer :func:`~gevent.spawn`, but this method may - occasionally be useful as an optimization if there are many - greenlets involved. - - .. versionchanged:: 1.1a3 - Verify that ``function`` is callable, raising a TypeError if not. Previously, - the spawned greenlet would have failed the first time it was switched to. - - .. versionchanged:: 1.1b1 - If *function* is not callable, immediately raise a :exc:`TypeError` - instead of spawning a greenlet that will raise an uncaught TypeError. - - .. versionchanged:: 1.1rc2 - Accept keyword arguments for ``function`` as previously (incorrectly) - documented. Note that this may incur an additional expense. - - .. versionchanged:: 1.3a2 - Populate the ``spawning_greenlet`` and ``spawn_tree_locals`` - attributes of the returned greenlet. - - .. versionchanged:: 1.3b1 - *Only* populate ``spawning_greenlet`` and ``spawn_tree_locals`` - if ``GEVENT_TRACK_GREENLET_TREE`` is enabled (the default). If not enabled, - those attributes will not be set. - - """ - if not callable(function): - raise TypeError("function must be callable") - - # The hub is always the parent. - hub = _get_hub_noargs() - - factory = TrackedRawGreenlet if GEVENT_CONFIG.track_greenlet_tree else RawGreenlet - - # The callback class object that we use to run this doesn't - # accept kwargs (and those objects are heavily used, as well as being - # implemented twice in core.ppyx and corecffi.py) so do it with a partial - if kwargs: - function = _functools_partial(function, *args, **kwargs) - g = factory(function, hub) - hub.loop.run_callback(g.switch) - else: - g = factory(function, hub) - hub.loop.run_callback(g.switch, *args) - - return g - - -def sleep(seconds=0, ref=True): - """ - Put the current greenlet to sleep for at least *seconds*. - - *seconds* may be specified as an integer, or a float if fractional - seconds are desired. - - .. tip:: In the current implementation, a value of 0 (the default) - means to yield execution to any other runnable greenlets, but - this greenlet may be scheduled again before the event loop - cycles (in an extreme case, a greenlet that repeatedly sleeps - with 0 can prevent greenlets that are ready to do I/O from - being scheduled for some (small) period of time); a value greater than - 0, on the other hand, will delay running this greenlet until - the next iteration of the loop. - - If *ref* is False, the greenlet running ``sleep()`` will not prevent :func:`gevent.wait` - from exiting. - - .. versionchanged:: 1.3a1 - Sleeping with a value of 0 will now be bounded to approximately block the - loop for no longer than :func:`gevent.getswitchinterval`. - - .. seealso:: :func:`idle` - """ - hub = _get_hub_noargs() - loop = hub.loop - if seconds <= 0: - waiter = Waiter(hub) - loop.run_callback(waiter.switch, None) - waiter.get() - else: - with loop.timer(seconds, ref=ref) as t: - # Sleeping is expected to be an "absolute" measure with - # respect to time.time(), not a relative measure, so it's - # important to update the loop's notion of now before we start - loop.update_now() - hub.wait(t) - - -def idle(priority=0): - """ - Cause the calling greenlet to wait until the event loop is idle. - - Idle is defined as having no other events of the same or higher - *priority* pending. That is, as long as sockets, timeouts or even - signals of the same or higher priority are being processed, the loop - is not idle. - - .. seealso:: :func:`sleep` - """ - hub = _get_hub_noargs() - watcher = hub.loop.idle() - if priority: - watcher.priority = priority - hub.wait(watcher) - - -def kill(greenlet, exception=GreenletExit): - """ - Kill greenlet asynchronously. The current greenlet is not unscheduled. - - .. note:: - - The method :meth:`Greenlet.kill` method does the same and - more (and the same caveats listed there apply here). However, the MAIN - greenlet - the one that exists initially - does not have a - ``kill()`` method, and neither do any created with :func:`spawn_raw`, - so you have to use this function. - - .. caution:: Use care when killing greenlets. If they are not prepared for - exceptions, this could result in corrupted state. - - .. versionchanged:: 1.1a2 - If the ``greenlet`` has a :meth:`kill <Greenlet.kill>` method, calls it. This prevents a - greenlet from being switched to for the first time after it's been - killed but not yet executed. - """ - if not greenlet.dead: - if hasattr(greenlet, 'kill'): - # dealing with gevent.greenlet.Greenlet. Use it, especially - # to avoid allowing one to be switched to for the first time - # after it's been killed - greenlet.kill(exception=exception, block=False) - else: - _get_hub_noargs().loop.run_callback(greenlet.throw, exception) - - -class signal(object): - """ - Call the *handler* with the *args* and *kwargs* when the process - receives the signal *signalnum*. - - The *handler* will be run in a new greenlet when the signal is delivered. - - This returns an object with the useful method ``cancel``, which, when called, - will prevent future deliveries of *signalnum* from calling *handler*. - - .. note:: - - This may not operate correctly with SIGCHLD if libev child watchers - are used (as they are by default with os.fork). - - .. versionchanged:: 1.2a1 - The ``handler`` argument is required to be callable at construction time. - """ - - # XXX: This is manually documented in gevent.rst while it is aliased in - # the gevent module. - - greenlet_class = None - - def __init__(self, signalnum, handler, *args, **kwargs): - if not callable(handler): - raise TypeError("signal handler must be callable.") - - self.hub = _get_hub_noargs() - self.watcher = self.hub.loop.signal(signalnum, ref=False) - self.watcher.start(self._start) - self.handler = handler - self.args = args - self.kwargs = kwargs - if self.greenlet_class is None: - from gevent import Greenlet - self.greenlet_class = Greenlet - - def _get_ref(self): - return self.watcher.ref - - def _set_ref(self, value): - self.watcher.ref = value - - ref = property(_get_ref, _set_ref) - del _get_ref, _set_ref - - def cancel(self): - self.watcher.stop() - - def _start(self): - try: - greenlet = self.greenlet_class(self.handle) - greenlet.switch() - except: # pylint:disable=bare-except - self.hub.handle_error(None, *sys._exc_info()) # pylint:disable=no-member - - def handle(self): - try: - self.handler(*self.args, **self.kwargs) - except: # pylint:disable=bare-except - self.hub.handle_error(None, *sys.exc_info()) - - -def reinit(hub=None): - """ - reinit() -> None - - Prepare the gevent hub to run in a new (forked) process. - - This should be called *immediately* after :func:`os.fork` in the - child process. This is done automatically by - :func:`gevent.os.fork` or if the :mod:`os` module has been - monkey-patched. If this function is not called in a forked - process, symptoms may include hanging of functions like - :func:`socket.getaddrinfo`, and the hub's threadpool is unlikely - to work. - - .. note:: Registered fork watchers may or may not run before - this function (and thus ``gevent.os.fork``) return. If they have - not run, they will run "soon", after an iteration of the event loop. - You can force this by inserting a few small (but non-zero) calls to :func:`sleep` - after fork returns. (As of gevent 1.1 and before, fork watchers will - not have run, but this may change in the future.) - - .. note:: This function may be removed in a future major release - if the fork process can be more smoothly managed. - - .. warning:: See remarks in :func:`gevent.os.fork` about greenlets - and event loop watchers in the child process. - """ - # Note the signature line in the docstring: hub is not a public param. - - # The loop reinit function in turn calls libev's ev_loop_fork - # function. - hub = _get_hub() if hub is None else hub - if hub is None: - return - - # Note that we reinit the existing loop, not destroy it. - # See https://github.com/gevent/gevent/issues/200. - hub.loop.reinit() - # libev's fork watchers are slow to fire because the only fire - # at the beginning of a loop; due to our use of callbacks that - # run at the end of the loop, that may be too late. The - # threadpool and resolvers depend on the fork handlers being - # run (specifically, the threadpool will fail in the forked - # child if there were any threads in it, which there will be - # if the resolver_thread was in use (the default) before the - # fork.) - # - # If the forked process wants to use the threadpool or - # resolver immediately (in a queued callback), it would hang. - # - # The below is a workaround. Fortunately, all of these - # methods are idempotent and can be called multiple times - # following a fork if the suddenly started working, or were - # already working on some platforms. Other threadpools and fork handlers - # will be called at an arbitrary time later ('soon') - for obj in (hub._threadpool, hub._resolver, hub.periodic_monitoring_thread): - getattr(obj, '_on_fork', lambda: None)() - - # TODO: We'd like to sleep for a non-zero amount of time to force the loop to make a - # pass around before returning to this greenlet. That will allow any - # user-provided fork watchers to run. (Two calls are necessary.) HOWEVER, if - # we do this, certain tests that heavily mix threads and forking, - # like 2.7/test_threading:test_reinit_tls_after_fork, fail. It's not immediately clear - # why. - #sleep(0.00001) - #sleep(0.00001) - - -hub_ident_registry = IdentRegistry() - -class Hub(WaitOperationsGreenlet): - """ - A greenlet that runs the event loop. - - It is created automatically by :func:`get_hub`. - - .. rubric:: Switching - - Every time this greenlet (i.e., the event loop) is switched *to*, - if the current greenlet has a ``switch_out`` method, it will be - called. This allows a greenlet to take some cleanup actions before - yielding control. This method should not call any gevent blocking - functions. - """ - - #: If instances of these classes are raised into the event loop, - #: they will be propagated out to the main greenlet (where they will - #: usually be caught by Python itself) - SYSTEM_ERROR = (KeyboardInterrupt, SystemExit, SystemError) - - #: Instances of these classes are not considered to be errors and - #: do not get logged/printed when raised by the event loop. - NOT_ERROR = (GreenletExit, SystemExit) - - #: The size we use for our threadpool. Either use a subclass - #: for this, or change it immediately after creating the hub. - threadpool_size = 10 - - # An instance of PeriodicMonitoringThread, if started. - periodic_monitoring_thread = None - - # The ident of the thread we were created in, which should be the - # thread that we run in. - thread_ident = None - - #: A string giving the name of this hub. Useful for associating hubs - #: with particular threads. Printed as part of the default repr. - #: - #: .. versionadded:: 1.3b1 - name = '' - - # NOTE: We cannot define a class-level 'loop' attribute - # because that conflicts with the slot we inherit from the - # Cythonized-bases. - - def __init__(self, loop=None, default=None): - WaitOperationsGreenlet.__init__(self, None, None) - self.thread_ident = get_thread_ident() - if hasattr(loop, 'run'): - if default is not None: - raise TypeError("Unexpected argument: default") - self.loop = loop - elif get_loop() is not None: - # Reuse a loop instance previously set by - # destroying a hub without destroying the associated - # loop. See #237 and #238. - self.loop = get_loop() - else: - if default is None and self.thread_ident != MAIN_THREAD_IDENT: - default = False - - if loop is None: - loop = self.backend - self.loop = self.loop_class(flags=loop, default=default) # pylint:disable=not-callable - self._resolver = None - self._threadpool = None - self.format_context = GEVENT_CONFIG.format_context - self.minimal_ident = hub_ident_registry.get_ident(self) - - @Lazy - def ident_registry(self): - return IdentRegistry() - - @property - def loop_class(self): - return GEVENT_CONFIG.loop - - @property - def backend(self): - return GEVENT_CONFIG.libev_backend - - @property - def main_hub(self): - """ - Is this the hub for the main thread? - - .. versionadded:: 1.3b1 - """ - return self.thread_ident == MAIN_THREAD_IDENT - - def __repr__(self): - if self.loop is None: - info = 'destroyed' - else: - try: - info = self.loop._format() - except Exception as ex: # pylint:disable=broad-except - info = str(ex) or repr(ex) or 'error' - result = '<%s %r at 0x%x %s' % ( - self.__class__.__name__, - self.name, - id(self), - info) - if self._resolver is not None: - result += ' resolver=%r' % self._resolver - if self._threadpool is not None: - result += ' threadpool=%r' % self._threadpool - result += ' thread_ident=%s' % (hex(self.thread_ident), ) - return result + '>' - - def handle_error(self, context, type, value, tb): - """ - Called by the event loop when an error occurs. The arguments - type, value, and tb are the standard tuple returned by :func:`sys.exc_info`. - - Applications can set a property on the hub with this same signature - to override the error handling provided by this class. - - Errors that are :attr:`system errors <SYSTEM_ERROR>` are passed - to :meth:`handle_system_error`. - - :param context: If this is ``None``, indicates a system error that - should generally result in exiting the loop and being thrown to the - parent greenlet. - """ - if isinstance(value, str): - # Cython can raise errors where the value is a plain string - # e.g., AttributeError, "_semaphore.Semaphore has no attr", <traceback> - value = type(value) - if not issubclass(type, self.NOT_ERROR): - self.print_exception(context, type, value, tb) - if context is None or issubclass(type, self.SYSTEM_ERROR): - self.handle_system_error(type, value) - - def handle_system_error(self, type, value): - """ - Called from `handle_error` when the exception type is determined - to be a :attr:`system error <SYSTEM_ERROR>`. - - System errors cause the exception to be raised in the main - greenlet (the parent of this hub). - """ - current = getcurrent() - if current is self or current is self.parent or self.loop is None: - self.parent.throw(type, value) - else: - # in case system error was handled and life goes on - # switch back to this greenlet as well - cb = None - try: - cb = self.loop.run_callback(current.switch) - except: # pylint:disable=bare-except - traceback.print_exc(file=self.exception_stream) - try: - self.parent.throw(type, value) - finally: - if cb is not None: - cb.stop() - - @readproperty - def exception_stream(self): - """ - The stream to which exceptions will be written. - Defaults to ``sys.stderr`` unless assigned to. - - .. versionadded:: 1.2a1 - """ - # Unwrap any FileObjectThread we have thrown around sys.stderr - # (because it can't be used in the hub). Tricky because we are - # called in error situations when it's not safe to import. - stderr = sys.stderr - if type(stderr).__name__ == 'FileObjectThread': - stderr = stderr.io # pylint:disable=no-member - return stderr - - def print_exception(self, context, type, value, tb): - # Python 3 does not gracefully handle None value or tb in - # traceback.print_exception() as previous versions did. - # pylint:disable=no-member - errstream = self.exception_stream - - if value is None: - errstream.write('%s\n' % type.__name__) - else: - traceback.print_exception(type, value, tb, file=errstream) - del tb - - try: - errstream.write(gmctime()) - errstream.write(' ' if context is not None else '\n') - except: # pylint:disable=bare-except - # Possible not safe to import under certain - # error conditions in Python 2 - pass - - if context is not None: - if not isinstance(context, str): - try: - context = self.format_context(context) - except: # pylint:disable=bare-except - traceback.print_exc(file=self.exception_stream) - context = repr(context) - errstream.write('%s failed with %s\n\n' % (context, getattr(type, '__name__', 'exception'), )) - - - def run(self): - """ - Entry-point to running the loop. This method is called automatically - when the hub greenlet is scheduled; do not call it directly. - - :raises gevent.exceptions.LoopExit: If the loop finishes running. This means - that there are no other scheduled greenlets, and no active - watchers or servers. In some situations, this indicates a - programming error. - """ - assert self is getcurrent(), 'Do not call Hub.run() directly' - self.start_periodic_monitoring_thread() - while 1: - loop = self.loop - loop.error_handler = self - try: - loop.run() - finally: - loop.error_handler = None # break the refcount cycle - debug = [] - if hasattr(loop, 'debug'): - debug = loop.debug() - self.parent.throw(LoopExit('This operation would block forever', self, debug)) - # this function must never return, as it will cause switch() in the parent greenlet - # to return an unexpected value - # It is still possible to kill this greenlet with throw. However, in that case - # switching to it is no longer safe, as switch will return immediately - - def start_periodic_monitoring_thread(self): - if self.periodic_monitoring_thread is None and GEVENT_CONFIG.monitor_thread: - # Note that it is possible for one real thread to - # (temporarily) wind up with multiple monitoring threads, - # if hubs are started and stopped within the thread. This shows up - # in the threadpool tests. The monitoring threads will eventually notice their - # hub object is gone. - from gevent._monitor import PeriodicMonitoringThread - from gevent.events import PeriodicMonitorThreadStartedEvent - from gevent.events import notify_and_call_entry_points - self.periodic_monitoring_thread = PeriodicMonitoringThread(self) - - if self.main_hub: - self.periodic_monitoring_thread.install_monitor_memory_usage() - - notify_and_call_entry_points(PeriodicMonitorThreadStartedEvent( - self.periodic_monitoring_thread)) - - return self.periodic_monitoring_thread - - def join(self, timeout=None): - """Wait for the event loop to finish. Exits only when there are - no more spawned greenlets, started servers, active timeouts or watchers. - - If *timeout* is provided, wait no longer for the specified number of seconds. - - Returns True if exited because the loop finished execution. - Returns False if exited because of timeout expired. - """ - assert getcurrent() is self.parent, "only possible from the MAIN greenlet" - if self.dead: - return True - - waiter = Waiter(self) - - if timeout is not None: - timeout = self.loop.timer(timeout, ref=False) - timeout.start(waiter.switch, None) - - try: - try: - waiter.get() - except LoopExit: - return True - finally: - if timeout is not None: - timeout.stop() - timeout.close() - return False - - def destroy(self, destroy_loop=None): - """ - Destroy this hub and clean up its resources. - - If you manually create hubs, you *should* call this - method before disposing of the hub object reference. - """ - if self.periodic_monitoring_thread is not None: - self.periodic_monitoring_thread.kill() - self.periodic_monitoring_thread = None - if self._resolver is not None: - self._resolver.close() - del self._resolver - if self._threadpool is not None: - self._threadpool.kill() - del self._threadpool - if destroy_loop is None: - destroy_loop = not self.loop.default - if destroy_loop: - if get_loop() is self.loop: - # Don't let anyone try to reuse this - set_loop(None) - self.loop.destroy() - else: - # Store in case another hub is created for this - # thread. - set_loop(self.loop) - - - self.loop = None - if _get_hub() is self: - set_hub(None) - - - # XXX: We can probably simplify the resolver and threadpool properties. - - @property - def resolver_class(self): - return GEVENT_CONFIG.resolver - - def _get_resolver(self): - if self._resolver is None: - self._resolver = self.resolver_class(hub=self) # pylint:disable=not-callable - return self._resolver - - def _set_resolver(self, value): - self._resolver = value - - def _del_resolver(self): - self._resolver = None - - resolver = property(_get_resolver, _set_resolver, _del_resolver, - """ - The DNS resolver that the socket functions will use. - - .. seealso:: :doc:`/dns` - """) - - - @property - def threadpool_class(self): - return GEVENT_CONFIG.threadpool - - def _get_threadpool(self): - if self._threadpool is None: - # pylint:disable=not-callable - self._threadpool = self.threadpool_class(self.threadpool_size, hub=self) - return self._threadpool - - def _set_threadpool(self, value): - self._threadpool = value - - def _del_threadpool(self): - self._threadpool = None - - threadpool = property(_get_threadpool, _set_threadpool, _del_threadpool, - """ - The threadpool associated with this hub. - - Usually this is a - :class:`gevent.threadpool.ThreadPool`, but - you :attr:`can customize that - <gevent._config.Config.threadpool>`. - - Use this object to schedule blocking - (non-cooperative) operations in a different - thread to prevent them from halting the event loop. - """) - - -set_default_hub_class(Hub) - - - -class linkproxy(object): - __slots__ = ['callback', 'obj'] - - def __init__(self, callback, obj): - self.callback = callback - self.obj = obj - - def __call__(self, *args): - callback = self.callback - obj = self.obj - self.callback = None - self.obj = None - callback(obj) diff --git a/python/gevent/libev/__init__.py b/python/gevent/libev/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/python/gevent/libev/_corecffi_build.py b/python/gevent/libev/_corecffi_build.py deleted file mode 100644 index a6025fc..0000000 --- a/python/gevent/libev/_corecffi_build.py +++ /dev/null @@ -1,75 +0,0 @@ -# pylint: disable=no-member - -# This module is only used to create and compile the gevent._corecffi module; -# nothing should be directly imported from it except `ffi`, which should only be -# used for `ffi.compile()`; programs should import gevent._corecfffi. -# However, because we are using "out-of-line" mode, it is necessary to examine -# this file to know what functions are created and available on the generated -# module. -from __future__ import absolute_import, print_function -import sys -import os -import os.path # pylint:disable=no-name-in-module -import struct - -__all__ = [] - - -def system_bits(): - return struct.calcsize('P') * 8 - - -def st_nlink_type(): - if sys.platform == "darwin" or sys.platform.startswith("freebsd"): - return "short" - if system_bits() == 32: - return "unsigned long" - return "long long" - - -from cffi import FFI -ffi = FFI() - -thisdir = os.path.dirname(os.path.abspath(__file__)) -def read_source(name): - with open(os.path.join(thisdir, name), 'r') as f: - return f.read() - -_cdef = read_source('_corecffi_cdef.c') -_source = read_source('_corecffi_source.c') - -_cdef = _cdef.replace('#define GEVENT_ST_NLINK_T int', '') -_cdef = _cdef.replace('#define GEVENT_STRUCT_DONE int', '') -_cdef = _cdef.replace('GEVENT_ST_NLINK_T', st_nlink_type()) -_cdef = _cdef.replace("GEVENT_STRUCT_DONE _;", '...;') - - -if sys.platform.startswith('win'): - # We must have the vfd_open, etc, functions on - # Windows. But on other platforms, going through - # CFFI to just return the file-descriptor is slower - # than just doing it in Python, so we check for and - # workaround their absence in corecffi.py - _cdef += """ -typedef int... vfd_socket_t; -int vfd_open(vfd_socket_t); -vfd_socket_t vfd_get(int); -void vfd_free(int); -""" - - - -include_dirs = [ - thisdir, # libev_vfd.h - os.path.abspath(os.path.join(thisdir, '..', '..', '..', 'deps', 'libev')), -] -ffi.cdef(_cdef) -ffi.set_source('gevent.libev._corecffi', _source, include_dirs=include_dirs) - -if __name__ == '__main__': - # XXX: Note, on Windows, we would need to specify the external libraries - # that should be linked in, such as ws2_32 and (because libev_vfd.h makes - # Python.h calls) the proper Python library---at least for PyPy. I never got - # that to work though, and calling python functions is strongly discouraged - # from CFFI code. - ffi.compile() diff --git a/python/gevent/libev/_corecffi_cdef.c b/python/gevent/libev/_corecffi_cdef.c deleted file mode 100644 index 3280e99..0000000 --- a/python/gevent/libev/_corecffi_cdef.c +++ /dev/null @@ -1,243 +0,0 @@ -/* libev interface */ - -#define EV_MINPRI ... -#define EV_MAXPRI ... - -#define EV_VERSION_MAJOR ... -#define EV_VERSION_MINOR ... - -#define EV_UNDEF ... -#define EV_NONE ... -#define EV_READ ... -#define EV_WRITE ... -#define EV__IOFDSET ... -#define EV_TIMER ... -#define EV_PERIODIC ... -#define EV_SIGNAL ... -#define EV_CHILD ... -#define EV_STAT ... -#define EV_IDLE ... -#define EV_PREPARE ... -#define EV_CHECK ... -#define EV_EMBED ... -#define EV_FORK ... -#define EV_CLEANUP ... -#define EV_ASYNC ... -#define EV_CUSTOM ... -#define EV_ERROR ... - -#define EVFLAG_AUTO ... -#define EVFLAG_NOENV ... -#define EVFLAG_FORKCHECK ... -#define EVFLAG_NOINOTIFY ... -#define EVFLAG_SIGNALFD ... -#define EVFLAG_NOSIGMASK ... - -#define EVBACKEND_SELECT ... -#define EVBACKEND_POLL ... -#define EVBACKEND_EPOLL ... -#define EVBACKEND_KQUEUE ... -#define EVBACKEND_DEVPOLL ... -#define EVBACKEND_PORT ... -/* #define EVBACKEND_IOCP ... */ - -#define EVBACKEND_ALL ... -#define EVBACKEND_MASK ... - -#define EVRUN_NOWAIT ... -#define EVRUN_ONCE ... - -#define EVBREAK_CANCEL ... -#define EVBREAK_ONE ... -#define EVBREAK_ALL ... - -/* markers for the CFFI parser. Replaced when the string is read. */ -#define GEVENT_STRUCT_DONE int -#define GEVENT_ST_NLINK_T int - -struct ev_loop { - int backend_fd; - int activecnt; - GEVENT_STRUCT_DONE _; -}; - -// Watcher types -// base for all watchers -struct ev_watcher{ - void* data; - GEVENT_STRUCT_DONE _; -}; - -struct ev_io { - int fd; - int events; - void* data; - GEVENT_STRUCT_DONE _; -}; -struct ev_timer { - double at; - void* data; - GEVENT_STRUCT_DONE _; -}; -struct ev_signal { - void* data; - GEVENT_STRUCT_DONE _; -}; -struct ev_idle { - void* data; - GEVENT_STRUCT_DONE _; -}; -struct ev_prepare { - void* data; - GEVENT_STRUCT_DONE _; -}; -struct ev_check { - void* data; - GEVENT_STRUCT_DONE _; -}; -struct ev_fork { - void* data; - GEVENT_STRUCT_DONE _; -}; -struct ev_async { - void* data; - GEVENT_STRUCT_DONE _; -}; - -struct ev_child { - int pid; - int rpid; - int rstatus; - void* data; - GEVENT_STRUCT_DONE _; -}; - -struct stat { - GEVENT_ST_NLINK_T st_nlink; - GEVENT_STRUCT_DONE _; -}; - -struct ev_stat { - struct stat attr; - const char* path; - struct stat prev; - double interval; - void* data; - GEVENT_STRUCT_DONE _; -}; - -typedef double ev_tstamp; - -int ev_version_major(); -int ev_version_minor(); - -unsigned int ev_supported_backends (void); -unsigned int ev_recommended_backends (void); -unsigned int ev_embeddable_backends (void); - -ev_tstamp ev_time (void); -void ev_set_syserr_cb(void *); - -void ev_set_userdata(struct ev_loop*, void*); -void* ev_userdata(struct ev_loop*); - -int ev_priority(void*); -void ev_set_priority(void*, int); - -int ev_is_pending(void*); -int ev_is_active(void*); -void ev_io_init(struct ev_io*, void* callback, int fd, int events); -void ev_io_start(struct ev_loop*, struct ev_io*); -void ev_io_stop(struct ev_loop*, struct ev_io*); -void ev_feed_event(struct ev_loop*, void*, int); - -void ev_timer_init(struct ev_timer*, void *callback, double, double); -void ev_timer_start(struct ev_loop*, struct ev_timer*); -void ev_timer_stop(struct ev_loop*, struct ev_timer*); -void ev_timer_again(struct ev_loop*, struct ev_timer*); - -void ev_signal_init(struct ev_signal*, void* callback, int); -void ev_signal_start(struct ev_loop*, struct ev_signal*); -void ev_signal_stop(struct ev_loop*, struct ev_signal*); - -void ev_idle_init(struct ev_idle*, void* callback); -void ev_idle_start(struct ev_loop*, struct ev_idle*); -void ev_idle_stop(struct ev_loop*, struct ev_idle*); - -void ev_prepare_init(struct ev_prepare*, void* callback); -void ev_prepare_start(struct ev_loop*, struct ev_prepare*); -void ev_prepare_stop(struct ev_loop*, struct ev_prepare*); - -void ev_check_init(struct ev_check*, void* callback); -void ev_check_start(struct ev_loop*, struct ev_check*); -void ev_check_stop(struct ev_loop*, struct ev_check*); - -void ev_fork_init(struct ev_fork*, void* callback); -void ev_fork_start(struct ev_loop*, struct ev_fork*); -void ev_fork_stop(struct ev_loop*, struct ev_fork*); - -void ev_async_init(struct ev_async*, void* callback); -void ev_async_start(struct ev_loop*, struct ev_async*); -void ev_async_stop(struct ev_loop*, struct ev_async*); -void ev_async_send(struct ev_loop*, struct ev_async*); -int ev_async_pending(struct ev_async*); - -void ev_child_init(struct ev_child*, void* callback, int, int); -void ev_child_start(struct ev_loop*, struct ev_child*); -void ev_child_stop(struct ev_loop*, struct ev_child*); - -void ev_stat_init(struct ev_stat*, void* callback, char*, double); -void ev_stat_start(struct ev_loop*, struct ev_stat*); -void ev_stat_stop(struct ev_loop*, struct ev_stat*); - -struct ev_loop *ev_default_loop (unsigned int flags); -struct ev_loop* ev_loop_new(unsigned int flags); -void ev_loop_destroy(struct ev_loop*); -void ev_loop_fork(struct ev_loop*); -int ev_is_default_loop (struct ev_loop *); -unsigned int ev_iteration(struct ev_loop*); -unsigned int ev_depth(struct ev_loop*); -unsigned int ev_backend(struct ev_loop*); -void ev_verify(struct ev_loop*); -void ev_run(struct ev_loop*, int flags); - -ev_tstamp ev_now (struct ev_loop *); -void ev_now_update (struct ev_loop *); /* update event loop time */ -void ev_ref(struct ev_loop*); -void ev_unref(struct ev_loop*); -void ev_break(struct ev_loop*, int); -unsigned int ev_pending_count(struct ev_loop*); - -struct ev_loop* gevent_ev_default_loop(unsigned int flags); -void gevent_install_sigchld_handler(); -void gevent_reset_sigchld_handler(); - -void (*gevent_noop)(struct ev_loop *_loop, struct ev_timer *w, int revents); -void ev_sleep (ev_tstamp delay); /* sleep for a while */ - -/* gevent callbacks */ -/* These will be created as static functions at the end of the - * _source.c and must be declared there too. - */ -extern "Python" { - int python_callback(void* handle, int revents); - void python_handle_error(void* handle, int revents); - void python_stop(void* handle); - void python_check_callback(struct ev_loop*, void*, int); - void python_prepare_callback(struct ev_loop*, void*, int); - - // libev specific - void _syserr_cb(char*); -} -/* - * We use a single C callback for every watcher type, which in turn calls the - * Python callbacks. The ev_watcher pointer type can be used for every watcher type - * because they all start with the same members---libev itself relies on this. Each - * watcher types has a 'void* data' that stores the CFFI handle to the Python watcher - * object. - */ -static void _gevent_generic_callback(struct ev_loop* loop, struct ev_watcher* watcher, int revents); - -static void gevent_zero_check(struct ev_check* handle); -static void gevent_zero_timer(struct ev_timer* handle); -static void gevent_zero_prepare(struct ev_prepare* handle); diff --git a/python/gevent/libev/_corecffi_source.c b/python/gevent/libev/_corecffi_source.c deleted file mode 100644 index 63b216e..0000000 --- a/python/gevent/libev/_corecffi_source.c +++ /dev/null @@ -1,69 +0,0 @@ -// passed to the real C compiler -#define LIBEV_EMBED 1 - -#ifdef _WIN32 -#define EV_STANDALONE 1 -#include "libev_vfd.h" -#endif - - -#include "libev.h" - -static void -_gevent_noop(struct ev_loop *_loop, struct ev_timer *w, int revents) { } - -void (*gevent_noop)(struct ev_loop *, struct ev_timer *, int) = &_gevent_noop; - -static int python_callback(void* handle, int revents); -static void python_handle_error(void* handle, int revents); -static void python_stop(void* handle); - -static void _gevent_generic_callback(struct ev_loop* loop, - struct ev_watcher* watcher, - int revents) -{ - void* handle = watcher->data; - int cb_result = python_callback(handle, revents); - switch(cb_result) { - case -1: - // in case of exception, call self.loop.handle_error; - // this function is also responsible for stopping the watcher - // and allowing memory to be freed - python_handle_error(handle, revents); - break; - case 1: - // Code to stop the event. Note that if python_callback - // has disposed of the last reference to the handle, - // `watcher` could now be invalid/disposed memory! - if (!ev_is_active(watcher)) { - python_stop(handle); - } - break; - case 2: - // watcher is already stopped and dead, nothing to do. - break; - default: - fprintf(stderr, - "WARNING: gevent: Unexpected return value %d from Python callback " - "for watcher %p and handle %d\n", - cb_result, - watcher, handle); - // XXX: Possible leaking of resources here? Should we be - // closing the watcher? - } -} - -static void gevent_zero_timer(struct ev_timer* handle) -{ - memset(handle, 0, sizeof(struct ev_timer)); -} - -static void gevent_zero_check(struct ev_check* handle) -{ - memset(handle, 0, sizeof(struct ev_check)); -} - -static void gevent_zero_prepare(struct ev_prepare* handle) -{ - memset(handle, 0, sizeof(struct ev_prepare)); -} diff --git a/python/gevent/libev/callbacks.c b/python/gevent/libev/callbacks.c deleted file mode 100644 index 751b425..0000000 --- a/python/gevent/libev/callbacks.c +++ /dev/null @@ -1,216 +0,0 @@ -/* Copyright (c) 2011-2012 Denis Bilenko. See LICENSE for details. */ -#include <stddef.h> -#include "Python.h" -#include "ev.h" -#include "corecext.h" -#include "callbacks.h" -#ifdef Py_PYTHON_H - -#if PY_MAJOR_VERSION >= 3 - #define PyInt_FromLong PyLong_FromLong -#endif - - -#ifndef CYTHON_INLINE - #if defined(__clang__) - #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) - #elif defined(__GNUC__) - #define CYTHON_INLINE __inline__ - #elif defined(_MSC_VER) - #define CYTHON_INLINE __inline - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_INLINE inline - #else - #define CYTHON_INLINE - #endif -#endif - - -static CYTHON_INLINE void gevent_check_signals(struct PyGeventLoopObject* loop) { - if (!ev_is_default_loop(loop->_ptr)) { - /* only reporting signals on the default loop */ - return; - } - PyErr_CheckSignals(); - if (PyErr_Occurred()) gevent_handle_error(loop, Py_None); -} - -#define GET_OBJECT(PY_TYPE, EV_PTR, MEMBER) \ - ((struct PY_TYPE *)(((char *)EV_PTR) - offsetof(struct PY_TYPE, MEMBER))) - - -#ifdef WITH_THREAD -#define GIL_DECLARE PyGILState_STATE ___save -#define GIL_ENSURE ___save = PyGILState_Ensure(); -#define GIL_RELEASE PyGILState_Release(___save); -#else -#define GIL_DECLARE -#define GIL_ENSURE -#define GIL_RELEASE -#endif - - -static void gevent_stop(PyObject* watcher, struct PyGeventLoopObject* loop) { - PyObject *result, *method; - int error; - error = 1; - method = PyObject_GetAttrString(watcher, "stop"); - if (method) { - result = PyObject_Call(method, _empty_tuple, NULL); - if (result) { - Py_DECREF(result); - error = 0; - } - Py_DECREF(method); - } - if (error) { - gevent_handle_error(loop, watcher); - } -} - - -static void gevent_callback(struct PyGeventLoopObject* loop, PyObject* callback, PyObject* args, PyObject* watcher, void *c_watcher, int revents) { - GIL_DECLARE; - PyObject *result, *py_events; - long length; - py_events = 0; - GIL_ENSURE; - Py_INCREF(loop); - Py_INCREF(callback); - Py_INCREF(args); - Py_INCREF(watcher); - gevent_check_signals(loop); - if (args == Py_None) { - args = _empty_tuple; - } - length = PyTuple_Size(args); - if (length < 0) { - gevent_handle_error(loop, watcher); - goto end; - } - if (length > 0 && PyTuple_GET_ITEM(args, 0) == GEVENT_CORE_EVENTS) { - py_events = PyInt_FromLong(revents); - if (!py_events) { - gevent_handle_error(loop, watcher); - goto end; - } - PyTuple_SET_ITEM(args, 0, py_events); - } - else { - py_events = NULL; - } - result = PyObject_Call(callback, args, NULL); - if (result) { - Py_DECREF(result); - } - else { - gevent_handle_error(loop, watcher); - if (revents & (EV_READ|EV_WRITE)) { - /* io watcher: not stopping it may cause the failing callback to be called repeatedly */ - gevent_stop(watcher, loop); - goto end; - } - } - if (!ev_is_active(c_watcher)) { - /* Watcher was stopped, maybe by libev. Let's call stop() to clean up - * 'callback' and 'args' properties, do Py_DECREF() and ev_ref() if necessary. - * BTW, we don't need to check for EV_ERROR, because libev stops the watcher in that case. */ - gevent_stop(watcher, loop); - } -end: - if (py_events) { - Py_DECREF(py_events); - PyTuple_SET_ITEM(args, 0, GEVENT_CORE_EVENTS); - } - Py_DECREF(watcher); - Py_DECREF(args); - Py_DECREF(callback); - Py_DECREF(loop); - GIL_RELEASE; -} - - -void gevent_call(struct PyGeventLoopObject* loop, struct PyGeventCallbackObject* cb) { - /* no need for GIL here because it is only called from run_callbacks which already has GIL */ - PyObject *result, *callback, *args; - if (!loop || !cb) - return; - callback = cb->callback; - args = cb->args; - if (!callback || !args) - return; - if (callback == Py_None || args == Py_None) - return; - Py_INCREF(loop); - Py_INCREF(callback); - Py_INCREF(args); - - Py_INCREF(Py_None); - Py_DECREF(cb->callback); - cb->callback = Py_None; - - result = PyObject_Call(callback, args, NULL); - if (result) { - Py_DECREF(result); - } - else { - gevent_handle_error(loop, (PyObject*)cb); - } - - Py_INCREF(Py_None); - Py_DECREF(cb->args); - cb->args = Py_None; - - Py_DECREF(callback); - Py_DECREF(args); - Py_DECREF(loop); -} - -/* - * PyGeventWatcherObject is the first member of all the structs, so - * it is the same in all of them and they can all safely be cast to - * it. We could also use the *data member of the libev watcher objects. - */ - -#undef DEFINE_CALLBACK -#define DEFINE_CALLBACK(WATCHER_LC, WATCHER_TYPE) \ - void gevent_callback_##WATCHER_LC(struct ev_loop *_loop, void *c_watcher, int revents) { \ - struct PyGeventWatcherObject* watcher = (struct PyGeventWatcherObject*)GET_OBJECT(PyGevent##WATCHER_TYPE##Object, c_watcher, _watcher); \ - gevent_callback(watcher->loop, watcher->_callback, watcher->args, (PyObject*)watcher, c_watcher, revents); \ - } - - -DEFINE_CALLBACKS - - -void gevent_run_callbacks(struct ev_loop *_loop, void *watcher, int revents) { - struct PyGeventLoopObject* loop; - PyObject *result; - GIL_DECLARE; - GIL_ENSURE; - loop = GET_OBJECT(PyGeventLoopObject, watcher, _prepare); - Py_INCREF(loop); - gevent_check_signals(loop); - result = gevent_loop_run_callbacks(loop); - if (result) { - Py_DECREF(result); - } - else { - PyErr_Print(); - PyErr_Clear(); - } - Py_DECREF(loop); - GIL_RELEASE; -} - -/* This is only used on Win32 */ - -void gevent_periodic_signal_check(struct ev_loop *_loop, void *watcher, int revents) { - GIL_DECLARE; - GIL_ENSURE; - gevent_check_signals(GET_OBJECT(PyGeventLoopObject, watcher, _periodic_signal_checker)); - GIL_RELEASE; -} - - -#endif /* Py_PYTHON_H */ diff --git a/python/gevent/libev/callbacks.h b/python/gevent/libev/callbacks.h deleted file mode 100644 index ed87224..0000000 --- a/python/gevent/libev/callbacks.h +++ /dev/null @@ -1,38 +0,0 @@ -struct ev_loop; -struct PyGeventLoopObject; -struct PyGeventCallbackObject; - -#define DEFINE_CALLBACK(WATCHER_LC, WATCHER_TYPE) \ - void gevent_callback_##WATCHER_LC(struct ev_loop *, void *, int); - - -#define DEFINE_CALLBACKS0 \ - DEFINE_CALLBACK(io, IO); \ - DEFINE_CALLBACK(timer, Timer); \ - DEFINE_CALLBACK(signal, Signal); \ - DEFINE_CALLBACK(idle, Idle); \ - DEFINE_CALLBACK(prepare, Prepare); \ - DEFINE_CALLBACK(check, Check); \ - DEFINE_CALLBACK(fork, Fork); \ - DEFINE_CALLBACK(async, Async); \ - DEFINE_CALLBACK(stat, Stat); \ - DEFINE_CALLBACK(child, Child); - - -#define DEFINE_CALLBACKS DEFINE_CALLBACKS0 - - -DEFINE_CALLBACKS - - -void gevent_run_callbacks(struct ev_loop *, void *, int); - - - -void gevent_call(struct PyGeventLoopObject* loop, struct PyGeventCallbackObject* cb); - -static void gevent_noop(struct ev_loop *_loop, void *watcher, int revents) { -} - -/* Only used on Win32 */ -void gevent_periodic_signal_check(struct ev_loop *, void *, int); diff --git a/python/gevent/libev/corecext.c b/python/gevent/libev/corecext.c deleted file mode 100644 index ef4e592..0000000 --- a/python/gevent/libev/corecext.c +++ /dev/null @@ -1,22963 +0,0 @@ -/* Generated by Cython 0.28.5 */ - -/* BEGIN: Cython Metadata -{ - "distutils": { - "define_macros": [ - [ - "FD_SETSIZE", - "1024" - ], - [ - "_WIN32", - "1" - ], - [ - "EV_STANDALONE", - "1" - ], - [ - "LIBEV_EMBED", - "1" - ], - [ - "EV_COMMON", - "" - ], - [ - "EV_CLEANUP_ENABLE", - "0" - ], - [ - "EV_EMBED_ENABLE", - "0" - ], - [ - "EV_PERIODIC_ENABLE", - "0" - ] - ], - "depends": [ - "deps/libev\\ev++.h", - "deps/libev\\ev.c", - "deps/libev\\ev.h", - "deps/libev\\ev_epoll.c", - "deps/libev\\ev_kqueue.c", - "deps/libev\\ev_poll.c", - "deps/libev\\ev_port.c", - "deps/libev\\ev_select.c", - "deps/libev\\ev_vars.h", - "deps/libev\\ev_win32.c", - "deps/libev\\ev_wrap.h", - "deps/libev\\event.c", - "deps/libev\\event.h", - "deps\\libev\\ev++.h", - "deps\\libev\\ev.c", - "deps\\libev\\ev.h", - "deps\\libev\\ev_epoll.c", - "deps\\libev\\ev_kqueue.c", - "deps\\libev\\ev_poll.c", - "deps\\libev\\ev_port.c", - "deps\\libev\\ev_select.c", - "deps\\libev\\ev_vars.h", - "deps\\libev\\ev_win32.c", - "deps\\libev\\ev_wrap.h", - "deps\\libev\\event.c", - "deps\\libev\\event.h", - "src/gevent/libev/stathelper.c", - "src/gevent/libev\\callbacks.c", - "src/gevent/libev\\callbacks.h", - "src/gevent/libev\\libev.h", - "src/gevent/libev\\libev_vfd.h", - "src\\gevent\\libev\\callbacks.c", - "src\\gevent\\libev\\callbacks.h", - "src\\gevent\\libev\\libev.h", - "src\\gevent\\libev\\libev_vfd.h", - "src\\gevent\\libev\\stathelper.c" - ], - "include_dirs": [ - "src/gevent/libev", - "C:\\projects\\gevent\\deps\\libev" - ], - "libraries": [ - "ws2_32" - ], - "name": "gevent.libev.corecext", - "sources": [ - "src/gevent/libev/corecext.pyx", - "src/gevent/libev/callbacks.c" - ] - }, - "module_name": "gevent.libev.corecext" -} -END: Cython Metadata */ - -#define PY_SSIZE_T_CLEAN -#include "Python.h" -#ifndef Py_PYTHON_H - #error Python headers needed to compile C extensions, please install development version of Python. -#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) - #error Cython requires Python 2.6+ or Python 3.3+. -#else -#define CYTHON_ABI "0_28_5" -#define CYTHON_FUTURE_DIVISION 0 -#include <stddef.h> -#ifndef offsetof - #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) -#endif -#if !defined(WIN32) && !defined(MS_WINDOWS) - #ifndef __stdcall - #define __stdcall - #endif - #ifndef __cdecl - #define __cdecl - #endif - #ifndef __fastcall - #define __fastcall - #endif -#endif -#ifndef DL_IMPORT - #define DL_IMPORT(t) t -#endif -#ifndef DL_EXPORT - #define DL_EXPORT(t) t -#endif -#define __PYX_COMMA , -#ifndef HAVE_LONG_LONG - #if PY_VERSION_HEX >= 0x02070000 - #define HAVE_LONG_LONG - #endif -#endif -#ifndef PY_LONG_LONG - #define PY_LONG_LONG LONG_LONG -#endif -#ifndef Py_HUGE_VAL - #define Py_HUGE_VAL HUGE_VAL -#endif -#ifdef PYPY_VERSION - #define CYTHON_COMPILING_IN_PYPY 1 - #define CYTHON_COMPILING_IN_PYSTON 0 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #undef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 0 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #if PY_VERSION_HEX < 0x03050000 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #undef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #undef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 1 - #undef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 0 - #undef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 0 - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 -#elif defined(PYSTON_VERSION) - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_PYSTON 1 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 -#else - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_PYSTON 0 - #define CYTHON_COMPILING_IN_CPYTHON 1 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #if PY_VERSION_HEX < 0x02070000 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #elif !defined(CYTHON_USE_PYTYPE_LOOKUP) - #define CYTHON_USE_PYTYPE_LOOKUP 1 - #endif - #if PY_MAJOR_VERSION < 3 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #if PY_VERSION_HEX < 0x02070000 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #elif !defined(CYTHON_USE_PYLONG_INTERNALS) - #define CYTHON_USE_PYLONG_INTERNALS 1 - #endif - #ifndef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 1 - #endif - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #if PY_VERSION_HEX < 0x030300F0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #elif !defined(CYTHON_USE_UNICODE_WRITER) - #define CYTHON_USE_UNICODE_WRITER 1 - #endif - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #ifndef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 1 - #endif - #ifndef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 1 - #endif - #ifndef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT (0 && PY_VERSION_HEX >= 0x03050000) - #endif - #ifndef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1) - #endif -#endif -#if !defined(CYTHON_FAST_PYCCALL) -#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) -#endif -#if CYTHON_USE_PYLONG_INTERNALS - #include "longintrepr.h" - #undef SHIFT - #undef BASE - #undef MASK -#endif -#ifndef __has_attribute - #define __has_attribute(x) 0 -#endif -#ifndef __has_cpp_attribute - #define __has_cpp_attribute(x) 0 -#endif -#ifndef CYTHON_RESTRICT - #if defined(__GNUC__) - #define CYTHON_RESTRICT __restrict__ - #elif defined(_MSC_VER) && _MSC_VER >= 1400 - #define CYTHON_RESTRICT __restrict - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_RESTRICT restrict - #else - #define CYTHON_RESTRICT - #endif -#endif -#ifndef CYTHON_UNUSED -# if defined(__GNUC__) -# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -#endif -#ifndef CYTHON_MAYBE_UNUSED_VAR -# if defined(__cplusplus) - template<class T> void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } -# else -# define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) -# endif -#endif -#ifndef CYTHON_NCP_UNUSED -# if CYTHON_COMPILING_IN_CPYTHON -# define CYTHON_NCP_UNUSED -# else -# define CYTHON_NCP_UNUSED CYTHON_UNUSED -# endif -#endif -#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) -#ifdef _MSC_VER - #ifndef _MSC_STDINT_H_ - #if _MSC_VER < 1300 - typedef unsigned char uint8_t; - typedef unsigned int uint32_t; - #else - typedef unsigned __int8 uint8_t; - typedef unsigned __int32 uint32_t; - #endif - #endif -#else - #include <stdint.h> -#endif -#ifndef CYTHON_FALLTHROUGH - #if defined(__cplusplus) && __cplusplus >= 201103L - #if __has_cpp_attribute(fallthrough) - #define CYTHON_FALLTHROUGH [[fallthrough]] - #elif __has_cpp_attribute(clang::fallthrough) - #define CYTHON_FALLTHROUGH [[clang::fallthrough]] - #elif __has_cpp_attribute(gnu::fallthrough) - #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] - #endif - #endif - #ifndef CYTHON_FALLTHROUGH - #if __has_attribute(fallthrough) - #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) - #else - #define CYTHON_FALLTHROUGH - #endif - #endif - #if defined(__clang__ ) && defined(__apple_build_version__) - #if __apple_build_version__ < 7000000 - #undef CYTHON_FALLTHROUGH - #define CYTHON_FALLTHROUGH - #endif - #endif -#endif - -#ifndef CYTHON_INLINE - #if defined(__clang__) - #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) - #elif defined(__GNUC__) - #define CYTHON_INLINE __inline__ - #elif defined(_MSC_VER) - #define CYTHON_INLINE __inline - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_INLINE inline - #else - #define CYTHON_INLINE - #endif -#endif - -#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) - #define Py_OptimizeFlag 0 -#endif -#define __PYX_BUILD_PY_SSIZE_T "n" -#define CYTHON_FORMAT_SSIZE_T "z" -#if PY_MAJOR_VERSION < 3 - #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) - #define __Pyx_DefaultClassType PyClass_Type -#else - #define __Pyx_BUILTIN_MODULE_NAME "builtins" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) - #define __Pyx_DefaultClassType PyType_Type -#endif -#ifndef Py_TPFLAGS_CHECKTYPES - #define Py_TPFLAGS_CHECKTYPES 0 -#endif -#ifndef Py_TPFLAGS_HAVE_INDEX - #define Py_TPFLAGS_HAVE_INDEX 0 -#endif -#ifndef Py_TPFLAGS_HAVE_NEWBUFFER - #define Py_TPFLAGS_HAVE_NEWBUFFER 0 -#endif -#ifndef Py_TPFLAGS_HAVE_FINALIZE - #define Py_TPFLAGS_HAVE_FINALIZE 0 -#endif -#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) - #ifndef METH_FASTCALL - #define METH_FASTCALL 0x80 - #endif - typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); - typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, - Py_ssize_t nargs, PyObject *kwnames); -#else - #define __Pyx_PyCFunctionFast _PyCFunctionFast - #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords -#endif -#if CYTHON_FAST_PYCCALL -#define __Pyx_PyFastCFunction_Check(func)\ - ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))))) -#else -#define __Pyx_PyFastCFunction_Check(func) 0 -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) - #define PyObject_Malloc(s) PyMem_Malloc(s) - #define PyObject_Free(p) PyMem_Free(p) - #define PyObject_Realloc(p) PyMem_Realloc(p) -#endif -#if CYTHON_COMPILING_IN_PYSTON - #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) -#else - #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) -#endif -#if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000 - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#elif PY_VERSION_HEX >= 0x03060000 - #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() -#elif PY_VERSION_HEX >= 0x03000000 - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#else - #define __Pyx_PyThreadState_Current _PyThreadState_Current -#endif -#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) -#include "pythread.h" -#define Py_tss_NEEDS_INIT 0 -typedef int Py_tss_t; -static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { - *key = PyThread_create_key(); - return 0; // PyThread_create_key reports success always -} -static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { - Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); - *key = Py_tss_NEEDS_INIT; - return key; -} -static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { - PyObject_Free(key); -} -static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { - return *key != Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { - PyThread_delete_key(*key); - *key = Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { - return PyThread_set_key_value(*key, value); -} -static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { - return PyThread_get_key_value(*key); -} -#endif // TSS (Thread Specific Storage) API -#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) -#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) -#else -#define __Pyx_PyDict_NewPresized(n) PyDict_New() -#endif -#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION - #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) -#else - #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) -#endif -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS -#define __Pyx_PyDict_GetItemStr(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) -#else -#define __Pyx_PyDict_GetItemStr(dict, name) PyDict_GetItem(dict, name) -#endif -#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) - #define CYTHON_PEP393_ENABLED 1 - #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ - 0 : _PyUnicode_Ready((PyObject *)(op))) - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) - #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) - #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) - #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) -#else - #define CYTHON_PEP393_ENABLED 0 - #define PyUnicode_1BYTE_KIND 1 - #define PyUnicode_2BYTE_KIND 2 - #define PyUnicode_4BYTE_KIND 4 - #define __Pyx_PyUnicode_READY(op) (0) - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) - #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) - #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) - #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) -#endif -#if CYTHON_COMPILING_IN_PYPY - #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) -#else - #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ - PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) - #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) - #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) - #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) -#endif -#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) -#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) -#else - #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) -#endif -#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) - #define PyObject_ASCII(o) PyObject_Repr(o) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBaseString_Type PyUnicode_Type - #define PyStringObject PyUnicodeObject - #define PyString_Type PyUnicode_Type - #define PyString_Check PyUnicode_Check - #define PyString_CheckExact PyUnicode_CheckExact - #define PyObject_Unicode PyObject_Str -#endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) - #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) -#else - #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) - #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) -#endif -#ifndef PySet_CheckExact - #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) -#endif -#if CYTHON_ASSUME_SAFE_MACROS - #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) -#else - #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyIntObject PyLongObject - #define PyInt_Type PyLong_Type - #define PyInt_Check(op) PyLong_Check(op) - #define PyInt_CheckExact(op) PyLong_CheckExact(op) - #define PyInt_FromString PyLong_FromString - #define PyInt_FromUnicode PyLong_FromUnicode - #define PyInt_FromLong PyLong_FromLong - #define PyInt_FromSize_t PyLong_FromSize_t - #define PyInt_FromSsize_t PyLong_FromSsize_t - #define PyInt_AsLong PyLong_AsLong - #define PyInt_AS_LONG PyLong_AS_LONG - #define PyInt_AsSsize_t PyLong_AsSsize_t - #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask - #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask - #define PyNumber_Int PyNumber_Long -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBoolObject PyLongObject -#endif -#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY - #ifndef PyUnicode_InternFromString - #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) - #endif -#endif -#if PY_VERSION_HEX < 0x030200A4 - typedef long Py_hash_t; - #define __Pyx_PyInt_FromHash_t PyInt_FromLong - #define __Pyx_PyInt_AsHash_t PyInt_AsLong -#else - #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t - #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t -#endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : (Py_INCREF(func), func)) -#else - #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) -#endif -#if CYTHON_USE_ASYNC_SLOTS - #if PY_VERSION_HEX >= 0x030500B1 - #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods - #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) - #else - #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) - #endif -#else - #define __Pyx_PyType_AsAsync(obj) NULL -#endif -#ifndef __Pyx_PyAsyncMethodsStruct - typedef struct { - unaryfunc am_await; - unaryfunc am_aiter; - unaryfunc am_anext; - } __Pyx_PyAsyncMethodsStruct; -#endif - -#if defined(WIN32) || defined(MS_WINDOWS) - #define _USE_MATH_DEFINES -#endif -#include <math.h> -#ifdef NAN -#define __PYX_NAN() ((float) NAN) -#else -static CYTHON_INLINE float __PYX_NAN() { - float value; - memset(&value, 0xFF, sizeof(value)); - return value; -} -#endif -#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) -#define __Pyx_truncl trunc -#else -#define __Pyx_truncl truncl -#endif - - -#define __PYX_ERR(f_index, lineno, Ln_error) \ -{ \ - __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \ -} - -#ifndef __PYX_EXTERN_C - #ifdef __cplusplus - #define __PYX_EXTERN_C extern "C" - #else - #define __PYX_EXTERN_C extern - #endif -#endif - -#define __PYX_HAVE__gevent__libev__corecext -#define __PYX_HAVE_API__gevent__libev__corecext -/* Early includes */ -#include "libev_vfd.h" -#include "libev.h" -#include <string.h> -#include <stdio.h> -#include <errno.h> -#include "callbacks.h" -#include "stathelper.c" -#include "pythread.h" -#ifdef _OPENMP -#include <omp.h> -#endif /* _OPENMP */ - -#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) -#define CYTHON_WITHOUT_ASSERTIONS -#endif - -typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; - const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; - -#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 -#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0 -#define __PYX_DEFAULT_STRING_ENCODING "" -#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString -#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#define __Pyx_uchar_cast(c) ((unsigned char)c) -#define __Pyx_long_cast(x) ((long)x) -#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ - (sizeof(type) < sizeof(Py_ssize_t)) ||\ - (sizeof(type) > sizeof(Py_ssize_t) &&\ - likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX) &&\ - (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ - v == (type)PY_SSIZE_T_MIN))) ||\ - (sizeof(type) == sizeof(Py_ssize_t) &&\ - (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX))) ) -#if defined (__cplusplus) && __cplusplus >= 201103L - #include <cstdlib> - #define __Pyx_sst_abs(value) std::abs(value) -#elif SIZEOF_INT >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) abs(value) -#elif SIZEOF_LONG >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) labs(value) -#elif defined (_MSC_VER) - #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) -#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define __Pyx_sst_abs(value) llabs(value) -#elif defined (__GNUC__) - #define __Pyx_sst_abs(value) __builtin_llabs(value) -#else - #define __Pyx_sst_abs(value) ((value<0) ? -value : value) -#endif -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); -#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) -#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) -#define __Pyx_PyBytes_FromString PyBytes_FromString -#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); -#if PY_MAJOR_VERSION < 3 - #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#else - #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize -#endif -#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) -#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) -#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) -#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) -#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) -static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { - const Py_UNICODE *u_end = u; - while (*u_end++) ; - return (size_t)(u_end - u - 1); -} -#define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) -#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode -#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode -#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) -#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); -#define __Pyx_PySequence_Tuple(obj)\ - (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); -#if CYTHON_ASSUME_SAFE_MACROS -#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) -#else -#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) -#endif -#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) -#if PY_MAJOR_VERSION >= 3 -#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) -#else -#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) -#endif -#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x)) -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII -static int __Pyx_sys_getdefaultencoding_not_ascii; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - PyObject* ascii_chars_u = NULL; - PyObject* ascii_chars_b = NULL; - const char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - if (strcmp(default_encoding_c, "ascii") == 0) { - __Pyx_sys_getdefaultencoding_not_ascii = 0; - } else { - char ascii_chars[128]; - int c; - for (c = 0; c < 128; c++) { - ascii_chars[c] = c; - } - __Pyx_sys_getdefaultencoding_not_ascii = 1; - ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); - if (!ascii_chars_u) goto bad; - ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); - if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { - PyErr_Format( - PyExc_ValueError, - "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", - default_encoding_c); - goto bad; - } - Py_DECREF(ascii_chars_u); - Py_DECREF(ascii_chars_b); - } - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - Py_XDECREF(ascii_chars_u); - Py_XDECREF(ascii_chars_b); - return -1; -} -#endif -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) -#else -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -static char* __PYX_DEFAULT_STRING_ENCODING; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c)); - if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; - strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - return -1; -} -#endif -#endif - - -/* Test for GCC > 2.95 */ -#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) - #define likely(x) __builtin_expect(!!(x), 1) - #define unlikely(x) __builtin_expect(!!(x), 0) -#else /* !__GNUC__ or GCC < 2.95 */ - #define likely(x) (x) - #define unlikely(x) (x) -#endif /* __GNUC__ */ -static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } - -static PyObject *__pyx_m = NULL; -static PyObject *__pyx_d; -static PyObject *__pyx_b; -static PyObject *__pyx_cython_runtime = NULL; -static PyObject *__pyx_empty_tuple; -static PyObject *__pyx_empty_bytes; -static PyObject *__pyx_empty_unicode; -static int __pyx_lineno; -static int __pyx_clineno = 0; -static const char * __pyx_cfilenm= __FILE__; -static const char *__pyx_filename; - - -static const char *__pyx_f[] = { - "src\\gevent\\libev\\corecext.pyx", - "type.pxd", - "bool.pxd", - "complex.pxd", -}; -/* NoFastGil.proto */ -#define __Pyx_PyGILState_Ensure PyGILState_Ensure -#define __Pyx_PyGILState_Release PyGILState_Release -#define __Pyx_FastGIL_Remember() -#define __Pyx_FastGIL_Forget() -#define __Pyx_FastGilFuncInit() - -/* ForceInitThreads.proto */ -#ifndef __PYX_FORCE_INIT_THREADS - #define __PYX_FORCE_INIT_THREADS 0 -#endif - - -/*--- Type declarations ---*/ -struct __pyx_obj_6gevent_5libev_8corecext__EVENTSType; -struct PyGeventCallbackObject; -struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO; -struct PyGeventLoopObject; -struct PyGeventWatcherObject; -struct PyGeventIOObject; -struct PyGeventTimerObject; -struct PyGeventSignalObject; -struct PyGeventIdleObject; -struct PyGeventPrepareObject; -struct PyGeventCheckObject; -struct PyGeventForkObject; -struct PyGeventAsyncObject; -struct PyGeventChildObject; -struct PyGeventStatObject; -struct __pyx_obj_6gevent_5libev_8corecext___pyx_scope_struct__genexpr; -struct __pyx_t_6gevent_5libev_8corecext_start_and_stop; - -typedef void (*__pyx_t_6gevent_5libev_8corecext_start_stop_func)(struct ev_loop *, void *); - -struct __pyx_t_6gevent_5libev_8corecext_start_and_stop { - __pyx_t_6gevent_5libev_8corecext_start_stop_func start; - __pyx_t_6gevent_5libev_8corecext_start_stop_func stop; -}; - -struct __pyx_obj_6gevent_5libev_8corecext__EVENTSType { - PyObject_HEAD -}; - - -struct PyGeventCallbackObject { - PyObject_HEAD - PyObject *callback; - PyObject *args; - struct PyGeventCallbackObject *next; -}; - -__PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyGeventCallback_Type; - -struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO { - PyObject_HEAD - struct __pyx_vtabstruct_6gevent_5libev_8corecext_CallbackFIFO *__pyx_vtab; - struct PyGeventCallbackObject *head; - struct PyGeventCallbackObject *tail; -}; - - -struct PyGeventLoopObject { - PyObject_HEAD - struct __pyx_vtabstruct_6gevent_5libev_8corecext_loop *__pyx_vtab; - struct ev_prepare _prepare; - struct ev_timer _timer0; - struct ev_timer _periodic_signal_checker; - PyObject *error_handler; - struct ev_loop *_ptr; - struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *_callbacks; - int starting_timer_may_update_loop_time; - int _default; -}; - -__PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyGeventLoop_Type; - -struct PyGeventWatcherObject { - PyObject_HEAD - struct PyGeventLoopObject *loop; - PyObject *_callback; - PyObject *args; - struct ev_watcher *__pyx___watcher; - struct __pyx_t_6gevent_5libev_8corecext_start_and_stop *__pyx___ss; - unsigned int _flags; -}; - -__PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyGeventWatcher_Type; - -struct PyGeventIOObject { - struct PyGeventWatcherObject __pyx_base; - struct ev_io _watcher; -}; - -__PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyGeventIO_Type; - -struct PyGeventTimerObject { - struct PyGeventWatcherObject __pyx_base; - struct ev_timer _watcher; -}; - -__PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyGeventTimer_Type; - -struct PyGeventSignalObject { - struct PyGeventWatcherObject __pyx_base; - struct ev_signal _watcher; -}; - -__PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyGeventSignal_Type; - -struct PyGeventIdleObject { - struct PyGeventWatcherObject __pyx_base; - struct ev_idle _watcher; -}; - -__PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyGeventIdle_Type; - -struct PyGeventPrepareObject { - struct PyGeventWatcherObject __pyx_base; - struct ev_prepare _watcher; -}; - -__PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyGeventPrepare_Type; - -struct PyGeventCheckObject { - struct PyGeventWatcherObject __pyx_base; - struct ev_check _watcher; -}; - -__PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyGeventCheck_Type; - -struct PyGeventForkObject { - struct PyGeventWatcherObject __pyx_base; - struct ev_fork _watcher; -}; - -__PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyGeventFork_Type; - -struct PyGeventAsyncObject { - struct PyGeventWatcherObject __pyx_base; - struct ev_async _watcher; -}; - -__PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyGeventAsync_Type; - -struct PyGeventChildObject { - struct PyGeventWatcherObject __pyx_base; - struct ev_child _watcher; -}; - -__PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyGeventChild_Type; - -struct PyGeventStatObject { - struct PyGeventWatcherObject __pyx_base; - struct ev_stat _watcher; - PyObject *path; - PyObject *_paths; -}; - -__PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyGeventStat_Type; - -struct __pyx_obj_6gevent_5libev_8corecext___pyx_scope_struct__genexpr { - PyObject_HEAD - PyObject *__pyx_v_flag; - PyObject *__pyx_v_string; -}; - - - - -struct __pyx_vtabstruct_6gevent_5libev_8corecext_CallbackFIFO { - struct PyGeventCallbackObject *(*popleft)(struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *); - PyObject *(*append)(struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *, struct PyGeventCallbackObject *); - int (*has_callbacks)(struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *); -}; -static struct __pyx_vtabstruct_6gevent_5libev_8corecext_CallbackFIFO *__pyx_vtabptr_6gevent_5libev_8corecext_CallbackFIFO; -static CYTHON_INLINE struct PyGeventCallbackObject *__pyx_f_6gevent_5libev_8corecext_12CallbackFIFO_popleft(struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *); -static CYTHON_INLINE PyObject *__pyx_f_6gevent_5libev_8corecext_12CallbackFIFO_append(struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *, struct PyGeventCallbackObject *); -static int __pyx_f_6gevent_5libev_8corecext_12CallbackFIFO_has_callbacks(struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *); - -__PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyGeventLoop_Type; - - -struct __pyx_vtabstruct_6gevent_5libev_8corecext_loop { - PyObject *(*_run_callbacks)(struct PyGeventLoopObject *); - PyObject *(*_stop_watchers)(struct PyGeventLoopObject *, struct ev_loop *); - PyObject *(*handle_error)(struct PyGeventLoopObject *, PyObject *, PyObject *, PyObject *, PyObject *, int __pyx_skip_dispatch); - PyObject *(*_default_handle_error)(struct PyGeventLoopObject *, PyObject *, PyObject *, PyObject *, PyObject *, int __pyx_skip_dispatch); - ev_tstamp (*now)(struct PyGeventLoopObject *, int __pyx_skip_dispatch); - void (*update_now)(struct PyGeventLoopObject *, int __pyx_skip_dispatch); -}; -static struct __pyx_vtabstruct_6gevent_5libev_8corecext_loop *__pyx_vtabptr_6gevent_5libev_8corecext_loop; - -/* --- Runtime support code (head) --- */ -/* Refnanny.proto */ -#ifndef CYTHON_REFNANNY - #define CYTHON_REFNANNY 0 -#endif -#if CYTHON_REFNANNY - typedef struct { - void (*INCREF)(void*, PyObject*, int); - void (*DECREF)(void*, PyObject*, int); - void (*GOTREF)(void*, PyObject*, int); - void (*GIVEREF)(void*, PyObject*, int); - void* (*SetupContext)(const char*, int, const char*); - void (*FinishContext)(void**); - } __Pyx_RefNannyAPIStruct; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); - #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; -#ifdef WITH_THREAD - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - if (acquire_gil) {\ - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - PyGILState_Release(__pyx_gilstate_save);\ - } else {\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - } -#else - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) -#endif - #define __Pyx_RefNannyFinishContext()\ - __Pyx_RefNanny->FinishContext(&__pyx_refnanny) - #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) - #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) - #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) - #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0) -#else - #define __Pyx_RefNannyDeclarations - #define __Pyx_RefNannySetupContext(name, acquire_gil) - #define __Pyx_RefNannyFinishContext() - #define __Pyx_INCREF(r) Py_INCREF(r) - #define __Pyx_DECREF(r) Py_DECREF(r) - #define __Pyx_GOTREF(r) - #define __Pyx_GIVEREF(r) - #define __Pyx_XINCREF(r) Py_XINCREF(r) - #define __Pyx_XDECREF(r) Py_XDECREF(r) - #define __Pyx_XGOTREF(r) - #define __Pyx_XGIVEREF(r) -#endif -#define __Pyx_XDECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_XDECREF(tmp);\ - } while (0) -#define __Pyx_DECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_DECREF(tmp);\ - } while (0) -#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) -#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) - -/* PyObjectGetAttrStr.proto */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) -#endif - -/* GetBuiltinName.proto */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name); - -/* GetModuleGlobalName.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name); - -/* RaiseTooManyValuesToUnpack.proto */ -static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); - -/* RaiseNeedMoreValuesToUnpack.proto */ -static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); - -/* IterFinish.proto */ -static CYTHON_INLINE int __Pyx_IterFinish(void); - -/* UnpackItemEndCheck.proto */ -static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); - -/* ListAppend.proto */ -#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS -static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { - PyListObject* L = (PyListObject*) list; - Py_ssize_t len = Py_SIZE(list); - if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) { - Py_INCREF(x); - PyList_SET_ITEM(list, len, x); - Py_SIZE(list) = len+1; - return 0; - } - return PyList_Append(list, x); -} -#else -#define __Pyx_PyList_Append(L,x) PyList_Append(L,x) -#endif - -/* PyObjectCall.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); -#else -#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) -#endif - -/* PyCFunctionFastCall.proto */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); -#else -#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) -#endif - -/* PyFunctionFastCall.proto */ -#if CYTHON_FAST_PYCALL -#define __Pyx_PyFunction_FastCall(func, args, nargs)\ - __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs); -#else -#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) -#endif -#endif - -/* PyObjectCallMethO.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); -#endif - -/* PyObjectCallOneArg.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); - -/* PyObjectCallNoArg.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); -#else -#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL) -#endif - -/* GetItemInt.proto */ -#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ - (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ - __Pyx_GetItemInt_Generic(o, to_py_func(i)))) -#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ - (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, - int wraparound, int boundscheck); -#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ - (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, - int wraparound, int boundscheck); -static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, - int is_list, int wraparound, int boundscheck); - -/* ObjectGetItem.proto */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key); -#else -#define __Pyx_PyObject_GetItem(obj, key) PyObject_GetItem(obj, key) -#endif - -/* PyThreadStateGet.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; -#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; -#define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type -#else -#define __Pyx_PyThreadState_declare -#define __Pyx_PyThreadState_assign -#define __Pyx_PyErr_Occurred() PyErr_Occurred() -#endif - -/* SaveResetException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -#else -#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) -#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) -#endif - -/* PyErrExceptionMatches.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) -static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); -#else -#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) -#endif - -/* GetException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) -static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#else -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); -#endif - -/* StringJoin.proto */ -#if PY_MAJOR_VERSION < 3 -#define __Pyx_PyString_Join __Pyx_PyBytes_Join -#define __Pyx_PyBaseString_Join(s, v) (PyUnicode_CheckExact(s) ? PyUnicode_Join(s, v) : __Pyx_PyBytes_Join(s, v)) -#else -#define __Pyx_PyString_Join PyUnicode_Join -#define __Pyx_PyBaseString_Join PyUnicode_Join -#endif -#if CYTHON_COMPILING_IN_CPYTHON - #if PY_MAJOR_VERSION < 3 - #define __Pyx_PyBytes_Join _PyString_Join - #else - #define __Pyx_PyBytes_Join _PyBytes_Join - #endif -#else -static CYTHON_INLINE PyObject* __Pyx_PyBytes_Join(PyObject* sep, PyObject* values); -#endif - -/* PyErrFetchRestore.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) -#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) -#else -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#endif -#else -#define __Pyx_PyErr_Clear() PyErr_Clear() -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) -#endif - -/* RaiseException.proto */ -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); - -/* ListCompAppend.proto */ -#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS -static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) { - PyListObject* L = (PyListObject*) list; - Py_ssize_t len = Py_SIZE(list); - if (likely(L->allocated > len)) { - Py_INCREF(x); - PyList_SET_ITEM(list, len, x); - Py_SIZE(list) = len+1; - return 0; - } - return PyList_Append(list, x); -} -#else -#define __Pyx_ListComp_Append(L,x) PyList_Append(L,x) -#endif - -/* RaiseArgTupleInvalid.proto */ -static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, - Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); - -/* RaiseDoubleKeywords.proto */ -static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); - -/* ParseKeywords.proto */ -static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\ - PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\ - const char* function_name); - -/* SwapException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#else -static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); -#endif - -/* KeywordStringCheck.proto */ -static int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); - -/* WriteUnraisableException.proto */ -static void __Pyx_WriteUnraisable(const char *name, int clineno, - int lineno, const char *filename, - int full_traceback, int nogil); - -/* IncludeStringH.proto */ -#include <string.h> - -/* BytesEquals.proto */ -static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); - -/* UnicodeEquals.proto */ -static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals); - -/* StrEquals.proto */ -#if PY_MAJOR_VERSION >= 3 -#define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals -#else -#define __Pyx_PyString_Equals __Pyx_PyBytes_Equals -#endif - -/* GetAttr.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *); - -/* GetAttr3.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *); - -/* ArgTypeTest.proto */ -#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\ - ((likely((Py_TYPE(obj) == type) | (none_allowed && (obj == Py_None)))) ? 1 :\ - __Pyx__ArgTypeTest(obj, type, name, exact)) -static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact); - -/* ExtTypeTest.proto */ -static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); - -/* CallableCheck.proto */ -#if CYTHON_USE_TYPE_SLOTS && PY_MAJOR_VERSION >= 3 -#define __Pyx_PyCallable_Check(obj) ((obj)->ob_type->tp_call != NULL) -#else -#define __Pyx_PyCallable_Check(obj) PyCallable_Check(obj) -#endif - -/* PyObjectSetAttrStr.proto */ -#if CYTHON_USE_TYPE_SLOTS -#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o, n, NULL) -static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value); -#else -#define __Pyx_PyObject_DelAttrStr(o,n) PyObject_DelAttr(o,n) -#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v) -#endif - -/* PyObject_GenericGetAttrNoDict.proto */ -#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr -#endif - -/* PyObject_GenericGetAttr.proto */ -#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr -#endif - -/* SetVTable.proto */ -static int __Pyx_SetVtable(PyObject *dict, void *vtable); - -/* GetNameInClass.proto */ -static PyObject *__Pyx_GetNameInClass(PyObject *nmspace, PyObject *name); - -/* CLineInTraceback.proto */ -#ifdef CYTHON_CLINE_IN_TRACEBACK -#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) -#else -static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); -#endif - -/* CodeObjectCache.proto */ -typedef struct { - PyCodeObject* code_object; - int code_line; -} __Pyx_CodeObjectCacheEntry; -struct __Pyx_CodeObjectCache { - int count; - int max_count; - __Pyx_CodeObjectCacheEntry* entries; -}; -static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; -static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); -static PyCodeObject *__pyx_find_code_object(int code_line); -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); - -/* AddTraceback.proto */ -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename); - -/* CIntToPy.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); - -/* CIntToPy.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); - -/* CIntToPy.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_int(unsigned int value); - -/* CIntFromPy.proto */ -static CYTHON_INLINE unsigned int __Pyx_PyInt_As_unsigned_int(PyObject *); - -/* CIntFromPy.proto */ -static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); - -/* CIntFromPy.proto */ -static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); - -/* FastTypeChecks.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); -#else -#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) -#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) -#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) -#endif -#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) - -/* FetchCommonType.proto */ -static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); - -/* PyObjectCallMethod1.proto */ -static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg); -static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg); - -/* CoroutineBase.proto */ -typedef PyObject *(*__pyx_coroutine_body_t)(PyObject *, PyThreadState *, PyObject *); -typedef struct { - PyObject_HEAD - __pyx_coroutine_body_t body; - PyObject *closure; - PyObject *exc_type; - PyObject *exc_value; - PyObject *exc_traceback; - PyObject *gi_weakreflist; - PyObject *classobj; - PyObject *yieldfrom; - PyObject *gi_name; - PyObject *gi_qualname; - PyObject *gi_modulename; - PyObject *gi_code; - int resume_label; - char is_running; -} __pyx_CoroutineObject; -static __pyx_CoroutineObject *__Pyx__Coroutine_New( - PyTypeObject *type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, - PyObject *name, PyObject *qualname, PyObject *module_name); -static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit( - __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, - PyObject *name, PyObject *qualname, PyObject *module_name); -static int __Pyx_Coroutine_clear(PyObject *self); -static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value); -static PyObject *__Pyx_Coroutine_Close(PyObject *self); -static PyObject *__Pyx_Coroutine_Throw(PyObject *gen, PyObject *args); -#define __Pyx_Coroutine_SwapException(self) {\ - __Pyx_ExceptionSwap(&(self)->exc_type, &(self)->exc_value, &(self)->exc_traceback);\ - __Pyx_Coroutine_ResetFrameBackpointer(self);\ - } -#define __Pyx_Coroutine_ResetAndClearException(self) {\ - __Pyx_ExceptionReset((self)->exc_type, (self)->exc_value, (self)->exc_traceback);\ - (self)->exc_type = (self)->exc_value = (self)->exc_traceback = NULL;\ - } -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\ - __Pyx_PyGen__FetchStopIterationValue(__pyx_tstate, pvalue) -#else -#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\ - __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, pvalue) -#endif -static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *tstate, PyObject **pvalue); -static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__pyx_CoroutineObject *self); - -/* PatchModuleWithCoroutine.proto */ -static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code); - -/* PatchGeneratorABC.proto */ -static int __Pyx_patch_abc(void); - -/* Generator.proto */ -#define __Pyx_Generator_USED -static PyTypeObject *__pyx_GeneratorType = 0; -#define __Pyx_Generator_CheckExact(obj) (Py_TYPE(obj) == __pyx_GeneratorType) -#define __Pyx_Generator_New(body, code, closure, name, qualname, module_name)\ - __Pyx__Coroutine_New(__pyx_GeneratorType, body, code, closure, name, qualname, module_name) -static PyObject *__Pyx_Generator_Next(PyObject *self); -static int __pyx_Generator_init(void); - -/* CheckBinaryVersion.proto */ -static int __Pyx_check_binary_version(void); - -/* PyIdentifierFromString.proto */ -#if !defined(__Pyx_PyIdentifier_FromString) -#if PY_MAJOR_VERSION < 3 - #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s) -#else - #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s) -#endif -#endif - -/* ModuleImport.proto */ -static PyObject *__Pyx_ImportModule(const char *name); - -/* TypeImport.proto */ -static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict); - -/* InitStrings.proto */ -static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); - -static CYTHON_INLINE struct PyGeventCallbackObject *__pyx_f_6gevent_5libev_8corecext_12CallbackFIFO_popleft(struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *__pyx_v_self); /* proto*/ -static CYTHON_INLINE PyObject *__pyx_f_6gevent_5libev_8corecext_12CallbackFIFO_append(struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *__pyx_v_self, struct PyGeventCallbackObject *__pyx_v_new_tail); /* proto*/ -static int __pyx_f_6gevent_5libev_8corecext_12CallbackFIFO_has_callbacks(struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *__pyx_v_self); /* proto*/ -static PyObject *__pyx_f_6gevent_5libev_8corecext_4loop__run_callbacks(struct PyGeventLoopObject *__pyx_v_self); /* proto*/ -static PyObject *__pyx_f_6gevent_5libev_8corecext_4loop__stop_watchers(struct PyGeventLoopObject *__pyx_v_self, struct ev_loop *__pyx_v_ptr); /* proto*/ -static PyObject *__pyx_f_6gevent_5libev_8corecext_4loop_handle_error(struct PyGeventLoopObject *__pyx_v_self, PyObject *__pyx_v_context, PyObject *__pyx_v_type, PyObject *__pyx_v_value, PyObject *__pyx_v_tb, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_5libev_8corecext_4loop__default_handle_error(struct PyGeventLoopObject *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_context, PyObject *__pyx_v_type, PyObject *__pyx_v_value, PyObject *__pyx_v_tb, int __pyx_skip_dispatch); /* proto*/ -static ev_tstamp __pyx_f_6gevent_5libev_8corecext_4loop_now(struct PyGeventLoopObject *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ -static void __pyx_f_6gevent_5libev_8corecext_4loop_update_now(struct PyGeventLoopObject *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ - -/* Module declarations from 'cython' */ - -/* Module declarations from 'gevent.libev.libev' */ - -/* Module declarations from 'libc.string' */ - -/* Module declarations from 'libc.stdio' */ - -/* Module declarations from '__builtin__' */ - -/* Module declarations from 'cpython.type' */ -static PyTypeObject *__pyx_ptype_7cpython_4type_type = 0; - -/* Module declarations from 'cpython.version' */ - -/* Module declarations from 'cpython.exc' */ - -/* Module declarations from 'cpython.module' */ - -/* Module declarations from 'cpython.mem' */ - -/* Module declarations from 'cpython.tuple' */ - -/* Module declarations from 'cpython.list' */ - -/* Module declarations from 'cpython.sequence' */ - -/* Module declarations from 'cpython.mapping' */ - -/* Module declarations from 'cpython.iterator' */ - -/* Module declarations from 'cpython.number' */ - -/* Module declarations from 'cpython.int' */ - -/* Module declarations from '__builtin__' */ - -/* Module declarations from 'cpython.bool' */ -static PyTypeObject *__pyx_ptype_7cpython_4bool_bool = 0; - -/* Module declarations from 'cpython.long' */ - -/* Module declarations from 'cpython.float' */ - -/* Module declarations from '__builtin__' */ - -/* Module declarations from 'cpython.complex' */ -static PyTypeObject *__pyx_ptype_7cpython_7complex_complex = 0; - -/* Module declarations from 'cpython.string' */ - -/* Module declarations from 'cpython.unicode' */ - -/* Module declarations from 'cpython.dict' */ - -/* Module declarations from 'cpython.instance' */ - -/* Module declarations from 'cpython.function' */ - -/* Module declarations from 'cpython.method' */ - -/* Module declarations from 'cpython.weakref' */ - -/* Module declarations from 'cpython.getargs' */ - -/* Module declarations from 'cpython.pythread' */ - -/* Module declarations from 'cpython.pystate' */ - -/* Module declarations from 'cpython.cobject' */ - -/* Module declarations from 'cpython.oldbuffer' */ - -/* Module declarations from 'cpython.set' */ - -/* Module declarations from 'cpython.buffer' */ - -/* Module declarations from 'cpython.bytes' */ - -/* Module declarations from 'cpython.pycapsule' */ - -/* Module declarations from 'cpython' */ - -/* Module declarations from 'cpython.object' */ - -/* Module declarations from 'cpython.ref' */ - -/* Module declarations from 'libc.errno' */ - -/* Module declarations from 'gevent.libev.corecext' */ -static PyTypeObject *__pyx_ptype_6gevent_5libev_8corecext__EVENTSType = 0; -static PyTypeObject *__pyx_ptype_6gevent_5libev_8corecext_callback = 0; -static PyTypeObject *__pyx_ptype_6gevent_5libev_8corecext_CallbackFIFO = 0; -static PyTypeObject *__pyx_ptype_6gevent_5libev_8corecext_loop = 0; -static PyTypeObject *__pyx_ptype_6gevent_5libev_8corecext_watcher = 0; -static PyTypeObject *__pyx_ptype_6gevent_5libev_8corecext_io = 0; -static PyTypeObject *__pyx_ptype_6gevent_5libev_8corecext_timer = 0; -static PyTypeObject *__pyx_ptype_6gevent_5libev_8corecext_signal = 0; -static PyTypeObject *__pyx_ptype_6gevent_5libev_8corecext_idle = 0; -static PyTypeObject *__pyx_ptype_6gevent_5libev_8corecext_prepare = 0; -static PyTypeObject *__pyx_ptype_6gevent_5libev_8corecext_check = 0; -static PyTypeObject *__pyx_ptype_6gevent_5libev_8corecext_fork = 0; -static PyTypeObject *__pyx_ptype_6gevent_5libev_8corecext_async_ = 0; -static PyTypeObject *__pyx_ptype_6gevent_5libev_8corecext_child = 0; -static PyTypeObject *__pyx_ptype_6gevent_5libev_8corecext_stat = 0; -static PyTypeObject *__pyx_ptype_6gevent_5libev_8corecext___pyx_scope_struct__genexpr = 0; -static PyObject *__pyx_v_6gevent_5libev_8corecext_integer_types = 0; -__PYX_EXTERN_C DL_EXPORT(PyObject) *GEVENT_CORE_EVENTS; -static struct __pyx_t_6gevent_5libev_8corecext_start_and_stop __pyx_v_6gevent_5libev_8corecext_io_ss; -static struct __pyx_t_6gevent_5libev_8corecext_start_and_stop __pyx_v_6gevent_5libev_8corecext_timer_ss; -static struct __pyx_t_6gevent_5libev_8corecext_start_and_stop __pyx_v_6gevent_5libev_8corecext_signal_ss; -static struct __pyx_t_6gevent_5libev_8corecext_start_and_stop __pyx_v_6gevent_5libev_8corecext_idle_ss; -static struct __pyx_t_6gevent_5libev_8corecext_start_and_stop __pyx_v_6gevent_5libev_8corecext_prepare_ss; -static struct __pyx_t_6gevent_5libev_8corecext_start_and_stop __pyx_v_6gevent_5libev_8corecext_check_ss; -static struct __pyx_t_6gevent_5libev_8corecext_start_and_stop __pyx_v_6gevent_5libev_8corecext_fork_ss; -static struct __pyx_t_6gevent_5libev_8corecext_start_and_stop __pyx_v_6gevent_5libev_8corecext_async_ss; -static struct __pyx_t_6gevent_5libev_8corecext_start_and_stop __pyx_v_6gevent_5libev_8corecext_child_ss; -static struct __pyx_t_6gevent_5libev_8corecext_start_and_stop __pyx_v_6gevent_5libev_8corecext_stat_ss; -__PYX_EXTERN_C DL_EXPORT(PyObject) *_empty_tuple; -static PyObject *__pyx_f_6gevent_5libev_8corecext__flags_to_list(unsigned int, int __pyx_skip_dispatch); /*proto*/ -static unsigned int __pyx_f_6gevent_5libev_8corecext__flags_to_int(PyObject *, int __pyx_skip_dispatch); /*proto*/ -static PyObject *__pyx_f_6gevent_5libev_8corecext__str_hex(PyObject *); /*proto*/ -static PyObject *__pyx_f_6gevent_5libev_8corecext__check_flags(unsigned int, int __pyx_skip_dispatch); /*proto*/ -static PyObject *__pyx_f_6gevent_5libev_8corecext__events_to_str(int, int __pyx_skip_dispatch); /*proto*/ -static int __pyx_f_6gevent_5libev_8corecext__check_loop(struct PyGeventLoopObject *); /*proto*/ -static void __pyx_f_6gevent_5libev_8corecext__python_incref(struct PyGeventWatcherObject *); /*proto*/ -static void __pyx_f_6gevent_5libev_8corecext__python_decref(struct PyGeventWatcherObject *); /*proto*/ -static void __pyx_f_6gevent_5libev_8corecext__libev_ref(struct PyGeventWatcherObject *); /*proto*/ -static void __pyx_f_6gevent_5libev_8corecext__libev_unref(struct PyGeventWatcherObject *); /*proto*/ -static struct __pyx_t_6gevent_5libev_8corecext_start_and_stop __pyx_f_6gevent_5libev_8corecext_make_ss(void *, void *); /*proto*/ -static int __pyx_f_6gevent_5libev_8corecext__watcher_start(struct PyGeventWatcherObject *, PyObject *, PyObject *); /*proto*/ -static void __pyx_f_6gevent_5libev_8corecext__syserr_cb(char *); /*proto*/ -static PyObject *__pyx_f_6gevent_5libev_8corecext_set_syserr_cb(PyObject *, int __pyx_skip_dispatch); /*proto*/ -__PYX_EXTERN_C void gevent_handle_error(struct PyGeventLoopObject *, PyObject *); /*proto*/ -__PYX_EXTERN_C PyObject *gevent_loop_run_callbacks(struct PyGeventLoopObject *); /*proto*/ -#define __Pyx_MODULE_NAME "gevent.libev.corecext" -extern int __pyx_module_is_main_gevent__libev__corecext; -int __pyx_module_is_main_gevent__libev__corecext = 0; - -/* Implementation of 'gevent.libev.corecext' */ -static PyObject *__pyx_builtin___import__; -static PyObject *__pyx_builtin_KeyError; -static PyObject *__pyx_builtin_ValueError; -static PyObject *__pyx_builtin_hex; -static PyObject *__pyx_builtin_id; -static PyObject *__pyx_builtin_SystemError; -static PyObject *__pyx_builtin_AttributeError; -static PyObject *__pyx_builtin_TypeError; -static const char __pyx_k_[] = ","; -static const char __pyx_k_t[] = "t"; -static const char __pyx_k_v[] = "v"; -static const char __pyx_k__3[] = ", "; -static const char __pyx_k__4[] = "|"; -static const char __pyx_k__6[] = "<...>"; -static const char __pyx_k__7[] = ">"; -static const char __pyx_k__8[] = ""; -static const char __pyx_k__9[] = ": "; -static const char __pyx_k_fd[] = "fd"; -static const char __pyx_k_id[] = "id"; -static const char __pyx_k_os[] = "os"; -static const char __pyx_k_tb[] = "tb"; -static const char __pyx_k_all[] = "__all__"; -static const char __pyx_k_hex[] = "hex"; -static const char __pyx_k_how[] = "how"; -static const char __pyx_k_now[] = "now"; -static const char __pyx_k_pid[] = "pid"; -static const char __pyx_k_ptr[] = "ptr"; -static const char __pyx_k_ref[] = "ref"; -static const char __pyx_k_sys[] = "sys"; -static const char __pyx_k_FORK[] = "FORK"; -static const char __pyx_k_IDLE[] = "IDLE"; -static const char __pyx_k_NONE[] = "NONE"; -static const char __pyx_k_NSIG[] = "NSIG"; -static const char __pyx_k_READ[] = "READ"; -static const char __pyx_k_STAT[] = "STAT"; -static const char __pyx_k_args[] = "args"; -static const char __pyx_k_func[] = "func"; -static const char __pyx_k_init[] = "__init__"; -static const char __pyx_k_join[] = "join"; -static const char __pyx_k_keys[] = "keys"; -static const char __pyx_k_loop[] = "loop"; -static const char __pyx_k_main[] = "__main__"; -static const char __pyx_k_name[] = "__name__"; -static const char __pyx_k_once[] = "once"; -static const char __pyx_k_path[] = "path"; -static const char __pyx_k_poll[] = "poll"; -static const char __pyx_k_port[] = "port"; -static const char __pyx_k_send[] = "send"; -static const char __pyx_k_stop[] = "stop"; -static const char __pyx_k_test[] = "__test__"; -static const char __pyx_k_time[] = "time"; -static const char __pyx_k_type[] = "type"; -static const char __pyx_k_ASYNC[] = "ASYNC"; -static const char __pyx_k_CHECK[] = "CHECK"; -static const char __pyx_k_CHILD[] = "CHILD"; -static const char __pyx_k_EMBED[] = "EMBED"; -static const char __pyx_k_ERROR[] = "ERROR"; -static const char __pyx_k_TIMER[] = "TIMER"; -static const char __pyx_k_UNDEF[] = "UNDEF"; -static const char __pyx_k_WRITE[] = "WRITE"; -static const char __pyx_k_after[] = "after"; -static const char __pyx_k_async[] = "async_"; -static const char __pyx_k_class[] = "__class__"; -static const char __pyx_k_close[] = "close"; -static const char __pyx_k_epoll[] = "epoll"; -static const char __pyx_k_errno[] = "errno"; -static const char __pyx_k_flags[] = "_flags"; -static const char __pyx_k_level[] = "level"; -static const char __pyx_k_lower[] = "lower"; -static const char __pyx_k_noenv[] = "noenv"; -static const char __pyx_k_ref_2[] = " ref="; -static const char __pyx_k_sigfd[] = "sigfd"; -static const char __pyx_k_split[] = "split"; -static const char __pyx_k_start[] = "start"; -static const char __pyx_k_strip[] = "strip"; -static const char __pyx_k_throw[] = "throw"; -static const char __pyx_k_trace[] = "trace"; -static const char __pyx_k_value[] = "value"; -static const char __pyx_k_win32[] = "win32"; -static const char __pyx_k_CUSTOM[] = "CUSTOM"; -static const char __pyx_k_EVENTS[] = "EVENTS"; -static const char __pyx_k_MAXPRI[] = "MAXPRI"; -static const char __pyx_k_MINPRI[] = "MINPRI"; -static const char __pyx_k_SIGNAL[] = "SIGNAL"; -static const char __pyx_k_active[] = "active"; -static const char __pyx_k_args_r[] = " args=%r"; -static const char __pyx_k_decode[] = "decode"; -static const char __pyx_k_encode[] = "encode"; -static const char __pyx_k_events[] = "_events"; -static const char __pyx_k_fileno[] = "fileno"; -static const char __pyx_k_format[] = "_format"; -static const char __pyx_k_gevent[] = "gevent"; -static const char __pyx_k_import[] = "__import__"; -static const char __pyx_k_kqueue[] = "kqueue"; -static const char __pyx_k_nowait[] = "nowait"; -static const char __pyx_k_repeat[] = "repeat"; -static const char __pyx_k_select[] = "select"; -static const char __pyx_k_signal[] = "signal"; -static const char __pyx_k_signum[] = "signum"; -static const char __pyx_k_update[] = "update"; -static const char __pyx_k_CLEANUP[] = "CLEANUP"; -static const char __pyx_k_IOFDSET[] = "_IOFDSET"; -static const char __pyx_k_PREPARE[] = "PREPARE"; -static const char __pyx_k_async_2[] = "async"; -static const char __pyx_k_backend[] = "backend"; -static const char __pyx_k_context[] = "context"; -static const char __pyx_k_default[] = "default"; -static const char __pyx_k_flags_2[] = "flags"; -static const char __pyx_k_genexpr[] = "genexpr"; -static const char __pyx_k_message[] = "message"; -static const char __pyx_k_pending[] = "pending"; -static const char __pyx_k_revents[] = "revents"; -static const char __pyx_k_rstatus[] = "rstatus"; -static const char __pyx_k_stopped[] = " stopped"; -static const char __pyx_k_KeyError[] = "KeyError"; -static const char __pyx_k_PERIODIC[] = "PERIODIC"; -static const char __pyx_k_SIGNALFD[] = "SIGNALFD"; -static const char __pyx_k_active_2[] = " active"; -static const char __pyx_k_builtins[] = "__builtins__"; -static const char __pyx_k_callback[] = "callback"; -static const char __pyx_k_events_2[] = "events"; -static const char __pyx_k_fileno_2[] = " fileno="; -static const char __pyx_k_interval[] = "interval"; -static const char __pyx_k_platform[] = "platform"; -static const char __pyx_k_priority[] = "priority"; -static const char __pyx_k_signalfd[] = "signalfd"; -static const char __pyx_k_strerror[] = "strerror"; -static const char __pyx_k_FORKCHECK[] = "FORKCHECK"; -static const char __pyx_k_NOINOTIFY[] = "NOINOTIFY"; -static const char __pyx_k_NOSIGMASK[] = "NOSIGMASK"; -static const char __pyx_k_READWRITE[] = "READWRITE"; -static const char __pyx_k_TypeError[] = "TypeError"; -static const char __pyx_k_activecnt[] = "activecnt"; -static const char __pyx_k_default_2[] = " default"; -static const char __pyx_k_destroyed[] = "destroyed"; -static const char __pyx_k_forkcheck[] = "forkcheck"; -static const char __pyx_k_noinotify[] = "noinotify"; -static const char __pyx_k_nosigmask[] = "nosigmask"; -static const char __pyx_k_pending_2[] = " pending"; -static const char __pyx_k_pending_s[] = " pending=%s"; -static const char __pyx_k_print_exc[] = "print_exc"; -static const char __pyx_k_signalnum[] = "signalnum"; -static const char __pyx_k_traceback[] = "traceback"; -static const char __pyx_k_ValueError[] = "ValueError"; -static const char __pyx_k_basestring[] = "basestring"; -static const char __pyx_k_callback_r[] = " callback=%r"; -static const char __pyx_k_events_str[] = "events_str"; -static const char __pyx_k_pendingcnt[] = "pendingcnt"; -static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__"; -static const char __pyx_k_update_now[] = "update_now"; -static const char __pyx_k_LIBEV_EMBED[] = "LIBEV_EMBED"; -static const char __pyx_k_SystemError[] = "SystemError"; -static const char __pyx_k_get_version[] = "get_version"; -static const char __pyx_k_libev_d_02d[] = "libev-%d.%02d"; -static const char __pyx_k_pass_events[] = "pass_events"; -static const char __pyx_k_s_at_0x_x_s[] = "<%s at 0x%x%s"; -static const char __pyx_k_BACKEND_POLL[] = "BACKEND_POLL"; -static const char __pyx_k_BACKEND_PORT[] = "BACKEND_PORT"; -static const char __pyx_k_EV_USE_4HEAP[] = "EV_USE_4HEAP"; -static const char __pyx_k_EV_USE_FLOOR[] = "EV_USE_FLOOR"; -static const char __pyx_k_handle_error[] = "handle_error"; -static const char __pyx_k_signalmodule[] = "signalmodule"; -static const char __pyx_k_version_info[] = "version_info"; -static const char __pyx_k_BACKEND_EPOLL[] = "BACKEND_EPOLL"; -static const char __pyx_k_fd_s_events_s[] = " fd=%s events=%s"; -static const char __pyx_k_flags_str2int[] = "_flags_str2int"; -static const char __pyx_k_handle_syserr[] = "_handle_syserr"; -static const char __pyx_k_origflags_int[] = "origflags_int"; -static const char __pyx_k_s_at_0x_x_s_2[] = "<%s at 0x%x %s>"; -static const char __pyx_k_AttributeError[] = "AttributeError"; -static const char __pyx_k_BACKEND_KQUEUE[] = "BACKEND_KQUEUE"; -static const char __pyx_k_BACKEND_SELECT[] = "BACKEND_SELECT"; -static const char __pyx_k_EV_USE_EVENTFD[] = "EV_USE_EVENTFD"; -static const char __pyx_k_EV_USE_INOTIFY[] = "EV_USE_INOTIFY"; -static const char __pyx_k_format_details[] = "_format_details"; -static const char __pyx_k_EV_USE_REALTIME[] = "EV_USE_REALTIME"; -static const char __pyx_k_EV_USE_SIGNALFD[] = "EV_USE_SIGNALFD"; -static const char __pyx_k_SYSERR_CALLBACK[] = "__SYSERR_CALLBACK"; -static const char __pyx_k_pid_r_rstatus_r[] = " pid=%r rstatus=%r"; -static const char __pyx_k_print_exception[] = "print_exception"; -static const char __pyx_k_EV_USE_MONOTONIC[] = "EV_USE_MONOTONIC"; -static const char __pyx_k_EV_USE_NANOSLEEP[] = "EV_USE_NANOSLEEP"; -static const char __pyx_k_getswitchinterval[] = "getswitchinterval"; -static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; -static const char __pyx_k_get_header_version[] = "get_header_version"; -static const char __pyx_k_gevent_core_EVENTS[] = "gevent.core.EVENTS"; -static const char __pyx_k_supported_backends[] = "supported_backends"; -static const char __pyx_k_embeddable_backends[] = "embeddable_backends"; -static const char __pyx_k_EV_USE_CLOCK_SYSCALL[] = "EV_USE_CLOCK_SYSCALL"; -static const char __pyx_k_default_handle_error[] = "_default_handle_error"; -static const char __pyx_k_ev_loop_new_s_failed[] = "ev_loop_new(%s) failed"; -static const char __pyx_k_illegal_event_mask_r[] = "illegal event mask: %r"; -static const char __pyx_k_recommended_backends[] = "recommended_backends"; -static const char __pyx_k_Unsupported_backend_s[] = "Unsupported backend: %s"; -static const char __pyx_k_getfilesystemencoding[] = "getfilesystemencoding"; -static const char __pyx_k_gevent_libev_corecext[] = "gevent.libev.corecext"; -static const char __pyx_k_Expected_callable_not_r[] = "Expected callable, not %r"; -static const char __pyx_k_illegal_signal_number_r[] = "illegal signal number: %r"; -static const char __pyx_k_ev_default_loop_s_failed[] = "ev_default_loop(%s) failed"; -static const char __pyx_k_fd_must_be_non_negative_r[] = "fd must be non-negative: %r"; -static const char __pyx_k_operation_on_destroyed_loop[] = "operation on destroyed loop"; -static const char __pyx_k_src_gevent_libev_corecext_pyx[] = "src\\gevent\\libev\\corecext.pyx"; -static const char __pyx_k_Invalid_value_for_backend_0x_x[] = "Invalid value for backend: 0x%x"; -static const char __pyx_k_io_watcher_attribute_events_is[] = "'io' watcher attribute 'events' is read-only while watcher is active"; -static const char __pyx_k_Cannot_construct_a_bare_watcher[] = "Cannot construct a bare watcher"; -static const char __pyx_k_Expected_callable_or_None_got_r[] = "Expected callable or None, got %r"; -static const char __pyx_k_callbacks_r_len_d_head_r_tail_r[] = "<callbacks@%r len=%d head=%r tail=%r>"; -static const char __pyx_k_io_watcher_attribute_fd_is_read[] = "'io' watcher attribute 'fd' is read-only while watcher is active"; -static const char __pyx_k_repeat_must_be_positive_or_zero[] = "repeat must be positive or zero: %r"; -static const char __pyx_k_Cannot_set_priority_of_an_active[] = "Cannot set priority of an active watcher"; -static const char __pyx_k_Child_watchers_are_not_supported[] = "Child watchers are not supported on Windows"; -static const char __pyx_k_Invalid_backend_or_flag_s_Possib[] = "Invalid backend or flag: %s\nPossible values: %s"; -static const char __pyx_k_child_watchers_are_only_availabl[] = "child watchers are only available on the default loop"; -static PyObject *__pyx_kp_s_; -static PyObject *__pyx_n_s_ASYNC; -static PyObject *__pyx_n_s_AttributeError; -static PyObject *__pyx_n_s_BACKEND_EPOLL; -static PyObject *__pyx_n_s_BACKEND_KQUEUE; -static PyObject *__pyx_n_s_BACKEND_POLL; -static PyObject *__pyx_n_s_BACKEND_PORT; -static PyObject *__pyx_n_s_BACKEND_SELECT; -static PyObject *__pyx_n_s_CHECK; -static PyObject *__pyx_n_s_CHILD; -static PyObject *__pyx_n_s_CLEANUP; -static PyObject *__pyx_n_s_CUSTOM; -static PyObject *__pyx_kp_s_Cannot_construct_a_bare_watcher; -static PyObject *__pyx_kp_s_Cannot_set_priority_of_an_active; -static PyObject *__pyx_kp_s_Child_watchers_are_not_supported; -static PyObject *__pyx_n_s_EMBED; -static PyObject *__pyx_n_s_ERROR; -static PyObject *__pyx_n_s_EVENTS; -static PyObject *__pyx_n_s_EV_USE_4HEAP; -static PyObject *__pyx_n_s_EV_USE_CLOCK_SYSCALL; -static PyObject *__pyx_n_s_EV_USE_EVENTFD; -static PyObject *__pyx_n_s_EV_USE_FLOOR; -static PyObject *__pyx_n_s_EV_USE_INOTIFY; -static PyObject *__pyx_n_s_EV_USE_MONOTONIC; -static PyObject *__pyx_n_s_EV_USE_NANOSLEEP; -static PyObject *__pyx_n_s_EV_USE_REALTIME; -static PyObject *__pyx_n_s_EV_USE_SIGNALFD; -static PyObject *__pyx_kp_s_Expected_callable_not_r; -static PyObject *__pyx_kp_s_Expected_callable_or_None_got_r; -static PyObject *__pyx_n_s_FORK; -static PyObject *__pyx_n_s_FORKCHECK; -static PyObject *__pyx_n_s_IDLE; -static PyObject *__pyx_n_s_IOFDSET; -static PyObject *__pyx_kp_s_Invalid_backend_or_flag_s_Possib; -static PyObject *__pyx_kp_s_Invalid_value_for_backend_0x_x; -static PyObject *__pyx_n_s_KeyError; -static PyObject *__pyx_n_s_LIBEV_EMBED; -static PyObject *__pyx_n_s_MAXPRI; -static PyObject *__pyx_n_s_MINPRI; -static PyObject *__pyx_n_s_NOINOTIFY; -static PyObject *__pyx_n_s_NONE; -static PyObject *__pyx_n_s_NOSIGMASK; -static PyObject *__pyx_n_s_NSIG; -static PyObject *__pyx_n_s_PERIODIC; -static PyObject *__pyx_n_s_PREPARE; -static PyObject *__pyx_n_s_READ; -static PyObject *__pyx_n_s_READWRITE; -static PyObject *__pyx_n_s_SIGNAL; -static PyObject *__pyx_n_s_SIGNALFD; -static PyObject *__pyx_n_s_STAT; -static PyObject *__pyx_n_s_SYSERR_CALLBACK; -static PyObject *__pyx_n_s_SystemError; -static PyObject *__pyx_n_s_TIMER; -static PyObject *__pyx_n_s_TypeError; -static PyObject *__pyx_n_s_UNDEF; -static PyObject *__pyx_kp_s_Unsupported_backend_s; -static PyObject *__pyx_n_s_ValueError; -static PyObject *__pyx_n_s_WRITE; -static PyObject *__pyx_kp_s__3; -static PyObject *__pyx_kp_s__4; -static PyObject *__pyx_kp_s__6; -static PyObject *__pyx_kp_s__7; -static PyObject *__pyx_kp_s__8; -static PyObject *__pyx_kp_s__9; -static PyObject *__pyx_n_s_active; -static PyObject *__pyx_kp_s_active_2; -static PyObject *__pyx_n_s_activecnt; -static PyObject *__pyx_n_s_after; -static PyObject *__pyx_n_s_all; -static PyObject *__pyx_n_s_args; -static PyObject *__pyx_kp_s_args_r; -static PyObject *__pyx_n_s_async; -static PyObject *__pyx_n_s_async_2; -static PyObject *__pyx_n_s_backend; -static PyObject *__pyx_n_s_basestring; -static PyObject *__pyx_n_s_builtins; -static PyObject *__pyx_n_s_callback; -static PyObject *__pyx_kp_s_callback_r; -static PyObject *__pyx_kp_s_callbacks_r_len_d_head_r_tail_r; -static PyObject *__pyx_kp_s_child_watchers_are_only_availabl; -static PyObject *__pyx_n_s_class; -static PyObject *__pyx_n_s_cline_in_traceback; -static PyObject *__pyx_n_s_close; -static PyObject *__pyx_n_s_context; -static PyObject *__pyx_n_s_decode; -static PyObject *__pyx_n_s_default; -static PyObject *__pyx_kp_s_default_2; -static PyObject *__pyx_n_s_default_handle_error; -static PyObject *__pyx_n_s_destroyed; -static PyObject *__pyx_n_s_embeddable_backends; -static PyObject *__pyx_n_s_encode; -static PyObject *__pyx_n_s_epoll; -static PyObject *__pyx_n_s_errno; -static PyObject *__pyx_kp_s_ev_default_loop_s_failed; -static PyObject *__pyx_kp_s_ev_loop_new_s_failed; -static PyObject *__pyx_n_s_events; -static PyObject *__pyx_n_s_events_2; -static PyObject *__pyx_n_s_events_str; -static PyObject *__pyx_n_s_fd; -static PyObject *__pyx_kp_s_fd_must_be_non_negative_r; -static PyObject *__pyx_kp_s_fd_s_events_s; -static PyObject *__pyx_n_s_fileno; -static PyObject *__pyx_kp_s_fileno_2; -static PyObject *__pyx_n_s_flags; -static PyObject *__pyx_n_s_flags_2; -static PyObject *__pyx_n_s_flags_str2int; -static PyObject *__pyx_n_s_forkcheck; -static PyObject *__pyx_n_s_format; -static PyObject *__pyx_n_s_format_details; -static PyObject *__pyx_n_s_func; -static PyObject *__pyx_n_s_genexpr; -static PyObject *__pyx_n_s_get_header_version; -static PyObject *__pyx_n_s_get_version; -static PyObject *__pyx_n_s_getfilesystemencoding; -static PyObject *__pyx_n_s_getswitchinterval; -static PyObject *__pyx_n_s_gevent; -static PyObject *__pyx_kp_s_gevent_core_EVENTS; -static PyObject *__pyx_n_s_gevent_libev_corecext; -static PyObject *__pyx_n_s_handle_error; -static PyObject *__pyx_n_s_handle_syserr; -static PyObject *__pyx_n_s_hex; -static PyObject *__pyx_n_s_how; -static PyObject *__pyx_n_s_id; -static PyObject *__pyx_kp_s_illegal_event_mask_r; -static PyObject *__pyx_kp_s_illegal_signal_number_r; -static PyObject *__pyx_n_s_import; -static PyObject *__pyx_n_s_init; -static PyObject *__pyx_n_s_interval; -static PyObject *__pyx_kp_s_io_watcher_attribute_events_is; -static PyObject *__pyx_kp_s_io_watcher_attribute_fd_is_read; -static PyObject *__pyx_n_s_join; -static PyObject *__pyx_n_s_keys; -static PyObject *__pyx_n_s_kqueue; -static PyObject *__pyx_n_s_level; -static PyObject *__pyx_kp_s_libev_d_02d; -static PyObject *__pyx_n_s_loop; -static PyObject *__pyx_n_s_lower; -static PyObject *__pyx_n_s_main; -static PyObject *__pyx_n_s_message; -static PyObject *__pyx_n_s_name; -static PyObject *__pyx_n_s_noenv; -static PyObject *__pyx_n_s_noinotify; -static PyObject *__pyx_n_s_nosigmask; -static PyObject *__pyx_n_s_now; -static PyObject *__pyx_n_s_nowait; -static PyObject *__pyx_n_s_once; -static PyObject *__pyx_kp_s_operation_on_destroyed_loop; -static PyObject *__pyx_n_s_origflags_int; -static PyObject *__pyx_n_s_os; -static PyObject *__pyx_n_s_pass_events; -static PyObject *__pyx_n_s_path; -static PyObject *__pyx_n_s_pending; -static PyObject *__pyx_kp_s_pending_2; -static PyObject *__pyx_kp_s_pending_s; -static PyObject *__pyx_n_s_pendingcnt; -static PyObject *__pyx_n_s_pid; -static PyObject *__pyx_kp_s_pid_r_rstatus_r; -static PyObject *__pyx_n_s_platform; -static PyObject *__pyx_n_s_poll; -static PyObject *__pyx_n_s_port; -static PyObject *__pyx_n_s_print_exc; -static PyObject *__pyx_n_s_print_exception; -static PyObject *__pyx_n_s_priority; -static PyObject *__pyx_n_s_ptr; -static PyObject *__pyx_n_s_pyx_vtable; -static PyObject *__pyx_n_s_recommended_backends; -static PyObject *__pyx_n_s_ref; -static PyObject *__pyx_kp_s_ref_2; -static PyObject *__pyx_n_s_repeat; -static PyObject *__pyx_kp_s_repeat_must_be_positive_or_zero; -static PyObject *__pyx_n_s_revents; -static PyObject *__pyx_n_s_rstatus; -static PyObject *__pyx_kp_s_s_at_0x_x_s; -static PyObject *__pyx_kp_s_s_at_0x_x_s_2; -static PyObject *__pyx_n_s_select; -static PyObject *__pyx_n_s_send; -static PyObject *__pyx_n_s_sigfd; -static PyObject *__pyx_n_s_signal; -static PyObject *__pyx_n_s_signalfd; -static PyObject *__pyx_n_s_signalmodule; -static PyObject *__pyx_n_s_signalnum; -static PyObject *__pyx_n_s_signum; -static PyObject *__pyx_n_s_split; -static PyObject *__pyx_kp_s_src_gevent_libev_corecext_pyx; -static PyObject *__pyx_n_s_start; -static PyObject *__pyx_n_s_stop; -static PyObject *__pyx_kp_s_stopped; -static PyObject *__pyx_n_s_strerror; -static PyObject *__pyx_n_s_strip; -static PyObject *__pyx_n_s_supported_backends; -static PyObject *__pyx_n_s_sys; -static PyObject *__pyx_n_s_t; -static PyObject *__pyx_n_s_tb; -static PyObject *__pyx_n_s_test; -static PyObject *__pyx_n_s_throw; -static PyObject *__pyx_n_s_time; -static PyObject *__pyx_n_s_trace; -static PyObject *__pyx_n_s_traceback; -static PyObject *__pyx_n_s_type; -static PyObject *__pyx_n_s_update; -static PyObject *__pyx_n_s_update_now; -static PyObject *__pyx_n_s_v; -static PyObject *__pyx_n_s_value; -static PyObject *__pyx_n_s_version_info; -static PyObject *__pyx_n_s_win32; -static PyObject *__pyx_pf_6gevent_5libev_8corecext_22genexpr(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_11_EVENTSType___repr__(CYTHON_UNUSED struct __pyx_obj_6gevent_5libev_8corecext__EVENTSType *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_get_version(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_2get_header_version(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4_flags_to_list(CYTHON_UNUSED PyObject *__pyx_self, unsigned int __pyx_v_flags); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_6_flags_to_int(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_flags); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_8_check_flags(CYTHON_UNUSED PyObject *__pyx_self, unsigned int __pyx_v_flags); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_10_events_to_str(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_events); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_12supported_backends(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_14recommended_backends(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_16embeddable_backends(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_18time(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_8callback___init__(struct PyGeventCallbackObject *__pyx_v_self, PyObject *__pyx_v_callback, PyObject *__pyx_v_args); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_8callback_2stop(struct PyGeventCallbackObject *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_8callback_4__nonzero__(struct PyGeventCallbackObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_8callback_7pending___get__(struct PyGeventCallbackObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_8callback_6__repr__(struct PyGeventCallbackObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_8callback_8_format(CYTHON_UNUSED struct PyGeventCallbackObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_8callback_8callback___get__(struct PyGeventCallbackObject *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_8callback_8callback_2__set__(struct PyGeventCallbackObject *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_8callback_8callback_4__del__(struct PyGeventCallbackObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_8callback_4args___get__(struct PyGeventCallbackObject *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_8callback_4args_2__set__(struct PyGeventCallbackObject *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_8callback_4args_4__del__(struct PyGeventCallbackObject *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_12CallbackFIFO___init__(struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_12CallbackFIFO_2__nonzero__(struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *__pyx_v_self); /* proto */ -static Py_ssize_t __pyx_pf_6gevent_5libev_8corecext_12CallbackFIFO_4__len__(struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_12CallbackFIFO_6__iter__(struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_12CallbackFIFO_8__repr__(struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_4loop___cinit__(struct PyGeventLoopObject *__pyx_v_self, PyObject *__pyx_v_flags, PyObject *__pyx_v_default, intptr_t __pyx_v_ptr); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_4loop_2__init__(struct PyGeventLoopObject *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_flags, CYTHON_UNUSED PyObject *__pyx_v_default, CYTHON_UNUSED intptr_t __pyx_v_ptr); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_4destroy(struct PyGeventLoopObject *__pyx_v_self); /* proto */ -static void __pyx_pf_6gevent_5libev_8corecext_4loop_6__dealloc__(struct PyGeventLoopObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_3ptr___get__(struct PyGeventLoopObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_11WatcherType___get__(CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_6MAXPRI___get__(CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_6MINPRI___get__(CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_8_handle_syserr(struct PyGeventLoopObject *__pyx_v_self, PyObject *__pyx_v_message, PyObject *__pyx_v_errno); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_10handle_error(struct PyGeventLoopObject *__pyx_v_self, PyObject *__pyx_v_context, PyObject *__pyx_v_type, PyObject *__pyx_v_value, PyObject *__pyx_v_tb); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_12_default_handle_error(struct PyGeventLoopObject *__pyx_v_self, PyObject *__pyx_v_context, PyObject *__pyx_v_type, PyObject *__pyx_v_value, PyObject *__pyx_v_tb); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_14run(struct PyGeventLoopObject *__pyx_v_self, PyObject *__pyx_v_nowait, PyObject *__pyx_v_once); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_16reinit(struct PyGeventLoopObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_18ref(struct PyGeventLoopObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_20unref(struct PyGeventLoopObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_22break_(struct PyGeventLoopObject *__pyx_v_self, int __pyx_v_how); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_24verify(struct PyGeventLoopObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_26now(struct PyGeventLoopObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_28update_now(struct PyGeventLoopObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_30__repr__(struct PyGeventLoopObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_7default___get__(struct PyGeventLoopObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_9iteration___get__(struct PyGeventLoopObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_5depth___get__(struct PyGeventLoopObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_11backend_int___get__(struct PyGeventLoopObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_7backend___get__(struct PyGeventLoopObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_10pendingcnt___get__(struct PyGeventLoopObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_32io(struct PyGeventLoopObject *__pyx_v_self, vfd_socket_t __pyx_v_fd, int __pyx_v_events, PyObject *__pyx_v_ref, PyObject *__pyx_v_priority); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_34timer(struct PyGeventLoopObject *__pyx_v_self, double __pyx_v_after, double __pyx_v_repeat, PyObject *__pyx_v_ref, PyObject *__pyx_v_priority); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_36signal(struct PyGeventLoopObject *__pyx_v_self, int __pyx_v_signum, PyObject *__pyx_v_ref, PyObject *__pyx_v_priority); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_38idle(struct PyGeventLoopObject *__pyx_v_self, PyObject *__pyx_v_ref, PyObject *__pyx_v_priority); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_40prepare(struct PyGeventLoopObject *__pyx_v_self, PyObject *__pyx_v_ref, PyObject *__pyx_v_priority); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_42check(struct PyGeventLoopObject *__pyx_v_self, PyObject *__pyx_v_ref, PyObject *__pyx_v_priority); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_44fork(struct PyGeventLoopObject *__pyx_v_self, PyObject *__pyx_v_ref, PyObject *__pyx_v_priority); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_46async_(struct PyGeventLoopObject *__pyx_v_self, PyObject *__pyx_v_ref, PyObject *__pyx_v_priority); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_48child(struct PyGeventLoopObject *__pyx_v_self, int __pyx_v_pid, int __pyx_v_trace, PyObject *__pyx_v_ref); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_50install_sigchld(CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_52reset_sigchld(CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_54stat(struct PyGeventLoopObject *__pyx_v_self, PyObject *__pyx_v_path, float __pyx_v_interval, PyObject *__pyx_v_ref, PyObject *__pyx_v_priority); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_56run_callback(struct PyGeventLoopObject *__pyx_v_self, PyObject *__pyx_v_func, PyObject *__pyx_v_args); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_58_format(struct PyGeventLoopObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_60_format_details(struct PyGeventLoopObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_62fileno(struct PyGeventLoopObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_9activecnt___get__(struct PyGeventLoopObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_11sig_pending___get__(struct PyGeventLoopObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_9origflags___get__(struct PyGeventLoopObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_13origflags_int___get__(struct PyGeventLoopObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_5sigfd___get__(struct PyGeventLoopObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_13error_handler___get__(struct PyGeventLoopObject *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_4loop_13error_handler_2__set__(struct PyGeventLoopObject *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_4loop_13error_handler_4__del__(struct PyGeventLoopObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_10_callbacks___get__(struct PyGeventLoopObject *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_4loop_10_callbacks_2__set__(struct PyGeventLoopObject *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_4loop_10_callbacks_4__del__(struct PyGeventLoopObject *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_7watcher___init__(struct PyGeventWatcherObject *__pyx_v_self, struct PyGeventLoopObject *__pyx_v_loop, PyObject *__pyx_v_ref, PyObject *__pyx_v_priority); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_7watcher_3ref___get__(struct PyGeventWatcherObject *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_7watcher_3ref_2__set__(struct PyGeventWatcherObject *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_7watcher_8callback___get__(struct PyGeventWatcherObject *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_7watcher_8callback_2__set__(struct PyGeventWatcherObject *__pyx_v_self, PyObject *__pyx_v_callback); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_7watcher_8priority___get__(struct PyGeventWatcherObject *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_7watcher_8priority_2__set__(struct PyGeventWatcherObject *__pyx_v_self, int __pyx_v_priority); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_7watcher_6active___get__(struct PyGeventWatcherObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_7watcher_7pending___get__(struct PyGeventWatcherObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_7watcher_2start(struct PyGeventWatcherObject *__pyx_v_self, PyObject *__pyx_v_callback, PyObject *__pyx_v_args); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_7watcher_4stop(struct PyGeventWatcherObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_7watcher_6feed(struct PyGeventWatcherObject *__pyx_v_self, int __pyx_v_revents, PyObject *__pyx_v_callback, PyObject *__pyx_v_args); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_7watcher_8__repr__(struct PyGeventWatcherObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_7watcher_10_format(CYTHON_UNUSED struct PyGeventWatcherObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_7watcher_12close(struct PyGeventWatcherObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_7watcher_14__enter__(struct PyGeventWatcherObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_7watcher_16__exit__(struct PyGeventWatcherObject *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_t, CYTHON_UNUSED PyObject *__pyx_v_v, CYTHON_UNUSED PyObject *__pyx_v_tb); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_7watcher_4loop___get__(struct PyGeventWatcherObject *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_7watcher_4loop_2__set__(struct PyGeventWatcherObject *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_7watcher_4loop_4__del__(struct PyGeventWatcherObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_7watcher_4args___get__(struct PyGeventWatcherObject *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_7watcher_4args_2__set__(struct PyGeventWatcherObject *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_7watcher_4args_4__del__(struct PyGeventWatcherObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_7watcher_6_flags___get__(struct PyGeventWatcherObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_2io_start(struct PyGeventIOObject *__pyx_v_self, PyObject *__pyx_v_callback, PyObject *__pyx_v_pass_events, PyObject *__pyx_v_args); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_2io_2__init__(struct PyGeventIOObject *__pyx_v_self, struct PyGeventLoopObject *__pyx_v_loop, CYTHON_UNUSED vfd_socket_t __pyx_v_fd, CYTHON_UNUSED int __pyx_v_events, PyObject *__pyx_v_ref, PyObject *__pyx_v_priority); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_2io_4__cinit__(struct PyGeventIOObject *__pyx_v_self, CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_loop, vfd_socket_t __pyx_v_fd, int __pyx_v_events, CYTHON_UNUSED PyObject *__pyx_v_ref, CYTHON_UNUSED PyObject *__pyx_v_priority); /* proto */ -static void __pyx_pf_6gevent_5libev_8corecext_2io_6__dealloc__(struct PyGeventIOObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_2io_2fd___get__(struct PyGeventIOObject *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_2io_2fd_2__set__(struct PyGeventIOObject *__pyx_v_self, long __pyx_v_fd); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_2io_6events___get__(struct PyGeventIOObject *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_2io_6events_2__set__(struct PyGeventIOObject *__pyx_v_self, int __pyx_v_events); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_2io_10events_str___get__(struct PyGeventIOObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_2io_8_format(struct PyGeventIOObject *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_5timer___cinit__(struct PyGeventTimerObject *__pyx_v_self, CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_loop, double __pyx_v_after, double __pyx_v_repeat, CYTHON_UNUSED PyObject *__pyx_v_ref, CYTHON_UNUSED PyObject *__pyx_v_priority); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_5timer_2__init__(struct PyGeventTimerObject *__pyx_v_self, struct PyGeventLoopObject *__pyx_v_loop, CYTHON_UNUSED double __pyx_v_after, CYTHON_UNUSED double __pyx_v_repeat, PyObject *__pyx_v_ref, PyObject *__pyx_v_priority); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_5timer_4start(struct PyGeventTimerObject *__pyx_v_self, PyObject *__pyx_v_callback, PyObject *__pyx_v_update, PyObject *__pyx_v_args); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_5timer_2at___get__(struct PyGeventTimerObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_5timer_6again(struct PyGeventTimerObject *__pyx_v_self, PyObject *__pyx_v_callback, PyObject *__pyx_v_update, PyObject *__pyx_v_args); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_6signal___cinit__(struct PyGeventSignalObject *__pyx_v_self, CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_loop, int __pyx_v_signalnum, CYTHON_UNUSED PyObject *__pyx_v_ref, CYTHON_UNUSED PyObject *__pyx_v_priority); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_6signal_2__init__(struct PyGeventSignalObject *__pyx_v_self, struct PyGeventLoopObject *__pyx_v_loop, CYTHON_UNUSED int __pyx_v_signalnum, PyObject *__pyx_v_ref, PyObject *__pyx_v_priority); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_4idle___cinit__(struct PyGeventIdleObject *__pyx_v_self, CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_loop, CYTHON_UNUSED PyObject *__pyx_v_ref, CYTHON_UNUSED PyObject *__pyx_v_priority); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_7prepare___cinit__(struct PyGeventPrepareObject *__pyx_v_self, CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_loop, CYTHON_UNUSED PyObject *__pyx_v_ref, CYTHON_UNUSED PyObject *__pyx_v_priority); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_5check___cinit__(struct PyGeventCheckObject *__pyx_v_self, CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_loop, CYTHON_UNUSED PyObject *__pyx_v_ref, CYTHON_UNUSED PyObject *__pyx_v_priority); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_4fork___cinit__(struct PyGeventForkObject *__pyx_v_self, CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_loop, CYTHON_UNUSED PyObject *__pyx_v_ref, CYTHON_UNUSED PyObject *__pyx_v_priority); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_6async__7pending___get__(struct PyGeventAsyncObject *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_6async____cinit__(struct PyGeventAsyncObject *__pyx_v_self, CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_loop, CYTHON_UNUSED PyObject *__pyx_v_ref, CYTHON_UNUSED PyObject *__pyx_v_priority); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_6async__2send(struct PyGeventAsyncObject *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_5child___cinit__(struct PyGeventChildObject *__pyx_v_self, struct PyGeventLoopObject *__pyx_v_loop, int __pyx_v_pid, int __pyx_v_trace, CYTHON_UNUSED PyObject *__pyx_v_ref); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_5child_2__init__(struct PyGeventChildObject *__pyx_v_self, struct PyGeventLoopObject *__pyx_v_loop, CYTHON_UNUSED int __pyx_v_pid, CYTHON_UNUSED int __pyx_v_trace, PyObject *__pyx_v_ref); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_5child_4_format(struct PyGeventChildObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_5child_3pid___get__(struct PyGeventChildObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_5child_4rpid___get__(struct PyGeventChildObject *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_5child_4rpid_2__set__(struct PyGeventChildObject *__pyx_v_self, int __pyx_v_value); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_5child_7rstatus___get__(struct PyGeventChildObject *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_5child_7rstatus_2__set__(struct PyGeventChildObject *__pyx_v_self, int __pyx_v_value); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_4stat___cinit__(struct PyGeventStatObject *__pyx_v_self, CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_loop, PyObject *__pyx_v_path, float __pyx_v_interval, CYTHON_UNUSED PyObject *__pyx_v_ref, CYTHON_UNUSED PyObject *__pyx_v_priority); /* proto */ -static int __pyx_pf_6gevent_5libev_8corecext_4stat_2__init__(struct PyGeventStatObject *__pyx_v_self, struct PyGeventLoopObject *__pyx_v_loop, CYTHON_UNUSED PyObject *__pyx_v_path, CYTHON_UNUSED float __pyx_v_interval, PyObject *__pyx_v_ref, PyObject *__pyx_v_priority); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4stat_4attr___get__(struct PyGeventStatObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4stat_4prev___get__(struct PyGeventStatObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4stat_8interval___get__(struct PyGeventStatObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4stat_4path___get__(struct PyGeventStatObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4stat_6_paths___get__(struct PyGeventStatObject *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_5libev_8corecext_20set_syserr_cb(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback); /* proto */ -static PyObject *__pyx_tp_new_6gevent_5libev_8corecext__EVENTSType(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_5libev_8corecext_callback(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_5libev_8corecext_CallbackFIFO(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_5libev_8corecext_loop(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_5libev_8corecext_watcher(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_5libev_8corecext_io(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_5libev_8corecext_timer(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_5libev_8corecext_signal(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_5libev_8corecext_idle(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_5libev_8corecext_prepare(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_5libev_8corecext_check(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_5libev_8corecext_fork(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_5libev_8corecext_async_(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_5libev_8corecext_child(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_5libev_8corecext_stat(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_5libev_8corecext___pyx_scope_struct__genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_int_0; -static PyObject *__pyx_int_3; -static int __pyx_k__10; -static PyObject *__pyx_tuple__2; -static PyObject *__pyx_tuple__5; -static PyObject *__pyx_tuple__11; -static PyObject *__pyx_tuple__12; -static PyObject *__pyx_tuple__13; -static PyObject *__pyx_tuple__14; -static PyObject *__pyx_tuple__15; -static PyObject *__pyx_tuple__16; -static PyObject *__pyx_tuple__17; -static PyObject *__pyx_tuple__18; -static PyObject *__pyx_tuple__19; -static PyObject *__pyx_tuple__20; -static PyObject *__pyx_tuple__21; -static PyObject *__pyx_tuple__22; -static PyObject *__pyx_tuple__23; -static PyObject *__pyx_codeobj__24; -static PyObject *__pyx_codeobj__25; -static PyObject *__pyx_codeobj__26; -static PyObject *__pyx_codeobj__27; -static PyObject *__pyx_codeobj__28; -static PyObject *__pyx_codeobj__29; -/* Late includes */ -static PyObject *__pyx_gb_6gevent_5libev_8corecext_24generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ - - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_22genexpr(CYTHON_UNUSED PyObject *__pyx_self) { - struct __pyx_obj_6gevent_5libev_8corecext___pyx_scope_struct__genexpr *__pyx_cur_scope; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("genexpr", 0); - __pyx_cur_scope = (struct __pyx_obj_6gevent_5libev_8corecext___pyx_scope_struct__genexpr *)__pyx_tp_new_6gevent_5libev_8corecext___pyx_scope_struct__genexpr(__pyx_ptype_6gevent_5libev_8corecext___pyx_scope_struct__genexpr, __pyx_empty_tuple, NULL); - if (unlikely(!__pyx_cur_scope)) { - __pyx_cur_scope = ((struct __pyx_obj_6gevent_5libev_8corecext___pyx_scope_struct__genexpr *)Py_None); - __Pyx_INCREF(Py_None); - __PYX_ERR(0, 149, __pyx_L1_error) - } else { - __Pyx_GOTREF(__pyx_cur_scope); - } - { - __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_6gevent_5libev_8corecext_24generator, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_gevent_libev_corecext); if (unlikely(!gen)) __PYX_ERR(0, 149, __pyx_L1_error) - __Pyx_DECREF(__pyx_cur_scope); - __Pyx_RefNannyFinishContext(); - return (PyObject *) gen; - } - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("gevent.libev.corecext.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_DECREF(((PyObject *)__pyx_cur_scope)); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_gb_6gevent_5libev_8corecext_24generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ -{ - struct __pyx_obj_6gevent_5libev_8corecext___pyx_scope_struct__genexpr *__pyx_cur_scope = ((struct __pyx_obj_6gevent_5libev_8corecext___pyx_scope_struct__genexpr *)__pyx_generator->closure); - PyObject *__pyx_r = NULL; - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - Py_ssize_t __pyx_t_3; - PyObject *(*__pyx_t_4)(PyObject *); - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *(*__pyx_t_8)(PyObject *); - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("genexpr", 0); - switch (__pyx_generator->resume_label) { - case 0: goto __pyx_L3_first_run; - default: /* CPython raises the right error here */ - __Pyx_RefNannyFinishContext(); - return NULL; - } - __pyx_L3_first_run:; - if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 149, __pyx_L1_error) - __pyx_r = PyDict_New(); if (unlikely(!__pyx_r)) __PYX_ERR(0, 149, __pyx_L1_error) - __Pyx_GOTREF(__pyx_r); - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 149, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { - __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; - __pyx_t_4 = NULL; - } else { - __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 149, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 149, __pyx_L1_error) - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - for (;;) { - if (likely(!__pyx_t_4)) { - if (likely(PyList_CheckExact(__pyx_t_2))) { - if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 149, __pyx_L1_error) - #else - __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 149, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - #endif - } else { - if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 149, __pyx_L1_error) - #else - __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 149, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - #endif - } - } else { - __pyx_t_1 = __pyx_t_4(__pyx_t_2); - if (unlikely(!__pyx_t_1)) { - PyObject* exc_type = PyErr_Occurred(); - if (exc_type) { - if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 149, __pyx_L1_error) - } - break; - } - __Pyx_GOTREF(__pyx_t_1); - } - if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { - PyObject* sequence = __pyx_t_1; - Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); - if (unlikely(size != 2)) { - if (size > 2) __Pyx_RaiseTooManyValuesError(2); - else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 149, __pyx_L1_error) - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - if (likely(PyTuple_CheckExact(sequence))) { - __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); - __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); - } else { - __pyx_t_5 = PyList_GET_ITEM(sequence, 0); - __pyx_t_6 = PyList_GET_ITEM(sequence, 1); - } - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(__pyx_t_6); - #else - __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 149, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 149, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - #endif - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else { - Py_ssize_t index = -1; - __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 149, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext; - index = 0; __pyx_t_5 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L6_unpacking_failed; - __Pyx_GOTREF(__pyx_t_5); - index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L6_unpacking_failed; - __Pyx_GOTREF(__pyx_t_6); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 149, __pyx_L1_error) - __pyx_t_8 = NULL; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - goto __pyx_L7_unpacking_done; - __pyx_L6_unpacking_failed:; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_8 = NULL; - if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 149, __pyx_L1_error) - __pyx_L7_unpacking_done:; - } - __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_flag); - __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_flag, __pyx_t_5); - __Pyx_GIVEREF(__pyx_t_5); - __pyx_t_5 = 0; - __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_string); - __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_string, __pyx_t_6); - __Pyx_GIVEREF(__pyx_t_6); - __pyx_t_6 = 0; - if (unlikely(PyDict_SetItem(__pyx_r, (PyObject*)__pyx_cur_scope->__pyx_v_string, (PyObject*)__pyx_cur_scope->__pyx_v_flag))) __PYX_ERR(0, 149, __pyx_L1_error) - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_r); __pyx_r = 0; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_Coroutine_ResetAndClearException(__pyx_generator); - __pyx_generator->resume_label = -1; - __Pyx_Coroutine_clear((PyObject*)__pyx_generator); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} -PyObject *GEVENT_CORE_EVENTS = 0; -PyObject *_empty_tuple = 0; - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_11_EVENTSType_1__repr__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_11_EVENTSType_1__repr__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_11_EVENTSType___repr__(((struct __pyx_obj_6gevent_5libev_8corecext__EVENTSType *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_11_EVENTSType___repr__(CYTHON_UNUSED struct __pyx_obj_6gevent_5libev_8corecext__EVENTSType *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__repr__", 0); - - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_kp_s_gevent_core_EVENTS); - __pyx_r = __pyx_kp_s_gevent_core_EVENTS; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_1get_version(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyMethodDef __pyx_mdef_6gevent_5libev_8corecext_1get_version = {"get_version", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_1get_version, METH_NOARGS, 0}; -static PyObject *__pyx_pw_6gevent_5libev_8corecext_1get_version(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("get_version (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_get_version(__pyx_self); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_get_version(CYTHON_UNUSED PyObject *__pyx_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("get_version", 0); - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(ev_version_major()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 129, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyInt_From_int(ev_version_minor()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 129, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 129, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); - __pyx_t_1 = 0; - __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_libev_d_02d, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 129, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent.libev.corecext.get_version", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_3get_header_version(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyMethodDef __pyx_mdef_6gevent_5libev_8corecext_3get_header_version = {"get_header_version", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_3get_header_version, METH_NOARGS, 0}; -static PyObject *__pyx_pw_6gevent_5libev_8corecext_3get_header_version(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("get_header_version (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_2get_header_version(__pyx_self); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_2get_header_version(CYTHON_UNUSED PyObject *__pyx_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("get_header_version", 0); - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(EV_VERSION_MAJOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 133, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyInt_From_int(EV_VERSION_MINOR); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 133, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 133, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); - __pyx_t_1 = 0; - __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_libev_d_02d, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 133, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent.libev.corecext.get_header_version", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -static PyObject *__pyx_pw_6gevent_5libev_8corecext_5_flags_to_list(PyObject *__pyx_self, PyObject *__pyx_arg_flags); /*proto*/ -static PyObject *__pyx_f_6gevent_5libev_8corecext__flags_to_list(unsigned int __pyx_v_flags, CYTHON_UNUSED int __pyx_skip_dispatch) { - PyObject *__pyx_v_result = 0; - PyObject *__pyx_v_code = NULL; - PyObject *__pyx_v_value = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - Py_ssize_t __pyx_t_3; - PyObject *(*__pyx_t_4)(PyObject *); - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *(*__pyx_t_8)(PyObject *); - int __pyx_t_9; - int __pyx_t_10; - unsigned int __pyx_t_11; - __Pyx_RefNannySetupContext("_flags_to_list", 0); - - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 171, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_result = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 172, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { - __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; - __pyx_t_4 = NULL; - } else { - __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 172, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 172, __pyx_L1_error) - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - for (;;) { - if (likely(!__pyx_t_4)) { - if (likely(PyList_CheckExact(__pyx_t_2))) { - if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 172, __pyx_L1_error) - #else - __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 172, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - #endif - } else { - if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 172, __pyx_L1_error) - #else - __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 172, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - #endif - } - } else { - __pyx_t_1 = __pyx_t_4(__pyx_t_2); - if (unlikely(!__pyx_t_1)) { - PyObject* exc_type = PyErr_Occurred(); - if (exc_type) { - if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 172, __pyx_L1_error) - } - break; - } - __Pyx_GOTREF(__pyx_t_1); - } - if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { - PyObject* sequence = __pyx_t_1; - Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); - if (unlikely(size != 2)) { - if (size > 2) __Pyx_RaiseTooManyValuesError(2); - else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 172, __pyx_L1_error) - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - if (likely(PyTuple_CheckExact(sequence))) { - __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); - __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); - } else { - __pyx_t_5 = PyList_GET_ITEM(sequence, 0); - __pyx_t_6 = PyList_GET_ITEM(sequence, 1); - } - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(__pyx_t_6); - #else - __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 172, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 172, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - #endif - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else { - Py_ssize_t index = -1; - __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 172, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext; - index = 0; __pyx_t_5 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed; - __Pyx_GOTREF(__pyx_t_5); - index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed; - __Pyx_GOTREF(__pyx_t_6); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 172, __pyx_L1_error) - __pyx_t_8 = NULL; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - goto __pyx_L6_unpacking_done; - __pyx_L5_unpacking_failed:; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_8 = NULL; - if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 172, __pyx_L1_error) - __pyx_L6_unpacking_done:; - } - __Pyx_XDECREF_SET(__pyx_v_code, __pyx_t_5); - __pyx_t_5 = 0; - __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_6); - __pyx_t_6 = 0; - - __pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 173, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_6 = PyNumber_And(__pyx_t_1, __pyx_v_code); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 173, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 173, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (__pyx_t_9) { - - __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_result, __pyx_v_value); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 174, __pyx_L1_error) - - } - - __pyx_t_6 = __Pyx_PyInt_From_unsigned_int(__pyx_v_flags); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 175, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_1 = PyNumber_Invert(__pyx_v_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 175, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = PyNumber_InPlaceAnd(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 175, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_11 = __Pyx_PyInt_As_unsigned_int(__pyx_t_5); if (unlikely((__pyx_t_11 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 175, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_v_flags = __pyx_t_11; - - __pyx_t_9 = ((!(__pyx_v_flags != 0)) != 0); - if (__pyx_t_9) { - - goto __pyx_L4_break; - - } - - } - __pyx_L4_break:; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_9 = (__pyx_v_flags != 0); - if (__pyx_t_9) { - - __pyx_t_2 = __Pyx_PyInt_From_unsigned_int(__pyx_v_flags); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 179, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_2); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 179, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - } - - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_result); - __pyx_r = __pyx_v_result; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("gevent.libev.corecext._flags_to_list", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_result); - __Pyx_XDECREF(__pyx_v_code); - __Pyx_XDECREF(__pyx_v_value); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_5_flags_to_list(PyObject *__pyx_self, PyObject *__pyx_arg_flags); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_5_flags_to_list(PyObject *__pyx_self, PyObject *__pyx_arg_flags) { - unsigned int __pyx_v_flags; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_flags_to_list (wrapper)", 0); - assert(__pyx_arg_flags); { - __pyx_v_flags = __Pyx_PyInt_As_unsigned_int(__pyx_arg_flags); if (unlikely((__pyx_v_flags == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 170, __pyx_L3_error) - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext._flags_to_list", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4_flags_to_list(__pyx_self, ((unsigned int)__pyx_v_flags)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4_flags_to_list(CYTHON_UNUSED PyObject *__pyx_self, unsigned int __pyx_v_flags) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_flags_to_list", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_5libev_8corecext__flags_to_list(__pyx_v_flags, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 170, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext._flags_to_list", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -static PyObject *__pyx_pw_6gevent_5libev_8corecext_7_flags_to_int(PyObject *__pyx_self, PyObject *__pyx_v_flags); /*proto*/ -static unsigned int __pyx_f_6gevent_5libev_8corecext__flags_to_int(PyObject *__pyx_v_flags, CYTHON_UNUSED int __pyx_skip_dispatch) { - unsigned int __pyx_v_result; - PyObject *__pyx_v_value = NULL; - PyObject *__pyx_v_ex = NULL; - unsigned int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - unsigned int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - Py_ssize_t __pyx_t_9; - PyObject *(*__pyx_t_10)(PyObject *); - PyObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; - PyObject *__pyx_t_13 = NULL; - int __pyx_t_14; - PyObject *__pyx_t_15 = NULL; - PyObject *__pyx_t_16 = NULL; - int __pyx_t_17; - __Pyx_RefNannySetupContext("_flags_to_int", 0); - __Pyx_INCREF(__pyx_v_flags); - - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_flags); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 191, __pyx_L1_error) - __pyx_t_2 = ((!__pyx_t_1) != 0); - if (__pyx_t_2) { - - __pyx_r = 0; - goto __pyx_L0; - - } - - __pyx_t_3 = __pyx_v_6gevent_5libev_8corecext_integer_types; - __Pyx_INCREF(__pyx_t_3); - __pyx_t_2 = PyObject_IsInstance(__pyx_v_flags, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 193, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_1 = (__pyx_t_2 != 0); - if (__pyx_t_1) { - - __pyx_t_4 = __Pyx_PyInt_As_unsigned_int(__pyx_v_flags); if (unlikely((__pyx_t_4 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 194, __pyx_L1_error) - __pyx_r = __pyx_t_4; - goto __pyx_L0; - - } - - __pyx_v_result = 0; - - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7); - __Pyx_XGOTREF(__pyx_t_5); - __Pyx_XGOTREF(__pyx_t_6); - __Pyx_XGOTREF(__pyx_t_7); - /*try:*/ { - - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_basestring); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 197, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = PyObject_IsInstance(__pyx_v_flags, __pyx_t_3); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 197, __pyx_L5_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_2 = (__pyx_t_1 != 0); - if (__pyx_t_2) { - - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_flags, __pyx_n_s_split); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 198, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 198, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF_SET(__pyx_v_flags, __pyx_t_8); - __pyx_t_8 = 0; - - } - - if (likely(PyList_CheckExact(__pyx_v_flags)) || PyTuple_CheckExact(__pyx_v_flags)) { - __pyx_t_8 = __pyx_v_flags; __Pyx_INCREF(__pyx_t_8); __pyx_t_9 = 0; - __pyx_t_10 = NULL; - } else { - __pyx_t_9 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_v_flags); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 199, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_10 = Py_TYPE(__pyx_t_8)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 199, __pyx_L5_error) - } - for (;;) { - if (likely(!__pyx_t_10)) { - if (likely(PyList_CheckExact(__pyx_t_8))) { - if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_8)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_9); __Pyx_INCREF(__pyx_t_3); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 199, __pyx_L5_error) - #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_8, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 199, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_3); - #endif - } else { - if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_8)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_9); __Pyx_INCREF(__pyx_t_3); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 199, __pyx_L5_error) - #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_8, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 199, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_3); - #endif - } - } else { - __pyx_t_3 = __pyx_t_10(__pyx_t_8); - if (unlikely(!__pyx_t_3)) { - PyObject* exc_type = PyErr_Occurred(); - if (exc_type) { - if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 199, __pyx_L5_error) - } - break; - } - __Pyx_GOTREF(__pyx_t_3); - } - __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_3); - __pyx_t_3 = 0; - - __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_strip); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 200, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_12); - __pyx_t_13 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_12))) { - __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12); - if (likely(__pyx_t_13)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); - __Pyx_INCREF(__pyx_t_13); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_12, function); - } - } - if (__pyx_t_13) { - __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 200, __pyx_L5_error) - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - } else { - __pyx_t_11 = __Pyx_PyObject_CallNoArg(__pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 200, __pyx_L5_error) - } - __Pyx_GOTREF(__pyx_t_11); - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_lower); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 200, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_12); - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_11 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_12))) { - __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_12); - if (likely(__pyx_t_11)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); - __Pyx_INCREF(__pyx_t_11); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_12, function); - } - } - if (__pyx_t_11) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 200, __pyx_L5_error) - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 200, __pyx_L5_error) - } - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_3); - __pyx_t_3 = 0; - - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 201, __pyx_L5_error) - if (__pyx_t_2) { - - __pyx_t_3 = __Pyx_PyInt_From_unsigned_int(__pyx_v_result); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 202, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_flags_str2int); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 202, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_12); - __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_12, __pyx_v_value); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 202, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_11); - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __pyx_t_12 = PyNumber_InPlaceOr(__pyx_t_3, __pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 202, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_12); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_4 = __Pyx_PyInt_As_unsigned_int(__pyx_t_12); if (unlikely((__pyx_t_4 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 202, __pyx_L5_error) - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __pyx_v_result = __pyx_t_4; - - } - - } - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - - } - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - goto __pyx_L10_try_end; - __pyx_L5_error:; - __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - - __pyx_t_14 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError); - if (__pyx_t_14) { - __Pyx_AddTraceback("gevent.libev.corecext._flags_to_int", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_12, &__pyx_t_11) < 0) __PYX_ERR(0, 203, __pyx_L7_except_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_GOTREF(__pyx_t_12); - __Pyx_GOTREF(__pyx_t_11); - __Pyx_INCREF(__pyx_t_12); - __pyx_v_ex = __pyx_t_12; - - __pyx_t_15 = __Pyx_GetModuleGlobalName(__pyx_n_s_flags_str2int); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 204, __pyx_L7_except_error) - __Pyx_GOTREF(__pyx_t_15); - __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_keys); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 204, __pyx_L7_except_error) - __Pyx_GOTREF(__pyx_t_16); - __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; - __pyx_t_15 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_16))) { - __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_16); - if (likely(__pyx_t_15)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_16); - __Pyx_INCREF(__pyx_t_15); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_16, function); - } - } - if (__pyx_t_15) { - __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_t_16, __pyx_t_15); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 204, __pyx_L7_except_error) - __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; - } else { - __pyx_t_13 = __Pyx_PyObject_CallNoArg(__pyx_t_16); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 204, __pyx_L7_except_error) - } - __Pyx_GOTREF(__pyx_t_13); - __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; - __pyx_t_16 = PySequence_List(__pyx_t_13); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 204, __pyx_L7_except_error) - __Pyx_GOTREF(__pyx_t_16); - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - __pyx_t_3 = ((PyObject*)__pyx_t_16); - __pyx_t_16 = 0; - __pyx_t_17 = PyList_Sort(__pyx_t_3); if (unlikely(__pyx_t_17 == ((int)-1))) __PYX_ERR(0, 204, __pyx_L7_except_error) - __pyx_t_16 = __Pyx_PyString_Join(__pyx_kp_s__3, __pyx_t_3); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 204, __pyx_L7_except_error) - __Pyx_GOTREF(__pyx_t_16); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 204, __pyx_L7_except_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_INCREF(__pyx_v_ex); - __Pyx_GIVEREF(__pyx_v_ex); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_ex); - __Pyx_GIVEREF(__pyx_t_16); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_16); - __pyx_t_16 = 0; - __pyx_t_16 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_backend_or_flag_s_Possib, __pyx_t_3); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 204, __pyx_L7_except_error) - __Pyx_GOTREF(__pyx_t_16); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 204, __pyx_L7_except_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 204, __pyx_L7_except_error) - } - goto __pyx_L7_except_error; - __pyx_L7_except_error:; - - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); - goto __pyx_L1_error; - __pyx_L10_try_end:; - } - - __pyx_r = __pyx_v_result; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_XDECREF(__pyx_t_11); - __Pyx_XDECREF(__pyx_t_12); - __Pyx_XDECREF(__pyx_t_13); - __Pyx_XDECREF(__pyx_t_15); - __Pyx_XDECREF(__pyx_t_16); - __Pyx_AddTraceback("gevent.libev.corecext._flags_to_int", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_value); - __Pyx_XDECREF(__pyx_v_ex); - __Pyx_XDECREF(__pyx_v_flags); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_7_flags_to_int(PyObject *__pyx_self, PyObject *__pyx_v_flags); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_7_flags_to_int(PyObject *__pyx_self, PyObject *__pyx_v_flags) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_flags_to_int (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_6_flags_to_int(__pyx_self, ((PyObject *)__pyx_v_flags)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_6_flags_to_int(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_flags) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - unsigned int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("_flags_to_int", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_5libev_8corecext__flags_to_int(__pyx_v_flags, 0); if (unlikely(__pyx_t_1 == ((unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 189, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_From_unsigned_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 189, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent.libev.corecext._flags_to_int", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -static PyObject *__pyx_f_6gevent_5libev_8corecext__str_hex(PyObject *__pyx_v_flag) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - int __pyx_t_3; - __Pyx_RefNannySetupContext("_str_hex", 0); - - __pyx_t_1 = __pyx_v_6gevent_5libev_8corecext_integer_types; - __Pyx_INCREF(__pyx_t_1); - __pyx_t_2 = PyObject_IsInstance(__pyx_v_flag, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 209, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_3 = (__pyx_t_2 != 0); - if (__pyx_t_3) { - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_hex, __pyx_v_flag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 210, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 210, __pyx_L1_error) - __pyx_r = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - goto __pyx_L0; - - } - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyString_Type)), __pyx_v_flag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 211, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 211, __pyx_L1_error) - __pyx_r = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext._str_hex", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -static PyObject *__pyx_pw_6gevent_5libev_8corecext_9_check_flags(PyObject *__pyx_self, PyObject *__pyx_arg_flags); /*proto*/ -static PyObject *__pyx_f_6gevent_5libev_8corecext__check_flags(unsigned int __pyx_v_flags, CYTHON_UNUSED int __pyx_skip_dispatch) { - PyObject *__pyx_v_as_list = 0; - PyObject *__pyx_v_x = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - Py_ssize_t __pyx_t_5; - PyObject *(*__pyx_t_6)(PyObject *); - __Pyx_RefNannySetupContext("_check_flags", 0); - - __pyx_v_flags = (__pyx_v_flags & EVBACKEND_MASK); - - __pyx_t_1 = ((!(__pyx_v_flags != 0)) != 0); - if (__pyx_t_1) { - - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - } - - __pyx_t_1 = ((!((__pyx_v_flags & EVBACKEND_ALL) != 0)) != 0); - if (unlikely(__pyx_t_1)) { - - __pyx_t_2 = __Pyx_PyInt_From_unsigned_int(__pyx_v_flags); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 220, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_value_for_backend_0x_x, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 220, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 220, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 220, __pyx_L1_error) - - } - - __pyx_t_1 = ((!((__pyx_v_flags & ev_supported_backends()) != 0)) != 0); - if (unlikely(__pyx_t_1)) { - - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 222, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __pyx_f_6gevent_5libev_8corecext__flags_to_list(__pyx_v_flags, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 222, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { - __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0; - __pyx_t_6 = NULL; - } else { - __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 222, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 222, __pyx_L1_error) - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - for (;;) { - if (likely(!__pyx_t_6)) { - if (likely(PyList_CheckExact(__pyx_t_4))) { - if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_4)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 222, __pyx_L1_error) - #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 222, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - #endif - } else { - if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_4)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 222, __pyx_L1_error) - #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 222, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - #endif - } - } else { - __pyx_t_3 = __pyx_t_6(__pyx_t_4); - if (unlikely(!__pyx_t_3)) { - PyObject* exc_type = PyErr_Occurred(); - if (exc_type) { - if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 222, __pyx_L1_error) - } - break; - } - __Pyx_GOTREF(__pyx_t_3); - } - __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_3); - __pyx_t_3 = 0; - __pyx_t_3 = __pyx_f_6gevent_5libev_8corecext__str_hex(__pyx_v_x); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 222, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 222, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_v_as_list = ((PyObject*)__pyx_t_2); - __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyString_Join(__pyx_kp_s__4, __pyx_v_as_list); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 223, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Unsupported_backend_s, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 223, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 223, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 223, __pyx_L1_error) - - } - - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent.libev.corecext._check_flags", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_as_list); - __Pyx_XDECREF(__pyx_v_x); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_9_check_flags(PyObject *__pyx_self, PyObject *__pyx_arg_flags); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_9_check_flags(PyObject *__pyx_self, PyObject *__pyx_arg_flags) { - unsigned int __pyx_v_flags; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_check_flags (wrapper)", 0); - assert(__pyx_arg_flags); { - __pyx_v_flags = __Pyx_PyInt_As_unsigned_int(__pyx_arg_flags); if (unlikely((__pyx_v_flags == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 214, __pyx_L3_error) - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext._check_flags", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_8_check_flags(__pyx_self, ((unsigned int)__pyx_v_flags)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_8_check_flags(CYTHON_UNUSED PyObject *__pyx_self, unsigned int __pyx_v_flags) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_check_flags", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_5libev_8corecext__check_flags(__pyx_v_flags, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 214, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext._check_flags", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -static PyObject *__pyx_pw_6gevent_5libev_8corecext_11_events_to_str(PyObject *__pyx_self, PyObject *__pyx_arg_events); /*proto*/ -static PyObject *__pyx_f_6gevent_5libev_8corecext__events_to_str(int __pyx_v_events, CYTHON_UNUSED int __pyx_skip_dispatch) { - PyObject *__pyx_v_result = 0; - int __pyx_v_c_flag; - PyObject *__pyx_v_flag = NULL; - PyObject *__pyx_v_string = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - Py_ssize_t __pyx_t_3; - PyObject *(*__pyx_t_4)(PyObject *); - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *(*__pyx_t_8)(PyObject *); - int __pyx_t_9; - int __pyx_t_10; - int __pyx_t_11; - __Pyx_RefNannySetupContext("_events_to_str", 0); - - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 227, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_result = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_events); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 229, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { - __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; - __pyx_t_4 = NULL; - } else { - __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 229, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 229, __pyx_L1_error) - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - for (;;) { - if (likely(!__pyx_t_4)) { - if (likely(PyList_CheckExact(__pyx_t_2))) { - if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 229, __pyx_L1_error) - #else - __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 229, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - #endif - } else { - if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 229, __pyx_L1_error) - #else - __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 229, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - #endif - } - } else { - __pyx_t_1 = __pyx_t_4(__pyx_t_2); - if (unlikely(!__pyx_t_1)) { - PyObject* exc_type = PyErr_Occurred(); - if (exc_type) { - if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 229, __pyx_L1_error) - } - break; - } - __Pyx_GOTREF(__pyx_t_1); - } - if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { - PyObject* sequence = __pyx_t_1; - Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); - if (unlikely(size != 2)) { - if (size > 2) __Pyx_RaiseTooManyValuesError(2); - else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 229, __pyx_L1_error) - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - if (likely(PyTuple_CheckExact(sequence))) { - __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); - __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); - } else { - __pyx_t_5 = PyList_GET_ITEM(sequence, 0); - __pyx_t_6 = PyList_GET_ITEM(sequence, 1); - } - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(__pyx_t_6); - #else - __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 229, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 229, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - #endif - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else { - Py_ssize_t index = -1; - __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 229, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext; - index = 0; __pyx_t_5 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed; - __Pyx_GOTREF(__pyx_t_5); - index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed; - __Pyx_GOTREF(__pyx_t_6); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 229, __pyx_L1_error) - __pyx_t_8 = NULL; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - goto __pyx_L6_unpacking_done; - __pyx_L5_unpacking_failed:; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_8 = NULL; - if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 229, __pyx_L1_error) - __pyx_L6_unpacking_done:; - } - __Pyx_XDECREF_SET(__pyx_v_flag, __pyx_t_5); - __pyx_t_5 = 0; - __Pyx_XDECREF_SET(__pyx_v_string, __pyx_t_6); - __pyx_t_6 = 0; - - __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_flag); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 230, __pyx_L1_error) - __pyx_v_c_flag = __pyx_t_9; - - __pyx_t_10 = ((__pyx_v_events & __pyx_v_c_flag) != 0); - if (__pyx_t_10) { - - __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_result, __pyx_v_string); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 232, __pyx_L1_error) - - __pyx_v_events = (__pyx_v_events & (~__pyx_v_c_flag)); - - } - - __pyx_t_10 = ((!(__pyx_v_events != 0)) != 0); - if (__pyx_t_10) { - - goto __pyx_L4_break; - - } - - } - __pyx_L4_break:; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_10 = (__pyx_v_events != 0); - if (__pyx_t_10) { - - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_events); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 237, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_hex, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 237, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_1); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 237, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - } - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyString_Join(__pyx_kp_s__4, __pyx_v_result); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 238, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("gevent.libev.corecext._events_to_str", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_result); - __Pyx_XDECREF(__pyx_v_flag); - __Pyx_XDECREF(__pyx_v_string); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_11_events_to_str(PyObject *__pyx_self, PyObject *__pyx_arg_events); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_11_events_to_str(PyObject *__pyx_self, PyObject *__pyx_arg_events) { - int __pyx_v_events; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_events_to_str (wrapper)", 0); - assert(__pyx_arg_events); { - __pyx_v_events = __Pyx_PyInt_As_int(__pyx_arg_events); if (unlikely((__pyx_v_events == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 226, __pyx_L3_error) - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext._events_to_str", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_10_events_to_str(__pyx_self, ((int)__pyx_v_events)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_10_events_to_str(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_events) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_events_to_str", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_5libev_8corecext__events_to_str(__pyx_v_events, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 226, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext._events_to_str", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_13supported_backends(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyMethodDef __pyx_mdef_6gevent_5libev_8corecext_13supported_backends = {"supported_backends", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_13supported_backends, METH_NOARGS, 0}; -static PyObject *__pyx_pw_6gevent_5libev_8corecext_13supported_backends(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("supported_backends (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_12supported_backends(__pyx_self); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_12supported_backends(CYTHON_UNUSED PyObject *__pyx_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("supported_backends", 0); - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_5libev_8corecext__flags_to_list(ev_supported_backends(), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 242, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext.supported_backends", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_15recommended_backends(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyMethodDef __pyx_mdef_6gevent_5libev_8corecext_15recommended_backends = {"recommended_backends", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_15recommended_backends, METH_NOARGS, 0}; -static PyObject *__pyx_pw_6gevent_5libev_8corecext_15recommended_backends(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("recommended_backends (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_14recommended_backends(__pyx_self); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_14recommended_backends(CYTHON_UNUSED PyObject *__pyx_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("recommended_backends", 0); - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_5libev_8corecext__flags_to_list(ev_recommended_backends(), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 246, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext.recommended_backends", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_17embeddable_backends(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyMethodDef __pyx_mdef_6gevent_5libev_8corecext_17embeddable_backends = {"embeddable_backends", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_17embeddable_backends, METH_NOARGS, 0}; -static PyObject *__pyx_pw_6gevent_5libev_8corecext_17embeddable_backends(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("embeddable_backends (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_16embeddable_backends(__pyx_self); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_16embeddable_backends(CYTHON_UNUSED PyObject *__pyx_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("embeddable_backends", 0); - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_5libev_8corecext__flags_to_list(ev_embeddable_backends(), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 250, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext.embeddable_backends", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_19time(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyMethodDef __pyx_mdef_6gevent_5libev_8corecext_19time = {"time", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_19time, METH_NOARGS, 0}; -static PyObject *__pyx_pw_6gevent_5libev_8corecext_19time(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("time (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_18time(__pyx_self); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_18time(CYTHON_UNUSED PyObject *__pyx_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("time", 0); - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyFloat_FromDouble(ev_time()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 254, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext.time", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -static int __pyx_f_6gevent_5libev_8corecext__check_loop(struct PyGeventLoopObject *__pyx_v_loop) { - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("_check_loop", 0); - - __pyx_t_1 = ((!(__pyx_v_loop->_ptr != 0)) != 0); - if (unlikely(__pyx_t_1)) { - - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 258, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 258, __pyx_L1_error) - - } - - __pyx_r = 1; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent.libev.corecext._check_loop", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_8callback_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_8callback_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_callback = 0; - PyObject *__pyx_v_args = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback,&__pyx_n_s_args,0}; - PyObject* values[2] = {0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_args)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 268, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 268, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - } - __pyx_v_callback = values[0]; - __pyx_v_args = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 268, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.callback.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_8callback___init__(((struct PyGeventCallbackObject *)__pyx_v_self), __pyx_v_callback, __pyx_v_args); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_8callback___init__(struct PyGeventCallbackObject *__pyx_v_self, PyObject *__pyx_v_callback, PyObject *__pyx_v_args) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__init__", 0); - - __Pyx_INCREF(__pyx_v_callback); - __Pyx_GIVEREF(__pyx_v_callback); - __Pyx_GOTREF(__pyx_v_self->callback); - __Pyx_DECREF(__pyx_v_self->callback); - __pyx_v_self->callback = __pyx_v_callback; - - if (!(likely(PyTuple_CheckExact(__pyx_v_args))||((__pyx_v_args) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_args)->tp_name), 0))) __PYX_ERR(0, 270, __pyx_L1_error) - __pyx_t_1 = __pyx_v_args; - __Pyx_INCREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->args); - __Pyx_DECREF(__pyx_v_self->args); - __pyx_v_self->args = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext.callback.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_8callback_3stop(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_8callback_3stop(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("stop (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_8callback_2stop(((struct PyGeventCallbackObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_8callback_2stop(struct PyGeventCallbackObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("stop", 0); - - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->callback); - __Pyx_DECREF(__pyx_v_self->callback); - __pyx_v_self->callback = Py_None; - - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->args); - __Pyx_DECREF(__pyx_v_self->args); - __pyx_v_self->args = ((PyObject*)Py_None); - - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_8callback_5__nonzero__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_8callback_5__nonzero__(PyObject *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__nonzero__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_8callback_4__nonzero__(((struct PyGeventCallbackObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_8callback_4__nonzero__(struct PyGeventCallbackObject *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("__nonzero__", 0); - - __pyx_t_1 = (__pyx_v_self->args != ((PyObject*)Py_None)); - __pyx_r = __pyx_t_1; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_8callback_7pending_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_8callback_7pending_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_8callback_7pending___get__(((struct PyGeventCallbackObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_8callback_7pending___get__(struct PyGeventCallbackObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = (__pyx_v_self->callback != Py_None); - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 289, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent.libev.corecext.callback.pending.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_8callback_7__repr__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_8callback_7__repr__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_8callback_6__repr__(((struct PyGeventCallbackObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_8callback_6__repr__(struct PyGeventCallbackObject *__pyx_v_self) { - PyObject *__pyx_v_format = NULL; - PyObject *__pyx_v_result = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - int __pyx_t_6; - int __pyx_t_7; - int __pyx_t_8; - char const *__pyx_t_9; - PyObject *__pyx_t_10 = NULL; - PyObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; - PyObject *__pyx_t_13 = NULL; - PyObject *__pyx_t_14 = NULL; - PyObject *__pyx_t_15 = NULL; - __Pyx_RefNannySetupContext("__repr__", 0); - - __pyx_t_1 = ((Py_ReprEnter(((PyObject *)__pyx_v_self)) != 0) != 0); - if (__pyx_t_1) { - - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_kp_s__6); - __pyx_r = __pyx_kp_s__6; - goto __pyx_L0; - - } - - /*try:*/ { - - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 295, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 295, __pyx_L5_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 295, __pyx_L5_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_v_format = __pyx_t_2; - __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 296, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 296, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 296, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 296, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); - __Pyx_INCREF(__pyx_v_format); - __Pyx_GIVEREF(__pyx_v_format); - PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_format); - __pyx_t_3 = 0; - __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_s_at_0x_x_s, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 296, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_v_result = ((PyObject*)__pyx_t_2); - __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_pending); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 297, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 297, __pyx_L5_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (__pyx_t_1) { - - __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_result, __pyx_kp_s_pending_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 298, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF_SET(__pyx_v_result, ((PyObject*)__pyx_t_2)); - __pyx_t_2 = 0; - - } - - __pyx_t_1 = (__pyx_v_self->callback != Py_None); - __pyx_t_5 = (__pyx_t_1 != 0); - if (__pyx_t_5) { - - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 300, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_v_self->callback); - __Pyx_GIVEREF(__pyx_v_self->callback); - PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self->callback); - __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_callback_r, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 300, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_result, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 300, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF_SET(__pyx_v_result, ((PyObject*)__pyx_t_2)); - __pyx_t_2 = 0; - - } - - __pyx_t_5 = (__pyx_v_self->args != ((PyObject*)Py_None)); - __pyx_t_1 = (__pyx_t_5 != 0); - if (__pyx_t_1) { - - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 302, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_v_self->args); - __Pyx_GIVEREF(__pyx_v_self->args); - PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self->args); - __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_args_r, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 302, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_result, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 302, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF_SET(__pyx_v_result, ((PyObject*)__pyx_t_2)); - __pyx_t_2 = 0; - - } - - __pyx_t_5 = (__pyx_v_self->callback == Py_None); - __pyx_t_6 = (__pyx_t_5 != 0); - if (__pyx_t_6) { - } else { - __pyx_t_1 = __pyx_t_6; - goto __pyx_L11_bool_binop_done; - } - __pyx_t_6 = (__pyx_v_self->args == ((PyObject*)Py_None)); - __pyx_t_5 = (__pyx_t_6 != 0); - __pyx_t_1 = __pyx_t_5; - __pyx_L11_bool_binop_done:; - if (__pyx_t_1) { - - __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_result, __pyx_kp_s_stopped); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 304, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF_SET(__pyx_v_result, ((PyObject*)__pyx_t_2)); - __pyx_t_2 = 0; - - } - - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = PyNumber_Add(__pyx_v_result, __pyx_kp_s__7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 305, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L4_return; - } - - /*finally:*/ { - __pyx_L5_error:; - /*exception exit:*/{ - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15); - if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12) < 0)) __Pyx_ErrFetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); - __Pyx_XGOTREF(__pyx_t_10); - __Pyx_XGOTREF(__pyx_t_11); - __Pyx_XGOTREF(__pyx_t_12); - __Pyx_XGOTREF(__pyx_t_13); - __Pyx_XGOTREF(__pyx_t_14); - __Pyx_XGOTREF(__pyx_t_15); - __pyx_t_7 = __pyx_lineno; __pyx_t_8 = __pyx_clineno; __pyx_t_9 = __pyx_filename; - { - Py_ReprLeave(((PyObject *)__pyx_v_self)); - } - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_13); - __Pyx_XGIVEREF(__pyx_t_14); - __Pyx_XGIVEREF(__pyx_t_15); - __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15); - } - __Pyx_XGIVEREF(__pyx_t_10); - __Pyx_XGIVEREF(__pyx_t_11); - __Pyx_XGIVEREF(__pyx_t_12); - __Pyx_ErrRestore(__pyx_t_10, __pyx_t_11, __pyx_t_12); - __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; - __pyx_lineno = __pyx_t_7; __pyx_clineno = __pyx_t_8; __pyx_filename = __pyx_t_9; - goto __pyx_L1_error; - } - __pyx_L4_return: { - __pyx_t_15 = __pyx_r; - __pyx_r = 0; - Py_ReprLeave(((PyObject *)__pyx_v_self)); - __pyx_r = __pyx_t_15; - __pyx_t_15 = 0; - goto __pyx_L0; - } - } - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent.libev.corecext.callback.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_format); - __Pyx_XDECREF(__pyx_v_result); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_8callback_9_format(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_8callback_9_format(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_format (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_8callback_8_format(((struct PyGeventCallbackObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_8callback_8_format(CYTHON_UNUSED struct PyGeventCallbackObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_format", 0); - - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_kp_s__8); - __pyx_r = __pyx_kp_s__8; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_8callback_8callback_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_8callback_8callback_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_8callback_8callback___get__(((struct PyGeventCallbackObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_8callback_8callback___get__(struct PyGeventCallbackObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->callback); - __pyx_r = __pyx_v_self->callback; - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_8callback_8callback_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_8callback_8callback_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_8callback_8callback_2__set__(((struct PyGeventCallbackObject *)__pyx_v_self), ((PyObject *)__pyx_v_value)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_8callback_8callback_2__set__(struct PyGeventCallbackObject *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__", 0); - __Pyx_INCREF(__pyx_v_value); - __Pyx_GIVEREF(__pyx_v_value); - __Pyx_GOTREF(__pyx_v_self->callback); - __Pyx_DECREF(__pyx_v_self->callback); - __pyx_v_self->callback = __pyx_v_value; - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_8callback_8callback_5__del__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_8callback_8callback_5__del__(PyObject *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_8callback_8callback_4__del__(((struct PyGeventCallbackObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_8callback_8callback_4__del__(struct PyGeventCallbackObject *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__del__", 0); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->callback); - __Pyx_DECREF(__pyx_v_self->callback); - __pyx_v_self->callback = Py_None; - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_8callback_4args_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_8callback_4args_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_8callback_4args___get__(((struct PyGeventCallbackObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_8callback_4args___get__(struct PyGeventCallbackObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->args); - __pyx_r = __pyx_v_self->args; - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_8callback_4args_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_8callback_4args_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_8callback_4args_2__set__(((struct PyGeventCallbackObject *)__pyx_v_self), ((PyObject *)__pyx_v_value)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_8callback_4args_2__set__(struct PyGeventCallbackObject *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__set__", 0); - if (!(likely(PyTuple_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_value)->tp_name), 0))) __PYX_ERR(0, 265, __pyx_L1_error) - __pyx_t_1 = __pyx_v_value; - __Pyx_INCREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->args); - __Pyx_DECREF(__pyx_v_self->args); - __pyx_v_self->args = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext.callback.args.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_8callback_4args_5__del__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_8callback_4args_5__del__(PyObject *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_8callback_4args_4__del__(((struct PyGeventCallbackObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_8callback_4args_4__del__(struct PyGeventCallbackObject *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__del__", 0); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->args); - __Pyx_DECREF(__pyx_v_self->args); - __pyx_v_self->args = ((PyObject*)Py_None); - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_12CallbackFIFO_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_12CallbackFIFO_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;} - if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1; - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_12CallbackFIFO___init__(((struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_12CallbackFIFO___init__(struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__", 0); - - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->head); - __Pyx_DECREF(((PyObject *)__pyx_v_self->head)); - __pyx_v_self->head = ((struct PyGeventCallbackObject *)Py_None); - - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->tail); - __Pyx_DECREF(((PyObject *)__pyx_v_self->tail)); - __pyx_v_self->tail = ((struct PyGeventCallbackObject *)Py_None); - - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -static CYTHON_INLINE struct PyGeventCallbackObject *__pyx_f_6gevent_5libev_8corecext_12CallbackFIFO_popleft(struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *__pyx_v_self) { - struct PyGeventCallbackObject *__pyx_v_head = 0; - struct PyGeventCallbackObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - int __pyx_t_3; - int __pyx_t_4; - __Pyx_RefNannySetupContext("popleft", 0); - - __pyx_t_1 = ((PyObject *)__pyx_v_self->head); - __Pyx_INCREF(__pyx_t_1); - __pyx_v_head = ((struct PyGeventCallbackObject *)__pyx_t_1); - __pyx_t_1 = 0; - - __pyx_t_1 = ((PyObject *)__pyx_v_head->next); - __Pyx_INCREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->head); - __Pyx_DECREF(((PyObject *)__pyx_v_self->head)); - __pyx_v_self->head = ((struct PyGeventCallbackObject *)__pyx_t_1); - __pyx_t_1 = 0; - - __pyx_t_3 = (__pyx_v_self->head == __pyx_v_self->tail); - __pyx_t_4 = (__pyx_t_3 != 0); - if (!__pyx_t_4) { - } else { - __pyx_t_2 = __pyx_t_4; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_4 = (((PyObject *)__pyx_v_self->head) == Py_None); - __pyx_t_3 = (__pyx_t_4 != 0); - __pyx_t_2 = __pyx_t_3; - __pyx_L4_bool_binop_done:; - if (__pyx_t_2) { - - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->tail); - __Pyx_DECREF(((PyObject *)__pyx_v_self->tail)); - __pyx_v_self->tail = ((struct PyGeventCallbackObject *)Py_None); - - } - - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_head->next); - __Pyx_DECREF(((PyObject *)__pyx_v_head->next)); - __pyx_v_head->next = ((struct PyGeventCallbackObject *)Py_None); - - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __Pyx_INCREF(((PyObject *)__pyx_v_head)); - __pyx_r = __pyx_v_head; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_head); - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -static CYTHON_INLINE PyObject *__pyx_f_6gevent_5libev_8corecext_12CallbackFIFO_append(struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *__pyx_v_self, struct PyGeventCallbackObject *__pyx_v_new_tail) { - struct PyGeventCallbackObject *__pyx_v_old_tail = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("append", 0); - - #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_new_tail->next)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 334, __pyx_L1_error) - if (unlikely(!((!__pyx_t_1) != 0))) { - PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 334, __pyx_L1_error) - } - } - #endif - - __pyx_t_1 = (((PyObject *)__pyx_v_self->tail) == Py_None); - __pyx_t_2 = (__pyx_t_1 != 0); - if (__pyx_t_2) { - - __pyx_t_2 = (((PyObject *)__pyx_v_self->head) == Py_None); - __pyx_t_1 = (__pyx_t_2 != 0); - if (__pyx_t_1) { - - __Pyx_INCREF(((PyObject *)__pyx_v_new_tail)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_new_tail)); - __Pyx_GOTREF(__pyx_v_self->head); - __Pyx_DECREF(((PyObject *)__pyx_v_self->head)); - __pyx_v_self->head = __pyx_v_new_tail; - - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - } - - __pyx_t_3 = ((PyObject *)__pyx_v_self->head); - __Pyx_INCREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_3); - __Pyx_GOTREF(__pyx_v_self->tail); - __Pyx_DECREF(((PyObject *)__pyx_v_self->tail)); - __pyx_v_self->tail = ((struct PyGeventCallbackObject *)__pyx_t_3); - __pyx_t_3 = 0; - - } - - #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_1 = (((PyObject *)__pyx_v_self->head) != Py_None); - if (unlikely(!(__pyx_t_1 != 0))) { - PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 344, __pyx_L1_error) - } - } - #endif - - __pyx_t_3 = ((PyObject *)__pyx_v_self->tail); - __Pyx_INCREF(__pyx_t_3); - __pyx_v_old_tail = ((struct PyGeventCallbackObject *)__pyx_t_3); - __pyx_t_3 = 0; - - __Pyx_INCREF(((PyObject *)__pyx_v_new_tail)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_new_tail)); - __Pyx_GOTREF(__pyx_v_old_tail->next); - __Pyx_DECREF(((PyObject *)__pyx_v_old_tail->next)); - __pyx_v_old_tail->next = __pyx_v_new_tail; - - __Pyx_INCREF(((PyObject *)__pyx_v_new_tail)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_new_tail)); - __Pyx_GOTREF(__pyx_v_self->tail); - __Pyx_DECREF(((PyObject *)__pyx_v_self->tail)); - __pyx_v_self->tail = __pyx_v_new_tail; - - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent.libev.corecext.CallbackFIFO.append", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_old_tail); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_12CallbackFIFO_3__nonzero__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_12CallbackFIFO_3__nonzero__(PyObject *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__nonzero__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_12CallbackFIFO_2__nonzero__(((struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_12CallbackFIFO_2__nonzero__(struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("__nonzero__", 0); - - __pyx_t_1 = (((PyObject *)__pyx_v_self->head) != Py_None); - __pyx_r = __pyx_t_1; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static Py_ssize_t __pyx_pw_6gevent_5libev_8corecext_12CallbackFIFO_5__len__(PyObject *__pyx_v_self); /*proto*/ -static Py_ssize_t __pyx_pw_6gevent_5libev_8corecext_12CallbackFIFO_5__len__(PyObject *__pyx_v_self) { - Py_ssize_t __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__len__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_12CallbackFIFO_4__len__(((struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static Py_ssize_t __pyx_pf_6gevent_5libev_8corecext_12CallbackFIFO_4__len__(struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *__pyx_v_self) { - Py_ssize_t __pyx_v_count; - struct PyGeventCallbackObject *__pyx_v_head = NULL; - Py_ssize_t __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - int __pyx_t_3; - __Pyx_RefNannySetupContext("__len__", 0); - - __pyx_v_count = 0; - - __pyx_t_1 = ((PyObject *)__pyx_v_self->head); - __Pyx_INCREF(__pyx_t_1); - __pyx_v_head = ((struct PyGeventCallbackObject *)__pyx_t_1); - __pyx_t_1 = 0; - - while (1) { - __pyx_t_2 = (((PyObject *)__pyx_v_head) != Py_None); - __pyx_t_3 = (__pyx_t_2 != 0); - if (!__pyx_t_3) break; - - __pyx_v_count = (__pyx_v_count + 1); - - __pyx_t_1 = ((PyObject *)__pyx_v_head->next); - __Pyx_INCREF(__pyx_t_1); - __Pyx_DECREF_SET(__pyx_v_head, ((struct PyGeventCallbackObject *)__pyx_t_1)); - __pyx_t_1 = 0; - } - - __pyx_r = __pyx_v_count; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_head); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_12CallbackFIFO_7__iter__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_12CallbackFIFO_7__iter__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_12CallbackFIFO_6__iter__(((struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_12CallbackFIFO_6__iter__(struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *__pyx_v_self) { - PyObject *__pyx_v_objects = 0; - struct PyGeventCallbackObject *__pyx_v_head = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - int __pyx_t_3; - int __pyx_t_4; - __Pyx_RefNannySetupContext("__iter__", 0); - - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 361, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_objects = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - __pyx_t_1 = ((PyObject *)__pyx_v_self->head); - __Pyx_INCREF(__pyx_t_1); - __pyx_v_head = ((struct PyGeventCallbackObject *)__pyx_t_1); - __pyx_t_1 = 0; - - while (1) { - __pyx_t_2 = (((PyObject *)__pyx_v_head) != Py_None); - __pyx_t_3 = (__pyx_t_2 != 0); - if (!__pyx_t_3) break; - - __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_objects, ((PyObject *)__pyx_v_head)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 364, __pyx_L1_error) - - __pyx_t_1 = ((PyObject *)__pyx_v_head->next); - __Pyx_INCREF(__pyx_t_1); - __Pyx_DECREF_SET(__pyx_v_head, ((struct PyGeventCallbackObject *)__pyx_t_1)); - __pyx_t_1 = 0; - } - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyObject_GetIter(__pyx_v_objects); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 366, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext.CallbackFIFO.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_objects); - __Pyx_XDECREF((PyObject *)__pyx_v_head); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -static int __pyx_f_6gevent_5libev_8corecext_12CallbackFIFO_has_callbacks(struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("has_callbacks", 0); - - __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self->head)); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 369, __pyx_L1_error) - __pyx_r = __pyx_t_1; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_WriteUnraisable("gevent.libev.corecext.CallbackFIFO.has_callbacks", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); - __pyx_r = 0; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_12CallbackFIFO_9__repr__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_12CallbackFIFO_9__repr__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_12CallbackFIFO_8__repr__(((struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_12CallbackFIFO_8__repr__(struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - Py_ssize_t __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("__repr__", 0); - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 372, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 372, __pyx_L1_error) - __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 372, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 372, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3); - __Pyx_INCREF(((PyObject *)__pyx_v_self->head)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self->head)); - PyTuple_SET_ITEM(__pyx_t_4, 2, ((PyObject *)__pyx_v_self->head)); - __Pyx_INCREF(((PyObject *)__pyx_v_self->tail)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self->tail)); - PyTuple_SET_ITEM(__pyx_t_4, 3, ((PyObject *)__pyx_v_self->tail)); - __pyx_t_1 = 0; - __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_callbacks_r_len_d_head_r_tail_r, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 372, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent.libev.corecext.CallbackFIFO.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_4loop_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_4loop_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_flags = 0; - PyObject *__pyx_v_default = 0; - intptr_t __pyx_v_ptr; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_flags_2,&__pyx_n_s_default,&__pyx_n_s_ptr,0}; - PyObject* values[3] = {0,0,0}; - values[0] = ((PyObject *)Py_None); - values[1] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flags_2); - if (value) { values[0] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_default); - if (value) { values[1] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ptr); - if (value) { values[2] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 396, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_flags = values[0]; - __pyx_v_default = values[1]; - if (values[2]) { - __pyx_v_ptr = __Pyx_PyIndex_AsSsize_t(values[2]); if (unlikely((__pyx_v_ptr == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 396, __pyx_L3_error) - } else { - __pyx_v_ptr = ((intptr_t)0); - } - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 396, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.loop.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop___cinit__(((struct PyGeventLoopObject *)__pyx_v_self), __pyx_v_flags, __pyx_v_default, __pyx_v_ptr); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_4loop___cinit__(struct PyGeventLoopObject *__pyx_v_self, PyObject *__pyx_v_flags, PyObject *__pyx_v_default, intptr_t __pyx_v_ptr) { - unsigned int __pyx_v_c_flags; - CYTHON_UNUSED PyObject *__pyx_v_old_handler = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - unsigned int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - __Pyx_RefNannySetupContext("__cinit__", 0); - __Pyx_INCREF(__pyx_v_default); - - __pyx_v_self->starting_timer_may_update_loop_time = 0; - - __pyx_v_self->_default = 0; - - ev_prepare_init((&__pyx_v_self->_prepare), ((void *)gevent_run_callbacks)); - - ev_timer_init((&__pyx_v_self->_periodic_signal_checker), ((void *)gevent_periodic_signal_check), 0.3, 0.3); - - ev_timer_init((&__pyx_v_self->_timer0), ((void *)gevent_noop), 0.0, 0.0); - - __Pyx_INCREF(Py_None); - __pyx_v_old_handler = Py_None; - - __pyx_t_1 = (__pyx_v_ptr != 0); - if (__pyx_t_1) { - - __pyx_v_self->_ptr = ((struct ev_loop *)__pyx_v_ptr); - - __pyx_v_self->_default = ev_is_default_loop(__pyx_v_self->_ptr); - - goto __pyx_L3; - } - - /*else*/ { - __pyx_t_2 = __pyx_f_6gevent_5libev_8corecext__flags_to_int(__pyx_v_flags, 0); if (unlikely(__pyx_t_2 == ((unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 414, __pyx_L1_error) - __pyx_v_c_flags = __pyx_t_2; - - __pyx_t_3 = __pyx_f_6gevent_5libev_8corecext__check_flags(__pyx_v_c_flags, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 415, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - __pyx_v_c_flags = (__pyx_v_c_flags | EVFLAG_NOENV); - - __pyx_v_c_flags = (__pyx_v_c_flags | EVFLAG_FORKCHECK); - - __pyx_t_1 = (__pyx_v_default == Py_None); - __pyx_t_4 = (__pyx_t_1 != 0); - if (__pyx_t_4) { - - __Pyx_INCREF(Py_True); - __Pyx_DECREF_SET(__pyx_v_default, Py_True); - - } - - __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_default); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 420, __pyx_L1_error) - if (__pyx_t_4) { - - __pyx_v_self->_default = 1; - - __pyx_v_self->_ptr = gevent_ev_default_loop(__pyx_v_c_flags); - - __pyx_t_4 = ((!(__pyx_v_self->_ptr != 0)) != 0); - if (unlikely(__pyx_t_4)) { - - __pyx_t_3 = __Pyx_PyInt_From_unsigned_int(__pyx_v_c_flags); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 424, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 424, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); - __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_ev_default_loop_s_failed, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 424, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_SystemError, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 424, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_t_5, 0, 0, 0); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __PYX_ERR(0, 424, __pyx_L1_error) - - } - - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 425, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_platform); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 425, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_win32, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 425, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (__pyx_t_4) { - - ev_timer_start(__pyx_v_self->_ptr, (&__pyx_v_self->_periodic_signal_checker)); - - ev_unref(__pyx_v_self->_ptr); - - } - - goto __pyx_L5; - } - - /*else*/ { - __pyx_v_self->_ptr = ev_loop_new(__pyx_v_c_flags); - - __pyx_t_4 = ((!(__pyx_v_self->_ptr != 0)) != 0); - if (unlikely(__pyx_t_4)) { - - __pyx_t_3 = __Pyx_PyInt_From_unsigned_int(__pyx_v_c_flags); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 431, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 431, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); - __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_ev_loop_new_s_failed, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 431, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_SystemError, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 431, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_t_5, 0, 0, 0); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __PYX_ERR(0, 431, __pyx_L1_error) - - } - } - __pyx_L5:; - - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_default); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 432, __pyx_L1_error) - if (!__pyx_t_1) { - } else { - __pyx_t_4 = __pyx_t_1; - goto __pyx_L10_bool_binop_done; - } - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_SYSERR_CALLBACK); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 432, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_1 = (__pyx_t_5 == Py_None); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_6 = (__pyx_t_1 != 0); - __pyx_t_4 = __pyx_t_6; - __pyx_L10_bool_binop_done:; - if (__pyx_t_4) { - - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_handle_syserr); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 433, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_3 = __pyx_f_6gevent_5libev_8corecext_set_syserr_cb(__pyx_t_5, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 433, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - } - } - __pyx_L3:; - - ev_set_userdata(__pyx_v_self->_ptr, __pyx_v_self->_ptr); - - ev_prepare_start(__pyx_v_self->_ptr, (&__pyx_v_self->_prepare)); - - ev_unref(__pyx_v_self->_ptr); - - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent.libev.corecext.loop.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_old_handler); - __Pyx_XDECREF(__pyx_v_default); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_4loop_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_4loop_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - CYTHON_UNUSED PyObject *__pyx_v_flags = 0; - CYTHON_UNUSED PyObject *__pyx_v_default = 0; - CYTHON_UNUSED intptr_t __pyx_v_ptr; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_flags_2,&__pyx_n_s_default,&__pyx_n_s_ptr,0}; - PyObject* values[3] = {0,0,0}; - values[0] = ((PyObject *)Py_None); - values[1] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flags_2); - if (value) { values[0] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_default); - if (value) { values[1] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ptr); - if (value) { values[2] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 441, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_flags = values[0]; - __pyx_v_default = values[1]; - if (values[2]) { - __pyx_v_ptr = __Pyx_PyIndex_AsSsize_t(values[2]); if (unlikely((__pyx_v_ptr == ((intptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 441, __pyx_L3_error) - } else { - __pyx_v_ptr = ((intptr_t)0); - } - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 441, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.loop.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_2__init__(((struct PyGeventLoopObject *)__pyx_v_self), __pyx_v_flags, __pyx_v_default, __pyx_v_ptr); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_4loop_2__init__(struct PyGeventLoopObject *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_flags, CYTHON_UNUSED PyObject *__pyx_v_default, CYTHON_UNUSED intptr_t __pyx_v_ptr) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__init__", 0); - - __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_6gevent_5libev_8corecext_CallbackFIFO)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 442, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->_callbacks); - __Pyx_DECREF(((PyObject *)__pyx_v_self->_callbacks)); - __pyx_v_self->_callbacks = ((struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *)__pyx_t_1); - __pyx_t_1 = 0; - - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext.loop.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -static PyObject *__pyx_f_6gevent_5libev_8corecext_4loop__run_callbacks(struct PyGeventLoopObject *__pyx_v_self) { - struct PyGeventCallbackObject *__pyx_v_cb = 0; - int __pyx_v_count; - ev_tstamp __pyx_v_now; - ev_tstamp __pyx_v_expiration; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - ev_tstamp __pyx_t_4; - int __pyx_t_5; - int __pyx_t_6; - int __pyx_t_7; - int __pyx_t_8; - int __pyx_t_9; - char const *__pyx_t_10; - PyObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; - PyObject *__pyx_t_13 = NULL; - PyObject *__pyx_t_14 = NULL; - PyObject *__pyx_t_15 = NULL; - PyObject *__pyx_t_16 = NULL; - __Pyx_RefNannySetupContext("_run_callbacks", 0); - - __pyx_v_count = 50; - - __pyx_v_self->starting_timer_may_update_loop_time = 1; - - __pyx_v_now = ev_now(__pyx_v_self->_ptr); - - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_getswitchinterval); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 450, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 450, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 450, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_4 == ((ev_tstamp)-1)) && PyErr_Occurred())) __PYX_ERR(0, 450, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_expiration = (__pyx_v_now + ((ev_tstamp)__pyx_t_4)); - - /*try:*/ { - - ev_timer_stop(__pyx_v_self->_ptr, (&__pyx_v_self->_timer0)); - - while (1) { - __pyx_t_5 = (((PyObject *)__pyx_v_self->_callbacks->head) != Py_None); - __pyx_t_6 = (__pyx_t_5 != 0); - if (!__pyx_t_6) break; - - __pyx_t_1 = ((PyObject *)__pyx_f_6gevent_5libev_8corecext_12CallbackFIFO_popleft(__pyx_v_self->_callbacks)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 455, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_XDECREF_SET(__pyx_v_cb, ((struct PyGeventCallbackObject *)__pyx_t_1)); - __pyx_t_1 = 0; - - ev_unref(__pyx_v_self->_ptr); - - gevent_call(__pyx_v_self, __pyx_v_cb); - - __pyx_v_count = (__pyx_v_count - 1); - - __pyx_t_5 = ((__pyx_v_count == 0) != 0); - if (__pyx_t_5) { - } else { - __pyx_t_6 = __pyx_t_5; - goto __pyx_L9_bool_binop_done; - } - __pyx_t_5 = (((PyObject *)__pyx_v_self->_callbacks->head) != Py_None); - __pyx_t_7 = (__pyx_t_5 != 0); - __pyx_t_6 = __pyx_t_7; - __pyx_L9_bool_binop_done:; - if (__pyx_t_6) { - - __pyx_v_count = 50; - - ev_now_update(__pyx_v_self->_ptr); - - __pyx_t_6 = ((ev_now(__pyx_v_self->_ptr) >= __pyx_v_expiration) != 0); - if (__pyx_t_6) { - - __pyx_v_now = 0.0; - - goto __pyx_L7_break; - - } - - } - } - __pyx_L7_break:; - - __pyx_t_6 = ((__pyx_v_now != 0.0) != 0); - if (__pyx_t_6) { - - ev_now_update(__pyx_v_self->_ptr); - - } - - __pyx_t_6 = (((PyObject *)__pyx_v_self->_callbacks->head) != Py_None); - __pyx_t_7 = (__pyx_t_6 != 0); - if (__pyx_t_7) { - - ev_timer_start(__pyx_v_self->_ptr, (&__pyx_v_self->_timer0)); - - } - } - - /*finally:*/ { - /*normal exit:*/{ - __pyx_v_self->starting_timer_may_update_loop_time = 0; - goto __pyx_L5; - } - __pyx_L4_error:; - /*exception exit:*/{ - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16); - if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13) < 0)) __Pyx_ErrFetch(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13); - __Pyx_XGOTREF(__pyx_t_11); - __Pyx_XGOTREF(__pyx_t_12); - __Pyx_XGOTREF(__pyx_t_13); - __Pyx_XGOTREF(__pyx_t_14); - __Pyx_XGOTREF(__pyx_t_15); - __Pyx_XGOTREF(__pyx_t_16); - __pyx_t_8 = __pyx_lineno; __pyx_t_9 = __pyx_clineno; __pyx_t_10 = __pyx_filename; - { - __pyx_v_self->starting_timer_may_update_loop_time = 0; - } - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_14); - __Pyx_XGIVEREF(__pyx_t_15); - __Pyx_XGIVEREF(__pyx_t_16); - __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16); - } - __Pyx_XGIVEREF(__pyx_t_11); - __Pyx_XGIVEREF(__pyx_t_12); - __Pyx_XGIVEREF(__pyx_t_13); - __Pyx_ErrRestore(__pyx_t_11, __pyx_t_12, __pyx_t_13); - __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; - __pyx_lineno = __pyx_t_8; __pyx_clineno = __pyx_t_9; __pyx_filename = __pyx_t_10; - goto __pyx_L1_error; - } - __pyx_L5:; - } - - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent.libev.corecext.loop._run_callbacks", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_cb); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -static PyObject *__pyx_f_6gevent_5libev_8corecext_4loop__stop_watchers(struct PyGeventLoopObject *__pyx_v_self, struct ev_loop *__pyx_v_ptr) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("_stop_watchers", 0); - - __pyx_t_1 = ((!(__pyx_v_ptr != 0)) != 0); - if (__pyx_t_1) { - - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - } - - __pyx_t_1 = (ev_is_active((&__pyx_v_self->_prepare)) != 0); - if (__pyx_t_1) { - - ev_ref(__pyx_v_ptr); - - ev_prepare_stop(__pyx_v_ptr, (&__pyx_v_self->_prepare)); - - } - - __pyx_t_1 = (ev_is_active((&__pyx_v_self->_periodic_signal_checker)) != 0); - if (__pyx_t_1) { - - ev_ref(__pyx_v_ptr); - - ev_timer_stop(__pyx_v_ptr, (&__pyx_v_self->_periodic_signal_checker)); - - } - - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_5destroy(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_5destroy(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("destroy (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_4destroy(((struct PyGeventLoopObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_4destroy(struct PyGeventLoopObject *__pyx_v_self) { - struct ev_loop *__pyx_v_ptr; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - struct ev_loop *__pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - __Pyx_RefNannySetupContext("destroy", 0); - - __pyx_t_1 = __pyx_v_self->_ptr; - __pyx_v_ptr = __pyx_t_1; - - __pyx_v_self->_ptr = NULL; - - __pyx_t_2 = (__pyx_v_ptr != 0); - if (__pyx_t_2) { - - __pyx_t_2 = ((!(ev_userdata(__pyx_v_ptr) != 0)) != 0); - if (__pyx_t_2) { - - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - } - - ev_set_userdata(__pyx_v_ptr, NULL); - - __pyx_t_3 = ((struct __pyx_vtabstruct_6gevent_5libev_8corecext_loop *)__pyx_v_self->__pyx_vtab)->_stop_watchers(__pyx_v_self, __pyx_v_ptr); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 502, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_SYSERR_CALLBACK); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 503, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_handle_syserr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 503, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 503, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 503, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (__pyx_t_2) { - - __pyx_t_5 = __pyx_f_6gevent_5libev_8corecext_set_syserr_cb(Py_None, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 504, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - - } - - ev_loop_destroy(__pyx_v_ptr); - - } - - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent.libev.corecext.loop.destroy", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static void __pyx_pw_6gevent_5libev_8corecext_4loop_7__dealloc__(PyObject *__pyx_v_self); /*proto*/ -static void __pyx_pw_6gevent_5libev_8corecext_4loop_7__dealloc__(PyObject *__pyx_v_self) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); - __pyx_pf_6gevent_5libev_8corecext_4loop_6__dealloc__(((struct PyGeventLoopObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -static void __pyx_pf_6gevent_5libev_8corecext_4loop_6__dealloc__(struct PyGeventLoopObject *__pyx_v_self) { - struct ev_loop *__pyx_v_ptr; - __Pyx_RefNannyDeclarations - struct ev_loop *__pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("__dealloc__", 0); - - __pyx_t_1 = __pyx_v_self->_ptr; - __pyx_v_ptr = __pyx_t_1; - - __pyx_v_self->_ptr = NULL; - - __pyx_t_2 = ((__pyx_v_ptr != NULL) != 0); - if (__pyx_t_2) { - - __pyx_t_2 = ((!(ev_userdata(__pyx_v_ptr) != 0)) != 0); - if (__pyx_t_2) { - - goto __pyx_L0; - - } - - __pyx_t_3 = ((struct __pyx_vtabstruct_6gevent_5libev_8corecext_loop *)__pyx_v_self->__pyx_vtab)->_stop_watchers(__pyx_v_self, __pyx_v_ptr); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 514, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - __pyx_t_2 = ((!(__pyx_v_self->_default != 0)) != 0); - if (__pyx_t_2) { - - ev_loop_destroy(__pyx_v_ptr); - - ev_set_userdata(__pyx_v_ptr, NULL); - - } - - } - - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_WriteUnraisable("gevent.libev.corecext.loop.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); - __pyx_L0:; - __Pyx_RefNannyFinishContext(); -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_3ptr_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_3ptr_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_3ptr___get__(((struct PyGeventLoopObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_3ptr___get__(struct PyGeventLoopObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_FromSize_t(((size_t)__pyx_v_self->_ptr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 522, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext.loop.ptr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_11WatcherType_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_11WatcherType_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_11WatcherType___get__(((struct PyGeventLoopObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_11WatcherType___get__(CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_ptype_6gevent_5libev_8corecext_watcher)); - __pyx_r = ((PyObject *)__pyx_ptype_6gevent_5libev_8corecext_watcher); - goto __pyx_L0; - - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_6MAXPRI_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_6MAXPRI_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_6MAXPRI___get__(((struct PyGeventLoopObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_6MAXPRI___get__(CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(EV_MAXPRI); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 530, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext.loop.MAXPRI.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_6MINPRI_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_6MINPRI_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_6MINPRI___get__(((struct PyGeventLoopObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_6MINPRI___get__(CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(EV_MINPRI); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 534, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext.loop.MINPRI.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_9_handle_syserr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_9_handle_syserr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_message = 0; - PyObject *__pyx_v_errno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_handle_syserr (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_message,&__pyx_n_s_errno,0}; - PyObject* values[2] = {0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_message)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_errno)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("_handle_syserr", 1, 2, 2, 1); __PYX_ERR(0, 536, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_handle_syserr") < 0)) __PYX_ERR(0, 536, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - } - __pyx_v_message = values[0]; - __pyx_v_errno = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("_handle_syserr", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 536, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.loop._handle_syserr", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_8_handle_syserr(((struct PyGeventLoopObject *)__pyx_v_self), __pyx_v_message, __pyx_v_errno); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_8_handle_syserr(struct PyGeventLoopObject *__pyx_v_self, PyObject *__pyx_v_message, PyObject *__pyx_v_errno) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - __Pyx_RefNannySetupContext("_handle_syserr", 0); - __Pyx_INCREF(__pyx_v_message); - - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 537, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_version_info); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 537, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 537, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_int_3, Py_GE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 537, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 537, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (__pyx_t_3) { - - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_message, __pyx_n_s_decode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 538, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 538, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 538, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF_SET(__pyx_v_message, __pyx_t_2); - __pyx_t_2 = 0; - - } - - __pyx_t_2 = PyNumber_Add(__pyx_v_message, __pyx_kp_s__9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 539, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 539, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_strerror); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 539, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - } - } - if (!__pyx_t_4) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_errno); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 539, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_errno}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 539, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_errno}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 539, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 539, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_INCREF(__pyx_v_errno); - __Pyx_GIVEREF(__pyx_v_errno); - PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_errno); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 539, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - } - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyNumber_Add(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 539, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_SystemError, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 539, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = ((struct __pyx_vtabstruct_6gevent_5libev_8corecext_loop *)__pyx_v_self->__pyx_vtab)->handle_error(__pyx_v_self, Py_None, __pyx_builtin_SystemError, __pyx_t_1, Py_None, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 539, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_AddTraceback("gevent.libev.corecext.loop._handle_syserr", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_message); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_11handle_error(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_f_6gevent_5libev_8corecext_4loop_handle_error(struct PyGeventLoopObject *__pyx_v_self, PyObject *__pyx_v_context, PyObject *__pyx_v_type, PyObject *__pyx_v_value, PyObject *__pyx_v_tb, int __pyx_skip_dispatch) { - PyObject *__pyx_v_handle_error = 0; - PyObject *__pyx_v_error_handler = 0; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - int __pyx_t_7; - int __pyx_t_8; - __Pyx_RefNannySetupContext("handle_error", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_handle_error); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 541, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_4loop_11handle_error)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - __pyx_t_5 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_5 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[5] = {__pyx_t_4, __pyx_v_context, __pyx_v_type, __pyx_v_value, __pyx_v_tb}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 541, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[5] = {__pyx_t_4, __pyx_v_context, __pyx_v_type, __pyx_v_value, __pyx_v_tb}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 541, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_6 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 541, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (__pyx_t_4) { - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; - } - __Pyx_INCREF(__pyx_v_context); - __Pyx_GIVEREF(__pyx_v_context); - PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_context); - __Pyx_INCREF(__pyx_v_type); - __Pyx_GIVEREF(__pyx_v_type); - PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_type); - __Pyx_INCREF(__pyx_v_value); - __Pyx_GIVEREF(__pyx_v_value); - PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_v_value); - __Pyx_INCREF(__pyx_v_tb); - __Pyx_GIVEREF(__pyx_v_tb); - PyTuple_SET_ITEM(__pyx_t_6, 3+__pyx_t_5, __pyx_v_tb); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 541, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - __pyx_t_1 = __pyx_v_self->error_handler; - __Pyx_INCREF(__pyx_t_1); - __pyx_v_error_handler = __pyx_t_1; - __pyx_t_1 = 0; - - __pyx_t_7 = (__pyx_v_error_handler != Py_None); - __pyx_t_8 = (__pyx_t_7 != 0); - if (__pyx_t_8) { - - __pyx_t_1 = __Pyx_GetAttr3(__pyx_v_error_handler, __pyx_n_s_handle_error, __pyx_v_error_handler); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 546, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_handle_error = __pyx_t_1; - __pyx_t_1 = 0; - - __Pyx_INCREF(__pyx_v_handle_error); - __pyx_t_2 = __pyx_v_handle_error; __pyx_t_3 = NULL; - __pyx_t_5 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_5 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_v_context, __pyx_v_type, __pyx_v_value, __pyx_v_tb}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 547, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_v_context, __pyx_v_type, __pyx_v_value, __pyx_v_tb}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 547, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_6 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 547, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (__pyx_t_3) { - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL; - } - __Pyx_INCREF(__pyx_v_context); - __Pyx_GIVEREF(__pyx_v_context); - PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_context); - __Pyx_INCREF(__pyx_v_type); - __Pyx_GIVEREF(__pyx_v_type); - PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_type); - __Pyx_INCREF(__pyx_v_value); - __Pyx_GIVEREF(__pyx_v_value); - PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_v_value); - __Pyx_INCREF(__pyx_v_tb); - __Pyx_GIVEREF(__pyx_v_tb); - PyTuple_SET_ITEM(__pyx_t_6, 3+__pyx_t_5, __pyx_v_tb); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 547, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - goto __pyx_L3; - } - - /*else*/ { - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_5libev_8corecext_loop *)__pyx_v_self->__pyx_vtab)->_default_handle_error(__pyx_v_self, __pyx_v_context, __pyx_v_type, __pyx_v_value, __pyx_v_tb, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 549, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __pyx_L3:; - - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_AddTraceback("gevent.libev.corecext.loop.handle_error", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_handle_error); - __Pyx_XDECREF(__pyx_v_error_handler); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_11handle_error(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_11handle_error(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_context = 0; - PyObject *__pyx_v_type = 0; - PyObject *__pyx_v_value = 0; - PyObject *__pyx_v_tb = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("handle_error (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_context,&__pyx_n_s_type,&__pyx_n_s_value,&__pyx_n_s_tb,0}; - PyObject* values[4] = {0,0,0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_context)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_type)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("handle_error", 1, 4, 4, 1); __PYX_ERR(0, 541, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_value)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("handle_error", 1, 4, 4, 2); __PYX_ERR(0, 541, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 3: - if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tb)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("handle_error", 1, 4, 4, 3); __PYX_ERR(0, 541, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "handle_error") < 0)) __PYX_ERR(0, 541, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 4) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - } - __pyx_v_context = values[0]; - __pyx_v_type = values[1]; - __pyx_v_value = values[2]; - __pyx_v_tb = values[3]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("handle_error", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 541, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.loop.handle_error", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_10handle_error(((struct PyGeventLoopObject *)__pyx_v_self), __pyx_v_context, __pyx_v_type, __pyx_v_value, __pyx_v_tb); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_10handle_error(struct PyGeventLoopObject *__pyx_v_self, PyObject *__pyx_v_context, PyObject *__pyx_v_type, PyObject *__pyx_v_value, PyObject *__pyx_v_tb) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("handle_error", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_5libev_8corecext_4loop_handle_error(__pyx_v_self, __pyx_v_context, __pyx_v_type, __pyx_v_value, __pyx_v_tb, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 541, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext.loop.handle_error", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_13_default_handle_error(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_f_6gevent_5libev_8corecext_4loop__default_handle_error(struct PyGeventLoopObject *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_context, PyObject *__pyx_v_type, PyObject *__pyx_v_value, PyObject *__pyx_v_tb, int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - int __pyx_t_7; - __Pyx_RefNannySetupContext("_default_handle_error", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_default_handle_error); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 551, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_4loop_13_default_handle_error)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - __pyx_t_5 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_5 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[5] = {__pyx_t_4, __pyx_v_context, __pyx_v_type, __pyx_v_value, __pyx_v_tb}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 551, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[5] = {__pyx_t_4, __pyx_v_context, __pyx_v_type, __pyx_v_value, __pyx_v_tb}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 551, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_6 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 551, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (__pyx_t_4) { - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; - } - __Pyx_INCREF(__pyx_v_context); - __Pyx_GIVEREF(__pyx_v_context); - PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_context); - __Pyx_INCREF(__pyx_v_type); - __Pyx_GIVEREF(__pyx_v_type); - PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_type); - __Pyx_INCREF(__pyx_v_value); - __Pyx_GIVEREF(__pyx_v_value); - PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_v_value); - __Pyx_INCREF(__pyx_v_tb); - __Pyx_GIVEREF(__pyx_v_tb); - PyTuple_SET_ITEM(__pyx_t_6, 3+__pyx_t_5, __pyx_v_tb); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 551, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_traceback); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 554, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_print_exception); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 554, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = NULL; - __pyx_t_5 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_2)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_2); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_5 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[4] = {__pyx_t_2, __pyx_v_type, __pyx_v_value, __pyx_v_tb}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 554, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[4] = {__pyx_t_2, __pyx_v_type, __pyx_v_value, __pyx_v_tb}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 554, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_6 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 554, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (__pyx_t_2) { - __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); __pyx_t_2 = NULL; - } - __Pyx_INCREF(__pyx_v_type); - __Pyx_GIVEREF(__pyx_v_type); - PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_type); - __Pyx_INCREF(__pyx_v_value); - __Pyx_GIVEREF(__pyx_v_value); - PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_value); - __Pyx_INCREF(__pyx_v_tb); - __Pyx_GIVEREF(__pyx_v_tb); - PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_v_tb); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 554, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - __pyx_t_7 = (__pyx_v_self->_ptr != 0); - if (__pyx_t_7) { - - ev_break(__pyx_v_self->_ptr, EVBREAK_ONE); - - } - - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_AddTraceback("gevent.libev.corecext.loop._default_handle_error", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_13_default_handle_error(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_13_default_handle_error(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_context = 0; - PyObject *__pyx_v_type = 0; - PyObject *__pyx_v_value = 0; - PyObject *__pyx_v_tb = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_default_handle_error (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_context,&__pyx_n_s_type,&__pyx_n_s_value,&__pyx_n_s_tb,0}; - PyObject* values[4] = {0,0,0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_context)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_type)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("_default_handle_error", 1, 4, 4, 1); __PYX_ERR(0, 551, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_value)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("_default_handle_error", 1, 4, 4, 2); __PYX_ERR(0, 551, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 3: - if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tb)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("_default_handle_error", 1, 4, 4, 3); __PYX_ERR(0, 551, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_default_handle_error") < 0)) __PYX_ERR(0, 551, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 4) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - } - __pyx_v_context = values[0]; - __pyx_v_type = values[1]; - __pyx_v_value = values[2]; - __pyx_v_tb = values[3]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("_default_handle_error", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 551, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.loop._default_handle_error", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_12_default_handle_error(((struct PyGeventLoopObject *)__pyx_v_self), __pyx_v_context, __pyx_v_type, __pyx_v_value, __pyx_v_tb); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_12_default_handle_error(struct PyGeventLoopObject *__pyx_v_self, PyObject *__pyx_v_context, PyObject *__pyx_v_type, PyObject *__pyx_v_value, PyObject *__pyx_v_tb) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_default_handle_error", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_5libev_8corecext_4loop__default_handle_error(__pyx_v_self, __pyx_v_context, __pyx_v_type, __pyx_v_value, __pyx_v_tb, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 551, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext.loop._default_handle_error", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_15run(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_15run(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_nowait = 0; - PyObject *__pyx_v_once = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("run (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_nowait,&__pyx_n_s_once,0}; - PyObject* values[2] = {0,0}; - values[0] = ((PyObject *)Py_False); - values[1] = ((PyObject *)Py_False); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nowait); - if (value) { values[0] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_once); - if (value) { values[1] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "run") < 0)) __PYX_ERR(0, 558, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_nowait = values[0]; - __pyx_v_once = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("run", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 558, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.loop.run", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_14run(((struct PyGeventLoopObject *)__pyx_v_self), __pyx_v_nowait, __pyx_v_once); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_14run(struct PyGeventLoopObject *__pyx_v_self, PyObject *__pyx_v_nowait, PyObject *__pyx_v_once) { - unsigned int __pyx_v_flags; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("run", 0); - - __pyx_t_1 = __pyx_f_6gevent_5libev_8corecext__check_loop(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 559, __pyx_L1_error) - - __pyx_v_flags = 0; - - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_nowait); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 561, __pyx_L1_error) - if (__pyx_t_1) { - - __pyx_v_flags = (__pyx_v_flags | EVRUN_NOWAIT); - - } - - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_once); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 563, __pyx_L1_error) - if (__pyx_t_1) { - - __pyx_v_flags = (__pyx_v_flags | EVRUN_ONCE); - - } - - { - #ifdef WITH_THREAD - PyThreadState *_save; - Py_UNBLOCK_THREADS - __Pyx_FastGIL_Remember(); - #endif - /*try:*/ { - - ev_run(__pyx_v_self->_ptr, __pyx_v_flags); - } - - /*finally:*/ { - /*normal exit:*/{ - #ifdef WITH_THREAD - __Pyx_FastGIL_Forget(); - Py_BLOCK_THREADS - #endif - goto __pyx_L7; - } - __pyx_L7:; - } - } - - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_AddTraceback("gevent.libev.corecext.loop.run", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_17reinit(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_17reinit(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("reinit (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_16reinit(((struct PyGeventLoopObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_16reinit(struct PyGeventLoopObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("reinit", 0); - - __pyx_t_1 = (__pyx_v_self->_ptr != 0); - if (__pyx_t_1) { - - ev_loop_fork(__pyx_v_self->_ptr); - - } - - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_19ref(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_19ref(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("ref (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_18ref(((struct PyGeventLoopObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_18ref(struct PyGeventLoopObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("ref", 0); - - __pyx_t_1 = __pyx_f_6gevent_5libev_8corecext__check_loop(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 573, __pyx_L1_error) - - ev_ref(__pyx_v_self->_ptr); - - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_AddTraceback("gevent.libev.corecext.loop.ref", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_21unref(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_21unref(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("unref (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_20unref(((struct PyGeventLoopObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_20unref(struct PyGeventLoopObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("unref", 0); - - __pyx_t_1 = __pyx_f_6gevent_5libev_8corecext__check_loop(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 577, __pyx_L1_error) - - ev_unref(__pyx_v_self->_ptr); - - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_AddTraceback("gevent.libev.corecext.loop.unref", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_23break_(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_23break_(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - int __pyx_v_how; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("break_ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_how,0}; - PyObject* values[1] = {0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_how); - if (value) { values[0] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "break_") < 0)) __PYX_ERR(0, 580, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - if (values[0]) { - __pyx_v_how = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_how == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 580, __pyx_L3_error) - } else { - __pyx_v_how = __pyx_k__10; - } - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("break_", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 580, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.loop.break_", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_22break_(((struct PyGeventLoopObject *)__pyx_v_self), __pyx_v_how); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_22break_(struct PyGeventLoopObject *__pyx_v_self, int __pyx_v_how) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("break_", 0); - - __pyx_t_1 = __pyx_f_6gevent_5libev_8corecext__check_loop(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 581, __pyx_L1_error) - - ev_break(__pyx_v_self->_ptr, __pyx_v_how); - - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_AddTraceback("gevent.libev.corecext.loop.break_", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_25verify(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_25verify(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("verify (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_24verify(((struct PyGeventLoopObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_24verify(struct PyGeventLoopObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("verify", 0); - - __pyx_t_1 = __pyx_f_6gevent_5libev_8corecext__check_loop(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 585, __pyx_L1_error) - - ev_verify(__pyx_v_self->_ptr); - - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_AddTraceback("gevent.libev.corecext.loop.verify", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_27now(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static ev_tstamp __pyx_f_6gevent_5libev_8corecext_4loop_now(struct PyGeventLoopObject *__pyx_v_self, int __pyx_skip_dispatch) { - ev_tstamp __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - ev_tstamp __pyx_t_5; - int __pyx_t_6; - __Pyx_RefNannySetupContext("now", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_now); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 588, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_4loop_27now)) { - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 588, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 588, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_5 == ((ev_tstamp)-1)) && PyErr_Occurred())) __PYX_ERR(0, 588, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_5; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - __pyx_t_6 = __pyx_f_6gevent_5libev_8corecext__check_loop(__pyx_v_self); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 589, __pyx_L1_error) - - __pyx_r = ev_now(__pyx_v_self->_ptr); - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent.libev.corecext.loop.now", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_27now(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_27now(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("now (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_26now(((struct PyGeventLoopObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_26now(struct PyGeventLoopObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - ev_tstamp __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("now", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_5libev_8corecext_4loop_now(__pyx_v_self, 1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 588, __pyx_L1_error) - __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 588, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent.libev.corecext.loop.now", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_29update_now(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static void __pyx_f_6gevent_5libev_8corecext_4loop_update_now(struct PyGeventLoopObject *__pyx_v_self, int __pyx_skip_dispatch) { - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - __Pyx_RefNannySetupContext("update_now", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_update_now); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 592, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_4loop_29update_now)) { - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 592, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 592, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - __pyx_t_5 = __pyx_f_6gevent_5libev_8corecext__check_loop(__pyx_v_self); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 593, __pyx_L1_error) - - ev_now_update(__pyx_v_self->_ptr); - - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent.libev.corecext.loop.update_now", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_L0:; - __Pyx_RefNannyFinishContext(); -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_29update_now(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_29update_now(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("update_now (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_28update_now(((struct PyGeventLoopObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_28update_now(struct PyGeventLoopObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("update_now", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_f_6gevent_5libev_8corecext_4loop_update_now(__pyx_v_self, 1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 592, __pyx_L1_error) - __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 592, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext.loop.update_now", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_31__repr__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_31__repr__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_30__repr__(((struct PyGeventLoopObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_30__repr__(struct PyGeventLoopObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - __Pyx_RefNannySetupContext("__repr__", 0); - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 599, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 599, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 599, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 599, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (__pyx_t_5) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 599, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 599, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 599, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3); - __pyx_t_2 = 0; - __pyx_t_1 = 0; - __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_s_at_0x_x_s_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 599, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent.libev.corecext.loop.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_7default_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_7default_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_7default___get__(((struct PyGeventLoopObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_7default___get__(struct PyGeventLoopObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - __Pyx_XDECREF(__pyx_r); - if ((__pyx_v_self->_ptr != 0)) { - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_self->_default); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 605, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __pyx_t_2; - __pyx_t_2 = 0; - } else { - __Pyx_INCREF(Py_False); - __pyx_t_1 = Py_False; - } - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent.libev.corecext.loop.default.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_9iteration_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_9iteration_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_9iteration___get__(((struct PyGeventLoopObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_9iteration___get__(struct PyGeventLoopObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - __pyx_t_1 = __pyx_f_6gevent_5libev_8corecext__check_loop(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 609, __pyx_L1_error) - - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyInt_From_unsigned_int(ev_iteration(__pyx_v_self->_ptr)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 610, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent.libev.corecext.loop.iteration.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_5depth_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_5depth_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_5depth___get__(((struct PyGeventLoopObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_5depth___get__(struct PyGeventLoopObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - __pyx_t_1 = __pyx_f_6gevent_5libev_8corecext__check_loop(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 614, __pyx_L1_error) - - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyInt_From_unsigned_int(ev_depth(__pyx_v_self->_ptr)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 615, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent.libev.corecext.loop.depth.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_11backend_int_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_11backend_int_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_11backend_int___get__(((struct PyGeventLoopObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_11backend_int___get__(struct PyGeventLoopObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - __pyx_t_1 = __pyx_f_6gevent_5libev_8corecext__check_loop(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 619, __pyx_L1_error) - - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyInt_From_unsigned_int(ev_backend(__pyx_v_self->_ptr)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 620, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent.libev.corecext.loop.backend_int.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_7backend_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_7backend_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_7backend___get__(((struct PyGeventLoopObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_7backend___get__(struct PyGeventLoopObject *__pyx_v_self) { - unsigned int __pyx_v_backend; - PyObject *__pyx_v_key = NULL; - PyObject *__pyx_v_value = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - Py_ssize_t __pyx_t_4; - PyObject *(*__pyx_t_5)(PyObject *); - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - PyObject *(*__pyx_t_9)(PyObject *); - __Pyx_RefNannySetupContext("__get__", 0); - - __pyx_t_1 = __pyx_f_6gevent_5libev_8corecext__check_loop(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 624, __pyx_L1_error) - - __pyx_v_backend = ev_backend(__pyx_v_self->_ptr); - - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_flags); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 626, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) { - __pyx_t_3 = __pyx_t_2; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0; - __pyx_t_5 = NULL; - } else { - __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 626, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 626, __pyx_L1_error) - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - for (;;) { - if (likely(!__pyx_t_5)) { - if (likely(PyList_CheckExact(__pyx_t_3))) { - if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 626, __pyx_L1_error) - #else - __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 626, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - #endif - } else { - if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 626, __pyx_L1_error) - #else - __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 626, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - #endif - } - } else { - __pyx_t_2 = __pyx_t_5(__pyx_t_3); - if (unlikely(!__pyx_t_2)) { - PyObject* exc_type = PyErr_Occurred(); - if (exc_type) { - if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 626, __pyx_L1_error) - } - break; - } - __Pyx_GOTREF(__pyx_t_2); - } - if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { - PyObject* sequence = __pyx_t_2; - Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); - if (unlikely(size != 2)) { - if (size > 2) __Pyx_RaiseTooManyValuesError(2); - else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 626, __pyx_L1_error) - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - if (likely(PyTuple_CheckExact(sequence))) { - __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); - __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); - } else { - __pyx_t_6 = PyList_GET_ITEM(sequence, 0); - __pyx_t_7 = PyList_GET_ITEM(sequence, 1); - } - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(__pyx_t_7); - #else - __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 626, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 626, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - #endif - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else { - Py_ssize_t index = -1; - __pyx_t_8 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 626, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext; - index = 0; __pyx_t_6 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed; - __Pyx_GOTREF(__pyx_t_6); - index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L5_unpacking_failed; - __Pyx_GOTREF(__pyx_t_7); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) __PYX_ERR(0, 626, __pyx_L1_error) - __pyx_t_9 = NULL; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - goto __pyx_L6_unpacking_done; - __pyx_L5_unpacking_failed:; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_9 = NULL; - if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 626, __pyx_L1_error) - __pyx_L6_unpacking_done:; - } - __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_6); - __pyx_t_6 = 0; - __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_7); - __pyx_t_7 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_unsigned_int(__pyx_v_backend); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 627, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_7 = PyObject_RichCompare(__pyx_v_key, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 627, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 627, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (__pyx_t_1) { - - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_value); - __pyx_r = __pyx_v_value; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L0; - - } - - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __Pyx_PyInt_From_unsigned_int(__pyx_v_backend); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 629, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_AddTraceback("gevent.libev.corecext.loop.backend.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_key); - __Pyx_XDECREF(__pyx_v_value); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_10pendingcnt_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_10pendingcnt_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_10pendingcnt___get__(((struct PyGeventLoopObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_10pendingcnt___get__(struct PyGeventLoopObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - __pyx_t_1 = __pyx_f_6gevent_5libev_8corecext__check_loop(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 633, __pyx_L1_error) - - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyInt_From_unsigned_int(ev_pending_count(__pyx_v_self->_ptr)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 634, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent.libev.corecext.loop.pendingcnt.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_33io(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_33io(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - vfd_socket_t __pyx_v_fd; - int __pyx_v_events; - PyObject *__pyx_v_ref = 0; - PyObject *__pyx_v_priority = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("io (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fd,&__pyx_n_s_events_2,&__pyx_n_s_ref,&__pyx_n_s_priority,0}; - PyObject* values[4] = {0,0,0,0}; - values[2] = ((PyObject *)Py_True); - values[3] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fd)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_events_2)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("io", 0, 2, 4, 1); __PYX_ERR(0, 636, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ref); - if (value) { values[2] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 3: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_priority); - if (value) { values[3] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "io") < 0)) __PYX_ERR(0, 636, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_fd = __Pyx_PyIndex_AsSsize_t(values[0]); if (unlikely((__pyx_v_fd == ((vfd_socket_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 636, __pyx_L3_error) - __pyx_v_events = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_events == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 636, __pyx_L3_error) - __pyx_v_ref = values[2]; - __pyx_v_priority = values[3]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("io", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 636, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.loop.io", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_32io(((struct PyGeventLoopObject *)__pyx_v_self), __pyx_v_fd, __pyx_v_events, __pyx_v_ref, __pyx_v_priority); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_32io(struct PyGeventLoopObject *__pyx_v_self, vfd_socket_t __pyx_v_fd, int __pyx_v_events, PyObject *__pyx_v_ref, PyObject *__pyx_v_priority) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("io", 0); - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 637, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_events); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 637, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 637, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2); - __Pyx_INCREF(__pyx_v_ref); - __Pyx_GIVEREF(__pyx_v_ref); - PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_ref); - __Pyx_INCREF(__pyx_v_priority); - __Pyx_GIVEREF(__pyx_v_priority); - PyTuple_SET_ITEM(__pyx_t_3, 4, __pyx_v_priority); - __pyx_t_1 = 0; - __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6gevent_5libev_8corecext_io), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 637, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent.libev.corecext.loop.io", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_35timer(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_35timer(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - double __pyx_v_after; - double __pyx_v_repeat; - PyObject *__pyx_v_ref = 0; - PyObject *__pyx_v_priority = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("timer (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_after,&__pyx_n_s_repeat,&__pyx_n_s_ref,&__pyx_n_s_priority,0}; - PyObject* values[4] = {0,0,0,0}; - values[2] = ((PyObject *)Py_True); - values[3] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_after)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_repeat); - if (value) { values[1] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ref); - if (value) { values[2] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 3: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_priority); - if (value) { values[3] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "timer") < 0)) __PYX_ERR(0, 639, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_after = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_after == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 639, __pyx_L3_error) - if (values[1]) { - __pyx_v_repeat = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_repeat == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 639, __pyx_L3_error) - } else { - __pyx_v_repeat = ((double)0.0); - } - __pyx_v_ref = values[2]; - __pyx_v_priority = values[3]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("timer", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 639, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.loop.timer", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_34timer(((struct PyGeventLoopObject *)__pyx_v_self), __pyx_v_after, __pyx_v_repeat, __pyx_v_ref, __pyx_v_priority); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_34timer(struct PyGeventLoopObject *__pyx_v_self, double __pyx_v_after, double __pyx_v_repeat, PyObject *__pyx_v_ref, PyObject *__pyx_v_priority) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("timer", 0); - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyFloat_FromDouble(__pyx_v_after); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 640, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyFloat_FromDouble(__pyx_v_repeat); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 640, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 640, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2); - __Pyx_INCREF(__pyx_v_ref); - __Pyx_GIVEREF(__pyx_v_ref); - PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_ref); - __Pyx_INCREF(__pyx_v_priority); - __Pyx_GIVEREF(__pyx_v_priority); - PyTuple_SET_ITEM(__pyx_t_3, 4, __pyx_v_priority); - __pyx_t_1 = 0; - __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6gevent_5libev_8corecext_timer), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 640, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent.libev.corecext.loop.timer", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_37signal(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_37signal(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - int __pyx_v_signum; - PyObject *__pyx_v_ref = 0; - PyObject *__pyx_v_priority = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("signal (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_signum,&__pyx_n_s_ref,&__pyx_n_s_priority,0}; - PyObject* values[3] = {0,0,0}; - values[1] = ((PyObject *)Py_True); - values[2] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_signum)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ref); - if (value) { values[1] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_priority); - if (value) { values[2] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "signal") < 0)) __PYX_ERR(0, 642, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_signum = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_signum == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 642, __pyx_L3_error) - __pyx_v_ref = values[1]; - __pyx_v_priority = values[2]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("signal", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 642, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.loop.signal", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_36signal(((struct PyGeventLoopObject *)__pyx_v_self), __pyx_v_signum, __pyx_v_ref, __pyx_v_priority); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_36signal(struct PyGeventLoopObject *__pyx_v_self, int __pyx_v_signum, PyObject *__pyx_v_ref, PyObject *__pyx_v_priority) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("signal", 0); - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_signum); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 643, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 643, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1); - __Pyx_INCREF(__pyx_v_ref); - __Pyx_GIVEREF(__pyx_v_ref); - PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_ref); - __Pyx_INCREF(__pyx_v_priority); - __Pyx_GIVEREF(__pyx_v_priority); - PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_priority); - __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6gevent_5libev_8corecext_signal), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 643, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent.libev.corecext.loop.signal", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_39idle(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_39idle(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_ref = 0; - PyObject *__pyx_v_priority = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("idle (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ref,&__pyx_n_s_priority,0}; - PyObject* values[2] = {0,0}; - values[0] = ((PyObject *)Py_True); - values[1] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ref); - if (value) { values[0] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_priority); - if (value) { values[1] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "idle") < 0)) __PYX_ERR(0, 645, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_ref = values[0]; - __pyx_v_priority = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("idle", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 645, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.loop.idle", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_38idle(((struct PyGeventLoopObject *)__pyx_v_self), __pyx_v_ref, __pyx_v_priority); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_38idle(struct PyGeventLoopObject *__pyx_v_self, PyObject *__pyx_v_ref, PyObject *__pyx_v_priority) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("idle", 0); - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 646, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self)); - __Pyx_INCREF(__pyx_v_ref); - __Pyx_GIVEREF(__pyx_v_ref); - PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_ref); - __Pyx_INCREF(__pyx_v_priority); - __Pyx_GIVEREF(__pyx_v_priority); - PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_priority); - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6gevent_5libev_8corecext_idle), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 646, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent.libev.corecext.loop.idle", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_41prepare(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_41prepare(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_ref = 0; - PyObject *__pyx_v_priority = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("prepare (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ref,&__pyx_n_s_priority,0}; - PyObject* values[2] = {0,0}; - values[0] = ((PyObject *)Py_True); - values[1] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ref); - if (value) { values[0] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_priority); - if (value) { values[1] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "prepare") < 0)) __PYX_ERR(0, 648, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_ref = values[0]; - __pyx_v_priority = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("prepare", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 648, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.loop.prepare", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_40prepare(((struct PyGeventLoopObject *)__pyx_v_self), __pyx_v_ref, __pyx_v_priority); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_40prepare(struct PyGeventLoopObject *__pyx_v_self, PyObject *__pyx_v_ref, PyObject *__pyx_v_priority) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("prepare", 0); - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 649, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self)); - __Pyx_INCREF(__pyx_v_ref); - __Pyx_GIVEREF(__pyx_v_ref); - PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_ref); - __Pyx_INCREF(__pyx_v_priority); - __Pyx_GIVEREF(__pyx_v_priority); - PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_priority); - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6gevent_5libev_8corecext_prepare), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 649, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent.libev.corecext.loop.prepare", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_43check(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_43check(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_ref = 0; - PyObject *__pyx_v_priority = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("check (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ref,&__pyx_n_s_priority,0}; - PyObject* values[2] = {0,0}; - values[0] = ((PyObject *)Py_True); - values[1] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ref); - if (value) { values[0] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_priority); - if (value) { values[1] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "check") < 0)) __PYX_ERR(0, 651, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_ref = values[0]; - __pyx_v_priority = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("check", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 651, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.loop.check", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_42check(((struct PyGeventLoopObject *)__pyx_v_self), __pyx_v_ref, __pyx_v_priority); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_42check(struct PyGeventLoopObject *__pyx_v_self, PyObject *__pyx_v_ref, PyObject *__pyx_v_priority) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("check", 0); - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 652, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self)); - __Pyx_INCREF(__pyx_v_ref); - __Pyx_GIVEREF(__pyx_v_ref); - PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_ref); - __Pyx_INCREF(__pyx_v_priority); - __Pyx_GIVEREF(__pyx_v_priority); - PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_priority); - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6gevent_5libev_8corecext_check), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 652, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent.libev.corecext.loop.check", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_45fork(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_45fork(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_ref = 0; - PyObject *__pyx_v_priority = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("fork (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ref,&__pyx_n_s_priority,0}; - PyObject* values[2] = {0,0}; - values[0] = ((PyObject *)Py_True); - values[1] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ref); - if (value) { values[0] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_priority); - if (value) { values[1] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "fork") < 0)) __PYX_ERR(0, 654, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_ref = values[0]; - __pyx_v_priority = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("fork", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 654, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.loop.fork", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_44fork(((struct PyGeventLoopObject *)__pyx_v_self), __pyx_v_ref, __pyx_v_priority); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_44fork(struct PyGeventLoopObject *__pyx_v_self, PyObject *__pyx_v_ref, PyObject *__pyx_v_priority) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("fork", 0); - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 655, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self)); - __Pyx_INCREF(__pyx_v_ref); - __Pyx_GIVEREF(__pyx_v_ref); - PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_ref); - __Pyx_INCREF(__pyx_v_priority); - __Pyx_GIVEREF(__pyx_v_priority); - PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_priority); - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6gevent_5libev_8corecext_fork), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 655, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent.libev.corecext.loop.fork", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_47async_(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_47async_(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_ref = 0; - PyObject *__pyx_v_priority = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("async_ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ref,&__pyx_n_s_priority,0}; - PyObject* values[2] = {0,0}; - values[0] = ((PyObject *)Py_True); - values[1] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ref); - if (value) { values[0] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_priority); - if (value) { values[1] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "async_") < 0)) __PYX_ERR(0, 657, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_ref = values[0]; - __pyx_v_priority = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("async_", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 657, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.loop.async_", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_46async_(((struct PyGeventLoopObject *)__pyx_v_self), __pyx_v_ref, __pyx_v_priority); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_46async_(struct PyGeventLoopObject *__pyx_v_self, PyObject *__pyx_v_ref, PyObject *__pyx_v_priority) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("async_", 0); - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 658, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self)); - __Pyx_INCREF(__pyx_v_ref); - __Pyx_GIVEREF(__pyx_v_ref); - PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_ref); - __Pyx_INCREF(__pyx_v_priority); - __Pyx_GIVEREF(__pyx_v_priority); - PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_priority); - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6gevent_5libev_8corecext_async_), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 658, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent.libev.corecext.loop.async_", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_49child(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_49child(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - int __pyx_v_pid; - int __pyx_v_trace; - PyObject *__pyx_v_ref = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("child (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pid,&__pyx_n_s_trace,&__pyx_n_s_ref,0}; - PyObject* values[3] = {0,0,0}; - values[2] = ((PyObject *)Py_True); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pid)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_trace); - if (value) { values[1] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ref); - if (value) { values[2] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "child") < 0)) __PYX_ERR(0, 663, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_pid = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_pid == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 663, __pyx_L3_error) - if (values[1]) { - __pyx_v_trace = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_trace == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 663, __pyx_L3_error) - } else { - __pyx_v_trace = ((int)0); - } - __pyx_v_ref = values[2]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("child", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 663, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.loop.child", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_48child(((struct PyGeventLoopObject *)__pyx_v_self), __pyx_v_pid, __pyx_v_trace, __pyx_v_ref); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_48child(struct PyGeventLoopObject *__pyx_v_self, int __pyx_v_pid, int __pyx_v_trace, PyObject *__pyx_v_ref) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("child", 0); - - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 664, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_platform); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 664, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_win32, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 664, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(__pyx_t_3)) { - - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 665, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 665, __pyx_L1_error) - - } - - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_pid); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 666, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_trace); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 666, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 666, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_1); - __Pyx_INCREF(__pyx_v_ref); - __Pyx_GIVEREF(__pyx_v_ref); - PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_v_ref); - __pyx_t_2 = 0; - __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6gevent_5libev_8corecext_child), __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 666, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent.libev.corecext.loop.child", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_51install_sigchld(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_51install_sigchld(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("install_sigchld (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_50install_sigchld(((struct PyGeventLoopObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_50install_sigchld(CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("install_sigchld", 0); - - gevent_install_sigchld_handler(); - - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_53reset_sigchld(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_53reset_sigchld(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("reset_sigchld (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_52reset_sigchld(((struct PyGeventLoopObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_52reset_sigchld(CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("reset_sigchld", 0); - - gevent_reset_sigchld_handler(); - - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_55stat(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_55stat(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_path = 0; - float __pyx_v_interval; - PyObject *__pyx_v_ref = 0; - PyObject *__pyx_v_priority = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("stat (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_interval,&__pyx_n_s_ref,&__pyx_n_s_priority,0}; - PyObject* values[4] = {0,0,0,0}; - values[2] = ((PyObject *)Py_True); - values[3] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_path)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_interval); - if (value) { values[1] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ref); - if (value) { values[2] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 3: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_priority); - if (value) { values[3] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "stat") < 0)) __PYX_ERR(0, 674, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_path = ((PyObject*)values[0]); - if (values[1]) { - __pyx_v_interval = __pyx_PyFloat_AsFloat(values[1]); if (unlikely((__pyx_v_interval == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 674, __pyx_L3_error) - } else { - __pyx_v_interval = ((float)0.0); - } - __pyx_v_ref = values[2]; - __pyx_v_priority = values[3]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("stat", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 674, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.loop.stat", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(0, 674, __pyx_L1_error) - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_54stat(((struct PyGeventLoopObject *)__pyx_v_self), __pyx_v_path, __pyx_v_interval, __pyx_v_ref, __pyx_v_priority); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = NULL; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_54stat(struct PyGeventLoopObject *__pyx_v_self, PyObject *__pyx_v_path, float __pyx_v_interval, PyObject *__pyx_v_ref, PyObject *__pyx_v_priority) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("stat", 0); - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyFloat_FromDouble(__pyx_v_interval); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 675, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 675, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_self)); - __Pyx_INCREF(__pyx_v_path); - __Pyx_GIVEREF(__pyx_v_path); - PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_path); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_1); - __Pyx_INCREF(__pyx_v_ref); - __Pyx_GIVEREF(__pyx_v_ref); - PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_ref); - __Pyx_INCREF(__pyx_v_priority); - __Pyx_GIVEREF(__pyx_v_priority); - PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_v_priority); - __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6gevent_5libev_8corecext_stat), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 675, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent.libev.corecext.loop.stat", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_57run_callback(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_57run_callback(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_func = 0; - PyObject *__pyx_v_args = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("run_callback (wrapper)", 0); - if (PyTuple_GET_SIZE(__pyx_args) > 1) { - __pyx_v_args = PyTuple_GetSlice(__pyx_args, 1, PyTuple_GET_SIZE(__pyx_args)); - if (unlikely(!__pyx_v_args)) { - __Pyx_RefNannyFinishContext(); - return NULL; - } - __Pyx_GOTREF(__pyx_v_args); - } else { - __pyx_v_args = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple); - } - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_func,0}; - PyObject* values[1] = {0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - default: - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_func)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t used_pos_args = (pos_args < 1) ? pos_args : 1; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "run_callback") < 0)) __PYX_ERR(0, 677, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) < 1) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - } - __pyx_v_func = values[0]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("run_callback", 0, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 677, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0; - __Pyx_AddTraceback("gevent.libev.corecext.loop.run_callback", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_56run_callback(((struct PyGeventLoopObject *)__pyx_v_self), __pyx_v_func, __pyx_v_args); - - /* function exit code */ - __Pyx_XDECREF(__pyx_v_args); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_56run_callback(struct PyGeventLoopObject *__pyx_v_self, PyObject *__pyx_v_func, PyObject *__pyx_v_args) { - struct PyGeventCallbackObject *__pyx_v_cb = 0; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("run_callback", 0); - - __pyx_t_1 = __pyx_f_6gevent_5libev_8corecext__check_loop(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 678, __pyx_L1_error) - - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 679, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_v_func); - __Pyx_GIVEREF(__pyx_v_func); - PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_func); - __Pyx_INCREF(__pyx_v_args); - __Pyx_GIVEREF(__pyx_v_args); - PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_args); - __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6gevent_5libev_8corecext_callback), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 679, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_cb = ((struct PyGeventCallbackObject *)__pyx_t_3); - __pyx_t_3 = 0; - - __pyx_t_3 = __pyx_f_6gevent_5libev_8corecext_12CallbackFIFO_append(__pyx_v_self->_callbacks, __pyx_v_cb); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 680, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - ev_ref(__pyx_v_self->_ptr); - - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_v_cb)); - __pyx_r = ((PyObject *)__pyx_v_cb); - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent.libev.corecext.loop.run_callback", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_cb); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_59_format(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_59_format(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_format (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_58_format(((struct PyGeventLoopObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_58_format(struct PyGeventLoopObject *__pyx_v_self) { - PyObject *__pyx_v_msg = 0; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("_format", 0); - - __pyx_t_1 = ((!(__pyx_v_self->_ptr != 0)) != 0); - if (__pyx_t_1) { - - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_n_s_destroyed); - __pyx_r = __pyx_n_s_destroyed; - goto __pyx_L0; - - } - - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_backend); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 687, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_v_msg = __pyx_t_2; - __pyx_t_2 = 0; - - __pyx_t_1 = (__pyx_v_self->_default != 0); - if (__pyx_t_1) { - - __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_msg, __pyx_kp_s_default_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 689, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF_SET(__pyx_v_msg, __pyx_t_2); - __pyx_t_2 = 0; - - } - - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_pendingcnt); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 690, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_pending_s, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 690, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_msg, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 690, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF_SET(__pyx_v_msg, __pyx_t_2); - __pyx_t_2 = 0; - - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format_details); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 691, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 691, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 691, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_msg, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 691, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF_SET(__pyx_v_msg, __pyx_t_3); - __pyx_t_3 = 0; - - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_msg); - __pyx_r = __pyx_v_msg; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent.libev.corecext.loop._format", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_msg); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_61_format_details(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_61_format_details(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_format_details (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_60_format_details(((struct PyGeventLoopObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_60_format_details(struct PyGeventLoopObject *__pyx_v_self) { - PyObject *__pyx_v_msg = 0; - PyObject *__pyx_v_fileno = 0; - PyObject *__pyx_v_activecnt = 0; - CYTHON_UNUSED PyObject *__pyx_v_sigfd = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - int __pyx_t_7; - int __pyx_t_8; - int __pyx_t_9; - __Pyx_RefNannySetupContext("_format_details", 0); - - __Pyx_INCREF(__pyx_kp_s__8); - __pyx_v_msg = __pyx_kp_s__8; - - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_fileno); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 696, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 696, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 696, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_fileno = __pyx_t_1; - __pyx_t_1 = 0; - - __Pyx_INCREF(Py_None); - __pyx_v_activecnt = Py_None; - - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6); - __Pyx_XGOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_t_5); - __Pyx_XGOTREF(__pyx_t_6); - /*try:*/ { - - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_sigfd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 699, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_sigfd = __pyx_t_1; - __pyx_t_1 = 0; - - } - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - goto __pyx_L8_try_end; - __pyx_L3_error:; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - - __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError); - if (__pyx_t_7) { - __Pyx_AddTraceback("gevent.libev.corecext.loop._format_details", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(0, 700, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GOTREF(__pyx_t_3); - - __Pyx_INCREF(Py_None); - __Pyx_XDECREF_SET(__pyx_v_sigfd, Py_None); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L4_exception_handled; - } - goto __pyx_L5_except_error; - __pyx_L5_except_error:; - - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); - goto __pyx_L1_error; - __pyx_L4_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); - __pyx_L8_try_end:; - } - - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4); - __Pyx_XGOTREF(__pyx_t_6); - __Pyx_XGOTREF(__pyx_t_5); - __Pyx_XGOTREF(__pyx_t_4); - /*try:*/ { - - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_activecnt); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 703, __pyx_L11_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF_SET(__pyx_v_activecnt, __pyx_t_3); - __pyx_t_3 = 0; - - } - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - goto __pyx_L16_try_end; - __pyx_L11_error:; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - - __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError); - if (__pyx_t_7) { - __Pyx_ErrRestore(0,0,0); - goto __pyx_L12_exception_handled; - } - goto __pyx_L13_except_error; - __pyx_L13_except_error:; - - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_5, __pyx_t_4); - goto __pyx_L1_error; - __pyx_L12_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_5, __pyx_t_4); - __pyx_L16_try_end:; - } - - __pyx_t_8 = (__pyx_v_activecnt != Py_None); - __pyx_t_9 = (__pyx_t_8 != 0); - if (__pyx_t_9) { - - __pyx_t_3 = PyObject_Repr(__pyx_v_activecnt); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 707, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = PyNumber_Add(__pyx_kp_s_ref_2, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 707, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_msg, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 707, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF_SET(__pyx_v_msg, ((PyObject*)__pyx_t_3)); - __pyx_t_3 = 0; - - } - - __pyx_t_9 = (__pyx_v_fileno != Py_None); - __pyx_t_8 = (__pyx_t_9 != 0); - if (__pyx_t_8) { - - __pyx_t_3 = PyObject_Repr(__pyx_v_fileno); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 709, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = PyNumber_Add(__pyx_kp_s_fileno_2, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 709, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_msg, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 709, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF_SET(__pyx_v_msg, ((PyObject*)__pyx_t_3)); - __pyx_t_3 = 0; - - } - - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_msg); - __pyx_r = __pyx_v_msg; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent.libev.corecext.loop._format_details", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_msg); - __Pyx_XDECREF(__pyx_v_fileno); - __Pyx_XDECREF(__pyx_v_activecnt); - __Pyx_XDECREF(__pyx_v_sigfd); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_63fileno(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_63fileno(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("fileno (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_62fileno(((struct PyGeventLoopObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_62fileno(struct PyGeventLoopObject *__pyx_v_self) { - int __pyx_v_fd; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("fileno", 0); - - __pyx_t_1 = (__pyx_v_self->_ptr != 0); - if (__pyx_t_1) { - - __pyx_v_fd = gevent_ev_loop_backend_fd(__pyx_v_self->_ptr); - - __pyx_t_1 = ((__pyx_v_fd >= 0) != 0); - if (__pyx_t_1) { - - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_fd); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 717, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - } - - } - - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent.libev.corecext.loop.fileno", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_9activecnt_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_9activecnt_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_9activecnt___get__(((struct PyGeventLoopObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_9activecnt___get__(struct PyGeventLoopObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - __pyx_t_1 = __pyx_f_6gevent_5libev_8corecext__check_loop(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 721, __pyx_L1_error) - - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyInt_From_int(gevent_ev_loop_activecnt(__pyx_v_self->_ptr)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 722, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent.libev.corecext.loop.activecnt.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_11sig_pending_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_11sig_pending_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_11sig_pending___get__(((struct PyGeventLoopObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_11sig_pending___get__(struct PyGeventLoopObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - __pyx_t_1 = __pyx_f_6gevent_5libev_8corecext__check_loop(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 726, __pyx_L1_error) - - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyInt_From_int(gevent_ev_loop_sig_pending(__pyx_v_self->_ptr)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 727, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent.libev.corecext.loop.sig_pending.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_9origflags_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_9origflags_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_9origflags___get__(((struct PyGeventLoopObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_9origflags___get__(struct PyGeventLoopObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - unsigned int __pyx_t_2; - __Pyx_RefNannySetupContext("__get__", 0); - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_origflags_int); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 731, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyInt_As_unsigned_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 731, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __pyx_f_6gevent_5libev_8corecext__flags_to_list(__pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 731, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext.loop.origflags.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_13origflags_int_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_13origflags_int_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_13origflags_int___get__(((struct PyGeventLoopObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_13origflags_int___get__(struct PyGeventLoopObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - __pyx_t_1 = __pyx_f_6gevent_5libev_8corecext__check_loop(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 735, __pyx_L1_error) - - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyInt_From_unsigned_int(gevent_ev_loop_origflags(__pyx_v_self->_ptr)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 736, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent.libev.corecext.loop.origflags_int.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_5sigfd_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_5sigfd_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_5sigfd___get__(((struct PyGeventLoopObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_5sigfd___get__(struct PyGeventLoopObject *__pyx_v_self) { - int __pyx_v_fd; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - __pyx_t_1 = __pyx_f_6gevent_5libev_8corecext__check_loop(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 740, __pyx_L1_error) - - __pyx_v_fd = gevent_ev_loop_sigfd(__pyx_v_self->_ptr); - - __pyx_t_1 = ((__pyx_v_fd >= 0) != 0); - if (__pyx_t_1) { - - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_fd); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 743, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - } - - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 746, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 746, __pyx_L1_error) - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent.libev.corecext.loop.sigfd.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_13error_handler_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_13error_handler_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_13error_handler___get__(((struct PyGeventLoopObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_13error_handler___get__(struct PyGeventLoopObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->error_handler); - __pyx_r = __pyx_v_self->error_handler; - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_4loop_13error_handler_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_4loop_13error_handler_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_13error_handler_2__set__(((struct PyGeventLoopObject *)__pyx_v_self), ((PyObject *)__pyx_v_value)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_4loop_13error_handler_2__set__(struct PyGeventLoopObject *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__", 0); - __Pyx_INCREF(__pyx_v_value); - __Pyx_GIVEREF(__pyx_v_value); - __Pyx_GOTREF(__pyx_v_self->error_handler); - __Pyx_DECREF(__pyx_v_self->error_handler); - __pyx_v_self->error_handler = __pyx_v_value; - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_4loop_13error_handler_5__del__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_4loop_13error_handler_5__del__(PyObject *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_13error_handler_4__del__(((struct PyGeventLoopObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_4loop_13error_handler_4__del__(struct PyGeventLoopObject *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__del__", 0); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->error_handler); - __Pyx_DECREF(__pyx_v_self->error_handler); - __pyx_v_self->error_handler = Py_None; - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_10_callbacks_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4loop_10_callbacks_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_10_callbacks___get__(((struct PyGeventLoopObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4loop_10_callbacks___get__(struct PyGeventLoopObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_v_self->_callbacks)); - __pyx_r = ((PyObject *)__pyx_v_self->_callbacks); - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_4loop_10_callbacks_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_4loop_10_callbacks_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_10_callbacks_2__set__(((struct PyGeventLoopObject *)__pyx_v_self), ((PyObject *)__pyx_v_value)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_4loop_10_callbacks_2__set__(struct PyGeventLoopObject *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__set__", 0); - if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_6gevent_5libev_8corecext_CallbackFIFO))))) __PYX_ERR(0, 386, __pyx_L1_error) - __pyx_t_1 = __pyx_v_value; - __Pyx_INCREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->_callbacks); - __Pyx_DECREF(((PyObject *)__pyx_v_self->_callbacks)); - __pyx_v_self->_callbacks = ((struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *)__pyx_t_1); - __pyx_t_1 = 0; - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext.loop._callbacks.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_4loop_10_callbacks_5__del__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_4loop_10_callbacks_5__del__(PyObject *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4loop_10_callbacks_4__del__(((struct PyGeventLoopObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_4loop_10_callbacks_4__del__(struct PyGeventLoopObject *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__del__", 0); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->_callbacks); - __Pyx_DECREF(((PyObject *)__pyx_v_self->_callbacks)); - __pyx_v_self->_callbacks = ((struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *)Py_None); - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -static void __pyx_f_6gevent_5libev_8corecext__python_incref(struct PyGeventWatcherObject *__pyx_v_self) { - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("_python_incref", 0); - - __pyx_t_1 = ((!((__pyx_v_self->_flags & 1) != 0)) != 0); - if (__pyx_t_1) { - - Py_INCREF(((PyObject *)__pyx_v_self)); - - __pyx_v_self->_flags = (__pyx_v_self->_flags | 1); - - } - - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - - -static void __pyx_f_6gevent_5libev_8corecext__python_decref(struct PyGeventWatcherObject *__pyx_v_self) { - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("_python_decref", 0); - - __pyx_t_1 = ((__pyx_v_self->_flags & 1) != 0); - if (__pyx_t_1) { - - Py_DECREF(((PyObject *)__pyx_v_self)); - - __pyx_v_self->_flags = (__pyx_v_self->_flags & (~1)); - - } - - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - - -static void __pyx_f_6gevent_5libev_8corecext__libev_ref(struct PyGeventWatcherObject *__pyx_v_self) { - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("_libev_ref", 0); - - __pyx_t_1 = ((__pyx_v_self->_flags & 2) != 0); - if (__pyx_t_1) { - - ev_ref(__pyx_v_self->loop->_ptr); - - __pyx_v_self->_flags = (__pyx_v_self->_flags & (~2)); - - } - - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - - -static void __pyx_f_6gevent_5libev_8corecext__libev_unref(struct PyGeventWatcherObject *__pyx_v_self) { - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("_libev_unref", 0); - - __pyx_t_1 = (((__pyx_v_self->_flags & 6) == 4) != 0); - if (__pyx_t_1) { - - ev_unref(__pyx_v_self->loop->_ptr); - - __pyx_v_self->_flags = (__pyx_v_self->_flags | 2); - - } - - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - - -static struct __pyx_t_6gevent_5libev_8corecext_start_and_stop __pyx_f_6gevent_5libev_8corecext_make_ss(void *__pyx_v_start, void *__pyx_v_stop) { - struct __pyx_t_6gevent_5libev_8corecext_start_and_stop __pyx_v_result; - struct __pyx_t_6gevent_5libev_8corecext_start_and_stop __pyx_r; - __Pyx_RefNannyDeclarations - struct __pyx_t_6gevent_5libev_8corecext_start_and_stop __pyx_t_1; - __Pyx_RefNannySetupContext("make_ss", 0); - - __pyx_t_1.start = ((__pyx_t_6gevent_5libev_8corecext_start_stop_func)__pyx_v_start); - __pyx_t_1.stop = ((__pyx_t_6gevent_5libev_8corecext_start_stop_func)__pyx_v_stop); - __pyx_v_result = __pyx_t_1; - - __pyx_r = __pyx_v_result; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -static int __pyx_f_6gevent_5libev_8corecext__watcher_start(struct PyGeventWatcherObject *__pyx_v_self, PyObject *__pyx_v_callback, PyObject *__pyx_v_args) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - int __pyx_t_3; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - __Pyx_RefNannySetupContext("_watcher_start", 0); - - __pyx_t_1 = ((PyObject *)__pyx_v_self->loop); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_2 = __pyx_f_6gevent_5libev_8corecext__check_loop(((struct PyGeventLoopObject *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 805, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - __pyx_t_3 = (__pyx_v_callback == Py_None); - __pyx_t_4 = (__pyx_t_3 != 0); - if (!__pyx_t_4) { - } else { - __pyx_t_2 = __pyx_t_4; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_4 = __Pyx_PyCallable_Check(__pyx_v_callback); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 806, __pyx_L1_error) - __pyx_t_3 = ((!(__pyx_t_4 != 0)) != 0); - __pyx_t_2 = __pyx_t_3; - __pyx_L4_bool_binop_done:; - if (unlikely(__pyx_t_2)) { - - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 807, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_v_callback); - __Pyx_GIVEREF(__pyx_v_callback); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_callback); - __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_Expected_callable_not_r, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 807, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 807, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 807, __pyx_L1_error) - - } - - __Pyx_INCREF(__pyx_v_callback); - __Pyx_GIVEREF(__pyx_v_callback); - __Pyx_GOTREF(__pyx_v_self->_callback); - __Pyx_DECREF(__pyx_v_self->_callback); - __pyx_v_self->_callback = __pyx_v_callback; - - __Pyx_INCREF(__pyx_v_args); - __Pyx_GIVEREF(__pyx_v_args); - __Pyx_GOTREF(__pyx_v_self->args); - __Pyx_DECREF(__pyx_v_self->args); - __pyx_v_self->args = __pyx_v_args; - - __pyx_f_6gevent_5libev_8corecext__libev_unref(__pyx_v_self); - - __pyx_f_6gevent_5libev_8corecext__python_incref(__pyx_v_self); - - __pyx_v_self->__pyx___ss->start(__pyx_v_self->loop->_ptr, __pyx_v_self->__pyx___watcher); - - __pyx_r = 1; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent.libev.corecext._watcher_start", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_7watcher_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_7watcher_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - struct PyGeventLoopObject *__pyx_v_loop = 0; - PyObject *__pyx_v_ref = 0; - PyObject *__pyx_v_priority = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_loop,&__pyx_n_s_ref,&__pyx_n_s_priority,0}; - PyObject* values[3] = {0,0,0}; - values[1] = ((PyObject *)Py_True); - values[2] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ref); - if (value) { values[1] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_priority); - if (value) { values[2] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 860, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_loop = ((struct PyGeventLoopObject *)values[0]); - __pyx_v_ref = values[1]; - __pyx_v_priority = values[2]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 860, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.watcher.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loop), __pyx_ptype_6gevent_5libev_8corecext_loop, 1, "loop", 0))) __PYX_ERR(0, 860, __pyx_L1_error) - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_7watcher___init__(((struct PyGeventWatcherObject *)__pyx_v_self), __pyx_v_loop, __pyx_v_ref, __pyx_v_priority); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_7watcher___init__(struct PyGeventWatcherObject *__pyx_v_self, struct PyGeventLoopObject *__pyx_v_loop, PyObject *__pyx_v_ref, PyObject *__pyx_v_priority) { - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - unsigned int __pyx_t_4; - int __pyx_t_5; - __Pyx_RefNannySetupContext("__init__", 0); - - __pyx_t_2 = ((!(__pyx_v_self->__pyx___watcher != 0)) != 0); - if (!__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_2 = ((!(__pyx_v_self->__pyx___ss->start != 0)) != 0); - if (!__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_2 = ((!(__pyx_v_self->__pyx___ss->stop != 0)) != 0); - __pyx_t_1 = __pyx_t_2; - __pyx_L4_bool_binop_done:; - if (unlikely(__pyx_t_1)) { - - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 862, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 862, __pyx_L1_error) - - } - - __Pyx_INCREF(((PyObject *)__pyx_v_loop)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_loop)); - __Pyx_GOTREF(__pyx_v_self->loop); - __Pyx_DECREF(((PyObject *)__pyx_v_self->loop)); - __pyx_v_self->loop = __pyx_v_loop; - - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_ref); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 864, __pyx_L1_error) - if (__pyx_t_1) { - __pyx_t_4 = 0; - } else { - __pyx_t_4 = 4; - } - __pyx_v_self->_flags = __pyx_t_4; - - __pyx_t_1 = (__pyx_v_priority != Py_None); - __pyx_t_2 = (__pyx_t_1 != 0); - if (__pyx_t_2) { - - __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_priority); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 866, __pyx_L1_error) - ev_set_priority(__pyx_v_self->__pyx___watcher, __pyx_t_5); - - } - - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent.libev.corecext.watcher.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_7watcher_3ref_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_7watcher_3ref_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_7watcher_3ref___get__(((struct PyGeventWatcherObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_7watcher_3ref___get__(struct PyGeventWatcherObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - __Pyx_XDECREF(__pyx_r); - if (((__pyx_v_self->_flags & 4) != 0)) { - __Pyx_INCREF(Py_False); - __pyx_t_1 = Py_False; - } else { - __Pyx_INCREF(Py_True); - __pyx_t_1 = Py_True; - } - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_7watcher_3ref_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_7watcher_3ref_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_7watcher_3ref_2__set__(((struct PyGeventWatcherObject *)__pyx_v_self), ((PyObject *)__pyx_v_value)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_7watcher_3ref_2__set__(struct PyGeventWatcherObject *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - int __pyx_t_3; - __Pyx_RefNannySetupContext("__set__", 0); - - __pyx_t_1 = ((PyObject *)__pyx_v_self->loop); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_2 = __pyx_f_6gevent_5libev_8corecext__check_loop(((struct PyGeventLoopObject *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 874, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 875, __pyx_L1_error) - if (__pyx_t_2) { - - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_ref); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 877, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 877, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (__pyx_t_2) { - - __pyx_r = 0; - goto __pyx_L0; - - } - - __pyx_t_2 = ((__pyx_v_self->_flags & 2) != 0); - if (__pyx_t_2) { - - ev_ref(__pyx_v_self->loop->_ptr); - - } - - __pyx_v_self->_flags = (__pyx_v_self->_flags & (~6)); - - goto __pyx_L3; - } - - /*else*/ { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_ref); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 886, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 886, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_3 = ((!__pyx_t_2) != 0); - if (__pyx_t_3) { - - __pyx_r = 0; - goto __pyx_L0; - - } - - __pyx_v_self->_flags = (__pyx_v_self->_flags | 4); - - __pyx_t_2 = ((!((__pyx_v_self->_flags & 2) != 0)) != 0); - if (__pyx_t_2) { - } else { - __pyx_t_3 = __pyx_t_2; - goto __pyx_L8_bool_binop_done; - } - __pyx_t_2 = (ev_is_active(__pyx_v_self->__pyx___watcher) != 0); - __pyx_t_3 = __pyx_t_2; - __pyx_L8_bool_binop_done:; - if (__pyx_t_3) { - - ev_unref(__pyx_v_self->loop->_ptr); - - __pyx_v_self->_flags = (__pyx_v_self->_flags | 2); - - } - } - __pyx_L3:; - - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext.watcher.ref.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_7watcher_8callback_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_7watcher_8callback_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_7watcher_8callback___get__(((struct PyGeventWatcherObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_7watcher_8callback___get__(struct PyGeventWatcherObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->_callback); - __pyx_r = __pyx_v_self->_callback; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_7watcher_8callback_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_callback); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_7watcher_8callback_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_callback) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_7watcher_8callback_2__set__(((struct PyGeventWatcherObject *)__pyx_v_self), ((PyObject *)__pyx_v_callback)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_7watcher_8callback_2__set__(struct PyGeventWatcherObject *__pyx_v_self, PyObject *__pyx_v_callback) { - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - __Pyx_RefNannySetupContext("__set__", 0); - - __pyx_t_2 = (__pyx_v_callback != Py_None); - __pyx_t_3 = (__pyx_t_2 != 0); - if (__pyx_t_3) { - } else { - __pyx_t_1 = __pyx_t_3; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_3 = __Pyx_PyCallable_Check(__pyx_v_callback); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 899, __pyx_L1_error) - __pyx_t_2 = ((!(__pyx_t_3 != 0)) != 0); - __pyx_t_1 = __pyx_t_2; - __pyx_L4_bool_binop_done:; - if (unlikely(__pyx_t_1)) { - - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 900, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_INCREF(__pyx_v_callback); - __Pyx_GIVEREF(__pyx_v_callback); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_callback); - __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_Expected_callable_not_r, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 900, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 900, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_Raise(__pyx_t_4, 0, 0, 0); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __PYX_ERR(0, 900, __pyx_L1_error) - - } - - __Pyx_INCREF(__pyx_v_callback); - __Pyx_GIVEREF(__pyx_v_callback); - __Pyx_GOTREF(__pyx_v_self->_callback); - __Pyx_DECREF(__pyx_v_self->_callback); - __pyx_v_self->_callback = __pyx_v_callback; - - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent.libev.corecext.watcher.callback.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_7watcher_8priority_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_7watcher_8priority_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_7watcher_8priority___get__(((struct PyGeventWatcherObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_7watcher_8priority___get__(struct PyGeventWatcherObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(ev_priority(__pyx_v_self->__pyx___watcher)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 905, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext.watcher.priority.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_7watcher_8priority_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_priority); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_7watcher_8priority_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_priority) { - int __pyx_v_priority; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); - assert(__pyx_arg_priority); { - __pyx_v_priority = __Pyx_PyInt_As_int(__pyx_arg_priority); if (unlikely((__pyx_v_priority == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 908, __pyx_L3_error) - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.watcher.priority.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_7watcher_8priority_2__set__(((struct PyGeventWatcherObject *)__pyx_v_self), ((int)__pyx_v_priority)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_7watcher_8priority_2__set__(struct PyGeventWatcherObject *__pyx_v_self, int __pyx_v_priority) { - struct ev_watcher *__pyx_v_w; - int __pyx_r; - __Pyx_RefNannyDeclarations - struct ev_watcher *__pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("__set__", 0); - - __pyx_t_1 = __pyx_v_self->__pyx___watcher; - __pyx_v_w = __pyx_t_1; - - __pyx_t_2 = (ev_is_active(__pyx_v_w) != 0); - if (unlikely(__pyx_t_2)) { - - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 911, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 911, __pyx_L1_error) - - } - - ev_set_priority(__pyx_v_w, __pyx_v_priority); - - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent.libev.corecext.watcher.priority.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_7watcher_6active_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_7watcher_6active_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_7watcher_6active___get__(((struct PyGeventWatcherObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_7watcher_6active___get__(struct PyGeventWatcherObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - __Pyx_XDECREF(__pyx_r); - if ((ev_is_active(__pyx_v_self->__pyx___watcher) != 0)) { - __Pyx_INCREF(Py_True); - __pyx_t_1 = Py_True; - } else { - __Pyx_INCREF(Py_False); - __pyx_t_1 = Py_False; - } - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_7watcher_7pending_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_7watcher_7pending_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_7watcher_7pending___get__(((struct PyGeventWatcherObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_7watcher_7pending___get__(struct PyGeventWatcherObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - __Pyx_XDECREF(__pyx_r); - if ((ev_is_pending(__pyx_v_self->__pyx___watcher) != 0)) { - __Pyx_INCREF(Py_True); - __pyx_t_1 = Py_True; - } else { - __Pyx_INCREF(Py_False); - __pyx_t_1 = Py_False; - } - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_7watcher_3start(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_7watcher_3start(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_callback = 0; - PyObject *__pyx_v_args = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("start (wrapper)", 0); - if (PyTuple_GET_SIZE(__pyx_args) > 1) { - __pyx_v_args = PyTuple_GetSlice(__pyx_args, 1, PyTuple_GET_SIZE(__pyx_args)); - if (unlikely(!__pyx_v_args)) { - __Pyx_RefNannyFinishContext(); - return NULL; - } - __Pyx_GOTREF(__pyx_v_args); - } else { - __pyx_v_args = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple); - } - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback,0}; - PyObject* values[1] = {0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - default: - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t used_pos_args = (pos_args < 1) ? pos_args : 1; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "start") < 0)) __PYX_ERR(0, 922, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) < 1) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - } - __pyx_v_callback = values[0]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("start", 0, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 922, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0; - __Pyx_AddTraceback("gevent.libev.corecext.watcher.start", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_7watcher_2start(((struct PyGeventWatcherObject *)__pyx_v_self), __pyx_v_callback, __pyx_v_args); - - /* function exit code */ - __Pyx_XDECREF(__pyx_v_args); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_7watcher_2start(struct PyGeventWatcherObject *__pyx_v_self, PyObject *__pyx_v_callback, PyObject *__pyx_v_args) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("start", 0); - - __pyx_t_1 = __pyx_f_6gevent_5libev_8corecext__watcher_start(__pyx_v_self, __pyx_v_callback, __pyx_v_args); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 923, __pyx_L1_error) - - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_AddTraceback("gevent.libev.corecext.watcher.start", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_7watcher_5stop(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_7watcher_5stop(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("stop (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_7watcher_4stop(((struct PyGeventWatcherObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_7watcher_4stop(struct PyGeventWatcherObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - __Pyx_RefNannySetupContext("stop", 0); - - __pyx_t_1 = ((PyObject *)__pyx_v_self->loop); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_2 = __pyx_f_6gevent_5libev_8corecext__check_loop(((struct PyGeventLoopObject *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 926, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - __pyx_f_6gevent_5libev_8corecext__libev_ref(__pyx_v_self); - - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->_callback); - __Pyx_DECREF(__pyx_v_self->_callback); - __pyx_v_self->_callback = Py_None; - - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->args); - __Pyx_DECREF(__pyx_v_self->args); - __pyx_v_self->args = ((PyObject*)Py_None); - - __pyx_v_self->__pyx___ss->stop(__pyx_v_self->loop->_ptr, __pyx_v_self->__pyx___watcher); - - __pyx_f_6gevent_5libev_8corecext__python_decref(__pyx_v_self); - - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext.watcher.stop", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_7watcher_7feed(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_7watcher_7feed(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - int __pyx_v_revents; - PyObject *__pyx_v_callback = 0; - PyObject *__pyx_v_args = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("feed (wrapper)", 0); - if (PyTuple_GET_SIZE(__pyx_args) > 2) { - __pyx_v_args = PyTuple_GetSlice(__pyx_args, 2, PyTuple_GET_SIZE(__pyx_args)); - if (unlikely(!__pyx_v_args)) { - __Pyx_RefNannyFinishContext(); - return NULL; - } - __Pyx_GOTREF(__pyx_v_args); - } else { - __pyx_v_args = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple); - } - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_revents,&__pyx_n_s_callback,0}; - PyObject* values[2] = {0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - default: - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_revents)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("feed", 0, 2, 2, 1); __PYX_ERR(0, 935, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t used_pos_args = (pos_args < 2) ? pos_args : 2; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "feed") < 0)) __PYX_ERR(0, 935, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) < 2) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - } - __pyx_v_revents = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_revents == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 935, __pyx_L3_error) - __pyx_v_callback = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("feed", 0, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 935, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0; - __Pyx_AddTraceback("gevent.libev.corecext.watcher.feed", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_7watcher_6feed(((struct PyGeventWatcherObject *)__pyx_v_self), __pyx_v_revents, __pyx_v_callback, __pyx_v_args); - - /* function exit code */ - __Pyx_XDECREF(__pyx_v_args); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_7watcher_6feed(struct PyGeventWatcherObject *__pyx_v_self, int __pyx_v_revents, PyObject *__pyx_v_callback, PyObject *__pyx_v_args) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - __Pyx_RefNannySetupContext("feed", 0); - - __pyx_t_1 = ((PyObject *)__pyx_v_self->loop); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_2 = __pyx_f_6gevent_5libev_8corecext__check_loop(((struct PyGeventLoopObject *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 936, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_callback, __pyx_v_callback) < 0) __PYX_ERR(0, 937, __pyx_L1_error) - - __Pyx_INCREF(__pyx_v_args); - __Pyx_GIVEREF(__pyx_v_args); - __Pyx_GOTREF(__pyx_v_self->args); - __Pyx_DECREF(__pyx_v_self->args); - __pyx_v_self->args = __pyx_v_args; - - __pyx_f_6gevent_5libev_8corecext__libev_unref(__pyx_v_self); - - ev_feed_event(__pyx_v_self->loop->_ptr, __pyx_v_self->__pyx___watcher, __pyx_v_revents); - - __pyx_f_6gevent_5libev_8corecext__python_incref(__pyx_v_self); - - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext.watcher.feed", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_7watcher_9__repr__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_7watcher_9__repr__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_7watcher_8__repr__(((struct PyGeventWatcherObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_7watcher_8__repr__(struct PyGeventWatcherObject *__pyx_v_self) { - PyObject *__pyx_v_format = NULL; - PyObject *__pyx_v_result = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - int __pyx_t_6; - int __pyx_t_7; - char const *__pyx_t_8; - PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - PyObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; - PyObject *__pyx_t_13 = NULL; - PyObject *__pyx_t_14 = NULL; - __Pyx_RefNannySetupContext("__repr__", 0); - - __pyx_t_1 = ((Py_ReprEnter(((PyObject *)__pyx_v_self)) != 0) != 0); - if (__pyx_t_1) { - - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_kp_s__6); - __pyx_r = __pyx_kp_s__6; - goto __pyx_L0; - - } - - /*try:*/ { - - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 947, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 947, __pyx_L5_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 947, __pyx_L5_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_v_format = __pyx_t_2; - __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 948, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 948, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 948, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 948, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); - __Pyx_INCREF(__pyx_v_format); - __Pyx_GIVEREF(__pyx_v_format); - PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_format); - __pyx_t_3 = 0; - __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_s_at_0x_x_s, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 948, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_v_result = ((PyObject*)__pyx_t_2); - __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_active); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 949, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 949, __pyx_L5_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (__pyx_t_1) { - - __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_result, __pyx_kp_s_active_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 950, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF_SET(__pyx_v_result, ((PyObject*)__pyx_t_2)); - __pyx_t_2 = 0; - - } - - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_pending); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 951, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 951, __pyx_L5_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (__pyx_t_1) { - - __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_result, __pyx_kp_s_pending_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 952, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF_SET(__pyx_v_result, ((PyObject*)__pyx_t_2)); - __pyx_t_2 = 0; - - } - - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_callback); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 953, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = (__pyx_t_2 != Py_None); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_5 = (__pyx_t_1 != 0); - if (__pyx_t_5) { - - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_callback); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 954, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 954, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_callback_r, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 954, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_result, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 954, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF_SET(__pyx_v_result, ((PyObject*)__pyx_t_4)); - __pyx_t_4 = 0; - - } - - __pyx_t_5 = (__pyx_v_self->args != ((PyObject*)Py_None)); - __pyx_t_1 = (__pyx_t_5 != 0); - if (__pyx_t_1) { - - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 956, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_INCREF(__pyx_v_self->args); - __Pyx_GIVEREF(__pyx_v_self->args); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_self->args); - __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_args_r, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 956, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_result, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 956, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF_SET(__pyx_v_result, ((PyObject*)__pyx_t_4)); - __pyx_t_4 = 0; - - } - - __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = PyNumber_Add(__pyx_v_result, __pyx_kp_s__7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 957, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_r = __pyx_t_4; - __pyx_t_4 = 0; - goto __pyx_L4_return; - } - - /*finally:*/ { - __pyx_L5_error:; - /*exception exit:*/{ - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14); - if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11) < 0)) __Pyx_ErrFetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); - __Pyx_XGOTREF(__pyx_t_9); - __Pyx_XGOTREF(__pyx_t_10); - __Pyx_XGOTREF(__pyx_t_11); - __Pyx_XGOTREF(__pyx_t_12); - __Pyx_XGOTREF(__pyx_t_13); - __Pyx_XGOTREF(__pyx_t_14); - __pyx_t_6 = __pyx_lineno; __pyx_t_7 = __pyx_clineno; __pyx_t_8 = __pyx_filename; - { - Py_ReprLeave(((PyObject *)__pyx_v_self)); - } - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_12); - __Pyx_XGIVEREF(__pyx_t_13); - __Pyx_XGIVEREF(__pyx_t_14); - __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14); - } - __Pyx_XGIVEREF(__pyx_t_9); - __Pyx_XGIVEREF(__pyx_t_10); - __Pyx_XGIVEREF(__pyx_t_11); - __Pyx_ErrRestore(__pyx_t_9, __pyx_t_10, __pyx_t_11); - __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; - __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_7; __pyx_filename = __pyx_t_8; - goto __pyx_L1_error; - } - __pyx_L4_return: { - __pyx_t_14 = __pyx_r; - __pyx_r = 0; - Py_ReprLeave(((PyObject *)__pyx_v_self)); - __pyx_r = __pyx_t_14; - __pyx_t_14 = 0; - goto __pyx_L0; - } - } - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent.libev.corecext.watcher.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_format); - __Pyx_XDECREF(__pyx_v_result); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_7watcher_11_format(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_7watcher_11_format(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_format (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_7watcher_10_format(((struct PyGeventWatcherObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_7watcher_10_format(CYTHON_UNUSED struct PyGeventWatcherObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_format", 0); - - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_kp_s__8); - __pyx_r = __pyx_kp_s__8; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_7watcher_13close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_7watcher_13close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("close (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_7watcher_12close(((struct PyGeventWatcherObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_7watcher_12close(struct PyGeventWatcherObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("close", 0); - - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_stop); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 965, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 965, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 965, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent.libev.corecext.watcher.close", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_7watcher_15__enter__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_7watcher_15__enter__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__enter__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_7watcher_14__enter__(((struct PyGeventWatcherObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_7watcher_14__enter__(struct PyGeventWatcherObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__enter__", 0); - - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __pyx_r = ((PyObject *)__pyx_v_self); - goto __pyx_L0; - - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_7watcher_17__exit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_7watcher_17__exit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - CYTHON_UNUSED PyObject *__pyx_v_t = 0; - CYTHON_UNUSED PyObject *__pyx_v_v = 0; - CYTHON_UNUSED PyObject *__pyx_v_tb = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__exit__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_t,&__pyx_n_s_v,&__pyx_n_s_tb,0}; - PyObject* values[3] = {0,0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_v)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); __PYX_ERR(0, 970, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tb)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 2); __PYX_ERR(0, 970, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) __PYX_ERR(0, 970, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - } - __pyx_v_t = values[0]; - __pyx_v_v = values[1]; - __pyx_v_tb = values[2]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 970, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.watcher.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_7watcher_16__exit__(((struct PyGeventWatcherObject *)__pyx_v_self), __pyx_v_t, __pyx_v_v, __pyx_v_tb); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_7watcher_16__exit__(struct PyGeventWatcherObject *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_t, CYTHON_UNUSED PyObject *__pyx_v_v, CYTHON_UNUSED PyObject *__pyx_v_tb) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("__exit__", 0); - - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_close); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 971, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 971, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 971, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent.libev.corecext.watcher.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_7watcher_4loop_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_7watcher_4loop_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_7watcher_4loop___get__(((struct PyGeventWatcherObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_7watcher_4loop___get__(struct PyGeventWatcherObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_v_self->loop)); - __pyx_r = ((PyObject *)__pyx_v_self->loop); - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_7watcher_4loop_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_7watcher_4loop_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_7watcher_4loop_2__set__(((struct PyGeventWatcherObject *)__pyx_v_self), ((PyObject *)__pyx_v_value)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_7watcher_4loop_2__set__(struct PyGeventWatcherObject *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__set__", 0); - if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_6gevent_5libev_8corecext_loop))))) __PYX_ERR(0, 818, __pyx_L1_error) - __pyx_t_1 = __pyx_v_value; - __Pyx_INCREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->loop); - __Pyx_DECREF(((PyObject *)__pyx_v_self->loop)); - __pyx_v_self->loop = ((struct PyGeventLoopObject *)__pyx_t_1); - __pyx_t_1 = 0; - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext.watcher.loop.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_7watcher_4loop_5__del__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_7watcher_4loop_5__del__(PyObject *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_7watcher_4loop_4__del__(((struct PyGeventWatcherObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_7watcher_4loop_4__del__(struct PyGeventWatcherObject *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__del__", 0); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->loop); - __Pyx_DECREF(((PyObject *)__pyx_v_self->loop)); - __pyx_v_self->loop = ((struct PyGeventLoopObject *)Py_None); - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_7watcher_4args_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_7watcher_4args_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_7watcher_4args___get__(((struct PyGeventWatcherObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_7watcher_4args___get__(struct PyGeventWatcherObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->args); - __pyx_r = __pyx_v_self->args; - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_7watcher_4args_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_7watcher_4args_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_7watcher_4args_2__set__(((struct PyGeventWatcherObject *)__pyx_v_self), ((PyObject *)__pyx_v_value)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_7watcher_4args_2__set__(struct PyGeventWatcherObject *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__set__", 0); - if (!(likely(PyTuple_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_value)->tp_name), 0))) __PYX_ERR(0, 820, __pyx_L1_error) - __pyx_t_1 = __pyx_v_value; - __Pyx_INCREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->args); - __Pyx_DECREF(__pyx_v_self->args); - __pyx_v_self->args = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext.watcher.args.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_7watcher_4args_5__del__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_7watcher_4args_5__del__(PyObject *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_7watcher_4args_4__del__(((struct PyGeventWatcherObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_7watcher_4args_4__del__(struct PyGeventWatcherObject *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__del__", 0); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->args); - __Pyx_DECREF(__pyx_v_self->args); - __pyx_v_self->args = ((PyObject*)Py_None); - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_7watcher_6_flags_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_7watcher_6_flags_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_7watcher_6_flags___get__(((struct PyGeventWatcherObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_7watcher_6_flags___get__(struct PyGeventWatcherObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_self->_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 858, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext.watcher._flags.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_2io_1start(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_2io_1start(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_callback = 0; - PyObject *__pyx_v_pass_events = 0; - PyObject *__pyx_v_args = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("start (wrapper)", 0); - if (PyTuple_GET_SIZE(__pyx_args) > 1) { - __pyx_v_args = PyTuple_GetSlice(__pyx_args, 1, PyTuple_GET_SIZE(__pyx_args)); - if (unlikely(!__pyx_v_args)) { - __Pyx_RefNannyFinishContext(); - return NULL; - } - __Pyx_GOTREF(__pyx_v_args); - } else { - __pyx_v_args = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple); - } - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback,&__pyx_n_s_pass_events,0}; - PyObject* values[2] = {0,0}; - values[1] = ((PyObject *)Py_False); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - default: - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - } - if (kw_args == 1) { - const Py_ssize_t index = 1; - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, *__pyx_pyargnames[index]); - if (value) { values[index] = value; kw_args--; } - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t used_pos_args = (pos_args < 1) ? pos_args : 1; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "start") < 0)) __PYX_ERR(0, 980, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) < 1) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - } - __pyx_v_callback = values[0]; - __pyx_v_pass_events = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("start", 0, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 980, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0; - __Pyx_AddTraceback("gevent.libev.corecext.io.start", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_2io_start(((struct PyGeventIOObject *)__pyx_v_self), __pyx_v_callback, __pyx_v_pass_events, __pyx_v_args); - - /* function exit code */ - __Pyx_XDECREF(__pyx_v_args); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_2io_start(struct PyGeventIOObject *__pyx_v_self, PyObject *__pyx_v_callback, PyObject *__pyx_v_pass_events, PyObject *__pyx_v_args) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("start", 0); - __Pyx_INCREF(__pyx_v_args); - - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_pass_events); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 981, __pyx_L1_error) - if (__pyx_t_1) { - - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 982, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(GEVENT_CORE_EVENTS); - __Pyx_GIVEREF(GEVENT_CORE_EVENTS); - PyTuple_SET_ITEM(__pyx_t_2, 0, GEVENT_CORE_EVENTS); - __pyx_t_3 = PyNumber_Add(__pyx_t_2, __pyx_v_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 982, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF_SET(__pyx_v_args, ((PyObject*)__pyx_t_3)); - __pyx_t_3 = 0; - - } - - __pyx_t_1 = __pyx_f_6gevent_5libev_8corecext__watcher_start(((struct PyGeventWatcherObject *)__pyx_v_self), __pyx_v_callback, __pyx_v_args); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 983, __pyx_L1_error) - - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent.libev.corecext.io.start", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_args); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_2io_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_2io_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - struct PyGeventLoopObject *__pyx_v_loop = 0; - CYTHON_UNUSED vfd_socket_t __pyx_v_fd; - CYTHON_UNUSED int __pyx_v_events; - PyObject *__pyx_v_ref = 0; - PyObject *__pyx_v_priority = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_loop,&__pyx_n_s_fd,&__pyx_n_s_events_2,&__pyx_n_s_ref,&__pyx_n_s_priority,0}; - PyObject* values[5] = {0,0,0,0,0}; - values[3] = ((PyObject *)Py_True); - values[4] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); - CYTHON_FALLTHROUGH; - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fd)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 5, 1); __PYX_ERR(0, 985, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_events_2)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 5, 2); __PYX_ERR(0, 985, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 3: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ref); - if (value) { values[3] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 4: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_priority); - if (value) { values[4] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 985, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); - CYTHON_FALLTHROUGH; - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_loop = ((struct PyGeventLoopObject *)values[0]); - __pyx_v_fd = __Pyx_PyIndex_AsSsize_t(values[1]); if (unlikely((__pyx_v_fd == ((vfd_socket_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 985, __pyx_L3_error) - __pyx_v_events = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_events == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 985, __pyx_L3_error) - __pyx_v_ref = values[3]; - __pyx_v_priority = values[4]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 985, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.io.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loop), __pyx_ptype_6gevent_5libev_8corecext_loop, 1, "loop", 0))) __PYX_ERR(0, 985, __pyx_L1_error) - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_2io_2__init__(((struct PyGeventIOObject *)__pyx_v_self), __pyx_v_loop, __pyx_v_fd, __pyx_v_events, __pyx_v_ref, __pyx_v_priority); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_2io_2__init__(struct PyGeventIOObject *__pyx_v_self, struct PyGeventLoopObject *__pyx_v_loop, CYTHON_UNUSED vfd_socket_t __pyx_v_fd, CYTHON_UNUSED int __pyx_v_events, PyObject *__pyx_v_ref, PyObject *__pyx_v_priority) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - __Pyx_RefNannySetupContext("__init__", 0); - - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_6gevent_5libev_8corecext_watcher), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 986, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - __pyx_t_4 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_4 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[5] = {__pyx_t_3, ((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_loop), __pyx_v_ref, __pyx_v_priority}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 986, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[5] = {__pyx_t_3, ((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_loop), __pyx_v_ref, __pyx_v_priority}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 986, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_5 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 986, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (__pyx_t_3) { - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; - } - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, ((PyObject *)__pyx_v_self)); - __Pyx_INCREF(((PyObject *)__pyx_v_loop)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_loop)); - PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, ((PyObject *)__pyx_v_loop)); - __Pyx_INCREF(__pyx_v_ref); - __Pyx_GIVEREF(__pyx_v_ref); - PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_ref); - __Pyx_INCREF(__pyx_v_priority); - __Pyx_GIVEREF(__pyx_v_priority); - PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_4, __pyx_v_priority); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 986, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent.libev.corecext.io.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_2io_5__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_2io_5__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_loop = 0; - vfd_socket_t __pyx_v_fd; - int __pyx_v_events; - CYTHON_UNUSED PyObject *__pyx_v_ref = 0; - CYTHON_UNUSED PyObject *__pyx_v_priority = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_loop,&__pyx_n_s_fd,&__pyx_n_s_events_2,&__pyx_n_s_ref,&__pyx_n_s_priority,0}; - PyObject* values[5] = {0,0,0,0,0}; - values[3] = ((PyObject *)Py_True); - values[4] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); - CYTHON_FALLTHROUGH; - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fd)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, 1); __PYX_ERR(0, 988, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_events_2)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, 2); __PYX_ERR(0, 988, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 3: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ref); - if (value) { values[3] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 4: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_priority); - if (value) { values[4] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 988, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); - CYTHON_FALLTHROUGH; - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_loop = ((struct PyGeventLoopObject *)values[0]); - __pyx_v_fd = __Pyx_PyIndex_AsSsize_t(values[1]); if (unlikely((__pyx_v_fd == ((vfd_socket_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 988, __pyx_L3_error) - __pyx_v_events = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_events == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 988, __pyx_L3_error) - __pyx_v_ref = values[3]; - __pyx_v_priority = values[4]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 988, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.io.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loop), __pyx_ptype_6gevent_5libev_8corecext_loop, 1, "loop", 0))) __PYX_ERR(0, 988, __pyx_L1_error) - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_2io_4__cinit__(((struct PyGeventIOObject *)__pyx_v_self), __pyx_v_loop, __pyx_v_fd, __pyx_v_events, __pyx_v_ref, __pyx_v_priority); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_2io_4__cinit__(struct PyGeventIOObject *__pyx_v_self, CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_loop, vfd_socket_t __pyx_v_fd, int __pyx_v_events, CYTHON_UNUSED PyObject *__pyx_v_ref, CYTHON_UNUSED PyObject *__pyx_v_priority) { - int __pyx_v_vfd; - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - __Pyx_RefNannySetupContext("__cinit__", 0); - - __pyx_t_1 = ((__pyx_v_fd < 0) != 0); - if (unlikely(__pyx_t_1)) { - - __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_fd); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 990, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_fd_must_be_non_negative_r, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 990, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 990, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 990, __pyx_L1_error) - - } - - __pyx_t_1 = ((__pyx_v_events & (~((EV__IOFDSET | EV_READ) | EV_WRITE))) != 0); - if (unlikely(__pyx_t_1)) { - - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_events); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 992, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_illegal_event_mask_r, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 992, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 992, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 992, __pyx_L1_error) - - } - - __pyx_t_4 = vfd_open(__pyx_v_fd); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 994, __pyx_L1_error) - __pyx_v_vfd = __pyx_t_4; - - ev_io_init((&__pyx_v_self->_watcher), ((void *)gevent_callback_io), __pyx_v_vfd, __pyx_v_events); - - __pyx_v_self->__pyx_base.__pyx___watcher = ((struct ev_watcher *)(&__pyx_v_self->_watcher)); - - __pyx_v_self->__pyx_base.__pyx___ss = (&__pyx_v_6gevent_5libev_8corecext_io_ss); - - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent.libev.corecext.io.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static void __pyx_pw_6gevent_5libev_8corecext_2io_7__dealloc__(PyObject *__pyx_v_self); /*proto*/ -static void __pyx_pw_6gevent_5libev_8corecext_2io_7__dealloc__(PyObject *__pyx_v_self) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); - __pyx_pf_6gevent_5libev_8corecext_2io_6__dealloc__(((struct PyGeventIOObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -static void __pyx_pf_6gevent_5libev_8corecext_2io_6__dealloc__(struct PyGeventIOObject *__pyx_v_self) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__dealloc__", 0); - - vfd_free(__pyx_v_self->_watcher.fd); - - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_2io_2fd_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_2io_2fd_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_2io_2fd___get__(((struct PyGeventIOObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_2io_2fd___get__(struct PyGeventIOObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyInt_FromSsize_t(vfd_get(__pyx_v_self->_watcher.fd)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1004, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext.io.fd.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_2io_2fd_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_fd); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_2io_2fd_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_fd) { - long __pyx_v_fd; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); - assert(__pyx_arg_fd); { - __pyx_v_fd = __Pyx_PyInt_As_long(__pyx_arg_fd); if (unlikely((__pyx_v_fd == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 1007, __pyx_L3_error) - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.io.fd.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_2io_2fd_2__set__(((struct PyGeventIOObject *)__pyx_v_self), ((long)__pyx_v_fd)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_2io_2fd_2__set__(struct PyGeventIOObject *__pyx_v_self, long __pyx_v_fd) { - int __pyx_v_vfd; - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - int __pyx_t_3; - __Pyx_RefNannySetupContext("__set__", 0); - - __pyx_t_1 = (ev_is_active((&__pyx_v_self->_watcher)) != 0); - if (unlikely(__pyx_t_1)) { - - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1009, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 1009, __pyx_L1_error) - - } - - __pyx_t_3 = vfd_open(__pyx_v_fd); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 1010, __pyx_L1_error) - __pyx_v_vfd = __pyx_t_3; - - vfd_free(__pyx_v_self->_watcher.fd); - - ev_io_init((&__pyx_v_self->_watcher), ((void *)gevent_callback_io), __pyx_v_vfd, __pyx_v_self->_watcher.events); - - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent.libev.corecext.io.fd.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_2io_6events_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_2io_6events_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_2io_6events___get__(((struct PyGeventIOObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_2io_6events___get__(struct PyGeventIOObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_watcher.events); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1016, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext.io.events.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_2io_6events_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_events); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_2io_6events_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_events) { - int __pyx_v_events; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); - assert(__pyx_arg_events); { - __pyx_v_events = __Pyx_PyInt_As_int(__pyx_arg_events); if (unlikely((__pyx_v_events == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1019, __pyx_L3_error) - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.io.events.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_2io_6events_2__set__(((struct PyGeventIOObject *)__pyx_v_self), ((int)__pyx_v_events)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_2io_6events_2__set__(struct PyGeventIOObject *__pyx_v_self, int __pyx_v_events) { - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("__set__", 0); - - __pyx_t_1 = (ev_is_active((&__pyx_v_self->_watcher)) != 0); - if (unlikely(__pyx_t_1)) { - - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1021, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 1021, __pyx_L1_error) - - } - - ev_io_init((&__pyx_v_self->_watcher), ((void *)gevent_callback_io), __pyx_v_self->_watcher.fd, __pyx_v_events); - - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent.libev.corecext.io.events.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_2io_10events_str_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_2io_10events_str_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_2io_10events_str___get__(((struct PyGeventIOObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_2io_10events_str___get__(struct PyGeventIOObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_5libev_8corecext__events_to_str(__pyx_v_self->_watcher.events, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1026, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext.io.events_str.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_2io_9_format(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_2io_9_format(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_format (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_2io_8_format(((struct PyGeventIOObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_2io_8_format(struct PyGeventIOObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("_format", 0); - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1029, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_events_str); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1029, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1029, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); - __pyx_t_1 = 0; - __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_fd_s_events_s, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1029, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent.libev.corecext.io._format", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_5timer_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_5timer_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_loop = 0; - double __pyx_v_after; - double __pyx_v_repeat; - CYTHON_UNUSED PyObject *__pyx_v_ref = 0; - CYTHON_UNUSED PyObject *__pyx_v_priority = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_loop,&__pyx_n_s_after,&__pyx_n_s_repeat,&__pyx_n_s_ref,&__pyx_n_s_priority,0}; - PyObject* values[5] = {0,0,0,0,0}; - values[3] = ((PyObject *)Py_True); - values[4] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); - CYTHON_FALLTHROUGH; - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_after); - if (value) { values[1] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_repeat); - if (value) { values[2] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 3: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ref); - if (value) { values[3] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 4: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_priority); - if (value) { values[4] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 1037, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); - CYTHON_FALLTHROUGH; - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_loop = ((struct PyGeventLoopObject *)values[0]); - if (values[1]) { - __pyx_v_after = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_after == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1037, __pyx_L3_error) - } else { - __pyx_v_after = ((double)0.0); - } - if (values[2]) { - __pyx_v_repeat = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_repeat == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1037, __pyx_L3_error) - } else { - __pyx_v_repeat = ((double)0.0); - } - __pyx_v_ref = values[3]; - __pyx_v_priority = values[4]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 1, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1037, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.timer.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loop), __pyx_ptype_6gevent_5libev_8corecext_loop, 1, "loop", 0))) __PYX_ERR(0, 1037, __pyx_L1_error) - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_5timer___cinit__(((struct PyGeventTimerObject *)__pyx_v_self), __pyx_v_loop, __pyx_v_after, __pyx_v_repeat, __pyx_v_ref, __pyx_v_priority); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_5timer___cinit__(struct PyGeventTimerObject *__pyx_v_self, CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_loop, double __pyx_v_after, double __pyx_v_repeat, CYTHON_UNUSED PyObject *__pyx_v_ref, CYTHON_UNUSED PyObject *__pyx_v_priority) { - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("__cinit__", 0); - - __pyx_t_1 = ((__pyx_v_repeat < 0.0) != 0); - if (unlikely(__pyx_t_1)) { - - __pyx_t_2 = PyFloat_FromDouble(__pyx_v_repeat); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1039, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_repeat_must_be_positive_or_zero, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1039, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1039, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 1039, __pyx_L1_error) - - } - - ev_timer_init((&__pyx_v_self->_watcher), ((void *)gevent_callback_timer), __pyx_v_after, __pyx_v_repeat); - - __pyx_v_self->__pyx_base.__pyx___watcher = ((struct ev_watcher *)(&__pyx_v_self->_watcher)); - - __pyx_v_self->__pyx_base.__pyx___ss = (&__pyx_v_6gevent_5libev_8corecext_timer_ss); - - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent.libev.corecext.timer.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_5timer_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_5timer_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - struct PyGeventLoopObject *__pyx_v_loop = 0; - CYTHON_UNUSED double __pyx_v_after; - CYTHON_UNUSED double __pyx_v_repeat; - PyObject *__pyx_v_ref = 0; - PyObject *__pyx_v_priority = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_loop,&__pyx_n_s_after,&__pyx_n_s_repeat,&__pyx_n_s_ref,&__pyx_n_s_priority,0}; - PyObject* values[5] = {0,0,0,0,0}; - values[3] = ((PyObject *)Py_True); - values[4] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); - CYTHON_FALLTHROUGH; - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_after); - if (value) { values[1] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_repeat); - if (value) { values[2] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 3: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ref); - if (value) { values[3] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 4: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_priority); - if (value) { values[4] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1044, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); - CYTHON_FALLTHROUGH; - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_loop = ((struct PyGeventLoopObject *)values[0]); - if (values[1]) { - __pyx_v_after = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_after == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1044, __pyx_L3_error) - } else { - __pyx_v_after = ((double)0.0); - } - if (values[2]) { - __pyx_v_repeat = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_repeat == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1044, __pyx_L3_error) - } else { - __pyx_v_repeat = ((double)0.0); - } - __pyx_v_ref = values[3]; - __pyx_v_priority = values[4]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1044, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.timer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loop), __pyx_ptype_6gevent_5libev_8corecext_loop, 1, "loop", 0))) __PYX_ERR(0, 1044, __pyx_L1_error) - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_5timer_2__init__(((struct PyGeventTimerObject *)__pyx_v_self), __pyx_v_loop, __pyx_v_after, __pyx_v_repeat, __pyx_v_ref, __pyx_v_priority); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_5timer_2__init__(struct PyGeventTimerObject *__pyx_v_self, struct PyGeventLoopObject *__pyx_v_loop, CYTHON_UNUSED double __pyx_v_after, CYTHON_UNUSED double __pyx_v_repeat, PyObject *__pyx_v_ref, PyObject *__pyx_v_priority) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - __Pyx_RefNannySetupContext("__init__", 0); - - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_6gevent_5libev_8corecext_watcher), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1045, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - __pyx_t_4 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_4 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[5] = {__pyx_t_3, ((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_loop), __pyx_v_ref, __pyx_v_priority}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1045, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[5] = {__pyx_t_3, ((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_loop), __pyx_v_ref, __pyx_v_priority}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1045, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_5 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1045, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (__pyx_t_3) { - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; - } - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, ((PyObject *)__pyx_v_self)); - __Pyx_INCREF(((PyObject *)__pyx_v_loop)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_loop)); - PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, ((PyObject *)__pyx_v_loop)); - __Pyx_INCREF(__pyx_v_ref); - __Pyx_GIVEREF(__pyx_v_ref); - PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_ref); - __Pyx_INCREF(__pyx_v_priority); - __Pyx_GIVEREF(__pyx_v_priority); - PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_4, __pyx_v_priority); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1045, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent.libev.corecext.timer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_5timer_5start(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_5timer_5start(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_callback = 0; - PyObject *__pyx_v_update = 0; - PyObject *__pyx_v_args = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("start (wrapper)", 0); - if (PyTuple_GET_SIZE(__pyx_args) > 1) { - __pyx_v_args = PyTuple_GetSlice(__pyx_args, 1, PyTuple_GET_SIZE(__pyx_args)); - if (unlikely(!__pyx_v_args)) { - __Pyx_RefNannyFinishContext(); - return NULL; - } - __Pyx_GOTREF(__pyx_v_args); - } else { - __pyx_v_args = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple); - } - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback,&__pyx_n_s_update,0}; - PyObject* values[2] = {0,0}; - values[1] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - default: - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - } - if (kw_args == 1) { - const Py_ssize_t index = 1; - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, *__pyx_pyargnames[index]); - if (value) { values[index] = value; kw_args--; } - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t used_pos_args = (pos_args < 1) ? pos_args : 1; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "start") < 0)) __PYX_ERR(0, 1047, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) < 1) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - } - __pyx_v_callback = values[0]; - __pyx_v_update = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("start", 0, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1047, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0; - __Pyx_AddTraceback("gevent.libev.corecext.timer.start", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_5timer_4start(((struct PyGeventTimerObject *)__pyx_v_self), __pyx_v_callback, __pyx_v_update, __pyx_v_args); - - /* function exit code */ - __Pyx_XDECREF(__pyx_v_args); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_5timer_4start(struct PyGeventTimerObject *__pyx_v_self, PyObject *__pyx_v_callback, PyObject *__pyx_v_update, PyObject *__pyx_v_args) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("start", 0); - __Pyx_INCREF(__pyx_v_update); - - __pyx_t_2 = (__pyx_v_update != Py_None); - if ((__pyx_t_2 != 0)) { - __Pyx_INCREF(__pyx_v_update); - __pyx_t_1 = __pyx_v_update; - } else { - __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_self->__pyx_base.loop->starting_timer_may_update_loop_time); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1048, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = __pyx_t_3; - __pyx_t_3 = 0; - } - __Pyx_DECREF_SET(__pyx_v_update, __pyx_t_1); - __pyx_t_1 = 0; - - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_update); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1049, __pyx_L1_error) - if (__pyx_t_2) { - - ((struct __pyx_vtabstruct_6gevent_5libev_8corecext_loop *)__pyx_v_self->__pyx_base.loop->__pyx_vtab)->update_now(__pyx_v_self->__pyx_base.loop, 0); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1050, __pyx_L1_error) - - } - - __pyx_t_2 = __pyx_f_6gevent_5libev_8corecext__watcher_start(((struct PyGeventWatcherObject *)__pyx_v_self), __pyx_v_callback, __pyx_v_args); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1051, __pyx_L1_error) - - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent.libev.corecext.timer.start", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_update); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_5timer_2at_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_5timer_2at_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_5timer_2at___get__(((struct PyGeventTimerObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_5timer_2at___get__(struct PyGeventTimerObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->_watcher.at); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1055, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext.timer.at.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_5timer_7again(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_5timer_7again(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_callback = 0; - PyObject *__pyx_v_update = 0; - PyObject *__pyx_v_args = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("again (wrapper)", 0); - if (PyTuple_GET_SIZE(__pyx_args) > 1) { - __pyx_v_args = PyTuple_GetSlice(__pyx_args, 1, PyTuple_GET_SIZE(__pyx_args)); - if (unlikely(!__pyx_v_args)) { - __Pyx_RefNannyFinishContext(); - return NULL; - } - __Pyx_GOTREF(__pyx_v_args); - } else { - __pyx_v_args = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple); - } - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback,&__pyx_n_s_update,0}; - PyObject* values[2] = {0,0}; - values[1] = ((PyObject *)Py_True); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - default: - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - } - if (kw_args == 1) { - const Py_ssize_t index = 1; - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, *__pyx_pyargnames[index]); - if (value) { values[index] = value; kw_args--; } - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t used_pos_args = (pos_args < 1) ? pos_args : 1; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "again") < 0)) __PYX_ERR(0, 1059, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) < 1) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - } - __pyx_v_callback = values[0]; - __pyx_v_update = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("again", 0, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1059, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0; - __Pyx_AddTraceback("gevent.libev.corecext.timer.again", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_5timer_6again(((struct PyGeventTimerObject *)__pyx_v_self), __pyx_v_callback, __pyx_v_update, __pyx_v_args); - - /* function exit code */ - __Pyx_XDECREF(__pyx_v_args); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_5timer_6again(struct PyGeventTimerObject *__pyx_v_self, PyObject *__pyx_v_callback, PyObject *__pyx_v_update, PyObject *__pyx_v_args) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - __Pyx_RefNannySetupContext("again", 0); - - __pyx_t_1 = ((PyObject *)__pyx_v_self->__pyx_base.loop); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_2 = __pyx_f_6gevent_5libev_8corecext__check_loop(((struct PyGeventLoopObject *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1060, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_callback, __pyx_v_callback) < 0) __PYX_ERR(0, 1061, __pyx_L1_error) - - __Pyx_INCREF(__pyx_v_args); - __Pyx_GIVEREF(__pyx_v_args); - __Pyx_GOTREF(__pyx_v_self->__pyx_base.args); - __Pyx_DECREF(__pyx_v_self->__pyx_base.args); - __pyx_v_self->__pyx_base.args = __pyx_v_args; - - __pyx_f_6gevent_5libev_8corecext__libev_unref(((struct PyGeventWatcherObject *)__pyx_v_self)); - - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_update); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1064, __pyx_L1_error) - if (__pyx_t_2) { - - ev_now_update(__pyx_v_self->__pyx_base.loop->_ptr); - - } - - ev_timer_again(__pyx_v_self->__pyx_base.loop->_ptr, (&__pyx_v_self->_watcher)); - - __pyx_f_6gevent_5libev_8corecext__python_incref(((struct PyGeventWatcherObject *)__pyx_v_self)); - - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext.timer.again", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_6signal_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_6signal_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_loop = 0; - int __pyx_v_signalnum; - CYTHON_UNUSED PyObject *__pyx_v_ref = 0; - CYTHON_UNUSED PyObject *__pyx_v_priority = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_loop,&__pyx_n_s_signalnum,&__pyx_n_s_ref,&__pyx_n_s_priority,0}; - PyObject* values[4] = {0,0,0,0}; - values[2] = ((PyObject *)Py_True); - values[3] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_signalnum)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 2, 4, 1); __PYX_ERR(0, 1077, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ref); - if (value) { values[2] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 3: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_priority); - if (value) { values[3] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 1077, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_loop = ((struct PyGeventLoopObject *)values[0]); - __pyx_v_signalnum = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_signalnum == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1077, __pyx_L3_error) - __pyx_v_ref = values[2]; - __pyx_v_priority = values[3]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1077, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.signal.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loop), __pyx_ptype_6gevent_5libev_8corecext_loop, 1, "loop", 0))) __PYX_ERR(0, 1077, __pyx_L1_error) - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_6signal___cinit__(((struct PyGeventSignalObject *)__pyx_v_self), __pyx_v_loop, __pyx_v_signalnum, __pyx_v_ref, __pyx_v_priority); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_6signal___cinit__(struct PyGeventSignalObject *__pyx_v_self, CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_loop, int __pyx_v_signalnum, CYTHON_UNUSED PyObject *__pyx_v_ref, CYTHON_UNUSED PyObject *__pyx_v_priority) { - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - __Pyx_RefNannySetupContext("__cinit__", 0); - - __pyx_t_2 = ((__pyx_v_signalnum < 1) != 0); - if (!__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_signalnum); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1078, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_signalmodule); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1078, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_NSIG); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1078, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_t_5, Py_GE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1078, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1078, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_1 = __pyx_t_2; - __pyx_L4_bool_binop_done:; - if (unlikely(__pyx_t_1)) { - - __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_signalnum); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1079, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_illegal_signal_number_r, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1079, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1079, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_Raise(__pyx_t_4, 0, 0, 0); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __PYX_ERR(0, 1079, __pyx_L1_error) - - } - - ev_signal_init((&__pyx_v_self->_watcher), ((void *)gevent_callback_signal), __pyx_v_signalnum); - - __pyx_v_self->__pyx_base.__pyx___watcher = ((struct ev_watcher *)(&__pyx_v_self->_watcher)); - - __pyx_v_self->__pyx_base.__pyx___ss = (&__pyx_v_6gevent_5libev_8corecext_signal_ss); - - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent.libev.corecext.signal.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_6signal_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_6signal_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - struct PyGeventLoopObject *__pyx_v_loop = 0; - CYTHON_UNUSED int __pyx_v_signalnum; - PyObject *__pyx_v_ref = 0; - PyObject *__pyx_v_priority = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_loop,&__pyx_n_s_signalnum,&__pyx_n_s_ref,&__pyx_n_s_priority,0}; - PyObject* values[4] = {0,0,0,0}; - values[2] = ((PyObject *)Py_True); - values[3] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_signalnum)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 4, 1); __PYX_ERR(0, 1089, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ref); - if (value) { values[2] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 3: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_priority); - if (value) { values[3] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1089, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_loop = ((struct PyGeventLoopObject *)values[0]); - __pyx_v_signalnum = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_signalnum == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1089, __pyx_L3_error) - __pyx_v_ref = values[2]; - __pyx_v_priority = values[3]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1089, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.signal.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loop), __pyx_ptype_6gevent_5libev_8corecext_loop, 1, "loop", 0))) __PYX_ERR(0, 1089, __pyx_L1_error) - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_6signal_2__init__(((struct PyGeventSignalObject *)__pyx_v_self), __pyx_v_loop, __pyx_v_signalnum, __pyx_v_ref, __pyx_v_priority); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_6signal_2__init__(struct PyGeventSignalObject *__pyx_v_self, struct PyGeventLoopObject *__pyx_v_loop, CYTHON_UNUSED int __pyx_v_signalnum, PyObject *__pyx_v_ref, PyObject *__pyx_v_priority) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - __Pyx_RefNannySetupContext("__init__", 0); - - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_6gevent_5libev_8corecext_watcher), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1090, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - __pyx_t_4 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_4 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[5] = {__pyx_t_3, ((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_loop), __pyx_v_ref, __pyx_v_priority}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1090, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[5] = {__pyx_t_3, ((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_loop), __pyx_v_ref, __pyx_v_priority}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1090, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_5 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1090, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (__pyx_t_3) { - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; - } - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, ((PyObject *)__pyx_v_self)); - __Pyx_INCREF(((PyObject *)__pyx_v_loop)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_loop)); - PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, ((PyObject *)__pyx_v_loop)); - __Pyx_INCREF(__pyx_v_ref); - __Pyx_GIVEREF(__pyx_v_ref); - PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_ref); - __Pyx_INCREF(__pyx_v_priority); - __Pyx_GIVEREF(__pyx_v_priority); - PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_4, __pyx_v_priority); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1090, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent.libev.corecext.signal.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_4idle_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_4idle_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_loop = 0; - CYTHON_UNUSED PyObject *__pyx_v_ref = 0; - CYTHON_UNUSED PyObject *__pyx_v_priority = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_loop,&__pyx_n_s_ref,&__pyx_n_s_priority,0}; - PyObject* values[3] = {0,0,0}; - values[1] = ((PyObject *)Py_True); - values[2] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ref); - if (value) { values[1] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_priority); - if (value) { values[2] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 1100, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_loop = ((struct PyGeventLoopObject *)values[0]); - __pyx_v_ref = values[1]; - __pyx_v_priority = values[2]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1100, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.idle.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loop), __pyx_ptype_6gevent_5libev_8corecext_loop, 1, "loop", 0))) __PYX_ERR(0, 1100, __pyx_L1_error) - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4idle___cinit__(((struct PyGeventIdleObject *)__pyx_v_self), __pyx_v_loop, __pyx_v_ref, __pyx_v_priority); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_4idle___cinit__(struct PyGeventIdleObject *__pyx_v_self, CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_loop, CYTHON_UNUSED PyObject *__pyx_v_ref, CYTHON_UNUSED PyObject *__pyx_v_priority) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__cinit__", 0); - - ev_idle_init((&__pyx_v_self->_watcher), ((void *)gevent_callback_idle)); - - __pyx_v_self->__pyx_base.__pyx___watcher = ((struct ev_watcher *)(&__pyx_v_self->_watcher)); - - __pyx_v_self->__pyx_base.__pyx___ss = (&__pyx_v_6gevent_5libev_8corecext_idle_ss); - - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_7prepare_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_7prepare_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_loop = 0; - CYTHON_UNUSED PyObject *__pyx_v_ref = 0; - CYTHON_UNUSED PyObject *__pyx_v_priority = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_loop,&__pyx_n_s_ref,&__pyx_n_s_priority,0}; - PyObject* values[3] = {0,0,0}; - values[1] = ((PyObject *)Py_True); - values[2] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ref); - if (value) { values[1] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_priority); - if (value) { values[2] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 1113, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_loop = ((struct PyGeventLoopObject *)values[0]); - __pyx_v_ref = values[1]; - __pyx_v_priority = values[2]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1113, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.prepare.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loop), __pyx_ptype_6gevent_5libev_8corecext_loop, 1, "loop", 0))) __PYX_ERR(0, 1113, __pyx_L1_error) - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_7prepare___cinit__(((struct PyGeventPrepareObject *)__pyx_v_self), __pyx_v_loop, __pyx_v_ref, __pyx_v_priority); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_7prepare___cinit__(struct PyGeventPrepareObject *__pyx_v_self, CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_loop, CYTHON_UNUSED PyObject *__pyx_v_ref, CYTHON_UNUSED PyObject *__pyx_v_priority) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__cinit__", 0); - - ev_prepare_init((&__pyx_v_self->_watcher), ((void *)gevent_callback_prepare)); - - __pyx_v_self->__pyx_base.__pyx___watcher = ((struct ev_watcher *)(&__pyx_v_self->_watcher)); - - __pyx_v_self->__pyx_base.__pyx___ss = (&__pyx_v_6gevent_5libev_8corecext_prepare_ss); - - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_5check_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_5check_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_loop = 0; - CYTHON_UNUSED PyObject *__pyx_v_ref = 0; - CYTHON_UNUSED PyObject *__pyx_v_priority = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_loop,&__pyx_n_s_ref,&__pyx_n_s_priority,0}; - PyObject* values[3] = {0,0,0}; - values[1] = ((PyObject *)Py_True); - values[2] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ref); - if (value) { values[1] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_priority); - if (value) { values[2] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 1126, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_loop = ((struct PyGeventLoopObject *)values[0]); - __pyx_v_ref = values[1]; - __pyx_v_priority = values[2]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1126, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.check.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loop), __pyx_ptype_6gevent_5libev_8corecext_loop, 1, "loop", 0))) __PYX_ERR(0, 1126, __pyx_L1_error) - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_5check___cinit__(((struct PyGeventCheckObject *)__pyx_v_self), __pyx_v_loop, __pyx_v_ref, __pyx_v_priority); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_5check___cinit__(struct PyGeventCheckObject *__pyx_v_self, CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_loop, CYTHON_UNUSED PyObject *__pyx_v_ref, CYTHON_UNUSED PyObject *__pyx_v_priority) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__cinit__", 0); - - ev_check_init((&__pyx_v_self->_watcher), ((void *)gevent_callback_check)); - - __pyx_v_self->__pyx_base.__pyx___watcher = ((struct ev_watcher *)(&__pyx_v_self->_watcher)); - - __pyx_v_self->__pyx_base.__pyx___ss = (&__pyx_v_6gevent_5libev_8corecext_check_ss); - - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_4fork_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_4fork_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_loop = 0; - CYTHON_UNUSED PyObject *__pyx_v_ref = 0; - CYTHON_UNUSED PyObject *__pyx_v_priority = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_loop,&__pyx_n_s_ref,&__pyx_n_s_priority,0}; - PyObject* values[3] = {0,0,0}; - values[1] = ((PyObject *)Py_True); - values[2] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ref); - if (value) { values[1] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_priority); - if (value) { values[2] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 1139, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_loop = ((struct PyGeventLoopObject *)values[0]); - __pyx_v_ref = values[1]; - __pyx_v_priority = values[2]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1139, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.fork.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loop), __pyx_ptype_6gevent_5libev_8corecext_loop, 1, "loop", 0))) __PYX_ERR(0, 1139, __pyx_L1_error) - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4fork___cinit__(((struct PyGeventForkObject *)__pyx_v_self), __pyx_v_loop, __pyx_v_ref, __pyx_v_priority); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_4fork___cinit__(struct PyGeventForkObject *__pyx_v_self, CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_loop, CYTHON_UNUSED PyObject *__pyx_v_ref, CYTHON_UNUSED PyObject *__pyx_v_priority) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__cinit__", 0); - - ev_fork_init((&__pyx_v_self->_watcher), ((void *)gevent_callback_fork)); - - __pyx_v_self->__pyx_base.__pyx___watcher = ((struct ev_watcher *)(&__pyx_v_self->_watcher)); - - __pyx_v_self->__pyx_base.__pyx___ss = (&__pyx_v_6gevent_5libev_8corecext_fork_ss); - - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_6async__7pending_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_6async__7pending_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_6async__7pending___get__(((struct PyGeventAsyncObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_6async__7pending___get__(struct PyGeventAsyncObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - __Pyx_XDECREF(__pyx_r); - if ((ev_async_pending((&__pyx_v_self->_watcher)) != 0)) { - __Pyx_INCREF(Py_True); - __pyx_t_1 = Py_True; - } else { - __Pyx_INCREF(Py_False); - __pyx_t_1 = Py_False; - } - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_6async__1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_6async__1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_loop = 0; - CYTHON_UNUSED PyObject *__pyx_v_ref = 0; - CYTHON_UNUSED PyObject *__pyx_v_priority = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_loop,&__pyx_n_s_ref,&__pyx_n_s_priority,0}; - PyObject* values[3] = {0,0,0}; - values[1] = ((PyObject *)Py_True); - values[2] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ref); - if (value) { values[1] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_priority); - if (value) { values[2] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 1156, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_loop = ((struct PyGeventLoopObject *)values[0]); - __pyx_v_ref = values[1]; - __pyx_v_priority = values[2]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1156, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.async_.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loop), __pyx_ptype_6gevent_5libev_8corecext_loop, 1, "loop", 0))) __PYX_ERR(0, 1156, __pyx_L1_error) - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_6async____cinit__(((struct PyGeventAsyncObject *)__pyx_v_self), __pyx_v_loop, __pyx_v_ref, __pyx_v_priority); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_6async____cinit__(struct PyGeventAsyncObject *__pyx_v_self, CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_loop, CYTHON_UNUSED PyObject *__pyx_v_ref, CYTHON_UNUSED PyObject *__pyx_v_priority) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__cinit__", 0); - - ev_async_init((&__pyx_v_self->_watcher), ((void *)gevent_callback_async)); - - __pyx_v_self->__pyx_base.__pyx___watcher = ((struct ev_watcher *)(&__pyx_v_self->_watcher)); - - __pyx_v_self->__pyx_base.__pyx___ss = (&__pyx_v_6gevent_5libev_8corecext_async_ss); - - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_6async__3send(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_6async__3send(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("send (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_6async__2send(((struct PyGeventAsyncObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_6async__2send(struct PyGeventAsyncObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - __Pyx_RefNannySetupContext("send", 0); - - __pyx_t_1 = ((PyObject *)__pyx_v_self->__pyx_base.loop); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_2 = __pyx_f_6gevent_5libev_8corecext__check_loop(((struct PyGeventLoopObject *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1163, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - ev_async_send(__pyx_v_self->__pyx_base.loop->_ptr, (&__pyx_v_self->_watcher)); - - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext.async_.send", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_5child_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_5child_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - struct PyGeventLoopObject *__pyx_v_loop = 0; - int __pyx_v_pid; - int __pyx_v_trace; - CYTHON_UNUSED PyObject *__pyx_v_ref = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_loop,&__pyx_n_s_pid,&__pyx_n_s_trace,&__pyx_n_s_ref,0}; - PyObject* values[4] = {0,0,0,0}; - values[3] = ((PyObject *)Py_True); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pid)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 2, 4, 1); __PYX_ERR(0, 1174, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_trace); - if (value) { values[2] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 3: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ref); - if (value) { values[3] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 1174, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_loop = ((struct PyGeventLoopObject *)values[0]); - __pyx_v_pid = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_pid == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1174, __pyx_L3_error) - if (values[2]) { - __pyx_v_trace = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_trace == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1174, __pyx_L3_error) - } else { - __pyx_v_trace = ((int)0); - } - __pyx_v_ref = values[3]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1174, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.child.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loop), __pyx_ptype_6gevent_5libev_8corecext_loop, 1, "loop", 0))) __PYX_ERR(0, 1174, __pyx_L1_error) - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_5child___cinit__(((struct PyGeventChildObject *)__pyx_v_self), __pyx_v_loop, __pyx_v_pid, __pyx_v_trace, __pyx_v_ref); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_5child___cinit__(struct PyGeventChildObject *__pyx_v_self, struct PyGeventLoopObject *__pyx_v_loop, int __pyx_v_pid, int __pyx_v_trace, CYTHON_UNUSED PyObject *__pyx_v_ref) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - int __pyx_t_3; - int __pyx_t_4; - __Pyx_RefNannySetupContext("__cinit__", 0); - - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1175, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_platform); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1175, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_win32, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1175, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(__pyx_t_3)) { - - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1176, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 1176, __pyx_L1_error) - - } - - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_loop), __pyx_n_s_default); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1177, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1177, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = ((!__pyx_t_3) != 0); - if (unlikely(__pyx_t_4)) { - - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1178, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 1178, __pyx_L1_error) - - } - - gevent_install_sigchld_handler(); - - ev_child_init((&__pyx_v_self->_watcher), ((void *)gevent_callback_child), __pyx_v_pid, __pyx_v_trace); - - __pyx_v_self->__pyx_base.__pyx___watcher = ((struct ev_watcher *)(&__pyx_v_self->_watcher)); - - __pyx_v_self->__pyx_base.__pyx___ss = (&__pyx_v_6gevent_5libev_8corecext_child_ss); - - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent.libev.corecext.child.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_5child_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_5child_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - struct PyGeventLoopObject *__pyx_v_loop = 0; - CYTHON_UNUSED int __pyx_v_pid; - CYTHON_UNUSED int __pyx_v_trace; - PyObject *__pyx_v_ref = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_loop,&__pyx_n_s_pid,&__pyx_n_s_trace,&__pyx_n_s_ref,0}; - PyObject* values[4] = {0,0,0,0}; - values[3] = ((PyObject *)Py_True); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pid)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 4, 1); __PYX_ERR(0, 1184, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_trace); - if (value) { values[2] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 3: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ref); - if (value) { values[3] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1184, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_loop = ((struct PyGeventLoopObject *)values[0]); - __pyx_v_pid = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_pid == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1184, __pyx_L3_error) - if (values[2]) { - __pyx_v_trace = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_trace == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1184, __pyx_L3_error) - } else { - __pyx_v_trace = ((int)0); - } - __pyx_v_ref = values[3]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1184, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.child.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loop), __pyx_ptype_6gevent_5libev_8corecext_loop, 1, "loop", 0))) __PYX_ERR(0, 1184, __pyx_L1_error) - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_5child_2__init__(((struct PyGeventChildObject *)__pyx_v_self), __pyx_v_loop, __pyx_v_pid, __pyx_v_trace, __pyx_v_ref); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_5child_2__init__(struct PyGeventChildObject *__pyx_v_self, struct PyGeventLoopObject *__pyx_v_loop, CYTHON_UNUSED int __pyx_v_pid, CYTHON_UNUSED int __pyx_v_trace, PyObject *__pyx_v_ref) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - __Pyx_RefNannySetupContext("__init__", 0); - - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_6gevent_5libev_8corecext_watcher), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1185, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - __pyx_t_4 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_4 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[5] = {__pyx_t_3, ((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_loop), __pyx_v_ref, Py_None}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1185, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[5] = {__pyx_t_3, ((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_loop), __pyx_v_ref, Py_None}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1185, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_5 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1185, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (__pyx_t_3) { - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; - } - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, ((PyObject *)__pyx_v_self)); - __Pyx_INCREF(((PyObject *)__pyx_v_loop)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_loop)); - PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, ((PyObject *)__pyx_v_loop)); - __Pyx_INCREF(__pyx_v_ref); - __Pyx_GIVEREF(__pyx_v_ref); - PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_ref); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_4, Py_None); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1185, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent.libev.corecext.child.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_5child_5_format(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_5child_5_format(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_format (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_5child_4_format(((struct PyGeventChildObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_5child_4_format(struct PyGeventChildObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("_format", 0); - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_pid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1189, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rstatus); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1189, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1189, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); - __pyx_t_1 = 0; - __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_pid_r_rstatus_r, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1189, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent.libev.corecext.child._format", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_5child_3pid_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_5child_3pid_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_5child_3pid___get__(((struct PyGeventChildObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_5child_3pid___get__(struct PyGeventChildObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_watcher.pid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1193, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext.child.pid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_5child_4rpid_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_5child_4rpid_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_5child_4rpid___get__(((struct PyGeventChildObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_5child_4rpid___get__(struct PyGeventChildObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_watcher.rpid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1197, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext.child.rpid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_5child_4rpid_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_value); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_5child_4rpid_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_value) { - int __pyx_v_value; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); - assert(__pyx_arg_value); { - __pyx_v_value = __Pyx_PyInt_As_int(__pyx_arg_value); if (unlikely((__pyx_v_value == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1200, __pyx_L3_error) - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.child.rpid.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_5child_4rpid_2__set__(((struct PyGeventChildObject *)__pyx_v_self), ((int)__pyx_v_value)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_5child_4rpid_2__set__(struct PyGeventChildObject *__pyx_v_self, int __pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__", 0); - - __pyx_v_self->_watcher.rpid = __pyx_v_value; - - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_5child_7rstatus_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_5child_7rstatus_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_5child_7rstatus___get__(((struct PyGeventChildObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_5child_7rstatus___get__(struct PyGeventChildObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_watcher.rstatus); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1205, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext.child.rstatus.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_5child_7rstatus_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_value); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_5child_7rstatus_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_value) { - int __pyx_v_value; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); - assert(__pyx_arg_value); { - __pyx_v_value = __Pyx_PyInt_As_int(__pyx_arg_value); if (unlikely((__pyx_v_value == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1208, __pyx_L3_error) - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.child.rstatus.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_5child_7rstatus_2__set__(((struct PyGeventChildObject *)__pyx_v_self), ((int)__pyx_v_value)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_5child_7rstatus_2__set__(struct PyGeventChildObject *__pyx_v_self, int __pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__", 0); - - __pyx_v_self->_watcher.rstatus = __pyx_v_value; - - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_4stat_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_4stat_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_loop = 0; - PyObject *__pyx_v_path = 0; - float __pyx_v_interval; - CYTHON_UNUSED PyObject *__pyx_v_ref = 0; - CYTHON_UNUSED PyObject *__pyx_v_priority = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_loop,&__pyx_n_s_path,&__pyx_n_s_interval,&__pyx_n_s_ref,&__pyx_n_s_priority,0}; - PyObject* values[5] = {0,0,0,0,0}; - values[3] = ((PyObject *)Py_True); - values[4] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); - CYTHON_FALLTHROUGH; - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_path)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 2, 5, 1); __PYX_ERR(0, 1219, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_interval); - if (value) { values[2] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 3: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ref); - if (value) { values[3] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 4: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_priority); - if (value) { values[4] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 1219, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); - CYTHON_FALLTHROUGH; - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_loop = ((struct PyGeventLoopObject *)values[0]); - __pyx_v_path = ((PyObject*)values[1]); - if (values[2]) { - __pyx_v_interval = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_interval == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 1219, __pyx_L3_error) - } else { - __pyx_v_interval = ((float)0.0); - } - __pyx_v_ref = values[3]; - __pyx_v_priority = values[4]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 2, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1219, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.stat.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loop), __pyx_ptype_6gevent_5libev_8corecext_loop, 1, "loop", 0))) __PYX_ERR(0, 1219, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(0, 1219, __pyx_L1_error) - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4stat___cinit__(((struct PyGeventStatObject *)__pyx_v_self), __pyx_v_loop, __pyx_v_path, __pyx_v_interval, __pyx_v_ref, __pyx_v_priority); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_4stat___cinit__(struct PyGeventStatObject *__pyx_v_self, CYTHON_UNUSED struct PyGeventLoopObject *__pyx_v_loop, PyObject *__pyx_v_path, float __pyx_v_interval, CYTHON_UNUSED PyObject *__pyx_v_ref, CYTHON_UNUSED PyObject *__pyx_v_priority) { - PyObject *__pyx_v_paths = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - char *__pyx_t_8; - __Pyx_RefNannySetupContext("__cinit__", 0); - - __Pyx_INCREF(__pyx_v_path); - __Pyx_GIVEREF(__pyx_v_path); - __Pyx_GOTREF(__pyx_v_self->path); - __Pyx_DECREF(__pyx_v_self->path); - __pyx_v_self->path = __pyx_v_path; - - __pyx_t_1 = PyUnicode_Check(__pyx_v_path); - __pyx_t_2 = (__pyx_t_1 != 0); - if (__pyx_t_2) { - - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_path, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1226, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1226, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_getfilesystemencoding); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1226, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_7, function); - } - } - if (__pyx_t_6) { - __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1226, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } else { - __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1226, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_7); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (!__pyx_t_7) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1226, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_3); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_5}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1226, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_5}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1226, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else - #endif - { - __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1226, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __pyx_t_7 = NULL; - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_5); - __pyx_t_5 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1226, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (!(likely(PyBytes_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(0, 1226, __pyx_L1_error) - __pyx_v_paths = ((PyObject*)__pyx_t_3); - __pyx_t_3 = 0; - - __Pyx_INCREF(__pyx_v_paths); - __Pyx_GIVEREF(__pyx_v_paths); - __Pyx_GOTREF(__pyx_v_self->_paths); - __Pyx_DECREF(__pyx_v_self->_paths); - __pyx_v_self->_paths = __pyx_v_paths; - - goto __pyx_L3; - } - - /*else*/ { - __pyx_t_3 = __pyx_v_path; - __Pyx_INCREF(__pyx_t_3); - __pyx_v_paths = ((PyObject*)__pyx_t_3); - __pyx_t_3 = 0; - - __Pyx_INCREF(__pyx_v_paths); - __Pyx_GIVEREF(__pyx_v_paths); - __Pyx_GOTREF(__pyx_v_self->_paths); - __Pyx_DECREF(__pyx_v_self->_paths); - __pyx_v_self->_paths = __pyx_v_paths; - } - __pyx_L3:; - - if (unlikely(__pyx_v_paths == Py_None)) { - PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 1231, __pyx_L1_error) - } - __pyx_t_8 = __Pyx_PyBytes_AsWritableString(__pyx_v_paths); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 1231, __pyx_L1_error) - ev_stat_init((&__pyx_v_self->_watcher), ((void *)gevent_callback_stat), ((char *)__pyx_t_8), __pyx_v_interval); - - __pyx_v_self->__pyx_base.__pyx___watcher = ((struct ev_watcher *)(&__pyx_v_self->_watcher)); - - __pyx_v_self->__pyx_base.__pyx___ss = (&__pyx_v_6gevent_5libev_8corecext_stat_ss); - - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("gevent.libev.corecext.stat.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_paths); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static int __pyx_pw_6gevent_5libev_8corecext_4stat_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_5libev_8corecext_4stat_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - struct PyGeventLoopObject *__pyx_v_loop = 0; - CYTHON_UNUSED PyObject *__pyx_v_path = 0; - CYTHON_UNUSED float __pyx_v_interval; - PyObject *__pyx_v_ref = 0; - PyObject *__pyx_v_priority = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_loop,&__pyx_n_s_path,&__pyx_n_s_interval,&__pyx_n_s_ref,&__pyx_n_s_priority,0}; - PyObject* values[5] = {0,0,0,0,0}; - values[3] = ((PyObject *)Py_True); - values[4] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); - CYTHON_FALLTHROUGH; - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_path)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 5, 1); __PYX_ERR(0, 1235, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_interval); - if (value) { values[2] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 3: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ref); - if (value) { values[3] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 4: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_priority); - if (value) { values[4] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1235, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); - CYTHON_FALLTHROUGH; - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_loop = ((struct PyGeventLoopObject *)values[0]); - __pyx_v_path = ((PyObject*)values[1]); - if (values[2]) { - __pyx_v_interval = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_interval == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 1235, __pyx_L3_error) - } else { - __pyx_v_interval = ((float)0.0); - } - __pyx_v_ref = values[3]; - __pyx_v_priority = values[4]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1235, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.libev.corecext.stat.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loop), __pyx_ptype_6gevent_5libev_8corecext_loop, 1, "loop", 0))) __PYX_ERR(0, 1235, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(0, 1235, __pyx_L1_error) - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4stat_2__init__(((struct PyGeventStatObject *)__pyx_v_self), __pyx_v_loop, __pyx_v_path, __pyx_v_interval, __pyx_v_ref, __pyx_v_priority); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_5libev_8corecext_4stat_2__init__(struct PyGeventStatObject *__pyx_v_self, struct PyGeventLoopObject *__pyx_v_loop, CYTHON_UNUSED PyObject *__pyx_v_path, CYTHON_UNUSED float __pyx_v_interval, PyObject *__pyx_v_ref, PyObject *__pyx_v_priority) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - __Pyx_RefNannySetupContext("__init__", 0); - - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_6gevent_5libev_8corecext_watcher), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1236, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - __pyx_t_4 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_4 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[5] = {__pyx_t_3, ((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_loop), __pyx_v_ref, __pyx_v_priority}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1236, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[5] = {__pyx_t_3, ((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_loop), __pyx_v_ref, __pyx_v_priority}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1236, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_5 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1236, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (__pyx_t_3) { - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; - } - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, ((PyObject *)__pyx_v_self)); - __Pyx_INCREF(((PyObject *)__pyx_v_loop)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_loop)); - PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, ((PyObject *)__pyx_v_loop)); - __Pyx_INCREF(__pyx_v_ref); - __Pyx_GIVEREF(__pyx_v_ref); - PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_ref); - __Pyx_INCREF(__pyx_v_priority); - __Pyx_GIVEREF(__pyx_v_priority); - PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_4, __pyx_v_priority); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1236, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent.libev.corecext.stat.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4stat_4attr_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4stat_4attr_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4stat_4attr___get__(((struct PyGeventStatObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4stat_4attr___get__(struct PyGeventStatObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - __pyx_t_1 = ((!(__pyx_v_self->_watcher.attr.st_nlink != 0)) != 0); - if (__pyx_t_1) { - - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - } - - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = _pystat_fromstructstat((&__pyx_v_self->_watcher.attr)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1243, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent.libev.corecext.stat.attr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4stat_4prev_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4stat_4prev_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4stat_4prev___get__(((struct PyGeventStatObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4stat_4prev___get__(struct PyGeventStatObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - __pyx_t_1 = ((!(__pyx_v_self->_watcher.prev.st_nlink != 0)) != 0); - if (__pyx_t_1) { - - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - } - - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = _pystat_fromstructstat((&__pyx_v_self->_watcher.prev)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1249, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent.libev.corecext.stat.prev.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4stat_8interval_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4stat_8interval_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4stat_8interval___get__(((struct PyGeventStatObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4stat_8interval___get__(struct PyGeventStatObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->_watcher.interval); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1253, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext.stat.interval.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4stat_4path_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4stat_4path_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4stat_4path___get__(((struct PyGeventStatObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4stat_4path___get__(struct PyGeventStatObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->path); - __pyx_r = __pyx_v_self->path; - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4stat_6_paths_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_4stat_6_paths_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_4stat_6_paths___get__(((struct PyGeventStatObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_4stat_6_paths___get__(struct PyGeventStatObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->_paths); - __pyx_r = __pyx_v_self->_paths; - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -static void __pyx_f_6gevent_5libev_8corecext__syserr_cb(char *__pyx_v_msg) { - PyObject *__pyx_v_print_exc = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - int __pyx_t_9; - PyObject *__pyx_t_10 = NULL; - int __pyx_t_11; - int __pyx_t_12; - #ifdef WITH_THREAD - PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); - #endif - __Pyx_RefNannySetupContext("_syserr_cb", 0); - - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_t_3); - /*try:*/ { - - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_SYSERR_CALLBACK); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1262, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyBytes_FromString(__pyx_v_msg); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1262, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = __Pyx_PyInt_From_int(errno); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1262, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_8 = NULL; - __pyx_t_9 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_8)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_8); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - __pyx_t_9 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_6, __pyx_t_7}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1262, __pyx_L3_error) - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_6, __pyx_t_7}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1262, __pyx_L3_error) - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } else - #endif - { - __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1262, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_10); - if (__pyx_t_8) { - __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = NULL; - } - __Pyx_GIVEREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_t_6); - __Pyx_GIVEREF(__pyx_t_7); - PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_t_7); - __pyx_t_6 = 0; - __pyx_t_7 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_10, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1262, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - } - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - } - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L8_try_end; - __pyx_L3_error:; - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - - /*except:*/ { - __Pyx_AddTraceback("gevent.libev.corecext._syserr_cb", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_10) < 0) __PYX_ERR(0, 1263, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GOTREF(__pyx_t_10); - - __pyx_t_7 = __pyx_f_6gevent_5libev_8corecext_set_syserr_cb(Py_None, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1264, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_traceback); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1265, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_6 = __Pyx_GetAttr3(__pyx_t_7, __pyx_n_s_print_exc, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1265, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_v_print_exc = __pyx_t_6; - __pyx_t_6 = 0; - - __pyx_t_11 = (__pyx_v_print_exc != Py_None); - __pyx_t_12 = (__pyx_t_11 != 0); - if (__pyx_t_12) { - - __Pyx_INCREF(__pyx_v_print_exc); - __pyx_t_7 = __pyx_v_print_exc; __pyx_t_8 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { - __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); - if (likely(__pyx_t_8)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); - __Pyx_INCREF(__pyx_t_8); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_7, function); - } - } - if (__pyx_t_8) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1267, __pyx_L5_except_error) - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } else { - __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1267, __pyx_L5_except_error) - } - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - - } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - goto __pyx_L4_exception_handled; - } - __pyx_L5_except_error:; - - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - goto __pyx_L1_error; - __pyx_L4_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - __pyx_L8_try_end:; - } - - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_XDECREF(__pyx_t_10); - __Pyx_WriteUnraisable("gevent.libev.corecext._syserr_cb", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_print_exc); - __Pyx_RefNannyFinishContext(); - #ifdef WITH_THREAD - __Pyx_PyGILState_Release(__pyx_gilstate_save); - #endif -} - - -static PyObject *__pyx_pw_6gevent_5libev_8corecext_21set_syserr_cb(PyObject *__pyx_self, PyObject *__pyx_v_callback); /*proto*/ -static PyObject *__pyx_f_6gevent_5libev_8corecext_set_syserr_cb(PyObject *__pyx_v_callback, CYTHON_UNUSED int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("set_syserr_cb", 0); - - __pyx_t_1 = (__pyx_v_callback == Py_None); - __pyx_t_2 = (__pyx_t_1 != 0); - if (__pyx_t_2) { - - ev_set_syserr_cb(NULL); - - if (PyDict_SetItem(__pyx_d, __pyx_n_s_SYSERR_CALLBACK, Py_None) < 0) __PYX_ERR(0, 1274, __pyx_L1_error) - - goto __pyx_L3; - } - - __pyx_t_2 = __Pyx_PyCallable_Check(__pyx_v_callback); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1275, __pyx_L1_error) - __pyx_t_1 = (__pyx_t_2 != 0); - if (likely(__pyx_t_1)) { - - ev_set_syserr_cb(((void *)__pyx_f_6gevent_5libev_8corecext__syserr_cb)); - - if (PyDict_SetItem(__pyx_d, __pyx_n_s_SYSERR_CALLBACK, __pyx_v_callback) < 0) __PYX_ERR(0, 1277, __pyx_L1_error) - - goto __pyx_L3; - } - - /*else*/ { - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1279, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_INCREF(__pyx_v_callback); - __Pyx_GIVEREF(__pyx_v_callback); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_callback); - __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Expected_callable_or_None_got_r, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1279, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1279, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 1279, __pyx_L1_error) - } - __pyx_L3:; - - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent.libev.corecext.set_syserr_cb", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_21set_syserr_cb(PyObject *__pyx_self, PyObject *__pyx_v_callback); /*proto*/ -static PyObject *__pyx_pw_6gevent_5libev_8corecext_21set_syserr_cb(PyObject *__pyx_self, PyObject *__pyx_v_callback) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("set_syserr_cb (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_5libev_8corecext_20set_syserr_cb(__pyx_self, ((PyObject *)__pyx_v_callback)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_5libev_8corecext_20set_syserr_cb(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("set_syserr_cb", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_5libev_8corecext_set_syserr_cb(__pyx_v_callback, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1270, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext.set_syserr_cb", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - - -void gevent_handle_error(struct PyGeventLoopObject *__pyx_v_loop, PyObject *__pyx_v_context) { - PyObject *__pyx_v_typep; - PyObject *__pyx_v_valuep; - PyObject *__pyx_v_tracebackp; - PyObject *__pyx_v_type = 0; - PyObject *__pyx_v_value = 0; - PyObject *__pyx_v_traceback = 0; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("gevent_handle_error", 0); - - __Pyx_INCREF(Py_None); - __pyx_v_value = Py_None; - - __Pyx_INCREF(Py_None); - __pyx_v_traceback = Py_None; - - PyErr_Fetch((&__pyx_v_typep), (&__pyx_v_valuep), (&__pyx_v_tracebackp)); - - __pyx_t_1 = ((!(__pyx_v_typep != 0)) != 0); - if (__pyx_t_1) { - - goto __pyx_L0; - - } - - __pyx_t_2 = ((PyObject *)__pyx_v_typep); - __Pyx_INCREF(__pyx_t_2); - __pyx_v_type = __pyx_t_2; - __pyx_t_2 = 0; - - Py_DECREF(__pyx_v_type); - - __pyx_t_1 = (__pyx_v_valuep != 0); - if (__pyx_t_1) { - - __pyx_t_2 = ((PyObject *)__pyx_v_valuep); - __Pyx_INCREF(__pyx_t_2); - __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_2); - __pyx_t_2 = 0; - - Py_DECREF(__pyx_v_value); - - } - - __pyx_t_1 = (__pyx_v_tracebackp != 0); - if (__pyx_t_1) { - - __pyx_t_2 = ((PyObject *)__pyx_v_tracebackp); - __Pyx_INCREF(__pyx_t_2); - __Pyx_DECREF_SET(__pyx_v_traceback, __pyx_t_2); - __pyx_t_2 = 0; - - Py_DECREF(__pyx_v_traceback); - - } - - __pyx_t_2 = ((struct __pyx_vtabstruct_6gevent_5libev_8corecext_loop *)__pyx_v_loop->__pyx_vtab)->handle_error(__pyx_v_loop, __pyx_v_context, __pyx_v_type, __pyx_v_value, __pyx_v_traceback, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1335, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_WriteUnraisable("gevent.libev.corecext.gevent_handle_error", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_type); - __Pyx_XDECREF(__pyx_v_value); - __Pyx_XDECREF(__pyx_v_traceback); - __Pyx_RefNannyFinishContext(); -} - - -PyObject *gevent_loop_run_callbacks(struct PyGeventLoopObject *__pyx_v_loop) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("gevent_loop_run_callbacks", 0); - - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_5libev_8corecext_loop *)__pyx_v_loop->__pyx_vtab)->_run_callbacks(__pyx_v_loop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1340, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.libev.corecext.gevent_loop_run_callbacks", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_tp_new_6gevent_5libev_8corecext__EVENTSType(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - PyObject *o; - if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { - o = (*t->tp_alloc)(t, 0); - } else { - o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); - } - if (unlikely(!o)) return 0; - return o; -} - -static void __pyx_tp_dealloc_6gevent_5libev_8corecext__EVENTSType(PyObject *o) { - #if CYTHON_USE_TP_FINALIZE - if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - #endif - (*Py_TYPE(o)->tp_free)(o); -} - -static PyMethodDef __pyx_methods_6gevent_5libev_8corecext__EVENTSType[] = { - {0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_5libev_8corecext__EVENTSType = { - PyVarObject_HEAD_INIT(0, 0) - "gevent.libev.corecext._EVENTSType", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_5libev_8corecext__EVENTSType), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_5libev_8corecext__EVENTSType, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - __pyx_pw_6gevent_5libev_8corecext_11_EVENTSType_1__repr__, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_5libev_8corecext__EVENTSType, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - 0, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_5libev_8corecext__EVENTSType, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; - -static PyObject *__pyx_tp_new_6gevent_5libev_8corecext_callback(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - struct PyGeventCallbackObject *p; - PyObject *o; - if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { - o = (*t->tp_alloc)(t, 0); - } else { - o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); - } - if (unlikely(!o)) return 0; - p = ((struct PyGeventCallbackObject *)o); - p->callback = Py_None; Py_INCREF(Py_None); - p->args = ((PyObject*)Py_None); Py_INCREF(Py_None); - p->next = ((struct PyGeventCallbackObject *)Py_None); Py_INCREF(Py_None); - return o; -} - -static void __pyx_tp_dealloc_6gevent_5libev_8corecext_callback(PyObject *o) { - struct PyGeventCallbackObject *p = (struct PyGeventCallbackObject *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - #endif - PyObject_GC_UnTrack(o); - Py_CLEAR(p->callback); - Py_CLEAR(p->args); - Py_CLEAR(p->next); - (*Py_TYPE(o)->tp_free)(o); -} - -static int __pyx_tp_traverse_6gevent_5libev_8corecext_callback(PyObject *o, visitproc v, void *a) { - int e; - struct PyGeventCallbackObject *p = (struct PyGeventCallbackObject *)o; - if (p->callback) { - e = (*v)(p->callback, a); if (e) return e; - } - if (p->args) { - e = (*v)(p->args, a); if (e) return e; - } - if (p->next) { - e = (*v)(((PyObject *)p->next), a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_6gevent_5libev_8corecext_callback(PyObject *o) { - PyObject* tmp; - struct PyGeventCallbackObject *p = (struct PyGeventCallbackObject *)o; - tmp = ((PyObject*)p->callback); - p->callback = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->args); - p->args = ((PyObject*)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->next); - p->next = ((struct PyGeventCallbackObject *)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_8callback_pending(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_8callback_7pending_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_8callback_callback(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_8callback_8callback_1__get__(o); -} - -static int __pyx_setprop_6gevent_5libev_8corecext_8callback_callback(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { - if (v) { - return __pyx_pw_6gevent_5libev_8corecext_8callback_8callback_3__set__(o, v); - } - else { - return __pyx_pw_6gevent_5libev_8corecext_8callback_8callback_5__del__(o); - } -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_8callback_args(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_8callback_4args_1__get__(o); -} - -static int __pyx_setprop_6gevent_5libev_8corecext_8callback_args(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { - if (v) { - return __pyx_pw_6gevent_5libev_8corecext_8callback_4args_3__set__(o, v); - } - else { - return __pyx_pw_6gevent_5libev_8corecext_8callback_4args_5__del__(o); - } -} - -static PyMethodDef __pyx_methods_6gevent_5libev_8corecext_callback[] = { - {"stop", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_8callback_3stop, METH_NOARGS, 0}, - {"_format", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_8callback_9_format, METH_NOARGS, 0}, - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_6gevent_5libev_8corecext_callback[] = { - {(char *)"pending", __pyx_getprop_6gevent_5libev_8corecext_8callback_pending, 0, (char *)0, 0}, - {(char *)"callback", __pyx_getprop_6gevent_5libev_8corecext_8callback_callback, __pyx_setprop_6gevent_5libev_8corecext_8callback_callback, (char *)0, 0}, - {(char *)"args", __pyx_getprop_6gevent_5libev_8corecext_8callback_args, __pyx_setprop_6gevent_5libev_8corecext_8callback_args, (char *)0, 0}, - {0, 0, 0, 0, 0} -}; - -static PyNumberMethods __pyx_tp_as_number_callback = { - 0, /*nb_add*/ - 0, /*nb_subtract*/ - 0, /*nb_multiply*/ - #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000) - 0, /*nb_divide*/ - #endif - 0, /*nb_remainder*/ - 0, /*nb_divmod*/ - 0, /*nb_power*/ - 0, /*nb_negative*/ - 0, /*nb_positive*/ - 0, /*nb_absolute*/ - __pyx_pw_6gevent_5libev_8corecext_8callback_5__nonzero__, /*nb_nonzero*/ - 0, /*nb_invert*/ - 0, /*nb_lshift*/ - 0, /*nb_rshift*/ - 0, /*nb_and*/ - 0, /*nb_xor*/ - 0, /*nb_or*/ - #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000) - 0, /*nb_coerce*/ - #endif - 0, /*nb_int*/ - #if PY_MAJOR_VERSION < 3 - 0, /*nb_long*/ - #else - 0, /*reserved*/ - #endif - 0, /*nb_float*/ - #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000) - 0, /*nb_oct*/ - #endif - #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000) - 0, /*nb_hex*/ - #endif - 0, /*nb_inplace_add*/ - 0, /*nb_inplace_subtract*/ - 0, /*nb_inplace_multiply*/ - #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000) - 0, /*nb_inplace_divide*/ - #endif - 0, /*nb_inplace_remainder*/ - 0, /*nb_inplace_power*/ - 0, /*nb_inplace_lshift*/ - 0, /*nb_inplace_rshift*/ - 0, /*nb_inplace_and*/ - 0, /*nb_inplace_xor*/ - 0, /*nb_inplace_or*/ - 0, /*nb_floor_divide*/ - 0, /*nb_true_divide*/ - 0, /*nb_inplace_floor_divide*/ - 0, /*nb_inplace_true_divide*/ - 0, /*nb_index*/ - #if PY_VERSION_HEX >= 0x03050000 - 0, /*nb_matrix_multiply*/ - #endif - #if PY_VERSION_HEX >= 0x03050000 - 0, /*nb_inplace_matrix_multiply*/ - #endif -}; - -DL_EXPORT(PyTypeObject) PyGeventCallback_Type = { - PyVarObject_HEAD_INIT(0, 0) - "gevent.libev.corecext.callback", /*tp_name*/ - sizeof(struct PyGeventCallbackObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_5libev_8corecext_callback, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - __pyx_pw_6gevent_5libev_8corecext_8callback_7__repr__, /*tp_repr*/ - &__pyx_tp_as_number_callback, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - 0, /*tp_doc*/ - __pyx_tp_traverse_6gevent_5libev_8corecext_callback, /*tp_traverse*/ - __pyx_tp_clear_6gevent_5libev_8corecext_callback, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_5libev_8corecext_callback, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_6gevent_5libev_8corecext_callback, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_5libev_8corecext_8callback_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_5libev_8corecext_callback, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; -static struct __pyx_vtabstruct_6gevent_5libev_8corecext_CallbackFIFO __pyx_vtable_6gevent_5libev_8corecext_CallbackFIFO; - -static PyObject *__pyx_tp_new_6gevent_5libev_8corecext_CallbackFIFO(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *p; - PyObject *o; - o = (*t->tp_alloc)(t, 0); - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *)o); - p->__pyx_vtab = __pyx_vtabptr_6gevent_5libev_8corecext_CallbackFIFO; - p->head = ((struct PyGeventCallbackObject *)Py_None); Py_INCREF(Py_None); - p->tail = ((struct PyGeventCallbackObject *)Py_None); Py_INCREF(Py_None); - return o; -} - -static void __pyx_tp_dealloc_6gevent_5libev_8corecext_CallbackFIFO(PyObject *o) { - struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *p = (struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *)o; - PyObject_GC_UnTrack(o); - Py_CLEAR(p->head); - Py_CLEAR(p->tail); - (*Py_TYPE(o)->tp_free)(o); -} - -static int __pyx_tp_traverse_6gevent_5libev_8corecext_CallbackFIFO(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *p = (struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *)o; - if (p->head) { - e = (*v)(((PyObject *)p->head), a); if (e) return e; - } - if (p->tail) { - e = (*v)(((PyObject *)p->tail), a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_6gevent_5libev_8corecext_CallbackFIFO(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *p = (struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *)o; - tmp = ((PyObject*)p->head); - p->head = ((struct PyGeventCallbackObject *)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->tail); - p->tail = ((struct PyGeventCallbackObject *)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyMethodDef __pyx_methods_6gevent_5libev_8corecext_CallbackFIFO[] = { - {0, 0, 0, 0} -}; - -static PyNumberMethods __pyx_tp_as_number_CallbackFIFO = { - 0, /*nb_add*/ - 0, /*nb_subtract*/ - 0, /*nb_multiply*/ - #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000) - 0, /*nb_divide*/ - #endif - 0, /*nb_remainder*/ - 0, /*nb_divmod*/ - 0, /*nb_power*/ - 0, /*nb_negative*/ - 0, /*nb_positive*/ - 0, /*nb_absolute*/ - __pyx_pw_6gevent_5libev_8corecext_12CallbackFIFO_3__nonzero__, /*nb_nonzero*/ - 0, /*nb_invert*/ - 0, /*nb_lshift*/ - 0, /*nb_rshift*/ - 0, /*nb_and*/ - 0, /*nb_xor*/ - 0, /*nb_or*/ - #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000) - 0, /*nb_coerce*/ - #endif - 0, /*nb_int*/ - #if PY_MAJOR_VERSION < 3 - 0, /*nb_long*/ - #else - 0, /*reserved*/ - #endif - 0, /*nb_float*/ - #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000) - 0, /*nb_oct*/ - #endif - #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000) - 0, /*nb_hex*/ - #endif - 0, /*nb_inplace_add*/ - 0, /*nb_inplace_subtract*/ - 0, /*nb_inplace_multiply*/ - #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000) - 0, /*nb_inplace_divide*/ - #endif - 0, /*nb_inplace_remainder*/ - 0, /*nb_inplace_power*/ - 0, /*nb_inplace_lshift*/ - 0, /*nb_inplace_rshift*/ - 0, /*nb_inplace_and*/ - 0, /*nb_inplace_xor*/ - 0, /*nb_inplace_or*/ - 0, /*nb_floor_divide*/ - 0, /*nb_true_divide*/ - 0, /*nb_inplace_floor_divide*/ - 0, /*nb_inplace_true_divide*/ - 0, /*nb_index*/ - #if PY_VERSION_HEX >= 0x03050000 - 0, /*nb_matrix_multiply*/ - #endif - #if PY_VERSION_HEX >= 0x03050000 - 0, /*nb_inplace_matrix_multiply*/ - #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence_CallbackFIFO = { - __pyx_pw_6gevent_5libev_8corecext_12CallbackFIFO_5__len__, /*sq_length*/ - 0, /*sq_concat*/ - 0, /*sq_repeat*/ - 0, /*sq_item*/ - 0, /*sq_slice*/ - 0, /*sq_ass_item*/ - 0, /*sq_ass_slice*/ - 0, /*sq_contains*/ - 0, /*sq_inplace_concat*/ - 0, /*sq_inplace_repeat*/ -}; - -static PyMappingMethods __pyx_tp_as_mapping_CallbackFIFO = { - __pyx_pw_6gevent_5libev_8corecext_12CallbackFIFO_5__len__, /*mp_length*/ - 0, /*mp_subscript*/ - 0, /*mp_ass_subscript*/ -}; - -static PyTypeObject __pyx_type_6gevent_5libev_8corecext_CallbackFIFO = { - PyVarObject_HEAD_INIT(0, 0) - "gevent.libev.corecext.CallbackFIFO", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_5libev_8corecext_CallbackFIFO, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - __pyx_pw_6gevent_5libev_8corecext_12CallbackFIFO_9__repr__, /*tp_repr*/ - &__pyx_tp_as_number_CallbackFIFO, /*tp_as_number*/ - &__pyx_tp_as_sequence_CallbackFIFO, /*tp_as_sequence*/ - &__pyx_tp_as_mapping_CallbackFIFO, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - 0, /*tp_doc*/ - __pyx_tp_traverse_6gevent_5libev_8corecext_CallbackFIFO, /*tp_traverse*/ - __pyx_tp_clear_6gevent_5libev_8corecext_CallbackFIFO, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - __pyx_pw_6gevent_5libev_8corecext_12CallbackFIFO_7__iter__, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_5libev_8corecext_CallbackFIFO, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_5libev_8corecext_12CallbackFIFO_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_5libev_8corecext_CallbackFIFO, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; -static struct __pyx_vtabstruct_6gevent_5libev_8corecext_loop __pyx_vtable_6gevent_5libev_8corecext_loop; - -static PyObject *__pyx_tp_new_6gevent_5libev_8corecext_loop(PyTypeObject *t, PyObject *a, PyObject *k) { - struct PyGeventLoopObject *p; - PyObject *o; - if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { - o = (*t->tp_alloc)(t, 0); - } else { - o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); - } - if (unlikely(!o)) return 0; - p = ((struct PyGeventLoopObject *)o); - p->__pyx_vtab = __pyx_vtabptr_6gevent_5libev_8corecext_loop; - p->error_handler = Py_None; Py_INCREF(Py_None); - p->_callbacks = ((struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *)Py_None); Py_INCREF(Py_None); - if (unlikely(__pyx_pw_6gevent_5libev_8corecext_4loop_1__cinit__(o, a, k) < 0)) goto bad; - return o; - bad: - Py_DECREF(o); o = 0; - return NULL; -} - -static void __pyx_tp_dealloc_6gevent_5libev_8corecext_loop(PyObject *o) { - struct PyGeventLoopObject *p = (struct PyGeventLoopObject *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - #endif - PyObject_GC_UnTrack(o); - { - PyObject *etype, *eval, *etb; - PyErr_Fetch(&etype, &eval, &etb); - ++Py_REFCNT(o); - __pyx_pw_6gevent_5libev_8corecext_4loop_7__dealloc__(o); - --Py_REFCNT(o); - PyErr_Restore(etype, eval, etb); - } - Py_CLEAR(p->error_handler); - Py_CLEAR(p->_callbacks); - (*Py_TYPE(o)->tp_free)(o); -} - -static int __pyx_tp_traverse_6gevent_5libev_8corecext_loop(PyObject *o, visitproc v, void *a) { - int e; - struct PyGeventLoopObject *p = (struct PyGeventLoopObject *)o; - if (p->error_handler) { - e = (*v)(p->error_handler, a); if (e) return e; - } - if (p->_callbacks) { - e = (*v)(((PyObject *)p->_callbacks), a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_6gevent_5libev_8corecext_loop(PyObject *o) { - PyObject* tmp; - struct PyGeventLoopObject *p = (struct PyGeventLoopObject *)o; - tmp = ((PyObject*)p->error_handler); - p->error_handler = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->_callbacks); - p->_callbacks = ((struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_4loop_ptr(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_4loop_3ptr_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_4loop_WatcherType(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_4loop_11WatcherType_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_4loop_MAXPRI(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_4loop_6MAXPRI_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_4loop_MINPRI(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_4loop_6MINPRI_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_4loop_default(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_4loop_7default_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_4loop_iteration(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_4loop_9iteration_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_4loop_depth(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_4loop_5depth_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_4loop_backend_int(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_4loop_11backend_int_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_4loop_backend(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_4loop_7backend_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_4loop_pendingcnt(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_4loop_10pendingcnt_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_4loop_activecnt(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_4loop_9activecnt_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_4loop_sig_pending(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_4loop_11sig_pending_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_4loop_origflags(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_4loop_9origflags_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_4loop_origflags_int(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_4loop_13origflags_int_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_4loop_sigfd(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_4loop_5sigfd_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_4loop_error_handler(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_4loop_13error_handler_1__get__(o); -} - -static int __pyx_setprop_6gevent_5libev_8corecext_4loop_error_handler(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { - if (v) { - return __pyx_pw_6gevent_5libev_8corecext_4loop_13error_handler_3__set__(o, v); - } - else { - return __pyx_pw_6gevent_5libev_8corecext_4loop_13error_handler_5__del__(o); - } -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_4loop__callbacks(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_4loop_10_callbacks_1__get__(o); -} - -static int __pyx_setprop_6gevent_5libev_8corecext_4loop__callbacks(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { - if (v) { - return __pyx_pw_6gevent_5libev_8corecext_4loop_10_callbacks_3__set__(o, v); - } - else { - return __pyx_pw_6gevent_5libev_8corecext_4loop_10_callbacks_5__del__(o); - } -} - -static PyMethodDef __pyx_methods_6gevent_5libev_8corecext_loop[] = { - {"destroy", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_4loop_5destroy, METH_NOARGS, 0}, - {"_handle_syserr", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_4loop_9_handle_syserr, METH_VARARGS|METH_KEYWORDS, 0}, - {"handle_error", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_4loop_11handle_error, METH_VARARGS|METH_KEYWORDS, 0}, - {"_default_handle_error", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_4loop_13_default_handle_error, METH_VARARGS|METH_KEYWORDS, 0}, - {"run", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_4loop_15run, METH_VARARGS|METH_KEYWORDS, 0}, - {"reinit", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_4loop_17reinit, METH_NOARGS, 0}, - {"ref", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_4loop_19ref, METH_NOARGS, 0}, - {"unref", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_4loop_21unref, METH_NOARGS, 0}, - {"break_", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_4loop_23break_, METH_VARARGS|METH_KEYWORDS, 0}, - {"verify", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_4loop_25verify, METH_NOARGS, 0}, - {"now", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_4loop_27now, METH_NOARGS, 0}, - {"update_now", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_4loop_29update_now, METH_NOARGS, 0}, - {"io", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_4loop_33io, METH_VARARGS|METH_KEYWORDS, 0}, - {"timer", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_4loop_35timer, METH_VARARGS|METH_KEYWORDS, 0}, - {"signal", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_4loop_37signal, METH_VARARGS|METH_KEYWORDS, 0}, - {"idle", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_4loop_39idle, METH_VARARGS|METH_KEYWORDS, 0}, - {"prepare", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_4loop_41prepare, METH_VARARGS|METH_KEYWORDS, 0}, - {"check", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_4loop_43check, METH_VARARGS|METH_KEYWORDS, 0}, - {"fork", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_4loop_45fork, METH_VARARGS|METH_KEYWORDS, 0}, - {"async_", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_4loop_47async_, METH_VARARGS|METH_KEYWORDS, 0}, - {"child", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_4loop_49child, METH_VARARGS|METH_KEYWORDS, 0}, - {"install_sigchld", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_4loop_51install_sigchld, METH_NOARGS, 0}, - {"reset_sigchld", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_4loop_53reset_sigchld, METH_NOARGS, 0}, - {"stat", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_4loop_55stat, METH_VARARGS|METH_KEYWORDS, 0}, - {"run_callback", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_4loop_57run_callback, METH_VARARGS|METH_KEYWORDS, 0}, - {"_format", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_4loop_59_format, METH_NOARGS, 0}, - {"_format_details", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_4loop_61_format_details, METH_NOARGS, 0}, - {"fileno", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_4loop_63fileno, METH_NOARGS, 0}, - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_6gevent_5libev_8corecext_loop[] = { - {(char *)"ptr", __pyx_getprop_6gevent_5libev_8corecext_4loop_ptr, 0, (char *)0, 0}, - {(char *)"WatcherType", __pyx_getprop_6gevent_5libev_8corecext_4loop_WatcherType, 0, (char *)0, 0}, - {(char *)"MAXPRI", __pyx_getprop_6gevent_5libev_8corecext_4loop_MAXPRI, 0, (char *)0, 0}, - {(char *)"MINPRI", __pyx_getprop_6gevent_5libev_8corecext_4loop_MINPRI, 0, (char *)0, 0}, - {(char *)"default", __pyx_getprop_6gevent_5libev_8corecext_4loop_default, 0, (char *)0, 0}, - {(char *)"iteration", __pyx_getprop_6gevent_5libev_8corecext_4loop_iteration, 0, (char *)0, 0}, - {(char *)"depth", __pyx_getprop_6gevent_5libev_8corecext_4loop_depth, 0, (char *)0, 0}, - {(char *)"backend_int", __pyx_getprop_6gevent_5libev_8corecext_4loop_backend_int, 0, (char *)0, 0}, - {(char *)"backend", __pyx_getprop_6gevent_5libev_8corecext_4loop_backend, 0, (char *)0, 0}, - {(char *)"pendingcnt", __pyx_getprop_6gevent_5libev_8corecext_4loop_pendingcnt, 0, (char *)0, 0}, - {(char *)"activecnt", __pyx_getprop_6gevent_5libev_8corecext_4loop_activecnt, 0, (char *)0, 0}, - {(char *)"sig_pending", __pyx_getprop_6gevent_5libev_8corecext_4loop_sig_pending, 0, (char *)0, 0}, - {(char *)"origflags", __pyx_getprop_6gevent_5libev_8corecext_4loop_origflags, 0, (char *)0, 0}, - {(char *)"origflags_int", __pyx_getprop_6gevent_5libev_8corecext_4loop_origflags_int, 0, (char *)0, 0}, - {(char *)"sigfd", __pyx_getprop_6gevent_5libev_8corecext_4loop_sigfd, 0, (char *)0, 0}, - {(char *)"error_handler", __pyx_getprop_6gevent_5libev_8corecext_4loop_error_handler, __pyx_setprop_6gevent_5libev_8corecext_4loop_error_handler, (char *)0, 0}, - {(char *)"_callbacks", __pyx_getprop_6gevent_5libev_8corecext_4loop__callbacks, __pyx_setprop_6gevent_5libev_8corecext_4loop__callbacks, (char *)0, 0}, - {0, 0, 0, 0, 0} -}; - -DL_EXPORT(PyTypeObject) PyGeventLoop_Type = { - PyVarObject_HEAD_INIT(0, 0) - "gevent.libev.corecext.loop", /*tp_name*/ - sizeof(struct PyGeventLoopObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_5libev_8corecext_loop, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - __pyx_pw_6gevent_5libev_8corecext_4loop_31__repr__, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - 0, /*tp_doc*/ - __pyx_tp_traverse_6gevent_5libev_8corecext_loop, /*tp_traverse*/ - __pyx_tp_clear_6gevent_5libev_8corecext_loop, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_5libev_8corecext_loop, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_6gevent_5libev_8corecext_loop, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_5libev_8corecext_4loop_3__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_5libev_8corecext_loop, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; - -static PyObject *__pyx_tp_new_6gevent_5libev_8corecext_watcher(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - struct PyGeventWatcherObject *p; - PyObject *o; - if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { - o = (*t->tp_alloc)(t, 0); - } else { - o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); - } - if (unlikely(!o)) return 0; - p = ((struct PyGeventWatcherObject *)o); - p->loop = ((struct PyGeventLoopObject *)Py_None); Py_INCREF(Py_None); - p->_callback = Py_None; Py_INCREF(Py_None); - p->args = ((PyObject*)Py_None); Py_INCREF(Py_None); - return o; -} - -static void __pyx_tp_dealloc_6gevent_5libev_8corecext_watcher(PyObject *o) { - struct PyGeventWatcherObject *p = (struct PyGeventWatcherObject *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - #endif - PyObject_GC_UnTrack(o); - Py_CLEAR(p->loop); - Py_CLEAR(p->_callback); - Py_CLEAR(p->args); - (*Py_TYPE(o)->tp_free)(o); -} - -static int __pyx_tp_traverse_6gevent_5libev_8corecext_watcher(PyObject *o, visitproc v, void *a) { - int e; - struct PyGeventWatcherObject *p = (struct PyGeventWatcherObject *)o; - if (p->loop) { - e = (*v)(((PyObject *)p->loop), a); if (e) return e; - } - if (p->_callback) { - e = (*v)(p->_callback, a); if (e) return e; - } - if (p->args) { - e = (*v)(p->args, a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_6gevent_5libev_8corecext_watcher(PyObject *o) { - PyObject* tmp; - struct PyGeventWatcherObject *p = (struct PyGeventWatcherObject *)o; - tmp = ((PyObject*)p->loop); - p->loop = ((struct PyGeventLoopObject *)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->_callback); - p->_callback = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->args); - p->args = ((PyObject*)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_7watcher_ref(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_7watcher_3ref_1__get__(o); -} - -static int __pyx_setprop_6gevent_5libev_8corecext_7watcher_ref(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { - if (v) { - return __pyx_pw_6gevent_5libev_8corecext_7watcher_3ref_3__set__(o, v); - } - else { - PyErr_SetString(PyExc_NotImplementedError, "__del__"); - return -1; - } -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_7watcher_callback(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_7watcher_8callback_1__get__(o); -} - -static int __pyx_setprop_6gevent_5libev_8corecext_7watcher_callback(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { - if (v) { - return __pyx_pw_6gevent_5libev_8corecext_7watcher_8callback_3__set__(o, v); - } - else { - PyErr_SetString(PyExc_NotImplementedError, "__del__"); - return -1; - } -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_7watcher_priority(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_7watcher_8priority_1__get__(o); -} - -static int __pyx_setprop_6gevent_5libev_8corecext_7watcher_priority(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { - if (v) { - return __pyx_pw_6gevent_5libev_8corecext_7watcher_8priority_3__set__(o, v); - } - else { - PyErr_SetString(PyExc_NotImplementedError, "__del__"); - return -1; - } -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_7watcher_active(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_7watcher_6active_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_7watcher_pending(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_7watcher_7pending_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_7watcher_loop(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_7watcher_4loop_1__get__(o); -} - -static int __pyx_setprop_6gevent_5libev_8corecext_7watcher_loop(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { - if (v) { - return __pyx_pw_6gevent_5libev_8corecext_7watcher_4loop_3__set__(o, v); - } - else { - return __pyx_pw_6gevent_5libev_8corecext_7watcher_4loop_5__del__(o); - } -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_7watcher_args(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_7watcher_4args_1__get__(o); -} - -static int __pyx_setprop_6gevent_5libev_8corecext_7watcher_args(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { - if (v) { - return __pyx_pw_6gevent_5libev_8corecext_7watcher_4args_3__set__(o, v); - } - else { - return __pyx_pw_6gevent_5libev_8corecext_7watcher_4args_5__del__(o); - } -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_7watcher__flags(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_7watcher_6_flags_1__get__(o); -} - -static PyMethodDef __pyx_methods_6gevent_5libev_8corecext_watcher[] = { - {"start", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_7watcher_3start, METH_VARARGS|METH_KEYWORDS, 0}, - {"stop", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_7watcher_5stop, METH_NOARGS, 0}, - {"feed", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_7watcher_7feed, METH_VARARGS|METH_KEYWORDS, 0}, - {"_format", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_7watcher_11_format, METH_NOARGS, 0}, - {"close", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_7watcher_13close, METH_NOARGS, 0}, - {"__enter__", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_7watcher_15__enter__, METH_NOARGS, 0}, - {"__exit__", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_7watcher_17__exit__, METH_VARARGS|METH_KEYWORDS, 0}, - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_6gevent_5libev_8corecext_watcher[] = { - {(char *)"ref", __pyx_getprop_6gevent_5libev_8corecext_7watcher_ref, __pyx_setprop_6gevent_5libev_8corecext_7watcher_ref, (char *)0, 0}, - {(char *)"callback", __pyx_getprop_6gevent_5libev_8corecext_7watcher_callback, __pyx_setprop_6gevent_5libev_8corecext_7watcher_callback, (char *)0, 0}, - {(char *)"priority", __pyx_getprop_6gevent_5libev_8corecext_7watcher_priority, __pyx_setprop_6gevent_5libev_8corecext_7watcher_priority, (char *)0, 0}, - {(char *)"active", __pyx_getprop_6gevent_5libev_8corecext_7watcher_active, 0, (char *)0, 0}, - {(char *)"pending", __pyx_getprop_6gevent_5libev_8corecext_7watcher_pending, 0, (char *)0, 0}, - {(char *)"loop", __pyx_getprop_6gevent_5libev_8corecext_7watcher_loop, __pyx_setprop_6gevent_5libev_8corecext_7watcher_loop, (char *)0, 0}, - {(char *)"args", __pyx_getprop_6gevent_5libev_8corecext_7watcher_args, __pyx_setprop_6gevent_5libev_8corecext_7watcher_args, (char *)0, 0}, - {(char *)"_flags", __pyx_getprop_6gevent_5libev_8corecext_7watcher__flags, 0, (char *)0, 0}, - {0, 0, 0, 0, 0} -}; - -DL_EXPORT(PyTypeObject) PyGeventWatcher_Type = { - PyVarObject_HEAD_INIT(0, 0) - "gevent.libev.corecext.watcher", /*tp_name*/ - sizeof(struct PyGeventWatcherObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_5libev_8corecext_watcher, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - __pyx_pw_6gevent_5libev_8corecext_7watcher_9__repr__, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "Abstract base class for all the watchers", /*tp_doc*/ - __pyx_tp_traverse_6gevent_5libev_8corecext_watcher, /*tp_traverse*/ - __pyx_tp_clear_6gevent_5libev_8corecext_watcher, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_5libev_8corecext_watcher, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_6gevent_5libev_8corecext_watcher, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_5libev_8corecext_7watcher_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_5libev_8corecext_watcher, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; - -static PyObject *__pyx_tp_new_6gevent_5libev_8corecext_io(PyTypeObject *t, PyObject *a, PyObject *k) { - PyObject *o = __pyx_tp_new_6gevent_5libev_8corecext_watcher(t, a, k); - if (unlikely(!o)) return 0; - if (unlikely(__pyx_pw_6gevent_5libev_8corecext_2io_5__cinit__(o, a, k) < 0)) goto bad; - return o; - bad: - Py_DECREF(o); o = 0; - return NULL; -} - -static void __pyx_tp_dealloc_6gevent_5libev_8corecext_io(PyObject *o) { - #if CYTHON_USE_TP_FINALIZE - if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - #endif - PyObject_GC_UnTrack(o); - { - PyObject *etype, *eval, *etb; - PyErr_Fetch(&etype, &eval, &etb); - ++Py_REFCNT(o); - __pyx_pw_6gevent_5libev_8corecext_2io_7__dealloc__(o); - --Py_REFCNT(o); - PyErr_Restore(etype, eval, etb); - } - PyObject_GC_Track(o); - __pyx_tp_dealloc_6gevent_5libev_8corecext_watcher(o); -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_2io_fd(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_2io_2fd_1__get__(o); -} - -static int __pyx_setprop_6gevent_5libev_8corecext_2io_fd(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { - if (v) { - return __pyx_pw_6gevent_5libev_8corecext_2io_2fd_3__set__(o, v); - } - else { - PyErr_SetString(PyExc_NotImplementedError, "__del__"); - return -1; - } -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_2io_events(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_2io_6events_1__get__(o); -} - -static int __pyx_setprop_6gevent_5libev_8corecext_2io_events(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { - if (v) { - return __pyx_pw_6gevent_5libev_8corecext_2io_6events_3__set__(o, v); - } - else { - PyErr_SetString(PyExc_NotImplementedError, "__del__"); - return -1; - } -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_2io_events_str(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_2io_10events_str_1__get__(o); -} - -static PyMethodDef __pyx_methods_6gevent_5libev_8corecext_io[] = { - {"start", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_2io_1start, METH_VARARGS|METH_KEYWORDS, 0}, - {"_format", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_2io_9_format, METH_NOARGS, 0}, - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_6gevent_5libev_8corecext_io[] = { - {(char *)"fd", __pyx_getprop_6gevent_5libev_8corecext_2io_fd, __pyx_setprop_6gevent_5libev_8corecext_2io_fd, (char *)0, 0}, - {(char *)"events", __pyx_getprop_6gevent_5libev_8corecext_2io_events, __pyx_setprop_6gevent_5libev_8corecext_2io_events, (char *)0, 0}, - {(char *)"events_str", __pyx_getprop_6gevent_5libev_8corecext_2io_events_str, 0, (char *)0, 0}, - {0, 0, 0, 0, 0} -}; - -DL_EXPORT(PyTypeObject) PyGeventIO_Type = { - PyVarObject_HEAD_INIT(0, 0) - "gevent.libev.corecext.io", /*tp_name*/ - sizeof(struct PyGeventIOObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_5libev_8corecext_io, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_5libev_8corecext_7watcher_9__repr__, /*tp_repr*/ - #else - 0, /*tp_repr*/ - #endif - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - 0, /*tp_doc*/ - __pyx_tp_traverse_6gevent_5libev_8corecext_watcher, /*tp_traverse*/ - __pyx_tp_clear_6gevent_5libev_8corecext_watcher, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_5libev_8corecext_io, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_6gevent_5libev_8corecext_io, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_5libev_8corecext_2io_3__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_5libev_8corecext_io, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; - -static PyObject *__pyx_tp_new_6gevent_5libev_8corecext_timer(PyTypeObject *t, PyObject *a, PyObject *k) { - PyObject *o = __pyx_tp_new_6gevent_5libev_8corecext_watcher(t, a, k); - if (unlikely(!o)) return 0; - if (unlikely(__pyx_pw_6gevent_5libev_8corecext_5timer_1__cinit__(o, a, k) < 0)) goto bad; - return o; - bad: - Py_DECREF(o); o = 0; - return NULL; -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_5timer_at(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_5timer_2at_1__get__(o); -} - -static PyMethodDef __pyx_methods_6gevent_5libev_8corecext_timer[] = { - {"start", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_5timer_5start, METH_VARARGS|METH_KEYWORDS, 0}, - {"again", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_5timer_7again, METH_VARARGS|METH_KEYWORDS, 0}, - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_6gevent_5libev_8corecext_timer[] = { - {(char *)"at", __pyx_getprop_6gevent_5libev_8corecext_5timer_at, 0, (char *)0, 0}, - {0, 0, 0, 0, 0} -}; - -DL_EXPORT(PyTypeObject) PyGeventTimer_Type = { - PyVarObject_HEAD_INIT(0, 0) - "gevent.libev.corecext.timer", /*tp_name*/ - sizeof(struct PyGeventTimerObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_5libev_8corecext_watcher, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_5libev_8corecext_7watcher_9__repr__, /*tp_repr*/ - #else - 0, /*tp_repr*/ - #endif - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - 0, /*tp_doc*/ - __pyx_tp_traverse_6gevent_5libev_8corecext_watcher, /*tp_traverse*/ - __pyx_tp_clear_6gevent_5libev_8corecext_watcher, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_5libev_8corecext_timer, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_6gevent_5libev_8corecext_timer, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_5libev_8corecext_5timer_3__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_5libev_8corecext_timer, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; - -static PyObject *__pyx_tp_new_6gevent_5libev_8corecext_signal(PyTypeObject *t, PyObject *a, PyObject *k) { - PyObject *o = __pyx_tp_new_6gevent_5libev_8corecext_watcher(t, a, k); - if (unlikely(!o)) return 0; - if (unlikely(__pyx_pw_6gevent_5libev_8corecext_6signal_1__cinit__(o, a, k) < 0)) goto bad; - return o; - bad: - Py_DECREF(o); o = 0; - return NULL; -} - -static PyMethodDef __pyx_methods_6gevent_5libev_8corecext_signal[] = { - {0, 0, 0, 0} -}; - -DL_EXPORT(PyTypeObject) PyGeventSignal_Type = { - PyVarObject_HEAD_INIT(0, 0) - "gevent.libev.corecext.signal", /*tp_name*/ - sizeof(struct PyGeventSignalObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_5libev_8corecext_watcher, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_5libev_8corecext_7watcher_9__repr__, /*tp_repr*/ - #else - 0, /*tp_repr*/ - #endif - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - 0, /*tp_doc*/ - __pyx_tp_traverse_6gevent_5libev_8corecext_watcher, /*tp_traverse*/ - __pyx_tp_clear_6gevent_5libev_8corecext_watcher, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_5libev_8corecext_signal, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_5libev_8corecext_6signal_3__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_5libev_8corecext_signal, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; - -static PyObject *__pyx_tp_new_6gevent_5libev_8corecext_idle(PyTypeObject *t, PyObject *a, PyObject *k) { - PyObject *o = __pyx_tp_new_6gevent_5libev_8corecext_watcher(t, a, k); - if (unlikely(!o)) return 0; - if (unlikely(__pyx_pw_6gevent_5libev_8corecext_4idle_1__cinit__(o, a, k) < 0)) goto bad; - return o; - bad: - Py_DECREF(o); o = 0; - return NULL; -} - -static PyMethodDef __pyx_methods_6gevent_5libev_8corecext_idle[] = { - {0, 0, 0, 0} -}; - -DL_EXPORT(PyTypeObject) PyGeventIdle_Type = { - PyVarObject_HEAD_INIT(0, 0) - "gevent.libev.corecext.idle", /*tp_name*/ - sizeof(struct PyGeventIdleObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_5libev_8corecext_watcher, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_5libev_8corecext_7watcher_9__repr__, /*tp_repr*/ - #else - 0, /*tp_repr*/ - #endif - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - 0, /*tp_doc*/ - __pyx_tp_traverse_6gevent_5libev_8corecext_watcher, /*tp_traverse*/ - __pyx_tp_clear_6gevent_5libev_8corecext_watcher, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_5libev_8corecext_idle, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_5libev_8corecext_7watcher_1__init__, /*tp_init*/ - #else - 0, /*tp_init*/ - #endif - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_5libev_8corecext_idle, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; - -static PyObject *__pyx_tp_new_6gevent_5libev_8corecext_prepare(PyTypeObject *t, PyObject *a, PyObject *k) { - PyObject *o = __pyx_tp_new_6gevent_5libev_8corecext_watcher(t, a, k); - if (unlikely(!o)) return 0; - if (unlikely(__pyx_pw_6gevent_5libev_8corecext_7prepare_1__cinit__(o, a, k) < 0)) goto bad; - return o; - bad: - Py_DECREF(o); o = 0; - return NULL; -} - -static PyMethodDef __pyx_methods_6gevent_5libev_8corecext_prepare[] = { - {0, 0, 0, 0} -}; - -DL_EXPORT(PyTypeObject) PyGeventPrepare_Type = { - PyVarObject_HEAD_INIT(0, 0) - "gevent.libev.corecext.prepare", /*tp_name*/ - sizeof(struct PyGeventPrepareObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_5libev_8corecext_watcher, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_5libev_8corecext_7watcher_9__repr__, /*tp_repr*/ - #else - 0, /*tp_repr*/ - #endif - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - 0, /*tp_doc*/ - __pyx_tp_traverse_6gevent_5libev_8corecext_watcher, /*tp_traverse*/ - __pyx_tp_clear_6gevent_5libev_8corecext_watcher, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_5libev_8corecext_prepare, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_5libev_8corecext_7watcher_1__init__, /*tp_init*/ - #else - 0, /*tp_init*/ - #endif - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_5libev_8corecext_prepare, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; - -static PyObject *__pyx_tp_new_6gevent_5libev_8corecext_check(PyTypeObject *t, PyObject *a, PyObject *k) { - PyObject *o = __pyx_tp_new_6gevent_5libev_8corecext_watcher(t, a, k); - if (unlikely(!o)) return 0; - if (unlikely(__pyx_pw_6gevent_5libev_8corecext_5check_1__cinit__(o, a, k) < 0)) goto bad; - return o; - bad: - Py_DECREF(o); o = 0; - return NULL; -} - -static PyMethodDef __pyx_methods_6gevent_5libev_8corecext_check[] = { - {0, 0, 0, 0} -}; - -DL_EXPORT(PyTypeObject) PyGeventCheck_Type = { - PyVarObject_HEAD_INIT(0, 0) - "gevent.libev.corecext.check", /*tp_name*/ - sizeof(struct PyGeventCheckObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_5libev_8corecext_watcher, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_5libev_8corecext_7watcher_9__repr__, /*tp_repr*/ - #else - 0, /*tp_repr*/ - #endif - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - 0, /*tp_doc*/ - __pyx_tp_traverse_6gevent_5libev_8corecext_watcher, /*tp_traverse*/ - __pyx_tp_clear_6gevent_5libev_8corecext_watcher, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_5libev_8corecext_check, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_5libev_8corecext_7watcher_1__init__, /*tp_init*/ - #else - 0, /*tp_init*/ - #endif - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_5libev_8corecext_check, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; - -static PyObject *__pyx_tp_new_6gevent_5libev_8corecext_fork(PyTypeObject *t, PyObject *a, PyObject *k) { - PyObject *o = __pyx_tp_new_6gevent_5libev_8corecext_watcher(t, a, k); - if (unlikely(!o)) return 0; - if (unlikely(__pyx_pw_6gevent_5libev_8corecext_4fork_1__cinit__(o, a, k) < 0)) goto bad; - return o; - bad: - Py_DECREF(o); o = 0; - return NULL; -} - -static PyMethodDef __pyx_methods_6gevent_5libev_8corecext_fork[] = { - {0, 0, 0, 0} -}; - -DL_EXPORT(PyTypeObject) PyGeventFork_Type = { - PyVarObject_HEAD_INIT(0, 0) - "gevent.libev.corecext.fork", /*tp_name*/ - sizeof(struct PyGeventForkObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_5libev_8corecext_watcher, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_5libev_8corecext_7watcher_9__repr__, /*tp_repr*/ - #else - 0, /*tp_repr*/ - #endif - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - 0, /*tp_doc*/ - __pyx_tp_traverse_6gevent_5libev_8corecext_watcher, /*tp_traverse*/ - __pyx_tp_clear_6gevent_5libev_8corecext_watcher, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_5libev_8corecext_fork, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_5libev_8corecext_7watcher_1__init__, /*tp_init*/ - #else - 0, /*tp_init*/ - #endif - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_5libev_8corecext_fork, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; - -static PyObject *__pyx_tp_new_6gevent_5libev_8corecext_async_(PyTypeObject *t, PyObject *a, PyObject *k) { - PyObject *o = __pyx_tp_new_6gevent_5libev_8corecext_watcher(t, a, k); - if (unlikely(!o)) return 0; - if (unlikely(__pyx_pw_6gevent_5libev_8corecext_6async__1__cinit__(o, a, k) < 0)) goto bad; - return o; - bad: - Py_DECREF(o); o = 0; - return NULL; -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_6async__pending(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_6async__7pending_1__get__(o); -} - -static PyMethodDef __pyx_methods_6gevent_5libev_8corecext_async_[] = { - {"send", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_6async__3send, METH_NOARGS, 0}, - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_6gevent_5libev_8corecext_async_[] = { - {(char *)"pending", __pyx_getprop_6gevent_5libev_8corecext_6async__pending, 0, (char *)0, 0}, - {0, 0, 0, 0, 0} -}; - -DL_EXPORT(PyTypeObject) PyGeventAsync_Type = { - PyVarObject_HEAD_INIT(0, 0) - "gevent.libev.corecext.async_", /*tp_name*/ - sizeof(struct PyGeventAsyncObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_5libev_8corecext_watcher, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_5libev_8corecext_7watcher_9__repr__, /*tp_repr*/ - #else - 0, /*tp_repr*/ - #endif - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - 0, /*tp_doc*/ - __pyx_tp_traverse_6gevent_5libev_8corecext_watcher, /*tp_traverse*/ - __pyx_tp_clear_6gevent_5libev_8corecext_watcher, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_5libev_8corecext_async_, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_6gevent_5libev_8corecext_async_, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_5libev_8corecext_7watcher_1__init__, /*tp_init*/ - #else - 0, /*tp_init*/ - #endif - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_5libev_8corecext_async_, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; - -static PyObject *__pyx_tp_new_6gevent_5libev_8corecext_child(PyTypeObject *t, PyObject *a, PyObject *k) { - PyObject *o = __pyx_tp_new_6gevent_5libev_8corecext_watcher(t, a, k); - if (unlikely(!o)) return 0; - if (unlikely(__pyx_pw_6gevent_5libev_8corecext_5child_1__cinit__(o, a, k) < 0)) goto bad; - return o; - bad: - Py_DECREF(o); o = 0; - return NULL; -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_5child_pid(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_5child_3pid_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_5child_rpid(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_5child_4rpid_1__get__(o); -} - -static int __pyx_setprop_6gevent_5libev_8corecext_5child_rpid(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { - if (v) { - return __pyx_pw_6gevent_5libev_8corecext_5child_4rpid_3__set__(o, v); - } - else { - PyErr_SetString(PyExc_NotImplementedError, "__del__"); - return -1; - } -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_5child_rstatus(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_5child_7rstatus_1__get__(o); -} - -static int __pyx_setprop_6gevent_5libev_8corecext_5child_rstatus(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { - if (v) { - return __pyx_pw_6gevent_5libev_8corecext_5child_7rstatus_3__set__(o, v); - } - else { - PyErr_SetString(PyExc_NotImplementedError, "__del__"); - return -1; - } -} - -static PyMethodDef __pyx_methods_6gevent_5libev_8corecext_child[] = { - {"_format", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_5child_5_format, METH_NOARGS, 0}, - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_6gevent_5libev_8corecext_child[] = { - {(char *)"pid", __pyx_getprop_6gevent_5libev_8corecext_5child_pid, 0, (char *)0, 0}, - {(char *)"rpid", __pyx_getprop_6gevent_5libev_8corecext_5child_rpid, __pyx_setprop_6gevent_5libev_8corecext_5child_rpid, (char *)0, 0}, - {(char *)"rstatus", __pyx_getprop_6gevent_5libev_8corecext_5child_rstatus, __pyx_setprop_6gevent_5libev_8corecext_5child_rstatus, (char *)0, 0}, - {0, 0, 0, 0, 0} -}; - -DL_EXPORT(PyTypeObject) PyGeventChild_Type = { - PyVarObject_HEAD_INIT(0, 0) - "gevent.libev.corecext.child", /*tp_name*/ - sizeof(struct PyGeventChildObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_5libev_8corecext_watcher, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_5libev_8corecext_7watcher_9__repr__, /*tp_repr*/ - #else - 0, /*tp_repr*/ - #endif - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - 0, /*tp_doc*/ - __pyx_tp_traverse_6gevent_5libev_8corecext_watcher, /*tp_traverse*/ - __pyx_tp_clear_6gevent_5libev_8corecext_watcher, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_5libev_8corecext_child, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_6gevent_5libev_8corecext_child, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_5libev_8corecext_5child_3__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_5libev_8corecext_child, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; - -static PyObject *__pyx_tp_new_6gevent_5libev_8corecext_stat(PyTypeObject *t, PyObject *a, PyObject *k) { - struct PyGeventStatObject *p; - PyObject *o = __pyx_tp_new_6gevent_5libev_8corecext_watcher(t, a, k); - if (unlikely(!o)) return 0; - p = ((struct PyGeventStatObject *)o); - p->path = ((PyObject*)Py_None); Py_INCREF(Py_None); - p->_paths = ((PyObject*)Py_None); Py_INCREF(Py_None); - if (unlikely(__pyx_pw_6gevent_5libev_8corecext_4stat_1__cinit__(o, a, k) < 0)) goto bad; - return o; - bad: - Py_DECREF(o); o = 0; - return NULL; -} - -static void __pyx_tp_dealloc_6gevent_5libev_8corecext_stat(PyObject *o) { - struct PyGeventStatObject *p = (struct PyGeventStatObject *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - #endif - PyObject_GC_UnTrack(o); - Py_CLEAR(p->path); - Py_CLEAR(p->_paths); - PyObject_GC_Track(o); - __pyx_tp_dealloc_6gevent_5libev_8corecext_watcher(o); -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_4stat_attr(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_4stat_4attr_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_4stat_prev(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_4stat_4prev_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_4stat_interval(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_4stat_8interval_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_4stat_path(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_4stat_4path_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_5libev_8corecext_4stat__paths(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_5libev_8corecext_4stat_6_paths_1__get__(o); -} - -static PyMethodDef __pyx_methods_6gevent_5libev_8corecext_stat[] = { - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_6gevent_5libev_8corecext_stat[] = { - {(char *)"attr", __pyx_getprop_6gevent_5libev_8corecext_4stat_attr, 0, (char *)0, 0}, - {(char *)"prev", __pyx_getprop_6gevent_5libev_8corecext_4stat_prev, 0, (char *)0, 0}, - {(char *)"interval", __pyx_getprop_6gevent_5libev_8corecext_4stat_interval, 0, (char *)0, 0}, - {(char *)"path", __pyx_getprop_6gevent_5libev_8corecext_4stat_path, 0, (char *)0, 0}, - {(char *)"_paths", __pyx_getprop_6gevent_5libev_8corecext_4stat__paths, 0, (char *)0, 0}, - {0, 0, 0, 0, 0} -}; - -DL_EXPORT(PyTypeObject) PyGeventStat_Type = { - PyVarObject_HEAD_INIT(0, 0) - "gevent.libev.corecext.stat", /*tp_name*/ - sizeof(struct PyGeventStatObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_5libev_8corecext_stat, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_5libev_8corecext_7watcher_9__repr__, /*tp_repr*/ - #else - 0, /*tp_repr*/ - #endif - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - 0, /*tp_doc*/ - __pyx_tp_traverse_6gevent_5libev_8corecext_watcher, /*tp_traverse*/ - __pyx_tp_clear_6gevent_5libev_8corecext_watcher, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_5libev_8corecext_stat, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_6gevent_5libev_8corecext_stat, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_5libev_8corecext_4stat_3__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_5libev_8corecext_stat, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; - -static struct __pyx_obj_6gevent_5libev_8corecext___pyx_scope_struct__genexpr *__pyx_freelist_6gevent_5libev_8corecext___pyx_scope_struct__genexpr[8]; -static int __pyx_freecount_6gevent_5libev_8corecext___pyx_scope_struct__genexpr = 0; - -static PyObject *__pyx_tp_new_6gevent_5libev_8corecext___pyx_scope_struct__genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - PyObject *o; - if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_6gevent_5libev_8corecext___pyx_scope_struct__genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_6gevent_5libev_8corecext___pyx_scope_struct__genexpr)))) { - o = (PyObject*)__pyx_freelist_6gevent_5libev_8corecext___pyx_scope_struct__genexpr[--__pyx_freecount_6gevent_5libev_8corecext___pyx_scope_struct__genexpr]; - memset(o, 0, sizeof(struct __pyx_obj_6gevent_5libev_8corecext___pyx_scope_struct__genexpr)); - (void) PyObject_INIT(o, t); - PyObject_GC_Track(o); - } else { - o = (*t->tp_alloc)(t, 0); - if (unlikely(!o)) return 0; - } - return o; -} - -static void __pyx_tp_dealloc_6gevent_5libev_8corecext___pyx_scope_struct__genexpr(PyObject *o) { - struct __pyx_obj_6gevent_5libev_8corecext___pyx_scope_struct__genexpr *p = (struct __pyx_obj_6gevent_5libev_8corecext___pyx_scope_struct__genexpr *)o; - PyObject_GC_UnTrack(o); - Py_CLEAR(p->__pyx_v_flag); - Py_CLEAR(p->__pyx_v_string); - if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_6gevent_5libev_8corecext___pyx_scope_struct__genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_6gevent_5libev_8corecext___pyx_scope_struct__genexpr)))) { - __pyx_freelist_6gevent_5libev_8corecext___pyx_scope_struct__genexpr[__pyx_freecount_6gevent_5libev_8corecext___pyx_scope_struct__genexpr++] = ((struct __pyx_obj_6gevent_5libev_8corecext___pyx_scope_struct__genexpr *)o); - } else { - (*Py_TYPE(o)->tp_free)(o); - } -} - -static int __pyx_tp_traverse_6gevent_5libev_8corecext___pyx_scope_struct__genexpr(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_6gevent_5libev_8corecext___pyx_scope_struct__genexpr *p = (struct __pyx_obj_6gevent_5libev_8corecext___pyx_scope_struct__genexpr *)o; - if (p->__pyx_v_flag) { - e = (*v)(p->__pyx_v_flag, a); if (e) return e; - } - if (p->__pyx_v_string) { - e = (*v)(p->__pyx_v_string, a); if (e) return e; - } - return 0; -} - -static PyTypeObject __pyx_type_6gevent_5libev_8corecext___pyx_scope_struct__genexpr = { - PyVarObject_HEAD_INIT(0, 0) - "gevent.libev.corecext.__pyx_scope_struct__genexpr", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_5libev_8corecext___pyx_scope_struct__genexpr), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_5libev_8corecext___pyx_scope_struct__genexpr, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - 0, /*tp_doc*/ - __pyx_tp_traverse_6gevent_5libev_8corecext___pyx_scope_struct__genexpr, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - 0, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - 0, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_5libev_8corecext___pyx_scope_struct__genexpr, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; - -static PyMethodDef __pyx_methods[] = { - {"_flags_to_list", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_5_flags_to_list, METH_O, 0}, - {"_flags_to_int", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_7_flags_to_int, METH_O, 0}, - {"_check_flags", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_9_check_flags, METH_O, 0}, - {"_events_to_str", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_11_events_to_str, METH_O, 0}, - {"set_syserr_cb", (PyCFunction)__pyx_pw_6gevent_5libev_8corecext_21set_syserr_cb, METH_O, 0}, - {0, 0, 0, 0} -}; - -#if PY_MAJOR_VERSION >= 3 -#if CYTHON_PEP489_MULTI_PHASE_INIT -static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ -static int __pyx_pymod_exec_corecext(PyObject* module); /*proto*/ -static PyModuleDef_Slot __pyx_moduledef_slots[] = { - {Py_mod_create, (void*)__pyx_pymod_create}, - {Py_mod_exec, (void*)__pyx_pymod_exec_corecext}, - {0, NULL} -}; -#endif - -static struct PyModuleDef __pyx_moduledef = { - PyModuleDef_HEAD_INIT, - "corecext", - 0, /* m_doc */ - #if CYTHON_PEP489_MULTI_PHASE_INIT - 0, /* m_size */ - #else - -1, /* m_size */ - #endif - __pyx_methods /* m_methods */, - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_moduledef_slots, /* m_slots */ - #else - NULL, /* m_reload */ - #endif - NULL, /* m_traverse */ - NULL, /* m_clear */ - NULL /* m_free */ -}; -#endif - -static __Pyx_StringTabEntry __pyx_string_tab[] = { - {&__pyx_kp_s_, __pyx_k_, sizeof(__pyx_k_), 0, 0, 1, 0}, - {&__pyx_n_s_ASYNC, __pyx_k_ASYNC, sizeof(__pyx_k_ASYNC), 0, 0, 1, 1}, - {&__pyx_n_s_AttributeError, __pyx_k_AttributeError, sizeof(__pyx_k_AttributeError), 0, 0, 1, 1}, - {&__pyx_n_s_BACKEND_EPOLL, __pyx_k_BACKEND_EPOLL, sizeof(__pyx_k_BACKEND_EPOLL), 0, 0, 1, 1}, - {&__pyx_n_s_BACKEND_KQUEUE, __pyx_k_BACKEND_KQUEUE, sizeof(__pyx_k_BACKEND_KQUEUE), 0, 0, 1, 1}, - {&__pyx_n_s_BACKEND_POLL, __pyx_k_BACKEND_POLL, sizeof(__pyx_k_BACKEND_POLL), 0, 0, 1, 1}, - {&__pyx_n_s_BACKEND_PORT, __pyx_k_BACKEND_PORT, sizeof(__pyx_k_BACKEND_PORT), 0, 0, 1, 1}, - {&__pyx_n_s_BACKEND_SELECT, __pyx_k_BACKEND_SELECT, sizeof(__pyx_k_BACKEND_SELECT), 0, 0, 1, 1}, - {&__pyx_n_s_CHECK, __pyx_k_CHECK, sizeof(__pyx_k_CHECK), 0, 0, 1, 1}, - {&__pyx_n_s_CHILD, __pyx_k_CHILD, sizeof(__pyx_k_CHILD), 0, 0, 1, 1}, - {&__pyx_n_s_CLEANUP, __pyx_k_CLEANUP, sizeof(__pyx_k_CLEANUP), 0, 0, 1, 1}, - {&__pyx_n_s_CUSTOM, __pyx_k_CUSTOM, sizeof(__pyx_k_CUSTOM), 0, 0, 1, 1}, - {&__pyx_kp_s_Cannot_construct_a_bare_watcher, __pyx_k_Cannot_construct_a_bare_watcher, sizeof(__pyx_k_Cannot_construct_a_bare_watcher), 0, 0, 1, 0}, - {&__pyx_kp_s_Cannot_set_priority_of_an_active, __pyx_k_Cannot_set_priority_of_an_active, sizeof(__pyx_k_Cannot_set_priority_of_an_active), 0, 0, 1, 0}, - {&__pyx_kp_s_Child_watchers_are_not_supported, __pyx_k_Child_watchers_are_not_supported, sizeof(__pyx_k_Child_watchers_are_not_supported), 0, 0, 1, 0}, - {&__pyx_n_s_EMBED, __pyx_k_EMBED, sizeof(__pyx_k_EMBED), 0, 0, 1, 1}, - {&__pyx_n_s_ERROR, __pyx_k_ERROR, sizeof(__pyx_k_ERROR), 0, 0, 1, 1}, - {&__pyx_n_s_EVENTS, __pyx_k_EVENTS, sizeof(__pyx_k_EVENTS), 0, 0, 1, 1}, - {&__pyx_n_s_EV_USE_4HEAP, __pyx_k_EV_USE_4HEAP, sizeof(__pyx_k_EV_USE_4HEAP), 0, 0, 1, 1}, - {&__pyx_n_s_EV_USE_CLOCK_SYSCALL, __pyx_k_EV_USE_CLOCK_SYSCALL, sizeof(__pyx_k_EV_USE_CLOCK_SYSCALL), 0, 0, 1, 1}, - {&__pyx_n_s_EV_USE_EVENTFD, __pyx_k_EV_USE_EVENTFD, sizeof(__pyx_k_EV_USE_EVENTFD), 0, 0, 1, 1}, - {&__pyx_n_s_EV_USE_FLOOR, __pyx_k_EV_USE_FLOOR, sizeof(__pyx_k_EV_USE_FLOOR), 0, 0, 1, 1}, - {&__pyx_n_s_EV_USE_INOTIFY, __pyx_k_EV_USE_INOTIFY, sizeof(__pyx_k_EV_USE_INOTIFY), 0, 0, 1, 1}, - {&__pyx_n_s_EV_USE_MONOTONIC, __pyx_k_EV_USE_MONOTONIC, sizeof(__pyx_k_EV_USE_MONOTONIC), 0, 0, 1, 1}, - {&__pyx_n_s_EV_USE_NANOSLEEP, __pyx_k_EV_USE_NANOSLEEP, sizeof(__pyx_k_EV_USE_NANOSLEEP), 0, 0, 1, 1}, - {&__pyx_n_s_EV_USE_REALTIME, __pyx_k_EV_USE_REALTIME, sizeof(__pyx_k_EV_USE_REALTIME), 0, 0, 1, 1}, - {&__pyx_n_s_EV_USE_SIGNALFD, __pyx_k_EV_USE_SIGNALFD, sizeof(__pyx_k_EV_USE_SIGNALFD), 0, 0, 1, 1}, - {&__pyx_kp_s_Expected_callable_not_r, __pyx_k_Expected_callable_not_r, sizeof(__pyx_k_Expected_callable_not_r), 0, 0, 1, 0}, - {&__pyx_kp_s_Expected_callable_or_None_got_r, __pyx_k_Expected_callable_or_None_got_r, sizeof(__pyx_k_Expected_callable_or_None_got_r), 0, 0, 1, 0}, - {&__pyx_n_s_FORK, __pyx_k_FORK, sizeof(__pyx_k_FORK), 0, 0, 1, 1}, - {&__pyx_n_s_FORKCHECK, __pyx_k_FORKCHECK, sizeof(__pyx_k_FORKCHECK), 0, 0, 1, 1}, - {&__pyx_n_s_IDLE, __pyx_k_IDLE, sizeof(__pyx_k_IDLE), 0, 0, 1, 1}, - {&__pyx_n_s_IOFDSET, __pyx_k_IOFDSET, sizeof(__pyx_k_IOFDSET), 0, 0, 1, 1}, - {&__pyx_kp_s_Invalid_backend_or_flag_s_Possib, __pyx_k_Invalid_backend_or_flag_s_Possib, sizeof(__pyx_k_Invalid_backend_or_flag_s_Possib), 0, 0, 1, 0}, - {&__pyx_kp_s_Invalid_value_for_backend_0x_x, __pyx_k_Invalid_value_for_backend_0x_x, sizeof(__pyx_k_Invalid_value_for_backend_0x_x), 0, 0, 1, 0}, - {&__pyx_n_s_KeyError, __pyx_k_KeyError, sizeof(__pyx_k_KeyError), 0, 0, 1, 1}, - {&__pyx_n_s_LIBEV_EMBED, __pyx_k_LIBEV_EMBED, sizeof(__pyx_k_LIBEV_EMBED), 0, 0, 1, 1}, - {&__pyx_n_s_MAXPRI, __pyx_k_MAXPRI, sizeof(__pyx_k_MAXPRI), 0, 0, 1, 1}, - {&__pyx_n_s_MINPRI, __pyx_k_MINPRI, sizeof(__pyx_k_MINPRI), 0, 0, 1, 1}, - {&__pyx_n_s_NOINOTIFY, __pyx_k_NOINOTIFY, sizeof(__pyx_k_NOINOTIFY), 0, 0, 1, 1}, - {&__pyx_n_s_NONE, __pyx_k_NONE, sizeof(__pyx_k_NONE), 0, 0, 1, 1}, - {&__pyx_n_s_NOSIGMASK, __pyx_k_NOSIGMASK, sizeof(__pyx_k_NOSIGMASK), 0, 0, 1, 1}, - {&__pyx_n_s_NSIG, __pyx_k_NSIG, sizeof(__pyx_k_NSIG), 0, 0, 1, 1}, - {&__pyx_n_s_PERIODIC, __pyx_k_PERIODIC, sizeof(__pyx_k_PERIODIC), 0, 0, 1, 1}, - {&__pyx_n_s_PREPARE, __pyx_k_PREPARE, sizeof(__pyx_k_PREPARE), 0, 0, 1, 1}, - {&__pyx_n_s_READ, __pyx_k_READ, sizeof(__pyx_k_READ), 0, 0, 1, 1}, - {&__pyx_n_s_READWRITE, __pyx_k_READWRITE, sizeof(__pyx_k_READWRITE), 0, 0, 1, 1}, - {&__pyx_n_s_SIGNAL, __pyx_k_SIGNAL, sizeof(__pyx_k_SIGNAL), 0, 0, 1, 1}, - {&__pyx_n_s_SIGNALFD, __pyx_k_SIGNALFD, sizeof(__pyx_k_SIGNALFD), 0, 0, 1, 1}, - {&__pyx_n_s_STAT, __pyx_k_STAT, sizeof(__pyx_k_STAT), 0, 0, 1, 1}, - {&__pyx_n_s_SYSERR_CALLBACK, __pyx_k_SYSERR_CALLBACK, sizeof(__pyx_k_SYSERR_CALLBACK), 0, 0, 1, 1}, - {&__pyx_n_s_SystemError, __pyx_k_SystemError, sizeof(__pyx_k_SystemError), 0, 0, 1, 1}, - {&__pyx_n_s_TIMER, __pyx_k_TIMER, sizeof(__pyx_k_TIMER), 0, 0, 1, 1}, - {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1}, - {&__pyx_n_s_UNDEF, __pyx_k_UNDEF, sizeof(__pyx_k_UNDEF), 0, 0, 1, 1}, - {&__pyx_kp_s_Unsupported_backend_s, __pyx_k_Unsupported_backend_s, sizeof(__pyx_k_Unsupported_backend_s), 0, 0, 1, 0}, - {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1}, - {&__pyx_n_s_WRITE, __pyx_k_WRITE, sizeof(__pyx_k_WRITE), 0, 0, 1, 1}, - {&__pyx_kp_s__3, __pyx_k__3, sizeof(__pyx_k__3), 0, 0, 1, 0}, - {&__pyx_kp_s__4, __pyx_k__4, sizeof(__pyx_k__4), 0, 0, 1, 0}, - {&__pyx_kp_s__6, __pyx_k__6, sizeof(__pyx_k__6), 0, 0, 1, 0}, - {&__pyx_kp_s__7, __pyx_k__7, sizeof(__pyx_k__7), 0, 0, 1, 0}, - {&__pyx_kp_s__8, __pyx_k__8, sizeof(__pyx_k__8), 0, 0, 1, 0}, - {&__pyx_kp_s__9, __pyx_k__9, sizeof(__pyx_k__9), 0, 0, 1, 0}, - {&__pyx_n_s_active, __pyx_k_active, sizeof(__pyx_k_active), 0, 0, 1, 1}, - {&__pyx_kp_s_active_2, __pyx_k_active_2, sizeof(__pyx_k_active_2), 0, 0, 1, 0}, - {&__pyx_n_s_activecnt, __pyx_k_activecnt, sizeof(__pyx_k_activecnt), 0, 0, 1, 1}, - {&__pyx_n_s_after, __pyx_k_after, sizeof(__pyx_k_after), 0, 0, 1, 1}, - {&__pyx_n_s_all, __pyx_k_all, sizeof(__pyx_k_all), 0, 0, 1, 1}, - {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1}, - {&__pyx_kp_s_args_r, __pyx_k_args_r, sizeof(__pyx_k_args_r), 0, 0, 1, 0}, - {&__pyx_n_s_async, __pyx_k_async, sizeof(__pyx_k_async), 0, 0, 1, 1}, - {&__pyx_n_s_async_2, __pyx_k_async_2, sizeof(__pyx_k_async_2), 0, 0, 1, 1}, - {&__pyx_n_s_backend, __pyx_k_backend, sizeof(__pyx_k_backend), 0, 0, 1, 1}, - {&__pyx_n_s_basestring, __pyx_k_basestring, sizeof(__pyx_k_basestring), 0, 0, 1, 1}, - {&__pyx_n_s_builtins, __pyx_k_builtins, sizeof(__pyx_k_builtins), 0, 0, 1, 1}, - {&__pyx_n_s_callback, __pyx_k_callback, sizeof(__pyx_k_callback), 0, 0, 1, 1}, - {&__pyx_kp_s_callback_r, __pyx_k_callback_r, sizeof(__pyx_k_callback_r), 0, 0, 1, 0}, - {&__pyx_kp_s_callbacks_r_len_d_head_r_tail_r, __pyx_k_callbacks_r_len_d_head_r_tail_r, sizeof(__pyx_k_callbacks_r_len_d_head_r_tail_r), 0, 0, 1, 0}, - {&__pyx_kp_s_child_watchers_are_only_availabl, __pyx_k_child_watchers_are_only_availabl, sizeof(__pyx_k_child_watchers_are_only_availabl), 0, 0, 1, 0}, - {&__pyx_n_s_class, __pyx_k_class, sizeof(__pyx_k_class), 0, 0, 1, 1}, - {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, - {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1}, - {&__pyx_n_s_context, __pyx_k_context, sizeof(__pyx_k_context), 0, 0, 1, 1}, - {&__pyx_n_s_decode, __pyx_k_decode, sizeof(__pyx_k_decode), 0, 0, 1, 1}, - {&__pyx_n_s_default, __pyx_k_default, sizeof(__pyx_k_default), 0, 0, 1, 1}, - {&__pyx_kp_s_default_2, __pyx_k_default_2, sizeof(__pyx_k_default_2), 0, 0, 1, 0}, - {&__pyx_n_s_default_handle_error, __pyx_k_default_handle_error, sizeof(__pyx_k_default_handle_error), 0, 0, 1, 1}, - {&__pyx_n_s_destroyed, __pyx_k_destroyed, sizeof(__pyx_k_destroyed), 0, 0, 1, 1}, - {&__pyx_n_s_embeddable_backends, __pyx_k_embeddable_backends, sizeof(__pyx_k_embeddable_backends), 0, 0, 1, 1}, - {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1}, - {&__pyx_n_s_epoll, __pyx_k_epoll, sizeof(__pyx_k_epoll), 0, 0, 1, 1}, - {&__pyx_n_s_errno, __pyx_k_errno, sizeof(__pyx_k_errno), 0, 0, 1, 1}, - {&__pyx_kp_s_ev_default_loop_s_failed, __pyx_k_ev_default_loop_s_failed, sizeof(__pyx_k_ev_default_loop_s_failed), 0, 0, 1, 0}, - {&__pyx_kp_s_ev_loop_new_s_failed, __pyx_k_ev_loop_new_s_failed, sizeof(__pyx_k_ev_loop_new_s_failed), 0, 0, 1, 0}, - {&__pyx_n_s_events, __pyx_k_events, sizeof(__pyx_k_events), 0, 0, 1, 1}, - {&__pyx_n_s_events_2, __pyx_k_events_2, sizeof(__pyx_k_events_2), 0, 0, 1, 1}, - {&__pyx_n_s_events_str, __pyx_k_events_str, sizeof(__pyx_k_events_str), 0, 0, 1, 1}, - {&__pyx_n_s_fd, __pyx_k_fd, sizeof(__pyx_k_fd), 0, 0, 1, 1}, - {&__pyx_kp_s_fd_must_be_non_negative_r, __pyx_k_fd_must_be_non_negative_r, sizeof(__pyx_k_fd_must_be_non_negative_r), 0, 0, 1, 0}, - {&__pyx_kp_s_fd_s_events_s, __pyx_k_fd_s_events_s, sizeof(__pyx_k_fd_s_events_s), 0, 0, 1, 0}, - {&__pyx_n_s_fileno, __pyx_k_fileno, sizeof(__pyx_k_fileno), 0, 0, 1, 1}, - {&__pyx_kp_s_fileno_2, __pyx_k_fileno_2, sizeof(__pyx_k_fileno_2), 0, 0, 1, 0}, - {&__pyx_n_s_flags, __pyx_k_flags, sizeof(__pyx_k_flags), 0, 0, 1, 1}, - {&__pyx_n_s_flags_2, __pyx_k_flags_2, sizeof(__pyx_k_flags_2), 0, 0, 1, 1}, - {&__pyx_n_s_flags_str2int, __pyx_k_flags_str2int, sizeof(__pyx_k_flags_str2int), 0, 0, 1, 1}, - {&__pyx_n_s_forkcheck, __pyx_k_forkcheck, sizeof(__pyx_k_forkcheck), 0, 0, 1, 1}, - {&__pyx_n_s_format, __pyx_k_format, sizeof(__pyx_k_format), 0, 0, 1, 1}, - {&__pyx_n_s_format_details, __pyx_k_format_details, sizeof(__pyx_k_format_details), 0, 0, 1, 1}, - {&__pyx_n_s_func, __pyx_k_func, sizeof(__pyx_k_func), 0, 0, 1, 1}, - {&__pyx_n_s_genexpr, __pyx_k_genexpr, sizeof(__pyx_k_genexpr), 0, 0, 1, 1}, - {&__pyx_n_s_get_header_version, __pyx_k_get_header_version, sizeof(__pyx_k_get_header_version), 0, 0, 1, 1}, - {&__pyx_n_s_get_version, __pyx_k_get_version, sizeof(__pyx_k_get_version), 0, 0, 1, 1}, - {&__pyx_n_s_getfilesystemencoding, __pyx_k_getfilesystemencoding, sizeof(__pyx_k_getfilesystemencoding), 0, 0, 1, 1}, - {&__pyx_n_s_getswitchinterval, __pyx_k_getswitchinterval, sizeof(__pyx_k_getswitchinterval), 0, 0, 1, 1}, - {&__pyx_n_s_gevent, __pyx_k_gevent, sizeof(__pyx_k_gevent), 0, 0, 1, 1}, - {&__pyx_kp_s_gevent_core_EVENTS, __pyx_k_gevent_core_EVENTS, sizeof(__pyx_k_gevent_core_EVENTS), 0, 0, 1, 0}, - {&__pyx_n_s_gevent_libev_corecext, __pyx_k_gevent_libev_corecext, sizeof(__pyx_k_gevent_libev_corecext), 0, 0, 1, 1}, - {&__pyx_n_s_handle_error, __pyx_k_handle_error, sizeof(__pyx_k_handle_error), 0, 0, 1, 1}, - {&__pyx_n_s_handle_syserr, __pyx_k_handle_syserr, sizeof(__pyx_k_handle_syserr), 0, 0, 1, 1}, - {&__pyx_n_s_hex, __pyx_k_hex, sizeof(__pyx_k_hex), 0, 0, 1, 1}, - {&__pyx_n_s_how, __pyx_k_how, sizeof(__pyx_k_how), 0, 0, 1, 1}, - {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1}, - {&__pyx_kp_s_illegal_event_mask_r, __pyx_k_illegal_event_mask_r, sizeof(__pyx_k_illegal_event_mask_r), 0, 0, 1, 0}, - {&__pyx_kp_s_illegal_signal_number_r, __pyx_k_illegal_signal_number_r, sizeof(__pyx_k_illegal_signal_number_r), 0, 0, 1, 0}, - {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, - {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1}, - {&__pyx_n_s_interval, __pyx_k_interval, sizeof(__pyx_k_interval), 0, 0, 1, 1}, - {&__pyx_kp_s_io_watcher_attribute_events_is, __pyx_k_io_watcher_attribute_events_is, sizeof(__pyx_k_io_watcher_attribute_events_is), 0, 0, 1, 0}, - {&__pyx_kp_s_io_watcher_attribute_fd_is_read, __pyx_k_io_watcher_attribute_fd_is_read, sizeof(__pyx_k_io_watcher_attribute_fd_is_read), 0, 0, 1, 0}, - {&__pyx_n_s_join, __pyx_k_join, sizeof(__pyx_k_join), 0, 0, 1, 1}, - {&__pyx_n_s_keys, __pyx_k_keys, sizeof(__pyx_k_keys), 0, 0, 1, 1}, - {&__pyx_n_s_kqueue, __pyx_k_kqueue, sizeof(__pyx_k_kqueue), 0, 0, 1, 1}, - {&__pyx_n_s_level, __pyx_k_level, sizeof(__pyx_k_level), 0, 0, 1, 1}, - {&__pyx_kp_s_libev_d_02d, __pyx_k_libev_d_02d, sizeof(__pyx_k_libev_d_02d), 0, 0, 1, 0}, - {&__pyx_n_s_loop, __pyx_k_loop, sizeof(__pyx_k_loop), 0, 0, 1, 1}, - {&__pyx_n_s_lower, __pyx_k_lower, sizeof(__pyx_k_lower), 0, 0, 1, 1}, - {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, - {&__pyx_n_s_message, __pyx_k_message, sizeof(__pyx_k_message), 0, 0, 1, 1}, - {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, - {&__pyx_n_s_noenv, __pyx_k_noenv, sizeof(__pyx_k_noenv), 0, 0, 1, 1}, - {&__pyx_n_s_noinotify, __pyx_k_noinotify, sizeof(__pyx_k_noinotify), 0, 0, 1, 1}, - {&__pyx_n_s_nosigmask, __pyx_k_nosigmask, sizeof(__pyx_k_nosigmask), 0, 0, 1, 1}, - {&__pyx_n_s_now, __pyx_k_now, sizeof(__pyx_k_now), 0, 0, 1, 1}, - {&__pyx_n_s_nowait, __pyx_k_nowait, sizeof(__pyx_k_nowait), 0, 0, 1, 1}, - {&__pyx_n_s_once, __pyx_k_once, sizeof(__pyx_k_once), 0, 0, 1, 1}, - {&__pyx_kp_s_operation_on_destroyed_loop, __pyx_k_operation_on_destroyed_loop, sizeof(__pyx_k_operation_on_destroyed_loop), 0, 0, 1, 0}, - {&__pyx_n_s_origflags_int, __pyx_k_origflags_int, sizeof(__pyx_k_origflags_int), 0, 0, 1, 1}, - {&__pyx_n_s_os, __pyx_k_os, sizeof(__pyx_k_os), 0, 0, 1, 1}, - {&__pyx_n_s_pass_events, __pyx_k_pass_events, sizeof(__pyx_k_pass_events), 0, 0, 1, 1}, - {&__pyx_n_s_path, __pyx_k_path, sizeof(__pyx_k_path), 0, 0, 1, 1}, - {&__pyx_n_s_pending, __pyx_k_pending, sizeof(__pyx_k_pending), 0, 0, 1, 1}, - {&__pyx_kp_s_pending_2, __pyx_k_pending_2, sizeof(__pyx_k_pending_2), 0, 0, 1, 0}, - {&__pyx_kp_s_pending_s, __pyx_k_pending_s, sizeof(__pyx_k_pending_s), 0, 0, 1, 0}, - {&__pyx_n_s_pendingcnt, __pyx_k_pendingcnt, sizeof(__pyx_k_pendingcnt), 0, 0, 1, 1}, - {&__pyx_n_s_pid, __pyx_k_pid, sizeof(__pyx_k_pid), 0, 0, 1, 1}, - {&__pyx_kp_s_pid_r_rstatus_r, __pyx_k_pid_r_rstatus_r, sizeof(__pyx_k_pid_r_rstatus_r), 0, 0, 1, 0}, - {&__pyx_n_s_platform, __pyx_k_platform, sizeof(__pyx_k_platform), 0, 0, 1, 1}, - {&__pyx_n_s_poll, __pyx_k_poll, sizeof(__pyx_k_poll), 0, 0, 1, 1}, - {&__pyx_n_s_port, __pyx_k_port, sizeof(__pyx_k_port), 0, 0, 1, 1}, - {&__pyx_n_s_print_exc, __pyx_k_print_exc, sizeof(__pyx_k_print_exc), 0, 0, 1, 1}, - {&__pyx_n_s_print_exception, __pyx_k_print_exception, sizeof(__pyx_k_print_exception), 0, 0, 1, 1}, - {&__pyx_n_s_priority, __pyx_k_priority, sizeof(__pyx_k_priority), 0, 0, 1, 1}, - {&__pyx_n_s_ptr, __pyx_k_ptr, sizeof(__pyx_k_ptr), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1}, - {&__pyx_n_s_recommended_backends, __pyx_k_recommended_backends, sizeof(__pyx_k_recommended_backends), 0, 0, 1, 1}, - {&__pyx_n_s_ref, __pyx_k_ref, sizeof(__pyx_k_ref), 0, 0, 1, 1}, - {&__pyx_kp_s_ref_2, __pyx_k_ref_2, sizeof(__pyx_k_ref_2), 0, 0, 1, 0}, - {&__pyx_n_s_repeat, __pyx_k_repeat, sizeof(__pyx_k_repeat), 0, 0, 1, 1}, - {&__pyx_kp_s_repeat_must_be_positive_or_zero, __pyx_k_repeat_must_be_positive_or_zero, sizeof(__pyx_k_repeat_must_be_positive_or_zero), 0, 0, 1, 0}, - {&__pyx_n_s_revents, __pyx_k_revents, sizeof(__pyx_k_revents), 0, 0, 1, 1}, - {&__pyx_n_s_rstatus, __pyx_k_rstatus, sizeof(__pyx_k_rstatus), 0, 0, 1, 1}, - {&__pyx_kp_s_s_at_0x_x_s, __pyx_k_s_at_0x_x_s, sizeof(__pyx_k_s_at_0x_x_s), 0, 0, 1, 0}, - {&__pyx_kp_s_s_at_0x_x_s_2, __pyx_k_s_at_0x_x_s_2, sizeof(__pyx_k_s_at_0x_x_s_2), 0, 0, 1, 0}, - {&__pyx_n_s_select, __pyx_k_select, sizeof(__pyx_k_select), 0, 0, 1, 1}, - {&__pyx_n_s_send, __pyx_k_send, sizeof(__pyx_k_send), 0, 0, 1, 1}, - {&__pyx_n_s_sigfd, __pyx_k_sigfd, sizeof(__pyx_k_sigfd), 0, 0, 1, 1}, - {&__pyx_n_s_signal, __pyx_k_signal, sizeof(__pyx_k_signal), 0, 0, 1, 1}, - {&__pyx_n_s_signalfd, __pyx_k_signalfd, sizeof(__pyx_k_signalfd), 0, 0, 1, 1}, - {&__pyx_n_s_signalmodule, __pyx_k_signalmodule, sizeof(__pyx_k_signalmodule), 0, 0, 1, 1}, - {&__pyx_n_s_signalnum, __pyx_k_signalnum, sizeof(__pyx_k_signalnum), 0, 0, 1, 1}, - {&__pyx_n_s_signum, __pyx_k_signum, sizeof(__pyx_k_signum), 0, 0, 1, 1}, - {&__pyx_n_s_split, __pyx_k_split, sizeof(__pyx_k_split), 0, 0, 1, 1}, - {&__pyx_kp_s_src_gevent_libev_corecext_pyx, __pyx_k_src_gevent_libev_corecext_pyx, sizeof(__pyx_k_src_gevent_libev_corecext_pyx), 0, 0, 1, 0}, - {&__pyx_n_s_start, __pyx_k_start, sizeof(__pyx_k_start), 0, 0, 1, 1}, - {&__pyx_n_s_stop, __pyx_k_stop, sizeof(__pyx_k_stop), 0, 0, 1, 1}, - {&__pyx_kp_s_stopped, __pyx_k_stopped, sizeof(__pyx_k_stopped), 0, 0, 1, 0}, - {&__pyx_n_s_strerror, __pyx_k_strerror, sizeof(__pyx_k_strerror), 0, 0, 1, 1}, - {&__pyx_n_s_strip, __pyx_k_strip, sizeof(__pyx_k_strip), 0, 0, 1, 1}, - {&__pyx_n_s_supported_backends, __pyx_k_supported_backends, sizeof(__pyx_k_supported_backends), 0, 0, 1, 1}, - {&__pyx_n_s_sys, __pyx_k_sys, sizeof(__pyx_k_sys), 0, 0, 1, 1}, - {&__pyx_n_s_t, __pyx_k_t, sizeof(__pyx_k_t), 0, 0, 1, 1}, - {&__pyx_n_s_tb, __pyx_k_tb, sizeof(__pyx_k_tb), 0, 0, 1, 1}, - {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, - {&__pyx_n_s_throw, __pyx_k_throw, sizeof(__pyx_k_throw), 0, 0, 1, 1}, - {&__pyx_n_s_time, __pyx_k_time, sizeof(__pyx_k_time), 0, 0, 1, 1}, - {&__pyx_n_s_trace, __pyx_k_trace, sizeof(__pyx_k_trace), 0, 0, 1, 1}, - {&__pyx_n_s_traceback, __pyx_k_traceback, sizeof(__pyx_k_traceback), 0, 0, 1, 1}, - {&__pyx_n_s_type, __pyx_k_type, sizeof(__pyx_k_type), 0, 0, 1, 1}, - {&__pyx_n_s_update, __pyx_k_update, sizeof(__pyx_k_update), 0, 0, 1, 1}, - {&__pyx_n_s_update_now, __pyx_k_update_now, sizeof(__pyx_k_update_now), 0, 0, 1, 1}, - {&__pyx_n_s_v, __pyx_k_v, sizeof(__pyx_k_v), 0, 0, 1, 1}, - {&__pyx_n_s_value, __pyx_k_value, sizeof(__pyx_k_value), 0, 0, 1, 1}, - {&__pyx_n_s_version_info, __pyx_k_version_info, sizeof(__pyx_k_version_info), 0, 0, 1, 1}, - {&__pyx_n_s_win32, __pyx_k_win32, sizeof(__pyx_k_win32), 0, 0, 1, 1}, - {0, 0, 0, 0, 0, 0, 0} -}; -static int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin___import__ = __Pyx_GetBuiltinName(__pyx_n_s_import); if (!__pyx_builtin___import__) __PYX_ERR(0, 39, __pyx_L1_error) - __pyx_builtin_KeyError = __Pyx_GetBuiltinName(__pyx_n_s_KeyError); if (!__pyx_builtin_KeyError) __PYX_ERR(0, 203, __pyx_L1_error) - __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 204, __pyx_L1_error) - __pyx_builtin_hex = __Pyx_GetBuiltinName(__pyx_n_s_hex); if (!__pyx_builtin_hex) __PYX_ERR(0, 210, __pyx_L1_error) - __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_n_s_id); if (!__pyx_builtin_id) __PYX_ERR(0, 296, __pyx_L1_error) - __pyx_builtin_SystemError = __Pyx_GetBuiltinName(__pyx_n_s_SystemError); if (!__pyx_builtin_SystemError) __PYX_ERR(0, 424, __pyx_L1_error) - __pyx_builtin_AttributeError = __Pyx_GetBuiltinName(__pyx_n_s_AttributeError); if (!__pyx_builtin_AttributeError) __PYX_ERR(0, 665, __pyx_L1_error) - __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 807, __pyx_L1_error) - return 0; - __pyx_L1_error:; - return -1; -} - -static int __Pyx_InitCachedConstants(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - - __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 198, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__2); - __Pyx_GIVEREF(__pyx_tuple__2); - - __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_operation_on_destroyed_loop); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 258, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__5); - __Pyx_GIVEREF(__pyx_tuple__5); - - __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_s_Child_watchers_are_not_supported); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 665, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__11); - __Pyx_GIVEREF(__pyx_tuple__11); - - __pyx_tuple__12 = PyTuple_Pack(1, __pyx_n_s_sigfd); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 746, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__12); - __Pyx_GIVEREF(__pyx_tuple__12); - - __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_Cannot_construct_a_bare_watcher); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 862, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__13); - __Pyx_GIVEREF(__pyx_tuple__13); - - __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_Cannot_set_priority_of_an_active); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 911, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__14); - __Pyx_GIVEREF(__pyx_tuple__14); - - __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_io_watcher_attribute_fd_is_read); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 1009, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__15); - __Pyx_GIVEREF(__pyx_tuple__15); - - __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_io_watcher_attribute_events_is); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 1021, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__16); - __Pyx_GIVEREF(__pyx_tuple__16); - - __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_Child_watchers_are_not_supported); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 1176, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__17); - __Pyx_GIVEREF(__pyx_tuple__17); - - __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_child_watchers_are_only_availabl); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 1178, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__18); - __Pyx_GIVEREF(__pyx_tuple__18); - - __pyx_tuple__19 = PyTuple_Pack(1, __pyx_n_s_sys); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 39, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__19); - __Pyx_GIVEREF(__pyx_tuple__19); - - __pyx_tuple__20 = PyTuple_Pack(1, __pyx_n_s_os); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 40, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__20); - __Pyx_GIVEREF(__pyx_tuple__20); - - __pyx_tuple__21 = PyTuple_Pack(1, __pyx_n_s_traceback); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 41, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__21); - __Pyx_GIVEREF(__pyx_tuple__21); - - __pyx_tuple__22 = PyTuple_Pack(1, __pyx_n_s_signal); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 42, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__22); - __Pyx_GIVEREF(__pyx_tuple__22); - - __pyx_tuple__23 = PyTuple_Pack(1, __pyx_n_s_gevent); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 43, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__23); - __Pyx_GIVEREF(__pyx_tuple__23); - - __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_libev_corecext_pyx, __pyx_n_s_get_version, 128, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 128, __pyx_L1_error) - - __pyx_codeobj__25 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_libev_corecext_pyx, __pyx_n_s_get_header_version, 132, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__25)) __PYX_ERR(0, 132, __pyx_L1_error) - - __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_libev_corecext_pyx, __pyx_n_s_supported_backends, 241, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(0, 241, __pyx_L1_error) - - __pyx_codeobj__27 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_libev_corecext_pyx, __pyx_n_s_recommended_backends, 245, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__27)) __PYX_ERR(0, 245, __pyx_L1_error) - - __pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_libev_corecext_pyx, __pyx_n_s_embeddable_backends, 249, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) __PYX_ERR(0, 249, __pyx_L1_error) - - __pyx_codeobj__29 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_libev_corecext_pyx, __pyx_n_s_time, 253, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__29)) __PYX_ERR(0, 253, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_InitGlobals(void) { - if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) __PYX_ERR(0, 1, __pyx_L1_error) - return 0; - __pyx_L1_error:; - return -1; -} - -static int __Pyx_modinit_global_init_code(void); /*proto*/ -static int __Pyx_modinit_variable_export_code(void); /*proto*/ -static int __Pyx_modinit_function_export_code(void); /*proto*/ -static int __Pyx_modinit_type_init_code(void); /*proto*/ -static int __Pyx_modinit_type_import_code(void); /*proto*/ -static int __Pyx_modinit_variable_import_code(void); /*proto*/ -static int __Pyx_modinit_function_import_code(void); /*proto*/ - -static int __Pyx_modinit_global_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); - /*--- Global init code ---*/ - __pyx_v_6gevent_5libev_8corecext_integer_types = ((PyObject*)Py_None); Py_INCREF(Py_None); - GEVENT_CORE_EVENTS = Py_None; Py_INCREF(Py_None); - _empty_tuple = ((PyObject*)Py_None); Py_INCREF(Py_None); - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_variable_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); - /*--- Variable export code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_function_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); - /*--- Function export code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_type_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); - /*--- Type init code ---*/ - if (PyType_Ready(&__pyx_type_6gevent_5libev_8corecext__EVENTSType) < 0) __PYX_ERR(0, 118, __pyx_L1_error) - __pyx_type_6gevent_5libev_8corecext__EVENTSType.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_5libev_8corecext__EVENTSType.tp_dictoffset && __pyx_type_6gevent_5libev_8corecext__EVENTSType.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_5libev_8corecext__EVENTSType.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - __pyx_ptype_6gevent_5libev_8corecext__EVENTSType = &__pyx_type_6gevent_5libev_8corecext__EVENTSType; - if (PyType_Ready(&PyGeventCallback_Type) < 0) __PYX_ERR(0, 263, __pyx_L1_error) - PyGeventCallback_Type.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!PyGeventCallback_Type.tp_dictoffset && PyGeventCallback_Type.tp_getattro == PyObject_GenericGetAttr)) { - PyGeventCallback_Type.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - if (PyObject_SetAttrString(__pyx_m, "callback", (PyObject *)&PyGeventCallback_Type) < 0) __PYX_ERR(0, 263, __pyx_L1_error) - __pyx_ptype_6gevent_5libev_8corecext_callback = &PyGeventCallback_Type; - __pyx_vtabptr_6gevent_5libev_8corecext_CallbackFIFO = &__pyx_vtable_6gevent_5libev_8corecext_CallbackFIFO; - __pyx_vtable_6gevent_5libev_8corecext_CallbackFIFO.popleft = (struct PyGeventCallbackObject *(*)(struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *))__pyx_f_6gevent_5libev_8corecext_12CallbackFIFO_popleft; - __pyx_vtable_6gevent_5libev_8corecext_CallbackFIFO.append = (PyObject *(*)(struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *, struct PyGeventCallbackObject *))__pyx_f_6gevent_5libev_8corecext_12CallbackFIFO_append; - __pyx_vtable_6gevent_5libev_8corecext_CallbackFIFO.has_callbacks = (int (*)(struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *))__pyx_f_6gevent_5libev_8corecext_12CallbackFIFO_has_callbacks; - if (PyType_Ready(&__pyx_type_6gevent_5libev_8corecext_CallbackFIFO) < 0) __PYX_ERR(0, 316, __pyx_L1_error) - __pyx_type_6gevent_5libev_8corecext_CallbackFIFO.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_5libev_8corecext_CallbackFIFO.tp_dictoffset && __pyx_type_6gevent_5libev_8corecext_CallbackFIFO.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_5libev_8corecext_CallbackFIFO.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; - } - if (__Pyx_SetVtable(__pyx_type_6gevent_5libev_8corecext_CallbackFIFO.tp_dict, __pyx_vtabptr_6gevent_5libev_8corecext_CallbackFIFO) < 0) __PYX_ERR(0, 316, __pyx_L1_error) - __pyx_ptype_6gevent_5libev_8corecext_CallbackFIFO = &__pyx_type_6gevent_5libev_8corecext_CallbackFIFO; - __pyx_vtabptr_6gevent_5libev_8corecext_loop = &__pyx_vtable_6gevent_5libev_8corecext_loop; - __pyx_vtable_6gevent_5libev_8corecext_loop._run_callbacks = (PyObject *(*)(struct PyGeventLoopObject *))__pyx_f_6gevent_5libev_8corecext_4loop__run_callbacks; - __pyx_vtable_6gevent_5libev_8corecext_loop._stop_watchers = (PyObject *(*)(struct PyGeventLoopObject *, struct ev_loop *))__pyx_f_6gevent_5libev_8corecext_4loop__stop_watchers; - __pyx_vtable_6gevent_5libev_8corecext_loop.handle_error = (PyObject *(*)(struct PyGeventLoopObject *, PyObject *, PyObject *, PyObject *, PyObject *, int __pyx_skip_dispatch))__pyx_f_6gevent_5libev_8corecext_4loop_handle_error; - __pyx_vtable_6gevent_5libev_8corecext_loop._default_handle_error = (PyObject *(*)(struct PyGeventLoopObject *, PyObject *, PyObject *, PyObject *, PyObject *, int __pyx_skip_dispatch))__pyx_f_6gevent_5libev_8corecext_4loop__default_handle_error; - __pyx_vtable_6gevent_5libev_8corecext_loop.now = (ev_tstamp (*)(struct PyGeventLoopObject *, int __pyx_skip_dispatch))__pyx_f_6gevent_5libev_8corecext_4loop_now; - __pyx_vtable_6gevent_5libev_8corecext_loop.update_now = (void (*)(struct PyGeventLoopObject *, int __pyx_skip_dispatch))__pyx_f_6gevent_5libev_8corecext_4loop_update_now; - if (PyType_Ready(&PyGeventLoop_Type) < 0) __PYX_ERR(0, 375, __pyx_L1_error) - PyGeventLoop_Type.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!PyGeventLoop_Type.tp_dictoffset && PyGeventLoop_Type.tp_getattro == PyObject_GenericGetAttr)) { - PyGeventLoop_Type.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - if (__Pyx_SetVtable(PyGeventLoop_Type.tp_dict, __pyx_vtabptr_6gevent_5libev_8corecext_loop) < 0) __PYX_ERR(0, 375, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "loop", (PyObject *)&PyGeventLoop_Type) < 0) __PYX_ERR(0, 375, __pyx_L1_error) - __pyx_ptype_6gevent_5libev_8corecext_loop = &PyGeventLoop_Type; - if (PyType_Ready(&PyGeventWatcher_Type) < 0) __PYX_ERR(0, 815, __pyx_L1_error) - PyGeventWatcher_Type.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!PyGeventWatcher_Type.tp_dictoffset && PyGeventWatcher_Type.tp_getattro == PyObject_GenericGetAttr)) { - PyGeventWatcher_Type.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - if (PyObject_SetAttrString(__pyx_m, "watcher", (PyObject *)&PyGeventWatcher_Type) < 0) __PYX_ERR(0, 815, __pyx_L1_error) - __pyx_ptype_6gevent_5libev_8corecext_watcher = &PyGeventWatcher_Type; - PyGeventIO_Type.tp_base = __pyx_ptype_6gevent_5libev_8corecext_watcher; - if (PyType_Ready(&PyGeventIO_Type) < 0) __PYX_ERR(0, 976, __pyx_L1_error) - PyGeventIO_Type.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!PyGeventIO_Type.tp_dictoffset && PyGeventIO_Type.tp_getattro == PyObject_GenericGetAttr)) { - PyGeventIO_Type.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - if (PyObject_SetAttrString(__pyx_m, "io", (PyObject *)&PyGeventIO_Type) < 0) __PYX_ERR(0, 976, __pyx_L1_error) - __pyx_ptype_6gevent_5libev_8corecext_io = &PyGeventIO_Type; - PyGeventTimer_Type.tp_base = __pyx_ptype_6gevent_5libev_8corecext_watcher; - if (PyType_Ready(&PyGeventTimer_Type) < 0) __PYX_ERR(0, 1033, __pyx_L1_error) - PyGeventTimer_Type.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!PyGeventTimer_Type.tp_dictoffset && PyGeventTimer_Type.tp_getattro == PyObject_GenericGetAttr)) { - PyGeventTimer_Type.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - if (PyObject_SetAttrString(__pyx_m, "timer", (PyObject *)&PyGeventTimer_Type) < 0) __PYX_ERR(0, 1033, __pyx_L1_error) - __pyx_ptype_6gevent_5libev_8corecext_timer = &PyGeventTimer_Type; - PyGeventSignal_Type.tp_base = __pyx_ptype_6gevent_5libev_8corecext_watcher; - if (PyType_Ready(&PyGeventSignal_Type) < 0) __PYX_ERR(0, 1073, __pyx_L1_error) - PyGeventSignal_Type.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!PyGeventSignal_Type.tp_dictoffset && PyGeventSignal_Type.tp_getattro == PyObject_GenericGetAttr)) { - PyGeventSignal_Type.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - if (PyObject_SetAttrString(__pyx_m, "signal", (PyObject *)&PyGeventSignal_Type) < 0) __PYX_ERR(0, 1073, __pyx_L1_error) - __pyx_ptype_6gevent_5libev_8corecext_signal = &PyGeventSignal_Type; - PyGeventIdle_Type.tp_base = __pyx_ptype_6gevent_5libev_8corecext_watcher; - if (PyType_Ready(&PyGeventIdle_Type) < 0) __PYX_ERR(0, 1096, __pyx_L1_error) - PyGeventIdle_Type.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!PyGeventIdle_Type.tp_dictoffset && PyGeventIdle_Type.tp_getattro == PyObject_GenericGetAttr)) { - PyGeventIdle_Type.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - if (PyObject_SetAttrString(__pyx_m, "idle", (PyObject *)&PyGeventIdle_Type) < 0) __PYX_ERR(0, 1096, __pyx_L1_error) - __pyx_ptype_6gevent_5libev_8corecext_idle = &PyGeventIdle_Type; - PyGeventPrepare_Type.tp_base = __pyx_ptype_6gevent_5libev_8corecext_watcher; - if (PyType_Ready(&PyGeventPrepare_Type) < 0) __PYX_ERR(0, 1109, __pyx_L1_error) - PyGeventPrepare_Type.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!PyGeventPrepare_Type.tp_dictoffset && PyGeventPrepare_Type.tp_getattro == PyObject_GenericGetAttr)) { - PyGeventPrepare_Type.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - if (PyObject_SetAttrString(__pyx_m, "prepare", (PyObject *)&PyGeventPrepare_Type) < 0) __PYX_ERR(0, 1109, __pyx_L1_error) - __pyx_ptype_6gevent_5libev_8corecext_prepare = &PyGeventPrepare_Type; - PyGeventCheck_Type.tp_base = __pyx_ptype_6gevent_5libev_8corecext_watcher; - if (PyType_Ready(&PyGeventCheck_Type) < 0) __PYX_ERR(0, 1122, __pyx_L1_error) - PyGeventCheck_Type.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!PyGeventCheck_Type.tp_dictoffset && PyGeventCheck_Type.tp_getattro == PyObject_GenericGetAttr)) { - PyGeventCheck_Type.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - if (PyObject_SetAttrString(__pyx_m, "check", (PyObject *)&PyGeventCheck_Type) < 0) __PYX_ERR(0, 1122, __pyx_L1_error) - __pyx_ptype_6gevent_5libev_8corecext_check = &PyGeventCheck_Type; - PyGeventFork_Type.tp_base = __pyx_ptype_6gevent_5libev_8corecext_watcher; - if (PyType_Ready(&PyGeventFork_Type) < 0) __PYX_ERR(0, 1135, __pyx_L1_error) - PyGeventFork_Type.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!PyGeventFork_Type.tp_dictoffset && PyGeventFork_Type.tp_getattro == PyObject_GenericGetAttr)) { - PyGeventFork_Type.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - if (PyObject_SetAttrString(__pyx_m, "fork", (PyObject *)&PyGeventFork_Type) < 0) __PYX_ERR(0, 1135, __pyx_L1_error) - __pyx_ptype_6gevent_5libev_8corecext_fork = &PyGeventFork_Type; - PyGeventAsync_Type.tp_base = __pyx_ptype_6gevent_5libev_8corecext_watcher; - if (PyType_Ready(&PyGeventAsync_Type) < 0) __PYX_ERR(0, 1147, __pyx_L1_error) - PyGeventAsync_Type.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!PyGeventAsync_Type.tp_dictoffset && PyGeventAsync_Type.tp_getattro == PyObject_GenericGetAttr)) { - PyGeventAsync_Type.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - if (PyObject_SetAttrString(__pyx_m, "async_", (PyObject *)&PyGeventAsync_Type) < 0) __PYX_ERR(0, 1147, __pyx_L1_error) - __pyx_ptype_6gevent_5libev_8corecext_async_ = &PyGeventAsync_Type; - PyGeventChild_Type.tp_base = __pyx_ptype_6gevent_5libev_8corecext_watcher; - if (PyType_Ready(&PyGeventChild_Type) < 0) __PYX_ERR(0, 1170, __pyx_L1_error) - PyGeventChild_Type.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!PyGeventChild_Type.tp_dictoffset && PyGeventChild_Type.tp_getattro == PyObject_GenericGetAttr)) { - PyGeventChild_Type.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - if (PyObject_SetAttrString(__pyx_m, "child", (PyObject *)&PyGeventChild_Type) < 0) __PYX_ERR(0, 1170, __pyx_L1_error) - __pyx_ptype_6gevent_5libev_8corecext_child = &PyGeventChild_Type; - PyGeventStat_Type.tp_base = __pyx_ptype_6gevent_5libev_8corecext_watcher; - if (PyType_Ready(&PyGeventStat_Type) < 0) __PYX_ERR(0, 1213, __pyx_L1_error) - PyGeventStat_Type.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!PyGeventStat_Type.tp_dictoffset && PyGeventStat_Type.tp_getattro == PyObject_GenericGetAttr)) { - PyGeventStat_Type.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - if (PyObject_SetAttrString(__pyx_m, "stat", (PyObject *)&PyGeventStat_Type) < 0) __PYX_ERR(0, 1213, __pyx_L1_error) - __pyx_ptype_6gevent_5libev_8corecext_stat = &PyGeventStat_Type; - if (PyType_Ready(&__pyx_type_6gevent_5libev_8corecext___pyx_scope_struct__genexpr) < 0) __PYX_ERR(0, 149, __pyx_L1_error) - __pyx_type_6gevent_5libev_8corecext___pyx_scope_struct__genexpr.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_5libev_8corecext___pyx_scope_struct__genexpr.tp_dictoffset && __pyx_type_6gevent_5libev_8corecext___pyx_scope_struct__genexpr.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_5libev_8corecext___pyx_scope_struct__genexpr.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; - } - __pyx_ptype_6gevent_5libev_8corecext___pyx_scope_struct__genexpr = &__pyx_type_6gevent_5libev_8corecext___pyx_scope_struct__genexpr; - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_type_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); - /*--- Type import code ---*/ - __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "type", - #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyTypeObject), - #else - sizeof(PyHeapTypeObject), - #endif - 0); if (unlikely(!__pyx_ptype_7cpython_4type_type)) __PYX_ERR(1, 9, __pyx_L1_error) - __pyx_ptype_7cpython_4bool_bool = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "bool", sizeof(PyBoolObject), 0); if (unlikely(!__pyx_ptype_7cpython_4bool_bool)) __PYX_ERR(2, 8, __pyx_L1_error) - __pyx_ptype_7cpython_7complex_complex = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "complex", sizeof(PyComplexObject), 0); if (unlikely(!__pyx_ptype_7cpython_7complex_complex)) __PYX_ERR(3, 15, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_variable_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); - /*--- Variable import code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_function_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); - /*--- Function import code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - - -#if PY_MAJOR_VERSION < 3 -#ifdef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC void -#else -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -#endif -#else -#ifdef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC PyObject * -#else -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -#endif -#endif -#ifndef CYTHON_SMALL_CODE -#if defined(__clang__) - #define CYTHON_SMALL_CODE -#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4))) - #define CYTHON_SMALL_CODE __attribute__((cold)) -#else - #define CYTHON_SMALL_CODE -#endif -#endif - - -#if PY_MAJOR_VERSION < 3 -__Pyx_PyMODINIT_FUNC initcorecext(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC initcorecext(void) -#else -__Pyx_PyMODINIT_FUNC PyInit_corecext(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC PyInit_corecext(void) -#if CYTHON_PEP489_MULTI_PHASE_INIT -{ - return PyModuleDef_Init(&__pyx_moduledef); -} -static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) { - PyObject *value = PyObject_GetAttrString(spec, from_name); - int result = 0; - if (likely(value)) { - result = PyDict_SetItemString(moddict, to_name, value); - Py_DECREF(value); - } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Clear(); - } else { - result = -1; - } - return result; -} -static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) { - PyObject *module = NULL, *moddict, *modname; - if (__pyx_m) - return __Pyx_NewRef(__pyx_m); - modname = PyObject_GetAttrString(spec, "name"); - if (unlikely(!modname)) goto bad; - module = PyModule_NewObject(modname); - Py_DECREF(modname); - if (unlikely(!module)) goto bad; - moddict = PyModule_GetDict(module); - if (unlikely(!moddict)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__") < 0)) goto bad; - return module; -bad: - Py_XDECREF(module); - return NULL; -} - - -static int __pyx_pymod_exec_corecext(PyObject *__pyx_pyinit_module) -#endif -#endif -{ - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - PyObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; - PyObject *__pyx_t_13 = NULL; - PyObject *__pyx_t_14 = NULL; - PyObject *__pyx_t_15 = NULL; - PyObject *__pyx_t_16 = NULL; - PyObject *__pyx_t_17 = NULL; - PyObject *__pyx_t_18 = NULL; - __Pyx_RefNannyDeclarations - #if CYTHON_PEP489_MULTI_PHASE_INIT - if (__pyx_m && __pyx_m == __pyx_pyinit_module) return 0; - #elif PY_MAJOR_VERSION >= 3 - if (__pyx_m) return __Pyx_NewRef(__pyx_m); - #endif - #if CYTHON_REFNANNY -__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); -if (!__Pyx_RefNanny) { - PyErr_Clear(); - __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); - if (!__Pyx_RefNanny) - Py_FatalError("failed to import 'refnanny' module"); -} -#endif - __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_corecext(void)", 0); - if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) - #ifdef __Pyx_CyFunction_USED - if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_FusedFunction_USED - if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Coroutine_USED - if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Generator_USED - if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_AsyncGen_USED - if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_StopAsyncIteration_USED - if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - /*--- Library function declarations ---*/ - /*--- Threads initialization code ---*/ - #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS - #ifdef WITH_THREAD /* Python build with threading support? */ - PyEval_InitThreads(); - #endif - #endif - /*--- Module creation code ---*/ - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_m = __pyx_pyinit_module; - Py_INCREF(__pyx_m); - #else - #if PY_MAJOR_VERSION < 3 - __pyx_m = Py_InitModule4("corecext", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); - #else - __pyx_m = PyModule_Create(&__pyx_moduledef); - #endif - if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) - Py_INCREF(__pyx_d); - __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) - #if CYTHON_COMPILING_IN_PYPY - Py_INCREF(__pyx_b); - #endif - if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - /*--- Initialize various global constants etc. ---*/ - if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) - if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - if (__pyx_module_is_main_gevent__libev__corecext) { - if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - } - #if PY_MAJOR_VERSION >= 3 - { - PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) - if (!PyDict_GetItemString(modules, "gevent.libev.corecext")) { - if (unlikely(PyDict_SetItemString(modules, "gevent.libev.corecext", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) - } - } - #endif - /*--- Builtin init code ---*/ - if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Constants init code ---*/ - if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Global type/function init code ---*/ - (void)__Pyx_modinit_global_init_code(); - (void)__Pyx_modinit_variable_export_code(); - (void)__Pyx_modinit_function_export_code(); - if (unlikely(__Pyx_modinit_type_init_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_type_import_code() != 0)) goto __pyx_L1_error; - (void)__Pyx_modinit_variable_import_code(); - (void)__Pyx_modinit_function_import_code(); - /*--- Execution code ---*/ - #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) - if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - - __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 39, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_level, __pyx_int_0) < 0) __PYX_ERR(0, 39, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin___import__, __pyx_tuple__19, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 39, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_2) < 0) __PYX_ERR(0, 39, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 40, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_level, __pyx_int_0) < 0) __PYX_ERR(0, 40, __pyx_L1_error) - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin___import__, __pyx_tuple__20, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 40, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (PyDict_SetItem(__pyx_d, __pyx_n_s_os, __pyx_t_1) < 0) __PYX_ERR(0, 40, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 41, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_level, __pyx_int_0) < 0) __PYX_ERR(0, 41, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin___import__, __pyx_tuple__21, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 41, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (PyDict_SetItem(__pyx_d, __pyx_n_s_traceback, __pyx_t_2) < 0) __PYX_ERR(0, 41, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 42, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_level, __pyx_int_0) < 0) __PYX_ERR(0, 42, __pyx_L1_error) - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin___import__, __pyx_tuple__22, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 42, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (PyDict_SetItem(__pyx_d, __pyx_n_s_signalmodule, __pyx_t_1) < 0) __PYX_ERR(0, 42, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 43, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_level, __pyx_int_0) < 0) __PYX_ERR(0, 43, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin___import__, __pyx_tuple__23, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 43, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_getswitchinterval); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 43, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (PyDict_SetItem(__pyx_d, __pyx_n_s_getswitchinterval, __pyx_t_1) < 0) __PYX_ERR(0, 43, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - __pyx_t_1 = PyList_New(7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 46, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_get_version); - __Pyx_GIVEREF(__pyx_n_s_get_version); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_get_version); - __Pyx_INCREF(__pyx_n_s_get_header_version); - __Pyx_GIVEREF(__pyx_n_s_get_header_version); - PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_get_header_version); - __Pyx_INCREF(__pyx_n_s_supported_backends); - __Pyx_GIVEREF(__pyx_n_s_supported_backends); - PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_s_supported_backends); - __Pyx_INCREF(__pyx_n_s_recommended_backends); - __Pyx_GIVEREF(__pyx_n_s_recommended_backends); - PyList_SET_ITEM(__pyx_t_1, 3, __pyx_n_s_recommended_backends); - __Pyx_INCREF(__pyx_n_s_embeddable_backends); - __Pyx_GIVEREF(__pyx_n_s_embeddable_backends); - PyList_SET_ITEM(__pyx_t_1, 4, __pyx_n_s_embeddable_backends); - __Pyx_INCREF(__pyx_n_s_time); - __Pyx_GIVEREF(__pyx_n_s_time); - PyList_SET_ITEM(__pyx_t_1, 5, __pyx_n_s_time); - __Pyx_INCREF(__pyx_n_s_loop); - __Pyx_GIVEREF(__pyx_n_s_loop); - PyList_SET_ITEM(__pyx_t_1, 6, __pyx_n_s_loop); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_all, __pyx_t_1) < 0) __PYX_ERR(0, 46, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_version_info); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_int_3, Py_GE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (__pyx_t_3) { - - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 57, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(((PyObject *)(&PyInt_Type))); - __Pyx_GIVEREF(((PyObject *)(&PyInt_Type))); - PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)(&PyInt_Type))); - __Pyx_XGOTREF(__pyx_v_6gevent_5libev_8corecext_integer_types); - __Pyx_DECREF_SET(__pyx_v_6gevent_5libev_8corecext_integer_types, ((PyObject*)__pyx_t_2)); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - - goto __pyx_L2; - } - - /*else*/ { - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 59, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(((PyObject *)(&PyInt_Type))); - __Pyx_GIVEREF(((PyObject *)(&PyInt_Type))); - PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)(&PyInt_Type))); - __Pyx_INCREF(((PyObject *)(&PyLong_Type))); - __Pyx_GIVEREF(((PyObject *)(&PyLong_Type))); - PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)(&PyLong_Type))); - __Pyx_XGOTREF(__pyx_v_6gevent_5libev_8corecext_integer_types); - __Pyx_DECREF_SET(__pyx_v_6gevent_5libev_8corecext_integer_types, ((PyObject*)__pyx_t_2)); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - } - __pyx_L2:; - - __pyx_t_2 = __Pyx_PyInt_From_int(EV_UNDEF); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 82, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_UNDEF, __pyx_t_2) < 0) __PYX_ERR(0, 82, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EV_NONE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 83, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_NONE, __pyx_t_2) < 0) __PYX_ERR(0, 83, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EV_READ); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 84, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_READ, __pyx_t_2) < 0) __PYX_ERR(0, 84, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EV_WRITE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 85, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_WRITE, __pyx_t_2) < 0) __PYX_ERR(0, 85, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EV_TIMER); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 86, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_TIMER, __pyx_t_2) < 0) __PYX_ERR(0, 86, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EV_PERIODIC); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 87, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_PERIODIC, __pyx_t_2) < 0) __PYX_ERR(0, 87, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EV_SIGNAL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 88, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_SIGNAL, __pyx_t_2) < 0) __PYX_ERR(0, 88, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EV_CHILD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 89, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_CHILD, __pyx_t_2) < 0) __PYX_ERR(0, 89, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EV_STAT); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 90, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_STAT, __pyx_t_2) < 0) __PYX_ERR(0, 90, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EV_IDLE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 91, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_IDLE, __pyx_t_2) < 0) __PYX_ERR(0, 91, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EV_PREPARE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 92, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_PREPARE, __pyx_t_2) < 0) __PYX_ERR(0, 92, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EV_CHECK); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 93, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_CHECK, __pyx_t_2) < 0) __PYX_ERR(0, 93, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EV_EMBED); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 94, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_EMBED, __pyx_t_2) < 0) __PYX_ERR(0, 94, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EV_FORK); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 95, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_FORK, __pyx_t_2) < 0) __PYX_ERR(0, 95, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EV_CLEANUP); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 96, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_CLEANUP, __pyx_t_2) < 0) __PYX_ERR(0, 96, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EV_ASYNC); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 97, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ASYNC, __pyx_t_2) < 0) __PYX_ERR(0, 97, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EV_CUSTOM); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 98, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_CUSTOM, __pyx_t_2) < 0) __PYX_ERR(0, 98, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EV_ERROR); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 99, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERROR, __pyx_t_2) < 0) __PYX_ERR(0, 99, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int((EV_READ | EV_WRITE)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 101, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_READWRITE, __pyx_t_2) < 0) __PYX_ERR(0, 101, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EV_MINPRI); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 103, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_MINPRI, __pyx_t_2) < 0) __PYX_ERR(0, 103, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EV_MAXPRI); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 104, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_MAXPRI, __pyx_t_2) < 0) __PYX_ERR(0, 104, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EVBACKEND_PORT); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 106, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_BACKEND_PORT, __pyx_t_2) < 0) __PYX_ERR(0, 106, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EVBACKEND_KQUEUE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 107, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_BACKEND_KQUEUE, __pyx_t_2) < 0) __PYX_ERR(0, 107, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EVBACKEND_EPOLL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 108, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_BACKEND_EPOLL, __pyx_t_2) < 0) __PYX_ERR(0, 108, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EVBACKEND_POLL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 109, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_BACKEND_POLL, __pyx_t_2) < 0) __PYX_ERR(0, 109, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EVBACKEND_SELECT); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 110, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_BACKEND_SELECT, __pyx_t_2) < 0) __PYX_ERR(0, 110, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EVFLAG_FORKCHECK); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 111, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_FORKCHECK, __pyx_t_2) < 0) __PYX_ERR(0, 111, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EVFLAG_NOINOTIFY); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 112, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_NOINOTIFY, __pyx_t_2) < 0) __PYX_ERR(0, 112, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EVFLAG_SIGNALFD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 113, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_SIGNALFD, __pyx_t_2) < 0) __PYX_ERR(0, 113, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EVFLAG_NOSIGMASK); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 114, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_NOSIGMASK, __pyx_t_2) < 0) __PYX_ERR(0, 114, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_6gevent_5libev_8corecext__EVENTSType)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_XGOTREF(GEVENT_CORE_EVENTS); - __Pyx_DECREF_SET(GEVENT_CORE_EVENTS, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - - if (PyDict_SetItem(__pyx_d, __pyx_n_s_EVENTS, GEVENT_CORE_EVENTS) < 0) __PYX_ERR(0, 125, __pyx_L1_error) - - __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6gevent_5libev_8corecext_1get_version, NULL, __pyx_n_s_gevent_libev_corecext); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 128, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_version, __pyx_t_2) < 0) __PYX_ERR(0, 128, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6gevent_5libev_8corecext_3get_header_version, NULL, __pyx_n_s_gevent_libev_corecext); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 132, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_header_version, __pyx_t_2) < 0) __PYX_ERR(0, 132, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EVBACKEND_PORT); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 137, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 137, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_port); - __Pyx_GIVEREF(__pyx_n_s_port); - PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_port); - __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EVBACKEND_KQUEUE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 138, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 138, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_kqueue); - __Pyx_GIVEREF(__pyx_n_s_kqueue); - PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_n_s_kqueue); - __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EVBACKEND_EPOLL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 139, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 139, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_epoll); - __Pyx_GIVEREF(__pyx_n_s_epoll); - PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_n_s_epoll); - __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EVBACKEND_POLL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_poll); - __Pyx_GIVEREF(__pyx_n_s_poll); - PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_n_s_poll); - __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EVBACKEND_SELECT); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 141, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 141, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_select); - __Pyx_GIVEREF(__pyx_n_s_select); - PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_n_s_select); - __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EVFLAG_NOENV); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 142, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 142, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_noenv); - __Pyx_GIVEREF(__pyx_n_s_noenv); - PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_n_s_noenv); - __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EVFLAG_FORKCHECK); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 143, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 143, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_forkcheck); - __Pyx_GIVEREF(__pyx_n_s_forkcheck); - PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_n_s_forkcheck); - __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EVFLAG_NOINOTIFY); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 144, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 144, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_10); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_noinotify); - __Pyx_GIVEREF(__pyx_n_s_noinotify); - PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_n_s_noinotify); - __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EVFLAG_SIGNALFD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 145, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 145, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_11); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_signalfd); - __Pyx_GIVEREF(__pyx_n_s_signalfd); - PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_n_s_signalfd); - __pyx_t_2 = 0; - - __pyx_t_2 = __Pyx_PyInt_From_int(EVFLAG_NOSIGMASK); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 146, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 146, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_nosigmask); - __Pyx_GIVEREF(__pyx_n_s_nosigmask); - PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_n_s_nosigmask); - __pyx_t_2 = 0; - - __pyx_t_2 = PyList_New(10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 137, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_1); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_4); - PyList_SET_ITEM(__pyx_t_2, 1, __pyx_t_4); - __Pyx_GIVEREF(__pyx_t_5); - PyList_SET_ITEM(__pyx_t_2, 2, __pyx_t_5); - __Pyx_GIVEREF(__pyx_t_6); - PyList_SET_ITEM(__pyx_t_2, 3, __pyx_t_6); - __Pyx_GIVEREF(__pyx_t_7); - PyList_SET_ITEM(__pyx_t_2, 4, __pyx_t_7); - __Pyx_GIVEREF(__pyx_t_8); - PyList_SET_ITEM(__pyx_t_2, 5, __pyx_t_8); - __Pyx_GIVEREF(__pyx_t_9); - PyList_SET_ITEM(__pyx_t_2, 6, __pyx_t_9); - __Pyx_GIVEREF(__pyx_t_10); - PyList_SET_ITEM(__pyx_t_2, 7, __pyx_t_10); - __Pyx_GIVEREF(__pyx_t_11); - PyList_SET_ITEM(__pyx_t_2, 8, __pyx_t_11); - __Pyx_GIVEREF(__pyx_t_12); - PyList_SET_ITEM(__pyx_t_2, 9, __pyx_t_12); - __pyx_t_1 = 0; - __pyx_t_4 = 0; - __pyx_t_5 = 0; - __pyx_t_6 = 0; - __pyx_t_7 = 0; - __pyx_t_8 = 0; - __pyx_t_9 = 0; - __pyx_t_10 = 0; - __pyx_t_11 = 0; - __pyx_t_12 = 0; - if (PyDict_SetItem(__pyx_d, __pyx_n_s_flags, __pyx_t_2) < 0) __PYX_ERR(0, 137, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - __pyx_t_2 = __pyx_pf_6gevent_5libev_8corecext_22genexpr(NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 149, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_12 = __Pyx_Generator_Next(__pyx_t_2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 149, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (PyDict_SetItem(__pyx_d, __pyx_n_s_flags_str2int, __pyx_t_12) < 0) __PYX_ERR(0, 149, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - - __pyx_t_12 = __Pyx_PyInt_From_int(EV_READ); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 152, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 152, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_12); - PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_12); - __Pyx_INCREF(__pyx_n_s_READ); - __Pyx_GIVEREF(__pyx_n_s_READ); - PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_READ); - __pyx_t_12 = 0; - - __pyx_t_12 = __Pyx_PyInt_From_int(EV_WRITE); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 153, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 153, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_11); - __Pyx_GIVEREF(__pyx_t_12); - PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_12); - __Pyx_INCREF(__pyx_n_s_WRITE); - __Pyx_GIVEREF(__pyx_n_s_WRITE); - PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_n_s_WRITE); - __pyx_t_12 = 0; - - __pyx_t_12 = __Pyx_PyInt_From_int(EV__IOFDSET); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 154, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 154, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_10); - __Pyx_GIVEREF(__pyx_t_12); - PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_12); - __Pyx_INCREF(__pyx_n_s_IOFDSET); - __Pyx_GIVEREF(__pyx_n_s_IOFDSET); - PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_n_s_IOFDSET); - __pyx_t_12 = 0; - - __pyx_t_12 = __Pyx_PyInt_From_int(EV_PERIODIC); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 155, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 155, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_GIVEREF(__pyx_t_12); - PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_12); - __Pyx_INCREF(__pyx_n_s_PERIODIC); - __Pyx_GIVEREF(__pyx_n_s_PERIODIC); - PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_n_s_PERIODIC); - __pyx_t_12 = 0; - - __pyx_t_12 = __Pyx_PyInt_From_int(EV_SIGNAL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 156, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 156, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_GIVEREF(__pyx_t_12); - PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_12); - __Pyx_INCREF(__pyx_n_s_SIGNAL); - __Pyx_GIVEREF(__pyx_n_s_SIGNAL); - PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_n_s_SIGNAL); - __pyx_t_12 = 0; - - __pyx_t_12 = __Pyx_PyInt_From_int(EV_CHILD); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 157, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 157, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_GIVEREF(__pyx_t_12); - PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_12); - __Pyx_INCREF(__pyx_n_s_CHILD); - __Pyx_GIVEREF(__pyx_n_s_CHILD); - PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_n_s_CHILD); - __pyx_t_12 = 0; - - __pyx_t_12 = __Pyx_PyInt_From_int(EV_STAT); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 158, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 158, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_12); - PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_12); - __Pyx_INCREF(__pyx_n_s_STAT); - __Pyx_GIVEREF(__pyx_n_s_STAT); - PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_n_s_STAT); - __pyx_t_12 = 0; - - __pyx_t_12 = __Pyx_PyInt_From_int(EV_IDLE); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 159, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 159, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_12); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_12); - __Pyx_INCREF(__pyx_n_s_IDLE); - __Pyx_GIVEREF(__pyx_n_s_IDLE); - PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_n_s_IDLE); - __pyx_t_12 = 0; - - __pyx_t_12 = __Pyx_PyInt_From_int(EV_PREPARE); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 160, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 160, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_12); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_12); - __Pyx_INCREF(__pyx_n_s_PREPARE); - __Pyx_GIVEREF(__pyx_n_s_PREPARE); - PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_n_s_PREPARE); - __pyx_t_12 = 0; - - __pyx_t_12 = __Pyx_PyInt_From_int(EV_CHECK); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 161, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 161, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_12); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_12); - __Pyx_INCREF(__pyx_n_s_CHECK); - __Pyx_GIVEREF(__pyx_n_s_CHECK); - PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_CHECK); - __pyx_t_12 = 0; - - __pyx_t_12 = __Pyx_PyInt_From_int(EV_EMBED); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 162, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __pyx_t_13 = PyTuple_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 162, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_13); - __Pyx_GIVEREF(__pyx_t_12); - PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_12); - __Pyx_INCREF(__pyx_n_s_EMBED); - __Pyx_GIVEREF(__pyx_n_s_EMBED); - PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_n_s_EMBED); - __pyx_t_12 = 0; - - __pyx_t_12 = __Pyx_PyInt_From_int(EV_FORK); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 163, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __pyx_t_14 = PyTuple_New(2); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 163, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_14); - __Pyx_GIVEREF(__pyx_t_12); - PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_12); - __Pyx_INCREF(__pyx_n_s_FORK); - __Pyx_GIVEREF(__pyx_n_s_FORK); - PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_n_s_FORK); - __pyx_t_12 = 0; - - __pyx_t_12 = __Pyx_PyInt_From_int(EV_CLEANUP); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 164, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __pyx_t_15 = PyTuple_New(2); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 164, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_15); - __Pyx_GIVEREF(__pyx_t_12); - PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_12); - __Pyx_INCREF(__pyx_n_s_CLEANUP); - __Pyx_GIVEREF(__pyx_n_s_CLEANUP); - PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_n_s_CLEANUP); - __pyx_t_12 = 0; - - __pyx_t_12 = __Pyx_PyInt_From_int(EV_ASYNC); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 165, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __pyx_t_16 = PyTuple_New(2); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 165, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_16); - __Pyx_GIVEREF(__pyx_t_12); - PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_12); - __Pyx_INCREF(__pyx_n_s_ASYNC); - __Pyx_GIVEREF(__pyx_n_s_ASYNC); - PyTuple_SET_ITEM(__pyx_t_16, 1, __pyx_n_s_ASYNC); - __pyx_t_12 = 0; - - __pyx_t_12 = __Pyx_PyInt_From_int(EV_CUSTOM); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 166, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __pyx_t_17 = PyTuple_New(2); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 166, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_17); - __Pyx_GIVEREF(__pyx_t_12); - PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_12); - __Pyx_INCREF(__pyx_n_s_CUSTOM); - __Pyx_GIVEREF(__pyx_n_s_CUSTOM); - PyTuple_SET_ITEM(__pyx_t_17, 1, __pyx_n_s_CUSTOM); - __pyx_t_12 = 0; - - __pyx_t_12 = __Pyx_PyInt_From_int(EV_ERROR); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 167, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __pyx_t_18 = PyTuple_New(2); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 167, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_18); - __Pyx_GIVEREF(__pyx_t_12); - PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_12); - __Pyx_INCREF(__pyx_n_s_ERROR); - __Pyx_GIVEREF(__pyx_n_s_ERROR); - PyTuple_SET_ITEM(__pyx_t_18, 1, __pyx_n_s_ERROR); - __pyx_t_12 = 0; - - __pyx_t_12 = PyList_New(16); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 152, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __Pyx_GIVEREF(__pyx_t_2); - PyList_SET_ITEM(__pyx_t_12, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_11); - PyList_SET_ITEM(__pyx_t_12, 1, __pyx_t_11); - __Pyx_GIVEREF(__pyx_t_10); - PyList_SET_ITEM(__pyx_t_12, 2, __pyx_t_10); - __Pyx_GIVEREF(__pyx_t_9); - PyList_SET_ITEM(__pyx_t_12, 3, __pyx_t_9); - __Pyx_GIVEREF(__pyx_t_8); - PyList_SET_ITEM(__pyx_t_12, 4, __pyx_t_8); - __Pyx_GIVEREF(__pyx_t_7); - PyList_SET_ITEM(__pyx_t_12, 5, __pyx_t_7); - __Pyx_GIVEREF(__pyx_t_6); - PyList_SET_ITEM(__pyx_t_12, 6, __pyx_t_6); - __Pyx_GIVEREF(__pyx_t_5); - PyList_SET_ITEM(__pyx_t_12, 7, __pyx_t_5); - __Pyx_GIVEREF(__pyx_t_4); - PyList_SET_ITEM(__pyx_t_12, 8, __pyx_t_4); - __Pyx_GIVEREF(__pyx_t_1); - PyList_SET_ITEM(__pyx_t_12, 9, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_13); - PyList_SET_ITEM(__pyx_t_12, 10, __pyx_t_13); - __Pyx_GIVEREF(__pyx_t_14); - PyList_SET_ITEM(__pyx_t_12, 11, __pyx_t_14); - __Pyx_GIVEREF(__pyx_t_15); - PyList_SET_ITEM(__pyx_t_12, 12, __pyx_t_15); - __Pyx_GIVEREF(__pyx_t_16); - PyList_SET_ITEM(__pyx_t_12, 13, __pyx_t_16); - __Pyx_GIVEREF(__pyx_t_17); - PyList_SET_ITEM(__pyx_t_12, 14, __pyx_t_17); - __Pyx_GIVEREF(__pyx_t_18); - PyList_SET_ITEM(__pyx_t_12, 15, __pyx_t_18); - __pyx_t_2 = 0; - __pyx_t_11 = 0; - __pyx_t_10 = 0; - __pyx_t_9 = 0; - __pyx_t_8 = 0; - __pyx_t_7 = 0; - __pyx_t_6 = 0; - __pyx_t_5 = 0; - __pyx_t_4 = 0; - __pyx_t_1 = 0; - __pyx_t_13 = 0; - __pyx_t_14 = 0; - __pyx_t_15 = 0; - __pyx_t_16 = 0; - __pyx_t_17 = 0; - __pyx_t_18 = 0; - if (PyDict_SetItem(__pyx_d, __pyx_n_s_events, __pyx_t_12) < 0) __PYX_ERR(0, 152, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - - __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 183, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_version_info); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 183, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_18); - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __pyx_t_12 = __Pyx_GetItemInt(__pyx_t_18, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 183, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; - __pyx_t_18 = PyObject_RichCompare(__pyx_t_12, __pyx_int_3, Py_GE); __Pyx_XGOTREF(__pyx_t_18); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 183, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_18); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 183, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; - if (__pyx_t_3) { - - __pyx_t_18 = PyTuple_New(2); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 184, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_18); - __Pyx_INCREF(((PyObject *)(&PyBytes_Type))); - __Pyx_GIVEREF(((PyObject *)(&PyBytes_Type))); - PyTuple_SET_ITEM(__pyx_t_18, 0, ((PyObject *)(&PyBytes_Type))); - __Pyx_INCREF(((PyObject *)(&PyString_Type))); - __Pyx_GIVEREF(((PyObject *)(&PyString_Type))); - PyTuple_SET_ITEM(__pyx_t_18, 1, ((PyObject *)(&PyString_Type))); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_basestring, __pyx_t_18) < 0) __PYX_ERR(0, 184, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; - - goto __pyx_L3; - } - - /*else*/ { - __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s_builtins); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 186, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_18); - __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_18, __pyx_n_s_basestring); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 186, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; - if (PyDict_SetItem(__pyx_d, __pyx_n_s_basestring, __pyx_t_12) < 0) __PYX_ERR(0, 186, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - } - __pyx_L3:; - - __pyx_t_12 = PyCFunction_NewEx(&__pyx_mdef_6gevent_5libev_8corecext_13supported_backends, NULL, __pyx_n_s_gevent_libev_corecext); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 241, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_supported_backends, __pyx_t_12) < 0) __PYX_ERR(0, 241, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - - __pyx_t_12 = PyCFunction_NewEx(&__pyx_mdef_6gevent_5libev_8corecext_15recommended_backends, NULL, __pyx_n_s_gevent_libev_corecext); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 245, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_recommended_backends, __pyx_t_12) < 0) __PYX_ERR(0, 245, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - - __pyx_t_12 = PyCFunction_NewEx(&__pyx_mdef_6gevent_5libev_8corecext_17embeddable_backends, NULL, __pyx_n_s_gevent_libev_corecext); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 249, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_embeddable_backends, __pyx_t_12) < 0) __PYX_ERR(0, 249, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - - __pyx_t_12 = PyCFunction_NewEx(&__pyx_mdef_6gevent_5libev_8corecext_19time, NULL, __pyx_n_s_gevent_libev_corecext); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 253, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_time, __pyx_t_12) < 0) __PYX_ERR(0, 253, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - - __pyx_t_12 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6gevent_5libev_8corecext_callback, __pyx_n_s_stop); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 276, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_5libev_8corecext_callback->tp_dict, __pyx_n_s_close, __pyx_t_12) < 0) __PYX_ERR(0, 276, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - PyType_Modified(__pyx_ptype_6gevent_5libev_8corecext_callback); - - __pyx_k__10 = EVBREAK_ONE; - - __pyx_t_12 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6gevent_5libev_8corecext_loop, __pyx_n_s_update_now); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 596, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_5libev_8corecext_loop->tp_dict, __pyx_n_s_update, __pyx_t_12) < 0) __PYX_ERR(0, 596, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - PyType_Modified(__pyx_ptype_6gevent_5libev_8corecext_loop); - - __pyx_t_12 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6gevent_5libev_8corecext_loop, __pyx_n_s_async); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 661, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_5libev_8corecext_loop->tp_dict, __pyx_n_s_async_2, __pyx_t_12) < 0) __PYX_ERR(0, 661, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - PyType_Modified(__pyx_ptype_6gevent_5libev_8corecext_loop); - - __pyx_v_6gevent_5libev_8corecext_io_ss = __pyx_f_6gevent_5libev_8corecext_make_ss(((void *)ev_io_start), ((void *)ev_io_stop)); - - __pyx_v_6gevent_5libev_8corecext_timer_ss = __pyx_f_6gevent_5libev_8corecext_make_ss(((void *)ev_timer_start), ((void *)ev_timer_stop)); - - __pyx_v_6gevent_5libev_8corecext_signal_ss = __pyx_f_6gevent_5libev_8corecext_make_ss(((void *)ev_signal_start), ((void *)ev_signal_stop)); - - __pyx_v_6gevent_5libev_8corecext_idle_ss = __pyx_f_6gevent_5libev_8corecext_make_ss(((void *)ev_idle_start), ((void *)ev_idle_stop)); - - __pyx_v_6gevent_5libev_8corecext_prepare_ss = __pyx_f_6gevent_5libev_8corecext_make_ss(((void *)ev_prepare_start), ((void *)ev_prepare_stop)); - - __pyx_v_6gevent_5libev_8corecext_check_ss = __pyx_f_6gevent_5libev_8corecext_make_ss(((void *)ev_check_start), ((void *)ev_check_stop)); - - __pyx_v_6gevent_5libev_8corecext_fork_ss = __pyx_f_6gevent_5libev_8corecext_make_ss(((void *)ev_fork_start), ((void *)ev_fork_stop)); - - __pyx_v_6gevent_5libev_8corecext_async_ss = __pyx_f_6gevent_5libev_8corecext_make_ss(((void *)ev_async_start), ((void *)ev_async_stop)); - - if (PyDict_SetItem(__pyx_d, __pyx_n_s_async_2, ((PyObject *)__pyx_ptype_6gevent_5libev_8corecext_async_)) < 0) __PYX_ERR(0, 1166, __pyx_L1_error) - - __pyx_v_6gevent_5libev_8corecext_child_ss = __pyx_f_6gevent_5libev_8corecext_make_ss(((void *)ev_child_start), ((void *)ev_child_stop)); - - __pyx_v_6gevent_5libev_8corecext_stat_ss = __pyx_f_6gevent_5libev_8corecext_make_ss(((void *)ev_stat_start), ((void *)ev_stat_stop)); - - if (PyDict_SetItem(__pyx_d, __pyx_n_s_SYSERR_CALLBACK, Py_None) < 0) __PYX_ERR(0, 1257, __pyx_L1_error) - - __pyx_t_12 = __Pyx_PyInt_From_int(LIBEV_EMBED); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1283, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1283, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __pyx_t_12 = __Pyx_PyBool_FromLong((!(!__pyx_t_3))); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1283, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_LIBEV_EMBED, __pyx_t_12) < 0) __PYX_ERR(0, 1283, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - - __pyx_t_12 = __Pyx_PyInt_From_int(EV_USE_FLOOR); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1284, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_EV_USE_FLOOR, __pyx_t_12) < 0) __PYX_ERR(0, 1284, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - - __pyx_t_12 = __Pyx_PyInt_From_int(EV_USE_CLOCK_SYSCALL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1285, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_EV_USE_CLOCK_SYSCALL, __pyx_t_12) < 0) __PYX_ERR(0, 1285, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - - __pyx_t_12 = __Pyx_PyInt_From_int(EV_USE_REALTIME); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1286, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_EV_USE_REALTIME, __pyx_t_12) < 0) __PYX_ERR(0, 1286, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - - __pyx_t_12 = __Pyx_PyInt_From_int(EV_USE_MONOTONIC); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1287, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_EV_USE_MONOTONIC, __pyx_t_12) < 0) __PYX_ERR(0, 1287, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - - __pyx_t_12 = __Pyx_PyInt_From_int(EV_USE_NANOSLEEP); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1288, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_EV_USE_NANOSLEEP, __pyx_t_12) < 0) __PYX_ERR(0, 1288, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - - __pyx_t_12 = __Pyx_PyInt_From_int(EV_USE_INOTIFY); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1289, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_EV_USE_INOTIFY, __pyx_t_12) < 0) __PYX_ERR(0, 1289, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - - __pyx_t_12 = __Pyx_PyInt_From_int(EV_USE_SIGNALFD); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1290, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_EV_USE_SIGNALFD, __pyx_t_12) < 0) __PYX_ERR(0, 1290, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - - __pyx_t_12 = __Pyx_PyInt_From_int(EV_USE_EVENTFD); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1291, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_EV_USE_EVENTFD, __pyx_t_12) < 0) __PYX_ERR(0, 1291, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - - __pyx_t_12 = __Pyx_PyInt_From_int(EV_USE_4HEAP); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1292, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_EV_USE_4HEAP, __pyx_t_12) < 0) __PYX_ERR(0, 1292, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - - __Pyx_INCREF(__pyx_empty_tuple); - __Pyx_XGOTREF(_empty_tuple); - __Pyx_DECREF_SET(_empty_tuple, __pyx_empty_tuple); - __Pyx_GIVEREF(__pyx_empty_tuple); - - __pyx_t_12 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_12) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - - /*--- Wrapped vars code ---*/ - - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_XDECREF(__pyx_t_9); - __Pyx_XDECREF(__pyx_t_10); - __Pyx_XDECREF(__pyx_t_11); - __Pyx_XDECREF(__pyx_t_12); - __Pyx_XDECREF(__pyx_t_13); - __Pyx_XDECREF(__pyx_t_14); - __Pyx_XDECREF(__pyx_t_15); - __Pyx_XDECREF(__pyx_t_16); - __Pyx_XDECREF(__pyx_t_17); - __Pyx_XDECREF(__pyx_t_18); - if (__pyx_m) { - if (__pyx_d) { - __Pyx_AddTraceback("init gevent.libev.corecext", 0, __pyx_lineno, __pyx_filename); - } - Py_DECREF(__pyx_m); __pyx_m = 0; - } else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_ImportError, "init gevent.libev.corecext"); - } - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - #if CYTHON_PEP489_MULTI_PHASE_INIT - return (__pyx_m != NULL) ? 0 : -1; - #elif PY_MAJOR_VERSION >= 3 - return __pyx_m; - #else - return; - #endif -} - -/* --- Runtime support code --- */ -/* Refnanny */ -#if CYTHON_REFNANNY -static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { - PyObject *m = NULL, *p = NULL; - void *r = NULL; - m = PyImport_ImportModule((char *)modname); - if (!m) goto end; - p = PyObject_GetAttrString(m, (char *)"RefNannyAPI"); - if (!p) goto end; - r = PyLong_AsVoidPtr(p); -end: - Py_XDECREF(p); - Py_XDECREF(m); - return (__Pyx_RefNannyAPIStruct *)r; -} -#endif - -/* PyObjectGetAttrStr */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_getattro)) - return tp->tp_getattro(obj, attr_name); -#if PY_MAJOR_VERSION < 3 - if (likely(tp->tp_getattr)) - return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); -#endif - return PyObject_GetAttr(obj, attr_name); -} -#endif - -/* GetBuiltinName */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name) { - PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); - if (unlikely(!result)) { - PyErr_Format(PyExc_NameError, -#if PY_MAJOR_VERSION >= 3 - "name '%U' is not defined", name); -#else - "name '%.200s' is not defined", PyString_AS_STRING(name)); -#endif - } - return result; -} - -/* GetModuleGlobalName */ -static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { - PyObject *result; -#if !CYTHON_AVOID_BORROWED_REFS -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 - result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); - if (likely(result)) { - Py_INCREF(result); - } else if (unlikely(PyErr_Occurred())) { - result = NULL; - } else { -#else - result = PyDict_GetItem(__pyx_d, name); - if (likely(result)) { - Py_INCREF(result); - } else { -#endif -#else - result = PyObject_GetItem(__pyx_d, name); - if (!result) { - PyErr_Clear(); -#endif - result = __Pyx_GetBuiltinName(name); - } - return result; -} - -/* RaiseTooManyValuesToUnpack */ - static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { - PyErr_Format(PyExc_ValueError, - "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); -} - -/* RaiseNeedMoreValuesToUnpack */ - static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { - PyErr_Format(PyExc_ValueError, - "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", - index, (index == 1) ? "" : "s"); -} - -/* IterFinish */ - static CYTHON_INLINE int __Pyx_IterFinish(void) { -#if CYTHON_FAST_THREAD_STATE - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject* exc_type = tstate->curexc_type; - if (unlikely(exc_type)) { - if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) { - PyObject *exc_value, *exc_tb; - exc_value = tstate->curexc_value; - exc_tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; - Py_DECREF(exc_type); - Py_XDECREF(exc_value); - Py_XDECREF(exc_tb); - return 0; - } else { - return -1; - } - } - return 0; -#else - if (unlikely(PyErr_Occurred())) { - if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) { - PyErr_Clear(); - return 0; - } else { - return -1; - } - } - return 0; -#endif -} - -/* UnpackItemEndCheck */ - static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { - if (unlikely(retval)) { - Py_DECREF(retval); - __Pyx_RaiseTooManyValuesError(expected); - return -1; - } else { - return __Pyx_IterFinish(); - } - return 0; -} - -/* PyObjectCall */ - #if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { - PyObject *result; - ternaryfunc call = func->ob_type->tp_call; - if (unlikely(!call)) - return PyObject_Call(func, arg, kw); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = (*call)(func, arg, kw); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyCFunctionFastCall */ - #if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { - PyCFunctionObject *func = (PyCFunctionObject*)func_obj; - PyCFunction meth = PyCFunction_GET_FUNCTION(func); - PyObject *self = PyCFunction_GET_SELF(func); - int flags = PyCFunction_GET_FLAGS(func); - assert(PyCFunction_Check(func)); - assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))); - assert(nargs >= 0); - assert(nargs == 0 || args != NULL); - /* _PyCFunction_FastCallDict() must not be called with an exception set, - because it may clear it (directly or indirectly) and so the - caller loses its exception */ - assert(!PyErr_Occurred()); - if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { - return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL); - } else { - return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs); - } -} -#endif - -/* PyFunctionFastCall */ - #if CYTHON_FAST_PYCALL -#include "frameobject.h" -static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, - PyObject *globals) { - PyFrameObject *f; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject **fastlocals; - Py_ssize_t i; - PyObject *result; - assert(globals != NULL); - /* XXX Perhaps we should create a specialized - PyFrame_New() that doesn't take locals, but does - take builtins without sanity checking them. - */ - assert(tstate != NULL); - f = PyFrame_New(tstate, co, globals, NULL); - if (f == NULL) { - return NULL; - } - fastlocals = f->f_localsplus; - for (i = 0; i < na; i++) { - Py_INCREF(*args); - fastlocals[i] = *args++; - } - result = PyEval_EvalFrameEx(f,0); - ++tstate->recursion_depth; - Py_DECREF(f); - --tstate->recursion_depth; - return result; -} -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs) { - PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); - PyObject *globals = PyFunction_GET_GLOBALS(func); - PyObject *argdefs = PyFunction_GET_DEFAULTS(func); - PyObject *closure; -#if PY_MAJOR_VERSION >= 3 - PyObject *kwdefs; -#endif - PyObject *kwtuple, **k; - PyObject **d; - Py_ssize_t nd; - Py_ssize_t nk; - PyObject *result; - assert(kwargs == NULL || PyDict_Check(kwargs)); - nk = kwargs ? PyDict_Size(kwargs) : 0; - if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { - return NULL; - } - if ( -#if PY_MAJOR_VERSION >= 3 - co->co_kwonlyargcount == 0 && -#endif - likely(kwargs == NULL || nk == 0) && - co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { - if (argdefs == NULL && co->co_argcount == nargs) { - result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); - goto done; - } - else if (nargs == 0 && argdefs != NULL - && co->co_argcount == Py_SIZE(argdefs)) { - /* function called with no arguments, but all parameters have - a default value: use default values as arguments .*/ - args = &PyTuple_GET_ITEM(argdefs, 0); - result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); - goto done; - } - } - if (kwargs != NULL) { - Py_ssize_t pos, i; - kwtuple = PyTuple_New(2 * nk); - if (kwtuple == NULL) { - result = NULL; - goto done; - } - k = &PyTuple_GET_ITEM(kwtuple, 0); - pos = i = 0; - while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { - Py_INCREF(k[i]); - Py_INCREF(k[i+1]); - i += 2; - } - nk = i / 2; - } - else { - kwtuple = NULL; - k = NULL; - } - closure = PyFunction_GET_CLOSURE(func); -#if PY_MAJOR_VERSION >= 3 - kwdefs = PyFunction_GET_KW_DEFAULTS(func); -#endif - if (argdefs != NULL) { - d = &PyTuple_GET_ITEM(argdefs, 0); - nd = Py_SIZE(argdefs); - } - else { - d = NULL; - nd = 0; - } -#if PY_MAJOR_VERSION >= 3 - result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, - args, nargs, - k, (int)nk, - d, (int)nd, kwdefs, closure); -#else - result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, - args, nargs, - k, (int)nk, - d, (int)nd, closure); -#endif - Py_XDECREF(kwtuple); -done: - Py_LeaveRecursiveCall(); - return result; -} -#endif -#endif - -/* PyObjectCallMethO */ - #if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { - PyObject *self, *result; - PyCFunction cfunc; - cfunc = PyCFunction_GET_FUNCTION(func); - self = PyCFunction_GET_SELF(func); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = cfunc(self, arg); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCallOneArg */ - #if CYTHON_COMPILING_IN_CPYTHON -static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_New(1); - if (unlikely(!args)) return NULL; - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 0, arg); - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, &arg, 1); - } -#endif - if (likely(PyCFunction_Check(func))) { - if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { - return __Pyx_PyObject_CallMethO(func, arg); -#if CYTHON_FAST_PYCCALL - } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { - return __Pyx_PyCFunction_FastCall(func, &arg, 1); -#endif - } - } - return __Pyx__PyObject_CallOneArg(func, arg); -} -#else -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_Pack(1, arg); - if (unlikely(!args)) return NULL; - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -#endif - -/* PyObjectCallNoArg */ - #if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, NULL, 0); - } -#endif -#ifdef __Pyx_CyFunction_USED - if (likely(PyCFunction_Check(func) || __Pyx_TypeCheck(func, __pyx_CyFunctionType))) { -#else - if (likely(PyCFunction_Check(func))) { -#endif - if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { - return __Pyx_PyObject_CallMethO(func, NULL); - } - } - return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL); -} -#endif - -/* GetItemInt */ - static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { - PyObject *r; - if (!j) return NULL; - r = PyObject_GetItem(o, j); - Py_DECREF(j); - return r; -} -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - Py_ssize_t wrapped_i = i; - if (wraparound & unlikely(i < 0)) { - wrapped_i += PyList_GET_SIZE(o); - } - if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyList_GET_SIZE(o)))) { - PyObject *r = PyList_GET_ITEM(o, wrapped_i); - Py_INCREF(r); - return r; - } - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -#else - return PySequence_GetItem(o, i); -#endif -} -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - Py_ssize_t wrapped_i = i; - if (wraparound & unlikely(i < 0)) { - wrapped_i += PyTuple_GET_SIZE(o); - } - if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyTuple_GET_SIZE(o)))) { - PyObject *r = PyTuple_GET_ITEM(o, wrapped_i); - Py_INCREF(r); - return r; - } - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -#else - return PySequence_GetItem(o, i); -#endif -} -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS - if (is_list || PyList_CheckExact(o)) { - Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); - if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) { - PyObject *r = PyList_GET_ITEM(o, n); - Py_INCREF(r); - return r; - } - } - else if (PyTuple_CheckExact(o)) { - Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); - if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) { - PyObject *r = PyTuple_GET_ITEM(o, n); - Py_INCREF(r); - return r; - } - } else { - PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; - if (likely(m && m->sq_item)) { - if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { - Py_ssize_t l = m->sq_length(o); - if (likely(l >= 0)) { - i += l; - } else { - if (!PyErr_ExceptionMatches(PyExc_OverflowError)) - return NULL; - PyErr_Clear(); - } - } - return m->sq_item(o, i); - } - } -#else - if (is_list || PySequence_Check(o)) { - return PySequence_GetItem(o, i); - } -#endif - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -} - -/* ObjectGetItem */ - #if CYTHON_USE_TYPE_SLOTS -static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) { - PyObject *runerr; - Py_ssize_t key_value; - PySequenceMethods *m = Py_TYPE(obj)->tp_as_sequence; - if (unlikely(!(m && m->sq_item))) { - PyErr_Format(PyExc_TypeError, "'%.200s' object is not subscriptable", Py_TYPE(obj)->tp_name); - return NULL; - } - key_value = __Pyx_PyIndex_AsSsize_t(index); - if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) { - return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1); - } - if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) { - PyErr_Clear(); - PyErr_Format(PyExc_IndexError, "cannot fit '%.200s' into an index-sized integer", Py_TYPE(index)->tp_name); - } - return NULL; -} -static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) { - PyMappingMethods *m = Py_TYPE(obj)->tp_as_mapping; - if (likely(m && m->mp_subscript)) { - return m->mp_subscript(obj, key); - } - return __Pyx_PyObject_GetIndex(obj, key); -} -#endif - -/* SaveResetException */ - #if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - #if PY_VERSION_HEX >= 0x030700A3 - *type = tstate->exc_state.exc_type; - *value = tstate->exc_state.exc_value; - *tb = tstate->exc_state.exc_traceback; - #else - *type = tstate->exc_type; - *value = tstate->exc_value; - *tb = tstate->exc_traceback; - #endif - Py_XINCREF(*type); - Py_XINCREF(*value); - Py_XINCREF(*tb); -} -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - #if PY_VERSION_HEX >= 0x030700A3 - tmp_type = tstate->exc_state.exc_type; - tmp_value = tstate->exc_state.exc_value; - tmp_tb = tstate->exc_state.exc_traceback; - tstate->exc_state.exc_type = type; - tstate->exc_state.exc_value = value; - tstate->exc_state.exc_traceback = tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = type; - tstate->exc_value = value; - tstate->exc_traceback = tb; - #endif - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} -#endif - -/* PyErrExceptionMatches */ - #if CYTHON_FAST_THREAD_STATE -static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; i<n; i++) { - if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1; - } -#endif - for (i=0; i<n; i++) { - if (__Pyx_PyErr_GivenExceptionMatches(exc_type, PyTuple_GET_ITEM(tuple, i))) return 1; - } - return 0; -} -static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) { - PyObject *exc_type = tstate->curexc_type; - if (exc_type == err) return 1; - if (unlikely(!exc_type)) return 0; - if (unlikely(PyTuple_Check(err))) - return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); - return __Pyx_PyErr_GivenExceptionMatches(exc_type, err); -} -#endif - -/* GetException */ - #if CYTHON_FAST_THREAD_STATE -static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { -#else -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) { -#endif - PyObject *local_type, *local_value, *local_tb; -#if CYTHON_FAST_THREAD_STATE - PyObject *tmp_type, *tmp_value, *tmp_tb; - local_type = tstate->curexc_type; - local_value = tstate->curexc_value; - local_tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -#else - PyErr_Fetch(&local_type, &local_value, &local_tb); -#endif - PyErr_NormalizeException(&local_type, &local_value, &local_tb); -#if CYTHON_FAST_THREAD_STATE - if (unlikely(tstate->curexc_type)) -#else - if (unlikely(PyErr_Occurred())) -#endif - goto bad; - #if PY_MAJOR_VERSION >= 3 - if (local_tb) { - if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) - goto bad; - } - #endif - Py_XINCREF(local_tb); - Py_XINCREF(local_type); - Py_XINCREF(local_value); - *type = local_type; - *value = local_value; - *tb = local_tb; -#if CYTHON_FAST_THREAD_STATE - #if PY_VERSION_HEX >= 0x030700A3 - tmp_type = tstate->exc_state.exc_type; - tmp_value = tstate->exc_state.exc_value; - tmp_tb = tstate->exc_state.exc_traceback; - tstate->exc_state.exc_type = local_type; - tstate->exc_state.exc_value = local_value; - tstate->exc_state.exc_traceback = local_tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = local_type; - tstate->exc_value = local_value; - tstate->exc_traceback = local_tb; - #endif - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -#else - PyErr_SetExcInfo(local_type, local_value, local_tb); -#endif - return 0; -bad: - *type = 0; - *value = 0; - *tb = 0; - Py_XDECREF(local_type); - Py_XDECREF(local_value); - Py_XDECREF(local_tb); - return -1; -} - -/* StringJoin */ - #if !CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyBytes_Join(PyObject* sep, PyObject* values) { - return PyObject_CallMethodObjArgs(sep, __pyx_n_s_join, values, NULL); -} -#endif - -/* PyErrFetchRestore */ - #if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - tmp_type = tstate->curexc_type; - tmp_value = tstate->curexc_value; - tmp_tb = tstate->curexc_traceback; - tstate->curexc_type = type; - tstate->curexc_value = value; - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - *type = tstate->curexc_type; - *value = tstate->curexc_value; - *tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -} -#endif - -/* RaiseException */ - #if PY_MAJOR_VERSION < 3 -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, - CYTHON_UNUSED PyObject *cause) { - __Pyx_PyThreadState_declare - Py_XINCREF(type); - if (!value || value == Py_None) - value = NULL; - else - Py_INCREF(value); - if (!tb || tb == Py_None) - tb = NULL; - else { - Py_INCREF(tb); - if (!PyTraceBack_Check(tb)) { - PyErr_SetString(PyExc_TypeError, - "raise: arg 3 must be a traceback or None"); - goto raise_error; - } - } - if (PyType_Check(type)) { -#if CYTHON_COMPILING_IN_PYPY - if (!value) { - Py_INCREF(Py_None); - value = Py_None; - } -#endif - PyErr_NormalizeException(&type, &value, &tb); - } else { - if (value) { - PyErr_SetString(PyExc_TypeError, - "instance exception may not have a separate value"); - goto raise_error; - } - value = type; - type = (PyObject*) Py_TYPE(type); - Py_INCREF(type); - if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { - PyErr_SetString(PyExc_TypeError, - "raise: exception class must be a subclass of BaseException"); - goto raise_error; - } - } - __Pyx_PyThreadState_assign - __Pyx_ErrRestore(type, value, tb); - return; -raise_error: - Py_XDECREF(value); - Py_XDECREF(type); - Py_XDECREF(tb); - return; -} -#else -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { - PyObject* owned_instance = NULL; - if (tb == Py_None) { - tb = 0; - } else if (tb && !PyTraceBack_Check(tb)) { - PyErr_SetString(PyExc_TypeError, - "raise: arg 3 must be a traceback or None"); - goto bad; - } - if (value == Py_None) - value = 0; - if (PyExceptionInstance_Check(type)) { - if (value) { - PyErr_SetString(PyExc_TypeError, - "instance exception may not have a separate value"); - goto bad; - } - value = type; - type = (PyObject*) Py_TYPE(value); - } else if (PyExceptionClass_Check(type)) { - PyObject *instance_class = NULL; - if (value && PyExceptionInstance_Check(value)) { - instance_class = (PyObject*) Py_TYPE(value); - if (instance_class != type) { - int is_subclass = PyObject_IsSubclass(instance_class, type); - if (!is_subclass) { - instance_class = NULL; - } else if (unlikely(is_subclass == -1)) { - goto bad; - } else { - type = instance_class; - } - } - } - if (!instance_class) { - PyObject *args; - if (!value) - args = PyTuple_New(0); - else if (PyTuple_Check(value)) { - Py_INCREF(value); - args = value; - } else - args = PyTuple_Pack(1, value); - if (!args) - goto bad; - owned_instance = PyObject_Call(type, args, NULL); - Py_DECREF(args); - if (!owned_instance) - goto bad; - value = owned_instance; - if (!PyExceptionInstance_Check(value)) { - PyErr_Format(PyExc_TypeError, - "calling %R should have returned an instance of " - "BaseException, not %R", - type, Py_TYPE(value)); - goto bad; - } - } - } else { - PyErr_SetString(PyExc_TypeError, - "raise: exception class must be a subclass of BaseException"); - goto bad; - } - if (cause) { - PyObject *fixed_cause; - if (cause == Py_None) { - fixed_cause = NULL; - } else if (PyExceptionClass_Check(cause)) { - fixed_cause = PyObject_CallObject(cause, NULL); - if (fixed_cause == NULL) - goto bad; - } else if (PyExceptionInstance_Check(cause)) { - fixed_cause = cause; - Py_INCREF(fixed_cause); - } else { - PyErr_SetString(PyExc_TypeError, - "exception causes must derive from " - "BaseException"); - goto bad; - } - PyException_SetCause(value, fixed_cause); - } - PyErr_SetObject(type, value); - if (tb) { -#if CYTHON_COMPILING_IN_PYPY - PyObject *tmp_type, *tmp_value, *tmp_tb; - PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); - Py_INCREF(tb); - PyErr_Restore(tmp_type, tmp_value, tb); - Py_XDECREF(tmp_tb); -#else - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject* tmp_tb = tstate->curexc_traceback; - if (tb != tmp_tb) { - Py_INCREF(tb); - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_tb); - } -#endif - } -bad: - Py_XDECREF(owned_instance); - return; -} -#endif - -/* RaiseArgTupleInvalid */ - static void __Pyx_RaiseArgtupleInvalid( - const char* func_name, - int exact, - Py_ssize_t num_min, - Py_ssize_t num_max, - Py_ssize_t num_found) -{ - Py_ssize_t num_expected; - const char *more_or_less; - if (num_found < num_min) { - num_expected = num_min; - more_or_less = "at least"; - } else { - num_expected = num_max; - more_or_less = "at most"; - } - if (exact) { - more_or_less = "exactly"; - } - PyErr_Format(PyExc_TypeError, - "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", - func_name, more_or_less, num_expected, - (num_expected == 1) ? "" : "s", num_found); -} - -/* RaiseDoubleKeywords */ - static void __Pyx_RaiseDoubleKeywordsError( - const char* func_name, - PyObject* kw_name) -{ - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION >= 3 - "%s() got multiple values for keyword argument '%U'", func_name, kw_name); - #else - "%s() got multiple values for keyword argument '%s'", func_name, - PyString_AsString(kw_name)); - #endif -} - -/* ParseKeywords */ - static int __Pyx_ParseOptionalKeywords( - PyObject *kwds, - PyObject **argnames[], - PyObject *kwds2, - PyObject *values[], - Py_ssize_t num_pos_args, - const char* function_name) -{ - PyObject *key = 0, *value = 0; - Py_ssize_t pos = 0; - PyObject*** name; - PyObject*** first_kw_arg = argnames + num_pos_args; - while (PyDict_Next(kwds, &pos, &key, &value)) { - name = first_kw_arg; - while (*name && (**name != key)) name++; - if (*name) { - values[name-argnames] = value; - continue; - } - name = first_kw_arg; - #if PY_MAJOR_VERSION < 3 - if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) { - while (*name) { - if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) - && _PyString_Eq(**name, key)) { - values[name-argnames] = value; - break; - } - name++; - } - if (*name) continue; - else { - PyObject*** argname = argnames; - while (argname != first_kw_arg) { - if ((**argname == key) || ( - (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) - && _PyString_Eq(**argname, key))) { - goto arg_passed_twice; - } - argname++; - } - } - } else - #endif - if (likely(PyUnicode_Check(key))) { - while (*name) { - int cmp = (**name == key) ? 0 : - #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 : - #endif - PyUnicode_Compare(**name, key); - if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; - if (cmp == 0) { - values[name-argnames] = value; - break; - } - name++; - } - if (*name) continue; - else { - PyObject*** argname = argnames; - while (argname != first_kw_arg) { - int cmp = (**argname == key) ? 0 : - #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 : - #endif - PyUnicode_Compare(**argname, key); - if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; - if (cmp == 0) goto arg_passed_twice; - argname++; - } - } - } else - goto invalid_keyword_type; - if (kwds2) { - if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; - } else { - goto invalid_keyword; - } - } - return 0; -arg_passed_twice: - __Pyx_RaiseDoubleKeywordsError(function_name, key); - goto bad; -invalid_keyword_type: - PyErr_Format(PyExc_TypeError, - "%.200s() keywords must be strings", function_name); - goto bad; -invalid_keyword: - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION < 3 - "%.200s() got an unexpected keyword argument '%.200s'", - function_name, PyString_AsString(key)); - #else - "%s() got an unexpected keyword argument '%U'", - function_name, key); - #endif -bad: - return -1; -} - -/* SwapException */ - #if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - #if PY_VERSION_HEX >= 0x030700A3 - tmp_type = tstate->exc_state.exc_type; - tmp_value = tstate->exc_state.exc_value; - tmp_tb = tstate->exc_state.exc_traceback; - tstate->exc_state.exc_type = *type; - tstate->exc_state.exc_value = *value; - tstate->exc_state.exc_traceback = *tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = *type; - tstate->exc_value = *value; - tstate->exc_traceback = *tb; - #endif - *type = tmp_type; - *value = tmp_value; - *tb = tmp_tb; -} -#else -static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); - PyErr_SetExcInfo(*type, *value, *tb); - *type = tmp_type; - *value = tmp_value; - *tb = tmp_tb; -} -#endif - -/* KeywordStringCheck */ - static int __Pyx_CheckKeywordStrings( - PyObject *kwdict, - const char* function_name, - int kw_allowed) -{ - PyObject* key = 0; - Py_ssize_t pos = 0; -#if CYTHON_COMPILING_IN_PYPY - if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0)) - goto invalid_keyword; - return 1; -#else - while (PyDict_Next(kwdict, &pos, &key, 0)) { - #if PY_MAJOR_VERSION < 3 - if (unlikely(!PyString_Check(key))) - #endif - if (unlikely(!PyUnicode_Check(key))) - goto invalid_keyword_type; - } - if ((!kw_allowed) && unlikely(key)) - goto invalid_keyword; - return 1; -invalid_keyword_type: - PyErr_Format(PyExc_TypeError, - "%.200s() keywords must be strings", function_name); - return 0; -#endif -invalid_keyword: - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION < 3 - "%.200s() got an unexpected keyword argument '%.200s'", - function_name, PyString_AsString(key)); - #else - "%s() got an unexpected keyword argument '%U'", - function_name, key); - #endif - return 0; -} - -/* WriteUnraisableException */ - static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, - CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename, - int full_traceback, CYTHON_UNUSED int nogil) { - PyObject *old_exc, *old_val, *old_tb; - PyObject *ctx; - __Pyx_PyThreadState_declare -#ifdef WITH_THREAD - PyGILState_STATE state; - if (nogil) - state = PyGILState_Ensure(); -#ifdef _MSC_VER - else state = (PyGILState_STATE)-1; -#endif -#endif - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&old_exc, &old_val, &old_tb); - if (full_traceback) { - Py_XINCREF(old_exc); - Py_XINCREF(old_val); - Py_XINCREF(old_tb); - __Pyx_ErrRestore(old_exc, old_val, old_tb); - PyErr_PrintEx(1); - } - #if PY_MAJOR_VERSION < 3 - ctx = PyString_FromString(name); - #else - ctx = PyUnicode_FromString(name); - #endif - __Pyx_ErrRestore(old_exc, old_val, old_tb); - if (!ctx) { - PyErr_WriteUnraisable(Py_None); - } else { - PyErr_WriteUnraisable(ctx); - Py_DECREF(ctx); - } -#ifdef WITH_THREAD - if (nogil) - PyGILState_Release(state); -#endif -} - -/* BytesEquals */ - static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { -#if CYTHON_COMPILING_IN_PYPY - return PyObject_RichCompareBool(s1, s2, equals); -#else - if (s1 == s2) { - return (equals == Py_EQ); - } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) { - const char *ps1, *ps2; - Py_ssize_t length = PyBytes_GET_SIZE(s1); - if (length != PyBytes_GET_SIZE(s2)) - return (equals == Py_NE); - ps1 = PyBytes_AS_STRING(s1); - ps2 = PyBytes_AS_STRING(s2); - if (ps1[0] != ps2[0]) { - return (equals == Py_NE); - } else if (length == 1) { - return (equals == Py_EQ); - } else { - int result; -#if CYTHON_USE_UNICODE_INTERNALS - Py_hash_t hash1, hash2; - hash1 = ((PyBytesObject*)s1)->ob_shash; - hash2 = ((PyBytesObject*)s2)->ob_shash; - if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { - return (equals == Py_NE); - } -#endif - result = memcmp(ps1, ps2, (size_t)length); - return (equals == Py_EQ) ? (result == 0) : (result != 0); - } - } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) { - return (equals == Py_NE); - } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) { - return (equals == Py_NE); - } else { - int result; - PyObject* py_result = PyObject_RichCompare(s1, s2, equals); - if (!py_result) - return -1; - result = __Pyx_PyObject_IsTrue(py_result); - Py_DECREF(py_result); - return result; - } -#endif -} - -/* UnicodeEquals */ - static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { -#if CYTHON_COMPILING_IN_PYPY - return PyObject_RichCompareBool(s1, s2, equals); -#else -#if PY_MAJOR_VERSION < 3 - PyObject* owned_ref = NULL; -#endif - int s1_is_unicode, s2_is_unicode; - if (s1 == s2) { - goto return_eq; - } - s1_is_unicode = PyUnicode_CheckExact(s1); - s2_is_unicode = PyUnicode_CheckExact(s2); -#if PY_MAJOR_VERSION < 3 - if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) { - owned_ref = PyUnicode_FromObject(s2); - if (unlikely(!owned_ref)) - return -1; - s2 = owned_ref; - s2_is_unicode = 1; - } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) { - owned_ref = PyUnicode_FromObject(s1); - if (unlikely(!owned_ref)) - return -1; - s1 = owned_ref; - s1_is_unicode = 1; - } else if (((!s2_is_unicode) & (!s1_is_unicode))) { - return __Pyx_PyBytes_Equals(s1, s2, equals); - } -#endif - if (s1_is_unicode & s2_is_unicode) { - Py_ssize_t length; - int kind; - void *data1, *data2; - if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0)) - return -1; - length = __Pyx_PyUnicode_GET_LENGTH(s1); - if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) { - goto return_ne; - } -#if CYTHON_USE_UNICODE_INTERNALS - { - Py_hash_t hash1, hash2; - #if CYTHON_PEP393_ENABLED - hash1 = ((PyASCIIObject*)s1)->hash; - hash2 = ((PyASCIIObject*)s2)->hash; - #else - hash1 = ((PyUnicodeObject*)s1)->hash; - hash2 = ((PyUnicodeObject*)s2)->hash; - #endif - if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { - goto return_ne; - } - } -#endif - kind = __Pyx_PyUnicode_KIND(s1); - if (kind != __Pyx_PyUnicode_KIND(s2)) { - goto return_ne; - } - data1 = __Pyx_PyUnicode_DATA(s1); - data2 = __Pyx_PyUnicode_DATA(s2); - if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) { - goto return_ne; - } else if (length == 1) { - goto return_eq; - } else { - int result = memcmp(data1, data2, (size_t)(length * kind)); - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(owned_ref); - #endif - return (equals == Py_EQ) ? (result == 0) : (result != 0); - } - } else if ((s1 == Py_None) & s2_is_unicode) { - goto return_ne; - } else if ((s2 == Py_None) & s1_is_unicode) { - goto return_ne; - } else { - int result; - PyObject* py_result = PyObject_RichCompare(s1, s2, equals); - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(owned_ref); - #endif - if (!py_result) - return -1; - result = __Pyx_PyObject_IsTrue(py_result); - Py_DECREF(py_result); - return result; - } -return_eq: - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(owned_ref); - #endif - return (equals == Py_EQ); -return_ne: - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(owned_ref); - #endif - return (equals == Py_NE); -#endif -} - -/* GetAttr */ - static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) { -#if CYTHON_USE_TYPE_SLOTS -#if PY_MAJOR_VERSION >= 3 - if (likely(PyUnicode_Check(n))) -#else - if (likely(PyString_Check(n))) -#endif - return __Pyx_PyObject_GetAttrStr(o, n); -#endif - return PyObject_GetAttr(o, n); -} - -/* GetAttr3 */ - static PyObject *__Pyx_GetAttr3Default(PyObject *d) { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) - return NULL; - __Pyx_PyErr_Clear(); - Py_INCREF(d); - return d; -} -static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) { - PyObject *r = __Pyx_GetAttr(o, n); - return (likely(r)) ? r : __Pyx_GetAttr3Default(d); -} - -/* ArgTypeTest */ - static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact) -{ - if (unlikely(!type)) { - PyErr_SetString(PyExc_SystemError, "Missing type object"); - return 0; - } - else if (exact) { - #if PY_MAJOR_VERSION == 2 - if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1; - #endif - } - else { - if (likely(__Pyx_TypeCheck(obj, type))) return 1; - } - PyErr_Format(PyExc_TypeError, - "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)", - name, type->tp_name, Py_TYPE(obj)->tp_name); - return 0; -} - -/* ExtTypeTest */ - static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { - if (unlikely(!type)) { - PyErr_SetString(PyExc_SystemError, "Missing type object"); - return 0; - } - if (likely(__Pyx_TypeCheck(obj, type))) - return 1; - PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s", - Py_TYPE(obj)->tp_name, type->tp_name); - return 0; -} - -/* PyObjectSetAttrStr */ - #if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_setattro)) - return tp->tp_setattro(obj, attr_name, value); -#if PY_MAJOR_VERSION < 3 - if (likely(tp->tp_setattr)) - return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value); -#endif - return PyObject_SetAttr(obj, attr_name, value); -} -#endif - -/* PyObject_GenericGetAttrNoDict */ - #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { - PyErr_Format(PyExc_AttributeError, -#if PY_MAJOR_VERSION >= 3 - "'%.50s' object has no attribute '%U'", - tp->tp_name, attr_name); -#else - "'%.50s' object has no attribute '%.400s'", - tp->tp_name, PyString_AS_STRING(attr_name)); -#endif - return NULL; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { - PyObject *descr; - PyTypeObject *tp = Py_TYPE(obj); - if (unlikely(!PyString_Check(attr_name))) { - return PyObject_GenericGetAttr(obj, attr_name); - } - assert(!tp->tp_dictoffset); - descr = _PyType_Lookup(tp, attr_name); - if (unlikely(!descr)) { - return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); - } - Py_INCREF(descr); - #if PY_MAJOR_VERSION < 3 - if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) - #endif - { - descrgetfunc f = Py_TYPE(descr)->tp_descr_get; - if (unlikely(f)) { - PyObject *res = f(descr, obj, (PyObject *)tp); - Py_DECREF(descr); - return res; - } - } - return descr; -} -#endif - -/* PyObject_GenericGetAttr */ - #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) { - if (unlikely(Py_TYPE(obj)->tp_dictoffset)) { - return PyObject_GenericGetAttr(obj, attr_name); - } - return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name); -} -#endif - -/* SetVTable */ - static int __Pyx_SetVtable(PyObject *dict, void *vtable) { -#if PY_VERSION_HEX >= 0x02070000 - PyObject *ob = PyCapsule_New(vtable, 0, 0); -#else - PyObject *ob = PyCObject_FromVoidPtr(vtable, 0); -#endif - if (!ob) - goto bad; - if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0) - goto bad; - Py_DECREF(ob); - return 0; -bad: - Py_XDECREF(ob); - return -1; -} - -/* GetNameInClass */ - static PyObject *__Pyx_GetGlobalNameAfterAttributeLookup(PyObject *name) { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) - return NULL; - __Pyx_PyErr_Clear(); - return __Pyx_GetModuleGlobalName(name); -} -static PyObject *__Pyx_GetNameInClass(PyObject *nmspace, PyObject *name) { - PyObject *result; - result = __Pyx_PyObject_GetAttrStr(nmspace, name); - if (!result) { - result = __Pyx_GetGlobalNameAfterAttributeLookup(name); - } - return result; -} - -/* CLineInTraceback */ - #ifndef CYTHON_CLINE_IN_TRACEBACK -static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) { - PyObject *use_cline; - PyObject *ptype, *pvalue, *ptraceback; -#if CYTHON_COMPILING_IN_CPYTHON - PyObject **cython_runtime_dict; -#endif - if (unlikely(!__pyx_cython_runtime)) { - return c_line; - } - __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); -#if CYTHON_COMPILING_IN_CPYTHON - cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); - if (likely(cython_runtime_dict)) { - use_cline = __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback); - } else -#endif - { - PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); - if (use_cline_obj) { - use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; - Py_DECREF(use_cline_obj); - } else { - PyErr_Clear(); - use_cline = NULL; - } - } - if (!use_cline) { - c_line = 0; - PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); - } - else if (PyObject_Not(use_cline) != 0) { - c_line = 0; - } - __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); - return c_line; -} -#endif - -/* CodeObjectCache */ - static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { - int start = 0, mid = 0, end = count - 1; - if (end >= 0 && code_line > entries[end].code_line) { - return count; - } - while (start < end) { - mid = start + (end - start) / 2; - if (code_line < entries[mid].code_line) { - end = mid; - } else if (code_line > entries[mid].code_line) { - start = mid + 1; - } else { - return mid; - } - } - if (code_line <= entries[mid].code_line) { - return mid; - } else { - return mid + 1; - } -} -static PyCodeObject *__pyx_find_code_object(int code_line) { - PyCodeObject* code_object; - int pos; - if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { - return NULL; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { - return NULL; - } - code_object = __pyx_code_cache.entries[pos].code_object; - Py_INCREF(code_object); - return code_object; -} -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { - int pos, i; - __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; - if (unlikely(!code_line)) { - return; - } - if (unlikely(!entries)) { - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); - if (likely(entries)) { - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = 64; - __pyx_code_cache.count = 1; - entries[0].code_line = code_line; - entries[0].code_object = code_object; - Py_INCREF(code_object); - } - return; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { - PyCodeObject* tmp = entries[pos].code_object; - entries[pos].code_object = code_object; - Py_DECREF(tmp); - return; - } - if (__pyx_code_cache.count == __pyx_code_cache.max_count) { - int new_max = __pyx_code_cache.max_count + 64; - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( - __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry)); - if (unlikely(!entries)) { - return; - } - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = new_max; - } - for (i=__pyx_code_cache.count; i>pos; i--) { - entries[i] = entries[i-1]; - } - entries[pos].code_line = code_line; - entries[pos].code_object = code_object; - __pyx_code_cache.count++; - Py_INCREF(code_object); -} - -/* AddTraceback */ - #include "compile.h" -#include "frameobject.h" -#include "traceback.h" -static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( - const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyObject *py_srcfile = 0; - PyObject *py_funcname = 0; - #if PY_MAJOR_VERSION < 3 - py_srcfile = PyString_FromString(filename); - #else - py_srcfile = PyUnicode_FromString(filename); - #endif - if (!py_srcfile) goto bad; - if (c_line) { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #else - py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #endif - } - else { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromString(funcname); - #else - py_funcname = PyUnicode_FromString(funcname); - #endif - } - if (!py_funcname) goto bad; - py_code = __Pyx_PyCode_New( - 0, - 0, - 0, - 0, - 0, - __pyx_empty_bytes, /*PyObject *code,*/ - __pyx_empty_tuple, /*PyObject *consts,*/ - __pyx_empty_tuple, /*PyObject *names,*/ - __pyx_empty_tuple, /*PyObject *varnames,*/ - __pyx_empty_tuple, /*PyObject *freevars,*/ - __pyx_empty_tuple, /*PyObject *cellvars,*/ - py_srcfile, /*PyObject *filename,*/ - py_funcname, /*PyObject *name,*/ - py_line, - __pyx_empty_bytes /*PyObject *lnotab*/ - ); - Py_DECREF(py_srcfile); - Py_DECREF(py_funcname); - return py_code; -bad: - Py_XDECREF(py_srcfile); - Py_XDECREF(py_funcname); - return NULL; -} -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyFrameObject *py_frame = 0; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - if (c_line) { - c_line = __Pyx_CLineForTraceback(tstate, c_line); - } - py_code = __pyx_find_code_object(c_line ? -c_line : py_line); - if (!py_code) { - py_code = __Pyx_CreateCodeObjectForTraceback( - funcname, c_line, py_line, filename); - if (!py_code) goto bad; - __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); - } - py_frame = PyFrame_New( - tstate, /*PyThreadState *tstate,*/ - py_code, /*PyCodeObject *code,*/ - __pyx_d, /*PyObject *globals,*/ - 0 /*PyObject *locals*/ - ); - if (!py_frame) goto bad; - __Pyx_PyFrame_SetLineNumber(py_frame, py_line); - PyTraceBack_Here(py_frame); -bad: - Py_XDECREF(py_code); - Py_XDECREF(py_frame); -} - -/* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { - const long neg_one = (long) -1, const_zero = (long) 0; - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(long) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(long) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -#endif - } - } else { - if (sizeof(long) <= sizeof(long)) { - return PyInt_FromLong((long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); -#endif - } - } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; - return _PyLong_FromByteArray(bytes, sizeof(long), - little, !is_unsigned); - } -} - -/* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { - const int neg_one = (int) -1, const_zero = (int) 0; - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(int) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(int) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -#endif - } - } else { - if (sizeof(int) <= sizeof(long)) { - return PyInt_FromLong((long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); -#endif - } - } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; - return _PyLong_FromByteArray(bytes, sizeof(int), - little, !is_unsigned); - } -} - -/* CIntFromPyVerify */ - #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) -#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) -#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ - {\ - func_type value = func_value;\ - if (sizeof(target_type) < sizeof(func_type)) {\ - if (unlikely(value != (func_type) (target_type) value)) {\ - func_type zero = 0;\ - if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ - return (target_type) -1;\ - if (is_unsigned && unlikely(value < zero))\ - goto raise_neg_overflow;\ - else\ - goto raise_overflow;\ - }\ - }\ - return (target_type) value;\ - } - -/* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_int(unsigned int value) { - const unsigned int neg_one = (unsigned int) -1, const_zero = (unsigned int) 0; - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(unsigned int) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(unsigned int) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(unsigned int) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -#endif - } - } else { - if (sizeof(unsigned int) <= sizeof(long)) { - return PyInt_FromLong((long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(unsigned int) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); -#endif - } - } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; - return _PyLong_FromByteArray(bytes, sizeof(unsigned int), - little, !is_unsigned); - } -} - -/* CIntFromPy */ - static CYTHON_INLINE unsigned int __Pyx_PyInt_As_unsigned_int(PyObject *x) { - const unsigned int neg_one = (unsigned int) -1, const_zero = (unsigned int) 0; - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(unsigned int) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(unsigned int, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (unsigned int) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (unsigned int) 0; - case 1: __PYX_VERIFY_RETURN_INT(unsigned int, digit, digits[0]) - case 2: - if (8 * sizeof(unsigned int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(unsigned int) >= 2 * PyLong_SHIFT) { - return (unsigned int) (((((unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(unsigned int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(unsigned int) >= 3 * PyLong_SHIFT) { - return (unsigned int) (((((((unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(unsigned int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(unsigned int) >= 4 * PyLong_SHIFT) { - return (unsigned int) (((((((((unsigned int)digits[3]) << PyLong_SHIFT) | (unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (unsigned int) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(unsigned int) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(unsigned int, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(unsigned int) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(unsigned int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (unsigned int) 0; - case -1: __PYX_VERIFY_RETURN_INT(unsigned int, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(unsigned int, digit, +digits[0]) - case -2: - if (8 * sizeof(unsigned int) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(unsigned int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(unsigned int) - 1 > 2 * PyLong_SHIFT) { - return (unsigned int) (((unsigned int)-1)*(((((unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(unsigned int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(unsigned int) - 1 > 2 * PyLong_SHIFT) { - return (unsigned int) ((((((unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(unsigned int) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(unsigned int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(unsigned int) - 1 > 3 * PyLong_SHIFT) { - return (unsigned int) (((unsigned int)-1)*(((((((unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(unsigned int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(unsigned int) - 1 > 3 * PyLong_SHIFT) { - return (unsigned int) ((((((((unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(unsigned int) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(unsigned int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(unsigned int) - 1 > 4 * PyLong_SHIFT) { - return (unsigned int) (((unsigned int)-1)*(((((((((unsigned int)digits[3]) << PyLong_SHIFT) | (unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(unsigned int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(unsigned int) - 1 > 4 * PyLong_SHIFT) { - return (unsigned int) ((((((((((unsigned int)digits[3]) << PyLong_SHIFT) | (unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]))); - } - } - break; - } -#endif - if (sizeof(unsigned int) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(unsigned int, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(unsigned int) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(unsigned int, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - unsigned int val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (unsigned int) -1; - } - } else { - unsigned int val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (unsigned int) -1; - val = __Pyx_PyInt_As_unsigned_int(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to unsigned int"); - return (unsigned int) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to unsigned int"); - return (unsigned int) -1; -} - -/* CIntFromPy */ - static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { - const int neg_one = (int) -1, const_zero = (int) 0; - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(int) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (int) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (int) 0; - case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { - return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { - return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { - return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (int) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(int) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (int) 0; - case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) - case -2: - if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - } -#endif - if (sizeof(int) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - int val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (int) -1; - } - } else { - int val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (int) -1; - val = __Pyx_PyInt_As_int(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to int"); - return (int) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to int"); - return (int) -1; -} - -/* CIntFromPy */ - static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { - const long neg_one = (long) -1, const_zero = (long) 0; - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(long) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (long) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { - return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { - return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { - return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (long) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(long) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) - case -2: - if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - } -#endif - if (sizeof(long) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - long val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (long) -1; - } - } else { - long val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (long) -1; - val = __Pyx_PyInt_As_long(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to long"); - return (long) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to long"); - return (long) -1; -} - -/* FastTypeChecks */ - #if CYTHON_COMPILING_IN_CPYTHON -static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { - while (a) { - a = a->tp_base; - if (a == b) - return 1; - } - return b == &PyBaseObject_Type; -} -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { - PyObject *mro; - if (a == b) return 1; - mro = a->tp_mro; - if (likely(mro)) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(mro); - for (i = 0; i < n; i++) { - if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) - return 1; - } - return 0; - } - return __Pyx_InBases(a, b); -} -#if PY_MAJOR_VERSION == 2 -static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { - PyObject *exception, *value, *tb; - int res; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&exception, &value, &tb); - res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - if (!res) { - res = PyObject_IsSubclass(err, exc_type2); - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - } - __Pyx_ErrRestore(exception, value, tb); - return res; -} -#else -static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { - int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0; - if (!res) { - res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); - } - return res; -} -#endif -static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - assert(PyExceptionClass_Check(exc_type)); - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; i<n; i++) { - if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1; - } -#endif - for (i=0; i<n; i++) { - PyObject *t = PyTuple_GET_ITEM(tuple, i); - #if PY_MAJOR_VERSION < 3 - if (likely(exc_type == t)) return 1; - #endif - if (likely(PyExceptionClass_Check(t))) { - if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1; - } else { - } - } - return 0; -} -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) { - if (likely(err == exc_type)) return 1; - if (likely(PyExceptionClass_Check(err))) { - if (likely(PyExceptionClass_Check(exc_type))) { - return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type); - } else if (likely(PyTuple_Check(exc_type))) { - return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type); - } else { - } - } - return PyErr_GivenExceptionMatches(err, exc_type); -} -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) { - assert(PyExceptionClass_Check(exc_type1)); - assert(PyExceptionClass_Check(exc_type2)); - if (likely(err == exc_type1 || err == exc_type2)) return 1; - if (likely(PyExceptionClass_Check(err))) { - return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2); - } - return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2)); -} -#endif - -/* FetchCommonType */ - static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { - PyObject* fake_module; - PyTypeObject* cached_type = NULL; - fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI); - if (!fake_module) return NULL; - Py_INCREF(fake_module); - cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name); - if (cached_type) { - if (!PyType_Check((PyObject*)cached_type)) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s is not a type object", - type->tp_name); - goto bad; - } - if (cached_type->tp_basicsize != type->tp_basicsize) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s has the wrong size, try recompiling", - type->tp_name); - goto bad; - } - } else { - if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; - PyErr_Clear(); - if (PyType_Ready(type) < 0) goto bad; - if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0) - goto bad; - Py_INCREF(type); - cached_type = type; - } -done: - Py_DECREF(fake_module); - return cached_type; -bad: - Py_XDECREF(cached_type); - cached_type = NULL; - goto done; -} - -/* PyObjectCallMethod1 */ - static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) { - PyObject *result = NULL; -#if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(method))) { - PyObject *self = PyMethod_GET_SELF(method); - if (likely(self)) { - PyObject *args; - PyObject *function = PyMethod_GET_FUNCTION(method); - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(function)) { - PyObject *args[2] = {self, arg}; - result = __Pyx_PyFunction_FastCall(function, args, 2); - goto done; - } - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(function)) { - PyObject *args[2] = {self, arg}; - result = __Pyx_PyCFunction_FastCall(function, args, 2); - goto done; - } - #endif - args = PyTuple_New(2); - if (unlikely(!args)) goto done; - Py_INCREF(self); - PyTuple_SET_ITEM(args, 0, self); - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 1, arg); - Py_INCREF(function); - result = __Pyx_PyObject_Call(function, args, NULL); - Py_DECREF(args); - Py_DECREF(function); - return result; - } - } -#endif - result = __Pyx_PyObject_CallOneArg(method, arg); - goto done; -done: - return result; -} -static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { - PyObject *method, *result; - method = __Pyx_PyObject_GetAttrStr(obj, method_name); - if (unlikely(!method)) return NULL; - result = __Pyx__PyObject_CallMethod1(method, arg); - Py_DECREF(method); - return result; -} - -/* CoroutineBase */ - #include <structmember.h> -#include <frameobject.h> -#define __Pyx_Coroutine_Undelegate(gen) Py_CLEAR((gen)->yieldfrom) -static int __Pyx_PyGen__FetchStopIterationValue(CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject **pvalue) { - PyObject *et, *ev, *tb; - PyObject *value = NULL; - __Pyx_ErrFetch(&et, &ev, &tb); - if (!et) { - Py_XDECREF(tb); - Py_XDECREF(ev); - Py_INCREF(Py_None); - *pvalue = Py_None; - return 0; - } - if (likely(et == PyExc_StopIteration)) { - if (!ev) { - Py_INCREF(Py_None); - value = Py_None; - } -#if PY_VERSION_HEX >= 0x030300A0 - else if (Py_TYPE(ev) == (PyTypeObject*)PyExc_StopIteration) { - value = ((PyStopIterationObject *)ev)->value; - Py_INCREF(value); - Py_DECREF(ev); - } -#endif - else if (unlikely(PyTuple_Check(ev))) { - if (PyTuple_GET_SIZE(ev) >= 1) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - value = PyTuple_GET_ITEM(ev, 0); - Py_INCREF(value); -#else - value = PySequence_ITEM(ev, 0); -#endif - } else { - Py_INCREF(Py_None); - value = Py_None; - } - Py_DECREF(ev); - } - else if (!__Pyx_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration)) { - value = ev; - } - if (likely(value)) { - Py_XDECREF(tb); - Py_DECREF(et); - *pvalue = value; - return 0; - } - } else if (!__Pyx_PyErr_GivenExceptionMatches(et, PyExc_StopIteration)) { - __Pyx_ErrRestore(et, ev, tb); - return -1; - } - PyErr_NormalizeException(&et, &ev, &tb); - if (unlikely(!PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration))) { - __Pyx_ErrRestore(et, ev, tb); - return -1; - } - Py_XDECREF(tb); - Py_DECREF(et); -#if PY_VERSION_HEX >= 0x030300A0 - value = ((PyStopIterationObject *)ev)->value; - Py_INCREF(value); - Py_DECREF(ev); -#else - { - PyObject* args = __Pyx_PyObject_GetAttrStr(ev, __pyx_n_s_args); - Py_DECREF(ev); - if (likely(args)) { - value = PySequence_GetItem(args, 0); - Py_DECREF(args); - } - if (unlikely(!value)) { - __Pyx_ErrRestore(NULL, NULL, NULL); - Py_INCREF(Py_None); - value = Py_None; - } - } -#endif - *pvalue = value; - return 0; -} -static CYTHON_INLINE -void __Pyx_Coroutine_ExceptionClear(__pyx_CoroutineObject *self) { - PyObject *exc_type = self->exc_type; - PyObject *exc_value = self->exc_value; - PyObject *exc_traceback = self->exc_traceback; - self->exc_type = NULL; - self->exc_value = NULL; - self->exc_traceback = NULL; - Py_XDECREF(exc_type); - Py_XDECREF(exc_value); - Py_XDECREF(exc_traceback); -} -#define __Pyx_Coroutine_AlreadyRunningError(gen) (__Pyx__Coroutine_AlreadyRunningError(gen), (PyObject*)NULL) -static void __Pyx__Coroutine_AlreadyRunningError(CYTHON_UNUSED __pyx_CoroutineObject *gen) { - const char *msg; - if (0) { - #ifdef __Pyx_Coroutine_USED - } else if (__Pyx_Coroutine_Check((PyObject*)gen)) { - msg = "coroutine already executing"; - #endif - #ifdef __Pyx_AsyncGen_USED - } else if (__Pyx_AsyncGen_CheckExact((PyObject*)gen)) { - msg = "async generator already executing"; - #endif - } else { - msg = "generator already executing"; - } - PyErr_SetString(PyExc_ValueError, msg); -} -#define __Pyx_Coroutine_NotStartedError(gen) (__Pyx__Coroutine_NotStartedError(gen), (PyObject*)NULL) -static void __Pyx__Coroutine_NotStartedError(CYTHON_UNUSED PyObject *gen) { - const char *msg; - if (0) { - #ifdef __Pyx_Coroutine_USED - } else if (__Pyx_Coroutine_Check(gen)) { - msg = "can't send non-None value to a just-started coroutine"; - #endif - #ifdef __Pyx_AsyncGen_USED - } else if (__Pyx_AsyncGen_CheckExact(gen)) { - msg = "can't send non-None value to a just-started async generator"; - #endif - } else { - msg = "can't send non-None value to a just-started generator"; - } - PyErr_SetString(PyExc_TypeError, msg); -} -#define __Pyx_Coroutine_AlreadyTerminatedError(gen, value, closing) (__Pyx__Coroutine_AlreadyTerminatedError(gen, value, closing), (PyObject*)NULL) -static void __Pyx__Coroutine_AlreadyTerminatedError(CYTHON_UNUSED PyObject *gen, PyObject *value, CYTHON_UNUSED int closing) { - #ifdef __Pyx_Coroutine_USED - if (!closing && __Pyx_Coroutine_Check(gen)) { - PyErr_SetString(PyExc_RuntimeError, "cannot reuse already awaited coroutine"); - } else - #endif - if (value) { - #ifdef __Pyx_AsyncGen_USED - if (__Pyx_AsyncGen_CheckExact(gen)) - PyErr_SetNone(__Pyx_PyExc_StopAsyncIteration); - else - #endif - PyErr_SetNone(PyExc_StopIteration); - } -} -static -PyObject *__Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value, int closing) { - __Pyx_PyThreadState_declare - PyThreadState *tstate; - PyObject *retval; - assert(!self->is_running); - if (unlikely(self->resume_label == 0)) { - if (unlikely(value && value != Py_None)) { - return __Pyx_Coroutine_NotStartedError((PyObject*)self); - } - } - if (unlikely(self->resume_label == -1)) { - return __Pyx_Coroutine_AlreadyTerminatedError((PyObject*)self, value, closing); - } -#if CYTHON_FAST_THREAD_STATE - __Pyx_PyThreadState_assign - tstate = __pyx_tstate; -#else - tstate = __Pyx_PyThreadState_Current; -#endif - if (self->exc_type) { -#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_PYSTON -#else - if (self->exc_traceback) { - PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback; - PyFrameObject *f = tb->tb_frame; - Py_XINCREF(tstate->frame); - assert(f->f_back == NULL); - f->f_back = tstate->frame; - } -#endif - __Pyx_ExceptionSwap(&self->exc_type, &self->exc_value, - &self->exc_traceback); - } else { - __Pyx_Coroutine_ExceptionClear(self); - __Pyx_ExceptionSave(&self->exc_type, &self->exc_value, &self->exc_traceback); - } - self->is_running = 1; - retval = self->body((PyObject *) self, tstate, value); - self->is_running = 0; - return retval; -} -static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__pyx_CoroutineObject *self) { - if (likely(self->exc_traceback)) { -#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_PYSTON -#else - PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback; - PyFrameObject *f = tb->tb_frame; - Py_CLEAR(f->f_back); -#endif - } -} -static CYTHON_INLINE -PyObject *__Pyx_Coroutine_MethodReturn(CYTHON_UNUSED PyObject* gen, PyObject *retval) { - if (unlikely(!retval)) { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - if (!__Pyx_PyErr_Occurred()) { - PyObject *exc = PyExc_StopIteration; - #ifdef __Pyx_AsyncGen_USED - if (__Pyx_AsyncGen_CheckExact(gen)) - exc = __Pyx_PyExc_StopAsyncIteration; - #endif - __Pyx_PyErr_SetNone(exc); - } - } - return retval; -} -static CYTHON_INLINE -PyObject *__Pyx_Coroutine_FinishDelegation(__pyx_CoroutineObject *gen) { - PyObject *ret; - PyObject *val = NULL; - __Pyx_Coroutine_Undelegate(gen); - __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, &val); - ret = __Pyx_Coroutine_SendEx(gen, val, 0); - Py_XDECREF(val); - return ret; -} -static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value) { - PyObject *retval; - __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self; - PyObject *yf = gen->yieldfrom; - if (unlikely(gen->is_running)) - return __Pyx_Coroutine_AlreadyRunningError(gen); - if (yf) { - PyObject *ret; - gen->is_running = 1; - #ifdef __Pyx_Generator_USED - if (__Pyx_Generator_CheckExact(yf)) { - ret = __Pyx_Coroutine_Send(yf, value); - } else - #endif - #ifdef __Pyx_Coroutine_USED - if (__Pyx_Coroutine_Check(yf)) { - ret = __Pyx_Coroutine_Send(yf, value); - } else - #endif - #ifdef __Pyx_AsyncGen_USED - if (__pyx_PyAsyncGenASend_CheckExact(yf)) { - ret = __Pyx_async_gen_asend_send(yf, value); - } else - #endif - #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) - if (PyGen_CheckExact(yf)) { - ret = _PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value); - } else - #endif - #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03050000 && defined(PyCoro_CheckExact) && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) - if (PyCoro_CheckExact(yf)) { - ret = _PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value); - } else - #endif - { - if (value == Py_None) - ret = Py_TYPE(yf)->tp_iternext(yf); - else - ret = __Pyx_PyObject_CallMethod1(yf, __pyx_n_s_send, value); - } - gen->is_running = 0; - if (likely(ret)) { - return ret; - } - retval = __Pyx_Coroutine_FinishDelegation(gen); - } else { - retval = __Pyx_Coroutine_SendEx(gen, value, 0); - } - return __Pyx_Coroutine_MethodReturn(self, retval); -} -static int __Pyx_Coroutine_CloseIter(__pyx_CoroutineObject *gen, PyObject *yf) { - PyObject *retval = NULL; - int err = 0; - #ifdef __Pyx_Generator_USED - if (__Pyx_Generator_CheckExact(yf)) { - retval = __Pyx_Coroutine_Close(yf); - if (!retval) - return -1; - } else - #endif - #ifdef __Pyx_Coroutine_USED - if (__Pyx_Coroutine_Check(yf)) { - retval = __Pyx_Coroutine_Close(yf); - if (!retval) - return -1; - } else - if (__Pyx_CoroutineAwait_CheckExact(yf)) { - retval = __Pyx_CoroutineAwait_Close((__pyx_CoroutineAwaitObject*)yf); - if (!retval) - return -1; - } else - #endif - #ifdef __Pyx_AsyncGen_USED - if (__pyx_PyAsyncGenASend_CheckExact(yf)) { - retval = __Pyx_async_gen_asend_close(yf, NULL); - } else - if (__pyx_PyAsyncGenAThrow_CheckExact(yf)) { - retval = __Pyx_async_gen_athrow_close(yf, NULL); - } else - #endif - { - PyObject *meth; - gen->is_running = 1; - meth = __Pyx_PyObject_GetAttrStr(yf, __pyx_n_s_close); - if (unlikely(!meth)) { - if (!PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_WriteUnraisable(yf); - } - PyErr_Clear(); - } else { - retval = PyObject_CallFunction(meth, NULL); - Py_DECREF(meth); - if (!retval) - err = -1; - } - gen->is_running = 0; - } - Py_XDECREF(retval); - return err; -} -static PyObject *__Pyx_Generator_Next(PyObject *self) { - __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self; - PyObject *yf = gen->yieldfrom; - if (unlikely(gen->is_running)) - return __Pyx_Coroutine_AlreadyRunningError(gen); - if (yf) { - PyObject *ret; - gen->is_running = 1; - #ifdef __Pyx_Generator_USED - if (__Pyx_Generator_CheckExact(yf)) { - ret = __Pyx_Generator_Next(yf); - } else - #endif - #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3) - if (PyGen_CheckExact(yf)) { - ret = _PyGen_Send((PyGenObject*)yf, NULL); - } else - #endif - #ifdef __Pyx_Coroutine_USED - if (__Pyx_Coroutine_Check(yf)) { - ret = __Pyx_Coroutine_Send(yf, Py_None); - } else - #endif - ret = Py_TYPE(yf)->tp_iternext(yf); - gen->is_running = 0; - if (likely(ret)) { - return ret; - } - return __Pyx_Coroutine_FinishDelegation(gen); - } - return __Pyx_Coroutine_SendEx(gen, Py_None, 0); -} -static PyObject *__Pyx_Coroutine_Close(PyObject *self) { - __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; - PyObject *retval, *raised_exception; - PyObject *yf = gen->yieldfrom; - int err = 0; - if (unlikely(gen->is_running)) - return __Pyx_Coroutine_AlreadyRunningError(gen); - if (yf) { - Py_INCREF(yf); - err = __Pyx_Coroutine_CloseIter(gen, yf); - __Pyx_Coroutine_Undelegate(gen); - Py_DECREF(yf); - } - if (err == 0) - PyErr_SetNone(PyExc_GeneratorExit); - retval = __Pyx_Coroutine_SendEx(gen, NULL, 1); - if (unlikely(retval)) { - const char *msg; - Py_DECREF(retval); - if ((0)) { - #ifdef __Pyx_Coroutine_USED - } else if (__Pyx_Coroutine_Check(self)) { - msg = "coroutine ignored GeneratorExit"; - #endif - #ifdef __Pyx_AsyncGen_USED - } else if (__Pyx_AsyncGen_CheckExact(self)) { -#if PY_VERSION_HEX < 0x03060000 - msg = "async generator ignored GeneratorExit - might require Python 3.6+ finalisation (PEP 525)"; -#else - msg = "async generator ignored GeneratorExit"; -#endif - #endif - } else { - msg = "generator ignored GeneratorExit"; - } - PyErr_SetString(PyExc_RuntimeError, msg); - return NULL; - } - raised_exception = PyErr_Occurred(); - if (likely(!raised_exception || __Pyx_PyErr_GivenExceptionMatches2(raised_exception, PyExc_GeneratorExit, PyExc_StopIteration))) { - if (raised_exception) PyErr_Clear(); - Py_INCREF(Py_None); - return Py_None; - } - return NULL; -} -static PyObject *__Pyx__Coroutine_Throw(PyObject *self, PyObject *typ, PyObject *val, PyObject *tb, - PyObject *args, int close_on_genexit) { - __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; - PyObject *yf = gen->yieldfrom; - if (unlikely(gen->is_running)) - return __Pyx_Coroutine_AlreadyRunningError(gen); - if (yf) { - PyObject *ret; - Py_INCREF(yf); - if (__Pyx_PyErr_GivenExceptionMatches(typ, PyExc_GeneratorExit) && close_on_genexit) { - int err = __Pyx_Coroutine_CloseIter(gen, yf); - Py_DECREF(yf); - __Pyx_Coroutine_Undelegate(gen); - if (err < 0) - return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0)); - goto throw_here; - } - gen->is_running = 1; - if (0 - #ifdef __Pyx_Generator_USED - || __Pyx_Generator_CheckExact(yf) - #endif - #ifdef __Pyx_Coroutine_USED - || __Pyx_Coroutine_Check(yf) - #endif - ) { - ret = __Pyx__Coroutine_Throw(yf, typ, val, tb, args, close_on_genexit); - #ifdef __Pyx_Coroutine_USED - } else if (__Pyx_CoroutineAwait_CheckExact(yf)) { - ret = __Pyx__Coroutine_Throw(((__pyx_CoroutineAwaitObject*)yf)->coroutine, typ, val, tb, args, close_on_genexit); - #endif - } else { - PyObject *meth = __Pyx_PyObject_GetAttrStr(yf, __pyx_n_s_throw); - if (unlikely(!meth)) { - Py_DECREF(yf); - if (!PyErr_ExceptionMatches(PyExc_AttributeError)) { - gen->is_running = 0; - return NULL; - } - PyErr_Clear(); - __Pyx_Coroutine_Undelegate(gen); - gen->is_running = 0; - goto throw_here; - } - if (likely(args)) { - ret = PyObject_CallObject(meth, args); - } else { - ret = PyObject_CallFunctionObjArgs(meth, typ, val, tb, NULL); - } - Py_DECREF(meth); - } - gen->is_running = 0; - Py_DECREF(yf); - if (!ret) { - ret = __Pyx_Coroutine_FinishDelegation(gen); - } - return __Pyx_Coroutine_MethodReturn(self, ret); - } -throw_here: - __Pyx_Raise(typ, val, tb, NULL); - return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0)); -} -static PyObject *__Pyx_Coroutine_Throw(PyObject *self, PyObject *args) { - PyObject *typ; - PyObject *val = NULL; - PyObject *tb = NULL; - if (!PyArg_UnpackTuple(args, (char *)"throw", 1, 3, &typ, &val, &tb)) - return NULL; - return __Pyx__Coroutine_Throw(self, typ, val, tb, args, 1); -} -static int __Pyx_Coroutine_traverse(__pyx_CoroutineObject *gen, visitproc visit, void *arg) { - Py_VISIT(gen->closure); - Py_VISIT(gen->classobj); - Py_VISIT(gen->yieldfrom); - Py_VISIT(gen->exc_type); - Py_VISIT(gen->exc_value); - Py_VISIT(gen->exc_traceback); - return 0; -} -static int __Pyx_Coroutine_clear(PyObject *self) { - __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; - Py_CLEAR(gen->closure); - Py_CLEAR(gen->classobj); - Py_CLEAR(gen->yieldfrom); - Py_CLEAR(gen->exc_type); - Py_CLEAR(gen->exc_value); - Py_CLEAR(gen->exc_traceback); -#ifdef __Pyx_AsyncGen_USED - if (__Pyx_AsyncGen_CheckExact(self)) { - Py_CLEAR(((__pyx_PyAsyncGenObject*)gen)->ag_finalizer); - } -#endif - Py_CLEAR(gen->gi_code); - Py_CLEAR(gen->gi_name); - Py_CLEAR(gen->gi_qualname); - Py_CLEAR(gen->gi_modulename); - return 0; -} -static void __Pyx_Coroutine_dealloc(PyObject *self) { - __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; - PyObject_GC_UnTrack(gen); - if (gen->gi_weakreflist != NULL) - PyObject_ClearWeakRefs(self); - if (gen->resume_label >= 0) { - PyObject_GC_Track(self); -#if PY_VERSION_HEX >= 0x030400a1 && CYTHON_USE_TP_FINALIZE - if (PyObject_CallFinalizerFromDealloc(self)) -#else - Py_TYPE(gen)->tp_del(self); - if (self->ob_refcnt > 0) -#endif - { - return; - } - PyObject_GC_UnTrack(self); - } -#ifdef __Pyx_AsyncGen_USED - if (__Pyx_AsyncGen_CheckExact(self)) { - /* We have to handle this case for asynchronous generators - right here, because this code has to be between UNTRACK - and GC_Del. */ - Py_CLEAR(((__pyx_PyAsyncGenObject*)self)->ag_finalizer); - } -#endif - __Pyx_Coroutine_clear(self); - PyObject_GC_Del(gen); -} -static void __Pyx_Coroutine_del(PyObject *self) { - PyObject *error_type, *error_value, *error_traceback; - __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; - __Pyx_PyThreadState_declare - if (gen->resume_label < 0) { - return; - } -#if !CYTHON_USE_TP_FINALIZE - assert(self->ob_refcnt == 0); - self->ob_refcnt = 1; -#endif - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&error_type, &error_value, &error_traceback); -#ifdef __Pyx_AsyncGen_USED - if (__Pyx_AsyncGen_CheckExact(self)) { - __pyx_PyAsyncGenObject *agen = (__pyx_PyAsyncGenObject*)self; - PyObject *finalizer = agen->ag_finalizer; - if (finalizer && !agen->ag_closed) { - PyObject *res = __Pyx_PyObject_CallOneArg(finalizer, self); - if (unlikely(!res)) { - PyErr_WriteUnraisable(self); - } else { - Py_DECREF(res); - } - __Pyx_ErrRestore(error_type, error_value, error_traceback); - return; - } - } -#endif - if (unlikely(gen->resume_label == 0 && !error_value)) { -#ifdef __Pyx_Coroutine_USED -#ifdef __Pyx_Generator_USED - if (!__Pyx_Generator_CheckExact(self)) -#endif - { - PyObject_GC_UnTrack(self); -#if PY_MAJOR_VERSION >= 3 || defined(PyErr_WarnFormat) - if (unlikely(PyErr_WarnFormat(PyExc_RuntimeWarning, 1, "coroutine '%.50S' was never awaited", gen->gi_qualname) < 0)) - PyErr_WriteUnraisable(self); -#else - {PyObject *msg; - char *cmsg; - #if CYTHON_COMPILING_IN_PYPY - msg = NULL; - cmsg = (char*) "coroutine was never awaited"; - #else - char *cname; - PyObject *qualname; - qualname = gen->gi_qualname; - cname = PyString_AS_STRING(qualname); - msg = PyString_FromFormat("coroutine '%.50s' was never awaited", cname); - if (unlikely(!msg)) { - PyErr_Clear(); - cmsg = (char*) "coroutine was never awaited"; - } else { - cmsg = PyString_AS_STRING(msg); - } - #endif - if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, cmsg, 1) < 0)) - PyErr_WriteUnraisable(self); - Py_XDECREF(msg);} -#endif - PyObject_GC_Track(self); - } -#endif - } else { - PyObject *res = __Pyx_Coroutine_Close(self); - if (unlikely(!res)) { - if (PyErr_Occurred()) - PyErr_WriteUnraisable(self); - } else { - Py_DECREF(res); - } - } - __Pyx_ErrRestore(error_type, error_value, error_traceback); -#if !CYTHON_USE_TP_FINALIZE - assert(self->ob_refcnt > 0); - if (--self->ob_refcnt == 0) { - return; - } - { - Py_ssize_t refcnt = self->ob_refcnt; - _Py_NewReference(self); - self->ob_refcnt = refcnt; - } -#if CYTHON_COMPILING_IN_CPYTHON - assert(PyType_IS_GC(self->ob_type) && - _Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED); - _Py_DEC_REFTOTAL; -#endif -#ifdef COUNT_ALLOCS - --Py_TYPE(self)->tp_frees; - --Py_TYPE(self)->tp_allocs; -#endif -#endif -} -static PyObject * -__Pyx_Coroutine_get_name(__pyx_CoroutineObject *self) -{ - PyObject *name = self->gi_name; - if (unlikely(!name)) name = Py_None; - Py_INCREF(name); - return name; -} -static int -__Pyx_Coroutine_set_name(__pyx_CoroutineObject *self, PyObject *value) -{ - PyObject *tmp; -#if PY_MAJOR_VERSION >= 3 - if (unlikely(value == NULL || !PyUnicode_Check(value))) { -#else - if (unlikely(value == NULL || !PyString_Check(value))) { -#endif - PyErr_SetString(PyExc_TypeError, - "__name__ must be set to a string object"); - return -1; - } - tmp = self->gi_name; - Py_INCREF(value); - self->gi_name = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_Coroutine_get_qualname(__pyx_CoroutineObject *self) -{ - PyObject *name = self->gi_qualname; - if (unlikely(!name)) name = Py_None; - Py_INCREF(name); - return name; -} -static int -__Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, PyObject *value) -{ - PyObject *tmp; -#if PY_MAJOR_VERSION >= 3 - if (unlikely(value == NULL || !PyUnicode_Check(value))) { -#else - if (unlikely(value == NULL || !PyString_Check(value))) { -#endif - PyErr_SetString(PyExc_TypeError, - "__qualname__ must be set to a string object"); - return -1; - } - tmp = self->gi_qualname; - Py_INCREF(value); - self->gi_qualname = value; - Py_XDECREF(tmp); - return 0; -} -static __pyx_CoroutineObject *__Pyx__Coroutine_New( - PyTypeObject* type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, - PyObject *name, PyObject *qualname, PyObject *module_name) { - __pyx_CoroutineObject *gen = PyObject_GC_New(__pyx_CoroutineObject, type); - if (unlikely(!gen)) - return NULL; - return __Pyx__Coroutine_NewInit(gen, body, code, closure, name, qualname, module_name); -} -static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit( - __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure, - PyObject *name, PyObject *qualname, PyObject *module_name) { - gen->body = body; - gen->closure = closure; - Py_XINCREF(closure); - gen->is_running = 0; - gen->resume_label = 0; - gen->classobj = NULL; - gen->yieldfrom = NULL; - gen->exc_type = NULL; - gen->exc_value = NULL; - gen->exc_traceback = NULL; - gen->gi_weakreflist = NULL; - Py_XINCREF(qualname); - gen->gi_qualname = qualname; - Py_XINCREF(name); - gen->gi_name = name; - Py_XINCREF(module_name); - gen->gi_modulename = module_name; - Py_XINCREF(code); - gen->gi_code = code; - PyObject_GC_Track(gen); - return gen; -} - -/* PatchModuleWithCoroutine */ - static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code) { -#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) - int result; - PyObject *globals, *result_obj; - globals = PyDict_New(); if (unlikely(!globals)) goto ignore; - result = PyDict_SetItemString(globals, "_cython_coroutine_type", - #ifdef __Pyx_Coroutine_USED - (PyObject*)__pyx_CoroutineType); - #else - Py_None); - #endif - if (unlikely(result < 0)) goto ignore; - result = PyDict_SetItemString(globals, "_cython_generator_type", - #ifdef __Pyx_Generator_USED - (PyObject*)__pyx_GeneratorType); - #else - Py_None); - #endif - if (unlikely(result < 0)) goto ignore; - if (unlikely(PyDict_SetItemString(globals, "_module", module) < 0)) goto ignore; - if (unlikely(PyDict_SetItemString(globals, "__builtins__", __pyx_b) < 0)) goto ignore; - result_obj = PyRun_String(py_code, Py_file_input, globals, globals); - if (unlikely(!result_obj)) goto ignore; - Py_DECREF(result_obj); - Py_DECREF(globals); - return module; -ignore: - Py_XDECREF(globals); - PyErr_WriteUnraisable(module); - if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, "Cython module failed to patch module with custom type", 1) < 0)) { - Py_DECREF(module); - module = NULL; - } -#else - py_code++; -#endif - return module; -} - -/* PatchGeneratorABC */ - #ifndef CYTHON_REGISTER_ABCS -#define CYTHON_REGISTER_ABCS 1 -#endif -#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) -static PyObject* __Pyx_patch_abc_module(PyObject *module); -static PyObject* __Pyx_patch_abc_module(PyObject *module) { - module = __Pyx_Coroutine_patch_module( - module, "" -"if _cython_generator_type is not None:\n" -" try: Generator = _module.Generator\n" -" except AttributeError: pass\n" -" else: Generator.register(_cython_generator_type)\n" -"if _cython_coroutine_type is not None:\n" -" try: Coroutine = _module.Coroutine\n" -" except AttributeError: pass\n" -" else: Coroutine.register(_cython_coroutine_type)\n" - ); - return module; -} -#endif -static int __Pyx_patch_abc(void) { -#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) - static int abc_patched = 0; - if (CYTHON_REGISTER_ABCS && !abc_patched) { - PyObject *module; - module = PyImport_ImportModule((PY_MAJOR_VERSION >= 3) ? "collections.abc" : "collections"); - if (!module) { - PyErr_WriteUnraisable(NULL); - if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, - ((PY_MAJOR_VERSION >= 3) ? - "Cython module failed to register with collections.abc module" : - "Cython module failed to register with collections module"), 1) < 0)) { - return -1; - } - } else { - module = __Pyx_patch_abc_module(module); - abc_patched = 1; - if (unlikely(!module)) - return -1; - Py_DECREF(module); - } - module = PyImport_ImportModule("backports_abc"); - if (module) { - module = __Pyx_patch_abc_module(module); - Py_XDECREF(module); - } - if (!module) { - PyErr_Clear(); - } - } -#else - if ((0)) __Pyx_Coroutine_patch_module(NULL, NULL); -#endif - return 0; -} - -/* Generator */ - static PyMethodDef __pyx_Generator_methods[] = { - {"send", (PyCFunction) __Pyx_Coroutine_Send, METH_O, - (char*) PyDoc_STR("send(arg) -> send 'arg' into generator,\nreturn next yielded value or raise StopIteration.")}, - {"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS, - (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in generator,\nreturn next yielded value or raise StopIteration.")}, - {"close", (PyCFunction) __Pyx_Coroutine_Close, METH_NOARGS, - (char*) PyDoc_STR("close() -> raise GeneratorExit inside generator.")}, - {0, 0, 0, 0} -}; -static PyMemberDef __pyx_Generator_memberlist[] = { - {(char *) "gi_running", T_BOOL, offsetof(__pyx_CoroutineObject, is_running), READONLY, NULL}, - {(char*) "gi_yieldfrom", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY, - (char*) PyDoc_STR("object being iterated by 'yield from', or None")}, - {(char*) "gi_code", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_code), READONLY, NULL}, - {0, 0, 0, 0, 0} -}; -static PyGetSetDef __pyx_Generator_getsets[] = { - {(char *) "__name__", (getter)__Pyx_Coroutine_get_name, (setter)__Pyx_Coroutine_set_name, - (char*) PyDoc_STR("name of the generator"), 0}, - {(char *) "__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname, - (char*) PyDoc_STR("qualified name of the generator"), 0}, - {0, 0, 0, 0, 0} -}; -static PyTypeObject __pyx_GeneratorType_type = { - PyVarObject_HEAD_INIT(0, 0) - "generator", - sizeof(__pyx_CoroutineObject), - 0, - (destructor) __Pyx_Coroutine_dealloc, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE, - 0, - (traverseproc) __Pyx_Coroutine_traverse, - 0, - 0, - offsetof(__pyx_CoroutineObject, gi_weakreflist), - 0, - (iternextfunc) __Pyx_Generator_Next, - __pyx_Generator_methods, - __pyx_Generator_memberlist, - __pyx_Generator_getsets, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, -#if CYTHON_USE_TP_FINALIZE - 0, -#else - __Pyx_Coroutine_del, -#endif - 0, -#if CYTHON_USE_TP_FINALIZE - __Pyx_Coroutine_del, -#elif PY_VERSION_HEX >= 0x030400a1 - 0, -#endif -}; -static int __pyx_Generator_init(void) { - __pyx_GeneratorType_type.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; - __pyx_GeneratorType_type.tp_iter = PyObject_SelfIter; - __pyx_GeneratorType = __Pyx_FetchCommonType(&__pyx_GeneratorType_type); - if (unlikely(!__pyx_GeneratorType)) { - return -1; - } - return 0; -} - -/* CheckBinaryVersion */ - static int __Pyx_check_binary_version(void) { - char ctversion[4], rtversion[4]; - PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); - PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); - if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) { - char message[200]; - PyOS_snprintf(message, sizeof(message), - "compiletime version %s of module '%.100s' " - "does not match runtime version %s", - ctversion, __Pyx_MODULE_NAME, rtversion); - return PyErr_WarnEx(NULL, message, 1); - } - return 0; -} - -/* ModuleImport */ - #ifndef __PYX_HAVE_RT_ImportModule -#define __PYX_HAVE_RT_ImportModule -static PyObject *__Pyx_ImportModule(const char *name) { - PyObject *py_name = 0; - PyObject *py_module = 0; - py_name = __Pyx_PyIdentifier_FromString(name); - if (!py_name) - goto bad; - py_module = PyImport_Import(py_name); - Py_DECREF(py_name); - return py_module; -bad: - Py_XDECREF(py_name); - return 0; -} -#endif - -/* TypeImport */ - #ifndef __PYX_HAVE_RT_ImportType -#define __PYX_HAVE_RT_ImportType -static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, - size_t size, int strict) -{ - PyObject *py_module = 0; - PyObject *result = 0; - PyObject *py_name = 0; - char warning[200]; - Py_ssize_t basicsize; -#ifdef Py_LIMITED_API - PyObject *py_basicsize; -#endif - py_module = __Pyx_ImportModule(module_name); - if (!py_module) - goto bad; - py_name = __Pyx_PyIdentifier_FromString(class_name); - if (!py_name) - goto bad; - result = PyObject_GetAttr(py_module, py_name); - Py_DECREF(py_name); - py_name = 0; - Py_DECREF(py_module); - py_module = 0; - if (!result) - goto bad; - if (!PyType_Check(result)) { - PyErr_Format(PyExc_TypeError, - "%.200s.%.200s is not a type object", - module_name, class_name); - goto bad; - } -#ifndef Py_LIMITED_API - basicsize = ((PyTypeObject *)result)->tp_basicsize; -#else - py_basicsize = PyObject_GetAttrString(result, "__basicsize__"); - if (!py_basicsize) - goto bad; - basicsize = PyLong_AsSsize_t(py_basicsize); - Py_DECREF(py_basicsize); - py_basicsize = 0; - if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred()) - goto bad; -#endif - if (!strict && (size_t)basicsize > size) { - PyOS_snprintf(warning, sizeof(warning), - "%s.%s size changed, may indicate binary incompatibility. Expected %zd, got %zd", - module_name, class_name, basicsize, size); - if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad; - } - else if ((size_t)basicsize != size) { - PyErr_Format(PyExc_ValueError, - "%.200s.%.200s has the wrong size, try recompiling. Expected %zd, got %zd", - module_name, class_name, basicsize, size); - goto bad; - } - return (PyTypeObject *)result; -bad: - Py_XDECREF(py_module); - Py_XDECREF(result); - return NULL; -} -#endif - -/* InitStrings */ - static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { - while (t->p) { - #if PY_MAJOR_VERSION < 3 - if (t->is_unicode) { - *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); - } else if (t->intern) { - *t->p = PyString_InternFromString(t->s); - } else { - *t->p = PyString_FromStringAndSize(t->s, t->n - 1); - } - #else - if (t->is_unicode | t->is_str) { - if (t->intern) { - *t->p = PyUnicode_InternFromString(t->s); - } else if (t->encoding) { - *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL); - } else { - *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1); - } - } else { - *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1); - } - #endif - if (!*t->p) - return -1; - if (PyObject_Hash(*t->p) == -1) - return -1; - ++t; - } - return 0; -} - -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { - return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); -} -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { - Py_ssize_t ignore; - return __Pyx_PyObject_AsStringAndSize(o, &ignore); -} -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -#if !CYTHON_PEP393_ENABLED -static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - char* defenc_c; - PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); - if (!defenc) return NULL; - defenc_c = PyBytes_AS_STRING(defenc); -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - { - char* end = defenc_c + PyBytes_GET_SIZE(defenc); - char* c; - for (c = defenc_c; c < end; c++) { - if ((unsigned char) (*c) >= 128) { - PyUnicode_AsASCIIString(o); - return NULL; - } - } - } -#endif - *length = PyBytes_GET_SIZE(defenc); - return defenc_c; -} -#else -static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - if (likely(PyUnicode_IS_ASCII(o))) { - *length = PyUnicode_GET_LENGTH(o); - return PyUnicode_AsUTF8(o); - } else { - PyUnicode_AsASCIIString(o); - return NULL; - } -#else - return PyUnicode_AsUTF8AndSize(o, length); -#endif -} -#endif -#endif -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT - if ( -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - __Pyx_sys_getdefaultencoding_not_ascii && -#endif - PyUnicode_Check(o)) { - return __Pyx_PyUnicode_AsStringAndSize(o, length); - } else -#endif -#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) - if (PyByteArray_Check(o)) { - *length = PyByteArray_GET_SIZE(o); - return PyByteArray_AS_STRING(o); - } else -#endif - { - char* result; - int r = PyBytes_AsStringAndSize(o, &result, length); - if (unlikely(r < 0)) { - return NULL; - } else { - return result; - } - } -} -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { - int is_true = x == Py_True; - if (is_true | (x == Py_False) | (x == Py_None)) return is_true; - else return PyObject_IsTrue(x); -} -static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { -#if PY_MAJOR_VERSION >= 3 - if (PyLong_Check(result)) { - if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, - "__int__ returned non-int (type %.200s). " - "The ability to return an instance of a strict subclass of int " - "is deprecated, and may be removed in a future version of Python.", - Py_TYPE(result)->tp_name)) { - Py_DECREF(result); - return NULL; - } - return result; - } -#endif - PyErr_Format(PyExc_TypeError, - "__%.4s__ returned non-%.4s (type %.200s)", - type_name, type_name, Py_TYPE(result)->tp_name); - Py_DECREF(result); - return NULL; -} -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { -#if CYTHON_USE_TYPE_SLOTS - PyNumberMethods *m; -#endif - const char *name = NULL; - PyObject *res = NULL; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x) || PyLong_Check(x))) -#else - if (likely(PyLong_Check(x))) -#endif - return __Pyx_NewRef(x); -#if CYTHON_USE_TYPE_SLOTS - m = Py_TYPE(x)->tp_as_number; - #if PY_MAJOR_VERSION < 3 - if (m && m->nb_int) { - name = "int"; - res = m->nb_int(x); - } - else if (m && m->nb_long) { - name = "long"; - res = m->nb_long(x); - } - #else - if (likely(m && m->nb_int)) { - name = "int"; - res = m->nb_int(x); - } - #endif -#else - if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { - res = PyNumber_Int(x); - } -#endif - if (likely(res)) { -#if PY_MAJOR_VERSION < 3 - if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { -#else - if (unlikely(!PyLong_CheckExact(res))) { -#endif - return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); - } - } - else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_TypeError, - "an integer is required"); - } - return res; -} -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { - Py_ssize_t ival; - PyObject *x; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(b))) { - if (sizeof(Py_ssize_t) >= sizeof(long)) - return PyInt_AS_LONG(b); - else - return PyInt_AsSsize_t(x); - } -#endif - if (likely(PyLong_CheckExact(b))) { - #if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)b)->ob_digit; - const Py_ssize_t size = Py_SIZE(b); - if (likely(__Pyx_sst_abs(size) <= 1)) { - ival = likely(size) ? digits[0] : 0; - if (size == -1) ival = -ival; - return ival; - } else { - switch (size) { - case 2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - } - } - #endif - return PyLong_AsSsize_t(b); - } - x = PyNumber_Index(b); - if (!x) return -1; - ival = PyInt_AsSsize_t(x); - Py_DECREF(x); - return ival; -} -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { - return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); -} -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { - return PyInt_FromSize_t(ival); -} - - -#endif /* Py_PYTHON_H */ diff --git a/python/gevent/libev/corecext.cp36-win32.pyd b/python/gevent/libev/corecext.cp36-win32.pyd deleted file mode 100644 index 2170737a298b66d9b5ab7952e365ff584f3be878..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 209920 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%0A4F6h<;z-Y*6du%)x<#^QT!5)Wl~6bHy|1 zTp)Y;+Wy6!w_{Pq-#`giu{3$S+r2mmvlXHR0BXK*RuRop{hzCg;2eGp{CGYqAB(xo zs_SK54BcU(hq*tz#xSA_QU#|0#G031z$C+)kVh7Yt~AzE!ZuuBPTxu_=BZ_>0E<Fl z99HrnMMXpkQ-gin2D}V_!%R>FBWeNumSMv3%?72sq!S|5n(zn;HpcJ*Q5OzP>W=pI zEAfRa4XT9oDgh<19))RW!H7W*uE5;m`O*T!SVK_E-Ae747>XXEY}emjy9E~Hbe|<( z3$ksZ&o#ymFy@vUvj(|w1?$%hyjw74Dva9>#<-kdH8wP2snW6G@Ajll#H8XFoU4}I z7*>R3J{7=6QkHok)(Xpf+-fc}i`O3r{oKpQDUqcH-rf%_PRIXHd8{_Shx{B|9fX|J zm~X3fPK?JlAxw?eoP?2eaa#QGb}UZuhu?E0T!T)hFGT-5<?68p10S7y+0tcre1Ti- zNod3*w9f(6;HVRzlZTxdr;|!QVI`^;JbOfq<-!6rvde|c>F=kk`ZB=t>?QtwKr$>$ zdx7P}5+pn8WN1&@L;EGWA`8IK7GrO5h89Uj3a8Sos08oH^wVVexTYxzb?V)YdQPjp zi0!|E>iY0xDU-H0*K*rf_N?M@I}#^$ZIY6MGmKARo3<Px24{`4=pTqz;7gChNdF&5 z!7aeb4DyX(S(T{)H?gM*ExFbbQP5OYdoRRQ=`SQ6>Z9T<;)faNH)(2p@8vC^ROC*^ z2E;d58;4{;gquY+s8T$Y535G6Bw-|H67sG0AmAVErM>kSENv-18fL#qv+72`86M3- zkwq`L4r)JS*S?FjKLZ{C<xJ1^MyHL^azN(tZFD7!@<8<`yWRWQ?wx2CLt8{z^7Auv zia)^O14u>bnE*R*1aqoB$g1RZ9z?~Ed>p~@rb5)<lAG)3DL_qwXB>aF$MGk&z6peb zsVLrJi5Ktii%9{po6US(m~Cu?GT<|a7#<(jmmy;GfSttH3G=cxCH<YP#!=J528y?M zhLJ{Z!Nz+~QPG?O=QC(=Pc-MZzoxS4Flnyf8H?toLHYkV^z{Ti*mx1dIwf;GiOw7V zT;1-d`xU{znP-K>PdsbsyR9XAPIl3&+kpu-;*`r(KvP0r_ru>p)0a3qBiOJw*>C>T z`eV!)U~?|x&^Z89gosu5VMW{9Fmcnn`GyUSvP<62lFV2u{BR>Tl$-#i)0r?;O-Br2 z$h;4{%!)nNZc;TV^<76N&WDo?GxhA0801;(amm@W#%?pK4*gT;g~+Q@w@<WtSOExK zJ>UfP;X_!rSx;H(c7&IZE2aWFMd5>l?skNT%ObC02-Eko@6KOh5jHJ-l|vW(C0^Yu z{t_!N_B4NqN9Bk@nX*^>1Weo4^p{wLmOXmxQncq_{HlAg7OvwfQN9yDoz+~Y)laH* zYVrC@z<9+|Nyq*Yz;~peG+z5ScplP+ZOb;=kr^>7EkUejJG&b|D$0HRXdw4;l0lDD zGC1BDlcH>=&Ks!1aa~6Lqr_wq#73cwoNTNa$pY%(P}9O(2H4UCGdw+muleRe**mDG z!6i~a^^W`a0DXYPx(tD-8`JfixSu_tCyqfX{%QX3y~T><Z)!dsz~+;`06BSh85u-U zSXZJr>J;Dv8pczotx7nh1sfz9-*rzQbEU$fl)Zr23g~=FQ&N#i-p!Bdp1_5)P8Aq4 znU2T4C-7CSF-%yoov=)q+-a;d1^H|(=N0nHD*{zGQZP*cl3Yl2=Hn?xuP(DvD=IHv zMdgpbSt-ZZIh+7U(ir5c4&DGIi84gdpU)?eK$u3TLaY43i`}LuWrng%Rq8UpEei+M zR$_H{s4I-Gd_x<figDgk$GT8_1s1n`BRDjnOuT>-p1KH-GlOYKoI_(yq5=jfBw)pq zoR6YN1W_nc3v*A{z%&A_5{L8tJ~8~L&pG;oHV4gQiq<f8w<=(&E0gw6WYUI{rp}}t zk&L1dtiiP4c`ZoJnvLYFA2X?Iz9dmS+}4U67;h%z`2Yt*r-~TYFy3Emkw)IuE3ow- zsJ*3sYP|pHjy8JR3-DwrLUy~^B8(*>Nmq3LBFvkwdC8MI^*2~|MZv2967avcg&DG$ z=4Sg%oautrkAop(*ucFXBccPwRGaISjfte93qGq0`kMB#fESfwS_q!=r1+6liua}C zdpVxKrl(1L640bmHDOg-VpT2Qo2Q_rx&E(0ynscL^T{<(r)r3%Eq!lpX6Rpd-o*1F zo~Q8~I1l$i;rSt++wcs#8aWB@d=F0q4+&h3^DZyHz5R?W6k96jJYf9C$XSj3tj63) z^ErdaJp1Ua7>!zm-A4g22H>N_O+5^P^@*EGJ@+}4ldOCdu*xI-8F`OG(&)dve&XNp zvsa>}WtsL`BQF;h&fBR#4?@xw>wG&VeK~Hkf$n)U`uzzShFCZIX(iUpyFI<U17|mu zZ%21lcDtF+%Nlxwmh>i^F85^<OkTo^9n<pKd8YSQHl#sT<9%E}mwfZzzt#&9N$<$1 z(Hk`q<<sGmHUX5zjJ9MtXDD9g6gv>boJKtJk7Ma{j_zU+U~8~R<61)_=W*bL@U)=} z42Z&f*EE^jZfMxN9mZpO>cJ(Q#?!k#3SEQ6x#9y-SzIBh<iWViFzqfA5to;(9eG`H zn(>VF6Y)Q`E#HaPW!B_^;uhpklzX+Hnpps1+kvf<+a;56Aow<0^m*8J>Fvgq!B6V8 zz=QAs+wRsMfd^eqABm`efkF+ZB6g(>$16ST?;pX-6~f9tV*c`*fXw7GU}O>N77A&G z4E27&WAln`A@Puqn`iF<A+Z5gs!6>kqL=aEZ~{XnMn4Aerm)IUHRtw`fEPvZh7~AP zyK|-TlZeKbej==Coq4OAZzvt^8-MXAAle6ngu~@nfpCd>4&W00Gg*ex#q83)&JY=X z+vdN~ZDKxV88ZwMGWZwIqd#~IxMXE?!<sOQ%_e99dd2_2^23X_P@f$Gv{pWqR`4R7 zM1@>Pr&ggm+nSVoDw6H>9BFK5{7p0_XsR}8g{QZ4(<h~>TD~@C6C00M<-$gQ7zVqE z-N5hiTcLiHiyPq1@EEdk<JThKD{&KrCh0;;S6++UX?T8(=N3HhXPDj{E|{BBrBCgK z76WAJxOOAKp&CfRn3#ssHHA*>d4ni)P72To6F$N`kmZ_rFxpu(UnygY-_TK8r0-6g z)LsF?n0>Gk7>zRBs_icA?kg>4QUr&-oX1dE2Vf{X0p*r2$X(DX1sg<pFcz3KJsUyp zh~3C1PSJ-b*eEV#SCYtbjjQQ^6tW0Rg~h*WhsF0|rM`(uBK9$vF7yX&6((O&2^}pO z5TQ@Ry`7{KD-V<^Y84W4;#GM!Pz70g7skyf_;9>#w-5>#wRssl|CAKhD?SkunwSY1 z;T6iEb_w%k1jG;3u%LKHGaOaJBK1-?cbxHbGebX~*m-1Z>sPUsZjJ9rG`toqhCNZK z!rfP(Z;xm(6a9J6^ydzm^0j#-S8L8A_G+n3)3_pJ%%c}N+-<7O>(!~sy=`*ql>a)% z$AfGf`dP>L7=rknj*pEvfTrQ&Q606l2Yg(_5#Ic;J;DwSKL5YN$4VO?$0A}$0wGGw zf3!IG_+jL~hL7X@@G;X5A8&B*k+02DxLW`Ilf7EsE<QehA*=myamV<W>$5+8O6!}J ziS+*Xa7S(J0UrxF!XC~D|F7WV&OciF<07P>()f7J-yD35{rB)O!w(;CLVuq9(QxpQ zug%$9t(ukpC43xU<4{w__?S)IX&S%2c#Q`ihj!G~9`NxMtczJM?vwww__d9XpFj_) z@$s*Jaq#h={~kWBK;IsIeViXYUhm)|Uz=BQwc39FU&6<AM_T*ibsgj5Ae=GM@o@tz z+G+daYaO+<2Yg(_5x)DNJ;MJh`(vezkN3Q8<73}u2Ol56g#MT0$MJsn7)O7e{jt%( zN4_>s;cA`wJA1YEmS5v0kDAfOW+;nc;iL<fg+(6aMhx94-O)q<)_!{ibnuq80*WHW znR#^ZPMyi9Lmm7jqJuwIpN4XgnO*I!au&i#2uCEXeGi)%IOkg6_-Wsr)-OZrooU|- zIZM5NYtIs_a-@QQk$xz0d4ehV+D|{xlttH=0Mrri&5>X%`W3k@180y&5pur5_+_go zkh>n5VXdMlx)CahNerfsszksMbwy^HiXz|G=@-Jm?6tW(PSqslFVAvR6#1Q~C?tqp zR1}Q$Vgo+<a|CFNg4#q9>xzoPI(Sjf4rQ%%@_Ka?A%`wct0?|psVFMH6v|m^ekvy# zrJ^V$y2xpZ!$tEv*LYPF-ymKi!;gH1q1(g>m}Sf`;`+3TV%dGbDY-ZW2UUFw_0ag4 zC@ZAqa@hJY@ZHh^^SwEnNc8;uHWG<mni_?Z7xFu36re&dHjWu*(!R?Njy_?3U1aH) zrO*T88HndJJmOzb%G(ix1+6rQiIVF-$|$zcO7rR=#zi(UzJ3H|_gxU9SOu6T-l_|6 znTcn@&^Xj1O^W2_Pz3x2>LmK4ThPvM&j3@6Y(+7pTw!-!U1PFt7D@V2A?b;t+}LR3 zWPv>?`x$kO`P#BJIHPGMT-In*J09jki>#|ahVE{uF>%KB5di3ntX~1*nWtezwW@>G zc3--7%<$Izhb4~Iu}EbEFK$tH;=)6pSLVuPxlEWsOV|)zk4thb;zo&wNx-=QND^>b z)=*5{PVpm56_k(#w^(L1UJ!vK;Iyuhyi3%bxG=Qw2WdVn`?uODKEjgPw_FTBYjVS_ zRz~Jq*#xCNm67|RTUA^ro%_u4XbPpLs95xsxJ6<o%Oxe#Bg9roR;Matf`ok(fp^M3 z%<|6u@RHgaXj==gBolPQk`=sxN|oBXuu!zGmBfpbZf33d@<UuU?hv8)gT&!m0W$X` zTuHG2)e$Bqb~c0<C2Eve?O2q+)Q*s;MetOZH`$KlG=>s1T%umU_0{3d=R|LL$1ad9 zFI4+L(FIRhmz8ZGtZdj6w3Q8aXyV>J=2S_!|1jdYr|>TXo_a92|8;t!Vh1gTrNtxd z-6$CUD_d+ri!j<HdI}t2{5wICUK{7YRYyp?#{9dO$N~t@;BJGR=>B;iEnaWsx0&wQ zLbd|S<PnRX0W=;l<XWJc?3Goud~IGyN?iFH^v+9Wwc-%~9i#zTI_Rd%P(M7U;5iOY zKA!1#eu3u+JRjj%adT#98J;FQbMTM@bAN<@(ylL2qUG7ouyqZ9P<z|ioID~k5wH@t zk((;l_-uzGP^Amo;Ybuy+aY_~({^Zi8RQ!|bE#m11wF;bAY%C#916Q)XWOAOw8;RV zv+ZyZ7vaR^d$S$F{t|U|!U%NYxI<P)tSZq)(xI2Z{ZBav@CF39Ib>5z!2ZX(#OVuO zP{Z4PW~q%3egU|?;7UcUcim1=CyX-KM!5;{fkT1#DyU76-UjwnKUDINZ-}_mi+h6Q zTktSjlAC-S-vaD9s4NX|7yOFru5Kofy9-F<mYm~wA>f`KRYopB$eP{_mmrMg+<hRY z@IX9>iEclaeWN}%F=jh*ZH}J%zjL|eSxyQl&+WjqIj&C;oak7Q&sHBnsoL@ASp3Q3 z8Lw&KX_Xwl)Yf<;L6NXmfP$@&)2Q7JKx&c1f|%J&-B~b(65()AesK#j4~Yf5N^a~? z$zGRa4F=YFLR}}Idk@K%pwq+z@msK@CvL9RJNHnUPQvC%KL+lW>MMM(WHk6}6oXG+ zHgO2D8J&0sipX_W=g3b(<0s*#be_Keuvx+u-<zj!Jto6$YO{6@7dy&Rb^H$bKItm} z20W%_oVf}6Al?UHnzjAr*Sgfwvu?vZICxIQQ;4Szp3CvvhUX1D`~NB}|GyI-_0~jC zxf9d1{&4GTJ`VsUaLxVH;`OnX+9hZA=wA8dlJYNO?V0tTjs|`B1xszPYhP^-RqR7> zev5LfvoTLHR#$Ki_P_M}+&GWWR`XFC2noxXQB%CddPRz^Bpq~*F^|)b>v)h^=uvHs zMS!CHOfUifZ{$=`K3Ie(A4)F;<`Xd8x-%$VX;&*@wf&?T80Jn`JnKg4{N+Qc(LFBf z#D95(I6i`U(HL;o@)SLdbxXUW%W|YJorNDG__2?IX8?Z;<Huyr;`fX<u&E#{9$STk z#3%LvwufRbaCel$n#;Kga&13&E+}B?!~HMK4le1-PAURM$%<sp!E7pVtbCux@9Tbt zcvkgoXbhak)rmFOz*r{O%8fi`WAFc@x<^Gd8*Hcm*&}@&$3;mToCn?u_|5|kqckuN zNGpNXX3a`&6z9s~Bt4$aK?V5{e>3n4H#ks#Ln*&cZsc~i+S~wp9X7D*dEd2%vv3+n zZWvS8-_4s5FYi%A_5T@=6(`9H;h4xUK6~`MVrF_bxlbdRSI%Dm9kNIT8|X9S9p*Z7 z+qDWwg4e%^;ZXb!7%t;J?7NM3a}qH9*d-$EV~{QddlGh}VB;6~q5qTh+3<#1GBc3q z39mBank?h84Dd=g9y8QB4|wEuqHD(mVA^N*N5qv~e)Chj#oX|y1jp`!X^NUFFqsO! znpo#))G2;XeK8MT6erv7RUqaXpQ3Bbcd)Srg;HW|hTsdu?Pmi;KxI96B)XXmF7*BB z7x*c0uD8n1S!Fn?EIed+A*L9~x67VWK2<6$eIT(<<Fj*nm>*#b7MxQBPWH+Z5h>Bx zF=<2Zf%as=zT`+;gwdYB7q%>UxRLh>S9P^<fO*Qzf?^H#NrA`lwHMKVAw-kH6f~(n zO+is_?+5n+ItQLqFOZ$T$7Xilt!gvd0Xz^+;ft64Uen5tH-_`HH5ubOnG7trf9Qj& zaaRb1<2medV<B0e3Oo};IEfhO4!Xi+VV1Kt_v88S6`)|M|8vDlK2(D>arniT`4+#p z6ccB~(_->D!+tCxX;+wm3W^(AEMhfhwel7(i%5^Bb-{B~Dm?4$=BGLE@X*x}JR9r^ zmw4b=MtE9&xmWP~ygFrmR@lv7;J|ZJC-D5vu5h6To*9Ivs0;8gUb}8$Y~HMly8YdW zbP@q~jva8Q!485e^q+`M)h2K?0I90w=Qv-R%h~y#L0-bYQ<J~78!6}mc{>}YPO|Xw zVQ|}3DZb(2MBkKTdeA6%4lnufXn$&KP>x0a?Wf=)P*x@J_PX(*5n!B)B^R&~6U=xw zfUzJ~mAv~v*f{*12%X+fWJBE5L4`=i&Ft&G5q#t~3?S3NBYj!zPF8cStOz#BnQfsk z9|=jB$&i#@YKQj3q-=s@c?HB|!)$!dPs4Q@x=5U**prLWk!n3%lCU$7D~X`~8nwm) z(Lg!|aNyo4>tqAEQj*%vFkBl@ViJ58FM+<EkOvzt19qqmPbb7na5O+BBsnV1%tff% z0!*onJkrQ8!w)Le#0WIu8<*z0>!ohn`NZK5Zqztzxtgfiax2MOt)KM%hn3H2KhDWn zH9fP+oQtK!g4<lESNw~^Ft|MJ+bVxRVI}b|@wE&`ZFY*zDlyAiwZPZrPaXth<1ENh zz2kK}jVoST-3N_Zq+-_uGGN;<uF0;ig@Q7+igIp7-GpRmE#1w_ht=p1HS3Z9jiWlB zHM>@`8Yk>kuoU#qX@Hux{tBFae>691(fygB`inV1`xpbm)y!;?6}xt7MzHY`P?mX5 zm27swMjj*8z^d#fH(BGBai%WB^BnH9pUXl}u>)-mgyW>~M*kcY8IG(Ch}RN2xt_0+ zvXi}%-92~>x6d`^$Oj}{J!xNGDDf;uGs8m|zG&?U!a*m&#vSa`C2?pVf!0e`*uDKx z&E50XK+~4i18oPPv%v<$oh1QnuyG>=Nf#-%!~ZvF%$W+UB4Y&$XF<#XDblO&N9`Gl z&e-sy*WP&Oj!g6RCqy+~4gLD+?ZI<%S{8N-O$&bSC8*H$pL0mC;K}X5@jWu&LC?Rh zsvlQhwcqyOgy%4%J8qHMP{Q>df*U8iH?mv$<Z>eZwU`<p{y!!l0^Tw%^oswAQ?8u$ z%WU<09##I_6-fuTThrvGgAooL@U{6tBE~sC(-dl5L0*MHXPZ}H8&Re!3;%OF#{UUC z_U#G(*`->;u>{|R{|hz#{}%Xvr62wWP}RI=q{jcRZ2UjRZgRFYULX8lEcg%iODI1v zKbUwd@IUbQ5(A?_G%;MaCt?^#(+@KlKwzvt%xe|72vD`tsh8A&G<~?9PVR32Zv$<s zTRK9vXh@dFvm25&AgXdK#OeAdl(bMHpA5Wdyw}y2z65C+C$fBx8fMW42Y*WauZ=|4 zs->8oGH;5exKJK)A|?2X+<qaHJnzl1=xk;>olWEyXwPpquyoU0qxz`5D`2@eH`dND zbSlchK9#nT!a*c|PK8-NLeQn&lP>uz8)=F$_^Midj`Ov-mWXotVq5BBu)Hgf!s1VZ zqFJ%I$k9___WqiEY&JUS1F9HgWR;9MgUvq<SEJ~k&ZDV%Q%ktNjDnxzd~F`YQOvP= zK<XK2W|~$ZLt2LBmTCEmpby8HDy(uk2WqHbFo^gtsUk;+(RSi9+B27S7bFm&KQF@g znctb%`YIGB$I)f>FZ?;@b+AGzQ&EC`?3S8RJZr`M_9hgo4FSd)@vL37T~w4Wn0a!* zql$9hc>AHC8|jWJ%8Q{h&1XDu8(f8h4NUc@6qD=XOp5;5ORMhB>K=Nc{m9s^%$nff zCmWNMRpMi-qIGPS+AuoxC?>x^SBa=`74o7W1NB;S?e!otvF4s_(@J^#6O>9{fkBvY zOTozZ<_IVLt0uj)lxh&jUYd>5Hs%t^pOu`G)qWVzU*i)0Sn9z+=96cs#Xc>)tAX}n z{{?_l)$((kug%+jhdzI5^(kwelsuq%t&tNMooBV*;+z?r{ziAy-|2RLzm)#?InLMS z=h@$(sr^X^ZO8qobUVGCSwwL>Q<rlIT@X;A#$!qz|1w~3V~i(YvmwzL+i~#7g+lU| z!_-{qbfCurINADFeGjm<|B<*TF6YR)(U+-C`+pX^iD^bZRl#XGLO^A?g{&o6ZdDB; zwNx=)M7mL(eygwD{>f-RF}k>=aXt0L!JAvKS#RQLD0mY?4>qXwRiX`C<0@eXqn#|e zOk=B3BF9VYHjB}w%e5a0+y^<&fBK0Fm%zDNlX<UFaX1!2$%k0h+}Ly7KzW1s8Fw}u z2(raURw$jRP3+2l$3Zxr7g1OI^Eor1=Rl3|mD2Tf!8iYEs#0@}D`g|-vTy#EAW>~< z_W0&In}hh~S3)c16t#8`ao~4+^BXWh$~Ql-Np=wW=D+j{P8j!)Uhyo<E_|y9DmIaC z)i?io^zGS5^3b2><Z%)gRweV~Yx80*>z2l}Wi{r7u&-iK@|ht%kmj3@Oq3Xa^^C4E znI0_mR2XueC%5)-_(^evHHUDc;O97Bn=9G#1y;{4@=K4Gf;Js;lJJBgpmjib9+A_A z$r@%u_@c262ro9dAL27C=r2BMIVXT;(;gR5$z=1@b>v}K`RUM<dMP<tfCJM{NvoDc z?j5$1vltE^iix=I?g%z~X%`)}d?(8wCTg7JqQol<ue3~cQ^|(hzrsXNH{1Hvy8h6v z8^y16JSmH-!{HcH?Y7@4D_SHT*`Zm~m2!q6dR-E~ACubtE5I{7b9&bFtT?J<G~a_d z=9hwmf%q*bk(fWdoAdMI{P`dH=R5fGgz4R#pI_n6f73tT&7V)_q^bPY3$wFu8RAv$ z%Mi2FU5i<M*tiPS)42$d!D3i^Z_X!9oD*|lBXE%JM}In(-@*L|S6JXWc^DV%MWtah z3S^A3C~mRC8y~Y8Sc|VpK(6F-Xyh{8$fk!gLu>K0;c3Csj3@Jv%+RrT2I097kFz^5 zes8K{Kc0d`nSpj|nJg{4cndz(jl*jQ#+^aY1=V;B8x7G0%syg_>L8Pd`4|QIEsIiu zsGkLSy5Frls@GkNlrq>`a8j|<VocofA<s-c2~QkadOM7@et^cR>a6~Ga%3N^jx4h< zmii&;$a1DWvKu)c0{P6R@1!6>>&0o9>-4oa0pBS?JsK<3J_3#7O#UoVi_wwftNwXB znb#LcLY2CsAp9h|i#;RNSl>*nlNt=}4q)`qC4fI7i`WRv%m}=5y(;mScR-EB-w^(e zUxIvZl}oai3^@a~vC0!)L_(J6?ScsSorim^Slhv&=b;;Fw9D{UG}^pljK`MtBk<C{ zhs?+{$wHnT+q&fRMQFCZS_3i#4RRF;$W#qTtp;QU0CB-FMc^o0MmQ{+-%r#meMLA3 zFKg&PIhfzGpsP!}Bat?hEX=7o%Wx6f@4!D$2lQx~2rn#j9g&FeT)0bQHjQYMjaS|% zr$ywA7KU7T3u9)UlbNv~Iz~a1*8zpKQvlIdPr0;oUj2y2TND#d(m~f#Kt3l`a~h^H z6;iUa4hL-id_#JjqQs&*xIXFHNSr!>S5yZ_RH~l(LSqi4-9B8fb;y;rGnwHziTPmG z54niItU@fLI2_<F^BoYQN|p@l?qC#LRb?gDE1L~|#}%~}Mtz@<evFl*(dlLdaj=nD zD0$dxpYLGQ`Dqw6Tmvuw4GzFNQMz0MFbDwHm{b=XApO66n}td2|7U95&OrZ(t5_V> z5q>SP(HfPsMr#m@jKLK3XoBC~4lGC*7=ux0jN#cRg3nPKYZR{J0#|<R?lai<8w^zS zI~tAp?E+m_ulj4W{PTLHqz#)z#&YpBLf$HjTI1MrV-${c0bNle*MlXT10}le+qURd z3>AxKoib5jmgWQ(>2B06zc=#C;h-foeJ$7ks%rT;&e!H)9MjJi=rMik^2}X-|90e= zhuO~mC*+w7Oc=d_BJnB8Ve$p@H#qCYL|nckzKk1ex;*pZ1DNDOQ6&W8i%}v~p4rNu zbM((Q^5+zJ=0pDc{!iIQAbu-<?vgwc0-zr0`uC`wPCY~hOP=9-bA&i?&D9zw^j=DN z=Iu&;_YLKlJ9H!W{}r*@cy7V76i*YLm+<VsllwRLBjQPwXJ$F_%nXpsT#!bcA!$h| z)j-<^31$%}hk{KQf=xq|YIrJS@EM;dywqR=r(7MzaV?6c0P@YP_`d#XN4~i{S-KKZ zaf*B+S1{0N+hg)`XzS^NvGy-gzNxX~8*+1)B+4<S`t!)U_A$;3*N90%LC*cam^TGS z!GdHj>++zJd!UUR!cbKMuv9YCP_Us8s{=j+!01wU1U@BSY(Ip5dTE&_*Z9nqc_t%? z9AqBcZ_^zYB#S?Yr8x!1w>VQS*o7_g-~<f80FF{jff}JVH4o?bTZX^kD!i0~bCuW} z0;y)fA=a8j$_Rvcb;&%NIUQY;d3br8TjsF=8KeOjrU4m2KmZ3bybf}~F-YJj6RF>l zFtp6`7UAf!%=2%QRx%G4ww(#l+%iwD$UJnTw`3lNdpR;szLt5`nj2+iEQqwsvlD&z zQDHkpTpuQqE{mwebUF8c8Z4P-2I%y(b4aJNT6v_S9pfZ0)ZK`4z^ey+k4Be@HSCYQ zp}jXg8mo)fi=-1Zc44Z)l!1g==qZrY$3UwN(jLnJj+KC?Hd-m+W;~#zSNsJ0rOaVV zvrEntF`9SIWq>3nU}>iq>rQ;p+^lRWsc3Z!!Q73a6nt*91fM2L@R{ofJ{P44K4Umd z#yT{|?Sr7q(xC9nO2K+AKmk%&kjwxivjE3iOF5s`B5Jfc5pX1=g0Jv%GJihT5q=={ z>=o*)GjDhI8f+v`YN5_V(}F$<PmjTpiE_k4<Nh*{uc5(T{GmT9&!{P4&<gUSN#e$d zlVoC;55lHzHrVC7Rto5pRO=F`g(THGkPbB+)g1%58{J1l7Z_si2C|=XwnBDp47hz_ zdd6tHL7WQkZz2DQjIP3E->YNL^*rk(fIc<>oI}hCLBk6HE!cQ5UV!&@Lhtsmj_#Ly z3HJ$&F`fiF35_d$7Py03OyJCh&jFq7sW@q7L(}1(29&$DTFrjko{sJbvf~M5E{<KU z6N+U5*DeOyZPcmUpOr5IyYNgL5-U|fX^Z>lp=IXb9A_2p;GLGvU`uDRrS$aCh(;=X z7}|H}M8y#iuz<5z>C&AR2C{{>!2Ue2(B566W@4Ua19BRuU;}?=1L+`;)JgJ2UWg`A z@J#bEP>2829%@hRP&U{`hU|7{xq%HSGkuJ&laxEl$1v6Vc(bfA@8$$DX_uaTr~R>P z{{uL&dMMAworO?CNg&dHnH#YX3b)pLpY{@V(x!;o>7<68{FI)usGKZ~06}n@9Me#D z7=w10Jp)r%xsjD~uBSF-4$QZbEjI16PhUo-)`hI~eb&l*kn_FHOtKz5dOEE)mG!<t z=brgkG8krB5J}j8o<n&{yucm%8u6BRlCSVSeF0uY??YBe&yT)j2=`v8E6SO(v0ay7 zZ;n(=?`Eu}?1Y~S&EINFhZ-u_NYO8y$2udNOGw88Ql)hXHr`82NRdK<jbg%9Jr(GV zcxW#&UxF}Bl44}72cMlz7O|5LFgDM006pMXTOTCb8E3!&Tcwe&wiXuW=xjP6y#=V$ zE^#B<szY0LlGzu@ksv1_Az-JAavf_@z066&Y+W5FPU4D$rZYokzpjmAF<Ur}EvRig z*my?z-q@F4P+WY$th<hr!zBpg%Z``eO1AnE2I!%7pG3t*P66$I8_a`r>-Bx4<>D>E z`4r7KGyhArO*;4TCb8!L)colgNK#oU&7PfIIU1}3Oac>6^?c(>d*W|HQ^n6Z9dN^U z2IbGQ{5ULK#T{nm62v=jhxKhEg%2+vAKo~F+%LPBS<KUUr+4rwlN5ASqDtx{`*@@k z{EZsDFr&P1SHlh(t00_#g$5gX5*Ns1&&*yjUEMVPj63%f)l!D!o(iknQ|>FrJ;~kn zqZPU@Z07}uvz9N@1_vm^ixAqp6TF5!(-GnhwkigW;mdQmEun_CO$dJz=yueV6H6uU z+a^?~Ey67EHoN?I)|=Y?uzfD)OqsV1#PTNUAms37h+MfaHSL1&)v%4%M$k&iVLBdU zMFvAgV+*spEt#1OwRnAoN;*YzI-JR+X1S+k1T}Grc92LRR~WmIbqwcwb0ybz$8@#6 zI%{8`l{eE}B^p*Hpqld;q!s#e&^l>fbt=c^s_9=L@F5FEas+@lSHO5|T?e5rwa5J9 zAnJzrInLMSPgVecdJBN`0Q_&M{k)Fb??(6m4ZLkSf&Ty-{znCVevb3Cc{SmG<cE3! zz3_i4?T_oI{pAfr<qTV;mi{?;#nfcpQe|Yu!OXKRj2l+#a=DC)pW}ROzKi4fN39;0 z)xkGxZ%KN4ay{;xscl22Vg=~ES|9t{G7x@7-3*+o@M}4)5wH@8pPY`(-E8Ow0_51X zQ1e_ueei4{JznIL&g5g)&dR_Af@{rUBq(pYPP#&GwwFzMyp;r7)fh9Uwhd7b!m29F z_ODVk*zh)hZELjJ0duEow+m)1&h20^2_gA3PjgBSY(`E7#4fWR?7nVEke3^%s=HYA zBzzPhz7m=nA0b{_$h3C+3sgxQju;;>eOG`_eU)l)H-45$Rl5VbQinW0+4ygmC~W^7 zU5J=o#ltBe;r)KNV%zilE`xRknt|1<A8otfVedhv`Sjx+kmUjuvTr{65t?0%bJq{l zICk1omW7ratVum$jwP;qaj|Rb^WqCcjeV{}6Uw`cJD^1gN^1x<kk!7)@qeZPp7xqD z<}MAyt_@@?85*byC9k6=Rb{m~VIsHX?AW#C_@R8V>z5w`zwnFhNneltyyeeXGRBw) za=>0CVSh%&)V7Kl7$rpR5byxshfcvK+tIGT+|Jlc-^(E=2&?7amk9NP)T2xN0y(zS z)l*QV2mXh!IN`{$KW@?)ZOM?vGw?57ZN3kcK4oU?EE?YqCccgFtd-wMh1`%@LGhhD z4UiAX#=S#p&9j_FpHpBSnu?`_U$7MOd{F}Ol@+r;K>QIA2AUePUnUXu=i44)>K161 zNasw*5$MT-w-gHwRp+l@V{aZ<T!K}527gHxiUg3dB^7Y{9nYYu<ZSpr!YiZPy!}Gd zuc*aJLwR7`gL5!OG%a}KATXiXwdQy%u@?M;4b$)wkc?7M2hn}F8DS%?ZxTl`vk>wq z<Su6C#KMH?4@6(Z&pKV*{6qp;Tqt(cZSmr^H=9n>MU})Y;*jl3P4#R^iZk^{U@?aF zHJzy|r@Ne~fx&1AcTmF_8|fl~zi1H^VnwY3YvTtHD`X}Mn1f*zoU^%-^RtcNQ_W*8 zmU*;G*99@#oM&?%%rK@G^nt--bV(Q$ziwxnP@71bO(rJ-E7VO^m?Nlf(CVu=WS5cZ z_z8azdLe%c^xvrd8{uDHi5znt;T>W`51cZK%pbw^7N4T(%Y1daSU@yjlp+g^3cC0d z85JcYIisSit)fVJsVGr@%J?TCDU_rjpp%k-4uUR&`wQ{60N7M+$Q4D#>9oHahtuZ? zC8NgR?6z{5HS?2t%srKIW1|D)?}+Fy^GL;4o1}7+RBn>WsrzaH_tm?nsC{)uJN6;R zgHrf?4lg_vZLb`(gOZ-xtWvh1#0lC*;Q$<#c9g@DW}o8qX2U$(+!ZqN3IQrE_kMRi zTgOEcI2#X0UpQ)q)yA;_lvGvA&vCvsXA!b}6lAg0NxIvP>hR7}+2~{2avggR1>$_! zpvB{=z&JNs*?s7iN6l_7cl`n!B|`MR;sGZ11)QeHvXjv}%q=i4UO`IEHwLPu8AyMf zT+7o+<;>k_v|?yXv>T8!3;#JgF%7%W4L`#IFE7WMsS`;`N|zpN2_8`kFI%1gj?h7g zFiQ+yzRD><Jsa=l{%{ll!>@g7SKr?)GzO@cAD^NUI=x^<<pfAP+&BJPOr<!=gV!<2 zH-vroBy8M~GqETLfIQmXX~Xfqplo6xW?@btW?-k9fy7$6HLf#15a&6`xr~_&LCyNF z60U1*tFcDBg`e1Uq__*m-r5~|qB}f>$IxSVi@(S4D}XxX^n~M2{7Lkmjvq8iS!W== zH*ZBvb2}W}0Yw41Gf_j_qN+7KO9#J(JOX%5#Z$z;7>V_qf_EhiNWK!B7(>Qp<WnAo zn3N?IFvJZ;rnJgRs8RCurqot3OOdSFJ}Lt06JQ1AW<;jJlYQfoiV<xU;0R2!R$19r zQO?)43V718OvWWF6D;TvLFmeoib9qN_O3uVwewU&q+EsCk1{IzvN$Op?t&;+Bv>4K zDvHZ(Pp51HoMmkJLAdO4_|*P6cfkQPcvDML#jN)GpsnTVm~Wkg7jd@kYcH@zFZFB8 zr=q>Yfxwa|E5kl@9R5%~^OWZeTdMr~EdNOsNG4roR}lVaEk@M6{|EKQO57&Yco`~9 zd<W%=*Y}q!^2(D~e1w&^?*|wdJbj<54}k6lsiTp24|{;S#|AD*;Kl$rW39Tw1S^Oi zGtAe)hMFqi4;^fb;)`m~P((*hL#x0P{+?D>*sbnELfQ@aA^rYxeQ0n>?#Gfh;<VGW zkoTA`hGIg81)>)kj6F3%tZ|*6Y@)SXo6I6?=dy!(Dj&$owD@=gIqN2c=%uo~djy|! zT62aFW}6{OPjXF#IU4#AfBEzQdxG*==XJng<nf9MVAAWXwbL1}Q}zg!y_qnl3uF3H ziqGq({*7zq856dz@REvh5gwjD7oAm1#iS~M3iAK1GbC`nDTd1F!&_;CdKSB<yE*o? zO&6-6&AUlS5)P0@vD9-!oZ_h(aq5>5X^^EzGBb39G=H=^Dq$0=@i84~v;_Wr{GOPi z@MIB{1M1?sR6KE->(AyUp*iogDQ)N`Gy4j?QbmeV&p;J5FgD{%2_`n!D92OC$L;jX z^-Q&eKJO|$fTvHVF{cC7X$9e=BDa3LJ}39S3SjweD$c5mVy)Xz3zrMz$aR`GwP3#h ztIS7;mt}W@z#Jj5wgej<Mp+||M{AgqE@uxEF(T=3J%qt2xG1b68O&Pq6x`b_m^oU3 z?i4u>MKDsQja0u-aL{n70CgAn(S@*Okr%B^B9J*9r9BfXjZ{o+T0~96k_uc|0ZDk& zs8nPw-r*~Wx^%;?+v`*whID;aT0Trn+!*7$Y~;S=<Wh$V&9z8E#;0H@QKn%5cFQds zoZf6A1x2C@@dAOM=v|0JSLd>*aVA9~KJ?bhHKy~<sC>AOGImL&wnH36ifD8SMWgc) z^I!(J;b|<KEgC^$MT)%CI|a;<Y>!3hIAzO7-lF>ujFE(+amT_dY*9%Sw4|k-BMCDK zRMt+xYEfE>#w)Fh2cqUD*aBjr{oOZy7nui@Cs-tPM+X2&97dsN66T;>%>h)|7_%hU zqYD2>>?7;Sh*Gg+vi?Au<L(oG2+bv~L`blBI@aKR08!6cViaAd?mUsb!-eW=h*2{z z9FG{a3Vk~Gs}P)Cpq3cL_vX1o+uw}^%qsV#BSr-^Jkyp=`DbS6Ts&vvslYSuoy^cV zc+SQ%6b}UJc0)1{;H0nt#%%+Fr)a}Ge3W)7MT0{*!5?FS!O)i}hE6$DZ-{4czAAu7 zCVtZCcl>e&oXv85(sSD41|A-gM&QTv2_OI-vl5n0!mD+nTO?{mYFlG4?e_SW8Eywd zUyFZm)f{f=^=#07iEf>do(C|}c8?TmO$nEvV2tb>%6YV-gqT{5g{8`BN92-qLIde# zje(C_WuSjvE#^zbN$CJ7UeS`rC?q98;ffY_tW@laWc>gePt~Q5E+xwq_HrGCK~Ptl zL0~V1*bPF#bzrSV>-nu>2-;$NG^QB#gk|VT_T_pVIQISlTJy7trpESPlBTW-AWQBW z$)4&S8K?w@hM@4cJo}}c{mtN=0J-1gq2Qe@jjN$+>&csdN>(fxoY}-X)o_V>UW@dR z4SWeU{6gBp&d>HdVx{V!{!Ubqj8NJ%TO?=^?}<UlXjjbyXsPjGuiS@$-dLqprGq`# zw!{rbQsJ}0Oz@edue4Mh?6${Fy<g%Em;SNMSwCbiMR3v^*of^JIfj;;HA6ca(?1l0 zaVL6cL-a0iMDXK&7<cpm$2cosv(lSeRJ<ZG2A&nr?3LfS|65*3q7(cXQynWq+y@L` z_1ECqAVlJoIvA#J{vn2Kx3KE~E7DJ@V?MYK%+sjwJ$pJv5*7Y{rK>x3c^!J=ZFP&l zGt{)5l3FgtB?d$4R~@Q98vz^rU#pKo$2l_KS#C&Ba!A5Fz`lZn)g!&mMM&wW#wNqW z@aoU%R~@Jy<O9cfHXP#tF9wr}A}fd@myfau7t}B*#4r+LxKFq9LxkDq2W&N^<itQ< zQOBnt6X*-uDo*SODq#CPF|1KOL!S)qA~w^1a;R=UEXigp36unILNrEsdzEQw8VV*Y zU1$11rph2fY5%7EaSlw$yiGK>)ap_WL9f^%ebz*`q85flIs#@0HWX2zV?U$QXJgC4 z6ZKs^Vm8fCX49pZ^>khbuGLB{KD8Q00|RyFG+M~5f|z&Md0ZpNiuFBEa#E{+gyPxX z4#ckUR|h<vLe}{8;6P}5TfW-ZUSsSMy*o4B)lJdc=6L9flv%l)b21G7kdBz4ES>G` z1N>D?@h82B$$>ckHcw?e{${QiA!sb@AIVF6F>DUD5gOgn?QO<DTvCjGtX(AivwOVR z9nB9?U|RN*y)Cci2SC?&TW^{p7j#&l$u_sQ<>>%|@nu_$q<>yMfJgfb`NJ~lpOLSX zCdtjkJ8H(z&kMeQP(6}a7GdiX#H`C*{tnJB&|sk*zQJgZe3?uT#SBf}1W}fUmsSJN z2S=^%(NIsdC#dzPfMb>AQgtJ@(D~w0^%K6%&PHTmFJUh}o^5N*XZ2~=(os0=e~;}O zRQaUa_Effw0K?X7lM^+BTU5d<j@ijHbpkG$FT`;zWOdZ41XQP^Q`phb=qM?U{4}mG zick-@z#ecvmiwGK3VKP7fZXR}V11R9Z9hGya(`C-tFOid4pd60H6OnK;w+Dpp1#ju z^@XTzXQa})03W|Ar_*xQ8cm3CW@?&@kU3oLNXM(8@Z!74kuEzL@o?79CeZ0i04Eq! zmt#iAc;CF}l2pKtw<oQNO*~D_$6E7+zG4tW{O&wGK&RXomb*hMXmICn7UmWnX#gA- z3t&U78<Z@45a<daz7pF`+9I7`_gBMq#<9N_jQ2fk8_gl6BHOa8Jqrv?SCnYT3hfpz zWQ*O|B5<tQB1z=oN|qJ@AYToNQ~MGbKN|C#($g-!x7OULI-OO2%Br5(_Z=HK_fXqv z*vZ(ag;6wo6}#wzkEqBq2n1k`>-CPt<<y+dn(tx$x;ieW>Oxli6RUQ8Tp~R58<kyu z4n+1*0VQz^OqOo-qJ+-TRb&tH7w8Z7FZ<0|vUCN=7&s-qtcnbRjn7C``lFs~H*z}~ zDRyaTl*JEvfM}bx`r)r-=Zj!)4B6=IcL40|88&1Iuh%)8^`fx+g>l}f7-Y;IV9YOP zZ%`#fB=)PVVgP$_bpM0+(cGmJLyk!hwm_N$^Y>^H<lW|siO9#_2=p0Z^jpqZz?X%~ zdCtX4(Q<7MEWxBvo~F$Z7UmlBO$3P>!;8T3(LmUkUt-KIYpP&aX?{~h2^(#yDD%%d zl*IVcalwC5U=O9Gk~##Jh^(%!K(382#0+!DAbplf?2FSFfy54i8vYjY&h%R`utxWJ zMb107>~zjM1NBz2hjfu1$Eu@jyxJP15t5(dd~G)G#RwWIw5XrbJMxRB<%`_w^A<&L zB|letB^WI~T23Z=6tO3{Jj>K9X?aS^yV;)Y_nY>B<H>eo7llS|+mOE?Xe0YPoJKkj zUYB8RYwy879SN`d+skqp)`G$-|2DU<9)B|v1G_G~VoLsJ{8xv8Qfc4?X?Etnx)cn2 zkN&H#Vo#}^fblE;)s>dT_mq*G2<5*z6m#VAU%eMq{QOrdIg9Qa*5ehdnBu=W&DVdm z)>Ct=ERV;3HGnm;l#YCFu0u`p`{mA}DIe8T2iE)CSz7F~1u@#l`w-iok@G74t%hU4 z;`1ryP#)P)-z%O&@cURsiz10B&GxXvcyAPwQ<8#ANuS*SohXE=YWdn+NI;kTzyees zP+$mOk`;w=QW6*j=x>pg;&QWP7M*6!?ZLc-C=4&6tSHQupmK_#J|3N4VR01e|8Re9 zJp3HzYjcPY?57~WB>_lL#C*n%Zin;HT!`Z4eHUb8oF3`fEhA3*aq!IN%v{`%<k#Eh zc5kbtH-3)uwfXgX(AyobouQ**TPvj6AL42M;Um6Q`=@)_$5dyS(>iEvhYjsr0xdts z`P#gU(0*`w8nl=XY44z~*WR5SwfD^7{-fP)!#7vp<L5YEo5vHrQ605+)z@n;Ilwbs z<2jRJrQcG&Z39;&!0~gOug&=c?oZyvNMA@#S#2KMU#RM<Wc^XLg7{#CqyyMioc}g| za(A~-B7#%IPz`}9A-y>r38B@pbC+_NAI%~Q0_*UP{uw{V*aC*kK_>(g5K`gO5L5$6 zCyeu?OUdl9F#Hp(Dj06cfk4Z=FGkLn*n15VO@z&#Q6A!9&QtSUyXI}Ic>rsYZOPpU zb(($6sD?lprRTiXC?hU}IZ`@l?M}A#Hd`Bv0PR^ALljF@ny#X8x?j!;51|4Q)@+fx z6(Yv_G+iZn#MaQblx|ssX}upBw{KRMh?^C@=*A9lv%;;(o)yqKL~yeLzyBw{ue$>` zE2wWFW;-`4+{qu^H!IwRIk9e5Sb}%x)<lo4j=8~x7Lb|;9J*R!mWogw0Zbe)kBr=) z)n)R$qCpCfPLmX-aXgoc8hG%m;WzjUSJm0b&;kqO^&g-dCDGw-Cr;!#(03F(h+1+- z!KBcVA-tntNWd7MWn`e^++>Ddo?Y1Pf#d~}ldZs4_{Gop2yK}F>*KQ!gFWso>u`ZV zmTl_W-=dIU;|9Rmh%;Xu*#d7n37h#R0DRgi-r$5xh=xAfbj+J*IwU!}n6t5=3PZpz z5n3DDaUORaX%uI2u;X9Ejt8+&9@!k0w;zp@SZ>~_P-u?D^mUA7@3Wn$XvZm1+~Ra* z-Jb9Ui$$zr#Yq<d{|m!Wq_%^F7@8t&r4%ylLSM4b#~A3IE>&2DK{$Y@9-d|8CRDa& zy3T!1!oG0%qN)0Mbe7EHJqes<Z<G_K`W-YvH5@dha(AX8;9z4j>N-=Q`hU*`K7`E< zVp*Ee|9R|w=4Gd<9eIcA%;L&RL`3t)AsoS=LFpYsykEc=mQ|T*LW(^VX;ss?BPEuN zm{6<}kpGplau>cZa!M!?Z7@SHN67XTRdrPq9Lw{_=#1w8j3@C!?+g)Pjg7_cnU}!* zi%8pex6DCm?L5>@X}?8cICK3^hxCH>jUx9g-oXJq*l-QV0yrORtiy|YCuqNjzoc)9 zT&;1*(lUzOd9{vmD%c2Xw}&p?mr?RGeHg~po`)h7t>nK>`0GZy+GSXZs#<=I^R;;e zQDbzehgqXV%rW@uRlr$nihlfcJll%%-{uB?{wlpW9m!fq=PvRjEar>oMTEH&{u+Qu zskkNh7*x{SB(ZpmfY?&MzZ?a{dWK_G>$n}QKL|EvX@Ws2CvkV`h~vF(&xHx!$oB0} zP-6b?aopa(0bCkfr}%$ZoP5a#9Yx4DHkxIyPx!kOIPJX0b{=Cp>A0Xy18dBql@7wA z|Iu{jnmnh~?QFFV2D76zGuSv2FG%qr5{O(F<j4ED&#P@~7b}|p399Z!SexByWT(^@ zEcG^~*^xIc(elRRYOwqirt25e>ok=Kq-kHyrkD+eyqB4|aCH+2*eTYX#pn$wB1Q`s zAqsNZ4g?5F#|su5JaQ36B5G<hay**UA_k0%+1FeHy`&N^5=Zd!Wk%hd6e|+YWh-_M z#~r!41_)1YBLDQ(kR4Ct1VJXNn+BcL3+CfTQ<x1l%z%)U4*2l|{4oGkyu-u)G_^y_ zi)e}msv=steu`R*BG#qwk>2QW_#ttz%~|eq-N3UF%ov+AE=C|%Nf_x>k7U&o(DUO= zznbE<H&m77olC0!Q&3hgP4LW%?3jRRu0fT14H6aJg6imNY%-5NOYim`Y0~Mn6urX1 z<w8!^MEACt80DEk>(u<YKAWf0ks8No);OF2%7|!yO?8T!!cFj;BH4n-S$z4R!v$Qv z3==0$f_n)!A=#4fF_~cnvcg}Y^h0QvVHB-S_JlHV8+UieklA!+(Y^*NKvM$MDmoyx z_r|h&wgqDo1%gHRUGYzI{m>Nd8UKUb$a)lVsW#gw)(Ew3Mc=^&vJYjIMRXzFZOd#1 zW}r3;|D-6l;ww`cPRurP*p4~c>i;OgllUsT*vqN?CoZ)+udCPQ;LGezBkVNl=`^0w z8uUc20dZ~)w((B%%ap;Dqf%vaIT|w?{vUhq0v}gZE&iW83ZbOT6jF#<ag@{+O+(tG zC2f*6X_K^t(1xZjrF5D$lO`oiVrHffj3tot5f6c)s8zXGl<N<*LR6H32q`U1!CEUI zR6y;$qE0DX10q(f=Ko!LpEKvoWReCS_kTaX-%Y#coc&sR?X}lld+oI!C&wB~WSfb3 zNN+Y_JmdRCPe(QhLDX<IHrkQSeZ-{5Q<unQ*_f{<<v(&O5vq=E^UDvUl48idwq9Nz ze)-FkdVyVP^doyH)@dhQ-w)|{tw^?@G3D@)i*2JwfULY{5NSor*vHSZD+An;tPH)k zoVR@TmlHc)-OiF#sP;j!&%Dsua6ZDF=8sdB?hsAq!(rc{M&WbwUOHKOE|hq$FlhBs zc7tf{6iL+a*91Gu_eY^@5hzddGiZ21dzyzjlZ|XF$(C^tKKE=p!_6=@so_9;j&RXE z^NA?ztpa;27}65sql+Y&W>t|nzr-vlgD3^ew&mi-l5Nj~k_VFMs>uUMh`wYNpvF{U zm5eO8${K_7R6$B>$jEzJwU{pO$!LMMQy^1T5&O9(FMuM|%I+CU4C|(b*AqgxLr}hf zS|uQdr&ERibKG4rua~LL78|uIH6n+ih<p|>8r^5Cc?rv{FoU|cK%>`8A?CQ};5+k& zm=lYo6Ix16f^}R6^lriMsZj|q6r9YTGs(!7nIngyoXdjLoG+V2a?7x=*&66us^Q=K z!G;BE;j=GVp?js&50NlxPGIFWJlC#ctitbP`zqO_-qI*1Ye0G+g`44eY4lw46wU5C zmDcgpfI80zxEOQ7HJA-fqxXn8Vf@a4lv2rrIYGitNchU`bUPGt!m;Rd{w|4>dG-Mc zkV()*LXHdE<S-AI<6dFt<Yuv#BHx*>#jmGxf#h763I#LtH*~@u(chg#o8gPie5&Ai z*z%9u*vs|>Z}gNa%UQ~FAh+$FGY4RtI`DL!MD`PtF=(PC;Q7q-(a0xRK+tIus*mQl z9<*3sUKmAiBPz?F;S>33Z@Iu$Ar}dS%FcR;&?+gLO>&;jkIEPozu=ZPpfHRuBI{JY zN;r~1W$sZ`bWTKLq3*B8s7dlpnMKnovIOY!bb4emg)FS1i7G7(-!{ioNXjw2G*4tj z1?8inc{(#Ca0!iiG;$f1TuruDVb4Ls>vGPo--*#%Oh0n-PUklyRs4~2?sSQ-vw0L# z#<GcOTY~yR?Py!hg%=MhMXEy8sm#f_EE(wje>mD*UXbpRL~F%Iye1J5Dx)LhfQOdm zsffvwKTZ%~NW}LNMEq4i$=$&5p#CBeoe3iTBoQ}6BgA~G3x8W87DpqTdi+izW+aIC zg+%xgM7$^w=O&1dG3KObEH+hRY$=a@K-*Hp9-_701PUl0@lB}9(HKQTMU*6tz{Dmp zB5@>NCQlr}XlSA3KK`)kdiEoC94xXn6FJgvKUH={N7y%mQEu#@y=W*65|wC+0H(`C z>){N72vkRfb<Lg_VHo@pTRzNj2N`a#aAVb$`HC_vU6Wh*bO=ItI=?C6Z;o}nXKLu& z$d(x#r5zRd!25OEbW429Ch|K)Rr*yH{gIoK*^Q7XyAg`?A>}p<ROsd<dS&p#iVhU$ za}B#cj56SOQ4+xF<ohXuHC@&HsYqF5sR&dtqUXz;SAUC1!02Uu&Ayk}xqn8FGso4U z1fjINq(re;u;pxB;+zxgoMMAcz;Rr%Esc|J?`RW@&1N}o0y>_~N5y+n8ZDcJ$|ptX zu^~M=Hi$a=Q)Kvm$-0JA1EbVX$mH3`$dxg`%pb%lVyM*!4U%5$TiGpA?=&S^b*_%5 zxfq&e+J$_RJ_=%^+=zWGQI6?$4!Og7Fpap>@0X0|aIoBZJ859tD|(X!X1uVTP`FxM zFqmz_`!MjT2c~7vT&|fjG|GZT3A2{iS^FXUAekP$icF6r;RIjqlJm1Czd`1KbGm}* zT{m!b-Lz~~{%)`q{Y$=AFXdZDLarvmso<cZthq4vf6b&_<(@n%{X$8fVDg;ToA=DM zRpt*NQFdhPR5hg;1l6{FR|CW)HyC8dHeQSQBf@fG5=H>f>q_90f@{%oOW^p1=?ZQ_ zNkZDhiwX$^OhVBDh{W4wh{#VYFe{;D!j+5|F|tp@$Xz~7lphY9Tq9r39mf9ob!eb_ zekl_6+IsOnBCiiO3Z%svlCzYo?Wx-S`99h!vHde!U_Bzg50?QZ!TO>q%_&GVkt*CJ z(*&2uF-n1zoXy2xp!ehQ6?XL4@uGIC>mm4ZF-=Pzv96b8Wy#yHD~;bEfv$VoXn1*p z%p%nH*<q24$VAqCm9=ls%HZB;zMCcAG|3lTXN>tq`y^*NAhLvAlBnj^_Xu`K-c_=y zXn&)95|P$7+PfsORIecFZ?tDIP_1M-##IM#-)J8jo%K_O*8dZHsQnr#$@QW3EbBw< z(<D6lq4um(F&}FGgA7yd<-~Ilr}lE<UywQWa-ywpZWY-dZ*-Ck#WaXsPK^6dyN3)a z5@7BRwac|c(GRs}BN=2F@hJia^>kS%qSp-jp>`hwbsI+u6ZRjmBd8Cxv!JBx<Fe2x z+HMHk5C`(@t2QxEF&=R0+tVqZG8<gUA4kfQHOF{%o+l}kQtZ0gmM_!49l97H<CESW z>B9)878S3jR<;7q?myRwWKZY+Ax=;j7<aE=U}Lt4U^z#%PXe`#)YCans1vV=C%OaZ zN0INpM=%vrf-GOS7C&F56$Xz>LX0s~31OLqu$*-Ai|Fb0;_W($J<A8?ua_x`OR+l1 zT7aeJJALV>u>5u*+~5gDWIZdj^bWl&T8u8GCAgFOdC5JW-1hg&4-vpe=l`nus@Tr& zkM`Q%N?Lsjt3*5yjrhGpI8zOYu*Z?#Nz@}zU{0RbB|<Jd)fhPurzGORXv8<8rTj`F zz8Di>mvVxrQ_D3ZC&Mo!!+J8DZQV5sD%th_7MZx*(fXLZ5Xu<_r9D3gJeb(CO^%Gm zG>+`>icT!v<uauQE|x|Jt+FN+@y!HRGc0O8yjCm>uF0r~E=Kkl4i37K--%LX6obXd zSEB@WTK3<CCO5!(8JsXI_i~vmhYb7mA;YkB$Z!%zsyOF4zNfn)sjEB<4)Sa}2rTze zhLchj20ho|!|?O*Sey$Md9MrI989TK;)RdIGlRrRK%yB*>;z!EjJN-pNykKaml5x6 z<UF-T8#e!txF`{OL&-F3O2e#7$L_yni<_9_Wi@^I`cy=<mq9_Kv8DYD8UeSdb`lM= zLU>cAY3na0U&h5cACgjT;m92Pz1R8DniHbxr50%6Sq`=JfP59nblXT#gCqhpUM8aM zT3HS`HCLba<%*7Dj{d2IwK6xjflG&XuwP6u!=3EyzlSzic!{NfU@xa#5})l=F-ke& z=j1ostIwjZyhHll9HsA=cSv8)$mlyZN?$4JpG;o|`*)p%zWao}|HWFp((wLn`rhNy z=eOjc&Tqx}*^fq7;S3j_+(<_iKw)HGmfrH<ol#m4I@d27SbYbU&0x+Qo*2(CpNTfd ziu0IUBg;;HogOkU?q$YbORF0u(?{$~VbQgeh8cN^d5h96Ep6~R(wzLBR<|s}@<%Ph z^5VE1Yg&_(RpA7)vKoQ2S>V`OrQ8!}X_adw@>*pU;2SExV0z|LTBX>OGnH1E(ea~1 z`_sCwPDh|;)1|MB8otAq6yAXS_-fG$lFa=32F@uLfTt#?;Cu<r|C${bqgB4a028BC zo=<?SRSrOFTdUM!#M9YCyjHke3ygGq7KYGavQ4#2J_)<E82z#HU``OTnQT$Z<|$j$ zCPi)9uM;3!)FzRZEo#TE(7L6_utC}r%8oj|Va`wMs!v1IjuYGLpgT;=`NCBz(uYhi z(8A{wSl!dA+;O;ug;6xxZU2W-QD8F=^unUqCqFN$lC>>Pu28YJ#Wl&cxTbXT`c!j+ z!H}Rf#d)^*Wf{S(SuG?$i_rU|v1^5LgLT5lyH%}~J~b)wIv$;;NAk!CA6tvqLjWsc zq9f=O-<N>5PmU&FYewW((VV8_6jQ>sr#6p@d@(j$cDqM43ir0Ji!M;a?-X5UD6K-i zP$SoyuP-uNGR^rJW(k*<l$jqb>1r+Onp4zuRmrNvqhrFkd&1Ef__^lcz7jQ!>?`5s z7^*9W{Nzy}bGXREfBUOg+0!jSp^0&m5aV^(;+aTdh~6OVlI~tEk-=5qzB8-9KU~2W z8^OIIbvJvJ)IE8ZFx<EY8OrmX5+$IFg~E;-z24>O-Yzsnb&JF03%SCqOGTRb-z{Sh zUFI2kPS>*3KDlp?w)1LB6&E4ivYP-t)uFeLuxt=ohFi>sCS;Z9y;X8NqBxV^fpMF4 zCN!1o>gCIqT}yW?{WEl?-*YW^=#s&GUR{vzNFH=QHAWx0e<TObz&WY`+)L3Svz0C3 z+Io3?xKk?K;Zc<yG<j2d6`VssT<4HB<73{f7Y-ydV02|DwX#&%Ao$*htw1^(vZ~q0 zfO5)Ve7`8C$F*|mx0KV1fWiU5jNRRH<pvCnU|)A&F_Smz5)6FmzS-W6*K#|G_b`N^ zrE((YXP#}{(Dt4lNF}nq-b)Pz#+}hL`-%?sbT*KtK9i`bfpI-buy8=Z(<v(ugk;%v zOqsXNBFyv9+;g<1SA~8zxk?>rNbQ=JPDJYG7gr7Zlsg3m@&=wqKyjSa^Z48}63UP> zFB8vb+cO>yM`51tn&%TaIyb}0n`O=&Zw51~<g=rd13wjs%(aZ6%bE7deNDH_28HEM zsWTNT_PfqibTuQ7)4Jy6n>S>cLEln_0F9g6L0<%id>GsB(a4;k^3&PM1i+%~u6YG! zaFTglcC`h=njnWJn$H5k7z#pHbFRX`xlQFggC(cBtKIzd^#@Eikq=SwhQ7!5;gRea z=Bo^nBICJNOpuo$heOMusZ?IJE5m=Y<Xp)Lb*pOZxe_HTz<=e}xSaB9net(DTbo3G z)NB#XwVC0Pgv=1~#xcSH%Wh|9yC^|6DaKWlD)b-qQ(umdujDG`11E%)uTEuT9B<A| zGs|wt?@mA5J*Tm&^mN}`nPnJe!<kdbs3RXQF@t5*izD3LEG7>*D(Q>-CkiBskiA^$ zcz$D6?lShecN`oae<QRiOBEz0Qdx`1Fy~G(%eJY)%5`B`gA1dG%!r5b)GfABUhBxp z<1&C3%{P`KFK;L@KVBC3A=5^Iu`Dvh0k9nK*#kdKfN$R%FI~~-zN3xD$;U1;45zK- z4f>_YZ5V0G%^R6Vg~rL(7#8wntL^z+m8Vbl&C!ILNz{~q+jauP+^&9aYnS)bo4d*$ zK4WfIp0a&sx(WtvyOZ+z(8&zBb)6<@V{DpjaP735?K|2xPYp_uXF<hO03Tsk7%1)1 zz~`kEKGEgzR6g;DKq!2|v*-x~S@(8X7}b|->r91dTi;`TR*L1!sNfiR=0oTou(ig; zLRAuUwe373S5c_HcUE8d44AoH{oW=!AfxqFo<#MP>ZVI|ThvYAs&3|O0)ZMTKtt6~ zE`hRZC<%29r69Y8{g+!cRHbWZ+vR<gs-mjlJF8zKna%C$_cqbrqV-drk=IWkP(KA| zsQT5D#;%_v)b*2s?D~1_`l-@2wC(c#ch_$<na%C$_qG-CZu6`1jJ$pVf%+*xL)C93 zY3%w*LR~*8$gW@RB&+>Y=^EO0d3V*1e$LKFeTUDoR2H7caZP*oB0A&_I^?m_eHFSx zUW%|UBWmE*9rJ-;-l-p4>3-`Dp9G}d(N*^OGjhj!rw%CFeWojO;C9tJSw;Za+n10q zx-(Dr55={N9oBb?D$*1O7e4W@bjND?W#N8>oM+MgE=upz#onbJ13LsDMbd>YRY|Q> zJETx^Sz6&;pUWr3*2}wh$W!&(?$ll8ou3nwtE(axOe7ss61s8c?W!74{QX^_-Dj?| zyRk-=U-lCsRs^LCzL%-!g}AT<81$N_=tYkVP3X8OlS}zCU3c>T7m*ZZ$*gmQD*ou! zK~=`JN`PgM-?QyEM0f9K=eKHLQwcf{Lxl{xy<1ZAdQW-kIv(Fi99Euv)W)dm+96)< zH(yl1&!}S@@Z>J^{Tnahvhy*~%g#rknanHbo|n}(Pc0~^%Yf(U>A^f70OT^@X`+tF zb;Al8`Y|e#<db{T53AenIXLPabAlrHsz&$nOkpDPC`lIOqBe2S2hFVn^TQ%+NmIDL zPv)(Lr*gk)+QR+PR`b#{2RlUQcufhiHg4~)U*5g7UM{)MUGDLsxow;zo=Lp><R$a> zo~`q8>pagh?NGm)<0+J0*RhqabDU?9r=rE<#dKTe*?PF}T+g=Gz^2ag<o@Kk!iq-E zwx3(x6ueEIZAUF{D&7{)w#O~+D7>xuLraqP9K0dVwtI;6cv<}b_OZf>&7N(yOUR@r z>O8^YX$1BbZf_?f{Bgo0AqWSLr|XDLiCCv{ZkGlOUuR|HqXUxhRtcLI3v8E!<ym1C z9O3!!`<TeJ6mFM!3ftw&vO<O1@8Ugl<*8AsT#uJ!VidBr?qw0r*oC?E2BV{AY()vg zWD4jRyQ~UYR;-THGF+nl`d7&pIiuWv<Van|!?8?vvv{2pYCKSblG(~ilOEq~anf&( z?;SIZ&>C}2Mt5pSN71&I&u3!Lovxm&A|(|*5jwwPGePsc;Wti=l8Zc(v>+ji9_d{f zxdkP4+i?NGAIBeBQBe&&TM&Ifx-0S}95lHqk;PqdcBQNIdC#y7CB6SVu8y&#j-K+x zY6D1}o0UAN$mq@}F;hPy=yp|jyYkgr2X~W%FOG!X!(64mihi@vDIe*fzqfI%T$A=E z^D0pmmBzD43)s+Mn<C~^S-IFl73f%3WyW;bHiG7PQ{G0smU+b-uX%eqeaS3)LwaEe zopfyK8|G;9OBoXSxWsk*DP`-F?$R^n8=p^kyW>AoQl8j<I=Q1aC8d`fseQ<W)IV}R z=ug<%@ovNbLRs|vYnev;IMPLcYI+s6czL7%tdKiaA^^-0{G9J6cor{LXhnV*lTdL@ zwEiq^Ea$^{!wF5(BWo<e+vawu%KR?%=&njBeEJhL=60!A$}{HA_Ww#YU#3%$W7Isw zyxXpEHZ}hIpxPb~<A&5Yv-Nyx{KLp3+KP>fpOrGM#lIUr6;@P!)3dTd2#UPXilrr_ z?fH<t?@r6-FAJtvOx2J@?zv=KG0)1~p&G+fzw^>M_9u&;*=>3$GnT)QfgOs!&MhfS zLdpEJ)P@`Bg`XoEe2Vm49TI4IO!Z88s;ljAnt7#ZDvGebFoqE>(cv`L$yx7?A8<#e zuSx%`kp7uoVs7sNk&dFB^w6C{_D)4Blx-Qc4RdkE`lQG$HXAv@0gk{<t@U%WIm5F} zmJ}Hr)F5Gx5HjQOI>W>=#)<B0#JbSk@gT`9V&xVd-8$3!wBUxi!#u}`l)evOrlc{C zefVgXitA3@*qwSyclv_;|B=iAlB&ps|M6EW@)>4_<m^u0z^{?=BlD--`8&Bb=Nv2q zU9-%2nG@Ox?>L-P#d@-0j+@tI-o!|@>N>xg7DpxGK$o<guD4W_>CCdnWXvl(<f%OL zn9zf_MTffPFhk5r>q^$bB&t`C-m1M*Wf>XgSU0*Y(_-{Jq%+HI&hOaY*i{)7qh?wE znN`e$qtK2Vv8Gj*2p-)ZL(1Ho-xZ3^t5*4A8UuVgW*A5$5xJwIBKLrjxH_eo#3vWK z#zwQ*-w#S(hVV=?-@p)~Zkj-{!dmGuS536!C~5Y0e%+-NU5QS04xO>WyUH?09MSZS zqH{!()A4uRA!DE8x9v|Ya?9Nt>_3~oeA&SE-O`)3-^XvC8Y{`dN6C=^yV@UnMLeNG z^X|<=qxDWP@0U3bTO3~6`mSB(k{@s{S-oK-8<7$?d>)w!|I!xG(3a_Mq~E<-XPs`| zzrxOXss0|1oxcQzHHOIF@tD*B1+W+Pu@O2K1JC2K9p`A|zIXAMEM%t*>g59rlMX{A zzD*6iD!f&^S7xnLA#K>HDzoZon#P!>`Dyk)(ljrCSF~yRw!aLrRFe-*f=^Zdd1-HB zAmcouoJ*Q<+Y+L<AWOYVU-5LxUV|C8osjo!vULGaqavu1RAa_%A}~W4TG$gYKNpF- z5Se;CRrKE7E}53U&a2Xucz$({g5clJko0rUr03rB_>X;wx-ZFEA>a04WP&7~NlycY zFJ<$41a};GKV(Swks{UVjZ-|67+F6usvj&OS23}NtqZjJ3mh`=ZEp?p6#R$+x5C`M zmvS+5p}>MMkr`R4_0u&yh}8600zGtPL*rl@BdPndy*y~fB!n~E1I=2nP0~y)G*c+1 znQ}g?sI!U+90R{`a%l@_zesTxZ~6e3=r*qu97Q)+aR4{!xK4F!;{{-jVUXHKvJ{fu zbCi-^;f<&%@6pHxTGG6`kw`fG!{+@GtT_FB_W4SS-`nBWD)=rDzjr()?Mkazj2k{* z7$C*d`M?>@J}YKUGSvsm!lPaN?KbI!E>okDsU5FnD#@Z6##_b3twYNfFAW6^63drM z(2gMnlLHq?4sSdkk~|IZGeDTUmUQVjm}!X&(bMwYp7D^d;npi3$t9WAwkpiBv9`LU z)G*d+oRG1pV>_Pk7OHG*N2AuCBS)BDzp=dIF#!kX|3SdrCZjfGS4dNq=6be^+SI)& zi;i5k%iK~x)FM%^)I{s!3-F3gp~{pO??TCUc%w|@7I`(a^(khl<Wss}X|7gnbX4S# z3l*Djv)Qsp)7$dl%`~%OQb}RT)_3t#b7FIuucWFvVq{9nw5|%Dxp0zM;p-~eIZ!dl zLY}mtcMZZF*|TGT%<z`^=66+a?xJ2Kfthhj<TAb&N*)*-3;zj}5lvvo+wu4kp+>iw zy@x*X2<Ls|V`VZABDCbpRUP{>0BMA0b#MXlIeaPjRsVr%^RCa8kZq~C_j8#%`A(80 zkH5?Q<a)ygfA+9NqeA5I@7p3+u+>;6`hQwqMZFZ_d0&Y!u&~~&sPAaozQhR4^t=xg z>jx^gFEPbc)MJLs#)xYs^_4LCP=Ta@k8$@w2{#=clWYgmRnG8J9b4;-@OKz@^LiEj z9sBFGd`~Go)4kwK$E!)<Kd1^Hx>?4Pr09Tj&mNYFpvZ^KpY)BA_sr2L-iPHUk_3(_ zI`63&W9}owQ?~yrk|dg$9&)XD$AbXe_RQ7`%$t=CQ<5&FowkhX?zGaO&gNgXyuJr= zt~a<OZQP@XJYkQ16~;X@@2kIck9-uCMKCp^O0A0A@Iz6c(g((+60+V{7U|_{g#_^Z zzN3*@P_5&!T|&ChD7l9D01Fjj;igse{k*pRkfs)b;DugE-2H$&Je_hJw*7ITShA<{ zAddlM%2~QRQuYU!>`VIy0znQW?YvE5$7Qi(q;~spFk*A4@VzHkWBNp+Ip#Fa?u_fq zvO7|{Gw$H7<rN*h16^}c!&T-~&eOilopyc6Fxf!YRcT%C6+e5+!P7h>i#>XYqn}+j zuc=)(lhneLchK4zyp=%(YxPPKQ>Uge%mP6yN$uwMA!Mldp&e48L6T01yXf~AEqcgW z)_)<BExLF*3uqi&?|W2TCre>ce^ctuQFe9-{Qp?@pDL`Vr1_;sK}ZnW{yzgT!D+`` zf>ZBimiES_YX<IkT(~pIe6Mh2_{xEYB7*L-q#k(aHRrY8d40=yJ#D}KK*UM+rjoi{ z0~^nDZ#<&_^i{~9V)Ru^QV(=BAb&3kv~Rmok|c$i)~ZC?C0hPEUQY^tXW${}(F$1C z1M=GSfOPhOO+FpgoW)vVSF>;6ApvEjOXaoefi(52f*+Fc#fp^aX4eBU`gA>@f*%rH z)`|?N;LYk+1wXXHi4^m4*8{87uL^!hbOS4Ay$Tk!q3Zz^{7}0S*{Ones$U82dO%2C zSiA>O7QUcsvOMi!f4Kr^`{)vU$3d2y%@=h;p&@=&KzwNzzsvr306<CMiRQHXXubN= z$R@Rb%NpuM^{KLk{5&naN6DKszSup@(vf8~7yT+7{mL7oUmbnFjKumfJoK=PD#p}v zRoV>FX2zubvMX)h4yls-G3a{wcH9ScRdbWQeTw5muGD!l_%7N!G=`OjMMEFEqg|yQ zyC}17$E_rnzrG!^N~YgV=oi97otD489U|@oSl<rmT=Hg7B|M%F*Bnl&qra6OxGyO* z2HEo|Ky@j+tS`mQ+pKN7EehDYM*Rq>htcv;p;q^fBY69Eh^Uo6m0?G(dYACS_M6du zt)?~DOCTc3SmkG9S<K)>`<XZ21s=|*({)Fz-@JKuOuTvXopFAltdn2g?^nl#@G<uX zn)|IJ`^fD|ek9%>cf8}sKH0|UfIqS?HP(-Pf0~E}c+ip!vO~a<4f?g89E$A*9#XPF zhbq}1uZ}HSBs}~v>M;7asDWm&46ya7UKwxUwC#I<)VKXUevL&ikD5~SR6^(%801ts zG=&6X@NW;e#^A2)5%RAWvps+Atf42@8(m7m#DqT3wOy)^Fvq7QhpLsJK<T3u8Yefy zdtKY5j*7sJf~)p_icKfe+_8tYpeu6g#WCnW&Dk~mrYC#90->qNj)x3Q%sNj~@9#ao z>6H#b7aVgMB1vLWjE}6klyOw(H1Lq3wjy+7etf9l6PZeA$3eN}m~Q@%Y6jgdN}kJo zIJHpSy!~FVV_V`=g5OWT4|{9ZPXS=Q_c`JRp5?p5<5u(5b<V)EHy3y(8b;d(<?S@H zj8BZ0x9Nn1M-M#PXPigAQ)z@5{l}rqvmFH&hl{B&xVtT*9y60dqZ7+FFePp4RX0F- z$`7;KMy8l(#!&izz&MZN=Rc0zn5JxYc3^t=l8$17T}g(DeeK+s*i=vFcfsZ12%<1z zTo8?0n)mt)HFkKEWiIa}Tfa7U^pL*2EhW_mZO|=YmZh*GTh3T>5okzgq3E}*S2eZl zRq&KU8;PNHQ#y_&TVy6CCKz-7yQA<&8R0R@lp1vTXlbC-@{R-Pg&L<@H$pV7O^MlA zEWJhT58#UeSO5!O^mK-$$!OQS7xk)J)EsHH?M#y^k2?2KnYW)v3e8z+-Y?yNPsc1p zISyrXU!%_p&6p8NE9uyuTKGikTWmPI@#a4p^mv53FWB1Ewk_3Ey=TBURjc1Przo2t zD?56v`~{&4=HMy(N$XqW8h@&|yL6!NSnx7?eter0i=N45o;y<KXdtFBzwlV=D;8`q zjE!d*gEFsw`v8iqXeDnykt{YQ;cjrgNKX8AU!7XFD-Pd~#y8m5)z$&7k{q&ei?V*V zuwAIIZ70&0Q4mVE@s&xJ#&$w<er4V!FkJX5uZ^#G2E@=Gm5|q7B{Q}^kK0tftUG`4 zjH2(p!s<u(%D&X^p0Ji&l+`B<D+jyhB80&One~du&%@2*=_-6LNcFdHWR>5&_ea`W z&Ck@r35v9}Y!iiu_14sDHLGZoi&^J+jsjo`_Ls;Qs=hNAMODBZxt3L()GQWtx>FZe zdC4kEM6p>xNF7X%$A|CHz0D$HlHirKJT%+9ZJ!iJ5R#D|!dpIeWKkB_?^r~f@?_)5 zmZ4-lCgb}&1P+Y5l@8Ol{e&dpPgRQ5CX7LXdMK~DOT7prLccHL(&LeIb}0TX-F)_H zSwI$(UmLdMn+Jr};on@>@tD#VLTmcA+lqq%D*(*LMB`%HOu612v&c-{Cl+1omwJav z>OO1Vr^=EkS=4?OWz9@u&i+WG8Q~%=H4y&3Ec}g!w9uoPuY-tXFIA8q9p2I>*AELx zq|y62PT;WuRP{{JUqaQ(x=e|&s>ii1P{TAuk6F(@Gna@g2s(+UPZLzpP#_5nYmsHp zaJPsfmA5Nb#D$;~^JmW|<<>YcE%cJ#=>C#CJll@RyKGL|2p1x|-c`5j;YUSMK97u5 z5!b7T@JU)*jH&5W^;_#w+gZq<RRopD%gpG&<4(a|X<=Ot2}7_3pN?e8=u%;)E|!^~ zd^kRnSq2Y1*+@5Um-;$zqfocIp<3|H(eSI6ckOtNTzxx^^LsNca`-pOYNMAx>72GL zTnM4-uhthok%rbhkh1lP?s;d-KPFoD!$x{V>Km;Wa64BPfGtqV&1WOBkCc{=0}gz? zR}EqRY`$UkrSy8d8HWI_me`K%|8sK36DeY7O)GpMG(!#dX}ip)Q=X!f^rOLvtj`@) zxyGg*GRqF7brqO@?w%8qyYPjul_cX3OX4reTKTcA0%5)k-O@52z;e$}!*~1+rSvZE zzA<J0Z&T4No-|VaDu!+`iJ{k9^0>R=Z~IT2lk#MDRc_%6!5rfFP%sFUcsFY69gE81 z^=YrKdp?WyS0r!DH=jP0UDy{~BssdPxbubVvTB&T@f;K5u{Wus*GIer83duTc$0X4 zBKTfj1TzfqPs*2gx^m4oKKzIMe@i{t!YC&(e$adp6IbwOQoqA+vK-0Kn)9_ttG?7M z;Wf>Bk@al2vp5dnBy*w9JxDAg#7DbRmrBBArkW?FJkg!Hy}RVCtJ*P>or{_5_bl&J zcaL9e=HHDF{*XE^yKH&nyjKPW>Qfl>xxntn5tBDPNQ==Xe>Ya1m#%Zxg=Cck-Qj*I za%+7x2a)vxpw<``aD4n}8O}MiU#$D3s4Y`<8nY+``7;4K<7a<m7b#YuOeu1E4-lnD zNfdrbX#=X1w!8h;t%@$HMQ#9m-cxdV^fUX>@>RE%I;kq_noXcm`Oy-jQr{CZwo0KY zMfJlk=}}CW=T(T<ov)Yr{-Epr$(22$y7PNJd0;f1cxT0^&X>Za13S{7Zujk}{F>@r zt;c>&q#Nt8BHbfD7uyUb(j5|L-YywT_1@JeoBpnM22M*#v42)5`qJ_lcT3`}ep8tN z%<SEoBGDzt_O_j)jP9bHpU4-{e+7h=^Dan8Z{fVO(EB{!Tg3Q(A2_Txu4N0ceCEan z6CGl|5o@D!3l;dbd-4WmJf;e2v(}re;`YTA_sNwzv5f6BlRvqBRGr#&iG1`-eQNal z%$-+pJEPbrfB(rjsWXp<Q#)VZGS2h8-YU=c4peCz1OW=4SE$Nr`+~o3yA&#a(BLBn zx>UH(BYu3<MoZBp+S__Y8LK><w6|+Q#$eN(x_FuS9bp$Ue>;pkNi7-M`c_5eWqqMB zRq_Fmi0sNiYN21y;J;Q44s9fPhPhu|ADV8y$`|M_6OD4b>JR1;?8S$xBb@@CwpaGz zKek1#16je9#=>en*qpsY(nrnN&VnoHyBB7OgcO^4($;ZgwV6e8e7rr~nL7!KRGTk? z@EhjG)7VPf(I;1%y~`|nEZZ+;Xa=P7O3z@u7T%M4?aCfo(!H>xq&xlLE?&F1s4Hpf zCFYXHvMG`wjr+m)5&i^%Kmlgg%EPD4N?xl|f#>yimHos8agcqOG-*PuG$r-(DpKAq zJap5a%|o6C_80e~*KEw>94a2R6B)(?qo0u};{E&||AZkj&-1_=G}je!dfT!j!$jH3 z2HTJ)e%CdBmE!`8uC$|Ah~qoZvhF!akcUCWvak0R9s{4lo(GQJ{3nG_Mv3QvLviT* zE!secXthygV@7luwqC0iGWj|n^K-{Iug1Hxd_Uof5WzMXLFssXgzvX08Zf&Xo(7ja z=%Rs~ys&8yMO{e{X%BklXaqspzytxwge=vSJPv_vPwflsVJWqIKVP+G)>s8YoulTv z2L{F+(`5`y5Zk>1f22#La)89!OZXlMBNXG2TIEmhJqZ(PI`oM77KW72@mj$>sUVbh zkQ(GxFH^U=Wh}2+pCrp&gk`NyR=f8;#D}TzPUT8j37(FwG#(Z+c>3fyFs>8qIX^Ri ziM#}1vrlYL^}O69>6wY{(!`Ndi&=RJ_6J0{tb)NBiIOvEzatA_UeVuGM7tI7JQ3@Y zNV(Yxc#;5+l%)?<u3QGff+nHRUsOeQ#1D+yX{G+0q?UqO2r!R3MUbXVr3r5$Fhk1C ztzy@|E;qbJkD-0W2Qe*3_ben)xRN&?Z@J+)b-Z3$$9qnAI^boAf;r#O$TaGWQk043 zhh67H<ivXy7raRa!qAz^C!1gUmhe}>0jy4v3k%TS20|&zc>aZFH5co19hUl};&r5c z%u0O(<vdzx;R^XU>mCfYd_GGtiCUm?*d=cL0zDB8fE&@&TE%g7pCA`+Z*DD|rdDRw z-=h|0(l^S`Gl!Ky*Sd^al`%i$EXz!jWf{Po%fWW3g8Ae-S(_0&AhfkM6SXkg^99i= zmvhqLBy7j&eQp31ltGw{r7%zi4K=>1{-(Or5=s~CpH6rg=GM+0NPW){(k`v{!PoZH zspuUi?;xt9SeA^~e5p^+enot8Xi1qeTopLI++JKt)r(8O{{Y?WR(hs&7slob?RBh; z1K1YSNyU2<O?o$Hnf(|;6gADVooQc@;7Bj!1Hu5?lm8A!-drq1m#KK$L_u99W(svR zJ+H5dL;nXvM`T`U!MI0qn`2t|E!^L>sQc!25<r_wwovXrkz6$}O&XJLda4SDu`u(V zda6tId?DCNp(f6BQJ+(FUy+nT+OG&S4Y<GLD^h^X5nb6k`^t8T?q#^4(18vD-;6Ac z5=@^lO>~2PqD#<d+%a@nHf7qZz_MiYc+-(;<V{Dhpp9DnMz~=4dM+f{2l}E{&`9Ho zcsGCih@{Bt?e~0ZGz~SD@La-qSYq36<1ED2&4%E;5Z1rIV*PW(m@)olbBsVj-V2FV z$rq}%9JYTgT*9-Kxe;M0QX_IS4iUly5gryI3J<;_E2Ri%vCoPMjQN=(%(RxUIajB( zan)+M`mBR+`@p&KJ>pv3)x+<F0+MRnYy48(G5VXth@HDv|81bKSUw5nDJ#B@)`J2M zk_cikBfdbLLc5VPC%;59Zq4CrVBx64Bnw|g6L9I5Zc0i0diZ>mx{}nVTDqFk<)GAh zPA{t)VfFyiJWQX0i0WR>OWg-ePkB|=v1EN43qnfxJXkABHVd4m)WV$<&cVEQ55Dc? z9zli^fgGdq4!Rj&(2=;o`3J24$8r{Y6|WK~G4nI?)p~CdckVte?5z(oS{F}-O0ZB* z6H?NKgQ^{KzBa*qHwd{g{#AUZ@Y(CHJDKGF+rXeHh|*_k3)NPG@TGALdx71st4<zV z^|t}hJkBQXp>!IRPB*Jw>z;q2>e_*idCdiBk<X|PV!?4T+d=1MFY~WeD|k9(V|}%G zz1saNQs{>g&RBYYr@B9zL#3VH!&7+L(|JEn`HJ+wxhjf#RIeHQ-8K~kuT*m%N&=!? z62mL!VS_#z`8D_SL?I6TK(&hMDo-B)PsHB<<(|CK--e)1Saw3mlz)i$rDutsX2*+i zEnQd)RwzS<-l8v$pyU2}C3iAZaPm&}4A8OIh|X8V%fiWC*QI1dqfoa-$<-&vi`Z6M zFaAg5_2CmwFuc6~S<xt<_@k81uSoX6U!NJ&ML^h=yfD~M_5X`SpV<1D%d!f`iTW`V z>vk{fjhsi_Vhgc_>Co-*YwnI4u05VSOZ>l|C4Spk;sbWPS`A_nGP(XH$T?n}jS+8) zc*i`9<pk|o$I5Y#37C{_Vv^T>lc%E+Ve)&=M|(T|lpM|^(YT%D5tG!$(T|A694RIN z{wF;h^07!#Ok1r}9P-@aQE|<f#)5BP#|r)=spC&cp_u}vT_<{aQ+Aza`7;1`8qMU3 zKP$?rGgGtbzUDPngfCR5B_pCxumOtS_5-ASo3uyuR~3Ns-V)&OoG@R(Ynr@AJ)8UA z^gQtfcs2i|&hyf<b)HktN%8pv{70SVFTdvbVx8yrFZ1O6FN8J!xz6+KnL1D1kLo;Y zFfP9IvpUZ&e@sSpaQ^Of(wrphC}Dpf><y@NqT{r&^)i5v>31)PNs$s>l;bqdoX<XI zO&lLs6VgxAFC^;C1COW~wEWn0;&K(Kx96eMtd2jYh0;22xt%(MC;e=456`X)`H-tj z&7m#3Z?P}(E7On6$X6im&p9LQI}qQ%k{+tq4NMnvHLz-rp9wmL?UwGRrPt8vG>@lq zEUN(!#MNrjV4D?TuXuXn6&-&{4PE>QWwSY%Ji4aSc{`P%-{o#@9q;2!GTW^koM^YU zr<0E&4CogAv%D#0>gVkw*9A%W$0;X#q2v~>rPW_-1?QEtTl24==UdP|_#8i5Pn^%x zRp;+fS%n$z<W2If)_I@s+;WS+{=QtiHo&a#P0xq+??3rIwmhc(D3>%?KHtZ|dV-(c z|EdJ1|5SpRbdD)d&lUR*bl;mrr47li61u@elWB0WmGZ!mfe9<nn+7Hv=2vq5Px*W7 z&Sc}|&m<df;?h2wY-HhP;=YRiQ@E|T)wnX;hj16-o+r;}p8v)337+z|l00>|?YLdI z)4O$eGkui}q3sBkc0$_Wm3C&Y?JP*N!;9_gT54zKW;<-!ZtMgHo>=JGNAoU!7k^Ga zr&`ZTt!EL>6O?m-<xl>+PWL=vsf49d{@-~12KO}Xe%!6NR@`dbVq67o67Es*$ls;p zImr8~xQi|P_uZOo9LBwj>&K;bCmWaI3UC#;Ww<8XR@^S!-M9yF2XW8g{uB2$?ws3_ zjZ9n)Za!`$ZX<3xZa40$xI?(-as4>scGBZMh?|M4#I3=#;%>!#0oQ|j40jaw3*4Ky zY%|#yzl$es7OoPv3U>?cZrp>oL%5f5uj0<&GVY)p+)P{*t`^sh`xNee++(<BaQ9OG z(>&8Y1r2byxDwnFTpeyRZYS;wxchOB;hw?$2KN^3oKGhk@5bfeDsUggHR9TFpT+IP z9mE~Sy^8xA?gDu1Qd|zM0#}P`!`+JeGVWsPn~Hn&lgY-5xP!Q_;y#7jimSyf!<FE2 zaPP*Y;v!wi#xdN3xIMT};o5O6xD~khxLn+=)H#G(gY)8F$a6aGP5AQ!?hww0|Jyvj zj2q4S8Sr@p_dM<(?ta`CaGkgo+)7*}?iFZR#Pc@twcu9b=HsT~d^m%)k-z%!a%ytq ze+8)iJ8_c3UmK{a2{(rP^)*ekjRAk4wY9mGa9>NHskWhMouskfizft)g^Ly}T(o3C z#YYGax75~z0{*7vO@`rJ$v~w1!1Pytq`G|ZV*lLI%E~#VbFU_CZD4J4ZNM<rHZ})& z7<ILV(bC$`6!Hf)uMM<>8k(C7yU3ymL0?VCm%DkwX5WP1Eb=N8jpnAclGRwyw6UhK zq1LyiX6+4N>1%HF)iu_vn@Qr)Rn5U*!<xo`k0jwhP{Js)p()^RX!3_zYt{xNmtnL9 zS^|`@Ash_()&zVl&B2CH!^VKXx-rn&Oukmb7YsGGv;@G^px)IB=3P@-Ep-9wKr8Si zynLB|X?3}OVJQhJ%gd`I%)-lPY;JB5e+fGQSK}ISn{ig2C?V?uo1=A7X#46w!-6tX z(ZTRb4TJt*sC6pEL&y4t##-N|n$X(%Kr7^G1@)%JExwwKH4Tk5LV)HbU#LFdvxw)j zkXhRd@|#1{XJNVE7HZg_Xi8f&w>E^fNLa98U6a(VCb*?(Eq)8%xs{9NUM)>4%_`}v za0s)ow6dbiXbfx&2vN9s1s>Q?1I7K4PSuI0utNF5GJkp1A_c%#R|`w|$kh}I3Ul#S zzPTl^HWaA!t*vRa>e1?3*xVGz_N{9UNvnXf(~O3%HBcvu3@VK0riP}xsRBp0%QcJO z)<p{!%q1vVzE!-@8VuEh!tgXTkoZAmXZxD$GP7tmzkf}*p)u6Z6x8)<X>L?JP?VFC zBXwRTELW~OkX_fSuU%Tc6iN$C!z}sn6xKJ^sahMx#D?aHb~D2Cq1J{q;ZVRgQ4?jN zuOUbcYicK}#@$4t2coHos#z;cE4XWZhBq4<1M6xUeYy>Ol({C*s<_#1*A30J;YO9G z38r7Sp(aRoFy_`YNnL}1kk4iXUvr(WrpYS9E>+5^T3lXLy0{$v-V~7bD7DeH>fYF} zCa`hxgxZ`5xl^UCrPUu<C=H;oT`TNs1e&xwC|_2-a7i^X#_r_A`4=pzD61})B`!np zfpmpp)$~U7l2R2u6y54-M@};lT$;|%CREcZc-7TLWkOSP)8r<IDI``D)Qm1^TWv83 zpTnoHgN7sh6P)X4rlw|LOJgI>CC?O-2g5Bb&8;xG-|FLVzOcLaB+t4)$iI<ZEi!RI zStZ;f{i$JtWD?G6MV4;ZfaHsTU>MCUfmX1k<MY2Z04~j2=t-*QTm3<io33iiU0S_l z(KXS2l0Uz^RLQOzJ{Asy;SMCqI{KtEuMvQUYHLNPI0(-jEPoXL*i{o0mNzujHg5_V z2$pqPd@0do_szxSrIkw-TvKk)4mAxBpLz#3H6YPk0@jZx+)xu@m<l1-f<_zotf>h~ z<<#gTG!Yy(1cJeubpi0!T_Re2;zC<m6u<lZO*I<=y6*-9jmQ~CCRCSKmd{<nd7VXz zubw-<T#Z=@XY#ky1cQEyQEmuqQF5vt-jQ~yr*j5cqs?UmX%@kUIN^femS8AAQ^D+d zFtys1(Wnm9*EI(6?)SHB+3epKQk15h<A!9b|Jbr4M|HEDwau`DNObDChIXC5ppxbV zRtOqdb!8YM$OyKsU8&{HN|kq|oi~SaiMM4|)uP2vf_AqAoR%d@d>L~q%S#t7tup8U zO;Ult#;67%d^Tx9@N!=rEhVF7Rr%rti^{a@ZJ}f6F^v9TGkdUPLaUFiQaqv7CxnFG zeA3K3MV>-DBiPa?tYO&t31Jj1G-wKJZfP~D6@j(jfuW@8stx7Y)Z741Hq^<Www`wh z6IhiC=FlC=ubER`Cin~9{-(gD7~Gqh15MI*uUW9LYViW(LRbxj#?pml<rRcS2R+_f zE#7EptO*Ib5)_rgD#|B9Rtw=J@S?^xDsvf<;pXt#kgtY8pMl&O)eWi7^2H05hyZA5 zs6`KJP$aU(E!8_2{tW3vi%BD0R?5~j6JF4KjO=J?uy`SxcrBik9BUB9&^)0yDaV$_ zR|mG(Xxe(265ObDi=-^OKUi|5qH>W6HbB#u=@b52+bG>e6acFa8%vv_lF!j@kcgVU z)UarT>RUyfH0*k31M8a76{-!Isa;JSx)<>+HKBSQ2K2rG6-WtArLQQBLt^yb{0AQW z!kaJLIIH{h@9z2Ip`KZ*Cr|#_y3X&<*0KGw7cKl-!8gv$D0yn*V_$mrFRv+4;U%}L zXM1N(=_d}{IpLcNzD<8<e_ZF0-~Q-(p89)sw*7R{sC1=RHTd&b!CpJMUBB4=69=^a zgwj)hFHiO|{7&=|o}L07zq&k4XAzSMfBn9^RKu8!lZo*F6Xn?#sfd`LPkn3SbrLWJ zSHzT|jG1;>i=I2Ij7j;<JhF~n(w?j~z~0LmOiXSI!!L5Ec;4J4l`=yKUB?_tw9l*! zsxPuOW!#%$7&#5hBWkjyNq*oMQk|UK+_iPgKJK&qa~E^Ud2Xqs*&7@7Q3>mb30t7j zJs2CN((Q{0t5WG6jSW-jdSk+tsB{MjOQ)<Hh079^?igV$1m?6#9nkfmt-@dVvx1v- zu%fxpUZ=~t@x~i#*U03m{T4fYXl>SlQdLf8OxQ<NIXm59OLV$hW5RU0U4*p@j;i1+ z5$lGxgSn%G1vD~^_{CIe(S53<ncvAg-wDf;u$6?l+9zMa#0HbY=@%>SbQQLTxiEFl zvFe(elwuq^AOD)5l1GL&MZ;cK*H9bGQgaN$mtw3Yb51LxQdaI1fwP*h-A<UoOTyiM zSmp-Af6RK?{x6T!b70&5TwMHnFC04lP2$F06dNzcD5M;Lcflow_x(8W%ik`mKh1%T zN%(D7fWHV=f@@h}7$4<{W@io1Icr<;rcYM$6UN(GqiV|nk;-;7DIbO2_Fo2cUQPdK z+vbGzV9)S<jJ9;8TPU_E=|`@xuM;+(uxwY}N!Y875mxUCyNWP&1{)c!u=Rwo+-#h2 z!TTg(dk9N+rQ1tb4`HdUuxALnkFYFP*ag_#uxZ-Wih2I8ZSj9?i~nm|{GV-GoX@g$ z>EgiJjm9<dRxQ(;<<(RDc~f(0#rpBR<f<*z0Va*u=KPfn!H|(g$U<dy@GoepYQ*BU z2!$;Jc{hi7+oCn=nRod`4K`XyY5A)IA+aJD#_p7=ElZmk#5h29biJmE*5(b>)@*M! zQ07*kipwll1L1B!pj7*VP0E~DXS{)bNxc|Nsxj{b{PO}KWBDk5)fWF;(G#glSWT@f z8#XYrI0!@(T|WqDRE)1$A@i8_H<jDQ$!nCQEokgb1(JpIT;}XiWU3o(44@@`IjL$( zWpmRye`yeP7o$(0R=md37S!c6tpGKQOws||zc}0^CO8RJ6U1*?>8ivwO2X?%7cE0k z?J5arm5J=az$W7!r@ZPQDELE$@kfCH?6N=$b3<hjh{C^-^b52lK|ik1=Af@z<t~)z zb|ZkIH8+gKt~QZssn%i8i4vkZ&{(%X^zv_5P!_F)$gMI5{DzI6YDOEw-4Y73_^W05 zzQlnvk7-?N!&=%*u|ql~FA;0s984qr`GHpE@xPHWFe&=0Yc>XSLmRJ1tGF9|X_J~1 z1Zt)AFQGISt?hY@6}n)N4hT9}SlnoH-F@ylsMf4@($1UfU)m%%-e9bDLg&{6>x}~z zH2^0TOyj52M%ZzgW!w3PlisedF@v%y8k@0rlm^S1!`NI5V=8dwY+*j{clU*_kQ?st zYb-0oJZ!8X_q+v_n(-H7;-JSd4_4eSD3F$UCcRPU8g9X$BRupO;FmSfD?yZIjP|zA zM#JF;<7@F$P?RW&;w!k>7{4YphXdm+gBL~1rNY&X4PwuKQqt-kXc7DcYNj!bN)|!W z__398Ifm-M(x%p$hM<^AjO%0Qs2I`s3wT*lsI(S7JZk5qqg5!Al3_eAVZurBGZ%?N zf4iJ~g1Ot4yJC>^*cgz$Zx|1_X%f@lKLu<>(}iN2`HEG#U2>Cy@#2QH^>dpyv@r2U zDn#j{y1KDem0VHN7_^%%45Ycut<75aB?Bi`)=Fhdqiv$0oWOrgAXML6t8;zF##%-D zq)f!Ie?hQ1ye6b<W#6*!U5pJ0_0_nGG`3W}N?B68zz{ku!k|@$Az1gJjf7g#g$CB5 zMX12(WWhm+8tDN#>>jHW;OG?~TgVz`NNu;C*we0c=tX}kW0m2{Hbn#23ym@--Yt}o z)1}HLau@I{sjRs6Dpz_sN$c`J4Ff|Rvz7Hu%)(~yHeEFr4!2wI(*jW>nBvUeI<=e2 z$P)@Mcku!#+BQ%rWHgY<q7Kbu30~s^HvJbfWHC4TsDpte6|8Pyw2G8NLeftmN{So4 z8fQxh{gOqOxl%3TRvXJw*0G44POO$Bnlo0rYFB2h&@Cs8bOv3ssX&Ofj|d1Qj<uzF zfuyWy39_7^65om6Ek_LF4m(6qX|Jm^UH%-WuBzP{Sa(9!v?^H=po=xHHHxIx3M}Lh z@#Mc6gK?9Ru(eM91;GWF(Q0Ig(Bq~|EsJZ$yLBy)mCY?8AJmv=eBP#xLgs7WDspIH z^EH7D&8@VAX=85{Y`4QF<HDIKJ9t=Wv3fXRQa4MxSnPzt$$H$#175s*r!7UJFgAf> z%y?~FVATcoB%)EQ%Pb}6{&x}z`xi6pR|XgynNgEAIv$i`exon%u(78b2|3|7SG(Av zC}Kk@7bOfkuY<Re6Uw@0yx+n_2&ggmF(J?oBy{V|qBKWigAI_eb#7QoT3K#Lx9fyj zqv4FBd_6){sa28R2tJEgC*A;6WUw<zL^j$&$?7{#Tcuy43pY|NxC>Y-*{lH@Np_gh zf^=XVVbZZQSB90;6~y!?B$l(PEl3hZ`WCQJcp2}t;J7W&r${GKu{4O4T69#a%!gfC zBh9XQ!~3O%B6kr44RsADOBYB;RNK+G3|J7AVpM}LF5isSdR#*7kxMCqkk!~lew!d} zP2uZcs-&L^gnlTA=~72kd}VX<4dE7c(z|n8BV^cVDaDN?j$aLc8yvrIo$+fMFKghi z)HCA_H|(fBZ}WJsn>u=MsFJzBB|;CSrKrM<y9GKuRO#{6YLOa=z1Ip=8ne-|g>kMa zZ@QkHOiohlI~RqaVQo!gHB%2+R5N-~R0kOpUY#N~nFb|<;v?6Os%{JfTHsYWP9PMB zkN=Nky1r(HC1~`e!3tJE<jwfPsHIJMEvGgrN{Lkc>bg<L)FGoU6qs{Gm2L`EwKlJ1 zk;~XJYDu7V1ClZnu!D?`rz{9sp61pH1|T|mRcnC7sE{!$_1bWtbxRfFw6rP$a&9w| z4m$NkgP|{|H7;?5>h>cL30kJLEge+Zu%@-973tr|n%oK()v9GsoX<#RgutmRuqM22 zU7*#*<?8aq3(G6*x#K)m?KW&^Mo>*)y&xE>^@pTC$kG^#N<mq^^f$_s(wHwPgQ)Vx zG*%vzx?n8`wdP|%14xsxZ0_Qv3uP%}N`9_x{pCi@8ofNoD(za<P8*un_|-zr8rC%Q zI{mv@z0txVMdQ%WYytFdtg~j6mr<r(?#eXkS_8<{Dub@rU>NT+K)WV1J>RIaRxud& zW$jNb9=*$8DkVdhQDCSg7>K^XnBlzp14bzj0`-2DWQg?3l=@u;2sG6-tfLKCumsIb zepYr^jH2$ckfYhtj-sT7*5)P|1q{Y_cM24KgoR(NC(5o2e`{bJ<fI%cMrffrM3zvM zi80gVm`v19=mx8a)VTzodNJO^zM*i-R28B(^whL8Ox_R_^X6o7Om5ZF+R2SmCQq5H zn<Fj-&E3#EOg!s>E$(O|E<ZF9rOKToE`=;}v0TUy=S~z4$3;JPvI^n2wJm4?B{s)l zqmC<qh3R^CrWoty{~exhz3cI^g}*8JK4x%b54UaIcI_rK*2*3gS^KZ?1)JHB74l6| zlvjI_Bs{w4cR88X>U}0^iPMLg6=0JRn@m^$)|q9&V3Jy$zTBr9&u8^iC)|Re`WCF| z6CBpa{5adEIy{Dy9Kp|qqX78U($U$wv(DNYbA?(hWJy);4Y1SN`vUYDaYbe6ylQK` zSij3gF@{>%FA}0Zq5FnpUHuBZhI)m<{0iHqpR@L?YwjZPa#}VcVcFNv+}votBh=9C zHY=~SKC56y*ZXtUSu5bqS~zkix)EWhJWdM9H+cWT(D~wbIz-ov<M6U}s)d>@+5O+2 zPIj3ju7`u$NYgM1Is3vU<V=|klc|kpIa70UVb-(74}k~S*g66u4H2)bSN491e{mYU zd%;hGNoDvOqP)L5T~q)#+lPiIBT>qs_d6xV6O(6x-BF45FeT2PC?#vx);`I^d30>z zIKOU7wF^u3ML2sghI&s72mMv;5X*^X3yE$_dqwvxCg9JJ!a7SjYillLi_q{7#Um~p z*^t;u!hZsevaN-JQU8D!tvvO1zbD3D^i#1_R4k}ilvAT^AVc9ElNQjTC;5lq)0njN zH9@~!aT&fwlE=^3q3FXtnJ7cJ-xJqIm<UohS%xTUa5^`w-0#DdV`27>ra>8uA<!`J zEVX|q8d~+L)hheYe5lf~<?L+ys?zE0MNZP;XsWk^xzfh(OFNr?n7YSj9S)Cok~U@= zVT=b}{YU-7)F%e?KOtRoqhSnSkpn}VVfa^v4^yY1iXOI2hp2`@|50w3@+8S{u+JLL zHp1cZhnr-hA%APoqHjR{+s|QevXcx4cO+?;=IK40!<41Yp!@^z?xQTj;XBfFQTaX$ zPF8a}!ep4VG8!qPwUc_-_Nrw;rGA8IWq@RH0L3Ka<QN7QEB%PlT6zOpN1fzG0~?2J zH%vK_WVp6a@uGQ&(rQ14foCTf4rVls-jj-cZ=Ho12CkiCIJnU?4IHwPeq=v~fvb|7 zEuIyAwRC7dhe>ZI84k~A8l|*?r~MoTuAO8!xY0D&Ak`TM`#B6;mE>&k_MTt+IZS#x z$#8f^)2Q=Rs{Wj_;yDalJL!nhh}{5i%6=fvVc@Ey_CDvcrE}|80yo}2O#Yap|Ach* zcJJZp7JsbcpOscDPwHI4F!hKYLvo3v;mW7)`bRkbQTk-`xXTFPN7Khj;Nf{gj**QJ zzN34SLC>Owg6+4C9*9+2pQ~}t72NNM>1$=D9D7nD6d9V&2d5t%E=tH*>tMsQr({ls z;bCL!rzJvLNI&cx*M{#(ZxMCG@U8SVk?rU3`E{y)MjC06x`6D?8vGm{zRvZJr-`aZ zL-aeF#`?6dpT!CL{K`n)hsV!>@Xtx7`h2uw{r&b1yUsD@j<e85TL>MFRpW~4xWn^Q zLvxOmATbS`c&8`F+FOPS9}=D`!|*bJvR!H2#*UG^4^w{BYBGZIqiKhP=Muler_r7L zA4;PwuhC{65>_<bS;~B8>BKC2_Ohd+zVJzud@=8d@m4A~@SQxvx6k18E_NA#P0-G7 zk5ESRoc{3mIqB`bWj}|@_s>dG<C;L#tm9}svfF+RSN=Om<8FhY-V>Llr#J3K9KH<) zryr^f-Qi~`JK8`aEIXS1oz+#QW$v0f{PWJ>SW_(*C>!s021iY;Tu}aAd}O*6118!p z-Wfi63gw1m*DG=RS?R5V(?gZz4o?h6O~c&9M)4nMdN;2P^*%hTC`*m7Y$yG&aA_L0 z8VsQe=z4QBn7V7lbvRh9?u5vY5u~-W)w85U&~cZ>$Z&|J)u7#NJJfq(JOxlplSk=p z&zsf00O~p18W{)4^_?TuCIZ<hFI(fdh9xY!k4IYeP(0%f9~PFy4t9UB>oAf$!=$O< zV9i<DMbQy~v~eWquoJ55Z_bj|&-M*=UijCpf&4?za3pDjM;uT?)N=%BbWVHW#NJer z7@n0@8p7{3j|7LRhdwqhOhaAe+90X3trA(rgP1!$M9Y^niOaX=u0zGU*B|9>B{a0= zEraez80k6*HDni@FrTco*BQ34-!{(M26!>DyA9xCfVB;#wt>^OYubiH+wf=G`)mW7 zZ8YODoe+z(e)6xa$I>R77HMzG=h(^It>C6@ydlXp0Lgt5%k}L@s#WYe1nm19?CWNt zhIN1{qd8BPLEL_ixdS0;Kq4)e+QuR0o)f}jj5<1<y5K<ZoyCM=w|0y(L$$S*27XqQ z<er)MC)Bg%dz$C$dA-eh_I+E-dZpXSk|{8p`LwjR!)+WTcHIM|>q!`^19CXcmP<D8 z4!=Len$J>R=^FSGU|jkT4EWT}adpEL?XIq<vQn!4FjW2Q`UnyA^u>PaT`P(Eky;`U zTdSgxtqY3<HgS5*&57e|4j(G7=KREY?cOj{UfoL)=hZ#OQjel-kvOg0yQGcd_{Gv8 z<Q@^x0ce)!{a1-$=^iSBhoqIkL7ukoS7Fv29DW(7XuZU6WNaBKPTzPFT+7Wx(u|x< z6CFn1>>~10-FX(>N#^)v_m=b>InZfyA%4vm(Va}OBZqSmUvPKxyv^4($Nn?qnyxkS zQ4a}*eRG(UE&Ke`)4EMe-mU$9vFY6LYG1nyM#7`gzBWYFrSUs=8zpQ9$`~qKB)@Nn z$l>CoMBl^-OVy2AveOfx%1wKUw?fU$+<Mcr#kz;j7i#u})!_->q^P<z;l^6o5^6}t zZ^9nw-Vb_Xt<K4orl6CVd#UstXwrPLm$SxKr3m9|R_BVjr*COxrBCn6^l_I|eRDXZ zH<0=onn>$9xqEh4|ID%`PEZ>LCt8TwduD^-HNmy54K3ClZQ)CG4_h5A63qg)H_J_I zT&ES-JXy}rvga0Q&c=E}4ncA|86w%27rnWx#wYSt-E=4y8mhym&{&PN?Em-a9rSWh z*oK-dYVU46$Ax4AuPi3YmRio1$Sq*Hp9rBREcOK<COd6a($)Y+3}|YN7R)YSxi3zR zct_7TSl8z*7C083PRV*0u<u`_=<pgH6b}VCZ=VnJt*r@j^_Q+E*KWy$jddI+i7l4B z`CKYhBj*ONk#NUjGp~Wo3_y)r6tC%~m~=UJP2B*r2{{G)z;OB!$Y#!<2|dHIrCzb$ zB#B%n$H6Z*CIrbR8$dU(^S6QhcQ%6~UwvE-wyC)lqFA|A=iswMs_DsR#ak8N+DT*{ z#1;OJ!lj+VA^`P_WC)1=8kpBKaCatcEi%jQP^C^)ECyz~8{EehXEs`fbXr%JR*BqO zWa;6F;Lg>2Ztdcy4P-m5baee@!2Hv4gVF9Hg*MR%?3)HH$_m|l+}kyCf=Cj@w7_Wg zHPQm?EN}MN@Rj(H5nOj2)z2n|qS5v>f4VWXym6;K8*Duu(RYW1DXE6Xu~DuH5E(Em z9GyzWKRqbq`llB7xjm`6o<qd7zPVZ=s#dh<8r`AqZrWke3%TX;&`q2ykqz@Va{Xqg zbqj)3#;FDoz3{Az)JO{$zowCGLA6^DEOLlMVs#xvYoXnmCW{Dih+E@Z&%LXYm0kwI zQ8+O$X)KNh)cWSxrIgDVl#q2lm_6P_WgdgQv>Sp%^(mWw{r-=IYZ~>~c-FKQJ>hMJ z4Y@N`kKQ(&qj=ik8}!`?@nf;o06NyX4Nq`GO<G%zIFkD})!^h?3mFh!x)^i-F7H$a za)LQEYu4(!auFMoXZe))j3ot~FxXHVaHyxwJT%n#5~FL6IMNa`NBj7rL1#K3eZ@Y% zMlB~wag|I<UtjD|{+U!J7}W6`PItk{u@4zdN{q+lqg^P*QhEp!=i1HTLNOZl4p5Bd z8H{2q9`b?cq1w={oz;G^EoQYXY^>&uayMnrFD;3VBge0;=Om<)YE{)eCgMYbk}*EY zVA-Sf0PABU2>G@&1RA;P)9OETH_Z((hnc1E?Y^<DLG(m@pNI;Z1cP0djp(^9JGAEd z>s=h>46Ud~|6uXayPYXtp)5nQ)LH9hT(c~Li=J>(n>AZ}6IC)bgip+NG!^p8{Vy>( zt<p774MZwM@dUQJe@j`?+tq1WU*a6@ymCXWG>TlxI)wVG^m6u;h|=xD4kCB5`WSP- z#OlWkR8ttbCi-fd(IrF+##Bo;w={KECQA><8CE7w2<8A@B(85Q_M3Hq+H9qyq5E-y z70ql7CqI$IG6HjHM5tj6(wI#PKF7d$BU#iDl^dy?F3c`-1af^yNJ8rgIr&`a$S`1O ze<Io?%qJYiK`b?jE1h0!o=oOqlM)o0GRNmzLW9=mN{EcK_+Dwdj#{auI_id7OB84f zY*=m7EjL0b?l4!>LbYn;5dTKl48E@M)rI9mY_u(CJw0v6F#uwy!jw8K@LIXes6pLb zQ+98%xBX0#H&qymzcYOJrHZf7$a~oV?)2_;?u3)DO2VoL<90}uM#5GQb^`w%SD1vy z|H-*J`!Ay}*_&&5diFW6?D!Es%QWVzfpOxY!Ej!&>T))Cz26#~cc?t4fw>De>6{dA zCts1;&3C^ft-F3%hmyTM3qYd!wJb`C($7kk_(A>3fHhS8(%#T_Que$YcQ>U4&AUpM zv-;tY*Uw##)wFGf1*>HLU>L{#kmU9LGI7~46|&l?AKqz+<0(luX+Xosd|?P!r*%F0 z6W|b2j?2?-wY{`gQCwTO+bvOB&L_`<w5@>KcQD!OeKfZ2j}m6Yg&ihr&-Y`~9V4tH zF6=mAxp8492=m2-y+)WfF6=GBjJPo4$z*T;BeCVC5q2UjEQ7FPabZ5f_?l1*FJ=?g z6BkxM*q*qs`GoC?3#%fmoiLv(d^KTS{KwA1gK7T`E`N4pQ9FEJRh-1ln)+`i{+3Bj zycHaMxcPSeVal{(eBX$zUo^u=UP`olIq~&>00!msyaODBU+;wX?nSN$p9-38emwy_ zdysYQE_wF~VJ-MeTw(o$o%o*N?ZMeqJwsT#%P--nLg%=!bizs`%oUzNSpRo{hqK|0 zm%J{&9UlL5w~ZZlgf^0QId^^R%;0{%3)sE~8Ed}dly@g#yYR1eh22G%*X6h2$3NXT zyhWY@D?uXp9G`bc|5?VLBbE#rDt~U8mTTT`J9Qi?tsVXxe6cT1o}Gw{a6AD>BL2Dy zco`P2+2suPY<YX+<qZdCByobToBtntHraat8H;dso8~{4>^%p6mK9cpKV*gFyVCJG z=x;CZk9{K98@<65ps9qFZPqYVhNL88Cv?vu%)aTGYj%t_(p7HM_}J+}q$}7In{EZP zJwiIUpW05BMc&sw9vilguoE}N<~>2!qu?j?v-9o)UJrTQVU?8YZA<pb=hW<UZ;|f! zmSpd_uCNurTM0a0G|VuLlP&_zO0ku2Xb^%YGQlO=mChjDgK@abmvXnp;<B4ERzoXy zxgn_=xVUMsmoieJ%eZJ6Nk#$i4wKGJ=iQX+qYQW6735vQ=M>%PN=Ua4cw=4gB9fPM z?yyeESVG;Rf{eDjld$pRb%*tm_cg-a9fb$qk*<ZX54gfkpf^7V?MFq!l8kif+fNxx zwe=rmWPo!!b#tdXLKz`wb)G9-Hf7uya&%;Ak9$d1Pd$9mbm&c_J577I^PZuM=fEXB znl8yWPFN@ObGJttVFr2KVM{2(OSx{G&k%N;a@{yTO1Wu-xzl9<?-l6cPInNx6oHEy zzedt!P+vEn&L?bd9R21~ZX5Wy%gBbN>2dr#p0La~8nl7mF3ND@VvsJMx?Sj^OCx3M ziKA6L>Fx!dyKfobR~3iL%R;NTbdOTsO6Z&!EyFNgAze0oi|fMmAAHb58Jpw!Oa?f& z6K3l>(&h!E+XWA~Wz#F9%L1N*A9u)0-JrcYT@mHJ&7JjtvC1_JpQMW`V+momB1_zS za35v#P_ENP>>VIoB{X%n$7Z2(Ts>Bk&PN+Ld6SG?(!S8j-5xKK_cZAo-r$xw^6mwm z8<!IDo`Kh#`X(7I<jp6{T}CD8?gVEyosU6-bZF(48=~9S$CR67<N~jqx;g0#BOQ24 z;EfNu=(n1%-IP1s74`~Y1>o$a%L&2`!fO{r(<K>=lu<>PyB@a^b}X(QUT~gIIyVgr z(sdH%u5Y8%1DxITYa#3eZGN$<++M==#mS+&fR{>`J-3swte<jM0MA|SUikS;+&Ck8 zLMC*HsRv;`!rl`tmwW%A!3o0nWP|>L5zl~2CbV+bL*~&Z;>t}WY!YqcZcCY`t$+qj z|41_4BCMah<6UJO2IrOZ1xMcVZBFX@9Q^05+pUz5AHxUSdPO}d!P%Xzgfh-RD|dZ+ zDPt$?<{o=|z}pkY2d@FIEUvz_gtY_DJ<haKMp|6|$OPVQaB<UWJoOk)d${>3le{77 z;g<KWk+*<!Za(mmw~=z)^6y^Kt)PFn>+1u*SHQ(71G<pz&Nz5Iz-uGS=`%@26=6HU z*-e)oXjKcXY#WpC+RMPpB(FQnN8Vg$<!;|SgcX2`n}=3|Uk^CD$K(Rw?Tq7>J<#PK zd7b`|Wb7kd2DrGxdI?(%ymA*0?E~lC@KvcR>^Qg_rfzN-R!f+ddbq<@0<Rxj+%(-o zST;QA=AmQc&8G~}Wz`@3<1{!Ifu9>*5A_{SI(Oa{;1vMRT@TUW@1uR){89<LBZRrr zjR)Ro>fwf$Pr645bIY*Jq<a~<xWiUT7`V9GO>Bm>l;N&#74UAQue$4z3x0c{i@UEL zB&>|Q4h_(=3A;6p4<eM23Z30NF7u$>q;r=MA#Y=xoZL&g)5t`J2FNDDQc35);}$dt z1D;#v+(~_R!b9%*=1Se-`p1Lh&5q->GV+dxes25@l6MdFb%%`y=hf8BP3I7KSAw5g zMu?p;634sy2%As4x$%3Byp6zf_rd!p<4$Pr*0VcFw<oS{>A>3)!>7!tNOvFgaJO$h z@Q#CDmWy}WNtXq@82%&dW#GBP?j&y+xHxTY7;U5r#nhLZq6s@5$5&b4mmAmLb_1^p z{M`I}7kS@;R&JaR5>`w5I(&c}qCJj~*Db?}fR`HA7gEVPKaK`>k+(g*AA#Qy@VnGS zmu%og;`;A{gdL2l#|iSDfd&qK-26$o8PLiJOX4PYXbPR(_01&j64E&`JIOc<er<8Q zv5R!a2y^trB;z!=>;)IM+<la=eT2Eoy%%^b(9d0N8t_iU$*X$_yDx@^&@F&>Ct+?L zKTW!Waed)I>YEJ>-0fCR-tmOF`(-`pN~o{99<`(^iz|0CI9E{*cl$m{-k!L0c5}I( zQN5YK-K<xL9YOy7mG+|5zt?uK-PTi=IQX}{XXN%G8B;bxYw5?GxZS)9#FzQr=bjHZ zvSW|f5SKXi*8A`q_-)zJgTJTBiQk96WS$e>i{Iz+AI9HX?!-Tbf7e_me|)Vv@5NsE z7bpGvXYo%ql<cVDeJ{?q+)(qGUf#2x!<PABL*du<lfm{wcl*6U`;}P*{wv#WiJ@s* z|A)c&Nb&s<tKHsV`^i`*x=T#^;TM?Fr=>qgKNkOp{!ae)+3$8jd*55Sof6?D{3*Kq zq`3O+B45=A=;Ur^FY8tIShM<x!F|M+mAG97;gxE0{h$~XkPW>P$Ha#AB)}myh2xWX zsrW?a5E&|MEq-_Xj=}RK63E}N4-T%Mjyd~plC`eUGRc8q>t*fPhIcpXiao6B?HhuR z&t5`oiv9_#|InU$9&pN&6weV>LYUVT{xV@b_p`o%i-i*FYl9ZYfZKxG$-Bhv;aP>h zKZ|t=D=apb_C1IFfAt7$?lMQ0u}a1lyN}75g}YrE!8z9|=wB&cjxhEos!x2_u@Uqe zJCC~_$DvD!74fgENBbGwUT+P-U+v?yeCi!x8wtwpdNeZD$Q`!o?*|F^=>LpR{#olg zy{z@Fj$7{)*qi^P>*0Gbv0ORvGpinnaM0Kd`W1QTmh<s`cRlZ;y<{Ck{@Ph9({F#r z?^)KdcE6<SxBKUb>$&Gji=HD`3$(Gj7g=pQ=ZyDz@t6F_(GMOK{|_Ah5&SI=I{sJi zul}~<kKpg`ap3ji?{)d#!e8a`pTXa9zmq?ewe>yUbn>U;Z~waE_lh6Bu}6mS_<MId z`F;3%KJEA?;XiS^<Ilx!bUXe6{4Jk!{3ViphvT1*ziOM~ufpGZi{oE`zvL#zzZ!o_ zn}c7A<ahbo@vq+Oq~D2uPuTJA#-AH<^6$Zati|#7h`+({+wEvSW&UT6Ve$N%NPpRj z{%K@6`lp+(bN`#<>ERLTOfBzVe^4rPaMxe#hX&)vKAg}hzCRzN5BFZ;w8IhcU*!00 z`r1#S@h%tM@$lMMS8sopqX*rJzxRB{f0x9kI{v-*eSb}g>P?U0??0&ZZo5qPGtpea zz5X0u-$di5n?CM#&!+5%Ranb6|8??giPaXnEq&cxKY8EttS;Mo79GT$&s~ppWQ%QE z?|*D?J$iqW<URIgviIOGn3w!Du}oF4Ej_IV7*#Gf?bdpKuT>8>9`5%&r?gzII?LWX zcOK!VL~Wc;o%&h#x8+|E{?-5G_}wt%-A#|G|EB)@+6eU{-#h5f@%`)Yy~s(|JXPYw zX5{AS!_=40_(f?IPaEmOV$+mxcRmRh8;D9zU+~8Dfi%K;_Qvv)m$0h1u<?ZD#)V}G zytuG<yu@#x?Y85>yY09CJD;+aHxG9ePVB)^8x`;W`}hAE1(FO|yT`T1);!4&TVrm5 z@beIe^NEvhd*2b8N%@LqZ{E;oZ_F;9I3*`{qK|LM@=2_wb;T2xE~%JYFwrL)!E0+c z_7o_dxFryrID6KZ(M2_UV{5~j#w|VoGzE(%avpJJkQ2chYJ!tDG^}lH4mQ_?CbLU^ zW=(KI&c-Pd*%{u{P{&;f%k(~eU7CR6TOb-1o&-4lKOKa$UCm&Xl$(=Vn7b$U$GN}E zeLMHuDVbB=J7xNm!YT8od}hkGr#w34=_xNyd1J~IQ%k4*Wok}dTi&+3U3s6&dnoS* zc?a^I%KLHNPxD^R`&Hhnd2i&M&Kt-(C;x){i}Nqd|4@EjenI}M{Q3Ed^Vj6J=HHTU z=J)4+XWA>%@}^fz|H$;f^ziiU)Avr_KmG9Zqtj1Je|7r&E0<o`c4g<4|90gISH5}W z->w`}aB;z91&a$lTF_kZ@q!%%-36a6_)@_W1-~!2d&UoD^vyUv<JU7@o#CB1ZsyFH zr88H}{Km|lnFnV6Waeu#|2Xre!kvY?3STJvP2uZ>mlb6f%_u4>x~6D#QDaeS(dMG9 zMV&>TEZSA{*`m9OzFc%)(fvga7ClmwQarABeDMd0FE5^6yt(+M;;$BeyZCT%r1-Vs z{^GZa%Vu3O>m#$)%vv|AdDf?A?Vk1JS>K-Z@T~o_emm>US$~~1cJ>Em=glsdJ!^K^ z?BMKA&3<9_Z)Y1m!x#^J&&!>i+m^dM_qN<`<^CY|NbZT;S99OY&7U%F%BCqhrrbH@ zOH=-R%5R}?`qU{?r%x@KS~9hK>Y}M@rZ!CtO}%C6j;Xgz{p{49sYj<iH#IqLV&0W` z#d&k`7UwO`TbH+q*0?k83s66j_q)75=6xvt-}1kc|44ps{-ONKr{zqWK5gZ+uT8su z+V`ftJZ;qU%IV9eAD<qXetP=A^f6andgTXa<j&YW!<_Ny8GC2s&s;gPX=eA#&p^c! z&~I1aXA1wV@QuPh6;3GnP|?()lA^1Ms-WJ-if$~rz35Kp_F&P$q8}IizUZ>zg~h9j zn~FCUcNTXS?=Jowv^rCqG3&##@@AFJs+@J*tfR9ooPFu+ugw1X><4B)H2X)he>(e> z*&<NVq0P43?%aEFznXi0?*80Exkqy!nbJ4q`6(x%M%L8qsRyS%JM}-NF3YRWyFc%T zd2i+A<bNgq8~F$Ge*q``A^)%WS4_KdTG_O#r(I7Se=zL>(|f0{xpMoJk6hV*W%mEq z)>{AvUH|d_V+<IGG%{dx4GBNpF{BZY4n+w8DZg|{4FTz{(c$PC0x}xOQPLsOk^%~d zI!b?!&j<AXzu*15^Ssm3gU_p;^`3@cD28D;M!ZqQsA1GLIvER%OU5<hrg7JJU_3IO z8fnH$BcG|6wprP%Z;mr3nbXWfbFR7EOfmP-T~SsxtC$sMb+md}Bdue6m)rDKnkCzY z-PoRCZ?;d^=j?0tBU^Poa6Wa~I-TgH!_FD!mQ&xI?k;xMy4&3E-E;13dMJ%=Qrau; zDW2uUd;7iH-UDxrzsmpCkBE<mILac*D0o6$p@q;+_=2x-SU4rz6J7~<#R6h+v6@&{ zY$Em(2Z<xZ_2Le3zxb>8jub0hlO9V2<i<*GWrxyOZK)nrPcdQnv;=L0Hb$GGE!LJX zV;i*w`e%AszQ-n`7*(%teqy#UJDEeN{{(XpzvE={IKSgN<|8xBOlM`ba$4_NP5GU7 zvxZs|tW36Ne_(&gM9r}0+pFwkJH<|ME;!4)&HnfPVY>YW{r;QJZ=xQ5axn4;`GsPF zBh(O%2&aXcLMhP`6X^48;%PBLDoB5?lHQVI<YIKRFZZO6hsvYnHSCj9@&&n*(o5N* z98x0H{_03|nmSMYM%|_UuD(>$X_+-mbG52kTdl9QSF57e)Enr{^j3Ozy`P?-&(as@ z$@)(HtbSAfg)I_k#2W9?3x?6w7-alJ{cltI=SH-d%gk?<G(EGr+0<-lb}+v%dzypH z@l3-UGs#?Gt~0lohxjVz&1>wL`{o~JR=!F;IznOJyl;JA)w7ydt*lN~PphAmV2!e7 zS_`b@)*5SrwZl5X9y({;u<l!rtUs*?JDVM27qd&-<!#Nb%D1d%H?iB=9qq1mf4=H; zdyc)t-e_;Pzqb$CXYGr0)i2Cml#|)X?&NpMI29e68LaL!behp=9h@QI2Ak%ra+00z zoZZf!&I>1<`<7e4E#<!J3a;hWbU$<(yY1Yr?qDW!mb<`R;;wT~(2Y0UdravwH@{cX zE9<@InO+UAuJ;MMt%KLY8|sbp=6DOerCzdk()-c7%YMt{7h=D~`I2ABukJVXTl?Mo zKK@vLy8oTOo%$bVrmy<{1odwPP@w)<gzQ3Ip$L~n5h~LKb%kca=k)bZ_TV^ShOk-K z#k5}#(uDM4w3v;XQ-=SYoXbvZBDN5_ivz?t;u@|`invGoS-dYk7o()ok|LRsFV&Qq zvK>20J*5HC2x+`DQ(7Rckk(7vq`lHH>6~;)x-b19<&{gx@5+K~$u;E`a(j7>yii^$ zC(~a)vMry;g_ROYS#DGVrGxT?(o-44eVVMyROTx?mA&-dY2~_dM|r3`RbDFT)k16< zM}1$dt$wVwQ9G!8)B);Hb*#Eg-K`!_PpH?_+v-#Gnfi~KneKdFtD!Z}+GriLKH30n zs5VyHrR~!WYiG2Z+_^OEm6l$ATMv5oL%q4)QSYh`(!bJ2=~MJW`VaaU{fhpp{*>O$ zWV~(UGwK=*jpoK@Mo*(ZS8$v$#h7cHHZB-f*kozO-$qt5r<u<zW;SE0KckNanZwM< z<_tF3QuDHT!@O%gF(a*L>m92g-CNFTV|{LYVfAIFjko4l3$3Nx%{y$iC)P_VtDVa( zYL~Lh*($x+%l^_HZcnpk+so}W_6B>0{g?gHj&!m*u}*PEa8$ao>VLhM<g9d3oE^?y z=a`ep&FbdjnwEDZH{Px4en2lybf>wq-6VITyOq0o%suU1cJq0$UU9af<Gt_I^BQw4 z+Ie%mMcy)RJ-79sch<Y;UGskNiutAe^1kL*^K1Jb`7Ql+epi1f+jG6Y%|GIwr2B6A zzxYr6h;ICUPw2mLf*@!@yiiYQBD57c3SEW%Lb9+)*e2{3&I&)VS$`Ft3V#c#Xo>M+ zE%76<mH0ogr`TT{CT<mXv0smiSH)Z6?_!$xw-`;=Rgr2*jik0xC#jz_NE$}p9h8nr zr|7l^(i15{&LF=f=aoN{8_6HZZRK9_m+~liygXH&C!Yr&-H;#1FXc!jhmuz*sFYG# zDs7cu%MDk?D2ZI{Z<IC4G36)ansS@l_Ky;!=2MHQWmHwQ)OfX)+FWg=wpV+x4~M9u z)miESb&dM1nxgJeZ>aaw-_%!Xq!z8^(u!+w>_=Oxq<x@$rH$0aYcsXw+IQMEaMls+ zlJ-c8(zEGBbV)aKPp?7ueW4H4$Le$Sb^0cKo4#K^$KL!~k2dlf<qe6w`99tEIrwXY zF~eA4tmA_0GENwGj2A`*^BuFS`JSnozFE)w+#FzzpzDIoxyjsRp5U6iFf-6~Wv%xt z)$-YwpIZa05!MWAg|*JwWbLv}(04Da4E8%=$BDLW*XFW*YJXw(wWr!?bXrlTlv9pA zYZ+eGUe4qYvn_QF(qlh4H=Mi96Q`_O(N$c}t>d<I+q#|HUhW9?-D-EeyP4~I&AsK` zcmHrRdWAf}Q$5?O>b3Pcg5vsnW9YPvptxP$A@<xu?{|<~Hop`&&h;z%b^I=VcfYSc z6g;<rJ@>tTkWPE#|KY#z1D4c{KFc7yBUGTzstO+njfGxx*$`p0FdL+|PdEgk{*ev$ ziXHd1SXfj+)OEy$;wR!jaVW@dvbb2>A|4e_is!}a;!81|lu61d6=%oQVZ(J`yA1{X zO_ml*Ti9#orMuwobaEy+r(9e%<vJk14)Or*=16(6yjb2MAEVRm$}i+}N+u<zQd}{W zI!aTv+W=*#GLqf4n45Y`Ij`JO(v-jHuxx6qS_+g{2?W)M4(p&Vp$ksZ0hjdKdPdN9 zL8F*a&ajMnMq}e+qn$C^_=X<XV4MX>{R$3$W~8V723NF(*~3hr{$tJQ<~QalbA!3n z+{^tuZ(d>pJuu(43R%U$QW8kLq16nu-oYAeP3B@ISu3rL)*0)fb=`W*t$b-^q#t7K zcWu$u?MilQyMx`&9%K)*$Ad_}vDbq=cG{`-UHdotA1-7TCy!GSjA}SOyXZrwtJBB% z+8Ily%;7q&cXl}koTJV;F62umtDDo!=N5C{1L4<l>$^?e*6vVuB%3MGoe$dI?Cx+6 zx@X->ApXDHS8gV+4ENFCKGyLXav?i&AHVj-ga7AwJG@lysCUXc=Urk$-DXEU@}7Fn zy}!LEKibdc=kjCxSgvNUw*)qq<;TMfYWa2jMr^Q8{kDE5|9^fj|0{o_Ki;3oHe2Z@ z`y2hO{%(ICH}!;n#=q#_^&k4b`>*_nNxVxYs8m!aC6p6X_F7Zn6E13^Fi-eKSOc%v zE1cw>UJ>pJv0^c<sVG+Bnl|Q|wh_CC3&CEi#7*qABjS(ZHSxCi2!vf$dXH|a2^#w( z+-$w1<<c5ygS3Nw3y}9+=~pRDDldz$j!JTUI<B4EMeYGwOO`ju+vNRlzn|oL@+0|A zIYLqBIA5u$G-tbg!EXDK?Un*A-AmV9R(@6<hkX~V`e622bX;4tliH7cHbR{Ue&48W z0lQvipWRiTgxl;Lt&mnitDx0kkB!r2fn}F#-?GULYDcvnwHq**C)x`wlb%)2uNT+j z*l9Kl^5gKH_UE2X(r2*O7VB&D&H8qIkA8s5dJ$asP=CQ~4K8aTqqtGVs9@MeCF295 zk<pq>*V*W9^k&};VdIT9Cc-%v8Ox0I##STM_`x`1Ts7_)zZrkf`I*h!W^A|tWz#fW zSVVQR4%oV>`LWsBY-e^hyPCbt{^m$f<xF#-xt6`S+dRx>JZIj7xjr>tnOUst@YfRT zNZE3%n%0L*M{D+Eck4?K<wR>X^RdEO%Y^K)Qms?gPu5-QS1xrLbCSi*VHdDVFeipx z*{)+Zu$$VS*q!a}_5iN-WU%^Ndm*@TgT2MxYaazwUbi3Ef7&nX2qz;`Q-Hat;8@|@ z)O6}PEu1zmyxz_*xbbvnfs^E{aMr!K=jWWC*|op2ZU1sIfHU*Dg}LoATek*#w}IQt zZSQu00}gS=xs%<Q?i_a^>}R99^UXZnaUZ*Xx-Z;xUUo09SHz2B69+t~idWNX%4B`+ zb@K*$BfLr8Y;S>=<gN5lyq!$gN$-mHvv-f({KSj!Gx|CF{C*j~qHnUFYp|gkf<-@P zOMl4}jbl&G@aM3r*ZEugJxox*OCI=-{XhMe0XAL8dyx>E<`4=9B|r!&x`!`R5gLF_ z+X$W6-U-53VLJPJfv`l_AZ%f(j<UnAz+mnQ4}}*(I`J(r4}7ewsK96{v(f9mnXumC zSK=sfoH(0VTPbc3zZX;CIv2znpx58TVxZRwlEk!m(#K%e?ritb?DjcQ64-Se$n}tP zR=OhHWa9pU=Vz1i$%WuXf^5sx<$7`xxs}`zRFMEnnkdg=->+fg?~zl%vp>nV!Lz~M ze@n@u6j91CiI!4@?cWTP@fzEH&HkUKELB!3-zmG4!^%13DtF*FCNjO6U5!x-t8uCb z!mXj!SDUJ>natkc+cD}SbvE2<t-4j+s~%EMqa)l2d03>DRm-at)k<lirh|B!YOS>P zS~sn~He4I6P1ojVo3x!^-XFB{OzIu&ckP*$TaRT<%j>EhuUFOU>rLToU&7hO=u`Fi z`Zpm0Ij&y-{od6d>o4_m%xG?=Q-j4<Gd?uhz~OrvV~j*&zOl;K$VBclj=|}!8|lnU zW*)PUS;DLUpRZ!pg4=cj2Y(H#pJ6UA*O;4`yaP<$kD!vr=5sT`%3|dX(Qv@#s#tZb zkF9nnAib=?;Ns~alUr-0Sl?S^?cVl8dnPk<*1p8e`HTzG3l(Izljv-BPB>@5A-9}o zP7!X3?N$Qmwsa?PO`f>r(LZW%H>P+q>FJ%`VedG2_9`f&I6eFxm*8I{JIr6p-rwc# zhe`eHM<kOyMjQE<p6mc}?I{hBhD&3lX>8|Wa%s7|tjV?5!hPi-@_c!vypCPGOFj*{ z%%o&j-cxKPUa6+kqxRn@>rsM!R(?@FrJ`M_=@4~lh#7NflJ+SYTxYEZ7;&05TU(^< zVY43B9>Y!|^=LhpUK(cIRBs6@nF*`j#s*E*kL%Z|O%5Z*&<!6Pc*PjP)t?Jvetq-z zaP1@cnq90qc5{$iTl;_ZS8#_d-0Xe!5B3c^9eg&>lms?UU8gmQ(j>lQ30LJJe-2u^ zje3;Ldk3^u%B%0S_7c2NUYgg*@4<`@^+%(ZoC;=ncLWj5h=@XH4BcUs3x(yvLGV_9 z;<HP6(T)_!mMVkU8%U!<?d)HKURJImH<UZcz2!n+q&P)Fqg>5*+N^x9oCO!9S2L@* zLEe?r57j_XX{UCF?G04F26Hb#O<SjKQoo1u9aYbvv^-WLn1g~^S*@a`Xr9(n8^!mW zs?Fm%J=XrxBJ@n)?cBPeH_|`lOD^RaZP0gsvaW)$e$~_TOh%qJS4cPN!|wLM=NiJ} zdYNB>sCJ@r9yL#yA8{4h)0Hde$v|5;4_ZnGSBr(IiFS3nK3zHnR5XEaxyV`SjBty4 z6aVA!`@G-07jO1wN%m%oH(PUrzx+R3d&`eF5fL$pZ~B%{Tqpyo)xor#g|CE>Xmm4$ zRUq2)!f!%mF`pRA1}rbWFZLGqiVwt^QghI1pjIA&51p4TOU31~az!~w-Y9RCbAt$4 zha7u?GELctdUpp-omVZ+7j8#S?ooeHpR2jF!r>mNueD~6{7>tJdKFy!K)u=pb2+U& zWrL*STfU<g)GO+`?&{U_k!+4ceGy-E6<>8X7yc;9&ow>Dh&HksIry?M=s!h`l13bC z=3hl{7T0`lc+D@sW73Q)T=8-+m?@}#^TDgd(RMmpTde)oY3qV@*}7%@5?<U$yNulu zZZgnbW?!-Iqx=17ccOp$peK)XW^*ssI2+gr4^TzZoC;jWk72wiaFE~KVyG<fFprL2 zKW{8`+36iY|9j@;@f9@V5nQcR{$5m+C;oFk;u`O^s6%=oD|IL@d<fQS!5&CJJ4q5& z2wR0c^!i2NXIShL7;Gif!4JhoVso)I-QP?65)L~-Ocpnyo@^I)i~G1lN5vE38LrVK zu-{Gbu9!zE1k;G)B2|+*OMRt*D9z)fg=i@Mvf4*dNx6b7$p&h36L`i*d7L~&o(u9j z@*ks(fXkLq$}>X_`=+zfR~d-TKTcW5H0@9>g$l}JCaNeb!&R%Ho-|g!Qb)mG=c`Fv zl>_QAFkc?646{>TYl)`UDXjbs{D7?7iB8maX~;{z*PrPT)Us5l=JhrP8beWVqs_+5 zNFp143ETZBJmaNV#46AJ>1_>xU0$;8QMtdsN>SjWuBaI!(Aw6av~6V@9fx85ZO1yr zoU%?0)a}O3Cr)Rl8}&>;+fIcwoIuOH;9PR9IXBtx0qQB^nr?NsHi)MMIA@Ey3$}0- zT$2G^*F(W*<8}82u<sXnYw!nddH0#RK)3Ki>|ft+;*aqs`D;M<cm0S*yg#ST1%ygM zbD@>c9_BbP#PZj`8rejH3Hw@{f<Lf4)WWt>yNoczShia==>w@gNTR(oQJM~7Pmy*@ zSEV~>5l=x6ndG;@4=un9ZQ+Pr<Zd8`exUZ*%;Z|8@}PWz8s<_OD<3nN!<C6(gOg}o z&y*O|RI97a*m=|0cQ@4gT>IeC7to4?RkE~rt)|upefeuGNn4?<*G}LmT-I)J;nTFg zwP>cYHmX7|)YyUC_L*GvB&KsSn(RLPi2euIJDPcX&v3!n<BeHHit%GOg*ihV;j1@( z#3uOTE_UA;^CJ4|J+N|7t2B4Ird1zJx}P-&9bu}KXw64)4OIDORvr}AShTCg_Qx>B z;oR(b_DS5IXLbzkPjz(D?jfqZ;oN6Fvr@|fZV~FKpq0j>mNs$|+^<omR-hZ4a4(=u z-C}Oj+`rvuuNpo^bFUY(JCJ*{$=e1py~$2}<%wX>=6*kamcPtTK^^!bR6)~4tfsE- zvp*XOU4-7km#6|Gg=yf*h0O0p9H84ml$cq}DGF5C6|15OG!s7+JBUlg)o23$PHJA1 z@;H>IfS*l<nQf6SNYA89=;or_SZ)alTqSRikHW$(%2(w(I3&;EVVOaJ0Rm{NbX2-4 zlR|xI3BFJY%4VvPQO&C6R~6L&?Zv~wJ_i%bQkSW#(UZ0_jTy9t+Ccc#y|A89)Uu8K zIV#b&`W9-a;HK1~YN;sccZ`QdHgK0@z7N~!0rL-Bxq?<16ml1ZygF<q$@-RywbMEX zcX`3ZDq@#J1OLEoXg9N4fem`1e-Gns9mPvIV_yJaU9)e(?ejUMK?pum*^;^?aMO~V zEzVBnGQV2_#?b<{(F5*2mJK@#j`5>=1zr1BH{PoS;%er7ijLSR<PqDwGhnV?y|O5W zZT-$D*HipO@a%m!7U+e%s#r*^atp3dof=IIE3_8uzYRC^q42x#Oo&9i(L@K0u%-Ap z6FEVgiaNbQT+4>tiJK86MN3(w98w-BhS@9{syD5r&!xerH_NEme(AVW5Zorhp+A(H zGm{;e$n{L%1FBUDyzW!0uF4|t`EBI^*D=ulGOIa3<t5mhGMn>5wF$`MU$yzBnjOqh zR4c6sS`|?DRBb-9xCQ)nlDa*nauMju`M8qtdM&-P-kV7rp^sx0&+8A^qoq)Fd>oOk zaNDIgA`jT5{}@p)+MH%#P;^C8HmjK*noYoUoAE&InSZfaBdx4xIE}4utfQb})2?CH zwHw(h>~C?xcA(W|cCx`7=isD1b7XLEzzPSrqtSe~q4(Zrmhy$_+idRus>yxtFMNgK zz7CUX;kWS<xPs&T)l_B+O55>J{lF(IN^#(96;N|M?qDn2u}(q{=4k{>Z5ljnH@GAf zmUcoogZ^=e*$TMY1K|<+Zkq5?h!b^mkUHYWD7@{(Zs;KY>bnJ`5-1>&WQ6K&A8z0x zX{+=jsz*W8wLt0Uj=Q>;2|FWSm!r_s$}6>%CdwRTk8%nW^GqqAzKfbsA8g%CodB|) z15etc9#oJ2r(@LC8f%~60t^Xx(PZkBq^;C8z>Tiq1>DshpvXR@UN5Ow6sS9^o<q;0 z$H0`z=oQ$c0ZVGF_e9H>4|4nt9b-SPR+^sK$OgJ83^#I7XvgCTBpQp2?~KdF4P1dI zMn-C=pgs)1;~T?d?l+HwdPCp?<YJS4jK<K#>R}DECgJ#Qwzi`$9L3?xXlKQzDu<HL z+D-sb2HO83dpEAsO&qD0b_VAyrxM$AxHI0F0@hrN`*a^o;H49Z;$IX7^zU`-#(hk5 zH&OdzcutqxQsITH>oxK|^S(esTL{Ph1;s1|E+mG&QWL+G-w{o00T_R~pNdlq&KLNZ z5wt)InA8_)!qfxZD^T<U-D@W`ze=5DkWYX7#S!8%@jLMl3fEIH2a{M?swZ`orb_d; zjK8DNXNFhjmJ2e6y+h@6j67Z5Deps_zk`1s<Q59z3W<sao~Z_onFL}@ROW(bl9c7J zgyayvo`*MQMxT!b!<NSr>J2x3pw=YQ&>=*whqP0$-pg8Xy(~yIN#BSgo!h91y41n= zABxg+6x6*ir{^Hg3Z{i?Gs2vR$N1R%+swp_<+Sp1<%V$K##+<B{HfLtT)4;FxR}tJ zsen!%Z&$-ZObivCB;1+Rc(NN&Mz>R|d-hY5(d<qkd_$kqLsO@{)6*G>COVzzT<dHG zod(s)<>q(G!MO&)SA#ko$GQK<6+O-C!<`!rf0*XY0?DlPHh@?6GP76FIc*%k+I|CO zwi^!MOn<Jwn5o^(?F;?i_;e9T)GHm{pN;cZC#+b@|2&v6!eb#j`lJt9Z5KK&1H>8P zeD2;_G?OjxiSuF&=_B~W7x;UFxOzvV%;??a*q#=wt-IWZnY=E)lG7_isnYw(r|iz* z$^;l(3d+VloV$~#jW?D1Z!!Y8s8p~=<5U3*T3M~BHXtvs5d68En|A^Bk%oJcUVB?B zrhN?O2o%Qe@#>z#HZtlWK1n5fl1_RbcIX6sAu7cd{g|HJ$cs8&%J|e6ZcH%d8LOGS zRO2Gr;O}G#;<$;G%?4(R(2JV_Ki+PhHLs%gWx@;5tg2kbp6Gj1aNf4!65m75i^Lta z@rIi)chl_!)N_}8h<kX06vhj?5E&MY>`DUZi&<e><&bmQ`NN5Fv$<8+wV%2j+@7RX z2D@#Uu0EiYf4mI-Td2^b{CQxL^&~G2`=`;8nW=i|BDPbb3_?z!V5lccT)l(r&O+k5 z?8+X@(qdRcpcCJL-#r$ei8-ZwQW5E0^kRjCN-Nl2Pwv|=k|_(MrBW6-k6c(TiAo%g zT9ts;`VDjShg=+XP(jg^55Sotn52WsMdhxN6@DFX>re1ezfgOqU*hqPQ)jAkxo|1? z{8_Y|T0Z!og^N{PtE+Y7!u8PxQJaO@Qf&=7MXHvCJ^2nk*1PcPPe3Rg^d2NXcIt;w zD9*yIf7c7c6y7sb?p#BoABbhSv4g2QX`I8mxNQ_91)-Ass7mT%7W`p(sLpORT~JFW z*h2z)F~F7qdO2WSVg3RaKcig;4%iDtV_c}NCWk!Yuzfkq8GY{j4`pZoTyO#jnK{lw z<}AIN8^56(8JRY2XSX*AnW^p>&`RLJKOzxQ67Ms}69xLvRaDNuy?mjzIS)TzEq>Dp zIN?Q9%->$SPGMjxf!amkuUBWfIt$%|ez5ZeFvHa_!(I5B$AuhdlrgY$4}G$eI7XZm zVwJt(F|sv3kuwU^$ns>3hN3D>l4gZ9TqT`k2c|<mG?l7KU8Ny4>!S=-zGk+jDzng% zHY>%#Yu8oH3Hpdb@#sc|D_{cSwf!hZzi5AQ#onSa`Sj}G#sqyd{B0h}-X<!upR4r> z?Ef}*tFh72_|o{=m}JZ$m9xyag`%DXH?b%@TrhPs^ATLFN#<;-vWvZ#o<vFsP^D)z zpf0nyRDu2xgYNx4%13Lvz1_v`Lx$pleU&?v%_)My^d8eP$SH=Z)RGKDFZWAQ5L4Xx zq1xOF?{A1Vn(elN?Y5C`e+@MM%&Um=_hIPIw8fbjj@mR4WS<iHei!kWnVoLwB6jor zv*Y^}3?1YwVh*O}J={G%bXz)zU*IDT5|d!wf!lHx7x~}(f(p{;g&s9Nyh-c1Npa}A zRpq)UQp4miD7)Xv+i_J6%OA1T`h<IJ89VI<<pP<f$I5f1G+QiigsY=MrK*21D>0g* zRR&*-pbClTPK&`8o3-tsOL7&2@tal?4AFua=|ak2Z0L$Cq#nPKFnEqq5=+J|4lLM< zihNHtCfdwy<_%TU#%3Rq1dBu6G?si=7i&1)ZGh%4@%8U95r13h?YHdwc41I`MO?a} z=%n-PrEd~K`|ZP^`iu50JDS8m4jhLVasx$i9pcz#f}`NsRdVWw8sLP`Z&=A@I{@Rp z<2-h9!nA!@S##>wk=l*Mr3;Y$QTJ5n&;9MD_cD9A|MPSk!o9nAy}d6<uAK7DdzVS( z{o`e12UhW$`BVK3=&M)oZC~%cbj(jtE>vqKXl01@&j^==8^RqFuH2$2RzXo|$sQa6 zrkKF|yjD#fh%dy<Qf{=95|S)6mRh3ZcSSiFD@`E_a9+wI7vM_O0y~c3O5H$}Ph+Ao zqRZ#zT9pPrsxY&$;WVv*k?jpN_-Ek#TxvnkL<`thlDbkotX@?APzz`!QD?tGQJk#J zKvDljOUB9H&a9o#3W6<UG_cBgL(u&YCT${4*D6@r1N|>pnnh}|6Aso&bn-~DPBG*| zN;6%u84t3rjc(Ek#dZrG?J@JT`7=I!c2GwV{8=03HV_SbpLH1B>$#QJw(KhQ6nil! zW4-;Iy$vrZ$h}>nu8(ZnsYxd36X!D!M&KC*j?o_Hh;s^tosa5$#N3S`d32bqSKO2E zQY*oxKY*jP^4f>>O7M<(KZOqJBQKqw-Ou9}@JoURzd-TrhdVkOwzf1#4D#SRUBozM zFH(3LHqZohd?;J*TRfU8u<2}I{3dYdz99}AgKn~e={v#3yT<$p+%1F4Rqa1yv4jNL zdTAF<=P6kA4JjA8aLtgPbw?{1gmQU6{y~mWs^ez1N86eJ4qU?|{)9#xOkq!u{wds$ zXXsZYHIux>Y$~(`wK7#Z1_Hc@>+uj(<RuPe9Il6e25jgKjI0WHqPAX-%he2A(T}Md zrjN&a4{+jc@;{f**zcgSm*jFa17UP962jciK5o}#@_V(-ws?!(Nh{7KshCPOEe+OP z3Dt6zwS<ec&DxE2c?`|Vu-(uZY=#f`f1|`(cp3Se5;%Z{<C2bDNP1_xbKbd*I`V?* z6+#zDa1XiXxmD{?E8A0vRqVj~fkKIw#?K9;78!+HLSa%~D*U-2)6@x_awdt+6u8(O zu-<dwA0dO76{RCk=KGR-$P13Js6#!}t5&e&CAeRQNo`#twe<+^OC=BZ5qYg{AoK)O z#~tAFBcaQ64WH`~JS-0=y%OG5P?hea8^$XOK;~z_eD^@+&%hVOs81D8#dtW`e)Y^7 zHdYmdu^kG1KW#8GwVm`}s#XY=rReWdk-BWjHmJz^!~E4l^u{uV$Q=1bRnnvNjV@rk z0&wH9V7pP~dbZ*ZW&z8zYK1w#mY{|WeDyP6g@+*ZGN|&F?StoPbD{b(H9@j36Np@4 zVp=*KxlVn#Pxaj<Xc_IpDcM9WYB!T|1s&txTvR-XsAb%zL+DMvdgaL&SMxvMLNzBr z&>s9f%b)KjffTmDm;<6TFvJF#*>3q!@T>oqNSR0C?kYJHfxJ^Ku>nlD549K}PQtG| zz>M4^PZ}hhGO*j?r5aKf635?BmD?mvO5;KfmM5^$=D~)S;Wup$oyU{pnku0E8ldnd z`2Cx>QGb%kO&=zge6=bF?=z|}8QtO{b5evkDTiXA;uqG^K7<*!MDIO8D((Wwr2mf( zN8#gtqW9MalLZeD_iCJ{bNWwA#eGsKCa(OqMozMuf$Q#@HOZT-rXHKkJeJ6nnu<pr zg$CHw9&DdxOI^3`*wtV`4V>?tSMZ)_cu#3C^9cOu17Qm7F<Fnmm99Wyxham*SeWS{ z@W9j1Gs)n;%|<E$j((2}$3njLa`;Y=)JTD)?nb9T$;FRK7tw)l@1o>>3fuV~YW+B2 zF^RM9nSl!6fu(%g7^w^{uq?S`78la_tE3oQ-V*5S_2uEH46o!CN*6l%wLAN(QYXyi ztWxuXhD(CC25J*SuP%u@kP64Vt_5yLF}<8#hi&p1D&4G5Z(SRvxPC)z{Rie5psm0w zJrC!6U_3Vd!Y|FiJtzbF)VT)D$-lNEt1z2fLKH|VxCBA!`L!FmnLF?knS-a?f+)IL zvmLnSND%N8*ynM+?_K*>l=K)ByUOHmT5!+LqM2WJ-ho%nb-!bSTqa4A6Td(3L+f}A zypLcg1H7+DnvR2GF5+UZ_P!(U_crc+VYYuo|9$p<e}6C-Yy$l9nExZU`=<XZ9#y)C z#P9}G5KI)IDkMvTJ1`l)e!cLWu$>h7Md1&8`iyLycR*%cLq}vdonBI^DAf&b_5cvr zTxm6K$3Aw?X(>q5*C10rG;}zY;Hf6_zF|9Qss_q1Wr?zq{j!zapB4TXc;ns3;eCzT zvxa2-Hr&7?YP_~eJB$9En|d@waT@{ZJ&MbBKJ3~pWajo8f08$kGy{B<2YltDu66tW z;oO_%?`C<chE*44n1BPl7**!1b=ArTviitw6K0^kw#SkdP9)Q@5`MVV-p{vxz!iSV z_kT&MBMN-gi1!Ucon@${``G4bq=GZT_1|$t{AtIn#;)m2N@E5N^$NDl52P@Ebbof= z`7aAx3#I$BPyrb0O-Jia1x@Aj-yzFX+E@LmB$(>qTX*ya`d@RGAN|WquBD6ENL@0J z`Ywm={qGbE;nl-@uJi^HN|({(o`-qgdLZSG;s1S5Q^%5nn}h0o4p-_SdCOPi+Ka+Y zL~=>>z*tY=|GxYgn&|}G?kyz5Z@~TERw|R9T%@cBIsY;Axbq|$9)OYmQqrMt3;!wH zRme2dMm_C<r_q;8!(@Do)nU~Rs%LR<ACfjoQ+*QUP2m5nam0t=Jx*jJ-63BTi4R^- zFNzl~aJxStThtRB^?Ncze}bK};V%|O1!#woIv@1>m+@9OR~}obmDwH-cQDG%%rJ?2 z1r`%ce!PfP(y9o`szj})l6uQPHoPo1qAQulDLCcdhF<wz`v}ZGGW4dZfRVdW(*@49 zFk5?yx?aVRy660c(wfEX4l-VZ6ICDGyEPf^G2RT+wYA=E@&-S`Dc^%p_V5##qxI~o z!~P}ah(sAbl;^cplZlEsLN%1N_P7;2c&id<Yu_?Umzbn~PzB0>hMQ2Yu3U@d;%2ff zL4xcL@gH(60@u6``Gi1aOObYlNyTSUw46)+KyE|T`pI9R2CU?cALNRkmoLkEm7_TA zSIHy<39#<!aP=1Y+3&c(>9j0bcHE{Snyh_Ja(c414lWa5smEGQQeFx*2vYuIK)ch( zb_LGwYE;pKdOf3s(Z`sH5_1ra|C|jMZN3feEfBu%c%NieZL<-ntoCLXSj|v#54b6d zm4kF@5nejfWZU(%hM~wzz*AcNUk<SVb!lR^fM0%zB9p|_ZN#hijd^=c@-PN<tqSjA z8j;5j-oykBa7wuO0{)T#|JTJSY{}c0p6(!bn7ik{X?udF^fuh35a~jlo!Epc-<ot` zun(t@f4=CIKoj+X8X<n4VXhjp-&T@f-ijyj1YJ84)|r=gT4hnUJ=jW+Li$YX2=g2U z-=D&@NhZa7h&pA)Ln;d27f2peB@eMm+K9@1fV9yavPOTRiYl^)YExH!DE}^JP_mFw zE`YLD3FKQ}X$SY8hw{0L?RPp%@x{VFYp8Y9hFteAK*3+3-K;^i*#~PmqvpmbEULYW zE75>V&?i)J7`$`=KK_PKxA}ov{|E1nTz##c!cD&g3r&wEkRKMR86Gcnf~09D*yteR zEA*PPXlmDtUknGO<^wADDVM4f3FCd{NqoUy%)C}96g87{aUH99sA+e%`jg=q#RgqM z%6JPY<HLAQ0b{+*75m+K73Stj;6lmaRvnE~IGtB5E2wEsGI2qY)a8=ZaoRC;gGs}U zcBYaxzR1koV&WpHYh||{xUCh+=~y&{L|*zF#s$7d=H~^Qv|{+irwX~1N!+$%Z)>QW z-tiveK}`ZVMDWwwg6xWnn-Pn0(1l#)Ro*<MiIKRw1yR`)l<PWD3*6n_WPc_|iTFtC zad;2oPW(*T{3UN^@{$9(g<_KiY8Zj9cN_#9foqf<cdsJ)K#=3=6uwcIOm(uM6BOn} zLN9c*VW?>9$Y<R{ulYyIz+4qU=d@rZ?ctIG$b-)!@AEB6+6^$UfQDAt$c{Qw&~(g7 zOj3PnFx8v~>e>YcKFu40pSfHHo?m6E&;oz9cbM}I-oqr5pt^!v)B{y>y!{cV_p<ZU z$&5F2&^?K3p4}_ziMT?wLSLXO8NgAYdmenXL!_my;}gB`BK<6WQBZ;IJ9v2iBL}pC z-2ZO>0Q%Tf|6VXBMI$51^G!XWHq0>ahz{WhofVp*X7&YrjU@fLp3SvC%;a6+*5rqW z2$D)lsA`yg?I>-2lU}*Q*UgE4UP_ipKX@R6{v@p?;T6o0mxO%ekepMAQHqfsY7GnN zf>JYDnSn2~h}UU5sl;`d$aCc_9K3wop`j=>=hUCoU0N~nsqOW?Y_DZ(t=*u5;p9t$ zJe!OU;D?HFe-aH-&F@f*gB=xZ<*^D_MahRMI06SiVh_WNbd;SFzx!SC(Y3%}w^94w z<w~@2z5(SPC#Cru<uNm9=K`pYV(4(!Ac5JMSBrcrAu^&0e~DFU!J<Z>N32mi^(joX z0*+xd+}>~Sns$(;d5fIg1~%Gb?##Ph-w>^(d4tI?M8ro%tmeN_7zCCZZ?vg+o&E7R z%mGKUK?a4s^GbHcduWE$N&58W#mv_veW#Q3Er`}`qgu7ry7P+bE8fRUCP{FHoBKRe zb_?nyQFeouF+UkU8)eM$e4WZ>T{ib(ask!Ijwf2f@r$qU9wi;RQY`PIo;i(B`3AfD z!J7}6LLCi!Hm^wdMb?W9B6Sgq*q}Rk;rfbSaS<-sN9Y58gEoGYvNKJsdDFTJ&i_!( zjK+KrCU=Q_@rTuj6k8{IH2dKQ`r<YF35kNjC|H%9+UOqb>F8NttuszRyssuGjR`2c zYq`d!+#vH>n7$qrV%&q=;%oGBRzDxEXF2wJJrZrx!BBzcxrbLQC&>OiAORH7Dl+0F zzut&YqpC;_t1>7zP^x<3P>&O)kP+E{(tCgoKabyeE4&E-%g)V3C;_tS1GAefCgM>i z<EiY1;hiCedXN2*O)7x;8{|+c!SY(OT}Fm4sFJt~-_rkAq>SVWHt|O47PWjOH&a^C z;oVRoC&R6?@LoVdrRuAe)C`g!)wFur7id)dsNsyz**wepk^ln-oWz1dN0YL4&@hG> zM|iXJld-^DMxx^$iiJYPc^&WLvg3PH3}1b8vb)*Aql)0?u_eKVF354pYxGu6jn?^_ z39tWIEXrM+uv|(dEqhmrlA~q**@@RXHSkdb4>fR5Uu!O}^_E_shJEB0FM-<r&4I;} z_-@6eS!g8T4s3@ZUE+0UEbfhiO4bE*KAik$5_|3fx8^4As2<><rjZ?u0?B1%GGmy` zl1!!nmaEO?YsK#Cg-SY#{+tVrNJfd-M<-n%wf%q;QUr<ZJZPnHC^HVqKt25PR%9eQ z@LG9X=;j4Z-Wj^AB=21&fhiJsX`95W(qxp;lsBoQ3t=MZf%C|TaHHHjZVd0N;z(l) z;QM$ypy6Dkx#X``yU8T5cf0%W^&&`G*YH||zFsnlcZ#>&+ZVoANb_EXFBX(H+%}nH z#2NoWuv4!^MmWI_M-`%kJVFfLygWEDcvIB~hT8$(VIbW&3GXP0OiN1W!Uz6);Jioi zsxNRL%A+{MgHIZfZ|T6L8;CkLi8s$l;K(4Ib`*s!&{m&v{el!lke>*&x+-*MGcI5k zshgAlx}3%hTn=N~&J{etOX#5TY23lAat^sD&XdBXt|8YBGfzR<X*jR15=pDAhRN+l zK?=I*ZukZ(g6)(?Dar0OKsmL^t+hgH@1^upM&bAdUT<>f@}{D>UxHCQ;;KfedB{k| z;r0fZnR?;dg$}%37zp;66ncppajsIygkIt$;3HlFM)4XeMvK+Tqj$uEh8k(jaEH6V z;1je-aQGzNGNhnE9Yy~Ll#d_-5V-%baE(AI3^c-KsP<j-ZglQ&&~Bo>9IU&Yt8oH_ z>LwZKG&0gb$}z|{25+5%SI#Zy=x+4%aAOpAWiFakvay@aKEr##;N9~}BLeQ92lXV5 zcRLQKxE@TUEli~!s@6D|%0k`(Zv<bZ()E|<_(x&C2fZFgvd*#M(YqR1ZP~&7(22+4 z$1Eh}vk_k)6<_8O8G=V>1yOc%n8zw_3wYI4=<{ZDc^9&i2{71cp&A*u)j{qjNc;p0 zHgE|7e;{xMs*uQQhL+HUJYE86gJ2StJF8JBcZaFGo4iIy3t#l)AaziZ6qmtEgxY9n zt=w+hf#L3`a0-GM2qxeRiLSf6!hXpl<nRLDEe<W(A=gz8CAw{x?Ha{>n+tOa=3^hc z_X00_9xx*jeiW*74DVmdgFoWg+l@dW9Z;tS^5$StI5&YBl<FUaTU~<_lPh`@8JwMn zlDsnL#iWcQs}khCZobK;q>)UCW@864633Jn+|U|gZKk9}I48kNf<$p{I47&$Bsupn zCy&HH$F9vw#4b2V3wb>dOhs~-|J%n#d@2Q*zl5;=$AMXb88}MsKadrr1sy&qOf;-k zQh3#xBkbx}SXc+x@jx{JCN_!J)`|4;cHXt_qn}TJ=`YaFX=+gvs5tt$3Oj!qPSa}c zbyoIl3*KJ$BI_6Mu`^_EpQ2mGvGc3Yi*0fErqPH0ZrD_^%{l13@?`XD({TgCo=c?b zma}D3z&xp>ID@_mc5ND&qhQa*Sg~R68FXK;XPdEUJK#nI{WppZ40i2uwrvV2mY@eO z(1pRiO=IImlV^z`7Z?ZLuffI*`tbF}?ZUO`M?X$O8xIm^FWI^E;Bw7CQEg##-SBez zg}oQ-;b8yn4)<@62@Ud~kHE3P{>{M#7Q+5>P!;Rpc{HO3+v3M}p%44<9wrgL>e`#1 ziVzDPX!T!`Fv(j^uWhH#ZhASw9*YI%27P9PNVi+4G9C^3DI$GDJgc~<P?9|?@Txi< o<W&Q-+laR-L5C#>!^3TyD9ptPP7ZTXK_codSt$O+|HmKy2Quu|u>b%7 diff --git a/python/gevent/libev/corecext.h b/python/gevent/libev/corecext.h deleted file mode 100644 index 0878511..0000000 --- a/python/gevent/libev/corecext.h +++ /dev/null @@ -1,147 +0,0 @@ -/* Generated by Cython 0.28.5 */ - -#ifndef __PYX_HAVE__gevent__libev__corecext -#define __PYX_HAVE__gevent__libev__corecext - -struct PyGeventCallbackObject; -struct PyGeventLoopObject; -struct PyGeventWatcherObject; -struct PyGeventIOObject; -struct PyGeventTimerObject; -struct PyGeventSignalObject; -struct PyGeventIdleObject; -struct PyGeventPrepareObject; -struct PyGeventCheckObject; -struct PyGeventForkObject; -struct PyGeventAsyncObject; -struct PyGeventChildObject; -struct PyGeventStatObject; - -struct PyGeventCallbackObject { - PyObject_HEAD - PyObject *callback; - PyObject *args; - struct PyGeventCallbackObject *next; -}; - -struct PyGeventLoopObject { - PyObject_HEAD - struct __pyx_vtabstruct_6gevent_5libev_8corecext_loop *__pyx_vtab; - struct ev_prepare _prepare; - struct ev_timer _timer0; - struct ev_timer _periodic_signal_checker; - PyObject *error_handler; - struct ev_loop *_ptr; - struct __pyx_obj_6gevent_5libev_8corecext_CallbackFIFO *_callbacks; - int starting_timer_may_update_loop_time; - int _default; -}; - -struct PyGeventWatcherObject { - PyObject_HEAD - struct PyGeventLoopObject *loop; - PyObject *_callback; - PyObject *args; - struct ev_watcher *__pyx___watcher; - struct __pyx_t_6gevent_5libev_8corecext_start_and_stop *__pyx___ss; - unsigned int _flags; -}; - -struct PyGeventIOObject { - struct PyGeventWatcherObject __pyx_base; - struct ev_io _watcher; -}; - -struct PyGeventTimerObject { - struct PyGeventWatcherObject __pyx_base; - struct ev_timer _watcher; -}; - -struct PyGeventSignalObject { - struct PyGeventWatcherObject __pyx_base; - struct ev_signal _watcher; -}; - -struct PyGeventIdleObject { - struct PyGeventWatcherObject __pyx_base; - struct ev_idle _watcher; -}; - -struct PyGeventPrepareObject { - struct PyGeventWatcherObject __pyx_base; - struct ev_prepare _watcher; -}; - -struct PyGeventCheckObject { - struct PyGeventWatcherObject __pyx_base; - struct ev_check _watcher; -}; - -struct PyGeventForkObject { - struct PyGeventWatcherObject __pyx_base; - struct ev_fork _watcher; -}; - -struct PyGeventAsyncObject { - struct PyGeventWatcherObject __pyx_base; - struct ev_async _watcher; -}; - -struct PyGeventChildObject { - struct PyGeventWatcherObject __pyx_base; - struct ev_child _watcher; -}; - -struct PyGeventStatObject { - struct PyGeventWatcherObject __pyx_base; - struct ev_stat _watcher; - PyObject *path; - PyObject *_paths; -}; - -#ifndef __PYX_HAVE_API__gevent__libev__corecext - -#ifndef __PYX_EXTERN_C - #ifdef __cplusplus - #define __PYX_EXTERN_C extern "C" - #else - #define __PYX_EXTERN_C extern - #endif -#endif - -#ifndef DL_IMPORT - #define DL_IMPORT(_T) _T -#endif - -__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyGeventCallback_Type; -__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyGeventLoop_Type; -__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyGeventWatcher_Type; -__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyGeventIO_Type; -__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyGeventTimer_Type; -__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyGeventSignal_Type; -__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyGeventIdle_Type; -__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyGeventPrepare_Type; -__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyGeventCheck_Type; -__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyGeventFork_Type; -__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyGeventAsync_Type; -__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyGeventChild_Type; -__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyGeventStat_Type; - -__PYX_EXTERN_C void gevent_handle_error(struct PyGeventLoopObject *, PyObject *); -__PYX_EXTERN_C PyObject *gevent_loop_run_callbacks(struct PyGeventLoopObject *); - -__PYX_EXTERN_C PyObject *GEVENT_CORE_EVENTS; -__PYX_EXTERN_C PyObject *_empty_tuple; - -#endif /* !__PYX_HAVE_API__gevent__libev__corecext */ - -/* WARNING: the interface of the module init function changed in CPython 3.5. */ -/* It now returns a PyModuleDef instance instead of a PyModule instance. */ - -#if PY_MAJOR_VERSION < 3 -PyMODINIT_FUNC initcorecext(void); -#else -PyMODINIT_FUNC PyInit_corecext(void); -#endif - -#endif /* !__PYX_HAVE__gevent__libev__corecext */ diff --git a/python/gevent/libev/corecext.pyx b/python/gevent/libev/corecext.pyx deleted file mode 100644 index 793b002..0000000 --- a/python/gevent/libev/corecext.pyx +++ /dev/null @@ -1,1340 +0,0 @@ -# Copyright (c) 2009-2012 Denis Bilenko. See LICENSE for details. - -# This first directive, supported in Cython 0.24+, causes sources -# files to be *much* smaller when it's false (139,027 LOC vs 35,000 -# LOC) and thus cythonpp.py (and probably the compiler; also Visual C -# has limits on source file sizes) to be faster (73s vs 46s). But it does -# make debugging more difficult. Auto-pickling was added in 0.26, and -# that's a new feature that we don't need or want to allow in a gevent -# point release. - -# cython: emit_code_comments=False, auto_pickle=False - -# NOTE: We generally cannot use the Cython IF directive as documented -# at -# http://cython.readthedocs.io/en/latest/src/userguide/language_basics.html#conditional-compilation -# (e.g., IF UNAME_SYSNAME == "Windows") because when Cython says -# "compilation", it means when *Cython* compiles, not when the C -# compiler compiles. We distribute an sdist with a single pre-compiled -# C file for all platforms so that end users that don't use a binary -# wheel don't have to sit through cythonpp and other steps the Makefile does. -# See https://github.com/gevent/gevent/issues/1076 - -cimport cython -cimport libev - -from cpython.ref cimport Py_INCREF -from cpython.ref cimport Py_DECREF -from cpython.mem cimport PyMem_Malloc -from cpython.mem cimport PyMem_Free -from libc.errno cimport errno - -cdef extern from "Python.h": - int Py_ReprEnter(object) - void Py_ReprLeave(object) - -# Work around lack of absolute_import in Cython -# Note for PY3: not doing so will leave reference to locals() on import -# (reproducible under Python 3.3, not under Python 3.4; see test__refcount_core.py) -sys = __import__('sys', level=0) -os = __import__('os', level=0) -traceback = __import__('traceback', level=0) -signalmodule = __import__('signal', level=0) -getswitchinterval = __import__('gevent', level=0).getswitchinterval - - -__all__ = ['get_version', - 'get_header_version', - 'supported_backends', - 'recommended_backends', - 'embeddable_backends', - 'time', - 'loop'] - -cdef tuple integer_types - -if sys.version_info[0] >= 3: - integer_types = int, -else: - integer_types = (int, long) - - -cdef extern from "callbacks.h": - void gevent_callback_io(libev.ev_loop, void*, int) - void gevent_callback_timer(libev.ev_loop, void*, int) - void gevent_callback_signal(libev.ev_loop, void*, int) - void gevent_callback_idle(libev.ev_loop, void*, int) - void gevent_callback_prepare(libev.ev_loop, void*, int) - void gevent_callback_check(libev.ev_loop, void*, int) - void gevent_callback_fork(libev.ev_loop, void*, int) - void gevent_callback_async(libev.ev_loop, void*, int) - void gevent_callback_child(libev.ev_loop, void*, int) - void gevent_callback_stat(libev.ev_loop, void*, int) - void gevent_run_callbacks(libev.ev_loop, void*, int) - void gevent_periodic_signal_check(libev.ev_loop, void*, int) - void gevent_call(loop, callback) - void gevent_noop(libev.ev_loop, void*, int) - -cdef extern from "stathelper.c": - object _pystat_fromstructstat(void*) - - -UNDEF = libev.EV_UNDEF -NONE = libev.EV_NONE -READ = libev.EV_READ -WRITE = libev.EV_WRITE -TIMER = libev.EV_TIMER -PERIODIC = libev.EV_PERIODIC -SIGNAL = libev.EV_SIGNAL -CHILD = libev.EV_CHILD -STAT = libev.EV_STAT -IDLE = libev.EV_IDLE -PREPARE = libev.EV_PREPARE -CHECK = libev.EV_CHECK -EMBED = libev.EV_EMBED -FORK = libev.EV_FORK -CLEANUP = libev.EV_CLEANUP -ASYNC = libev.EV_ASYNC -CUSTOM = libev.EV_CUSTOM -ERROR = libev.EV_ERROR - -READWRITE = libev.EV_READ | libev.EV_WRITE - -MINPRI = libev.EV_MINPRI -MAXPRI = libev.EV_MAXPRI - -BACKEND_PORT = libev.EVBACKEND_PORT -BACKEND_KQUEUE = libev.EVBACKEND_KQUEUE -BACKEND_EPOLL = libev.EVBACKEND_EPOLL -BACKEND_POLL = libev.EVBACKEND_POLL -BACKEND_SELECT = libev.EVBACKEND_SELECT -FORKCHECK = libev.EVFLAG_FORKCHECK -NOINOTIFY = libev.EVFLAG_NOINOTIFY -SIGNALFD = libev.EVFLAG_SIGNALFD -NOSIGMASK = libev.EVFLAG_NOSIGMASK - - -@cython.internal -cdef class _EVENTSType: - - def __repr__(self): - return 'gevent.core.EVENTS' - - -cdef public object GEVENT_CORE_EVENTS = _EVENTSType() -EVENTS = GEVENT_CORE_EVENTS - - -def get_version(): - return 'libev-%d.%02d' % (libev.ev_version_major(), libev.ev_version_minor()) - - -def get_header_version(): - return 'libev-%d.%02d' % (libev.EV_VERSION_MAJOR, libev.EV_VERSION_MINOR) - - -# This list backends in the order they are actually tried by libev -_flags = [(libev.EVBACKEND_PORT, 'port'), - (libev.EVBACKEND_KQUEUE, 'kqueue'), - (libev.EVBACKEND_EPOLL, 'epoll'), - (libev.EVBACKEND_POLL, 'poll'), - (libev.EVBACKEND_SELECT, 'select'), - (libev.EVFLAG_NOENV, 'noenv'), - (libev.EVFLAG_FORKCHECK, 'forkcheck'), - (libev.EVFLAG_NOINOTIFY, 'noinotify'), - (libev.EVFLAG_SIGNALFD, 'signalfd'), - (libev.EVFLAG_NOSIGMASK, 'nosigmask')] - - -_flags_str2int = dict((string, flag) for (flag, string) in _flags) - - -_events = [(libev.EV_READ, 'READ'), - (libev.EV_WRITE, 'WRITE'), - (libev.EV__IOFDSET, '_IOFDSET'), - (libev.EV_PERIODIC, 'PERIODIC'), - (libev.EV_SIGNAL, 'SIGNAL'), - (libev.EV_CHILD, 'CHILD'), - (libev.EV_STAT, 'STAT'), - (libev.EV_IDLE, 'IDLE'), - (libev.EV_PREPARE, 'PREPARE'), - (libev.EV_CHECK, 'CHECK'), - (libev.EV_EMBED, 'EMBED'), - (libev.EV_FORK, 'FORK'), - (libev.EV_CLEANUP, 'CLEANUP'), - (libev.EV_ASYNC, 'ASYNC'), - (libev.EV_CUSTOM, 'CUSTOM'), - (libev.EV_ERROR, 'ERROR')] - - -cpdef _flags_to_list(unsigned int flags): - cdef list result = [] - for code, value in _flags: - if flags & code: - result.append(value) - flags &= ~code - if not flags: - break - if flags: - result.append(flags) - return result - - -if sys.version_info[0] >= 3: - basestring = (bytes, str) -else: - basestring = __builtins__.basestring - - -cpdef unsigned int _flags_to_int(object flags) except? -1: - # Note, that order does not matter, libev has its own predefined order - if not flags: - return 0 - if isinstance(flags, integer_types): - return flags - cdef unsigned int result = 0 - try: - if isinstance(flags, basestring): - flags = flags.split(',') - for value in flags: - value = value.strip().lower() - if value: - result |= _flags_str2int[value] - except KeyError as ex: - raise ValueError('Invalid backend or flag: %s\nPossible values: %s' % (ex, ', '.join(sorted(_flags_str2int.keys())))) - return result - - -cdef str _str_hex(object flag): - if isinstance(flag, integer_types): - return hex(flag) - return str(flag) - - -cpdef _check_flags(unsigned int flags): - cdef list as_list - flags &= libev.EVBACKEND_MASK - if not flags: - return - if not (flags & libev.EVBACKEND_ALL): - raise ValueError('Invalid value for backend: 0x%x' % flags) - if not (flags & libev.ev_supported_backends()): - as_list = [_str_hex(x) for x in _flags_to_list(flags)] - raise ValueError('Unsupported backend: %s' % '|'.join(as_list)) - - -cpdef _events_to_str(int events): - cdef list result = [] - cdef int c_flag - for (flag, string) in _events: - c_flag = flag - if events & c_flag: - result.append(string) - events = events & (~c_flag) - if not events: - break - if events: - result.append(hex(events)) - return '|'.join(result) - - -def supported_backends(): - return _flags_to_list(libev.ev_supported_backends()) - - -def recommended_backends(): - return _flags_to_list(libev.ev_recommended_backends()) - - -def embeddable_backends(): - return _flags_to_list(libev.ev_embeddable_backends()) - - -def time(): - return libev.ev_time() - -cdef bint _check_loop(loop loop) except -1: - if not loop._ptr: - raise ValueError('operation on destroyed loop') - return 1 - - - -cdef public class callback [object PyGeventCallbackObject, type PyGeventCallback_Type]: - cdef public object callback - cdef public tuple args - cdef callback next - - def __init__(self, callback, args): - self.callback = callback - self.args = args - - def stop(self): - self.callback = None - self.args = None - - close = stop - - # Note, that __nonzero__ and pending are different - # nonzero is used in contexts where we need to know whether to schedule another callback, - # so it's true if it's pending or currently running - # 'pending' has the same meaning as libev watchers: it is cleared before entering callback - - def __nonzero__(self): - # it's nonzero if it's pending or currently executing - return self.args is not None - - @property - def pending(self): - return self.callback is not None - - def __repr__(self): - if Py_ReprEnter(self) != 0: - return "<...>" - try: - format = self._format() - result = "<%s at 0x%x%s" % (self.__class__.__name__, id(self), format) - if self.pending: - result += " pending" - if self.callback is not None: - result += " callback=%r" % (self.callback, ) - if self.args is not None: - result += " args=%r" % (self.args, ) - if self.callback is None and self.args is None: - result += " stopped" - return result + ">" - finally: - Py_ReprLeave(self) - - def _format(self): - return '' - -DEF CALLBACK_CHECK_COUNT = 50 - -@cython.final -@cython.internal -cdef class CallbackFIFO(object): - cdef callback head - cdef callback tail - - def __init__(self): - self.head = None - self.tail = None - - cdef inline callback popleft(self): - cdef callback head = self.head - self.head = head.next - if self.head is self.tail or self.head is None: - self.tail = None - head.next = None - return head - - - cdef inline append(self, callback new_tail): - assert not new_tail.next - if self.tail is None: - if self.head is None: - # Completely empty, so this - # is now our head - self.head = new_tail - return - self.tail = self.head - - - assert self.head is not None - old_tail = self.tail - old_tail.next = new_tail - self.tail = new_tail - - def __nonzero__(self): - return self.head is not None - - def __len__(self): - cdef Py_ssize_t count = 0 - head = self.head - while head is not None: - count += 1 - head = head.next - return count - - def __iter__(self): - cdef list objects = [] - head = self.head - while head is not None: - objects.append(head) - head = head.next - return iter(objects) - - cdef bint has_callbacks(self): - return self.head - - def __repr__(self): - return "<callbacks@%r len=%d head=%r tail=%r>" % (id(self), len(self), self.head, self.tail) - - -cdef public class loop [object PyGeventLoopObject, type PyGeventLoop_Type]: - ## embedded struct members - cdef libev.ev_prepare _prepare - cdef libev.ev_timer _timer0 - # We'll only actually start this timer if we're on Windows, - # but it doesn't hurt to compile it in on all platforms. - cdef libev.ev_timer _periodic_signal_checker - - ## pointer members - cdef public object error_handler - cdef libev.ev_loop* _ptr - cdef public CallbackFIFO _callbacks - - ## data members - cdef bint starting_timer_may_update_loop_time - # We must capture the 'default' state at initialiaztion - # time. Destroying the default loop in libev sets - # the libev internal pointer to 0, and ev_is_default_loop will - # no longer work. - cdef bint _default - - def __cinit__(self, object flags=None, object default=None, libev.intptr_t ptr=0): - self.starting_timer_may_update_loop_time = 0 - self._default = 0 - libev.ev_prepare_init(&self._prepare, - <void*>gevent_run_callbacks) - libev.ev_timer_init(&self._periodic_signal_checker, - <void*>gevent_periodic_signal_check, - 0.3, 0.3) - libev.ev_timer_init(&self._timer0, - <void*>gevent_noop, - 0.0, 0.0) - - cdef unsigned int c_flags - cdef object old_handler = None - if ptr: - self._ptr = <libev.ev_loop*>ptr - self._default = libev.ev_is_default_loop(self._ptr) - else: - c_flags = _flags_to_int(flags) - _check_flags(c_flags) - c_flags |= libev.EVFLAG_NOENV - c_flags |= libev.EVFLAG_FORKCHECK - if default is None: - default = True - if default: - self._default = 1 - self._ptr = libev.gevent_ev_default_loop(c_flags) - if not self._ptr: - raise SystemError("ev_default_loop(%s) failed" % (c_flags, )) - if sys.platform == "win32": - libev.ev_timer_start(self._ptr, &self._periodic_signal_checker) - libev.ev_unref(self._ptr) - else: - self._ptr = libev.ev_loop_new(c_flags) - if not self._ptr: - raise SystemError("ev_loop_new(%s) failed" % (c_flags, )) - if default or __SYSERR_CALLBACK is None: - set_syserr_cb(self._handle_syserr) - - # Mark as not destroyed - libev.ev_set_userdata(self._ptr, self._ptr) - - libev.ev_prepare_start(self._ptr, &self._prepare) - libev.ev_unref(self._ptr) - - def __init__(self, object flags=None, object default=None, libev.intptr_t ptr=0): - self._callbacks = CallbackFIFO() - - cdef _run_callbacks(self): - cdef callback cb - cdef object callbacks - cdef int count = CALLBACK_CHECK_COUNT - self.starting_timer_may_update_loop_time = True - cdef libev.ev_tstamp now = libev.ev_now(self._ptr) - cdef libev.ev_tstamp expiration = now + <libev.ev_tstamp>getswitchinterval() - - try: - libev.ev_timer_stop(self._ptr, &self._timer0) - while self._callbacks.head is not None: - cb = self._callbacks.popleft() - - libev.ev_unref(self._ptr) - gevent_call(self, cb) # XXX: Why is this a C callback, not cython? - count -= 1 - - if count == 0 and self._callbacks.head is not None: - # We still have more to run but we've reached - # the end of one check group - count = CALLBACK_CHECK_COUNT - - libev.ev_now_update(self._ptr) - if libev.ev_now(self._ptr) >= expiration: - now = 0 - break - - if now != 0: - libev.ev_now_update(self._ptr) - if self._callbacks.head is not None: - libev.ev_timer_start(self._ptr, &self._timer0) - finally: - self.starting_timer_may_update_loop_time = False - - cdef _stop_watchers(self, libev.ev_loop* ptr): - if not ptr: - return - - if libev.ev_is_active(&self._prepare): - libev.ev_ref(ptr) - libev.ev_prepare_stop(ptr, &self._prepare) - if libev.ev_is_active(&self._periodic_signal_checker): - libev.ev_ref(ptr) - libev.ev_timer_stop(ptr, &self._periodic_signal_checker) - - def destroy(self): - cdef libev.ev_loop* ptr = self._ptr - self._ptr = NULL - - if ptr: - if not libev.ev_userdata(ptr): - # Whoops! Program error. They destroyed the loop, - # using a different loop object. Our _ptr is still - # valid, but the libev loop is gone. Doing anything - # else with it will likely cause a crash. - return - # Mark as destroyed - libev.ev_set_userdata(ptr, NULL) - self._stop_watchers(ptr) - if __SYSERR_CALLBACK == self._handle_syserr: - set_syserr_cb(None) - libev.ev_loop_destroy(ptr) - - def __dealloc__(self): - cdef libev.ev_loop* ptr = self._ptr - self._ptr = NULL - if ptr != NULL: - if not libev.ev_userdata(ptr): - # See destroy(). This is a bug in the caller. - return - self._stop_watchers(ptr) - if not self._default: - libev.ev_loop_destroy(ptr) - # Mark as destroyed - libev.ev_set_userdata(ptr, NULL) - - @property - def ptr(self): - return <size_t>self._ptr - - @property - def WatcherType(self): - return watcher - - @property - def MAXPRI(self): - return libev.EV_MAXPRI - - @property - def MINPRI(self): - return libev.EV_MINPRI - - def _handle_syserr(self, message, errno): - if sys.version_info[0] >= 3: - message = message.decode() - self.handle_error(None, SystemError, SystemError(message + ': ' + os.strerror(errno)), None) - - cpdef handle_error(self, context, type, value, tb): - cdef object handle_error - cdef object error_handler = self.error_handler - if error_handler is not None: - # we do want to do getattr every time so that setting Hub.handle_error property just works - handle_error = getattr(error_handler, 'handle_error', error_handler) - handle_error(context, type, value, tb) - else: - self._default_handle_error(context, type, value, tb) - - cpdef _default_handle_error(self, context, type, value, tb): - # note: Hub sets its own error handler so this is not used by gevent - # this is here to make core.loop usable without the rest of gevent - traceback.print_exception(type, value, tb) - if self._ptr: - libev.ev_break(self._ptr, libev.EVBREAK_ONE) - - def run(self, nowait=False, once=False): - _check_loop(self) - cdef unsigned int flags = 0 - if nowait: - flags |= libev.EVRUN_NOWAIT - if once: - flags |= libev.EVRUN_ONCE - with nogil: - libev.ev_run(self._ptr, flags) - - def reinit(self): - if self._ptr: - libev.ev_loop_fork(self._ptr) - - def ref(self): - _check_loop(self) - libev.ev_ref(self._ptr) - - def unref(self): - _check_loop(self) - libev.ev_unref(self._ptr) - - def break_(self, int how=libev.EVBREAK_ONE): - _check_loop(self) - libev.ev_break(self._ptr, how) - - def verify(self): - _check_loop(self) - libev.ev_verify(self._ptr) - - cpdef libev.ev_tstamp now(self) except *: - _check_loop(self) - return libev.ev_now(self._ptr) - - cpdef void update_now(self) except *: - _check_loop(self) - libev.ev_now_update(self._ptr) - - update = update_now # Old name, deprecated. - - def __repr__(self): - return '<%s at 0x%x %s>' % (self.__class__.__name__, id(self), self._format()) - - @property - def default(self): - # If we're destroyed, we are not the default loop anymore, - # as far as Python is concerned. - return self._default if self._ptr else False - - @property - def iteration(self): - _check_loop(self) - return libev.ev_iteration(self._ptr) - - @property - def depth(self): - _check_loop(self) - return libev.ev_depth(self._ptr) - - @property - def backend_int(self): - _check_loop(self) - return libev.ev_backend(self._ptr) - - @property - def backend(self): - _check_loop(self) - cdef unsigned int backend = libev.ev_backend(self._ptr) - for key, value in _flags: - if key == backend: - return value - return backend - - @property - def pendingcnt(self): - _check_loop(self) - return libev.ev_pending_count(self._ptr) - - def io(self, libev.vfd_socket_t fd, int events, ref=True, priority=None): - return io(self, fd, events, ref, priority) - - def timer(self, double after, double repeat=0.0, ref=True, priority=None): - return timer(self, after, repeat, ref, priority) - - def signal(self, int signum, ref=True, priority=None): - return signal(self, signum, ref, priority) - - def idle(self, ref=True, priority=None): - return idle(self, ref, priority) - - def prepare(self, ref=True, priority=None): - return prepare(self, ref, priority) - - def check(self, ref=True, priority=None): - return check(self, ref, priority) - - def fork(self, ref=True, priority=None): - return fork(self, ref, priority) - - def async_(self, ref=True, priority=None): - return async_(self, ref, priority) - - # cython doesn't enforce async as a keyword - async = async_ - - def child(self, int pid, bint trace=0, ref=True): - if sys.platform == 'win32': - raise AttributeError("Child watchers are not supported on Windows") - return child(self, pid, trace, ref) - - def install_sigchld(self): - libev.gevent_install_sigchld_handler() - - def reset_sigchld(self): - libev.gevent_reset_sigchld_handler() - - def stat(self, str path, float interval=0.0, ref=True, priority=None): - return stat(self, path, interval, ref, priority) - - def run_callback(self, func, *args): - _check_loop(self) - cdef callback cb = callback(func, args) - self._callbacks.append(cb) - libev.ev_ref(self._ptr) - return cb - - def _format(self): - if not self._ptr: - return 'destroyed' - cdef object msg = self.backend - if self._default: - msg += ' default' - msg += ' pending=%s' % self.pendingcnt - msg += self._format_details() - return msg - - def _format_details(self): - cdef str msg = '' - cdef object fileno = self.fileno() - cdef object activecnt = None - try: - sigfd = self.sigfd - except AttributeError: - sigfd = None - try: - activecnt = self.activecnt - except AttributeError: - pass - if activecnt is not None: - msg += ' ref=' + repr(activecnt) - if fileno is not None: - msg += ' fileno=' + repr(fileno) - return msg - - def fileno(self): - cdef int fd - if self._ptr: - fd = libev.gevent_ev_loop_backend_fd(self._ptr) - if fd >= 0: - return fd - - @property - def activecnt(self): - _check_loop(self) - return libev.gevent_ev_loop_activecnt(self._ptr) - - @property - def sig_pending(self): - _check_loop(self) - return libev.gevent_ev_loop_sig_pending(self._ptr) - - @property - def origflags(self): - return _flags_to_list(self.origflags_int) - - @property - def origflags_int(self): - _check_loop(self) - return libev.gevent_ev_loop_origflags(self._ptr) - - @property - def sigfd(self): - _check_loop(self) - fd = libev.gevent_ev_loop_sigfd(self._ptr) - if fd >= 0: - return fd - - # Explicitly not EV_USE_SIGNALFD - raise AttributeError("sigfd") - - -# about readonly _flags attribute: -# bit #1 set if object owns Python reference to itself (Py_INCREF was -# called and we must call Py_DECREF later) -DEF FLAG_WATCHER_OWNS_PYREF = 1 << 0 # 0x1 -# bit #2 set if ev_unref() was called and we must call ev_ref() later -DEF FLAG_WATCHER_NEEDS_EVREF = 1 << 1 # 0x2 -# bit #3 set if user wants to call ev_unref() before start() -DEF FLAG_WATCHER_UNREF_BEFORE_START = 1 << 2 # 0x4 -# bits 2 and 3 are *both* set when we are active, but the user -# request us not to be ref'd anymore. We unref us (because going active will -# ref us) and then make a note of this in the future -DEF FLAG_WATCHER_MASK_UNREF_NEEDS_REF = 0x6 - - -cdef void _python_incref(watcher self): - if not self._flags & FLAG_WATCHER_OWNS_PYREF: - Py_INCREF(self) - self._flags |= FLAG_WATCHER_OWNS_PYREF - -cdef void _python_decref(watcher self): - if self._flags & FLAG_WATCHER_OWNS_PYREF: - Py_DECREF(self) - self._flags &= ~FLAG_WATCHER_OWNS_PYREF - -cdef void _libev_ref(watcher self): - if self._flags & FLAG_WATCHER_NEEDS_EVREF: - libev.ev_ref(self.loop._ptr) - self._flags &= ~FLAG_WATCHER_NEEDS_EVREF - -cdef void _libev_unref(watcher self): - if self._flags & FLAG_WATCHER_MASK_UNREF_NEEDS_REF == FLAG_WATCHER_UNREF_BEFORE_START: - libev.ev_unref(self.loop._ptr) - self._flags |= FLAG_WATCHER_NEEDS_EVREF - - -ctypedef void (*start_stop_func)(libev.ev_loop*, void*) nogil - -cdef struct start_and_stop: - start_stop_func start - start_stop_func stop - -cdef start_and_stop make_ss(void* start, void* stop): - cdef start_and_stop result = start_and_stop(<start_stop_func>start, <start_stop_func>stop) - return result - -cdef bint _watcher_start(watcher self, object callback, tuple args) except -1: - # This method should be called by subclasses of watcher, if they - # override the python-level `start` function: they've already paid - # for argument unpacking, and `start` cannot be cpdef since it - # uses varargs. - - # We keep this as a function, not a cdef method of watcher. - # If it's a cdef method, it could potentially be overridden - # by a subclass, which means that the watcher gains a pointer to a - # function table (vtable), making each object 8 bytes larger. - - _check_loop(self.loop) - if callback is None or not callable(callback): - raise TypeError("Expected callable, not %r" % (callback, )) - self._callback = callback - self.args = args - _libev_unref(self) - _python_incref(self) - self.__ss.start(self.loop._ptr, self.__watcher) - return 1 - -cdef public class watcher [object PyGeventWatcherObject, type PyGeventWatcher_Type]: - """Abstract base class for all the watchers""" - ## pointer members - cdef public loop loop - cdef object _callback - cdef public tuple args - - # By keeping a __watcher cached, the size of the io and timer - # structs becomes 152 bytes and child is 160 and stat is 512 (when - # the start_and_stop is inlined). On 64-bit macOS CPython 2.7. I - # hoped that using libev's data pointer and allocating the - # watchers directly and not as inline members would result in - # overall savings thanks to better padding, but it didn't. And it - # added lots of casts, making the code ugly. - - # Table: - # gevent ver | 1.2 | This | +data - # Watcher Kind | | | - # Timer | 120 | 152 | 160 - # IO | 120 | 152 | 160 - # Child | 128 | 160 | 168 - # Stat | 480 | 512 | 512 - cdef libev.ev_watcher* __watcher - - # By inlining the start_and_stop struct, instead of taking the address - # of a static struct or using the watcher's data pointer, we - # use an additional pointer of memory and incur an additional pointer copy - # on creation. - # But we use fewer pointer accesses for start/stop, and they have - # better cache locality. (Then again, we're bigger). - # Right now we're going for size, so we use the pointer. IO/Timer objects - # are then 144 bytes. - cdef start_and_stop* __ss - - ## Int members - - # Our subclasses will declare the ev_X struct - # as an inline member. This is good for locality, but - # probably bad for alignment, as it will get tacked on - # immediately after our data. - - # But all ev_watchers start with some ints, so maybe we can help that - # out by putting our ints here. - cdef readonly unsigned int _flags - - def __init__(self, loop loop, ref=True, priority=None): - if not self.__watcher or not self.__ss.start or not self.__ss.stop: - raise ValueError("Cannot construct a bare watcher") - self.loop = loop - self._flags = 0 if ref else FLAG_WATCHER_UNREF_BEFORE_START - if priority is not None: - libev.ev_set_priority(self.__watcher, priority) - - @property - def ref(self): - return False if self._flags & 4 else True - - @ref.setter - def ref(self, object value): - _check_loop(self.loop) - if value: - # self.ref should be true after this. - if self.ref: - return # ref is already True - - if self._flags & FLAG_WATCHER_NEEDS_EVREF: # ev_unref was called, undo - libev.ev_ref(self.loop._ptr) - # do not want unref, no outstanding unref - self._flags &= ~FLAG_WATCHER_MASK_UNREF_NEEDS_REF - else: - # self.ref must be false after this - if not self.ref: - return # ref is already False - self._flags |= FLAG_WATCHER_UNREF_BEFORE_START - if not self._flags & FLAG_WATCHER_NEEDS_EVREF and libev.ev_is_active(self.__watcher): - libev.ev_unref(self.loop._ptr) - self._flags |= FLAG_WATCHER_NEEDS_EVREF - - @property - def callback(self): - return self._callback - - @callback.setter - def callback(self, object callback): - if callback is not None and not callable(callback): - raise TypeError("Expected callable, not %r" % (callback, )) - self._callback = callback - - @property - def priority(self): - return libev.ev_priority(self.__watcher) - - @priority.setter - def priority(self, int priority): - cdef libev.ev_watcher* w = self.__watcher - if libev.ev_is_active(w): - raise AttributeError("Cannot set priority of an active watcher") - libev.ev_set_priority(w, priority) - - @property - def active(self): - return True if libev.ev_is_active(self.__watcher) else False - - @property - def pending(self): - return True if libev.ev_is_pending(self.__watcher) else False - - def start(self, object callback, *args): - _watcher_start(self, callback, args) - - def stop(self): - _check_loop(self.loop) - _libev_ref(self) - # The callback cannot possibly fire while we are executing, - # so this is safe. - self._callback = None - self.args = None - self.__ss.stop(self.loop._ptr, self.__watcher) - _python_decref(self) - - def feed(self, int revents, object callback, *args): - _check_loop(self.loop) - self.callback = callback - self.args = args - _libev_unref(self) - libev.ev_feed_event(self.loop._ptr, self.__watcher, revents) - _python_incref(self) - - def __repr__(self): - if Py_ReprEnter(self) != 0: - return "<...>" - try: - format = self._format() - result = "<%s at 0x%x%s" % (self.__class__.__name__, id(self), format) - if self.active: - result += " active" - if self.pending: - result += " pending" - if self.callback is not None: - result += " callback=%r" % (self.callback, ) - if self.args is not None: - result += " args=%r" % (self.args, ) - return result + ">" - finally: - Py_ReprLeave(self) - - def _format(self): - return '' - - def close(self): - self.stop() - - def __enter__(self): - return self - - def __exit__(self, t, v, tb): - self.close() - return - -cdef start_and_stop io_ss = make_ss(<void*>libev.ev_io_start, <void*>libev.ev_io_stop) - -cdef public class io(watcher) [object PyGeventIOObject, type PyGeventIO_Type]: - - cdef libev.ev_io _watcher - - def start(self, object callback, *args, pass_events=False): - if pass_events: - args = (GEVENT_CORE_EVENTS, ) + args - _watcher_start(self, callback, args) - - def __init__(self, loop loop, libev.vfd_socket_t fd, int events, ref=True, priority=None): - watcher.__init__(self, loop, ref, priority) - - def __cinit__(self, loop loop, libev.vfd_socket_t fd, int events, ref=True, priority=None): - if fd < 0: - raise ValueError('fd must be non-negative: %r' % fd) - if events & ~(libev.EV__IOFDSET | libev.EV_READ | libev.EV_WRITE): - raise ValueError('illegal event mask: %r' % events) - # All the vfd_functions are no-ops on POSIX - cdef int vfd = libev.vfd_open(fd) - libev.ev_io_init(&self._watcher, <void *>gevent_callback_io, vfd, events) - self.__watcher = <libev.ev_watcher*>&self._watcher - self.__ss = &io_ss - - def __dealloc__(self): - libev.vfd_free(self._watcher.fd) - - @property - def fd(self): - return libev.vfd_get(self._watcher.fd) - - @fd.setter - def fd(self, long fd): - if libev.ev_is_active(&self._watcher): - raise AttributeError("'io' watcher attribute 'fd' is read-only while watcher is active") - cdef int vfd = libev.vfd_open(fd) - libev.vfd_free(self._watcher.fd) - libev.ev_io_init(&self._watcher, <void *>gevent_callback_io, vfd, self._watcher.events) - - @property - def events(self): - return self._watcher.events - - @events.setter - def events(self, int events): - if libev.ev_is_active(&self._watcher): - raise AttributeError("'io' watcher attribute 'events' is read-only while watcher is active") - libev.ev_io_init(&self._watcher, <void *>gevent_callback_io, self._watcher.fd, events) - - @property - def events_str(self): - return _events_to_str(self._watcher.events) - - def _format(self): - return ' fd=%s events=%s' % (self.fd, self.events_str) - -cdef start_and_stop timer_ss = make_ss(<void*>libev.ev_timer_start, <void*>libev.ev_timer_stop) - -cdef public class timer(watcher) [object PyGeventTimerObject, type PyGeventTimer_Type]: - - cdef libev.ev_timer _watcher - - def __cinit__(self, loop loop, double after=0.0, double repeat=0.0, ref=True, priority=None): - if repeat < 0.0: - raise ValueError("repeat must be positive or zero: %r" % repeat) - libev.ev_timer_init(&self._watcher, <void *>gevent_callback_timer, after, repeat) - self.__watcher = <libev.ev_watcher*>&self._watcher - self.__ss = &timer_ss - - def __init__(self, loop loop, double after=0.0, double repeat=0.0, ref=True, priority=None): - watcher.__init__(self, loop, ref, priority) - - def start(self, object callback, *args, update=None): - update = update if update is not None else self.loop.starting_timer_may_update_loop_time - if update: - self.loop.update_now() - _watcher_start(self, callback, args) - - @property - def at(self): - return self._watcher.at - - # QQQ: add 'after' and 'repeat' properties? - - def again(self, object callback, *args, update=True): - _check_loop(self.loop) - self.callback = callback - self.args = args - _libev_unref(self) - if update: - libev.ev_now_update(self.loop._ptr) - libev.ev_timer_again(self.loop._ptr, &self._watcher) - _python_incref(self) - - - -cdef start_and_stop signal_ss = make_ss(<void*>libev.ev_signal_start, <void*>libev.ev_signal_stop) - -cdef public class signal(watcher) [object PyGeventSignalObject, type PyGeventSignal_Type]: - - cdef libev.ev_signal _watcher - - def __cinit__(self, loop loop, int signalnum, ref=True, priority=None): - if signalnum < 1 or signalnum >= signalmodule.NSIG: - raise ValueError('illegal signal number: %r' % signalnum) - # still possible to crash on one of libev's asserts: - # 1) "libev: ev_signal_start called with illegal signal number" - # EV_NSIG might be different from signal.NSIG on some platforms - # 2) "libev: a signal must not be attached to two different loops" - # we probably could check that in LIBEV_EMBED mode, but not in general - libev.ev_signal_init(&self._watcher, <void *>gevent_callback_signal, signalnum) - self.__watcher = <libev.ev_watcher*>&self._watcher - self.__ss = &signal_ss - - def __init__(self, loop loop, int signalnum, ref=True, priority=None): - watcher.__init__(self, loop, ref, priority) - - - -cdef start_and_stop idle_ss = make_ss(<void*>libev.ev_idle_start, <void*>libev.ev_idle_stop) - -cdef public class idle(watcher) [object PyGeventIdleObject, type PyGeventIdle_Type]: - - cdef libev.ev_idle _watcher - - def __cinit__(self, loop loop, ref=True, priority=None): - libev.ev_idle_init(&self._watcher, <void*>gevent_callback_idle) - self.__watcher = <libev.ev_watcher*>&self._watcher - self.__ss = &idle_ss - - - -cdef start_and_stop prepare_ss = make_ss(<void*>libev.ev_prepare_start, <void*>libev.ev_prepare_stop) - -cdef public class prepare(watcher) [object PyGeventPrepareObject, type PyGeventPrepare_Type]: - - cdef libev.ev_prepare _watcher - - def __cinit__(self, loop loop, ref=True, priority=None): - libev.ev_prepare_init(&self._watcher, <void*>gevent_callback_prepare) - self.__watcher = <libev.ev_watcher*>&self._watcher - self.__ss = &prepare_ss - - - -cdef start_and_stop check_ss = make_ss(<void*>libev.ev_check_start, <void*>libev.ev_check_stop) - -cdef public class check(watcher) [object PyGeventCheckObject, type PyGeventCheck_Type]: - - cdef libev.ev_check _watcher - - def __cinit__(self, loop loop, ref=True, priority=None): - libev.ev_check_init(&self._watcher, <void*>gevent_callback_check) - self.__watcher = <libev.ev_watcher*>&self._watcher - self.__ss = &check_ss - - - -cdef start_and_stop fork_ss = make_ss(<void*>libev.ev_fork_start, <void*>libev.ev_fork_stop) - -cdef public class fork(watcher) [object PyGeventForkObject, type PyGeventFork_Type]: - - cdef libev.ev_fork _watcher - - def __cinit__(self, loop loop, ref=True, priority=None): - libev.ev_fork_init(&self._watcher, <void*>gevent_callback_fork) - self.__watcher = <libev.ev_watcher*>&self._watcher - self.__ss = &fork_ss - - -cdef start_and_stop async_ss = make_ss(<void*>libev.ev_async_start, <void*>libev.ev_async_stop) - -cdef public class async_(watcher) [object PyGeventAsyncObject, type PyGeventAsync_Type]: - - cdef libev.ev_async _watcher - - @property - def pending(self): - # Note the use of ev_async_pending instead of ev_is_pending - return True if libev.ev_async_pending(&self._watcher) else False - - def __cinit__(self, loop loop, ref=True, priority=None): - libev.ev_async_init(&self._watcher, <void*>gevent_callback_async) - self.__watcher = <libev.ev_watcher*>&self._watcher - self.__ss = &async_ss - - - def send(self): - _check_loop(self.loop) - libev.ev_async_send(self.loop._ptr, &self._watcher) - -async = async_ - -cdef start_and_stop child_ss = make_ss(<void*>libev.ev_child_start, <void*>libev.ev_child_stop) - -cdef public class child(watcher) [object PyGeventChildObject, type PyGeventChild_Type]: - - cdef libev.ev_child _watcher - - def __cinit__(self, loop loop, int pid, bint trace=0, ref=True): - if sys.platform == 'win32': - raise AttributeError("Child watchers are not supported on Windows") - if not loop.default: - raise TypeError('child watchers are only available on the default loop') - libev.gevent_install_sigchld_handler() - libev.ev_child_init(&self._watcher, <void *>gevent_callback_child, pid, trace) - self.__watcher = <libev.ev_watcher*>&self._watcher - self.__ss = &child_ss - - def __init__(self, loop loop, int pid, bint trace=0, ref=True): - watcher.__init__(self, loop, ref, None) - - - def _format(self): - return ' pid=%r rstatus=%r' % (self.pid, self.rstatus) - - @property - def pid(self): - return self._watcher.pid - - @property - def rpid(self): - return self._watcher.rpid - - @rpid.setter - def rpid(self, int value): - self._watcher.rpid = value - - @property - def rstatus(self): - return self._watcher.rstatus - - @rstatus.setter - def rstatus(self, int value): - self._watcher.rstatus = value - -cdef start_and_stop stat_ss = make_ss(<void*>libev.ev_stat_start, <void*>libev.ev_stat_stop) - -cdef public class stat(watcher) [object PyGeventStatObject, type PyGeventStat_Type]: - - cdef libev.ev_stat _watcher - cdef readonly str path - cdef readonly bytes _paths - - def __cinit__(self, loop loop, str path, float interval=0.0, ref=True, priority=None): - self.path = path - cdef bytes paths - if isinstance(path, unicode): - # the famous Python3 filesystem encoding debacle hits us here. Can we do better? - # We must keep a reference to the encoded string so that its bytes don't get freed - # and overwritten, leading to strange errors from libev ("no such file or directory") - paths = (<unicode>path).encode(sys.getfilesystemencoding()) - self._paths = paths - else: - paths = <bytes>path - self._paths = paths - libev.ev_stat_init(&self._watcher, <void *>gevent_callback_stat, <char*>paths, interval) - self.__watcher = <libev.ev_watcher*>&self._watcher - self.__ss = &stat_ss - - def __init__(self, loop loop, str path, float interval=0.0, ref=True, priority=None): - watcher.__init__(self, loop, ref, priority) - - - @property - def attr(self): - if not self._watcher.attr.st_nlink: - return - return _pystat_fromstructstat(&self._watcher.attr) - - @property - def prev(self): - if not self._watcher.prev.st_nlink: - return - return _pystat_fromstructstat(&self._watcher.prev) - - @property - def interval(self): - return self._watcher.interval - - - -__SYSERR_CALLBACK = None - - -cdef void _syserr_cb(char* msg) with gil: - try: - __SYSERR_CALLBACK(msg, errno) - except: - set_syserr_cb(None) - print_exc = getattr(traceback, 'print_exc', None) - if print_exc is not None: - print_exc() - - -cpdef set_syserr_cb(callback): - global __SYSERR_CALLBACK - if callback is None: - libev.ev_set_syserr_cb(NULL) - __SYSERR_CALLBACK = None - elif callable(callback): - libev.ev_set_syserr_cb(<void *>_syserr_cb) - __SYSERR_CALLBACK = callback - else: - raise TypeError('Expected callable or None, got %r' % (callback, )) - - - -LIBEV_EMBED = bool(libev.LIBEV_EMBED) -EV_USE_FLOOR = libev.EV_USE_FLOOR -EV_USE_CLOCK_SYSCALL = libev.EV_USE_CLOCK_SYSCALL -EV_USE_REALTIME = libev.EV_USE_REALTIME -EV_USE_MONOTONIC = libev.EV_USE_MONOTONIC -EV_USE_NANOSLEEP = libev.EV_USE_NANOSLEEP -EV_USE_INOTIFY = libev.EV_USE_INOTIFY -EV_USE_SIGNALFD = libev.EV_USE_SIGNALFD -EV_USE_EVENTFD = libev.EV_USE_EVENTFD -EV_USE_4HEAP = libev.EV_USE_4HEAP - -# Things used in callbacks.c - -from cpython cimport PyErr_Fetch -from cpython cimport PyObject - -cdef public void gevent_handle_error(loop loop, object context): - cdef PyObject* typep - cdef PyObject* valuep - cdef PyObject* tracebackp - - cdef object type - cdef object value = None - cdef object traceback = None - cdef object result - - # If it was set, this will clear it, and we will own - # the references. - PyErr_Fetch(&typep, &valuep, &tracebackp) - # TODO: Should we call PyErr_Normalize? There's code in - # Hub.handle_error that works around what looks like an - # unnormalized exception. - - if not typep: - return - # This assignment will do a Py_INCREF - # on the value. We already own the reference - # returned from PyErr_Fetch, - # so we must decref immediately - type = <object>typep - Py_DECREF(type) - - if valuep: - value = <object>valuep - Py_DECREF(value) - if tracebackp: - traceback = <object>tracebackp - Py_DECREF(traceback) - - # If this method fails by raising an exception, - # cython will print it for us because we don't return a - # Python object and we don't declare an `except` clause. - loop.handle_error(context, type, value, traceback) - -cdef public tuple _empty_tuple = () - -cdef public object gevent_loop_run_callbacks(loop loop): - return loop._run_callbacks() diff --git a/python/gevent/libev/corecffi.py b/python/gevent/libev/corecffi.py deleted file mode 100644 index d57993c..0000000 --- a/python/gevent/libev/corecffi.py +++ /dev/null @@ -1,418 +0,0 @@ -# pylint: disable=too-many-lines, protected-access, redefined-outer-name, not-callable -# pylint: disable=no-member -from __future__ import absolute_import, print_function -import sys - -# pylint: disable=undefined-all-variable -__all__ = [ - 'get_version', - 'get_header_version', - 'supported_backends', - 'recommended_backends', - 'embeddable_backends', - 'time', - 'loop', -] - -from gevent._util import implementer -from gevent._interfaces import ILoop - -from gevent.libev import _corecffi # pylint:disable=no-name-in-module,import-error - -ffi = _corecffi.ffi # pylint:disable=no-member -libev = _corecffi.lib # pylint:disable=no-member - -if hasattr(libev, 'vfd_open'): - # Must be on windows - assert sys.platform.startswith("win"), "vfd functions only needed on windows" - vfd_open = libev.vfd_open - vfd_free = libev.vfd_free - vfd_get = libev.vfd_get -else: - vfd_open = vfd_free = vfd_get = lambda fd: fd - -##### -## NOTE on Windows: -# The C implementation does several things specially for Windows; -# a possibly incomplete list is: -# -# - the loop runs a periodic signal checker; -# - the io watcher constructor is different and it has a destructor; -# - the child watcher is not defined -# -# The CFFI implementation does none of these things, and so -# is possibly NOT FUNCTIONALLY CORRECT on Win32 -##### - - -from gevent._ffi.loop import AbstractCallbacks -from gevent._ffi.loop import assign_standard_callbacks - -class _Callbacks(AbstractCallbacks): - # pylint:disable=arguments-differ - - def python_check_callback(self, _loop, watcher_ptr, _events): - pass - - def python_prepare_callback(self, _loop_ptr, watcher_ptr, _events): - AbstractCallbacks.python_prepare_callback(self, watcher_ptr) - - def _find_loop_from_c_watcher(self, watcher_ptr): - loop_handle = ffi.cast('struct ev_watcher*', watcher_ptr).data - return self.from_handle(loop_handle) - -_callbacks = assign_standard_callbacks(ffi, libev, _Callbacks) - - -UNDEF = libev.EV_UNDEF -NONE = libev.EV_NONE -READ = libev.EV_READ -WRITE = libev.EV_WRITE -TIMER = libev.EV_TIMER -PERIODIC = libev.EV_PERIODIC -SIGNAL = libev.EV_SIGNAL -CHILD = libev.EV_CHILD -STAT = libev.EV_STAT -IDLE = libev.EV_IDLE -PREPARE = libev.EV_PREPARE -CHECK = libev.EV_CHECK -EMBED = libev.EV_EMBED -FORK = libev.EV_FORK -CLEANUP = libev.EV_CLEANUP -ASYNC = libev.EV_ASYNC -CUSTOM = libev.EV_CUSTOM -ERROR = libev.EV_ERROR - -READWRITE = libev.EV_READ | libev.EV_WRITE - -MINPRI = libev.EV_MINPRI -MAXPRI = libev.EV_MAXPRI - -BACKEND_PORT = libev.EVBACKEND_PORT -BACKEND_KQUEUE = libev.EVBACKEND_KQUEUE -BACKEND_EPOLL = libev.EVBACKEND_EPOLL -BACKEND_POLL = libev.EVBACKEND_POLL -BACKEND_SELECT = libev.EVBACKEND_SELECT -FORKCHECK = libev.EVFLAG_FORKCHECK -NOINOTIFY = libev.EVFLAG_NOINOTIFY -SIGNALFD = libev.EVFLAG_SIGNALFD -NOSIGMASK = libev.EVFLAG_NOSIGMASK - - -from gevent._ffi.loop import EVENTS -GEVENT_CORE_EVENTS = EVENTS - - -def get_version(): - return 'libev-%d.%02d' % (libev.ev_version_major(), libev.ev_version_minor()) - - -def get_header_version(): - return 'libev-%d.%02d' % (libev.EV_VERSION_MAJOR, libev.EV_VERSION_MINOR) - -_flags = [(libev.EVBACKEND_PORT, 'port'), - (libev.EVBACKEND_KQUEUE, 'kqueue'), - (libev.EVBACKEND_EPOLL, 'epoll'), - (libev.EVBACKEND_POLL, 'poll'), - (libev.EVBACKEND_SELECT, 'select'), - (libev.EVFLAG_NOENV, 'noenv'), - (libev.EVFLAG_FORKCHECK, 'forkcheck'), - (libev.EVFLAG_SIGNALFD, 'signalfd'), - (libev.EVFLAG_NOSIGMASK, 'nosigmask')] - -_flags_str2int = dict((string, flag) for (flag, string) in _flags) - - - -def _flags_to_list(flags): - result = [] - for code, value in _flags: - if flags & code: - result.append(value) - flags &= ~code - if not flags: - break - if flags: - result.append(flags) - return result - -if sys.version_info[0] >= 3: - basestring = (bytes, str) - integer_types = (int,) -else: - import __builtin__ # pylint:disable=import-error - basestring = (__builtin__.basestring,) - integer_types = (int, __builtin__.long) - - -def _flags_to_int(flags): - # Note, that order does not matter, libev has its own predefined order - if not flags: - return 0 - if isinstance(flags, integer_types): - return flags - result = 0 - try: - if isinstance(flags, basestring): - flags = flags.split(',') - for value in flags: - value = value.strip().lower() - if value: - result |= _flags_str2int[value] - except KeyError as ex: - raise ValueError('Invalid backend or flag: %s\nPossible values: %s' % (ex, ', '.join(sorted(_flags_str2int.keys())))) - return result - - -def _str_hex(flag): - if isinstance(flag, integer_types): - return hex(flag) - return str(flag) - - -def _check_flags(flags): - as_list = [] - flags &= libev.EVBACKEND_MASK - if not flags: - return - if not flags & libev.EVBACKEND_ALL: - raise ValueError('Invalid value for backend: 0x%x' % flags) - if not flags & libev.ev_supported_backends(): - as_list = [_str_hex(x) for x in _flags_to_list(flags)] - raise ValueError('Unsupported backend: %s' % '|'.join(as_list)) - - -def supported_backends(): - return _flags_to_list(libev.ev_supported_backends()) - - -def recommended_backends(): - return _flags_to_list(libev.ev_recommended_backends()) - - -def embeddable_backends(): - return _flags_to_list(libev.ev_embeddable_backends()) - - -def time(): - return libev.ev_time() - -from gevent._ffi.loop import AbstractLoop - - -from gevent.libev import watcher as _watchers -_events_to_str = _watchers._events_to_str # exported - - -@implementer(ILoop) -class loop(AbstractLoop): - # pylint:disable=too-many-public-methods - - error_handler = None - - _CHECK_POINTER = 'struct ev_check *' - - _PREPARE_POINTER = 'struct ev_prepare *' - - _TIMER_POINTER = 'struct ev_timer *' - - def __init__(self, flags=None, default=None): - AbstractLoop.__init__(self, ffi, libev, _watchers, flags, default) - self._default = True if libev.ev_is_default_loop(self._ptr) else False - - - def _init_loop(self, flags, default): - c_flags = _flags_to_int(flags) - _check_flags(c_flags) - c_flags |= libev.EVFLAG_NOENV - c_flags |= libev.EVFLAG_FORKCHECK - if default is None: - default = True - if default: - ptr = libev.gevent_ev_default_loop(c_flags) - if not ptr: - raise SystemError("ev_default_loop(%s) failed" % (c_flags, )) - else: - ptr = libev.ev_loop_new(c_flags) - if not ptr: - raise SystemError("ev_loop_new(%s) failed" % (c_flags, )) - if default or globals()["__SYSERR_CALLBACK"] is None: - set_syserr_cb(self._handle_syserr) - - # Mark this loop as being used. - libev.ev_set_userdata(ptr, ptr) - return ptr - - def _init_and_start_check(self): - libev.ev_check_init(self._check, libev.python_check_callback) - self._check.data = self._handle_to_self - libev.ev_check_start(self._ptr, self._check) - self.unref() - - def _init_and_start_prepare(self): - libev.ev_prepare_init(self._prepare, libev.python_prepare_callback) - libev.ev_prepare_start(self._ptr, self._prepare) - self.unref() - - def _init_callback_timer(self): - libev.ev_timer_init(self._timer0, libev.gevent_noop, 0.0, 0.0) - - def _stop_callback_timer(self): - libev.ev_timer_stop(self._ptr, self._timer0) - - def _start_callback_timer(self): - libev.ev_timer_start(self._ptr, self._timer0) - - def _stop_aux_watchers(self): - if libev.ev_is_active(self._prepare): - self.ref() - libev.ev_prepare_stop(self._ptr, self._prepare) - if libev.ev_is_active(self._check): - self.ref() - libev.ev_check_stop(self._ptr, self._check) - if libev.ev_is_active(self._timer0): - libev.ev_timer_stop(self._timer0) - - def _setup_for_run_callback(self): - self.ref() # we should go through the loop now - - def destroy(self): - if self._ptr: - super(loop, self).destroy() - # pylint:disable=comparison-with-callable - if globals()["__SYSERR_CALLBACK"] == self._handle_syserr: - set_syserr_cb(None) - - - def _can_destroy_loop(self, ptr): - # Is it marked as destroyed? - return libev.ev_userdata(ptr) - - def _destroy_loop(self, ptr): - # Mark as destroyed. - libev.ev_set_userdata(ptr, ffi.NULL) - libev.ev_loop_destroy(ptr) - - libev.gevent_zero_prepare(self._prepare) - libev.gevent_zero_check(self._check) - libev.gevent_zero_timer(self._timer0) - - del self._prepare - del self._check - del self._timer0 - - - @property - def MAXPRI(self): - return libev.EV_MAXPRI - - @property - def MINPRI(self): - return libev.EV_MINPRI - - def _default_handle_error(self, context, type, value, tb): # pylint:disable=unused-argument - super(loop, self)._default_handle_error(context, type, value, tb) - libev.ev_break(self._ptr, libev.EVBREAK_ONE) - - def run(self, nowait=False, once=False): - flags = 0 - if nowait: - flags |= libev.EVRUN_NOWAIT - if once: - flags |= libev.EVRUN_ONCE - - libev.ev_run(self._ptr, flags) - - def reinit(self): - libev.ev_loop_fork(self._ptr) - - def ref(self): - libev.ev_ref(self._ptr) - - def unref(self): - libev.ev_unref(self._ptr) - - def break_(self, how=libev.EVBREAK_ONE): - libev.ev_break(self._ptr, how) - - def verify(self): - libev.ev_verify(self._ptr) - - def now(self): - return libev.ev_now(self._ptr) - - def update_now(self): - libev.ev_now_update(self._ptr) - - def __repr__(self): - return '<%s at 0x%x %s>' % (self.__class__.__name__, id(self), self._format()) - - @property - def iteration(self): - return libev.ev_iteration(self._ptr) - - @property - def depth(self): - return libev.ev_depth(self._ptr) - - @property - def backend_int(self): - return libev.ev_backend(self._ptr) - - @property - def backend(self): - backend = libev.ev_backend(self._ptr) - for key, value in _flags: - if key == backend: - return value - return backend - - @property - def pendingcnt(self): - return libev.ev_pending_count(self._ptr) - - if sys.platform != "win32": - - def install_sigchld(self): - libev.gevent_install_sigchld_handler() - - def reset_sigchld(self): - libev.gevent_reset_sigchld_handler() - - def fileno(self): - if self._ptr: - fd = self._ptr.backend_fd - if fd >= 0: - return fd - - @property - def activecnt(self): - if not self._ptr: - raise ValueError('operation on destroyed loop') - return self._ptr.activecnt - - -@ffi.def_extern() -def _syserr_cb(msg): - try: - msg = ffi.string(msg) - __SYSERR_CALLBACK(msg, ffi.errno) - except: - set_syserr_cb(None) - raise # let cffi print the traceback - - -def set_syserr_cb(callback): - global __SYSERR_CALLBACK - if callback is None: - libev.ev_set_syserr_cb(ffi.NULL) - __SYSERR_CALLBACK = None - elif callable(callback): - libev.ev_set_syserr_cb(libev._syserr_cb) - __SYSERR_CALLBACK = callback - else: - raise TypeError('Expected callable or None, got %r' % (callback, )) - -__SYSERR_CALLBACK = None - -LIBEV_EMBED = True diff --git a/python/gevent/libev/libev.h b/python/gevent/libev/libev.h deleted file mode 100644 index 66959d9..0000000 --- a/python/gevent/libev/libev.h +++ /dev/null @@ -1,100 +0,0 @@ -#if defined(LIBEV_EMBED) -#include "ev.c" -#undef LIBEV_EMBED -#define LIBEV_EMBED 1 -#define gevent_ev_loop_origflags(loop) ((loop)->origflags) -#define gevent_ev_loop_sig_pending(loop) ((loop))->sig_pending -#define gevent_ev_loop_backend_fd(loop) ((loop))->backend_fd -#define gevent_ev_loop_activecnt(loop) ((loop))->activecnt -#if EV_USE_SIGNALFD -#define gevent_ev_loop_sigfd(loop) ((loop))->sigfd -#else -#define gevent_ev_loop_sigfd(loop) -1 -#endif /* !EV_USE_SIGNALFD */ -#else /* !LIBEV_EMBED */ -#include "ev.h" - -#define gevent_ev_loop_origflags(loop) -1 -#define gevent_ev_loop_sig_pending(loop) -1 -#define gevent_ev_loop_backend_fd(loop) -1 -#define gevent_ev_loop_activecnt(loop) -1 -#define gevent_ev_loop_sigfd(loop) -1 - -#define LIBEV_EMBED 0 -#define EV_USE_FLOOR -1 -#define EV_USE_CLOCK_SYSCALL -1 -#define EV_USE_REALTIME -1 -#define EV_USE_MONOTONIC -1 -#define EV_USE_NANOSLEEP -1 -#define EV_USE_INOTIFY -1 -#define EV_USE_SIGNALFD -1 -#define EV_USE_EVENTFD -1 -#define EV_USE_4HEAP -1 - - -#ifndef _WIN32 -#include <signal.h> -#endif /* !_WIN32 */ - -#endif /* LIBEV_EMBED */ - -#ifndef _WIN32 - -static struct sigaction libev_sigchld; -/* - * Track the state of whether we have installed - * the libev sigchld handler specifically. - * If it's non-zero, libev_sigchld will be valid and set to the action - * that libev needs to do. - * If it's 1, we need to install libev_sigchld to make libev - * child handlers work (on request). - */ -static int sigchld_state = 0; - -static struct ev_loop* gevent_ev_default_loop(unsigned int flags) -{ - struct ev_loop* result; - struct sigaction tmp; - - if (sigchld_state) - return ev_default_loop(flags); - - // Request the old SIGCHLD handler - sigaction(SIGCHLD, NULL, &tmp); - // Get the loop, which will install a SIGCHLD handler - result = ev_default_loop(flags); - // XXX what if SIGCHLD received there? - // Now restore the previous SIGCHLD handler - sigaction(SIGCHLD, &tmp, &libev_sigchld); - sigchld_state = 1; - return result; -} - - -static void gevent_install_sigchld_handler(void) { - if (sigchld_state == 1) { - sigaction(SIGCHLD, &libev_sigchld, NULL); - sigchld_state = 2; - } -} - -static void gevent_reset_sigchld_handler(void) { - // We could have any state at this point, depending on - // whether the default loop has been used. If it has, - // then always be in state 1 ("need to install) - if (sigchld_state) { - sigchld_state = 1; - } -} - -#else /* !_WIN32 */ - -#define gevent_ev_default_loop ev_default_loop -static void gevent_install_sigchld_handler(void) { } -static void gevent_reset_sigchld_handler(void) { } - -// Fake child functions that we can link to. -static void ev_child_start(struct ev_loop* loop, ev_child* w) {}; -static void ev_child_stop(struct ev_loop* loop, ev_child* w) {}; - -#endif /* _WIN32 */ diff --git a/python/gevent/libev/libev.pxd b/python/gevent/libev/libev.pxd deleted file mode 100644 index e3be525..0000000 --- a/python/gevent/libev/libev.pxd +++ /dev/null @@ -1,235 +0,0 @@ -# From cython/includes/libc/stdint.pxd -# Longness only used for type promotion. -# Actual compile time size used for conversions. -# We don't have stdint.h on visual studio 9.0 (2008) on windows, sigh, -# so go with Py_ssize_t -# ssize_t -> intptr_t - -cdef extern from "libev_vfd.h": -# cython doesn't process pre-processor directives, so they -# don't matter in this file. It just takes the last definition it sees. - ctypedef Py_ssize_t intptr_t - ctypedef intptr_t vfd_socket_t - - vfd_socket_t vfd_get(int) - int vfd_open(long) except -1 - void vfd_free(int) - -cdef extern from "libev.h" nogil: - int LIBEV_EMBED - int EV_MINPRI - int EV_MAXPRI - - int EV_VERSION_MAJOR - int EV_VERSION_MINOR - - int EV_USE_FLOOR - int EV_USE_CLOCK_SYSCALL - int EV_USE_REALTIME - int EV_USE_MONOTONIC - int EV_USE_NANOSLEEP - int EV_USE_SELECT - int EV_USE_POLL - int EV_USE_EPOLL - int EV_USE_KQUEUE - int EV_USE_PORT - int EV_USE_INOTIFY - int EV_USE_SIGNALFD - int EV_USE_EVENTFD - int EV_USE_4HEAP - int EV_USE_IOCP - int EV_SELECT_IS_WINSOCKET - - int EV_UNDEF - int EV_NONE - int EV_READ - int EV_WRITE - int EV__IOFDSET - int EV_TIMER - int EV_PERIODIC - int EV_SIGNAL - int EV_CHILD - int EV_STAT - int EV_IDLE - int EV_PREPARE - int EV_CHECK - int EV_EMBED - int EV_FORK - int EV_CLEANUP - int EV_ASYNC - int EV_CUSTOM - int EV_ERROR - - int EVFLAG_AUTO - int EVFLAG_NOENV - int EVFLAG_FORKCHECK - int EVFLAG_NOINOTIFY - int EVFLAG_SIGNALFD - int EVFLAG_NOSIGMASK - - int EVBACKEND_SELECT - int EVBACKEND_POLL - int EVBACKEND_EPOLL - int EVBACKEND_KQUEUE - int EVBACKEND_DEVPOLL - int EVBACKEND_PORT - int EVBACKEND_IOCP - int EVBACKEND_ALL - int EVBACKEND_MASK - - int EVRUN_NOWAIT - int EVRUN_ONCE - - int EVBREAK_CANCEL - int EVBREAK_ONE - int EVBREAK_ALL - - struct ev_loop: - int activecnt - int sig_pending - int backend_fd - int sigfd - unsigned int origflags - - struct ev_watcher: - void* data; - - struct ev_io: - int fd - int events - - struct ev_timer: - double at - - struct ev_signal: - pass - - struct ev_idle: - pass - - struct ev_prepare: - pass - - struct ev_check: - pass - - struct ev_fork: - pass - - struct ev_async: - pass - - struct ev_child: - int pid - int rpid - int rstatus - - struct stat: - int st_nlink - - struct ev_stat: - stat attr - stat prev - double interval - - union ev_any_watcher: - ev_watcher w - ev_io io - ev_timer timer - ev_signal signal - ev_idle idle - - int ev_version_major() - int ev_version_minor() - - unsigned int ev_supported_backends() - unsigned int ev_recommended_backends() - unsigned int ev_embeddable_backends() - - ctypedef double ev_tstamp - - ev_tstamp ev_time() - void ev_set_syserr_cb(void *) - - int ev_priority(void*) - void ev_set_priority(void*, int) - - int ev_is_pending(void*) - int ev_is_active(void*) - void ev_io_init(ev_io*, void* callback, int fd, int events) - void ev_io_start(ev_loop*, ev_io*) - void ev_io_stop(ev_loop*, ev_io*) - void ev_feed_event(ev_loop*, void*, int) - - void ev_timer_init(ev_timer*, void* callback, double, double) - void ev_timer_start(ev_loop*, ev_timer*) - void ev_timer_stop(ev_loop*, ev_timer*) - void ev_timer_again(ev_loop*, ev_timer*) - - void ev_signal_init(ev_signal*, void* callback, int) - void ev_signal_start(ev_loop*, ev_signal*) - void ev_signal_stop(ev_loop*, ev_signal*) - - void ev_idle_init(ev_idle*, void* callback) - void ev_idle_start(ev_loop*, ev_idle*) - void ev_idle_stop(ev_loop*, ev_idle*) - - void ev_prepare_init(ev_prepare*, void* callback) - void ev_prepare_start(ev_loop*, ev_prepare*) - void ev_prepare_stop(ev_loop*, ev_prepare*) - - void ev_check_init(ev_check*, void* callback) - void ev_check_start(ev_loop*, ev_check*) - void ev_check_stop(ev_loop*, ev_check*) - - void ev_fork_init(ev_fork*, void* callback) - void ev_fork_start(ev_loop*, ev_fork*) - void ev_fork_stop(ev_loop*, ev_fork*) - - void ev_async_init(ev_async*, void* callback) - void ev_async_start(ev_loop*, ev_async*) - void ev_async_stop(ev_loop*, ev_async*) - void ev_async_send(ev_loop*, ev_async*) - int ev_async_pending(ev_async*) - - void ev_child_init(ev_child*, void* callback, int, int) - void ev_child_start(ev_loop*, ev_child*) - void ev_child_stop(ev_loop*, ev_child*) - - void ev_stat_init(ev_stat*, void* callback, char*, double) - void ev_stat_start(ev_loop*, ev_stat*) - void ev_stat_stop(ev_loop*, ev_stat*) - - ev_loop* ev_default_loop(unsigned int flags) - ev_loop* ev_loop_new(unsigned int flags) - void* ev_userdata(ev_loop*) - void ev_set_userdata(ev_loop*, void*) - void ev_loop_destroy(ev_loop*) - void ev_loop_fork(ev_loop*) - int ev_is_default_loop(ev_loop*) - unsigned int ev_iteration(ev_loop*) - unsigned int ev_depth(ev_loop*) - unsigned int ev_backend(ev_loop*) - void ev_verify(ev_loop*) - void ev_run(ev_loop*, int flags) nogil - - ev_tstamp ev_now(ev_loop*) - void ev_now_update(ev_loop*) - - void ev_ref(ev_loop*) - void ev_unref(ev_loop*) - void ev_break(ev_loop*, int) - unsigned int ev_pending_count(ev_loop*) - - # gevent extra functions. These are defined in libev.h. - ev_loop* gevent_ev_default_loop(unsigned int flags) - void gevent_install_sigchld_handler() - void gevent_reset_sigchld_handler() - - # These compensate for lack of access to ev_loop struct definition - # when LIBEV_EMBED is false. - unsigned int gevent_ev_loop_origflags(ev_loop*); - int gevent_ev_loop_sig_pending(ev_loop*); - int gevent_ev_loop_backend_fd(ev_loop*); - int gevent_ev_loop_activecnt(ev_loop*); - int gevent_ev_loop_sigfd(ev_loop*); diff --git a/python/gevent/libev/libev_vfd.h b/python/gevent/libev/libev_vfd.h deleted file mode 100644 index ff30fd8..0000000 --- a/python/gevent/libev/libev_vfd.h +++ /dev/null @@ -1,225 +0,0 @@ -#ifdef _WIN32 -/* see discussion in the libuv directory: this is a SOCKET which is a - HANDLE which is a PVOID (even though they're really small ints), - and CPython and PyPy return that SOCKET cast to an int from - fileno() -*/ -typedef intptr_t vfd_socket_t; -#define vfd_socket_object PyLong_FromLongLong - -#ifdef LIBEV_EMBED -/* - * If libev on win32 is embedded, then we can use an - * arbitrary mapping between integer fds and OS - * handles. Then by defining special macros libev - * will use our functions. - */ - -#define WIN32_LEAN_AND_MEAN -#include <winsock2.h> -#include <windows.h> - -typedef struct vfd_entry_t -{ - vfd_socket_t handle; /* OS handle, i.e. SOCKET */ - int count; /* Reference count, 0 if free */ - int next; /* Next free fd, -1 if last */ -} vfd_entry; - -#define VFD_INCREMENT 128 -static int vfd_num = 0; /* num allocated fds */ -static int vfd_max = 0; /* max allocated fds */ -static int vfd_next = -1; /* next free fd for reuse */ -static PyObject* vfd_map = NULL; /* map OS handle -> virtual fd */ -static vfd_entry* vfd_entries = NULL; /* list of virtual fd entries */ - -#ifdef WITH_THREAD -static CRITICAL_SECTION* volatile vfd_lock = NULL; -static CRITICAL_SECTION* vfd_make_lock() -{ - if (vfd_lock == NULL) { - /* must use malloc and not PyMem_Malloc here */ - CRITICAL_SECTION* lock = malloc(sizeof(CRITICAL_SECTION)); - InitializeCriticalSection(lock); - if (InterlockedCompareExchangePointer(&vfd_lock, lock, NULL) != NULL) { - /* another thread initialized lock first */ - DeleteCriticalSection(lock); - free(lock); - } - } - return vfd_lock; -} -#define VFD_LOCK_ENTER EnterCriticalSection(vfd_make_lock()) -#define VFD_LOCK_LEAVE LeaveCriticalSection(vfd_lock) -#define VFD_GIL_DECLARE PyGILState_STATE ___save -#define VFD_GIL_ENSURE ___save = PyGILState_Ensure() -#define VFD_GIL_RELEASE PyGILState_Release(___save) -#else /* ! WITH_THREAD */ -#define VFD_LOCK_ENTER -#define VFD_LOCK_LEAVE -#define VFD_GIL_DECLARE -#define VFD_GIL_ENSURE -#define VFD_GIL_RELEASE -#endif /*_WITH_THREAD */ - -/* - * Given a virtual fd returns an OS handle or -1 - * This function is speed critical, so it cannot use GIL - */ -static vfd_socket_t vfd_get(int fd) -{ - vfd_socket_t handle = -1; - VFD_LOCK_ENTER; - if (vfd_entries != NULL && fd >= 0 && fd < vfd_num) - handle = vfd_entries[fd].handle; - VFD_LOCK_LEAVE; - return handle; -} - -#define EV_FD_TO_WIN32_HANDLE(fd) vfd_get((fd)) - -/* - * Given an OS handle finds or allocates a virtual fd - * Returns -1 on failure and sets Python exception if pyexc is non-zero - */ -static int vfd_open_(vfd_socket_t handle, int pyexc) -{ - VFD_GIL_DECLARE; - int fd = -1; - unsigned long arg; - PyObject* key = NULL; - PyObject* value; - - if (!pyexc) { - VFD_GIL_ENSURE; - } - if (ioctlsocket(handle, FIONREAD, &arg) != 0) { - if (pyexc) - PyErr_Format(PyExc_IOError, -#ifdef _WIN64 - "%lld is not a socket (files are not supported)", -#else - "%ld is not a socket (files are not supported)", -#endif - handle); - goto done; - } - if (vfd_map == NULL) { - vfd_map = PyDict_New(); - if (vfd_map == NULL) - goto done; - } - key = vfd_socket_object(handle); - /* check if it's already in the dict */ - value = PyDict_GetItem(vfd_map, key); - if (value != NULL) { - /* is it safe to use PyInt_AS_LONG(value) here? */ - fd = PyInt_AsLong(value); - if (fd >= 0) { - ++vfd_entries[fd].count; - goto done; - } - } - /* use the free entry, if available */ - if (vfd_next >= 0) { - fd = vfd_next; - vfd_next = vfd_entries[fd].next; - VFD_LOCK_ENTER; - goto allocated; - } - /* check if it would be out of bounds */ - if (vfd_num >= FD_SETSIZE) { - /* libev's select doesn't support more that FD_SETSIZE fds */ - if (pyexc) - PyErr_Format(PyExc_IOError, "cannot watch more than %d sockets", (int)FD_SETSIZE); - goto done; - } - /* allocate more space if needed */ - VFD_LOCK_ENTER; - if (vfd_num >= vfd_max) { - int newsize = vfd_max + VFD_INCREMENT; - vfd_entry* entries = PyMem_Realloc(vfd_entries, sizeof(vfd_entry) * newsize); - if (entries == NULL) { - VFD_LOCK_LEAVE; - if (pyexc) - PyErr_NoMemory(); - goto done; - } - vfd_entries = entries; - vfd_max = newsize; - } - fd = vfd_num++; -allocated: - /* vfd_lock must be acquired when entering here */ - vfd_entries[fd].handle = handle; - vfd_entries[fd].count = 1; - VFD_LOCK_LEAVE; - value = PyInt_FromLong(fd); - PyDict_SetItem(vfd_map, key, value); - Py_DECREF(value); -done: - Py_XDECREF(key); - if (!pyexc) { - VFD_GIL_RELEASE; - } - return fd; -} - -#define vfd_open(fd) vfd_open_((fd), 1) -#define EV_WIN32_HANDLE_TO_FD(handle) vfd_open_((handle), 0) - -static void vfd_free_(int fd, int needclose) -{ - VFD_GIL_DECLARE; - PyObject* key; - - if (needclose) { - VFD_GIL_ENSURE; - } - if (fd < 0 || fd >= vfd_num) - goto done; /* out of bounds */ - if (vfd_entries[fd].count <= 0) - goto done; /* free entry, ignore */ - if (!--vfd_entries[fd].count) { - /* fd has just been freed */ - vfd_socket_t handle = vfd_entries[fd].handle; - vfd_entries[fd].handle = -1; - vfd_entries[fd].next = vfd_next; - vfd_next = fd; - if (needclose) - closesocket(handle); - /* vfd_map is assumed to be != NULL */ - key = vfd_socket_object(handle); - PyDict_DelItem(vfd_map, key); - Py_DECREF(key); - } -done: - if (needclose) { - VFD_GIL_RELEASE; - } -} - -#define vfd_free(fd) vfd_free_((fd), 0) -#define EV_WIN32_CLOSE_FD(fd) vfd_free_((fd), 1) - -#else /* !LIBEV_EMBED */ -/* - * If libev on win32 is not embedded in gevent, then - * the only way to map vfds is to use the default of - * using runtime fds in libev. Note that it will leak - * fds, because there's no way of closing them safely - */ -#define vfd_get(fd) _get_osfhandle((fd)) -#define vfd_open(fd) _open_osfhandle((fd), 0) -#define vfd_free(fd) -#endif /* LIBEV_EMBED */ - -#else /* !_WIN32 */ -/* - * On non-win32 platforms vfd_* are noop macros - */ -typedef int vfd_socket_t; -#define vfd_get(fd) (fd) -#define vfd_open(fd) (fd) -#define vfd_free(fd) -#endif /* _WIN32 */ diff --git a/python/gevent/libev/stathelper.c b/python/gevent/libev/stathelper.c deleted file mode 100644 index 1a70b55..0000000 --- a/python/gevent/libev/stathelper.c +++ /dev/null @@ -1,187 +0,0 @@ -/* copied from Python-2.7.2/Modules/posixmodule.c */ -#include "structseq.h" - -#define STRUCT_STAT struct stat - -#ifdef HAVE_STRUCT_STAT_ST_BLKSIZE -#define ST_BLKSIZE_IDX 13 -#else -#define ST_BLKSIZE_IDX 12 -#endif - -#ifdef HAVE_STRUCT_STAT_ST_BLOCKS -#define ST_BLOCKS_IDX (ST_BLKSIZE_IDX+1) -#else -#define ST_BLOCKS_IDX ST_BLKSIZE_IDX -#endif - -#ifdef HAVE_STRUCT_STAT_ST_RDEV -#define ST_RDEV_IDX (ST_BLOCKS_IDX+1) -#else -#define ST_RDEV_IDX ST_BLOCKS_IDX -#endif - -#ifdef HAVE_STRUCT_STAT_ST_FLAGS -#define ST_FLAGS_IDX (ST_RDEV_IDX+1) -#else -#define ST_FLAGS_IDX ST_RDEV_IDX -#endif - -#ifdef HAVE_STRUCT_STAT_ST_GEN -#define ST_GEN_IDX (ST_FLAGS_IDX+1) -#else -#define ST_GEN_IDX ST_FLAGS_IDX -#endif - -#ifdef HAVE_STRUCT_STAT_ST_BIRTHTIME -#define ST_BIRTHTIME_IDX (ST_GEN_IDX+1) -#else -#define ST_BIRTHTIME_IDX ST_GEN_IDX -#endif - - - -static PyObject* posixmodule = NULL; -static PyTypeObject* pStatResultType = NULL; - - -static PyObject* import_posixmodule(void) -{ - if (!posixmodule) { - posixmodule = PyImport_ImportModule("posix"); - } - return posixmodule; -} - - -static PyObject* import_StatResultType(void) -{ - PyObject* p = NULL; - if (!pStatResultType) { - PyObject* module; - module = import_posixmodule(); - if (module) { - p = PyObject_GetAttrString(module, "stat_result"); - } - } - return p; -} - -static void -fill_time(PyObject *v, int index, time_t sec, unsigned long nsec) -{ - PyObject *fval,*ival; -#if SIZEOF_TIME_T > SIZEOF_LONG - ival = PyLong_FromLongLong((PY_LONG_LONG)sec); -#else - ival = PyInt_FromLong((long)sec); -#endif - if (!ival) - return; - fval = PyFloat_FromDouble(sec + 1e-9*nsec); - PyStructSequence_SET_ITEM(v, index, ival); - PyStructSequence_SET_ITEM(v, index+3, fval); -} - -/* pack a system stat C structure into the Python stat tuple - (used by posix_stat() and posix_fstat()) */ -static PyObject* -_pystat_fromstructstat(STRUCT_STAT *st) -{ - unsigned long ansec, mnsec, cnsec; - PyObject *v; - - PyTypeObject* StatResultType = (PyTypeObject*)import_StatResultType(); - if (StatResultType == NULL) { - return NULL; - } - - v = PyStructSequence_New(StatResultType); - if (v == NULL) - return NULL; - - PyStructSequence_SET_ITEM(v, 0, PyInt_FromLong((long)st->st_mode)); -#ifdef HAVE_LARGEFILE_SUPPORT - PyStructSequence_SET_ITEM(v, 1, - PyLong_FromLongLong((PY_LONG_LONG)st->st_ino)); -#else - PyStructSequence_SET_ITEM(v, 1, PyInt_FromLong((long)st->st_ino)); -#endif -#if defined(HAVE_LONG_LONG) && !defined(MS_WINDOWS) - PyStructSequence_SET_ITEM(v, 2, - PyLong_FromLongLong((PY_LONG_LONG)st->st_dev)); -#else - PyStructSequence_SET_ITEM(v, 2, PyInt_FromLong((long)st->st_dev)); -#endif - PyStructSequence_SET_ITEM(v, 3, PyInt_FromLong((long)st->st_nlink)); - PyStructSequence_SET_ITEM(v, 4, PyInt_FromLong((long)st->st_uid)); - PyStructSequence_SET_ITEM(v, 5, PyInt_FromLong((long)st->st_gid)); -#ifdef HAVE_LARGEFILE_SUPPORT - PyStructSequence_SET_ITEM(v, 6, - PyLong_FromLongLong((PY_LONG_LONG)st->st_size)); -#else - PyStructSequence_SET_ITEM(v, 6, PyInt_FromLong(st->st_size)); -#endif - -#if defined(HAVE_STAT_TV_NSEC) - ansec = st->st_atim.tv_nsec; - mnsec = st->st_mtim.tv_nsec; - cnsec = st->st_ctim.tv_nsec; -#elif defined(HAVE_STAT_TV_NSEC2) - ansec = st->st_atimespec.tv_nsec; - mnsec = st->st_mtimespec.tv_nsec; - cnsec = st->st_ctimespec.tv_nsec; -#elif defined(HAVE_STAT_NSEC) - ansec = st->st_atime_nsec; - mnsec = st->st_mtime_nsec; - cnsec = st->st_ctime_nsec; -#else - ansec = mnsec = cnsec = 0; -#endif - fill_time(v, 7, st->st_atime, ansec); - fill_time(v, 8, st->st_mtime, mnsec); - fill_time(v, 9, st->st_ctime, cnsec); - -#ifdef HAVE_STRUCT_STAT_ST_BLKSIZE - PyStructSequence_SET_ITEM(v, ST_BLKSIZE_IDX, - PyInt_FromLong((long)st->st_blksize)); -#endif -#ifdef HAVE_STRUCT_STAT_ST_BLOCKS - PyStructSequence_SET_ITEM(v, ST_BLOCKS_IDX, - PyInt_FromLong((long)st->st_blocks)); -#endif -#ifdef HAVE_STRUCT_STAT_ST_RDEV - PyStructSequence_SET_ITEM(v, ST_RDEV_IDX, - PyInt_FromLong((long)st->st_rdev)); -#endif -#ifdef HAVE_STRUCT_STAT_ST_GEN - PyStructSequence_SET_ITEM(v, ST_GEN_IDX, - PyInt_FromLong((long)st->st_gen)); -#endif -#ifdef HAVE_STRUCT_STAT_ST_BIRTHTIME - { - PyObject *val; - unsigned long bsec,bnsec; - bsec = (long)st->st_birthtime; -#ifdef HAVE_STAT_TV_NSEC2 - bnsec = st->st_birthtimespec.tv_nsec; -#else - bnsec = 0; -#endif - val = PyFloat_FromDouble(bsec + 1e-9*bnsec); - PyStructSequence_SET_ITEM(v, ST_BIRTHTIME_IDX, - val); - } -#endif -#ifdef HAVE_STRUCT_STAT_ST_FLAGS - PyStructSequence_SET_ITEM(v, ST_FLAGS_IDX, - PyInt_FromLong((long)st->st_flags)); -#endif - - if (PyErr_Occurred()) { - Py_DECREF(v); - return NULL; - } - - return v; -} diff --git a/python/gevent/libev/watcher.py b/python/gevent/libev/watcher.py deleted file mode 100644 index 8beaa1f..0000000 --- a/python/gevent/libev/watcher.py +++ /dev/null @@ -1,282 +0,0 @@ -# pylint: disable=too-many-lines, protected-access, redefined-outer-name, not-callable -# pylint: disable=no-member -from __future__ import absolute_import, print_function -import sys - -from gevent.libev import _corecffi # pylint:disable=no-name-in-module,import-error - -ffi = _corecffi.ffi # pylint:disable=no-member -libev = _corecffi.lib # pylint:disable=no-member - -if hasattr(libev, 'vfd_open'): - # Must be on windows - assert sys.platform.startswith("win"), "vfd functions only needed on windows" - vfd_open = libev.vfd_open - vfd_free = libev.vfd_free - vfd_get = libev.vfd_get -else: - vfd_open = vfd_free = vfd_get = lambda fd: fd - -##### -## NOTE on Windows: -# The C implementation does several things specially for Windows; -# a possibly incomplete list is: -# -# - the loop runs a periodic signal checker; -# - the io watcher constructor is different and it has a destructor; -# - the child watcher is not defined -# -# The CFFI implementation does none of these things, and so -# is possibly NOT FUNCTIONALLY CORRECT on Win32 -##### -_NOARGS = () -_events = [(libev.EV_READ, 'READ'), - (libev.EV_WRITE, 'WRITE'), - (libev.EV__IOFDSET, '_IOFDSET'), - (libev.EV_PERIODIC, 'PERIODIC'), - (libev.EV_SIGNAL, 'SIGNAL'), - (libev.EV_CHILD, 'CHILD'), - (libev.EV_STAT, 'STAT'), - (libev.EV_IDLE, 'IDLE'), - (libev.EV_PREPARE, 'PREPARE'), - (libev.EV_CHECK, 'CHECK'), - (libev.EV_EMBED, 'EMBED'), - (libev.EV_FORK, 'FORK'), - (libev.EV_CLEANUP, 'CLEANUP'), - (libev.EV_ASYNC, 'ASYNC'), - (libev.EV_CUSTOM, 'CUSTOM'), - (libev.EV_ERROR, 'ERROR')] - -from gevent._ffi import watcher as _base - -def _events_to_str(events): - return _base.events_to_str(events, _events) - - - -class watcher(_base.watcher): - _FFI = ffi - _LIB = libev - _watcher_prefix = 'ev' - - # Flags is a bitfield with the following meaning: - # 0000 -> default, referenced (when active) - # 0010 -> ev_unref has been called - # 0100 -> not referenced; independent of 0010 - _flags = 0 - - def __init__(self, _loop, ref=True, priority=None, args=_base._NOARGS): - if ref: - self._flags = 0 - else: - self._flags = 4 - - super(watcher, self).__init__(_loop, ref=ref, priority=priority, args=args) - - def _watcher_ffi_set_priority(self, priority): - libev.ev_set_priority(self._watcher, priority) - - def _watcher_ffi_init(self, args): - self._watcher_init(self._watcher, - self._watcher_callback, - *args) - - def _watcher_ffi_start(self): - self._watcher_start(self.loop._ptr, self._watcher) - - def _watcher_ffi_ref(self): - if self._flags & 2: # we've told libev we're not referenced - self.loop.ref() - self._flags &= ~2 - - def _watcher_ffi_unref(self): - if self._flags & 6 == 4: - # We're not referenced, but we haven't told libev that - self.loop.unref() - self._flags |= 2 # now we've told libev - - def _get_ref(self): - return False if self._flags & 4 else True - - def _set_ref(self, value): - if value: - if not self._flags & 4: - return # ref is already True - if self._flags & 2: # ev_unref was called, undo - self.loop.ref() - self._flags &= ~6 # do not want unref, no outstanding unref - else: - if self._flags & 4: - return # ref is already False - self._flags |= 4 # we're not referenced - if not self._flags & 2 and libev.ev_is_active(self._watcher): - # we haven't told libev we're not referenced, but it thinks we're - # active so we need to undo that - self.loop.unref() - self._flags |= 2 # libev knows we're not referenced - - ref = property(_get_ref, _set_ref) - - - def _get_priority(self): - return libev.ev_priority(self._watcher) - - @_base.not_while_active - def _set_priority(self, priority): - libev.ev_set_priority(self._watcher, priority) - - priority = property(_get_priority, _set_priority) - - def feed(self, revents, callback, *args): - self.callback = callback - self.args = args or _NOARGS - if self._flags & 6 == 4: - self.loop.unref() - self._flags |= 2 - libev.ev_feed_event(self.loop._ptr, self._watcher, revents) - if not self._flags & 1: - # Py_INCREF(<PyObjectPtr>self) - self._flags |= 1 - - @property - def pending(self): - return True if self._watcher and libev.ev_is_pending(self._watcher) else False - - -class io(_base.IoMixin, watcher): - - EVENT_MASK = libev.EV__IOFDSET | libev.EV_READ | libev.EV_WRITE - - def _get_fd(self): - return vfd_get(self._watcher.fd) - - @_base.not_while_active - def _set_fd(self, fd): - vfd = vfd_open(fd) - vfd_free(self._watcher.fd) - self._watcher_init(self._watcher, self._watcher_callback, vfd, self._watcher.events) - - fd = property(_get_fd, _set_fd) - - def _get_events(self): - return self._watcher.events - - @_base.not_while_active - def _set_events(self, events): - self._watcher_init(self._watcher, self._watcher_callback, self._watcher.fd, events) - - events = property(_get_events, _set_events) - - @property - def events_str(self): - return _events_to_str(self._watcher.events) - - def _format(self): - return ' fd=%s events=%s' % (self.fd, self.events_str) - - -class timer(_base.TimerMixin, watcher): - - @property - def at(self): - return self._watcher.at - - def again(self, callback, *args, **kw): - # Exactly the same as start(), just with a different initializer - # function - self._watcher_start = libev.ev_timer_again - try: - self.start(callback, *args, **kw) - finally: - del self._watcher_start - - -class signal(_base.SignalMixin, watcher): - pass - -class idle(_base.IdleMixin, watcher): - pass - -class prepare(_base.PrepareMixin, watcher): - pass - -class check(_base.CheckMixin, watcher): - pass - -class fork(_base.ForkMixin, watcher): - pass - - -class async_(_base.AsyncMixin, watcher): - - def send(self): - libev.ev_async_send(self.loop._ptr, self._watcher) - - @property - def pending(self): - return True if libev.ev_async_pending(self._watcher) else False - -# Provide BWC for those that have async -locals()['async'] = async_ - -class _ClosedWatcher(object): - __slots__ = ('pid', 'rpid', 'rstatus') - - def __init__(self, other): - self.pid = other.pid - self.rpid = other.rpid - self.rstatus = other.rstatus - - def __bool__(self): - return False - __nonzero__ = __bool__ - -class child(_base.ChildMixin, watcher): - _watcher_type = 'child' - - def close(self): - # Capture the properties we defer to our _watcher, because - # we're about to discard it. - closed_watcher = _ClosedWatcher(self._watcher) - super(child, self).close() - self._watcher = closed_watcher - - @property - def pid(self): - return self._watcher.pid - - @property - def rpid(self): - return self._watcher.rpid - - @rpid.setter - def rpid(self, value): - self._watcher.rpid = value - - @property - def rstatus(self): - return self._watcher.rstatus - - @rstatus.setter - def rstatus(self, value): - self._watcher.rstatus = value - - -class stat(_base.StatMixin, watcher): - _watcher_type = 'stat' - - @property - def attr(self): - if not self._watcher.attr.st_nlink: - return - return self._watcher.attr - - @property - def prev(self): - if not self._watcher.prev.st_nlink: - return - return self._watcher.prev - - @property - def interval(self): - return self._watcher.interval diff --git a/python/gevent/libuv/__init__.py b/python/gevent/libuv/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/python/gevent/libuv/_corecffi.cp36-win32.pyd b/python/gevent/libuv/_corecffi.cp36-win32.pyd deleted file mode 100644 index 0cc476a769b67d3e9ffedb6e5e2a6b6af891eb8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125952 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 D&%LuI diff --git a/python/gevent/libuv/_corecffi_build.py b/python/gevent/libuv/_corecffi_build.py deleted file mode 100644 index 722157d..0000000 --- a/python/gevent/libuv/_corecffi_build.py +++ /dev/null @@ -1,253 +0,0 @@ -# pylint: disable=no-member - -# This module is only used to create and compile the gevent._corecffi module; -# nothing should be directly imported from it except `ffi`, which should only be -# used for `ffi.compile()`; programs should import gevent._corecfffi. -# However, because we are using "out-of-line" mode, it is necessary to examine -# this file to know what functions are created and available on the generated -# module. -from __future__ import absolute_import, print_function -import sys -import os -import os.path # pylint:disable=no-name-in-module -import struct - -__all__ = [] - -WIN = sys.platform.startswith('win32') - -def system_bits(): - return struct.calcsize('P') * 8 - - -def st_nlink_type(): - if sys.platform == "darwin" or sys.platform.startswith("freebsd"): - return "short" - if system_bits() == 32: - return "unsigned long" - return "long long" - - -from cffi import FFI -ffi = FFI() - -thisdir = os.path.dirname(os.path.abspath(__file__)) -def read_source(name): - with open(os.path.join(thisdir, name), 'r') as f: - return f.read() - -_cdef = read_source('_corecffi_cdef.c') -_source = read_source('_corecffi_source.c') - -_cdef = _cdef.replace('#define GEVENT_ST_NLINK_T int', '') -_cdef = _cdef.replace('#define GEVENT_STRUCT_DONE int', '') -_cdef = _cdef.replace('#define GEVENT_UV_OS_SOCK_T int', '') - -_cdef = _cdef.replace('GEVENT_ST_NLINK_T', st_nlink_type()) -_cdef = _cdef.replace("GEVENT_STRUCT_DONE _;", '...;') -# uv_os_sock_t is int on POSIX and SOCKET on Win32, but socket is -# just another name for handle, which is just another name for 'void*' -# which we will treat as an 'unsigned long' or 'unsigned long long' -# since it comes through 'fileno()' where it has been cast as an int. -# See class watcher.io -_void_pointer_as_integer = 'intptr_t' -_cdef = _cdef.replace("GEVENT_UV_OS_SOCK_T", 'int' if not WIN else _void_pointer_as_integer) - - -setup_py_dir = os.path.abspath(os.path.join(thisdir, '..', '..', '..')) -libuv_dir = os.path.abspath(os.path.join(setup_py_dir, 'deps', 'libuv')) - - -LIBUV_INCLUDE_DIRS = [ - thisdir, # libev_vfd.h - os.path.join(libuv_dir, 'include'), - os.path.join(libuv_dir, 'src'), -] - -# Initially based on https://github.com/saghul/pyuv/blob/v1.x/setup_libuv.py - -def _libuv_source(rel_path): - # Certain versions of setuptools, notably on windows, are *very* - # picky about what we feed to sources= "setup() arguments must - # *always* be /-separated paths relative to the setup.py - # directory, *never* absolute paths." POSIX doesn't have that issue. - path = os.path.join('deps', 'libuv', 'src', rel_path) - return path - -LIBUV_SOURCES = [ - _libuv_source('fs-poll.c'), - _libuv_source('inet.c'), - _libuv_source('threadpool.c'), - _libuv_source('uv-common.c'), - _libuv_source('version.c'), - _libuv_source('uv-data-getter-setters.c'), - _libuv_source('timer.c'), -] - -if WIN: - LIBUV_SOURCES += [ - _libuv_source('win/async.c'), - _libuv_source('win/core.c'), - _libuv_source('win/detect-wakeup.c'), - _libuv_source('win/dl.c'), - _libuv_source('win/error.c'), - _libuv_source('win/fs-event.c'), - _libuv_source('win/fs.c'), - # getaddrinfo.c refers to ConvertInterfaceIndexToLuid - # and ConvertInterfaceLuidToNameA, which are supposedly in iphlpapi.h - # and iphlpapi.lib/dll. But on Windows 10 with Python 3.5 and VC 14 (Visual Studio 2015), - # I get an undefined warning from the compiler for those functions and - # a link error from the linker, so this file can't be included. - # This is possibly because the functions are defined for Windows Vista, and - # Python 3.5 builds with at earlier SDK? - # Fortunately we don't use those functions. - #_libuv_source('win/getaddrinfo.c'), - # getnameinfo.c refers to uv__getaddrinfo_translate_error from - # getaddrinfo.c, which we don't have. - #_libuv_source('win/getnameinfo.c'), - _libuv_source('win/handle.c'), - _libuv_source('win/loop-watcher.c'), - _libuv_source('win/pipe.c'), - _libuv_source('win/poll.c'), - _libuv_source('win/process-stdio.c'), - _libuv_source('win/process.c'), - _libuv_source('win/req.c'), - _libuv_source('win/signal.c'), - _libuv_source('win/snprintf.c'), - _libuv_source('win/stream.c'), - _libuv_source('win/tcp.c'), - _libuv_source('win/thread.c'), - _libuv_source('win/tty.c'), - _libuv_source('win/udp.c'), - _libuv_source('win/util.c'), - _libuv_source('win/winapi.c'), - _libuv_source('win/winsock.c'), - ] -else: - LIBUV_SOURCES += [ - _libuv_source('unix/async.c'), - _libuv_source('unix/core.c'), - _libuv_source('unix/dl.c'), - _libuv_source('unix/fs.c'), - _libuv_source('unix/getaddrinfo.c'), - _libuv_source('unix/getnameinfo.c'), - _libuv_source('unix/loop-watcher.c'), - _libuv_source('unix/loop.c'), - _libuv_source('unix/pipe.c'), - _libuv_source('unix/poll.c'), - _libuv_source('unix/process.c'), - _libuv_source('unix/signal.c'), - _libuv_source('unix/stream.c'), - _libuv_source('unix/tcp.c'), - _libuv_source('unix/thread.c'), - _libuv_source('unix/tty.c'), - _libuv_source('unix/udp.c'), - ] - - -if sys.platform.startswith('linux'): - LIBUV_SOURCES += [ - _libuv_source('unix/linux-core.c'), - _libuv_source('unix/linux-inotify.c'), - _libuv_source('unix/linux-syscalls.c'), - _libuv_source('unix/procfs-exepath.c'), - _libuv_source('unix/proctitle.c'), - _libuv_source('unix/sysinfo-loadavg.c'), - _libuv_source('unix/sysinfo-memory.c'), - ] -elif sys.platform == 'darwin': - LIBUV_SOURCES += [ - _libuv_source('unix/bsd-ifaddrs.c'), - _libuv_source('unix/darwin.c'), - _libuv_source('unix/darwin-proctitle.c'), - _libuv_source('unix/fsevents.c'), - _libuv_source('unix/kqueue.c'), - _libuv_source('unix/proctitle.c'), - ] -elif sys.platform.startswith(('freebsd', 'dragonfly')): - LIBUV_SOURCES += [ - _libuv_source('unix/bsd-ifaddrs.c'), - _libuv_source('unix/freebsd.c'), - _libuv_source('unix/kqueue.c'), - _libuv_source('unix/posix-hrtime.c'), - ] -elif sys.platform.startswith('openbsd'): - LIBUV_SOURCES += [ - _libuv_source('unix/bsd-ifaddrs.c'), - _libuv_source('unix/kqueue.c'), - _libuv_source('unix/openbsd.c'), - _libuv_source('unix/posix-hrtime.c'), - ] -elif sys.platform.startswith('netbsd'): - LIBUV_SOURCES += [ - _libuv_source('unix/bsd-ifaddrs.c'), - _libuv_source('unix/kqueue.c'), - _libuv_source('unix/netbsd.c'), - _libuv_source('unix/posix-hrtime.c'), - ] - -elif sys.platform.startswith('sunos'): - LIBUV_SOURCES += [ - _libuv_source('unix/no-proctitle.c'), - _libuv_source('unix/sunos.c'), - ] - - -LIBUV_MACROS = [] - -def _define_macro(name, value): - LIBUV_MACROS.append((name, value)) - -LIBUV_LIBRARIES = [] - -def _add_library(name): - LIBUV_LIBRARIES.append(name) - -if sys.platform != 'win32': - _define_macro('_LARGEFILE_SOURCE', 1) - _define_macro('_FILE_OFFSET_BITS', 64) - -if sys.platform.startswith('linux'): - _add_library('dl') - _add_library('rt') - _define_macro('_GNU_SOURCE', 1) - _define_macro('_POSIX_C_SOURCE', '200112') -elif sys.platform == 'darwin': - _define_macro('_DARWIN_USE_64_BIT_INODE', 1) - _define_macro('_DARWIN_UNLIMITED_SELECT', 1) -elif sys.platform.startswith('netbsd'): - _add_library('kvm') -elif sys.platform.startswith('sunos'): - _define_macro('__EXTENSIONS__', 1) - _define_macro('_XOPEN_SOURCE', 500) - _add_library('kstat') - _add_library('nsl') - _add_library('sendfile') - _add_library('socket') -elif WIN: - _define_macro('_GNU_SOURCE', 1) - _define_macro('WIN32', 1) - _define_macro('_CRT_SECURE_NO_DEPRECATE', 1) - _define_macro('_CRT_NONSTDC_NO_DEPRECATE', 1) - _define_macro('_CRT_SECURE_NO_WARNINGS', 1) - _define_macro('_WIN32_WINNT', '0x0600') - _define_macro('WIN32_LEAN_AND_MEAN', 1) - _add_library('advapi32') - _add_library('iphlpapi') - _add_library('psapi') - _add_library('shell32') - _add_library('user32') - _add_library('userenv') - _add_library('ws2_32') - -ffi.cdef(_cdef) -ffi.set_source('gevent.libuv._corecffi', - _source, - sources=LIBUV_SOURCES, - depends=LIBUV_SOURCES, - include_dirs=LIBUV_INCLUDE_DIRS, - libraries=list(LIBUV_LIBRARIES), - define_macros=list(LIBUV_MACROS)) - -if __name__ == '__main__': - ffi.compile() diff --git a/python/gevent/libuv/_corecffi_cdef.c b/python/gevent/libuv/_corecffi_cdef.c deleted file mode 100644 index 0735aea..0000000 --- a/python/gevent/libuv/_corecffi_cdef.c +++ /dev/null @@ -1,393 +0,0 @@ -/* markers for the CFFI parser. Replaced when the string is read. */ -#define GEVENT_STRUCT_DONE int -#define GEVENT_ST_NLINK_T int -#define GEVENT_UV_OS_SOCK_T int - -#define UV_EBUSY ... - -#define UV_VERSION_MAJOR ... -#define UV_VERSION_MINOR ... -#define UV_VERSION_PATCH ... - -typedef enum { - UV_RUN_DEFAULT = 0, - UV_RUN_ONCE, - UV_RUN_NOWAIT -} uv_run_mode; - -typedef enum { - UV_UNKNOWN_HANDLE = 0, - UV_ASYNC, - UV_CHECK, - UV_FS_EVENT, - UV_FS_POLL, - UV_HANDLE, - UV_IDLE, - UV_NAMED_PIPE, - UV_POLL, - UV_PREPARE, - UV_PROCESS, - UV_STREAM, - UV_TCP, - UV_TIMER, - UV_TTY, - UV_UDP, - UV_SIGNAL, - UV_FILE, - UV_HANDLE_TYPE_MAX -} uv_handle_type; - -enum uv_poll_event { - UV_READABLE = 1, - UV_WRITABLE = 2, - /* new in 1.9 */ - UV_DISCONNECT = 4, - /* new in 1.14.0 */ - UV_PRIORITIZED = 8, -}; - -enum uv_fs_event { - UV_RENAME = 1, - UV_CHANGE = 2 -}; - -enum uv_fs_event_flags { - /* - * By default, if the fs event watcher is given a directory name, we will - * watch for all events in that directory. This flags overrides this behavior - * and makes fs_event report only changes to the directory entry itself. This - * flag does not affect individual files watched. - * This flag is currently not implemented yet on any backend. - */ - UV_FS_EVENT_WATCH_ENTRY = 1, - /* - * By default uv_fs_event will try to use a kernel interface such as inotify - * or kqueue to detect events. This may not work on remote filesystems such - * as NFS mounts. This flag makes fs_event fall back to calling stat() on a - * regular interval. - * This flag is currently not implemented yet on any backend. - */ - UV_FS_EVENT_STAT = 2, - /* - * By default, event watcher, when watching directory, is not registering - * (is ignoring) changes in it's subdirectories. - * This flag will override this behaviour on platforms that support it. - */ - UV_FS_EVENT_RECURSIVE = 4 -}; - -const char* uv_strerror(int); -const char* uv_err_name(int); -const char* uv_version_string(void); -const char* uv_handle_type_name(uv_handle_type type); - -// handle structs and types -struct uv_loop_s { - void* data; - GEVENT_STRUCT_DONE _; -}; -struct uv_handle_s { - struct uv_loop_s* loop; - uv_handle_type type; - void *data; - GEVENT_STRUCT_DONE _; -}; -struct uv_idle_s { - struct uv_loop_s* loop; - uv_handle_type type; - void *data; - GEVENT_STRUCT_DONE _; -}; -struct uv_prepare_s { - struct uv_loop_s* loop; - uv_handle_type type; - void *data; - GEVENT_STRUCT_DONE _; -}; -struct uv_timer_s { - struct uv_loop_s* loop; - uv_handle_type type; - void *data; - GEVENT_STRUCT_DONE _; -}; -struct uv_signal_s { - struct uv_loop_s* loop; - uv_handle_type type; - void *data; - GEVENT_STRUCT_DONE _; -}; -struct uv_poll_s { - struct uv_loop_s* loop; - uv_handle_type type; - void *data; - GEVENT_STRUCT_DONE _; -}; - -struct uv_check_s { - struct uv_loop_s* loop; - uv_handle_type type; - void *data; - GEVENT_STRUCT_DONE _; -}; - -struct uv_async_s { - struct uv_loop_s* loop; - uv_handle_type type; - void *data; - void (*async_cb)(struct uv_async_s *); - GEVENT_STRUCT_DONE _; -}; - -struct uv_fs_event_s { - struct uv_loop_s* loop; - uv_handle_type type; - void *data; - GEVENT_STRUCT_DONE _; -}; - -struct uv_fs_poll_s { - struct uv_loop_s* loop; - uv_handle_type type; - void *data; - GEVENT_STRUCT_DONE _; -}; - -typedef struct uv_loop_s uv_loop_t; -typedef struct uv_handle_s uv_handle_t; -typedef struct uv_idle_s uv_idle_t; -typedef struct uv_prepare_s uv_prepare_t; -typedef struct uv_timer_s uv_timer_t; -typedef struct uv_signal_s uv_signal_t; -typedef struct uv_poll_s uv_poll_t; -typedef struct uv_check_s uv_check_t; -typedef struct uv_async_s uv_async_t; -typedef struct uv_fs_event_s uv_fs_event_t; -typedef struct uv_fs_poll_s uv_fs_poll_t; - - -size_t uv_handle_size(uv_handle_type); - -// callbacks with the same signature -typedef void (*uv_close_cb)(uv_handle_t *handle); -typedef void (*uv_idle_cb)(uv_idle_t *handle); -typedef void (*uv_timer_cb)(uv_timer_t *handle); -typedef void (*uv_check_cb)(uv_check_t* handle); -typedef void (*uv_async_cb)(uv_async_t* handle); -typedef void (*uv_prepare_cb)(uv_prepare_t *handle); - -// callbacks with distinct sigs -typedef void (*uv_walk_cb)(uv_handle_t *handle, void *arg); -typedef void (*uv_poll_cb)(uv_poll_t *handle, int status, int events); -typedef void (*uv_signal_cb)(uv_signal_t *handle, int signum); - -// Callback passed to uv_fs_event_start() which will be called -// repeatedly after the handle is started. If the handle was started -// with a directory the filename parameter will be a relative path to -// a file contained in the directory. The events parameter is an ORed -// mask of uv_fs_event elements. -typedef void (*uv_fs_event_cb)(uv_fs_event_t* handle, const char* filename, int events, int status); - -typedef struct { - long tv_sec; - long tv_nsec; -} uv_timespec_t; - -typedef struct { - uint64_t st_dev; - uint64_t st_mode; - uint64_t st_nlink; - uint64_t st_uid; - uint64_t st_gid; - uint64_t st_rdev; - uint64_t st_ino; - uint64_t st_size; - uint64_t st_blksize; - uint64_t st_blocks; - uint64_t st_flags; - uint64_t st_gen; - uv_timespec_t st_atim; - uv_timespec_t st_mtim; - uv_timespec_t st_ctim; - uv_timespec_t st_birthtim; -} uv_stat_t; - -typedef void (*uv_fs_poll_cb)(uv_fs_poll_t* handle, int status, const uv_stat_t* prev, const uv_stat_t* curr); - -// loop functions -uv_loop_t *uv_default_loop(); -uv_loop_t* uv_loop_new(); // not documented; neither is uv_loop_delete -int uv_loop_init(uv_loop_t* loop); -int uv_loop_fork(uv_loop_t* loop); -int uv_loop_alive(const uv_loop_t *loop); -int uv_loop_close(uv_loop_t* loop); -uint64_t uv_backend_timeout(uv_loop_t* loop); -int uv_run(uv_loop_t *, uv_run_mode mode); -int uv_backend_fd(const uv_loop_t* loop); -// The narrative docs for the two time functions say 'const', -// but the header does not. -void uv_update_time(uv_loop_t* loop); -uint64_t uv_now(uv_loop_t* loop); -void uv_stop(uv_loop_t *); -void uv_walk(uv_loop_t *loop, uv_walk_cb walk_cb, void *arg); - -// handle functions -// uv_handle_t is the base type for all libuv handle types. - -void uv_ref(void *); -void uv_unref(void *); -int uv_has_ref(void *); -void uv_close(void *handle, uv_close_cb close_cb); -int uv_is_active(void *handle); -int uv_is_closing(void *handle); - -// idle functions -// Idle handles will run the given callback once per loop iteration, right -// before the uv_prepare_t handles. Note: The notable difference with prepare -// handles is that when there are active idle handles, the loop will perform a -// zero timeout poll instead of blocking for i/o. Warning: Despite the name, -// idle handles will get their callbacks called on every loop iteration, not -// when the loop is actually "idle". -int uv_idle_init(uv_loop_t *, uv_idle_t *idle); -int uv_idle_start(uv_idle_t *idle, uv_idle_cb cb); -int uv_idle_stop(uv_idle_t *idle); - -// prepare functions -// Prepare handles will run the given callback once per loop iteration, right -// before polling for i/o. -int uv_prepare_init(uv_loop_t *, uv_prepare_t *prepare); -int uv_prepare_start(uv_prepare_t *prepare, uv_prepare_cb cb); -int uv_prepare_stop(uv_prepare_t *prepare); - -// check functions -// Check handles will run the given callback once per loop iteration, right -int uv_check_init(uv_loop_t *, uv_check_t *check); -int uv_check_start(uv_check_t *check, uv_check_cb cb); -int uv_check_stop(uv_check_t *check); - -// async functions -// Async handles allow the user to "wakeup" the event loop and get a callback called from another thread. - -int uv_async_init(uv_loop_t *, uv_async_t*, uv_async_cb); -int uv_async_send(uv_async_t*); - -// timer functions -// Timer handles are used to schedule callbacks to be called in the future. -int uv_timer_init(uv_loop_t *, uv_timer_t *handle); -int uv_timer_start(uv_timer_t *handle, uv_timer_cb cb, uint64_t timeout, uint64_t repeat); -int uv_timer_stop(uv_timer_t *handle); -int uv_timer_again(uv_timer_t *handle); -void uv_timer_set_repeat(uv_timer_t *handle, uint64_t repeat); -uint64_t uv_timer_get_repeat(const uv_timer_t *handle); - -// signal functions -// Signal handles implement Unix style signal handling on a per-event loop -// bases. -int uv_signal_init(uv_loop_t *loop, uv_signal_t *handle); -int uv_signal_start(uv_signal_t *handle, uv_signal_cb signal_cb, int signum); -int uv_signal_stop(uv_signal_t *handle); - -// poll functions Poll handles are used to watch file descriptors for -// readability and writability, similar to the purpose of poll(2). It -// is not okay to have multiple active poll handles for the same -// socket, this can cause libuv to busyloop or otherwise malfunction. -// -// The purpose of poll handles is to enable integrating external -// libraries that rely on the event loop to signal it about the socket -// status changes, like c-ares or libssh2. Using uv_poll_t for any -// other purpose is not recommended; uv_tcp_t, uv_udp_t, etc. provide -// an implementation that is faster and more scalable than what can be -// achieved with uv_poll_t, especially on Windows. -// -// Note On windows only sockets can be polled with poll handles. On -// Unix any file descriptor that would be accepted by poll(2) can be -// used. -int uv_poll_init(uv_loop_t *loop, uv_poll_t *handle, int fd); - -// Initialize the handle using a socket descriptor. On Unix this is -// identical to uv_poll_init(). On windows it takes a SOCKET handle; -// SOCKET handles are another name for HANDLE objects in win32, and -// those are defined as PVOID, even though they are not actually -// pointers (they're small integers). CPython and PyPy both return -// the SOCKET (as cast to an int) from the socket.fileno() method. -// libuv uses ``uv_os_sock_t`` for this type, which is defined as an -// int on unix. -int uv_poll_init_socket(uv_loop_t* loop, uv_poll_t* handle, GEVENT_UV_OS_SOCK_T socket); -int uv_poll_start(uv_poll_t *handle, int events, uv_poll_cb cb); -int uv_poll_stop(uv_poll_t *handle); - -// FS Event handles allow the user to monitor a given path for -// changes, for example, if the file was renamed or there was a -// generic change in it. This handle uses the best backend for the job -// on each platform. -// -// Thereas also uv_fs_poll_t that uses stat for filesystems where -// the kernel event isn't available. -int uv_fs_event_init(uv_loop_t*, uv_fs_event_t*); -int uv_fs_event_start(uv_fs_event_t*, uv_fs_event_cb, const char* path, unsigned int flags); -int uv_fs_event_stop(uv_fs_event_t*); -int uv_fs_event_getpath(uv_fs_event_t*, char* buffer, size_t* size); - -// FS Poll handles allow the user to monitor a given path for changes. -// Unlike uv_fs_event_t, fs poll handles use stat to detect when a -// file has changed so they can work on file systems where fs event -// handles can't. -// -// This is a closer match to libev. -int uv_fs_poll_init(void*, void*); -int uv_fs_poll_start(void*, uv_fs_poll_cb, const char* path, unsigned int); -int uv_fs_poll_stop(void*); - - -/* Standard library */ -void* memset(void *b, int c, size_t len); - - -/* gevent callbacks */ -// Implemented in Python code as 'def_extern'. In the case of poll callbacks and fs -// callbacks, if *status* is less than 0, it will be passed in the revents -// field. In cases of no extra arguments, revents will be 0. -// These will be created as static functions at the end of the -// _source.c and must be pre-declared at the top of that file if we -// call them -typedef void* GeventWatcherObject; -extern "Python" { - // Standard gevent._ffi.loop callbacks. - int python_callback(GeventWatcherObject handle, int revents); - void python_handle_error(GeventWatcherObject handle, int revents); - void python_stop(GeventWatcherObject handle); - - void python_check_callback(uv_check_t* handle); - void python_prepare_callback(uv_prepare_t* handle); - void python_timer0_callback(uv_check_t* handle); - - // libuv specific callback - void _uv_close_callback(uv_handle_t* handle); - void python_sigchld_callback(uv_signal_t* handle, int signum); - void python_queue_callback(uv_handle_t* handle, int revents); -} -// A variable we fill in. -static void (*gevent_noop)(void* handle); - -static void _gevent_signal_callback1(uv_signal_t* handle, int arg); -static void _gevent_async_callback0(uv_async_t* handle); -static void _gevent_prepare_callback0(uv_prepare_t* handle); -static void _gevent_timer_callback0(uv_timer_t* handle); -static void _gevent_check_callback0(uv_check_t* handle); -static void _gevent_idle_callback0(uv_idle_t* handle); -static void _gevent_poll_callback2(uv_poll_t* handle, int status, int events); -static void _gevent_fs_event_callback3(uv_fs_event_t* handle, const char* filename, int events, int status); - -typedef struct _gevent_fs_poll_s { - uv_fs_poll_t handle; - uv_stat_t curr; - uv_stat_t prev; -} gevent_fs_poll_t; - -static void _gevent_fs_poll_callback3(uv_fs_poll_t* handle, int status, const uv_stat_t* prev, const uv_stat_t* curr); - -static void gevent_uv_walk_callback_close(uv_handle_t* handle, void* arg); -static void gevent_close_all_handles(uv_loop_t* loop); -static void gevent_zero_timer(uv_timer_t* handle); -static void gevent_zero_prepare(uv_prepare_t* handle); -static void gevent_zero_check(uv_check_t* handle); -static void gevent_zero_loop(uv_loop_t* handle); diff --git a/python/gevent/libuv/_corecffi_source.c b/python/gevent/libuv/_corecffi_source.c deleted file mode 100644 index 83fe82e..0000000 --- a/python/gevent/libuv/_corecffi_source.c +++ /dev/null @@ -1,181 +0,0 @@ -#include <string.h> -#include "uv.h" - -typedef void* GeventWatcherObject; - -static int python_callback(GeventWatcherObject handle, int revents); -static void python_queue_callback(uv_handle_t* watcher_ptr, int revents); -static void python_handle_error(GeventWatcherObject handle, int revents); -static void python_stop(GeventWatcherObject handle); - -static void _gevent_noop(void* handle) {} - -static void (*gevent_noop)(void* handle) = &_gevent_noop; - -static void _gevent_generic_callback1_unused(uv_handle_t* watcher, int arg) -{ - // Python code may set this to NULL or even change it - // out from under us, which would tend to break things. - GeventWatcherObject handle = watcher->data; - const int cb_result = python_callback(handle, arg); - switch(cb_result) { - case -1: - // in case of exception, call self.loop.handle_error; - // this function is also responsible for stopping the watcher - // and allowing memory to be freed - python_handle_error(handle, arg); - break; - case 1: - // Code to stop the event IF NEEDED. Note that if python_callback - // has disposed of the last reference to the handle, - // `watcher` could now be invalid/disposed memory! - if (!uv_is_active(watcher)) { - if (watcher->data != handle) { - if (watcher->data) { - // If Python set the data to NULL, then they - // expected to be stopped. That's fine. - // Otherwise, something weird happened. - fprintf(stderr, - "WARNING: gevent: watcher handle changed in callback " - "from %p to %p for watcher at %p of type %d\n", - handle, watcher->data, watcher, watcher->type); - // There's a very good chance that the object the - // handle referred to has been changed and/or the - // old handle has been deallocated (most common), so - // passing the old handle will crash. Instead we - // pass a sigil to let python distinguish this case. - python_stop(NULL); - } - } - else { - python_stop(handle); - } - } - break; - case 2: - // watcher is already stopped and dead, nothing to do. - break; - default: - fprintf(stderr, - "WARNING: gevent: Unexpected return value %d from Python callback " - "for watcher %p (of type %d) and handle %p\n", - cb_result, - watcher, watcher->type, handle); - // XXX: Possible leaking of resources here? Should we be - // closing the watcher? - } -} - - -static void _gevent_generic_callback1(uv_handle_t* watcher, int arg) -{ - python_queue_callback(watcher, arg); -} - -static void _gevent_generic_callback0(uv_handle_t* handle) -{ - _gevent_generic_callback1(handle, 0); -} - -static void _gevent_async_callback0(uv_async_t* handle) -{ - _gevent_generic_callback0((uv_handle_t*)handle); -} - -static void _gevent_timer_callback0(uv_timer_t* handle) -{ - _gevent_generic_callback0((uv_handle_t*)handle); -} - -static void _gevent_prepare_callback0(uv_prepare_t* handle) -{ - _gevent_generic_callback0((uv_handle_t*)handle); -} - -static void _gevent_check_callback0(uv_check_t* handle) -{ - _gevent_generic_callback0((uv_handle_t*)handle); -} - -static void _gevent_idle_callback0(uv_idle_t* handle) -{ - _gevent_generic_callback0((uv_handle_t*)handle); -} - -static void _gevent_signal_callback1(uv_signal_t* handle, int signum) -{ - _gevent_generic_callback1((uv_handle_t*)handle, signum); -} - - -static void _gevent_poll_callback2(void* handle, int status, int events) -{ - _gevent_generic_callback1(handle, status < 0 ? status : events); -} - -static void _gevent_fs_event_callback3(void* handle, const char* filename, int events, int status) -{ - _gevent_generic_callback1(handle, status < 0 ? status : events); -} - - -typedef struct _gevent_fs_poll_s { - uv_fs_poll_t handle; - uv_stat_t curr; - uv_stat_t prev; -} gevent_fs_poll_t; - -static void _gevent_fs_poll_callback3(void* handlep, int status, const uv_stat_t* prev, const uv_stat_t* curr) -{ - // stat pointers are valid for this callback only. - // if given, copy them into our structure, where they can be reached - // from python, just like libev's watcher does, before calling - // the callback. - - // The callback is invoked with status < 0 if path does not exist - // or is inaccessible. The watcher is not stopped but your - // callback is not called again until something changes (e.g. when - // the file is created or the error reason changes). - // In that case the fields will be 0 in curr/prev. - - - gevent_fs_poll_t* handle = (gevent_fs_poll_t*)handlep; - assert(status == 0); - - handle->curr = *curr; - handle->prev = *prev; - - _gevent_generic_callback1((uv_handle_t*)handle, 0); -} - -static void gevent_uv_walk_callback_close(uv_handle_t* handle, void* arg) -{ - if( handle && !uv_is_closing(handle) ) { - uv_close(handle, NULL); - } -} - -static void gevent_close_all_handles(uv_loop_t* loop) -{ - uv_walk(loop, gevent_uv_walk_callback_close, NULL); -} - -static void gevent_zero_timer(uv_timer_t* handle) -{ - memset(handle, 0, sizeof(uv_timer_t)); -} - -static void gevent_zero_check(uv_check_t* handle) -{ - memset(handle, 0, sizeof(uv_check_t)); -} - -static void gevent_zero_prepare(uv_prepare_t* handle) -{ - memset(handle, 0, sizeof(uv_prepare_t)); -} - -static void gevent_zero_loop(uv_loop_t* handle) -{ - memset(handle, 0, sizeof(uv_loop_t)); -} diff --git a/python/gevent/libuv/loop.py b/python/gevent/libuv/loop.py deleted file mode 100644 index 0f317c0..0000000 --- a/python/gevent/libuv/loop.py +++ /dev/null @@ -1,601 +0,0 @@ -""" -libuv loop implementation -""" -# pylint: disable=no-member -from __future__ import absolute_import, print_function - -import os -from collections import defaultdict -from collections import namedtuple -from operator import delitem -import signal - -from gevent._ffi import _dbg # pylint: disable=unused-import -from gevent._ffi.loop import AbstractLoop -from gevent.libuv import _corecffi # pylint:disable=no-name-in-module,import-error -from gevent._ffi.loop import assign_standard_callbacks -from gevent._ffi.loop import AbstractCallbacks -from gevent._util import implementer -from gevent._interfaces import ILoop - -ffi = _corecffi.ffi -libuv = _corecffi.lib - -__all__ = [ -] - - -class _Callbacks(AbstractCallbacks): - - def _find_loop_from_c_watcher(self, watcher_ptr): - loop_handle = ffi.cast('uv_handle_t*', watcher_ptr).data - return self.from_handle(loop_handle) if loop_handle else None - - def python_sigchld_callback(self, watcher_ptr, _signum): - self.from_handle(ffi.cast('uv_handle_t*', watcher_ptr).data)._sigchld_callback() - - def python_timer0_callback(self, watcher_ptr): - return self.python_prepare_callback(watcher_ptr) - - def python_queue_callback(self, watcher_ptr, revents): - watcher_handle = watcher_ptr.data - the_watcher = self.from_handle(watcher_handle) - - the_watcher.loop._queue_callback(watcher_ptr, revents) - - -_callbacks = assign_standard_callbacks( - ffi, libuv, _Callbacks, - [('python_sigchld_callback', None), - ('python_timer0_callback', None), - ('python_queue_callback', None)]) - -from gevent._ffi.loop import EVENTS -GEVENT_CORE_EVENTS = EVENTS # export - -from gevent.libuv import watcher as _watchers # pylint:disable=no-name-in-module - -_events_to_str = _watchers._events_to_str # export - -READ = libuv.UV_READABLE -WRITE = libuv.UV_WRITABLE - -def get_version(): - uv_bytes = ffi.string(libuv.uv_version_string()) - if not isinstance(uv_bytes, str): - # Py3 - uv_str = uv_bytes.decode("ascii") - else: - uv_str = uv_bytes - - return 'libuv-' + uv_str - -def get_header_version(): - return 'libuv-%d.%d.%d' % (libuv.UV_VERSION_MAJOR, libuv.UV_VERSION_MINOR, libuv.UV_VERSION_PATCH) - -def supported_backends(): - return ['default'] - -@implementer(ILoop) -class loop(AbstractLoop): - - # XXX: Undocumented. Maybe better named 'timer_resolution'? We can't - # know this in general on libev - min_sleep_time = 0.001 # 1ms - - error_handler = None - - _CHECK_POINTER = 'uv_check_t *' - - _PREPARE_POINTER = 'uv_prepare_t *' - _PREPARE_CALLBACK_SIG = "void(*)(void*)" - - _TIMER_POINTER = _CHECK_POINTER # This is poorly named. It's for the callback "timer" - - def __init__(self, flags=None, default=None): - AbstractLoop.__init__(self, ffi, libuv, _watchers, flags, default) - self.__loop_pid = os.getpid() - self._child_watchers = defaultdict(list) - self._io_watchers = dict() - self._fork_watchers = set() - self._pid = os.getpid() - self._default = self._ptr == libuv.uv_default_loop() - self._queued_callbacks = [] - - def _queue_callback(self, watcher_ptr, revents): - self._queued_callbacks.append((watcher_ptr, revents)) - - def _init_loop(self, flags, default): - if default is None: - default = True - # Unlike libev, libuv creates a new default - # loop automatically if the old default loop was - # closed. - - if default: - # XXX: If the default loop had been destroyed, this - # will create a new one, but we won't destroy it - ptr = libuv.uv_default_loop() - else: - ptr = libuv.uv_loop_new() - - - if not ptr: - raise SystemError("Failed to get loop") - - # Track whether or not any object has destroyed - # this loop. See _can_destroy_default_loop - ptr.data = ptr - return ptr - - _signal_idle = None - - def _init_and_start_check(self): - libuv.uv_check_init(self._ptr, self._check) - libuv.uv_check_start(self._check, libuv.python_check_callback) - libuv.uv_unref(self._check) - - # We also have to have an idle watcher to be able to handle - # signals in a timely manner. Without them, libuv won't loop again - # and call into its check and prepare handlers. - # Note that this basically forces us into a busy-loop - # XXX: As predicted, using an idle watcher causes our process - # to eat 100% CPU time. We instead use a timer with a max of a .3 second - # delay to notice signals. Note that this timeout also implements fork - # watchers, effectively. - - # XXX: Perhaps we could optimize this to notice when there are other - # timers in the loop and start/stop it then. When we have a callback - # scheduled, this should also be the same and unnecessary? - # libev does takes this basic approach on Windows. - self._signal_idle = ffi.new("uv_timer_t*") - libuv.uv_timer_init(self._ptr, self._signal_idle) - self._signal_idle.data = self._handle_to_self - sig_cb = ffi.cast('void(*)(uv_timer_t*)', libuv.python_check_callback) - libuv.uv_timer_start(self._signal_idle, - sig_cb, - 300, - 300) - libuv.uv_unref(self._signal_idle) - - def _run_callbacks(self): - # Manually handle fork watchers. - curpid = os.getpid() - if curpid != self._pid: - self._pid = curpid - for watcher in self._fork_watchers: - watcher._on_fork() - - - # The contents of queued_callbacks at this point should be timers - # that expired when the loop began along with any idle watchers. - # We need to run them so that any manual callbacks they want to schedule - # get added to the list and ran next before we go on to poll for IO. - # This is critical for libuv on linux: closing a socket schedules some manual - # callbacks to actually stop the watcher; if those don't run before - # we poll for IO, then libuv can abort the process for the closed file descriptor. - - # XXX: There's still a race condition here because we may not run *all* the manual - # callbacks. We need a way to prioritize those. - - # Running these before the manual callbacks lead to some - # random test failures. In test__event.TestEvent_SetThenClear - # we would get a LoopExit sometimes. The problem occurred when - # a timer expired on entering the first loop; we would process - # it there, and then process the callback that it created - # below, leaving nothing for the loop to do. Having the - # self.run() manually process manual callbacks before - # continuing solves the problem. (But we must still run callbacks - # here again.) - self._prepare_ran_callbacks = self.__run_queued_callbacks() - - super(loop, self)._run_callbacks() - - def _init_and_start_prepare(self): - libuv.uv_prepare_init(self._ptr, self._prepare) - libuv.uv_prepare_start(self._prepare, libuv.python_prepare_callback) - libuv.uv_unref(self._prepare) - - def _init_callback_timer(self): - libuv.uv_check_init(self._ptr, self._timer0) - - def _stop_callback_timer(self): - libuv.uv_check_stop(self._timer0) - - def _start_callback_timer(self): - # The purpose of the callback timer is to ensure that we run - # callbacks as soon as possible on the next iteration of the event loop. - - # In libev, we set a 0 duration timer with a no-op callback. - # This executes immediately *after* the IO poll is done (it - # actually determines the time that the IO poll will block - # for), so having the timer present simply spins the loop, and - # our normal prepare watcher kicks in to run the callbacks. - - # In libuv, however, timers are run *first*, before prepare - # callbacks and before polling for IO. So a no-op 0 duration - # timer actually does *nothing*. (Also note that libev queues all - # watchers found during IO poll to run at the end (I think), while libuv - # runs them in uv__io_poll itself.) - - # From the loop inside uv_run: - # while True: - # uv__update_time(loop); - # uv__run_timers(loop); - # # we don't use pending watchers. They are how libuv - # # implements the pipe/udp/tcp streams. - # ran_pending = uv__run_pending(loop); - # uv__run_idle(loop); - # uv__run_prepare(loop); - # ... - # uv__io_poll(loop, timeout); # <--- IO watchers run here! - # uv__run_check(loop); - - # libev looks something like this (pseudo code because the real code is - # hard to read): - # - # do { - # run_fork_callbacks(); - # run_prepare_callbacks(); - # timeout = min(time of all timers or normal block time) - # io_poll() # <--- Only queues IO callbacks - # update_now(); calculate_expired_timers(); - # run callbacks in this order: (although specificying priorities changes it) - # check - # stat - # child - # signal - # timer - # io - # } - - # So instead of running a no-op and letting the side-effect of spinning - # the loop run the callbacks, we must explicitly run them here. - - # If we don't, test__systemerror:TestCallback will be flaky, failing - # one time out of ~20, depending on timing. - - # To get them to run immediately after this current loop, - # we use a check watcher, instead of a 0 duration timer entirely. - # If we use a 0 duration timer, we can get stuck in a timer loop. - # Python 3.6 fails in test_ftplib.py - - # As a final note, if we have not yet entered the loop *at - # all*, and a timer was created with a duration shorter than - # the amount of time it took for us to enter the loop in the - # first place, it may expire and get called before our callback - # does. This could also lead to test__systemerror:TestCallback - # appearing to be flaky. - - # As yet another final note, if we are currently running a - # timer callback, meaning we're inside uv__run_timers() in C, - # and the Python starts a new timer, if the Python code then - # update's the loop's time, it's possible that timer will - # expire *and be run in the same iteration of the loop*. This - # is trivial to do: In sequential code, anything after - # `gevent.sleep(0.1)` is running in a timer callback. Starting - # a new timer---e.g., another gevent.sleep() call---will - # update the time, *before* uv__run_timers exits, meaning - # other timers get a chance to run before our check or prepare - # watcher callbacks do. Therefore, we do indeed have to have a 0 - # timer to run callbacks---it gets inserted before any other user - # timers---ideally, this should be especially careful about how much time - # it runs for. - - # AND YET: We can't actually do that. We get timeouts that I haven't fully - # investigated if we do. Probably stuck in a timer loop. - - # As a partial remedy to this, unlike libev, our timer watcher - # class doesn't update the loop time by default. - - libuv.uv_check_start(self._timer0, libuv.python_timer0_callback) - - - def _stop_aux_watchers(self): - assert self._prepare - assert self._check - assert self._signal_idle - libuv.uv_prepare_stop(self._prepare) - libuv.uv_ref(self._prepare) # Why are we doing this? - - libuv.uv_check_stop(self._check) - libuv.uv_ref(self._check) - - libuv.uv_timer_stop(self._signal_idle) - libuv.uv_ref(self._signal_idle) - - libuv.uv_check_stop(self._timer0) - - def _setup_for_run_callback(self): - self._start_callback_timer() - libuv.uv_ref(self._timer0) - - - def _can_destroy_loop(self, ptr): - # We're being asked to destroy a loop that's, - # at the time it was constructed, was the default loop. - # If loop objects were constructed more than once, - # it may have already been destroyed, though. - # We track this in the data member. - return ptr.data - - def _destroy_loop(self, ptr): - ptr.data = ffi.NULL - libuv.uv_stop(ptr) - - libuv.gevent_close_all_handles(ptr) - - closed_failed = libuv.uv_loop_close(ptr) - if closed_failed: - assert closed_failed == libuv.UV_EBUSY - # We already closed all the handles. Run the loop - # once to let them be cut off from the loop. - ran_has_more_callbacks = libuv.uv_run(ptr, libuv.UV_RUN_ONCE) - if ran_has_more_callbacks: - libuv.uv_run(ptr, libuv.UV_RUN_NOWAIT) - closed_failed = libuv.uv_loop_close(ptr) - assert closed_failed == 0, closed_failed - - # Destroy the native resources *after* we have closed - # the loop. If we do it before, walking the handles - # attached to the loop is likely to segfault. - - libuv.gevent_zero_check(self._check) - libuv.gevent_zero_check(self._timer0) - libuv.gevent_zero_prepare(self._prepare) - libuv.gevent_zero_timer(self._signal_idle) - del self._check - del self._prepare - del self._signal_idle - del self._timer0 - - libuv.gevent_zero_loop(ptr) - - # Destroy any watchers we're still holding on to. - del self._io_watchers - del self._fork_watchers - del self._child_watchers - - - def debug(self): - """ - Return all the handles that are open and their ref status. - """ - handle_state = namedtuple("HandleState", - ['handle', - 'type', - 'watcher', - 'ref', - 'active', - 'closing']) - handles = [] - - # XXX: Convert this to a modern callback. - def walk(handle, _arg): - data = handle.data - if data: - watcher = ffi.from_handle(data) - else: - watcher = None - handles.append(handle_state(handle, - ffi.string(libuv.uv_handle_type_name(handle.type)), - watcher, - libuv.uv_has_ref(handle), - libuv.uv_is_active(handle), - libuv.uv_is_closing(handle))) - - libuv.uv_walk(self._ptr, - ffi.callback("void(*)(uv_handle_t*,void*)", - walk), - ffi.NULL) - return handles - - def ref(self): - pass - - def unref(self): - # XXX: Called by _run_callbacks. - pass - - def break_(self, how=None): - libuv.uv_stop(self._ptr) - - def reinit(self): - # TODO: How to implement? We probably have to simply - # re-__init__ this whole class? Does it matter? - # OR maybe we need to uv_walk() and close all the handles? - - # XXX: libuv < 1.12 simply CANNOT handle a fork unless you immediately - # exec() in the child. There are multiple calls to abort() that - # will kill the child process: - # - The OS X poll implementation (kqueue) aborts on an error return - # value; since kqueue FDs can't be inherited, then the next call - # to kqueue in the child will fail and get aborted; fork() is likely - # to be called during the gevent loop, meaning we're deep inside the - # runloop already, so we can't even close the loop that we're in: - # it's too late, the next call to kqueue is already scheduled. - # - The threadpool, should it be in use, also aborts - # (https://github.com/joyent/libuv/pull/1136) - # - There global shared state that breaks signal handling - # and leads to an abort() in the child, EVEN IF the loop in the parent - # had already been closed - # (https://github.com/joyent/libuv/issues/1405) - - # In 1.12, the uv_loop_fork function was added (by gevent!) - libuv.uv_loop_fork(self._ptr) - - _prepare_ran_callbacks = False - - def __run_queued_callbacks(self): - if not self._queued_callbacks: - return False - - cbs = list(self._queued_callbacks) - self._queued_callbacks = [] - - for watcher_ptr, arg in cbs: - handle = watcher_ptr.data - if not handle: - # It's been stopped and possibly closed - assert not libuv.uv_is_active(watcher_ptr) - continue - val = _callbacks.python_callback(handle, arg) - if val == -1: - _callbacks.python_handle_error(handle, arg) - elif val == 1: - if not libuv.uv_is_active(watcher_ptr): - if watcher_ptr.data != handle: - if watcher_ptr.data: - _callbacks.python_stop(None) - else: - _callbacks.python_stop(handle) - return True - - - def run(self, nowait=False, once=False): - # we can only respect one flag or the other. - # nowait takes precedence because it can't block - mode = libuv.UV_RUN_DEFAULT - if once: - mode = libuv.UV_RUN_ONCE - if nowait: - mode = libuv.UV_RUN_NOWAIT - - if mode == libuv.UV_RUN_DEFAULT: - while self._ptr and self._ptr.data: - # This is here to better preserve order guarantees. See _run_callbacks - # for details. - # It may get run again from the prepare watcher, so potentially we - # could take twice as long as the switch interval. - self._run_callbacks() - self._prepare_ran_callbacks = False - ran_status = libuv.uv_run(self._ptr, libuv.UV_RUN_ONCE) - # Note that we run queued callbacks when the prepare watcher runs, - # thus accounting for timers that expired before polling for IO, - # and idle watchers. This next call should get IO callbacks and - # callbacks from timers that expired *after* polling for IO. - ran_callbacks = self.__run_queued_callbacks() - - if not ran_status and not ran_callbacks and not self._prepare_ran_callbacks: - # A return of 0 means there are no referenced and - # active handles. The loop is over. - # If we didn't run any callbacks, then we couldn't schedule - # anything to switch in the future, so there's no point - # running again. - return ran_status - return 0 # Somebody closed the loop - - result = libuv.uv_run(self._ptr, mode) - self.__run_queued_callbacks() - return result - - def now(self): - # libuv's now is expressed as an integer number of - # milliseconds, so to get it compatible with time.time units - # that this method is supposed to return, we have to divide by 1000.0 - now = libuv.uv_now(self._ptr) - return now / 1000.0 - - def update_now(self): - libuv.uv_update_time(self._ptr) - - def fileno(self): - if self._ptr: - fd = libuv.uv_backend_fd(self._ptr) - if fd >= 0: - return fd - - _sigchld_watcher = None - _sigchld_callback_ffi = None - - def install_sigchld(self): - if not self.default: - return - - if self._sigchld_watcher: - return - - self._sigchld_watcher = ffi.new('uv_signal_t*') - libuv.uv_signal_init(self._ptr, self._sigchld_watcher) - self._sigchld_watcher.data = self._handle_to_self - - libuv.uv_signal_start(self._sigchld_watcher, - libuv.python_sigchld_callback, - signal.SIGCHLD) - - def reset_sigchld(self): - if not self.default or not self._sigchld_watcher: - return - - libuv.uv_signal_stop(self._sigchld_watcher) - # Must go through this to manage the memory lifetime - # correctly. Alternately, we could just stop it and restart - # it in install_sigchld? - _watchers.watcher._watcher_ffi_close(self._sigchld_watcher) - del self._sigchld_watcher - - - def _sigchld_callback(self): - # Signals can arrive at (relatively) any time. To eliminate - # race conditions, and behave more like libev, we "queue" - # sigchld to run when we run callbacks. - while True: - try: - pid, status, _usage = os.wait3(os.WNOHANG) - except OSError: - # Python 3 raises ChildProcessError - break - - if pid == 0: - break - children_watchers = self._child_watchers.get(pid, []) + self._child_watchers.get(0, []) - for watcher in children_watchers: - self.run_callback(watcher._set_waitpid_status, pid, status) - - # Don't invoke child watchers for 0 more than once - self._child_watchers[0] = [] - - def _register_child_watcher(self, watcher): - self._child_watchers[watcher._pid].append(watcher) - - def _unregister_child_watcher(self, watcher): - try: - # stop() should be idempotent - self._child_watchers[watcher._pid].remove(watcher) - except ValueError: - pass - - # Now's a good time to clean up any dead lists we don't need - # anymore - for pid in list(self._child_watchers): - if not self._child_watchers[pid]: - del self._child_watchers[pid] - - def io(self, fd, events, ref=True, priority=None): - # We rely on hard references here and explicit calls to - # close() on the returned object to correctly manage - # the watcher lifetimes. - - io_watchers = self._io_watchers - try: - io_watcher = io_watchers[fd] - assert io_watcher._multiplex_watchers, ("IO Watcher %s unclosed but should be dead" % io_watcher) - except KeyError: - # Start the watcher with just the events that we're interested in. - # as multiplexers are added, the real event mask will be updated to keep in sync. - # If we watch for too much, we get spurious wakeups and busy loops. - io_watcher = self._watchers.io(self, fd, 0) - io_watchers[fd] = io_watcher - io_watcher._no_more_watchers = lambda: delitem(io_watchers, fd) - - return io_watcher.multiplex(events) - - def prepare(self, ref=True, priority=None): - # We run arbitrary code in python_prepare_callback. That could switch - # greenlets. If it does that while also manipulating the active prepare - # watchers, we could corrupt the process state, since the prepare watcher - # queue is iterated on the stack (on unix). We could workaround this by implementing - # prepare watchers in pure Python. - # See https://github.com/gevent/gevent/issues/1126 - raise TypeError("prepare watchers are not currently supported in libuv. " - "If you need them, please contact the maintainers.") diff --git a/python/gevent/libuv/watcher.py b/python/gevent/libuv/watcher.py deleted file mode 100644 index 035cb43..0000000 --- a/python/gevent/libuv/watcher.py +++ /dev/null @@ -1,732 +0,0 @@ -# pylint: disable=too-many-lines, protected-access, redefined-outer-name, not-callable -# pylint: disable=no-member -from __future__ import absolute_import, print_function - -import functools -import sys - -from gevent.libuv import _corecffi # pylint:disable=no-name-in-module,import-error - -ffi = _corecffi.ffi -libuv = _corecffi.lib - -from gevent._ffi import watcher as _base -from gevent._ffi import _dbg - -_closing_watchers = set() - -# In debug mode, it would be nice to be able to clear the memory of -# the watcher (its size determined by -# libuv.uv_handle_size(ffi_watcher.type)) using memset so that if we -# are using it after it's supposedly been closed and deleted, we'd -# catch it sooner. BUT doing so breaks test__threadpool. We get errors -# about `pthread_mutex_lock[3]: Invalid argument` (and sometimes we -# crash) suggesting either that we're writing on memory that doesn't -# belong to us, somehow, or that we haven't actually lost all -# references... -_uv_close_callback = ffi.def_extern(name='_uv_close_callback')(_closing_watchers.remove) - - -_events = [(libuv.UV_READABLE, "READ"), - (libuv.UV_WRITABLE, "WRITE")] - -def _events_to_str(events): # export - return _base.events_to_str(events, _events) - -class UVFuncallError(ValueError): - pass - -class libuv_error_wrapper(object): - # Makes sure that everything stored as a function - # on the wrapper instances (classes, actually, - # because this is used by the metaclass) - # checks its return value and raises an error. - # This expects that everything we call has an int - # or void return value and follows the conventions - # of error handling (that negative values are errors) - def __init__(self, uv): - self._libuv = uv - - def __getattr__(self, name): - libuv_func = getattr(self._libuv, name) - - @functools.wraps(libuv_func) - def wrap(*args, **kwargs): - if args and isinstance(args[0], watcher): - args = args[1:] - res = libuv_func(*args, **kwargs) - if res is not None and res < 0: - raise UVFuncallError( - str(ffi.string(libuv.uv_err_name(res)).decode('ascii') - + ' ' - + ffi.string(libuv.uv_strerror(res)).decode('ascii')) - + " Args: " + repr(args) + " KWARGS: " + repr(kwargs) - ) - return res - - setattr(self, name, wrap) - - return wrap - - -class ffi_unwrapper(object): - # undoes the wrapping of libuv_error_wrapper for - # the methods used by the metaclass that care - - def __init__(self, ff): - self._ffi = ff - - def __getattr__(self, name): - return getattr(self._ffi, name) - - def addressof(self, lib, name): - assert isinstance(lib, libuv_error_wrapper) - return self._ffi.addressof(libuv, name) - - -class watcher(_base.watcher): - _FFI = ffi_unwrapper(ffi) - _LIB = libuv_error_wrapper(libuv) - - _watcher_prefix = 'uv' - _watcher_struct_pattern = '%s_t' - - @classmethod - def _watcher_ffi_close(cls, ffi_watcher): - # Managing the lifetime of _watcher is tricky. - # They have to be uv_close()'d, but that only - # queues them to be closed in the *next* loop iteration. - # The memory must stay valid for at least that long, - # or assert errors are triggered. We can't use a ffi.gc() - # pointer to queue the uv_close, because by the time the - # destructor is called, there's no way to keep the memory alive - # and it could be re-used. - # So here we resort to resurrecting the pointer object out - # of our scope, keeping it alive past this object's lifetime. - # We then use the uv_close callback to handle removing that - # reference. There's no context passed to the close callback, - # so we have to do this globally. - - # Sadly, doing this causes crashes if there were multiple - # watchers for a given FD, so we have to take special care - # about that. See https://github.com/gevent/gevent/issues/790#issuecomment-208076604 - - # Note that this cannot be a __del__ method, because we store - # the CFFI handle to self on self, which is a cycle, and - # objects with a __del__ method cannot be collected on CPython < 3.4 - - # Instead, this is arranged as a callback to GC when the - # watcher class dies. Obviously it's important to keep the ffi - # watcher alive. - # We can pass in "subclasses" if uv_handle_t that line up at the C level, - # but that don't in CFFI without a cast. But be careful what we use the cast - # for, don't pass it back to C. - ffi_handle_watcher = cls._FFI.cast('uv_handle_t*', ffi_watcher) - if ffi_handle_watcher.type and not libuv.uv_is_closing(ffi_watcher): - # If the type isn't set, we were never properly initialized, - # and trying to close it results in libuv terminating the process. - # Sigh. Same thing if it's already in the process of being - # closed. - _closing_watchers.add(ffi_watcher) - libuv.uv_close(ffi_watcher, libuv._uv_close_callback) - - ffi_handle_watcher.data = ffi.NULL - - - def _watcher_ffi_set_init_ref(self, ref): - self.ref = ref - - def _watcher_ffi_init(self, args): - # TODO: we could do a better job chokepointing this - return self._watcher_init(self.loop.ptr, - self._watcher, - *args) - - def _watcher_ffi_start(self): - self._watcher_start(self._watcher, self._watcher_callback) - - def _watcher_ffi_stop(self): - if self._watcher: - # The multiplexed io watcher deletes self._watcher - # when it closes down. If that's in the process of - # an error handler, AbstractCallbacks.unhandled_onerror - # will try to close us again. - self._watcher_stop(self._watcher) - - @_base.only_if_watcher - def _watcher_ffi_ref(self): - libuv.uv_ref(self._watcher) - - @_base.only_if_watcher - def _watcher_ffi_unref(self): - libuv.uv_unref(self._watcher) - - def _watcher_ffi_start_unref(self): - pass - - def _watcher_ffi_stop_ref(self): - pass - - def _get_ref(self): - # Convert 1/0 to True/False - if self._watcher is None: - return None - return True if libuv.uv_has_ref(self._watcher) else False - - def _set_ref(self, value): - if value: - self._watcher_ffi_ref() - else: - self._watcher_ffi_unref() - - ref = property(_get_ref, _set_ref) - - def feed(self, _revents, _callback, *_args): - raise Exception("Not implemented") - -class io(_base.IoMixin, watcher): - _watcher_type = 'poll' - _watcher_callback_name = '_gevent_poll_callback2' - - # On Windows is critical to be able to garbage collect these - # objects in a timely fashion so that they don't get reused - # for multiplexing completely different sockets. This is because - # uv_poll_init_socket does a lot of setup for the socket to make - # polling work. If get reused for another socket that has the same - # fileno, things break badly. (In theory this could be a problem - # on posix too, but in practice it isn't). - - # TODO: We should probably generalize this to all - # ffi watchers. Avoiding GC cycles as much as possible - # is a good thing, and potentially allocating new handles - # as needed gets us better memory locality. - - # Especially on Windows, we must also account for the case that a - # reference to this object has leaked (e.g., the socket object is - # still around), but the fileno has been closed and a new one - # opened. We must still get a new native watcher at that point. We - # handle this case by simply making sure that we don't even have - # a native watcher until the object is started, and we shut it down - # when the object is stopped. - - # XXX: I was able to solve at least Windows test_ftplib.py issues - # with more of a careful use of io objects in socket.py, so - # delaying this entirely is at least temporarily on hold. Instead - # sticking with the _watcher_create function override for the - # moment. - - # XXX: Note 2: Moving to a deterministic close model, which was necessary - # for PyPy, also seems to solve the Windows issues. So we're completely taking - # this object out of the loop's registration; we don't want GC callbacks and - # uv_close anywhere *near* this object. - - _watcher_registers_with_loop_on_create = False - - EVENT_MASK = libuv.UV_READABLE | libuv.UV_WRITABLE | libuv.UV_DISCONNECT - - _multiplex_watchers = () - - def __init__(self, loop, fd, events, ref=True, priority=None): - super(io, self).__init__(loop, fd, events, ref=ref, priority=priority, _args=(fd,)) - self._fd = fd - self._events = events - self._multiplex_watchers = [] - - def _get_fd(self): - return self._fd - - @_base.not_while_active - def _set_fd(self, fd): - self._fd = fd - self._watcher_ffi_init((fd,)) - - def _get_events(self): - return self._events - - def _set_events(self, events): - if events == self._events: - return - self._events = events - if self.active: - # We're running but libuv specifically says we can - # call start again to change our event mask. - assert self._handle is not None - self._watcher_start(self._watcher, self._events, self._watcher_callback) - - events = property(_get_events, _set_events) - - def _watcher_ffi_start(self): - self._watcher_start(self._watcher, self._events, self._watcher_callback) - - if sys.platform.startswith('win32'): - # uv_poll can only handle sockets on Windows, but the plain - # uv_poll_init we call on POSIX assumes that the fileno - # argument is already a C fileno, as created by - # _get_osfhandle. C filenos are limited resources, must be - # closed with _close. So there are lifetime issues with that: - # calling the C function _close to dispose of the fileno - # *also* closes the underlying win32 handle, possibly - # prematurely. (XXX: Maybe could do something with weak - # references? But to what?) - - # All libuv wants to do with the fileno in uv_poll_init is - # turn it back into a Win32 SOCKET handle. - - # Now, libuv provides uv_poll_init_socket, which instead of - # taking a C fileno takes the SOCKET, avoiding the need to dance with - # the C runtime. - - # It turns out that SOCKET (win32 handles in general) can be - # represented with `intptr_t`. It further turns out that - # CPython *directly* exposes the SOCKET handle as the value of - # fileno (32-bit PyPy does some munging on it, which should - # rarely matter). So we can pass socket.fileno() through - # to uv_poll_init_socket. - - # See _corecffi_build. - _watcher_init = watcher._LIB.uv_poll_init_socket - - - class _multiplexwatcher(object): - - callback = None - args = () - pass_events = False - ref = True - - def __init__(self, events, watcher): - self._events = events - - # References: - # These objects must keep the original IO object alive; - # the IO object SHOULD NOT keep these alive to avoid cycles - # We MUST NOT rely on GC to clean up the IO objects, but the explicit - # calls to close(); see _multiplex_closed. - self._watcher_ref = watcher - - events = property( - lambda self: self._events, - _base.not_while_active(lambda self, nv: setattr(self, '_events', nv))) - - def start(self, callback, *args, **kwargs): - self.pass_events = kwargs.get("pass_events") - self.callback = callback - self.args = args - - watcher = self._watcher_ref - if watcher is not None: - if not watcher.active: - watcher._io_start() - else: - # Make sure we're in the event mask - watcher._calc_and_update_events() - - def stop(self): - self.callback = None - self.pass_events = None - self.args = None - watcher = self._watcher_ref - if watcher is not None: - watcher._io_maybe_stop() - - def close(self): - if self._watcher_ref is not None: - self._watcher_ref._multiplex_closed(self) - self._watcher_ref = None - - @property - def active(self): - return self.callback is not None - - @property - def _watcher(self): - # For testing. - return self._watcher_ref._watcher - - # ares.pyx depends on this property, - # and test__core uses it too - fd = property(lambda self: getattr(self._watcher_ref, '_fd', -1), - lambda self, nv: self._watcher_ref._set_fd(nv)) - - def _io_maybe_stop(self): - self._calc_and_update_events() - for w in self._multiplex_watchers: - if w.callback is not None: - # There's still a reference to it, and it's started, - # so we can't stop. - return - # If we get here, nothing was started - # so we can take ourself out of the polling set - self.stop() - - def _io_start(self): - self._calc_and_update_events() - self.start(self._io_callback, pass_events=True) - - def _calc_and_update_events(self): - events = 0 - for watcher in self._multiplex_watchers: - if watcher.callback is not None: - # Only ask for events that are active. - events |= watcher.events - self._set_events(events) - - - def multiplex(self, events): - watcher = self._multiplexwatcher(events, self) - self._multiplex_watchers.append(watcher) - self._calc_and_update_events() - return watcher - - def close(self): - super(io, self).close() - del self._multiplex_watchers - - def _multiplex_closed(self, watcher): - self._multiplex_watchers.remove(watcher) - if not self._multiplex_watchers: - self.stop() # should already be stopped - self._no_more_watchers() - # It is absolutely critical that we control when the call - # to uv_close() gets made. uv_close() of a uv_poll_t - # handle winds up calling uv__platform_invalidate_fd, - # which, as the name implies, destroys any outstanding - # events for the *fd* that haven't been delivered yet, and also removes - # the *fd* from the poll set. So if this happens later, at some - # non-deterministic time when (cyclic or otherwise) GC runs, - # *and* we've opened a new watcher for the fd, that watcher will - # suddenly and mysteriously stop seeing events. So we do this now; - # this method is smart enough not to close the handle twice. - self.close() - else: - self._calc_and_update_events() - - def _no_more_watchers(self): - # The loop sets this on an individual watcher to delete it from - # the active list where it keeps hard references. - pass - - def _io_callback(self, events): - if events < 0: - # actually a status error code - _dbg("Callback error on", self._fd, - ffi.string(libuv.uv_err_name(events)), - ffi.string(libuv.uv_strerror(events))) - # XXX: We've seen one half of a FileObjectPosix pair - # (the read side of a pipe) report errno 11 'bad file descriptor' - # after the write side was closed and its watcher removed. But - # we still need to attempt to read from it to clear out what's in - # its buffers--if we return with the watcher inactive before proceeding to wake up - # the reader, we get a LoopExit. So we can't return here and arguably shouldn't print it - # either. The negative events mask will match the watcher's mask. - # See test__fileobject.py:Test.test_newlines for an example. - - # On Windows (at least with PyPy), we can get ENOTSOCK (socket operation on non-socket) - # if a socket gets closed. If we don't pass the events on, we hang. - # See test__makefile_ref.TestSSL for examples. - # return - - for watcher in self._multiplex_watchers: - if not watcher.callback: - # Stopped - continue - assert watcher._watcher_ref is self, (self, watcher._watcher_ref) - - send_event = (events & watcher.events) or events < 0 - if send_event: - if not watcher.pass_events: - watcher.callback(*watcher.args) - else: - watcher.callback(events, *watcher.args) - -class _SimulatedWithAsyncMixin(object): - _watcher_skip_ffi = True - - def __init__(self, loop, *args, **kwargs): - self._async = loop.async_() - try: - super(_SimulatedWithAsyncMixin, self).__init__(loop, *args, **kwargs) - except: - self._async.close() - raise - - def _watcher_create(self, _args): - return - - @property - def _watcher_handle(self): - return None - - def _watcher_ffi_init(self, _args): - return - - def _watcher_ffi_set_init_ref(self, ref): - self._async.ref = ref - - @property - def active(self): - return self._async.active - - def start(self, cb, *args): - self._register_loop_callback() - self.callback = cb - self.args = args - self._async.start(cb, *args) - #watcher.start(self, cb, *args) - - def stop(self): - self._unregister_loop_callback() - self.callback = None - self.args = None - self._async.stop() - - def close(self): - if self._async is not None: - a = self._async - #self._async = None - a.close() - - def _register_loop_callback(self): - # called from start() - raise NotImplementedError() - - def _unregister_loop_callback(self): - # called from stop - raise NotImplementedError() - -class fork(_SimulatedWithAsyncMixin, - _base.ForkMixin, - watcher): - # We'll have to implement this one completely manually - # Right now it doesn't matter much since libuv doesn't survive - # a fork anyway. (That's a work in progress) - _watcher_skip_ffi = False - - def _register_loop_callback(self): - self.loop._fork_watchers.add(self) - - def _unregister_loop_callback(self): - try: - # stop() should be idempotent - self.loop._fork_watchers.remove(self) - except KeyError: - pass - - def _on_fork(self): - self._async.send() - - -class child(_SimulatedWithAsyncMixin, - _base.ChildMixin, - watcher): - _watcher_skip_ffi = True - # We'll have to implement this one completely manually. - # Our approach is to use a SIGCHLD handler and the original - # os.waitpid call. - - # On Unix, libuv's uv_process_t and uv_spawn use SIGCHLD, - # just like libev does for its child watchers. So - # we're not adding any new SIGCHLD related issues not already - # present in libev. - - - def _register_loop_callback(self): - self.loop._register_child_watcher(self) - - def _unregister_loop_callback(self): - self.loop._unregister_child_watcher(self) - - def _set_waitpid_status(self, pid, status): - self._rpid = pid - self._rstatus = status - self._async.send() - - -class async_(_base.AsyncMixin, watcher): - _watcher_callback_name = '_gevent_async_callback0' - - def _watcher_ffi_init(self, args): - # It's dangerous to have a raw, non-initted struct - # around; it will crash in uv_close() when we get GC'd, - # and send() will also crash. - # NOTE: uv_async_init is NOT idempotent. Calling it more than - # once adds the uv_async_t to the internal queue multiple times, - # and uv_close only cleans up one of them, meaning that we tend to - # crash. Thus we have to be very careful not to allow that. - return self._watcher_init(self.loop.ptr, self._watcher, ffi.NULL) - - def _watcher_ffi_start(self): - # we're created in a started state, but we didn't provide a - # callback (because if we did and we don't have a value in our - # callback attribute, then python_callback would crash.) Note that - # uv_async_t->async_cb is not technically documented as public. - self._watcher.async_cb = self._watcher_callback - - def _watcher_ffi_stop(self): - self._watcher.async_cb = ffi.NULL - # We have to unref this because we're setting the cb behind libuv's - # back, basically: once a async watcher is started, it can't ever be - # stopped through libuv interfaces, so it would never lose its active - # status, and thus if it stays reffed it would keep the event loop - # from exiting. - self._watcher_ffi_unref() - - def send(self): - if libuv.uv_is_closing(self._watcher): - raise Exception("Closing handle") - libuv.uv_async_send(self._watcher) - - @property - def pending(self): - return None - -locals()['async'] = async_ - -class timer(_base.TimerMixin, watcher): - - _watcher_callback_name = '_gevent_timer_callback0' - - # In libuv, timer callbacks continue running while any timer is - # expired, including newly added timers. Newly added non-zero - # timers (especially of small duration) can be seen to be expired - # if the loop time is updated while we are in a timer callback. - # This can lead to us being stuck running timers for a terribly - # long time, which is not good. So default to not updating the - # time. - - # Also, newly-added timers of 0 duration can *also* stall the - # loop, because they'll be seen to be expired immediately. - # Updating the time can prevent that, *if* there was already a - # timer for a longer duration scheduled. - - # To mitigate the above problems, our loop implementation turns - # zero duration timers into check watchers instead using OneShotCheck. - # This ensures the loop cycles. Of course, the 'again' method does - # nothing on them and doesn't exist. In practice that's not an issue. - - _again = False - - def _watcher_ffi_init(self, args): - self._watcher_init(self.loop._ptr, self._watcher) - self._after, self._repeat = args - if self._after and self._after < 0.001: - import warnings - # XXX: The stack level is hard to determine, could be getting here - # through a number of different ways. - warnings.warn("libuv only supports millisecond timer resolution; " - "all times less will be set to 1 ms", - stacklevel=6) - # The alternative is to effectively pass in int(0.1) == 0, which - # means no sleep at all, which leads to excessive wakeups - self._after = 0.001 - if self._repeat and self._repeat < 0.001: - import warnings - warnings.warn("libuv only supports millisecond timer resolution; " - "all times less will be set to 1 ms", - stacklevel=6) - self._repeat = 0.001 - - def _watcher_ffi_start(self): - if self._again: - libuv.uv_timer_again(self._watcher) - else: - try: - self._watcher_start(self._watcher, self._watcher_callback, - int(self._after * 1000), - int(self._repeat * 1000)) - except ValueError: - # in case of non-ints in _after/_repeat - raise TypeError() - - def again(self, callback, *args, **kw): - if not self.active: - # If we've never been started, this is the same as starting us. - # libuv makes the distinction, libev doesn't. - self.start(callback, *args, **kw) - return - - self._again = True - try: - self.start(callback, *args, **kw) - finally: - del self._again - - -class stat(_base.StatMixin, watcher): - _watcher_type = 'fs_poll' - _watcher_struct_name = 'gevent_fs_poll_t' - _watcher_callback_name = '_gevent_fs_poll_callback3' - - def _watcher_set_data(self, the_watcher, data): - the_watcher.handle.data = data - return data - - def _watcher_ffi_init(self, args): - return self._watcher_init(self.loop._ptr, self._watcher) - - MIN_STAT_INTERVAL = 0.1074891 # match libev; 0.0 is default - - def _watcher_ffi_start(self): - # libev changes this when the watcher is started - if self._interval < self.MIN_STAT_INTERVAL: - self._interval = self.MIN_STAT_INTERVAL - self._watcher_start(self._watcher, self._watcher_callback, - self._cpath, - int(self._interval * 1000)) - - @property - def _watcher_handle(self): - return self._watcher.handle.data - - @property - def attr(self): - if not self._watcher.curr.st_nlink: - return - return self._watcher.curr - - @property - def prev(self): - if not self._watcher.prev.st_nlink: - return - return self._watcher.prev - - -class signal(_base.SignalMixin, watcher): - _watcher_callback_name = '_gevent_signal_callback1' - - def _watcher_ffi_init(self, args): - self._watcher_init(self.loop._ptr, self._watcher) - self.ref = False # libev doesn't ref these by default - - - def _watcher_ffi_start(self): - self._watcher_start(self._watcher, self._watcher_callback, - self._signalnum) - - -class idle(_base.IdleMixin, watcher): - # Because libuv doesn't support priorities, idle watchers are - # potentially quite a bit different than under libev - _watcher_callback_name = '_gevent_idle_callback0' - - -class check(_base.CheckMixin, watcher): - _watcher_callback_name = '_gevent_check_callback0' - -class OneShotCheck(check): - - _watcher_skip_ffi = True - - def __make_cb(self, func): - stop = self.stop - @functools.wraps(func) - def cb(*args): - stop() - return func(*args) - return cb - - def start(self, callback, *args): - return check.start(self, self.__make_cb(callback), *args) - -class prepare(_base.PrepareMixin, watcher): - _watcher_callback_name = '_gevent_prepare_callback0' diff --git a/python/gevent/local.c b/python/gevent/local.c deleted file mode 100644 index c656bd6..0000000 --- a/python/gevent/local.c +++ /dev/null @@ -1,13741 +0,0 @@ -/* Generated by Cython 0.28.5 */ - -/* BEGIN: Cython Metadata -{ - "distutils": { - "depends": [ - "src/gevent/_local.pxd", - "src\\gevent\\_local.pxd" - ], - "include_dirs": [ - "C:\\Python36\\Include", - "deps" - ], - "name": "gevent._local", - "sources": [ - "src/gevent/local.py" - ] - }, - "module_name": "gevent._local" -} -END: Cython Metadata */ - -#define PY_SSIZE_T_CLEAN -#include "Python.h" -#ifndef Py_PYTHON_H - #error Python headers needed to compile C extensions, please install development version of Python. -#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) - #error Cython requires Python 2.6+ or Python 3.3+. -#else -#define CYTHON_ABI "0_28_5" -#define CYTHON_FUTURE_DIVISION 0 -#include <stddef.h> -#ifndef offsetof - #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) -#endif -#if !defined(WIN32) && !defined(MS_WINDOWS) - #ifndef __stdcall - #define __stdcall - #endif - #ifndef __cdecl - #define __cdecl - #endif - #ifndef __fastcall - #define __fastcall - #endif -#endif -#ifndef DL_IMPORT - #define DL_IMPORT(t) t -#endif -#ifndef DL_EXPORT - #define DL_EXPORT(t) t -#endif -#define __PYX_COMMA , -#ifndef HAVE_LONG_LONG - #if PY_VERSION_HEX >= 0x02070000 - #define HAVE_LONG_LONG - #endif -#endif -#ifndef PY_LONG_LONG - #define PY_LONG_LONG LONG_LONG -#endif -#ifndef Py_HUGE_VAL - #define Py_HUGE_VAL HUGE_VAL -#endif -#ifdef PYPY_VERSION - #define CYTHON_COMPILING_IN_PYPY 1 - #define CYTHON_COMPILING_IN_PYSTON 0 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #undef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 0 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #if PY_VERSION_HEX < 0x03050000 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #undef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #undef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 1 - #undef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 0 - #undef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 0 - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 -#elif defined(PYSTON_VERSION) - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_PYSTON 1 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 -#else - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_PYSTON 0 - #define CYTHON_COMPILING_IN_CPYTHON 1 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #if PY_VERSION_HEX < 0x02070000 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #elif !defined(CYTHON_USE_PYTYPE_LOOKUP) - #define CYTHON_USE_PYTYPE_LOOKUP 1 - #endif - #if PY_MAJOR_VERSION < 3 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #if PY_VERSION_HEX < 0x02070000 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #elif !defined(CYTHON_USE_PYLONG_INTERNALS) - #define CYTHON_USE_PYLONG_INTERNALS 1 - #endif - #ifndef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 1 - #endif - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #if PY_VERSION_HEX < 0x030300F0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #elif !defined(CYTHON_USE_UNICODE_WRITER) - #define CYTHON_USE_UNICODE_WRITER 1 - #endif - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #ifndef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 1 - #endif - #ifndef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 1 - #endif - #ifndef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT (0 && PY_VERSION_HEX >= 0x03050000) - #endif - #ifndef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1) - #endif -#endif -#if !defined(CYTHON_FAST_PYCCALL) -#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) -#endif -#if CYTHON_USE_PYLONG_INTERNALS - #include "longintrepr.h" - #undef SHIFT - #undef BASE - #undef MASK -#endif -#ifndef __has_attribute - #define __has_attribute(x) 0 -#endif -#ifndef __has_cpp_attribute - #define __has_cpp_attribute(x) 0 -#endif -#ifndef CYTHON_RESTRICT - #if defined(__GNUC__) - #define CYTHON_RESTRICT __restrict__ - #elif defined(_MSC_VER) && _MSC_VER >= 1400 - #define CYTHON_RESTRICT __restrict - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_RESTRICT restrict - #else - #define CYTHON_RESTRICT - #endif -#endif -#ifndef CYTHON_UNUSED -# if defined(__GNUC__) -# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -#endif -#ifndef CYTHON_MAYBE_UNUSED_VAR -# if defined(__cplusplus) - template<class T> void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } -# else -# define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) -# endif -#endif -#ifndef CYTHON_NCP_UNUSED -# if CYTHON_COMPILING_IN_CPYTHON -# define CYTHON_NCP_UNUSED -# else -# define CYTHON_NCP_UNUSED CYTHON_UNUSED -# endif -#endif -#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) -#ifdef _MSC_VER - #ifndef _MSC_STDINT_H_ - #if _MSC_VER < 1300 - typedef unsigned char uint8_t; - typedef unsigned int uint32_t; - #else - typedef unsigned __int8 uint8_t; - typedef unsigned __int32 uint32_t; - #endif - #endif -#else - #include <stdint.h> -#endif -#ifndef CYTHON_FALLTHROUGH - #if defined(__cplusplus) && __cplusplus >= 201103L - #if __has_cpp_attribute(fallthrough) - #define CYTHON_FALLTHROUGH [[fallthrough]] - #elif __has_cpp_attribute(clang::fallthrough) - #define CYTHON_FALLTHROUGH [[clang::fallthrough]] - #elif __has_cpp_attribute(gnu::fallthrough) - #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] - #endif - #endif - #ifndef CYTHON_FALLTHROUGH - #if __has_attribute(fallthrough) - #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) - #else - #define CYTHON_FALLTHROUGH - #endif - #endif - #if defined(__clang__ ) && defined(__apple_build_version__) - #if __apple_build_version__ < 7000000 - #undef CYTHON_FALLTHROUGH - #define CYTHON_FALLTHROUGH - #endif - #endif -#endif - -#ifndef CYTHON_INLINE - #if defined(__clang__) - #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) - #elif defined(__GNUC__) - #define CYTHON_INLINE __inline__ - #elif defined(_MSC_VER) - #define CYTHON_INLINE __inline - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_INLINE inline - #else - #define CYTHON_INLINE - #endif -#endif - -#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) - #define Py_OptimizeFlag 0 -#endif -#define __PYX_BUILD_PY_SSIZE_T "n" -#define CYTHON_FORMAT_SSIZE_T "z" -#if PY_MAJOR_VERSION < 3 - #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) - #define __Pyx_DefaultClassType PyClass_Type -#else - #define __Pyx_BUILTIN_MODULE_NAME "builtins" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) - #define __Pyx_DefaultClassType PyType_Type -#endif -#ifndef Py_TPFLAGS_CHECKTYPES - #define Py_TPFLAGS_CHECKTYPES 0 -#endif -#ifndef Py_TPFLAGS_HAVE_INDEX - #define Py_TPFLAGS_HAVE_INDEX 0 -#endif -#ifndef Py_TPFLAGS_HAVE_NEWBUFFER - #define Py_TPFLAGS_HAVE_NEWBUFFER 0 -#endif -#ifndef Py_TPFLAGS_HAVE_FINALIZE - #define Py_TPFLAGS_HAVE_FINALIZE 0 -#endif -#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) - #ifndef METH_FASTCALL - #define METH_FASTCALL 0x80 - #endif - typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); - typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, - Py_ssize_t nargs, PyObject *kwnames); -#else - #define __Pyx_PyCFunctionFast _PyCFunctionFast - #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords -#endif -#if CYTHON_FAST_PYCCALL -#define __Pyx_PyFastCFunction_Check(func)\ - ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))))) -#else -#define __Pyx_PyFastCFunction_Check(func) 0 -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) - #define PyObject_Malloc(s) PyMem_Malloc(s) - #define PyObject_Free(p) PyMem_Free(p) - #define PyObject_Realloc(p) PyMem_Realloc(p) -#endif -#if CYTHON_COMPILING_IN_PYSTON - #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) -#else - #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) -#endif -#if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000 - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#elif PY_VERSION_HEX >= 0x03060000 - #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() -#elif PY_VERSION_HEX >= 0x03000000 - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#else - #define __Pyx_PyThreadState_Current _PyThreadState_Current -#endif -#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) -#include "pythread.h" -#define Py_tss_NEEDS_INIT 0 -typedef int Py_tss_t; -static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { - *key = PyThread_create_key(); - return 0; // PyThread_create_key reports success always -} -static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { - Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); - *key = Py_tss_NEEDS_INIT; - return key; -} -static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { - PyObject_Free(key); -} -static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { - return *key != Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { - PyThread_delete_key(*key); - *key = Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { - return PyThread_set_key_value(*key, value); -} -static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { - return PyThread_get_key_value(*key); -} -#endif // TSS (Thread Specific Storage) API -#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) -#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) -#else -#define __Pyx_PyDict_NewPresized(n) PyDict_New() -#endif -#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION - #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) -#else - #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) -#endif -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS -#define __Pyx_PyDict_GetItemStr(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) -#else -#define __Pyx_PyDict_GetItemStr(dict, name) PyDict_GetItem(dict, name) -#endif -#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) - #define CYTHON_PEP393_ENABLED 1 - #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ - 0 : _PyUnicode_Ready((PyObject *)(op))) - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) - #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) - #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) - #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) -#else - #define CYTHON_PEP393_ENABLED 0 - #define PyUnicode_1BYTE_KIND 1 - #define PyUnicode_2BYTE_KIND 2 - #define PyUnicode_4BYTE_KIND 4 - #define __Pyx_PyUnicode_READY(op) (0) - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) - #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) - #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) - #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) -#endif -#if CYTHON_COMPILING_IN_PYPY - #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) -#else - #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ - PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) - #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) - #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) - #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) -#endif -#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) -#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) -#else - #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) -#endif -#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) - #define PyObject_ASCII(o) PyObject_Repr(o) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBaseString_Type PyUnicode_Type - #define PyStringObject PyUnicodeObject - #define PyString_Type PyUnicode_Type - #define PyString_Check PyUnicode_Check - #define PyString_CheckExact PyUnicode_CheckExact - #define PyObject_Unicode PyObject_Str -#endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) - #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) -#else - #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) - #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) -#endif -#ifndef PySet_CheckExact - #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) -#endif -#if CYTHON_ASSUME_SAFE_MACROS - #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) -#else - #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyIntObject PyLongObject - #define PyInt_Type PyLong_Type - #define PyInt_Check(op) PyLong_Check(op) - #define PyInt_CheckExact(op) PyLong_CheckExact(op) - #define PyInt_FromString PyLong_FromString - #define PyInt_FromUnicode PyLong_FromUnicode - #define PyInt_FromLong PyLong_FromLong - #define PyInt_FromSize_t PyLong_FromSize_t - #define PyInt_FromSsize_t PyLong_FromSsize_t - #define PyInt_AsLong PyLong_AsLong - #define PyInt_AS_LONG PyLong_AS_LONG - #define PyInt_AsSsize_t PyLong_AsSsize_t - #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask - #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask - #define PyNumber_Int PyNumber_Long -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBoolObject PyLongObject -#endif -#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY - #ifndef PyUnicode_InternFromString - #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) - #endif -#endif -#if PY_VERSION_HEX < 0x030200A4 - typedef long Py_hash_t; - #define __Pyx_PyInt_FromHash_t PyInt_FromLong - #define __Pyx_PyInt_AsHash_t PyInt_AsLong -#else - #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t - #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t -#endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : (Py_INCREF(func), func)) -#else - #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) -#endif -#if CYTHON_USE_ASYNC_SLOTS - #if PY_VERSION_HEX >= 0x030500B1 - #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods - #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) - #else - #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) - #endif -#else - #define __Pyx_PyType_AsAsync(obj) NULL -#endif -#ifndef __Pyx_PyAsyncMethodsStruct - typedef struct { - unaryfunc am_await; - unaryfunc am_aiter; - unaryfunc am_anext; - } __Pyx_PyAsyncMethodsStruct; -#endif - -#if defined(WIN32) || defined(MS_WINDOWS) - #define _USE_MATH_DEFINES -#endif -#include <math.h> -#ifdef NAN -#define __PYX_NAN() ((float) NAN) -#else -static CYTHON_INLINE float __PYX_NAN() { - float value; - memset(&value, 0xFF, sizeof(value)); - return value; -} -#endif -#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) -#define __Pyx_truncl trunc -#else -#define __Pyx_truncl truncl -#endif - - -#define __PYX_ERR(f_index, lineno, Ln_error) \ -{ \ - __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \ -} - -#ifndef __PYX_EXTERN_C - #ifdef __cplusplus - #define __PYX_EXTERN_C extern "C" - #else - #define __PYX_EXTERN_C extern - #endif -#endif - -#define __PYX_HAVE__gevent___local -#define __PYX_HAVE_API__gevent___local -/* Early includes */ -#include "greenlet/greenlet.h" -#include "frameobject.h" -#ifdef _OPENMP -#include <omp.h> -#endif /* _OPENMP */ - -#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) -#define CYTHON_WITHOUT_ASSERTIONS -#endif - -typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; - const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; - -#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 -#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0 -#define __PYX_DEFAULT_STRING_ENCODING "" -#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString -#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#define __Pyx_uchar_cast(c) ((unsigned char)c) -#define __Pyx_long_cast(x) ((long)x) -#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ - (sizeof(type) < sizeof(Py_ssize_t)) ||\ - (sizeof(type) > sizeof(Py_ssize_t) &&\ - likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX) &&\ - (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ - v == (type)PY_SSIZE_T_MIN))) ||\ - (sizeof(type) == sizeof(Py_ssize_t) &&\ - (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX))) ) -#if defined (__cplusplus) && __cplusplus >= 201103L - #include <cstdlib> - #define __Pyx_sst_abs(value) std::abs(value) -#elif SIZEOF_INT >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) abs(value) -#elif SIZEOF_LONG >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) labs(value) -#elif defined (_MSC_VER) - #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) -#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define __Pyx_sst_abs(value) llabs(value) -#elif defined (__GNUC__) - #define __Pyx_sst_abs(value) __builtin_llabs(value) -#else - #define __Pyx_sst_abs(value) ((value<0) ? -value : value) -#endif -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); -#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) -#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) -#define __Pyx_PyBytes_FromString PyBytes_FromString -#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); -#if PY_MAJOR_VERSION < 3 - #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#else - #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize -#endif -#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) -#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) -#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) -#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) -#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) -static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { - const Py_UNICODE *u_end = u; - while (*u_end++) ; - return (size_t)(u_end - u - 1); -} -#define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) -#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode -#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode -#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) -#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); -#define __Pyx_PySequence_Tuple(obj)\ - (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); -#if CYTHON_ASSUME_SAFE_MACROS -#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) -#else -#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) -#endif -#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) -#if PY_MAJOR_VERSION >= 3 -#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) -#else -#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) -#endif -#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x)) -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII -static int __Pyx_sys_getdefaultencoding_not_ascii; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - PyObject* ascii_chars_u = NULL; - PyObject* ascii_chars_b = NULL; - const char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - if (strcmp(default_encoding_c, "ascii") == 0) { - __Pyx_sys_getdefaultencoding_not_ascii = 0; - } else { - char ascii_chars[128]; - int c; - for (c = 0; c < 128; c++) { - ascii_chars[c] = c; - } - __Pyx_sys_getdefaultencoding_not_ascii = 1; - ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); - if (!ascii_chars_u) goto bad; - ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); - if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { - PyErr_Format( - PyExc_ValueError, - "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", - default_encoding_c); - goto bad; - } - Py_DECREF(ascii_chars_u); - Py_DECREF(ascii_chars_b); - } - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - Py_XDECREF(ascii_chars_u); - Py_XDECREF(ascii_chars_b); - return -1; -} -#endif -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) -#else -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -static char* __PYX_DEFAULT_STRING_ENCODING; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c)); - if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; - strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - return -1; -} -#endif -#endif - - -/* Test for GCC > 2.95 */ -#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) - #define likely(x) __builtin_expect(!!(x), 1) - #define unlikely(x) __builtin_expect(!!(x), 0) -#else /* !__GNUC__ or GCC < 2.95 */ - #define likely(x) (x) - #define unlikely(x) (x) -#endif /* __GNUC__ */ -static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } - -static PyObject *__pyx_m = NULL; -static PyObject *__pyx_d; -static PyObject *__pyx_b; -static PyObject *__pyx_cython_runtime = NULL; -static PyObject *__pyx_empty_tuple; -static PyObject *__pyx_empty_bytes; -static PyObject *__pyx_empty_unicode; -static int __pyx_lineno; -static int __pyx_clineno = 0; -static const char * __pyx_cfilenm= __FILE__; -static const char *__pyx_filename; - - -static const char *__pyx_f[] = { - "src\\gevent\\local.py", - "src\\gevent\\__greenlet_primitives.pxd", - "src\\gevent\\__waiter.pxd", - "src\\gevent\\_greenlet.pxd", - "src\\gevent\\_local.pxd", - "src\\gevent\\__ident.pxd", -}; - -/*--- Type declarations ---*/ -struct __pyx_obj_6gevent_7__ident_ValuedWeakRef; -struct __pyx_obj_6gevent_7__ident_IdentRegistry; -struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet; -struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop; -struct __pyx_obj_6gevent_8__waiter_Waiter; -struct __pyx_obj_6gevent_8__waiter_MultipleWaiter; -struct __pyx_obj_6gevent_9_greenlet_SpawnedLink; -struct __pyx_obj_6gevent_9_greenlet_SuccessSpawnedLink; -struct __pyx_obj_6gevent_9_greenlet_FailureSpawnedLink; -struct __pyx_obj_6gevent_9_greenlet__Frame; -struct __pyx_obj_6gevent_9_greenlet_Greenlet; -struct __pyx_obj_6gevent_9_greenlet__dummy_event; -struct __pyx_obj_6gevent_6_local__wrefdict; -struct __pyx_obj_6gevent_6_local__greenlet_deleted; -struct __pyx_obj_6gevent_6_local__local_deleted; -struct __pyx_obj_6gevent_6_local__localimpl; -struct __pyx_obj_6gevent_6_local__localimpl_dict_entry; -struct __pyx_obj_6gevent_6_local_local; -struct __pyx_opt_args_6gevent_9_greenlet_8Greenlet_join; -struct __pyx_opt_args_6gevent_9_greenlet_joinall; - -/* "gevent/_greenlet.pxd":105 - * - * cpdef bint has_links(self) - * cpdef join(self, timeout=*) # <<<<<<<<<<<<<< - * cpdef bint ready(self) - * cpdef bint successful(self) - */ -struct __pyx_opt_args_6gevent_9_greenlet_8Greenlet_join { - int __pyx_n; - PyObject *timeout; -}; - -/* "gevent/_greenlet.pxd":174 - * - * @cython.locals(done=list) - * cpdef joinall(greenlets, timeout=*, raise_error=*, count=*) # <<<<<<<<<<<<<< - */ -struct __pyx_opt_args_6gevent_9_greenlet_joinall { - int __pyx_n; - PyObject *timeout; - PyObject *raise_error; - PyObject *count; -}; - -/* "gevent/__ident.pxd":15 - * @cython.internal - * @cython.final - * cdef class ValuedWeakRef(ref): # <<<<<<<<<<<<<< - * cdef object value - * - */ -struct __pyx_obj_6gevent_7__ident_ValuedWeakRef { - PyWeakReference __pyx_base; - PyObject *value; -}; - - -/* "gevent/__ident.pxd":19 - * - * @cython.final - * cdef class IdentRegistry: # <<<<<<<<<<<<<< - * cdef object _registry - * cdef list _available_idents - */ -struct __pyx_obj_6gevent_7__ident_IdentRegistry { - PyObject_HEAD - struct __pyx_vtabstruct_6gevent_7__ident_IdentRegistry *__pyx_vtab; - PyObject *_registry; - PyObject *_available_idents; -}; - - -/* "gevent/__greenlet_primitives.pxd":37 - * return PyGreenlet_Switch(self, NULL, NULL) - * - * cdef class TrackedRawGreenlet(greenlet): # <<<<<<<<<<<<<< - * pass - * - */ -struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet { - PyGreenlet __pyx_base; -}; - - -/* "gevent/__greenlet_primitives.pxd":40 - * pass - * - * cdef class SwitchOutGreenletWithLoop(TrackedRawGreenlet): # <<<<<<<<<<<<<< - * cdef public loop - * - */ -struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop { - struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet __pyx_base; - struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_vtab; - PyObject *loop; -}; - - -/* "gevent/__waiter.pxd":33 - * _greenlet_imported = True - * - * cdef class Waiter: # <<<<<<<<<<<<<< - * cdef readonly SwitchOutGreenletWithLoop hub - * cdef readonly greenlet greenlet - */ -struct __pyx_obj_6gevent_8__waiter_Waiter { - PyObject_HEAD - struct __pyx_vtabstruct_6gevent_8__waiter_Waiter *__pyx_vtab; - struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *hub; - PyGreenlet *greenlet; - PyObject *value; - PyObject *_exception; -}; - - -/* "gevent/__waiter.pxd":47 - * @cython.final - * @cython.internal - * cdef class MultipleWaiter(Waiter): # <<<<<<<<<<<<<< - * cdef list _values - */ -struct __pyx_obj_6gevent_8__waiter_MultipleWaiter { - struct __pyx_obj_6gevent_8__waiter_Waiter __pyx_base; - PyObject *_values; -}; - - -/* "gevent/_greenlet.pxd":56 - * cdef void _init() - * - * cdef class SpawnedLink: # <<<<<<<<<<<<<< - * cdef public object callback - * - */ -struct __pyx_obj_6gevent_9_greenlet_SpawnedLink { - PyObject_HEAD - PyObject *callback; -}; - - -/* "gevent/_greenlet.pxd":61 - * - * @cython.final - * cdef class SuccessSpawnedLink(SpawnedLink): # <<<<<<<<<<<<<< - * pass - * - */ -struct __pyx_obj_6gevent_9_greenlet_SuccessSpawnedLink { - struct __pyx_obj_6gevent_9_greenlet_SpawnedLink __pyx_base; -}; - - -/* "gevent/_greenlet.pxd":65 - * - * @cython.final - * cdef class FailureSpawnedLink(SpawnedLink): # <<<<<<<<<<<<<< - * pass - * - */ -struct __pyx_obj_6gevent_9_greenlet_FailureSpawnedLink { - struct __pyx_obj_6gevent_9_greenlet_SpawnedLink __pyx_base; -}; - - -/* "gevent/_greenlet.pxd":71 - * @cython.internal - * @cython.freelist(1000) - * cdef class _Frame: # <<<<<<<<<<<<<< - * cdef readonly CodeType f_code - * cdef readonly int f_lineno - */ -struct __pyx_obj_6gevent_9_greenlet__Frame { - PyObject_HEAD - PyCodeObject *f_code; - int f_lineno; - struct __pyx_obj_6gevent_9_greenlet__Frame *f_back; -}; - - -/* "gevent/_greenlet.pxd":86 - * - * - * cdef class Greenlet(greenlet): # <<<<<<<<<<<<<< - * cdef readonly object value - * cdef readonly tuple args - */ -struct __pyx_obj_6gevent_9_greenlet_Greenlet { - PyGreenlet __pyx_base; - struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet *__pyx_vtab; - PyObject *value; - PyObject *args; - PyObject *kwargs; - PyObject *spawning_greenlet; - PyObject *spawn_tree_locals; - PyObject *_spawning_stack_frames; - PyObject *_links; - PyObject *_exc_info; - PyObject *_notifier; - PyObject *_start_event; - PyObject *_formatted_info; - PyObject *_ident; -}; - - -/* "gevent/_greenlet.pxd":157 - * @cython.final - * @cython.internal - * cdef class _dummy_event: # <<<<<<<<<<<<<< - * cdef readonly bint pending - * cdef readonly bint active - */ -struct __pyx_obj_6gevent_9_greenlet__dummy_event { - PyObject_HEAD - struct __pyx_vtabstruct_6gevent_9_greenlet__dummy_event *__pyx_vtab; - int pending; - int active; -}; - - -/* "gevent/_local.pxd":40 - * @cython.final - * @cython.internal - * cdef class _wrefdict(dict): # <<<<<<<<<<<<<< - * cdef object __weakref__ - * - */ -struct __pyx_obj_6gevent_6_local__wrefdict { - PyDictObject __pyx_base; - PyObject *__weakref__; -}; - - -/* "gevent/_local.pxd":45 - * @cython.final - * @cython.internal - * cdef class _greenlet_deleted: # <<<<<<<<<<<<<< - * cdef object idt - * cdef object wrdicts - */ -struct __pyx_obj_6gevent_6_local__greenlet_deleted { - PyObject_HEAD - PyObject *idt; - PyObject *wrdicts; -}; - - -/* "gevent/_local.pxd":52 - * @cython.final - * @cython.internal - * cdef class _local_deleted: # <<<<<<<<<<<<<< - * cdef str key - * cdef object wrthread - */ -struct __pyx_obj_6gevent_6_local__local_deleted { - PyObject_HEAD - PyObject *key; - PyObject *wrthread; - struct __pyx_obj_6gevent_6_local__greenlet_deleted *greenlet_deleted; -}; - - -/* "gevent/_local.pxd":59 - * @cython.final - * @cython.internal - * cdef class _localimpl: # <<<<<<<<<<<<<< - * cdef str key - * cdef dict dicts - */ -struct __pyx_obj_6gevent_6_local__localimpl { - PyObject_HEAD - PyObject *key; - PyObject *dicts; - PyObject *localargs; - PyObject *localkwargs; - PyObject *localtypeid; - PyObject *__weakref__; -}; - - -/* "gevent/_local.pxd":70 - * @cython.final - * @cython.internal - * cdef class _localimpl_dict_entry: # <<<<<<<<<<<<<< - * cdef object wrgreenlet - * cdef dict localdict - */ -struct __pyx_obj_6gevent_6_local__localimpl_dict_entry { - PyObject_HEAD - PyObject *wrgreenlet; - PyObject *localdict; -}; - - -/* "gevent/_local.pxd":83 - * cdef set _local_attrs - * - * cdef class local: # <<<<<<<<<<<<<< - * cdef _localimpl _local__impl - * cdef set _local_type_get_descriptors - */ -struct __pyx_obj_6gevent_6_local_local { - PyObject_HEAD - struct __pyx_vtabstruct_6gevent_6_local_local *__pyx_vtab; - struct __pyx_obj_6gevent_6_local__localimpl *_local__impl; - PyObject *_local_type_get_descriptors; - PyObject *_local_type_set_or_del_descriptors; - PyObject *_local_type_del_descriptors; - PyObject *_local_type_set_descriptors; - PyObject *_local_type_vars; - PyTypeObject *_local_type; -}; - - - -/* "gevent/__ident.pxd":19 - * - * @cython.final - * cdef class IdentRegistry: # <<<<<<<<<<<<<< - * cdef object _registry - * cdef list _available_idents - */ - -struct __pyx_vtabstruct_6gevent_7__ident_IdentRegistry { - PyObject *(*get_ident)(struct __pyx_obj_6gevent_7__ident_IdentRegistry *, PyObject *, int __pyx_skip_dispatch); - PyObject *(*_return_ident)(struct __pyx_obj_6gevent_7__ident_IdentRegistry *, struct __pyx_obj_6gevent_7__ident_ValuedWeakRef *, int __pyx_skip_dispatch); -}; -static struct __pyx_vtabstruct_6gevent_7__ident_IdentRegistry *__pyx_vtabptr_6gevent_7__ident_IdentRegistry; - - -/* "gevent/__greenlet_primitives.pxd":40 - * pass - * - * cdef class SwitchOutGreenletWithLoop(TrackedRawGreenlet): # <<<<<<<<<<<<<< - * cdef public loop - * - */ - -struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop { - PyObject *(*__pyx_switch)(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *, int __pyx_skip_dispatch); - PyObject *(*switch_out)(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *, int __pyx_skip_dispatch); -}; -static struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_vtabptr_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop; - - -/* "gevent/__waiter.pxd":33 - * _greenlet_imported = True - * - * cdef class Waiter: # <<<<<<<<<<<<<< - * cdef readonly SwitchOutGreenletWithLoop hub - * cdef readonly greenlet greenlet - */ - -struct __pyx_vtabstruct_6gevent_8__waiter_Waiter { - PyObject *(*get)(struct __pyx_obj_6gevent_8__waiter_Waiter *, int __pyx_skip_dispatch); - PyObject *(*clear)(struct __pyx_obj_6gevent_8__waiter_Waiter *, int __pyx_skip_dispatch); -}; -static struct __pyx_vtabstruct_6gevent_8__waiter_Waiter *__pyx_vtabptr_6gevent_8__waiter_Waiter; - - -/* "gevent/__waiter.pxd":47 - * @cython.final - * @cython.internal - * cdef class MultipleWaiter(Waiter): # <<<<<<<<<<<<<< - * cdef list _values - */ - -struct __pyx_vtabstruct_6gevent_8__waiter_MultipleWaiter { - struct __pyx_vtabstruct_6gevent_8__waiter_Waiter __pyx_base; -}; -static struct __pyx_vtabstruct_6gevent_8__waiter_MultipleWaiter *__pyx_vtabptr_6gevent_8__waiter_MultipleWaiter; - - -/* "gevent/_greenlet.pxd":86 - * - * - * cdef class Greenlet(greenlet): # <<<<<<<<<<<<<< - * cdef readonly object value - * cdef readonly tuple args - */ - -struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet { - int (*has_links)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, int __pyx_skip_dispatch); - PyObject *(*join)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_9_greenlet_8Greenlet_join *__pyx_optional_args); - int (*ready)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, int __pyx_skip_dispatch); - int (*successful)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, int __pyx_skip_dispatch); - PyObject *(*rawlink)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, PyObject *, int __pyx_skip_dispatch); - PyObject *(*_formatinfo)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, int __pyx_skip_dispatch); - PyObject *(*_get_minimal_ident)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *); - int (*__pyx___started_but_aborted)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *); - int (*__pyx___start_cancelled_by_kill)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *); - int (*__pyx___start_pending)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *); - int (*__pyx___never_started_or_killed)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *); - int (*__pyx___start_completed)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *); - PyObject *(*__pyx___handle_death_before_start)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, PyObject *); - PyObject *(*__pyx___cancel_start)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *); - PyObject *(*_report_result)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, PyObject *); - PyObject *(*_report_error)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, PyObject *); - PyObject *(*_notify_links)(struct __pyx_obj_6gevent_9_greenlet_Greenlet *, int __pyx_skip_dispatch); -}; -static struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet *__pyx_vtabptr_6gevent_9_greenlet_Greenlet; - - -/* "gevent/_greenlet.pxd":157 - * @cython.final - * @cython.internal - * cdef class _dummy_event: # <<<<<<<<<<<<<< - * cdef readonly bint pending - * cdef readonly bint active - */ - -struct __pyx_vtabstruct_6gevent_9_greenlet__dummy_event { - PyObject *(*stop)(struct __pyx_obj_6gevent_9_greenlet__dummy_event *, int __pyx_skip_dispatch); - PyObject *(*start)(struct __pyx_obj_6gevent_9_greenlet__dummy_event *, PyObject *, int __pyx_skip_dispatch); - PyObject *(*close)(struct __pyx_obj_6gevent_9_greenlet__dummy_event *, int __pyx_skip_dispatch); -}; -static struct __pyx_vtabstruct_6gevent_9_greenlet__dummy_event *__pyx_vtabptr_6gevent_9_greenlet__dummy_event; - - -/* "src/gevent/local.py":361 - * } - * - * class local(object): # <<<<<<<<<<<<<< - * """ - * An object whose attributes are greenlet-local. - */ - -struct __pyx_vtabstruct_6gevent_6_local_local { - struct __pyx_obj_6gevent_6_local_local *(*__pyx___copy__)(struct __pyx_obj_6gevent_6_local_local *, int __pyx_skip_dispatch); -}; -static struct __pyx_vtabstruct_6gevent_6_local_local *__pyx_vtabptr_6gevent_6_local_local; - -/* --- Runtime support code (head) --- */ -/* Refnanny.proto */ -#ifndef CYTHON_REFNANNY - #define CYTHON_REFNANNY 0 -#endif -#if CYTHON_REFNANNY - typedef struct { - void (*INCREF)(void*, PyObject*, int); - void (*DECREF)(void*, PyObject*, int); - void (*GOTREF)(void*, PyObject*, int); - void (*GIVEREF)(void*, PyObject*, int); - void* (*SetupContext)(const char*, int, const char*); - void (*FinishContext)(void**); - } __Pyx_RefNannyAPIStruct; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); - #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; -#ifdef WITH_THREAD - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - if (acquire_gil) {\ - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - PyGILState_Release(__pyx_gilstate_save);\ - } else {\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - } -#else - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) -#endif - #define __Pyx_RefNannyFinishContext()\ - __Pyx_RefNanny->FinishContext(&__pyx_refnanny) - #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) - #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) - #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) - #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0) -#else - #define __Pyx_RefNannyDeclarations - #define __Pyx_RefNannySetupContext(name, acquire_gil) - #define __Pyx_RefNannyFinishContext() - #define __Pyx_INCREF(r) Py_INCREF(r) - #define __Pyx_DECREF(r) Py_DECREF(r) - #define __Pyx_GOTREF(r) - #define __Pyx_GIVEREF(r) - #define __Pyx_XINCREF(r) Py_XINCREF(r) - #define __Pyx_XDECREF(r) Py_XDECREF(r) - #define __Pyx_XGOTREF(r) - #define __Pyx_XGIVEREF(r) -#endif -#define __Pyx_XDECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_XDECREF(tmp);\ - } while (0) -#define __Pyx_DECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_DECREF(tmp);\ - } while (0) -#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) -#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) - -/* PyObjectGetAttrStr.proto */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) -#endif - -/* GetBuiltinName.proto */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name); - -/* PyCFunctionFastCall.proto */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); -#else -#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) -#endif - -/* PyFunctionFastCall.proto */ -#if CYTHON_FAST_PYCALL -#define __Pyx_PyFunction_FastCall(func, args, nargs)\ - __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs); -#else -#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) -#endif -#endif - -/* PyObjectCall.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); -#else -#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) -#endif - -/* PyObjectCallMethO.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); -#endif - -/* PyObjectCallOneArg.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); - -/* py_dict_items.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyDict_Items(PyObject* d); - -/* UnpackUnboundCMethod.proto */ -typedef struct { - PyObject *type; - PyObject **method_name; - PyCFunction func; - PyObject *method; - int flag; -} __Pyx_CachedCFunction; - -/* CallUnboundCMethod0.proto */ -static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self); -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_CallUnboundCMethod0(cfunc, self)\ - (likely((cfunc)->func) ?\ - (likely((cfunc)->flag == METH_NOARGS) ? (*((cfunc)->func))(self, NULL) :\ - (PY_VERSION_HEX >= 0x030600B1 && likely((cfunc)->flag == METH_FASTCALL) ?\ - (PY_VERSION_HEX >= 0x030700A0 ?\ - (*(__Pyx_PyCFunctionFast)(cfunc)->func)(self, &__pyx_empty_tuple, 0) :\ - (*(__Pyx_PyCFunctionFastWithKeywords)(cfunc)->func)(self, &__pyx_empty_tuple, 0, NULL)) :\ - (PY_VERSION_HEX >= 0x030700A0 && (cfunc)->flag == (METH_FASTCALL | METH_KEYWORDS) ?\ - (*(__Pyx_PyCFunctionFastWithKeywords)(cfunc)->func)(self, &__pyx_empty_tuple, 0, NULL) :\ - (likely((cfunc)->flag == (METH_VARARGS | METH_KEYWORDS)) ? ((*(PyCFunctionWithKeywords)(cfunc)->func)(self, __pyx_empty_tuple, NULL)) :\ - ((cfunc)->flag == METH_VARARGS ? (*((cfunc)->func))(self, __pyx_empty_tuple) :\ - __Pyx__CallUnboundCMethod0(cfunc, self)))))) :\ - __Pyx__CallUnboundCMethod0(cfunc, self)) -#else -#define __Pyx_CallUnboundCMethod0(cfunc, self) __Pyx__CallUnboundCMethod0(cfunc, self) -#endif - -/* RaiseTooManyValuesToUnpack.proto */ -static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); - -/* RaiseNeedMoreValuesToUnpack.proto */ -static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); - -/* IterFinish.proto */ -static CYTHON_INLINE int __Pyx_IterFinish(void); - -/* UnpackItemEndCheck.proto */ -static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); - -/* bytes_tailmatch.proto */ -static int __Pyx_PyBytes_SingleTailmatch(PyObject* self, PyObject* arg, - Py_ssize_t start, Py_ssize_t end, int direction); -static int __Pyx_PyBytes_Tailmatch(PyObject* self, PyObject* substr, - Py_ssize_t start, Py_ssize_t end, int direction); - -/* unicode_tailmatch.proto */ -static int __Pyx_PyUnicode_Tailmatch( - PyObject* s, PyObject* substr, Py_ssize_t start, Py_ssize_t end, int direction); - -/* str_tailmatch.proto */ -static CYTHON_INLINE int __Pyx_PyStr_Tailmatch(PyObject* self, PyObject* arg, Py_ssize_t start, - Py_ssize_t end, int direction); - -/* PyObjectCallNoArg.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); -#else -#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL) -#endif - -/* ExtTypeTest.proto */ -static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); - -/* dict_getitem_default.proto */ -static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value); - -/* CallUnboundCMethod1.proto */ -static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg); -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg); -#else -#define __Pyx_CallUnboundCMethod1(cfunc, self, arg) __Pyx__CallUnboundCMethod1(cfunc, self, arg) -#endif - -/* CallUnboundCMethod2.proto */ -static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2); -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030600B1 -static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2); -#else -#define __Pyx_CallUnboundCMethod2(cfunc, self, arg1, arg2) __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2) -#endif - -/* ListAppend.proto */ -#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS -static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { - PyListObject* L = (PyListObject*) list; - Py_ssize_t len = Py_SIZE(list); - if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) { - Py_INCREF(x); - PyList_SET_ITEM(list, len, x); - Py_SIZE(list) = len+1; - return 0; - } - return PyList_Append(list, x); -} -#else -#define __Pyx_PyList_Append(L,x) PyList_Append(L,x) -#endif - -/* ArgTypeTest.proto */ -#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\ - ((likely((Py_TYPE(obj) == type) | (none_allowed && (obj == Py_None)))) ? 1 :\ - __Pyx__ArgTypeTest(obj, type, name, exact)) -static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact); - -/* RaiseArgTupleInvalid.proto */ -static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, - Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); - -/* RaiseDoubleKeywords.proto */ -static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); - -/* ParseKeywords.proto */ -static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\ - PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\ - const char* function_name); - -/* PyThreadStateGet.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; -#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; -#define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type -#else -#define __Pyx_PyThreadState_declare -#define __Pyx_PyThreadState_assign -#define __Pyx_PyErr_Occurred() PyErr_Occurred() -#endif - -/* SaveResetException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -#else -#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) -#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) -#endif - -/* PyErrExceptionMatches.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) -static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); -#else -#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) -#endif - -/* PyErrFetchRestore.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) -#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) -#else -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#endif -#else -#define __Pyx_PyErr_Clear() PyErr_Clear() -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) -#endif - -/* GetAttr.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *); - -/* GetAttr3.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *); - -/* DictGetItem.proto */ -#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY -static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key); -#define __Pyx_PyObject_Dict_GetItem(obj, name)\ - (likely(PyDict_CheckExact(obj)) ?\ - __Pyx_PyDict_GetItem(obj, name) : PyObject_GetItem(obj, name)) -#else -#define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key) -#define __Pyx_PyObject_Dict_GetItem(obj, name) PyObject_GetItem(obj, name) -#endif - -/* GetException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) -static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#else -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); -#endif - -/* KeywordStringCheck.proto */ -static int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); - -/* RaiseException.proto */ -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); - -/* RaiseNoneIterError.proto */ -static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void); - -/* pyfrozenset_new.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyFrozenSet_New(PyObject* it); - -/* PySetContains.proto */ -static CYTHON_INLINE int __Pyx_PySet_ContainsTF(PyObject* key, PyObject* set, int eq); - -/* IncludeStringH.proto */ -#include <string.h> - -/* BytesEquals.proto */ -static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); - -/* UnicodeEquals.proto */ -static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals); - -/* StrEquals.proto */ -#if PY_MAJOR_VERSION >= 3 -#define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals -#else -#define __Pyx_PyString_Equals __Pyx_PyBytes_Equals -#endif - -/* PyDictContains.proto */ -static CYTHON_INLINE int __Pyx_PyDict_ContainsTF(PyObject* item, PyObject* dict, int eq) { - int result = PyDict_Contains(dict, item); - return unlikely(result < 0) ? result : (result == (eq == Py_EQ)); -} - -/* PySequenceContains.proto */ -static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) { - int result = PySequence_Contains(seq, item); - return unlikely(result < 0) ? result : (result == (eq == Py_EQ)); -} - -/* GetItemInt.proto */ -#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ - (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ - __Pyx_GetItemInt_Generic(o, to_py_func(i)))) -#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ - (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, - int wraparound, int boundscheck); -#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ - (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, - int wraparound, int boundscheck); -static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, - int is_list, int wraparound, int boundscheck); - -/* ObjectGetItem.proto */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key); -#else -#define __Pyx_PyObject_GetItem(obj, key) PyObject_GetItem(obj, key) -#endif - -/* HasAttr.proto */ -static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *); - -/* SliceTupleAndList.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyList_GetSlice(PyObject* src, Py_ssize_t start, Py_ssize_t stop); -static CYTHON_INLINE PyObject* __Pyx_PyTuple_GetSlice(PyObject* src, Py_ssize_t start, Py_ssize_t stop); -#else -#define __Pyx_PyList_GetSlice(seq, start, stop) PySequence_GetSlice(seq, start, stop) -#define __Pyx_PyTuple_GetSlice(seq, start, stop) PySequence_GetSlice(seq, start, stop) -#endif - -/* PyObject_GenericGetAttrNoDict.proto */ -#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr -#endif - -/* SetVTable.proto */ -static int __Pyx_SetVtable(PyObject *dict, void *vtable); - -/* GetVTable.proto */ -static void* __Pyx_GetVtable(PyObject *dict); - -/* Import.proto */ -static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); - -/* ImportFrom.proto */ -static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); - -/* FetchCommonType.proto */ -static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); - -/* CythonFunction.proto */ -#define __Pyx_CyFunction_USED 1 -#define __Pyx_CYFUNCTION_STATICMETHOD 0x01 -#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 -#define __Pyx_CYFUNCTION_CCLASS 0x04 -#define __Pyx_CyFunction_GetClosure(f)\ - (((__pyx_CyFunctionObject *) (f))->func_closure) -#define __Pyx_CyFunction_GetClassObj(f)\ - (((__pyx_CyFunctionObject *) (f))->func_classobj) -#define __Pyx_CyFunction_Defaults(type, f)\ - ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) -#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ - ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) -typedef struct { - PyCFunctionObject func; -#if PY_VERSION_HEX < 0x030500A0 - PyObject *func_weakreflist; -#endif - PyObject *func_dict; - PyObject *func_name; - PyObject *func_qualname; - PyObject *func_doc; - PyObject *func_globals; - PyObject *func_code; - PyObject *func_closure; - PyObject *func_classobj; - void *defaults; - int defaults_pyobjects; - int flags; - PyObject *defaults_tuple; - PyObject *defaults_kwdict; - PyObject *(*defaults_getter)(PyObject *); - PyObject *func_annotations; -} __pyx_CyFunctionObject; -static PyTypeObject *__pyx_CyFunctionType = 0; -#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, globals, code)\ - __Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, globals, code) -static PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml, - int flags, PyObject* qualname, - PyObject *self, - PyObject *module, PyObject *globals, - PyObject* code); -static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, - size_t size, - int pyobjects); -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, - PyObject *tuple); -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, - PyObject *dict); -static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, - PyObject *dict); -static int __pyx_CyFunction_init(void); - -/* PyObjectSetAttrStr.proto */ -#if CYTHON_USE_TYPE_SLOTS -#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o, n, NULL) -static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value); -#else -#define __Pyx_PyObject_DelAttrStr(o,n) PyObject_DelAttr(o,n) -#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v) -#endif - -/* GetModuleGlobalName.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name); - -/* Globals.proto */ -static PyObject* __Pyx_Globals(void); - -/* CLineInTraceback.proto */ -#ifdef CYTHON_CLINE_IN_TRACEBACK -#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) -#else -static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); -#endif - -/* CodeObjectCache.proto */ -typedef struct { - PyCodeObject* code_object; - int code_line; -} __Pyx_CodeObjectCacheEntry; -struct __Pyx_CodeObjectCache { - int count; - int max_count; - __Pyx_CodeObjectCacheEntry* entries; -}; -static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; -static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); -static PyCodeObject *__pyx_find_code_object(int code_line); -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); - -/* AddTraceback.proto */ -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename); - -/* CIntToPy.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); - -/* CIntFromPy.proto */ -static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); - -/* CIntFromPy.proto */ -static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); - -/* FastTypeChecks.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); -#else -#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) -#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) -#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) -#endif -#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) - -/* CheckBinaryVersion.proto */ -static int __Pyx_check_binary_version(void); - -/* VoidPtrExport.proto */ -static int __Pyx_ExportVoidPtr(PyObject *name, void *p, const char *sig); - -/* FunctionExport.proto */ -static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig); - -/* PyIdentifierFromString.proto */ -#if !defined(__Pyx_PyIdentifier_FromString) -#if PY_MAJOR_VERSION < 3 - #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s) -#else - #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s) -#endif -#endif - -/* ModuleImport.proto */ -static PyObject *__Pyx_ImportModule(const char *name); - -/* TypeImport.proto */ -static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict); - -/* VoidPtrImport.proto */ -static int __Pyx_ImportVoidPtr(PyObject *module, const char *name, void **p, const char *sig); - -/* FunctionImport.proto */ -static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig); - -/* InitStrings.proto */ -static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); - -static struct __pyx_obj_6gevent_6_local_local *__pyx_f_6gevent_6_local_5local___copy__(struct __pyx_obj_6gevent_6_local_local *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ - -/* Module declarations from 'cython' */ - -/* Module declarations from 'weakref' */ - -/* Module declarations from 'gevent.__ident' */ -static PyTypeObject *__pyx_ptype_6gevent_7__ident_ref = 0; -static PyTypeObject *__pyx_ptype_6gevent_7__ident_ValuedWeakRef = 0; -static PyTypeObject *__pyx_ptype_6gevent_7__ident_IdentRegistry = 0; -static PyObject **__pyx_vp_6gevent_7__ident_heappop = 0; -#define __pyx_v_6gevent_7__ident_heappop (*__pyx_vp_6gevent_7__ident_heappop) -static PyObject **__pyx_vp_6gevent_7__ident_heappush = 0; -#define __pyx_v_6gevent_7__ident_heappush (*__pyx_vp_6gevent_7__ident_heappush) -static PyObject **__pyx_vp_6gevent_7__ident_WeakKeyDictionary = 0; -#define __pyx_v_6gevent_7__ident_WeakKeyDictionary (*__pyx_vp_6gevent_7__ident_WeakKeyDictionary) - -/* Module declarations from 'greenlet' */ - -/* Module declarations from 'gevent.__greenlet_primitives' */ -static PyTypeObject *__pyx_ptype_6gevent_21__greenlet_primitives_greenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop = 0; -static PyObject **__pyx_vp_6gevent_21__greenlet_primitives_wref = 0; -#define __pyx_v_6gevent_21__greenlet_primitives_wref (*__pyx_vp_6gevent_21__greenlet_primitives_wref) -static PyObject **__pyx_vp_6gevent_21__greenlet_primitives_BlockingSwitchOutError = 0; -#define __pyx_v_6gevent_21__greenlet_primitives_BlockingSwitchOutError (*__pyx_vp_6gevent_21__greenlet_primitives_BlockingSwitchOutError) -static int *__pyx_vp_6gevent_21__greenlet_primitives__greenlet_imported = 0; -#define __pyx_v_6gevent_21__greenlet_primitives__greenlet_imported (*__pyx_vp_6gevent_21__greenlet_primitives__greenlet_imported) - -/* Module declarations from 'gevent.__hub_local' */ -static PyObject **__pyx_vp_6gevent_11__hub_local__threadlocal = 0; -#define __pyx_v_6gevent_11__hub_local__threadlocal (*__pyx_vp_6gevent_11__hub_local__threadlocal) -static struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *(*__pyx_f_6gevent_11__hub_local_get_hub_noargs)(int __pyx_skip_dispatch); /*proto*/ - -/* Module declarations from 'gevent.__waiter' */ -static PyTypeObject *__pyx_ptype_6gevent_8__waiter_greenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_8__waiter_Waiter = 0; -static PyTypeObject *__pyx_ptype_6gevent_8__waiter_MultipleWaiter = 0; -static PyObject **__pyx_vp_6gevent_8__waiter_sys = 0; -#define __pyx_v_6gevent_8__waiter_sys (*__pyx_vp_6gevent_8__waiter_sys) -static PyObject **__pyx_vp_6gevent_8__waiter_ConcurrentObjectUseError = 0; -#define __pyx_v_6gevent_8__waiter_ConcurrentObjectUseError (*__pyx_vp_6gevent_8__waiter_ConcurrentObjectUseError) -static int *__pyx_vp_6gevent_8__waiter__greenlet_imported = 0; -#define __pyx_v_6gevent_8__waiter__greenlet_imported (*__pyx_vp_6gevent_8__waiter__greenlet_imported) -static PyObject **__pyx_vp_6gevent_8__waiter__NONE = 0; -#define __pyx_v_6gevent_8__waiter__NONE (*__pyx_vp_6gevent_8__waiter__NONE) - -/* Module declarations from 'types' */ - -/* Module declarations from 'gevent._greenlet' */ -static PyTypeObject *__pyx_ptype_6gevent_9_greenlet_greenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_9_greenlet_CodeType = 0; -static PyTypeObject *__pyx_ptype_6gevent_9_greenlet_FrameType = 0; -static PyTypeObject *__pyx_ptype_6gevent_9_greenlet_SpawnedLink = 0; -static PyTypeObject *__pyx_ptype_6gevent_9_greenlet_SuccessSpawnedLink = 0; -static PyTypeObject *__pyx_ptype_6gevent_9_greenlet_FailureSpawnedLink = 0; -static PyTypeObject *__pyx_ptype_6gevent_9_greenlet__Frame = 0; -static PyTypeObject *__pyx_ptype_6gevent_9_greenlet_Greenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_9_greenlet__dummy_event = 0; -static int *__pyx_vp_6gevent_9_greenlet__PYPY = 0; -#define __pyx_v_6gevent_9_greenlet__PYPY (*__pyx_vp_6gevent_9_greenlet__PYPY) -static PyObject **__pyx_vp_6gevent_9_greenlet_sys_getframe = 0; -#define __pyx_v_6gevent_9_greenlet_sys_getframe (*__pyx_vp_6gevent_9_greenlet_sys_getframe) -static PyObject **__pyx_vp_6gevent_9_greenlet_sys_exc_info = 0; -#define __pyx_v_6gevent_9_greenlet_sys_exc_info (*__pyx_vp_6gevent_9_greenlet_sys_exc_info) -static PyObject **__pyx_vp_6gevent_9_greenlet_Timeout = 0; -#define __pyx_v_6gevent_9_greenlet_Timeout (*__pyx_vp_6gevent_9_greenlet_Timeout) -static PyObject **__pyx_vp_6gevent_9_greenlet_GreenletExit = 0; -#define __pyx_v_6gevent_9_greenlet_GreenletExit (*__pyx_vp_6gevent_9_greenlet_GreenletExit) -static PyObject **__pyx_vp_6gevent_9_greenlet_InvalidSwitchError = 0; -#define __pyx_v_6gevent_9_greenlet_InvalidSwitchError (*__pyx_vp_6gevent_9_greenlet_InvalidSwitchError) -static int *__pyx_vp_6gevent_9_greenlet__greenlet_imported = 0; -#define __pyx_v_6gevent_9_greenlet__greenlet_imported (*__pyx_vp_6gevent_9_greenlet__greenlet_imported) -static PyObject **__pyx_vp_6gevent_9_greenlet__greenlet__init__ = 0; -#define __pyx_v_6gevent_9_greenlet__greenlet__init__ (*__pyx_vp_6gevent_9_greenlet__greenlet__init__) -static PyObject **__pyx_vp_6gevent_9_greenlet__threadlocal = 0; -#define __pyx_v_6gevent_9_greenlet__threadlocal (*__pyx_vp_6gevent_9_greenlet__threadlocal) -static PyObject **__pyx_vp_6gevent_9_greenlet_get_hub_class = 0; -#define __pyx_v_6gevent_9_greenlet_get_hub_class (*__pyx_vp_6gevent_9_greenlet_get_hub_class) -static PyObject **__pyx_vp_6gevent_9_greenlet_wref = 0; -#define __pyx_v_6gevent_9_greenlet_wref (*__pyx_vp_6gevent_9_greenlet_wref) -static PyObject **__pyx_vp_6gevent_9_greenlet_dump_traceback = 0; -#define __pyx_v_6gevent_9_greenlet_dump_traceback (*__pyx_vp_6gevent_9_greenlet_dump_traceback) -static PyObject **__pyx_vp_6gevent_9_greenlet_load_traceback = 0; -#define __pyx_v_6gevent_9_greenlet_load_traceback (*__pyx_vp_6gevent_9_greenlet_load_traceback) -static PyObject **__pyx_vp_6gevent_9_greenlet_wait = 0; -#define __pyx_v_6gevent_9_greenlet_wait (*__pyx_vp_6gevent_9_greenlet_wait) -static PyObject **__pyx_vp_6gevent_9_greenlet_iwait = 0; -#define __pyx_v_6gevent_9_greenlet_iwait (*__pyx_vp_6gevent_9_greenlet_iwait) -static PyObject **__pyx_vp_6gevent_9_greenlet_reraise = 0; -#define __pyx_v_6gevent_9_greenlet_reraise (*__pyx_vp_6gevent_9_greenlet_reraise) -static PyObject **__pyx_vp_6gevent_9_greenlet_GEVENT_CONFIG = 0; -#define __pyx_v_6gevent_9_greenlet_GEVENT_CONFIG (*__pyx_vp_6gevent_9_greenlet_GEVENT_CONFIG) -static struct __pyx_obj_6gevent_9_greenlet__dummy_event **__pyx_vp_6gevent_9_greenlet__cancelled_start_event = 0; -#define __pyx_v_6gevent_9_greenlet__cancelled_start_event (*__pyx_vp_6gevent_9_greenlet__cancelled_start_event) -static struct __pyx_obj_6gevent_9_greenlet__dummy_event **__pyx_vp_6gevent_9_greenlet__start_completed_event = 0; -#define __pyx_v_6gevent_9_greenlet__start_completed_event (*__pyx_vp_6gevent_9_greenlet__start_completed_event) - -/* Module declarations from 'gevent._local' */ -static PyTypeObject *__pyx_ptype_6gevent_6_local_greenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_6_local__wrefdict = 0; -static PyTypeObject *__pyx_ptype_6gevent_6_local__greenlet_deleted = 0; -static PyTypeObject *__pyx_ptype_6gevent_6_local__local_deleted = 0; -static PyTypeObject *__pyx_ptype_6gevent_6_local__localimpl = 0; -static PyTypeObject *__pyx_ptype_6gevent_6_local__localimpl_dict_entry = 0; -static PyTypeObject *__pyx_ptype_6gevent_6_local_local = 0; -static int __pyx_v_6gevent_6_local__PYPY; -static PyObject *__pyx_v_6gevent_6_local_ref = 0; -static PyObject *__pyx_v_6gevent_6_local_copy = 0; -static PyObject *__pyx_v_6gevent_6_local__marker = 0; -static PyObject *__pyx_v_6gevent_6_local_key_prefix = 0; -static int __pyx_v_6gevent_6_local__greenlet_imported; -static PyObject *__pyx_v_6gevent_6_local__local_attrs = 0; -static CYTHON_INLINE PyGreenlet *__pyx_f_6gevent_6_local_getcurrent(void); /*proto*/ -static CYTHON_INLINE void __pyx_f_6gevent_6_local_greenlet_init(void); /*proto*/ -static void __pyx_f_6gevent_6_local__init(void); /*proto*/ -static PyObject *__pyx_f_6gevent_6_local__localimpl_create_dict(struct __pyx_obj_6gevent_6_local__localimpl *, PyGreenlet *, PyObject *); /*proto*/ -static CYTHON_INLINE PyObject *__pyx_f_6gevent_6_local__local_get_dict(struct __pyx_obj_6gevent_6_local_local *); /*proto*/ -static PyObject *__pyx_f_6gevent_6_local__local__copy_dict_from(struct __pyx_obj_6gevent_6_local_local *, struct __pyx_obj_6gevent_6_local__localimpl *, PyObject *); /*proto*/ -static PyObject *__pyx_f_6gevent_6_local__local_find_descriptors(struct __pyx_obj_6gevent_6_local_local *); /*proto*/ -static PyObject *__pyx_f_6gevent_6_local_all_local_dicts_for_greenlet(PyGreenlet *, int __pyx_skip_dispatch); /*proto*/ -#define __Pyx_MODULE_NAME "gevent._local" -extern int __pyx_module_is_main_gevent___local; -int __pyx_module_is_main_gevent___local = 0; - -/* Implementation of 'gevent._local' */ -static PyObject *__pyx_builtin___import__; -static PyObject *__pyx_builtin_object; -static PyObject *__pyx_builtin_TypeError; -static PyObject *__pyx_builtin_classmethod; -static PyObject *__pyx_builtin_id; -static PyObject *__pyx_builtin_AttributeError; -static PyObject *__pyx_builtin_KeyError; -static PyObject *__pyx_builtin_super; -static const char __pyx_k_id[] = "id"; -static const char __pyx_k_kw[] = "kw"; -static const char __pyx_k_PY2[] = "PY2"; -static const char __pyx_k_all[] = "__all__"; -static const char __pyx_k_cls[] = "cls"; -static const char __pyx_k_get[] = "__get__"; -static const char __pyx_k_idt[] = "idt"; -static const char __pyx_k_key[] = "key"; -static const char __pyx_k_mro[] = "mro"; -static const char __pyx_k_new[] = "__new__"; -static const char __pyx_k_pop[] = "pop"; -static const char __pyx_k_ref[] = "ref"; -static const char __pyx_k_set[] = "__set__"; -static const char __pyx_k_None[] = "None"; -static const char __pyx_k_PYPY[] = "_PYPY"; -static const char __pyx_k_args[] = "args"; -static const char __pyx_k_copy[] = "__copy__"; -static const char __pyx_k_dict[] = "__dict__"; -static const char __pyx_k_init[] = "__init__"; -static const char __pyx_k_main[] = "__main__"; -static const char __pyx_k_name[] = "__name__"; -static const char __pyx_k_self[] = "self"; -static const char __pyx_k_test[] = "__test__"; -static const char __pyx_k_cinit[] = "__cinit__"; -static const char __pyx_k_class[] = "__class__"; -static const char __pyx_k_dicts[] = "dicts"; -static const char __pyx_k_get_2[] = "get"; -static const char __pyx_k_items[] = "items"; -static const char __pyx_k_local[] = "local"; -static const char __pyx_k_slots[] = "__slots__"; -static const char __pyx_k_super[] = "super"; -static const char __pyx_k_PYPY_2[] = "PYPY"; -static const char __pyx_k_copy_2[] = "copy"; -static const char __pyx_k_delete[] = "__delete__"; -static const char __pyx_k_import[] = "__import__"; -static const char __pyx_k_kwargs[] = "kwargs"; -static const char __pyx_k_lambda[] = "<lambda>"; -static const char __pyx_k_marker[] = "_marker"; -static const char __pyx_k_object[] = "object"; -static const char __pyx_k_unlink[] = "unlink"; -static const char __pyx_k_unused[] = "_unused"; -static const char __pyx_k_getattr[] = "__getattr__"; -static const char __pyx_k_rawlink[] = "rawlink"; -static const char __pyx_k_setattr[] = "__setattr__"; -static const char __pyx_k_weakref[] = "weakref"; -static const char __pyx_k_wrdicts[] = "wrdicts"; -static const char __pyx_k_KeyError[] = "KeyError"; -static const char __pyx_k_greenlet[] = "greenlet"; -static const char __pyx_k_id_local[] = "id_local"; -static const char __pyx_k_pyx_capi[] = "__pyx_capi__"; -static const char __pyx_k_wrthread[] = "wrthread"; -static const char __pyx_k_TypeError[] = "TypeError"; -static const char __pyx_k_localargs[] = "localargs"; -static const char __pyx_k_localdict[] = "localdict"; -static const char __pyx_k_weakref_2[] = "__weakref__"; -static const char __pyx_k_getcurrent[] = "getcurrent"; -static const char __pyx_k_key_prefix[] = "key_prefix"; -static const char __pyx_k_local_type[] = "local_type"; -static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__"; -static const char __pyx_k_wrgreenlet[] = "wrgreenlet"; -static const char __pyx_k_classmethod[] = "classmethod"; -static const char __pyx_k_local__impl[] = "_local__impl"; -static const char __pyx_k_local_attrs[] = "_local_attrs"; -static const char __pyx_k_localkwargs[] = "localkwargs"; -static const char __pyx_k_localtypeid[] = "localtypeid"; -static const char __pyx_k_getattribute[] = "__getattribute__"; -static const char __pyx_k_gevent__util[] = "gevent._util"; -static const char __pyx_k_local___copy[] = "local.__copy__"; -static const char __pyx_k_local_type_2[] = "_local_type"; -static const char __pyx_k_gevent__local[] = "gevent._local"; -static const char __pyx_k_greenlet_init[] = "greenlet_init"; -static const char __pyx_k_AttributeError[] = "AttributeError"; -static const char __pyx_k_gevent__compat[] = "gevent._compat"; -static const char __pyx_k_import_c_accel[] = "import_c_accel"; -static const char __pyx_k_local_type_vars[] = "_local_type_vars"; -static const char __pyx_k_greenlet_deleted[] = "greenlet_deleted"; -static const char __pyx_k_greenlet_imported[] = "_greenlet_imported"; -static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; -static const char __pyx_k_src_gevent_local_py[] = "src\\gevent\\local.py"; -static const char __pyx_k_gevent_local_localimpl[] = "_gevent_local_localimpl_"; -static const char __pyx_k_local_type_del_descriptors[] = "_local_type_del_descriptors"; -static const char __pyx_k_local_type_get_descriptors[] = "_local_type_get_descriptors"; -static const char __pyx_k_local_type_set_descriptors[] = "_local_type_set_descriptors"; -static const char __pyx_k_r_object_has_no_attribute_s[] = "%r object has no attribute '%s'"; -static const char __pyx_k_all_local_dicts_for_greenlet[] = "all_local_dicts_for_greenlet"; -static const char __pyx_k_r_object_attribute___dict___is[] = "%r object attribute '__dict__' is read-only"; -static const char __pyx_k_Greenlet_local_objects_This_mod[] = "\nGreenlet-local objects.\n\nThis module is based on `_threading_local.py`__ from the standard\nlibrary of Python 3.4.\n\n__ https://github.com/python/cpython/blob/3.4/Lib/_threading_local.py\n\nGreenlet-local objects support the management of greenlet-local data.\nIf you have data that you want to be local to a greenlet, simply create\na greenlet-local object and use its attributes:\n\n >>> mydata = local()\n >>> mydata.number = 42\n >>> mydata.number\n 42\n\nYou can also access the local-object's dictionary:\n\n >>> mydata.__dict__\n {'number': 42}\n >>> mydata.__dict__.setdefault('widgets', [])\n []\n >>> mydata.widgets\n []\n\nWhat's important about greenlet-local objects is that their data are\nlocal to a greenlet. If we access the data in a different greenlet:\n\n >>> log = []\n >>> def f():\n ... items = list(mydata.__dict__.items())\n ... items.sort()\n ... log.append(items)\n ... mydata.number = 11\n ... log.append(mydata.number)\n >>> greenlet = gevent.spawn(f)\n >>> greenlet.join()\n >>> log\n [[], 11]\n\nwe get different data. Furthermore, changes made in the other greenlet\ndon't affect data seen in this greenlet:\n\n >>> mydata.number\n 42\n\nOf course, values you get from a local object, including a __dict__\nattribute, are for whatever greenlet was current at the time the\nattribute was read. For that reason, you generally don't want to save\nthese values across greenlets, as they apply only to the greenlet they\ncame from.\n\nYou can create custom local objects by subclassing the local class:\n\n >>> class MyLocal(local):\n ... number = 2\n ... initialized = False\n ... def __init__(self, **kw):\n ... if self.initialized:\n ... raise SystemError('__init__ called too many times')\n ... self.initialized = True\n ... self.__dict__.update(kw)\n ... def squared(self):\n ... return self.number ** 2\n\nThis can be useful to support default val""ues, methods and\ninitialization. Note that if you define an __init__ method, it will be\ncalled each time the local object is used in a separate greenlet. This\nis necessary to initialize each greenlet's dictionary.\n\nNow if we create a local object:\n\n >>> mydata = MyLocal(color='red')\n\nNow we have a default number:\n\n >>> mydata.number\n 2\n\nan initial color:\n\n >>> mydata.color\n 'red'\n >>> del mydata.color\n\nAnd a method that operates on the data:\n\n >>> mydata.squared()\n 4\n\nAs before, we can access the data in a separate greenlet:\n\n >>> log = []\n >>> greenlet = gevent.spawn(f)\n >>> greenlet.join()\n >>> log\n [[('color', 'red'), ('initialized', True)], 11]\n\nwithout affecting this greenlet's data:\n\n >>> mydata.number\n 2\n >>> mydata.color\n Traceback (most recent call last):\n ...\n AttributeError: 'MyLocal' object has no attribute 'color'\n\nNote that subclasses can define slots, but they are not greenlet\nlocal. They are shared across greenlets::\n\n >>> class MyLocal(local):\n ... __slots__ = 'number'\n\n >>> mydata = MyLocal()\n >>> mydata.number = 42\n >>> mydata.color = 'red'\n\nSo, the separate greenlet:\n\n >>> greenlet = gevent.spawn(f)\n >>> greenlet.join()\n\naffects what we see:\n\n >>> mydata.number\n 11\n\n>>> del mydata\n\n.. versionchanged:: 1.1a2\n Update the implementation to match Python 3.4 instead of Python 2.5.\n This results in locals being eligible for garbage collection as soon\n as their greenlet exits.\n\n.. versionchanged:: 1.2.3\n Use a weak-reference to clear the greenlet link we establish in case\n the local object dies before the greenlet does.\n\n.. versionchanged:: 1.3a1\n Implement the methods for attribute access directly, handling\n descriptors directly here. This allows removing the use of a lock\n and facilitates greatly improved performance.\n\n.. versionchanged:: 1.3a1\n The ``__init__`` method of subclasses of ``local`` is no longer\n called wit""h a lock held. CPython does not use such a lock in its\n native implementation. This could potentially show as a difference\n if code that uses multiple dependent attributes in ``__slots__``\n (which are shared across all greenlets) switches during ``__init__``.\n\n"; -static const char __pyx_k_local_type_set_or_del_descripto[] = "_local_type_set_or_del_descriptors"; -static const char __pyx_k_Initialization_arguments_are_not[] = "Initialization arguments are not supported"; -static PyObject *__pyx_n_s_AttributeError; -static PyObject *__pyx_kp_s_Initialization_arguments_are_not; -static PyObject *__pyx_n_s_KeyError; -static PyObject *__pyx_n_s_None; -static PyObject *__pyx_n_s_PY2; -static PyObject *__pyx_n_s_PYPY; -static PyObject *__pyx_n_s_PYPY_2; -static PyObject *__pyx_n_s_TypeError; -static PyObject *__pyx_n_s_all; -static PyObject *__pyx_n_s_all_local_dicts_for_greenlet; -static PyObject *__pyx_n_s_args; -static PyObject *__pyx_n_s_cinit; -static PyObject *__pyx_n_s_class; -static PyObject *__pyx_n_s_classmethod; -static PyObject *__pyx_n_s_cline_in_traceback; -static PyObject *__pyx_n_s_cls; -static PyObject *__pyx_n_s_copy; -static PyObject *__pyx_n_s_copy_2; -static PyObject *__pyx_n_s_delete; -static PyObject *__pyx_n_s_dict; -static PyObject *__pyx_n_s_dicts; -static PyObject *__pyx_n_s_get; -static PyObject *__pyx_n_s_get_2; -static PyObject *__pyx_n_s_getattr; -static PyObject *__pyx_n_s_getattribute; -static PyObject *__pyx_n_s_getcurrent; -static PyObject *__pyx_n_s_gevent__compat; -static PyObject *__pyx_n_s_gevent__local; -static PyObject *__pyx_n_s_gevent__util; -static PyObject *__pyx_n_s_gevent_local_localimpl; -static PyObject *__pyx_n_s_greenlet; -static PyObject *__pyx_n_s_greenlet_deleted; -static PyObject *__pyx_n_s_greenlet_imported; -static PyObject *__pyx_n_s_greenlet_init; -static PyObject *__pyx_n_s_id; -static PyObject *__pyx_n_s_id_local; -static PyObject *__pyx_n_s_idt; -static PyObject *__pyx_n_s_import; -static PyObject *__pyx_n_s_import_c_accel; -static PyObject *__pyx_n_s_init; -static PyObject *__pyx_n_s_items; -static PyObject *__pyx_n_s_key; -static PyObject *__pyx_n_s_key_prefix; -static PyObject *__pyx_n_s_kw; -static PyObject *__pyx_n_s_kwargs; -static PyObject *__pyx_n_s_lambda; -static PyObject *__pyx_n_s_local; -static PyObject *__pyx_n_s_local___copy; -static PyObject *__pyx_n_s_local__impl; -static PyObject *__pyx_n_s_local_attrs; -static PyObject *__pyx_n_s_local_type; -static PyObject *__pyx_n_s_local_type_2; -static PyObject *__pyx_n_s_local_type_del_descriptors; -static PyObject *__pyx_n_s_local_type_get_descriptors; -static PyObject *__pyx_n_s_local_type_set_descriptors; -static PyObject *__pyx_n_s_local_type_set_or_del_descripto; -static PyObject *__pyx_n_s_local_type_vars; -static PyObject *__pyx_n_s_localargs; -static PyObject *__pyx_n_s_localdict; -static PyObject *__pyx_n_s_localkwargs; -static PyObject *__pyx_n_s_localtypeid; -static PyObject *__pyx_n_s_main; -static PyObject *__pyx_n_s_marker; -static PyObject *__pyx_n_s_mro; -static PyObject *__pyx_n_s_name; -static PyObject *__pyx_n_s_new; -static PyObject *__pyx_n_s_object; -static PyObject *__pyx_n_s_pop; -static PyObject *__pyx_n_s_pyx_capi; -static PyObject *__pyx_n_s_pyx_vtable; -static PyObject *__pyx_kp_s_r_object_attribute___dict___is; -static PyObject *__pyx_kp_s_r_object_has_no_attribute_s; -static PyObject *__pyx_n_s_rawlink; -static PyObject *__pyx_n_s_ref; -static PyObject *__pyx_n_s_self; -static PyObject *__pyx_n_s_set; -static PyObject *__pyx_n_s_setattr; -static PyObject *__pyx_n_s_slots; -static PyObject *__pyx_kp_s_src_gevent_local_py; -static PyObject *__pyx_n_s_super; -static PyObject *__pyx_n_s_test; -static PyObject *__pyx_n_s_unlink; -static PyObject *__pyx_n_s_unused; -static PyObject *__pyx_n_s_weakref; -static PyObject *__pyx_n_s_weakref_2; -static PyObject *__pyx_n_s_wrdicts; -static PyObject *__pyx_n_s_wrgreenlet; -static PyObject *__pyx_n_s_wrthread; -static PyObject *__pyx_lambda_funcdef_6gevent_6_local_lambda(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_local_all_local_dicts_for_greenlet(CYTHON_UNUSED PyObject *__pyx_self, PyGreenlet *__pyx_v_greenlet); /* proto */ -static int __pyx_pf_6gevent_6_local_17_greenlet_deleted___init__(struct __pyx_obj_6gevent_6_local__greenlet_deleted *__pyx_v_self, PyObject *__pyx_v_idt, PyObject *__pyx_v_wrdicts); /* proto */ -static PyObject *__pyx_pf_6gevent_6_local_17_greenlet_deleted_2__call__(struct __pyx_obj_6gevent_6_local__greenlet_deleted *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v__unused); /* proto */ -static int __pyx_pf_6gevent_6_local_14_local_deleted___init__(struct __pyx_obj_6gevent_6_local__local_deleted *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_wrthread, PyObject *__pyx_v_greenlet_deleted); /* proto */ -static PyObject *__pyx_pf_6gevent_6_local_14_local_deleted_2__call__(struct __pyx_obj_6gevent_6_local__local_deleted *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v__unused); /* proto */ -static int __pyx_pf_6gevent_6_local_10_localimpl___init__(struct __pyx_obj_6gevent_6_local__localimpl *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs, PyObject *__pyx_v_local_type, PyObject *__pyx_v_id_local); /* proto */ -static int __pyx_pf_6gevent_6_local_21_localimpl_dict_entry___init__(struct __pyx_obj_6gevent_6_local__localimpl_dict_entry *__pyx_v_self, PyObject *__pyx_v_wrgreenlet, PyObject *__pyx_v_localdict); /* proto */ -static int __pyx_pf_6gevent_6_local_5local___cinit__(struct __pyx_obj_6gevent_6_local_local *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kw); /* proto */ -static PyObject *__pyx_pf_6gevent_6_local_5local_2__getattribute__(struct __pyx_obj_6gevent_6_local_local *__pyx_v_self, PyObject *__pyx_v_name); /* proto */ -static int __pyx_pf_6gevent_6_local_5local_4__setattr__(struct __pyx_obj_6gevent_6_local_local *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value); /* proto */ -static int __pyx_pf_6gevent_6_local_5local_6__delattr__(struct __pyx_obj_6gevent_6_local_local *__pyx_v_self, PyObject *__pyx_v_name); /* proto */ -static PyObject *__pyx_pf_6gevent_6_local_5local_8__copy__(struct __pyx_obj_6gevent_6_local_local *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_local_2__new__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_cls, PyObject *__pyx_v_args, PyObject *__pyx_v_kw); /* proto */ -static PyObject *__pyx_tp_new_6gevent_6_local__wrefdict(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_6_local__greenlet_deleted(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_6_local__local_deleted(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_6_local__localimpl(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_6_local__localimpl_dict_entry(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_6_local_local(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_get = {0, &__pyx_n_s_get_2, 0, 0, 0}; -static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_items = {0, &__pyx_n_s_items, 0, 0, 0}; -static PyObject *__pyx_tuple_; -static PyObject *__pyx_tuple__2; -static PyObject *__pyx_tuple__4; -static PyObject *__pyx_tuple__5; -static PyObject *__pyx_tuple__6; -static PyObject *__pyx_tuple__7; -static PyObject *__pyx_tuple__8; -static PyObject *__pyx_tuple__10; -static PyObject *__pyx_codeobj__3; -static PyObject *__pyx_codeobj__9; -static PyObject *__pyx_codeobj__11; -/* Late includes */ - -/* "src/gevent/local.py":161 - * - * locals()['getcurrent'] = __import__('greenlet').getcurrent - * locals()['greenlet_init'] = lambda: None # <<<<<<<<<<<<<< - * - * __all__ = [ - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_local_4lambda(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyMethodDef __pyx_mdef_6gevent_6_local_4lambda = {"lambda", (PyCFunction)__pyx_pw_6gevent_6_local_4lambda, METH_NOARGS, 0}; -static PyObject *__pyx_pw_6gevent_6_local_4lambda(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("lambda (wrapper)", 0); - __pyx_r = __pyx_lambda_funcdef_6gevent_6_local_lambda(__pyx_self); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_lambda_funcdef_6gevent_6_local_lambda(CYTHON_UNUSED PyObject *__pyx_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("lambda", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/local.py":179 - * # That final tuple is actually a localimpl_dict_entry object. - * - * def all_local_dicts_for_greenlet(greenlet): # <<<<<<<<<<<<<< - * """ - * Internal debug helper for getting the local values associated - */ - -static PyObject *__pyx_pw_6gevent_6_local_1all_local_dicts_for_greenlet(PyObject *__pyx_self, PyObject *__pyx_v_greenlet); /*proto*/ -static PyObject *__pyx_f_6gevent_6_local_all_local_dicts_for_greenlet(PyGreenlet *__pyx_v_greenlet, CYTHON_UNUSED int __pyx_skip_dispatch) { - PyObject *__pyx_v_result = 0; - struct __pyx_obj_6gevent_6_local__localimpl *__pyx_v_local_impl = 0; - struct __pyx_obj_6gevent_6_local__localimpl_dict_entry *__pyx_v_entry = 0; - PyObject *__pyx_v_k = 0; - PyObject *__pyx_v_greenlet_dict = 0; - PyObject *__pyx_v_id_greenlet = NULL; - PyObject *__pyx_v_v = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - Py_ssize_t __pyx_t_3; - PyObject *(*__pyx_t_4)(PyObject *); - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *(*__pyx_t_8)(PyObject *); - int __pyx_t_9; - int __pyx_t_10; - int __pyx_t_11; - __Pyx_RefNannySetupContext("all_local_dicts_for_greenlet", 0); - - /* "src/gevent/local.py":191 - * """ - * - * result = [] # <<<<<<<<<<<<<< - * id_greenlet = id(greenlet) - * greenlet_dict = greenlet.__dict__ - */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 191, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_result = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/local.py":192 - * - * result = [] - * id_greenlet = id(greenlet) # <<<<<<<<<<<<<< - * greenlet_dict = greenlet.__dict__ - * for k, v in greenlet_dict.items(): - */ - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_greenlet)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 192, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_id_greenlet = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/local.py":193 - * result = [] - * id_greenlet = id(greenlet) - * greenlet_dict = greenlet.__dict__ # <<<<<<<<<<<<<< - * for k, v in greenlet_dict.items(): - * if not k.startswith(key_prefix): - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_greenlet), __pyx_n_s_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 193, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 193, __pyx_L1_error) - __pyx_v_greenlet_dict = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/local.py":194 - * id_greenlet = id(greenlet) - * greenlet_dict = greenlet.__dict__ - * for k, v in greenlet_dict.items(): # <<<<<<<<<<<<<< - * if not k.startswith(key_prefix): - * continue - */ - if (unlikely(__pyx_v_greenlet_dict == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items"); - __PYX_ERR(0, 194, __pyx_L1_error) - } - __pyx_t_1 = __Pyx_PyDict_Items(__pyx_v_greenlet_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 194, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { - __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; - __pyx_t_4 = NULL; - } else { - __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 194, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 194, __pyx_L1_error) - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - for (;;) { - if (likely(!__pyx_t_4)) { - if (likely(PyList_CheckExact(__pyx_t_2))) { - if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 194, __pyx_L1_error) - #else - __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 194, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - #endif - } else { - if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 194, __pyx_L1_error) - #else - __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 194, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - #endif - } - } else { - __pyx_t_1 = __pyx_t_4(__pyx_t_2); - if (unlikely(!__pyx_t_1)) { - PyObject* exc_type = PyErr_Occurred(); - if (exc_type) { - if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 194, __pyx_L1_error) - } - break; - } - __Pyx_GOTREF(__pyx_t_1); - } - if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { - PyObject* sequence = __pyx_t_1; - Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); - if (unlikely(size != 2)) { - if (size > 2) __Pyx_RaiseTooManyValuesError(2); - else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 194, __pyx_L1_error) - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - if (likely(PyTuple_CheckExact(sequence))) { - __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); - __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); - } else { - __pyx_t_5 = PyList_GET_ITEM(sequence, 0); - __pyx_t_6 = PyList_GET_ITEM(sequence, 1); - } - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(__pyx_t_6); - #else - __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 194, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 194, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - #endif - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else { - Py_ssize_t index = -1; - __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 194, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext; - index = 0; __pyx_t_5 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed; - __Pyx_GOTREF(__pyx_t_5); - index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed; - __Pyx_GOTREF(__pyx_t_6); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 194, __pyx_L1_error) - __pyx_t_8 = NULL; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - goto __pyx_L6_unpacking_done; - __pyx_L5_unpacking_failed:; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_8 = NULL; - if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 194, __pyx_L1_error) - __pyx_L6_unpacking_done:; - } - if (!(likely(PyString_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_5)->tp_name), 0))) __PYX_ERR(0, 194, __pyx_L1_error) - __Pyx_XDECREF_SET(__pyx_v_k, ((PyObject*)__pyx_t_5)); - __pyx_t_5 = 0; - __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_6); - __pyx_t_6 = 0; - - /* "src/gevent/local.py":195 - * greenlet_dict = greenlet.__dict__ - * for k, v in greenlet_dict.items(): - * if not k.startswith(key_prefix): # <<<<<<<<<<<<<< - * continue - * local_impl = v() - */ - if (unlikely(__pyx_v_k == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "startswith"); - __PYX_ERR(0, 195, __pyx_L1_error) - } - __pyx_t_9 = __Pyx_PyStr_Tailmatch(__pyx_v_k, __pyx_v_6gevent_6_local_key_prefix, 0, PY_SSIZE_T_MAX, -1); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 195, __pyx_L1_error) - __pyx_t_10 = ((!(__pyx_t_9 != 0)) != 0); - if (__pyx_t_10) { - - /* "src/gevent/local.py":196 - * for k, v in greenlet_dict.items(): - * if not k.startswith(key_prefix): - * continue # <<<<<<<<<<<<<< - * local_impl = v() - * if local_impl is None: - */ - goto __pyx_L3_continue; - - /* "src/gevent/local.py":195 - * greenlet_dict = greenlet.__dict__ - * for k, v in greenlet_dict.items(): - * if not k.startswith(key_prefix): # <<<<<<<<<<<<<< - * continue - * local_impl = v() - */ - } - - /* "src/gevent/local.py":197 - * if not k.startswith(key_prefix): - * continue - * local_impl = v() # <<<<<<<<<<<<<< - * if local_impl is None: - * continue - */ - __Pyx_INCREF(__pyx_v_v); - __pyx_t_6 = __pyx_v_v; __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_6, function); - } - } - if (__pyx_t_5) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 197, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 197, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6gevent_6_local__localimpl))))) __PYX_ERR(0, 197, __pyx_L1_error) - __Pyx_XDECREF_SET(__pyx_v_local_impl, ((struct __pyx_obj_6gevent_6_local__localimpl *)__pyx_t_1)); - __pyx_t_1 = 0; - - /* "src/gevent/local.py":198 - * continue - * local_impl = v() - * if local_impl is None: # <<<<<<<<<<<<<< - * continue - * entry = local_impl.dicts.get(id_greenlet) - */ - __pyx_t_10 = (((PyObject *)__pyx_v_local_impl) == Py_None); - __pyx_t_9 = (__pyx_t_10 != 0); - if (__pyx_t_9) { - - /* "src/gevent/local.py":199 - * local_impl = v() - * if local_impl is None: - * continue # <<<<<<<<<<<<<< - * entry = local_impl.dicts.get(id_greenlet) - * if entry is None: - */ - goto __pyx_L3_continue; - - /* "src/gevent/local.py":198 - * continue - * local_impl = v() - * if local_impl is None: # <<<<<<<<<<<<<< - * continue - * entry = local_impl.dicts.get(id_greenlet) - */ - } - - /* "src/gevent/local.py":200 - * if local_impl is None: - * continue - * entry = local_impl.dicts.get(id_greenlet) # <<<<<<<<<<<<<< - * if entry is None: - * # Not yet used in this greenlet. - */ - if (unlikely(__pyx_v_local_impl->dicts == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get"); - __PYX_ERR(0, 200, __pyx_L1_error) - } - __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_local_impl->dicts, __pyx_v_id_greenlet, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 200, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6gevent_6_local__localimpl_dict_entry))))) __PYX_ERR(0, 200, __pyx_L1_error) - __Pyx_XDECREF_SET(__pyx_v_entry, ((struct __pyx_obj_6gevent_6_local__localimpl_dict_entry *)__pyx_t_1)); - __pyx_t_1 = 0; - - /* "src/gevent/local.py":201 - * continue - * entry = local_impl.dicts.get(id_greenlet) - * if entry is None: # <<<<<<<<<<<<<< - * # Not yet used in this greenlet. - * continue - */ - __pyx_t_9 = (((PyObject *)__pyx_v_entry) == Py_None); - __pyx_t_10 = (__pyx_t_9 != 0); - if (__pyx_t_10) { - - /* "src/gevent/local.py":203 - * if entry is None: - * # Not yet used in this greenlet. - * continue # <<<<<<<<<<<<<< - * assert entry.wrgreenlet() is greenlet - * result.append((local_impl.localtypeid, entry.localdict)) - */ - goto __pyx_L3_continue; - - /* "src/gevent/local.py":201 - * continue - * entry = local_impl.dicts.get(id_greenlet) - * if entry is None: # <<<<<<<<<<<<<< - * # Not yet used in this greenlet. - * continue - */ - } - - /* "src/gevent/local.py":204 - * # Not yet used in this greenlet. - * continue - * assert entry.wrgreenlet() is greenlet # <<<<<<<<<<<<<< - * result.append((local_impl.localtypeid, entry.localdict)) - * - */ - #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(!Py_OptimizeFlag)) { - __Pyx_INCREF(__pyx_v_entry->wrgreenlet); - __pyx_t_6 = __pyx_v_entry->wrgreenlet; __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_6, function); - } - } - if (__pyx_t_5) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 204, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 204, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_10 = (__pyx_t_1 == ((PyObject *)__pyx_v_greenlet)); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!(__pyx_t_10 != 0))) { - PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 204, __pyx_L1_error) - } - } - #endif - - /* "src/gevent/local.py":205 - * continue - * assert entry.wrgreenlet() is greenlet - * result.append((local_impl.localtypeid, entry.localdict)) # <<<<<<<<<<<<<< - * - * return result - */ - __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 205, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_v_local_impl->localtypeid); - __Pyx_GIVEREF(__pyx_v_local_impl->localtypeid); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_local_impl->localtypeid); - __Pyx_INCREF(__pyx_v_entry->localdict); - __Pyx_GIVEREF(__pyx_v_entry->localdict); - PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_entry->localdict); - __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_1); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 205, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/local.py":194 - * id_greenlet = id(greenlet) - * greenlet_dict = greenlet.__dict__ - * for k, v in greenlet_dict.items(): # <<<<<<<<<<<<<< - * if not k.startswith(key_prefix): - * continue - */ - __pyx_L3_continue:; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/local.py":207 - * result.append((local_impl.localtypeid, entry.localdict)) - * - * return result # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_result); - __pyx_r = __pyx_v_result; - goto __pyx_L0; - - /* "src/gevent/local.py":179 - * # That final tuple is actually a localimpl_dict_entry object. - * - * def all_local_dicts_for_greenlet(greenlet): # <<<<<<<<<<<<<< - * """ - * Internal debug helper for getting the local values associated - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("gevent._local.all_local_dicts_for_greenlet", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_result); - __Pyx_XDECREF((PyObject *)__pyx_v_local_impl); - __Pyx_XDECREF((PyObject *)__pyx_v_entry); - __Pyx_XDECREF(__pyx_v_k); - __Pyx_XDECREF(__pyx_v_greenlet_dict); - __Pyx_XDECREF(__pyx_v_id_greenlet); - __Pyx_XDECREF(__pyx_v_v); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_local_1all_local_dicts_for_greenlet(PyObject *__pyx_self, PyObject *__pyx_v_greenlet); /*proto*/ -static char __pyx_doc_6gevent_6_local_all_local_dicts_for_greenlet[] = "all_local_dicts_for_greenlet(greenlet greenlet)\n\n Internal debug helper for getting the local values associated\n with a greenlet. This is subject to change or removal at any time.\n\n :return: A list of ((type, id), {}) pairs, where the first element\n is the type and id of the local object and the second object is its\n instance dictionary, as seen from this greenlet.\n\n .. versionadded:: 1.3a2\n "; -static PyMethodDef __pyx_mdef_6gevent_6_local_1all_local_dicts_for_greenlet = {"all_local_dicts_for_greenlet", (PyCFunction)__pyx_pw_6gevent_6_local_1all_local_dicts_for_greenlet, METH_O, __pyx_doc_6gevent_6_local_all_local_dicts_for_greenlet}; -static PyObject *__pyx_pw_6gevent_6_local_1all_local_dicts_for_greenlet(PyObject *__pyx_self, PyObject *__pyx_v_greenlet) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("all_local_dicts_for_greenlet (wrapper)", 0); - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_greenlet), __pyx_ptype_6gevent_6_local_greenlet, 1, "greenlet", 0))) __PYX_ERR(0, 179, __pyx_L1_error) - __pyx_r = __pyx_pf_6gevent_6_local_all_local_dicts_for_greenlet(__pyx_self, ((PyGreenlet *)__pyx_v_greenlet)); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = NULL; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_local_all_local_dicts_for_greenlet(CYTHON_UNUSED PyObject *__pyx_self, PyGreenlet *__pyx_v_greenlet) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("all_local_dicts_for_greenlet", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_6_local_all_local_dicts_for_greenlet(__pyx_v_greenlet, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 179, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._local.all_local_dicts_for_greenlet", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/local.py":224 - * __slots__ = ('idt', 'wrdicts') - * - * def __init__(self, idt, wrdicts): # <<<<<<<<<<<<<< - * self.idt = idt - * self.wrdicts = wrdicts - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_6_local_17_greenlet_deleted_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_6_local_17_greenlet_deleted_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_idt = 0; - PyObject *__pyx_v_wrdicts = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_idt,&__pyx_n_s_wrdicts,0}; - PyObject* values[2] = {0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_idt)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_wrdicts)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 224, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 224, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - } - __pyx_v_idt = values[0]; - __pyx_v_wrdicts = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 224, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._local._greenlet_deleted.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_6_local_17_greenlet_deleted___init__(((struct __pyx_obj_6gevent_6_local__greenlet_deleted *)__pyx_v_self), __pyx_v_idt, __pyx_v_wrdicts); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_6_local_17_greenlet_deleted___init__(struct __pyx_obj_6gevent_6_local__greenlet_deleted *__pyx_v_self, PyObject *__pyx_v_idt, PyObject *__pyx_v_wrdicts) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__", 0); - - /* "src/gevent/local.py":225 - * - * def __init__(self, idt, wrdicts): - * self.idt = idt # <<<<<<<<<<<<<< - * self.wrdicts = wrdicts - * - */ - __Pyx_INCREF(__pyx_v_idt); - __Pyx_GIVEREF(__pyx_v_idt); - __Pyx_GOTREF(__pyx_v_self->idt); - __Pyx_DECREF(__pyx_v_self->idt); - __pyx_v_self->idt = __pyx_v_idt; - - /* "src/gevent/local.py":226 - * def __init__(self, idt, wrdicts): - * self.idt = idt - * self.wrdicts = wrdicts # <<<<<<<<<<<<<< - * - * def __call__(self, _unused): - */ - __Pyx_INCREF(__pyx_v_wrdicts); - __Pyx_GIVEREF(__pyx_v_wrdicts); - __Pyx_GOTREF(__pyx_v_self->wrdicts); - __Pyx_DECREF(__pyx_v_self->wrdicts); - __pyx_v_self->wrdicts = __pyx_v_wrdicts; - - /* "src/gevent/local.py":224 - * __slots__ = ('idt', 'wrdicts') - * - * def __init__(self, idt, wrdicts): # <<<<<<<<<<<<<< - * self.idt = idt - * self.wrdicts = wrdicts - */ - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/local.py":228 - * self.wrdicts = wrdicts - * - * def __call__(self, _unused): # <<<<<<<<<<<<<< - * dicts = self.wrdicts() - * if dicts: - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_local_17_greenlet_deleted_3__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_6_local_17_greenlet_deleted_3__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - CYTHON_UNUSED PyObject *__pyx_v__unused = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__call__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_unused,0}; - PyObject* values[1] = {0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_unused)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__call__") < 0)) __PYX_ERR(0, 228, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 1) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - } - __pyx_v__unused = values[0]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__call__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 228, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._local._greenlet_deleted.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_6_local_17_greenlet_deleted_2__call__(((struct __pyx_obj_6gevent_6_local__greenlet_deleted *)__pyx_v_self), __pyx_v__unused); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_local_17_greenlet_deleted_2__call__(struct __pyx_obj_6gevent_6_local__greenlet_deleted *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v__unused) { - PyObject *__pyx_v_dicts = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - int __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - __Pyx_RefNannySetupContext("__call__", 0); - - /* "src/gevent/local.py":229 - * - * def __call__(self, _unused): - * dicts = self.wrdicts() # <<<<<<<<<<<<<< - * if dicts: - * dicts.pop(self.idt, None) - */ - __Pyx_INCREF(__pyx_v_self->wrdicts); - __pyx_t_2 = __pyx_v_self->wrdicts; __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 229, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 229, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_dicts = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/local.py":230 - * def __call__(self, _unused): - * dicts = self.wrdicts() - * if dicts: # <<<<<<<<<<<<<< - * dicts.pop(self.idt, None) - * - */ - __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_dicts); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 230, __pyx_L1_error) - if (__pyx_t_4) { - - /* "src/gevent/local.py":231 - * dicts = self.wrdicts() - * if dicts: - * dicts.pop(self.idt, None) # <<<<<<<<<<<<<< - * - * class _local_deleted(object): - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_dicts, __pyx_n_s_pop); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 231, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - __pyx_t_5 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_5 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_self->idt, Py_None}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 231, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_self->idt, Py_None}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 231, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 231, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (__pyx_t_3) { - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL; - } - __Pyx_INCREF(__pyx_v_self->idt); - __Pyx_GIVEREF(__pyx_v_self->idt); - PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_self->idt); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, Py_None); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 231, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/local.py":230 - * def __call__(self, _unused): - * dicts = self.wrdicts() - * if dicts: # <<<<<<<<<<<<<< - * dicts.pop(self.idt, None) - * - */ - } - - /* "src/gevent/local.py":228 - * self.wrdicts = wrdicts - * - * def __call__(self, _unused): # <<<<<<<<<<<<<< - * dicts = self.wrdicts() - * if dicts: - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_AddTraceback("gevent._local._greenlet_deleted.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_dicts); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/local.py":236 - * __slots__ = ('key', 'wrthread', 'greenlet_deleted') - * - * def __init__(self, key, wrthread, greenlet_deleted): # <<<<<<<<<<<<<< - * self.key = key - * self.wrthread = wrthread - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_6_local_14_local_deleted_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_6_local_14_local_deleted_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_key = 0; - PyObject *__pyx_v_wrthread = 0; - PyObject *__pyx_v_greenlet_deleted = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_key,&__pyx_n_s_wrthread,&__pyx_n_s_greenlet_deleted,0}; - PyObject* values[3] = {0,0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_key)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_wrthread)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 1); __PYX_ERR(0, 236, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_greenlet_deleted)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 2); __PYX_ERR(0, 236, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 236, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - } - __pyx_v_key = values[0]; - __pyx_v_wrthread = values[1]; - __pyx_v_greenlet_deleted = values[2]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 236, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._local._local_deleted.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_6_local_14_local_deleted___init__(((struct __pyx_obj_6gevent_6_local__local_deleted *)__pyx_v_self), __pyx_v_key, __pyx_v_wrthread, __pyx_v_greenlet_deleted); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_6_local_14_local_deleted___init__(struct __pyx_obj_6gevent_6_local__local_deleted *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_wrthread, PyObject *__pyx_v_greenlet_deleted) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__init__", 0); - - /* "src/gevent/local.py":237 - * - * def __init__(self, key, wrthread, greenlet_deleted): - * self.key = key # <<<<<<<<<<<<<< - * self.wrthread = wrthread - * self.greenlet_deleted = greenlet_deleted - */ - if (!(likely(PyString_CheckExact(__pyx_v_key))||((__pyx_v_key) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_v_key)->tp_name), 0))) __PYX_ERR(0, 237, __pyx_L1_error) - __pyx_t_1 = __pyx_v_key; - __Pyx_INCREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->key); - __Pyx_DECREF(__pyx_v_self->key); - __pyx_v_self->key = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/local.py":238 - * def __init__(self, key, wrthread, greenlet_deleted): - * self.key = key - * self.wrthread = wrthread # <<<<<<<<<<<<<< - * self.greenlet_deleted = greenlet_deleted - * - */ - __Pyx_INCREF(__pyx_v_wrthread); - __Pyx_GIVEREF(__pyx_v_wrthread); - __Pyx_GOTREF(__pyx_v_self->wrthread); - __Pyx_DECREF(__pyx_v_self->wrthread); - __pyx_v_self->wrthread = __pyx_v_wrthread; - - /* "src/gevent/local.py":239 - * self.key = key - * self.wrthread = wrthread - * self.greenlet_deleted = greenlet_deleted # <<<<<<<<<<<<<< - * - * def __call__(self, _unused): - */ - if (!(likely(((__pyx_v_greenlet_deleted) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_greenlet_deleted, __pyx_ptype_6gevent_6_local__greenlet_deleted))))) __PYX_ERR(0, 239, __pyx_L1_error) - __pyx_t_1 = __pyx_v_greenlet_deleted; - __Pyx_INCREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->greenlet_deleted); - __Pyx_DECREF(((PyObject *)__pyx_v_self->greenlet_deleted)); - __pyx_v_self->greenlet_deleted = ((struct __pyx_obj_6gevent_6_local__greenlet_deleted *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/local.py":236 - * __slots__ = ('key', 'wrthread', 'greenlet_deleted') - * - * def __init__(self, key, wrthread, greenlet_deleted): # <<<<<<<<<<<<<< - * self.key = key - * self.wrthread = wrthread - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._local._local_deleted.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/local.py":241 - * self.greenlet_deleted = greenlet_deleted - * - * def __call__(self, _unused): # <<<<<<<<<<<<<< - * thread = self.wrthread() - * if thread is not None: - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_local_14_local_deleted_3__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_6_local_14_local_deleted_3__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - CYTHON_UNUSED PyObject *__pyx_v__unused = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__call__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_unused,0}; - PyObject* values[1] = {0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_unused)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__call__") < 0)) __PYX_ERR(0, 241, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 1) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - } - __pyx_v__unused = values[0]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__call__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 241, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._local._local_deleted.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_6_local_14_local_deleted_2__call__(((struct __pyx_obj_6gevent_6_local__local_deleted *)__pyx_v_self), __pyx_v__unused); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_local_14_local_deleted_2__call__(struct __pyx_obj_6gevent_6_local__local_deleted *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v__unused) { - PyObject *__pyx_v_thread = NULL; - PyObject *__pyx_v_unlink = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - int __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - int __pyx_t_10; - __Pyx_RefNannySetupContext("__call__", 0); - - /* "src/gevent/local.py":242 - * - * def __call__(self, _unused): - * thread = self.wrthread() # <<<<<<<<<<<<<< - * if thread is not None: - * try: - */ - __Pyx_INCREF(__pyx_v_self->wrthread); - __pyx_t_2 = __pyx_v_self->wrthread; __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 242, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 242, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_thread = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/local.py":243 - * def __call__(self, _unused): - * thread = self.wrthread() - * if thread is not None: # <<<<<<<<<<<<<< - * try: - * unlink = thread.unlink - */ - __pyx_t_4 = (__pyx_v_thread != Py_None); - __pyx_t_5 = (__pyx_t_4 != 0); - if (__pyx_t_5) { - - /* "src/gevent/local.py":244 - * thread = self.wrthread() - * if thread is not None: - * try: # <<<<<<<<<<<<<< - * unlink = thread.unlink - * except AttributeError: - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8); - __Pyx_XGOTREF(__pyx_t_6); - __Pyx_XGOTREF(__pyx_t_7); - __Pyx_XGOTREF(__pyx_t_8); - /*try:*/ { - - /* "src/gevent/local.py":245 - * if thread is not None: - * try: - * unlink = thread.unlink # <<<<<<<<<<<<<< - * except AttributeError: - * pass - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_thread, __pyx_n_s_unlink); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 245, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_unlink = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/local.py":244 - * thread = self.wrthread() - * if thread is not None: - * try: # <<<<<<<<<<<<<< - * unlink = thread.unlink - * except AttributeError: - */ - } - - /* "src/gevent/local.py":249 - * pass - * else: - * unlink(self.greenlet_deleted) # <<<<<<<<<<<<<< - * del thread.__dict__[self.key] - * - */ - /*else:*/ { - __Pyx_INCREF(__pyx_v_unlink); - __pyx_t_2 = __pyx_v_unlink; __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self->greenlet_deleted)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 249, __pyx_L6_except_error) - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_self->greenlet_deleted)}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 249, __pyx_L6_except_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_self->greenlet_deleted)}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 249, __pyx_L6_except_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 249, __pyx_L6_except_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(((PyObject *)__pyx_v_self->greenlet_deleted)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self->greenlet_deleted)); - PyTuple_SET_ITEM(__pyx_t_9, 0+1, ((PyObject *)__pyx_v_self->greenlet_deleted)); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 249, __pyx_L6_except_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - } - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - goto __pyx_L9_try_end; - __pyx_L4_error:; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/local.py":246 - * try: - * unlink = thread.unlink - * except AttributeError: # <<<<<<<<<<<<<< - * pass - * else: - */ - __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError); - if (__pyx_t_10) { - __Pyx_ErrRestore(0,0,0); - goto __pyx_L5_exception_handled; - } - goto __pyx_L6_except_error; - __pyx_L6_except_error:; - - /* "src/gevent/local.py":244 - * thread = self.wrthread() - * if thread is not None: - * try: # <<<<<<<<<<<<<< - * unlink = thread.unlink - * except AttributeError: - */ - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); - goto __pyx_L1_error; - __pyx_L5_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); - __pyx_L9_try_end:; - } - - /* "src/gevent/local.py":250 - * else: - * unlink(self.greenlet_deleted) - * del thread.__dict__[self.key] # <<<<<<<<<<<<<< - * - * class _localimpl(object): - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_thread, __pyx_n_s_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 250, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (unlikely(PyObject_DelItem(__pyx_t_1, __pyx_v_self->key) < 0)) __PYX_ERR(0, 250, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/local.py":243 - * def __call__(self, _unused): - * thread = self.wrthread() - * if thread is not None: # <<<<<<<<<<<<<< - * try: - * unlink = thread.unlink - */ - } - - /* "src/gevent/local.py":241 - * self.greenlet_deleted = greenlet_deleted - * - * def __call__(self, _unused): # <<<<<<<<<<<<<< - * thread = self.wrthread() - * if thread is not None: - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_9); - __Pyx_AddTraceback("gevent._local._local_deleted.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_thread); - __Pyx_XDECREF(__pyx_v_unlink); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/local.py":259 - * '__weakref__',) - * - * def __init__(self, args, kwargs, local_type, id_local): # <<<<<<<<<<<<<< - * self.key = key_prefix + str(id(self)) - * # { id(greenlet) -> _localimpl_dict_entry(ref(greenlet), greenlet-local dict) } - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_6_local_10_localimpl_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_6_local_10_localimpl_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_args = 0; - PyObject *__pyx_v_kwargs = 0; - PyObject *__pyx_v_local_type = 0; - PyObject *__pyx_v_id_local = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_args,&__pyx_n_s_kwargs,&__pyx_n_s_local_type,&__pyx_n_s_id_local,0}; - PyObject* values[4] = {0,0,0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_args)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_kwargs)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 1); __PYX_ERR(0, 259, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_local_type)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 2); __PYX_ERR(0, 259, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 3: - if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_id_local)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 3); __PYX_ERR(0, 259, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 259, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 4) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - } - __pyx_v_args = values[0]; - __pyx_v_kwargs = values[1]; - __pyx_v_local_type = values[2]; - __pyx_v_id_local = values[3]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 259, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._local._localimpl.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_6_local_10_localimpl___init__(((struct __pyx_obj_6gevent_6_local__localimpl *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs, __pyx_v_local_type, __pyx_v_id_local); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_6_local_10_localimpl___init__(struct __pyx_obj_6gevent_6_local__localimpl *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs, PyObject *__pyx_v_local_type, PyObject *__pyx_v_id_local) { - PyGreenlet *__pyx_v_greenlet = NULL; - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("__init__", 0); - - /* "src/gevent/local.py":260 - * - * def __init__(self, args, kwargs, local_type, id_local): - * self.key = key_prefix + str(id(self)) # <<<<<<<<<<<<<< - * # { id(greenlet) -> _localimpl_dict_entry(ref(greenlet), greenlet-local dict) } - * self.dicts = _wrefdict() - */ - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 260, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyString_Type)), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 260, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyNumber_Add(__pyx_v_6gevent_6_local_key_prefix, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 260, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 260, __pyx_L1_error) - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->key); - __Pyx_DECREF(__pyx_v_self->key); - __pyx_v_self->key = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/local.py":262 - * self.key = key_prefix + str(id(self)) - * # { id(greenlet) -> _localimpl_dict_entry(ref(greenlet), greenlet-local dict) } - * self.dicts = _wrefdict() # <<<<<<<<<<<<<< - * self.localargs = args - * self.localkwargs = kwargs - */ - __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_6gevent_6_local__wrefdict)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 262, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->dicts); - __Pyx_DECREF(__pyx_v_self->dicts); - __pyx_v_self->dicts = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/local.py":263 - * # { id(greenlet) -> _localimpl_dict_entry(ref(greenlet), greenlet-local dict) } - * self.dicts = _wrefdict() - * self.localargs = args # <<<<<<<<<<<<<< - * self.localkwargs = kwargs - * self.localtypeid = local_type, id_local - */ - if (!(likely(PyTuple_CheckExact(__pyx_v_args))||((__pyx_v_args) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_args)->tp_name), 0))) __PYX_ERR(0, 263, __pyx_L1_error) - __pyx_t_1 = __pyx_v_args; - __Pyx_INCREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->localargs); - __Pyx_DECREF(__pyx_v_self->localargs); - __pyx_v_self->localargs = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/local.py":264 - * self.dicts = _wrefdict() - * self.localargs = args - * self.localkwargs = kwargs # <<<<<<<<<<<<<< - * self.localtypeid = local_type, id_local - * - */ - if (!(likely(PyDict_CheckExact(__pyx_v_kwargs))||((__pyx_v_kwargs) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_kwargs)->tp_name), 0))) __PYX_ERR(0, 264, __pyx_L1_error) - __pyx_t_1 = __pyx_v_kwargs; - __Pyx_INCREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->localkwargs); - __Pyx_DECREF(__pyx_v_self->localkwargs); - __pyx_v_self->localkwargs = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/local.py":265 - * self.localargs = args - * self.localkwargs = kwargs - * self.localtypeid = local_type, id_local # <<<<<<<<<<<<<< - * - * # We need to create the thread dict in anticipation of - */ - __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 265, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_v_local_type); - __Pyx_GIVEREF(__pyx_v_local_type); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_local_type); - __Pyx_INCREF(__pyx_v_id_local); - __Pyx_GIVEREF(__pyx_v_id_local); - PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_id_local); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->localtypeid); - __Pyx_DECREF(__pyx_v_self->localtypeid); - __pyx_v_self->localtypeid = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/local.py":270 - * # __init__ being called, to make sure we don't call it - * # again ourselves. MUST do this before setting any attributes. - * greenlet = getcurrent() # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * _localimpl_create_dict(self, greenlet, id(greenlet)) - * - */ - __pyx_t_1 = ((PyObject *)__pyx_f_6gevent_6_local_getcurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 270, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_greenlet = ((PyGreenlet *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/local.py":271 - * # again ourselves. MUST do this before setting any attributes. - * greenlet = getcurrent() # pylint:disable=undefined-variable - * _localimpl_create_dict(self, greenlet, id(greenlet)) # <<<<<<<<<<<<<< - * - * class _localimpl_dict_entry(object): - */ - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_greenlet)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 271, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __pyx_f_6gevent_6_local__localimpl_create_dict(__pyx_v_self, __pyx_v_greenlet, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 271, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/local.py":259 - * '__weakref__',) - * - * def __init__(self, args, kwargs, local_type, id_local): # <<<<<<<<<<<<<< - * self.key = key_prefix + str(id(self)) - * # { id(greenlet) -> _localimpl_dict_entry(ref(greenlet), greenlet-local dict) } - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent._local._localimpl.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_greenlet); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/local.py":282 - * __slots__ = ('wrgreenlet', 'localdict') - * - * def __init__(self, wrgreenlet, localdict): # <<<<<<<<<<<<<< - * self.wrgreenlet = wrgreenlet - * self.localdict = localdict - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_6_local_21_localimpl_dict_entry_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_6_local_21_localimpl_dict_entry_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_wrgreenlet = 0; - PyObject *__pyx_v_localdict = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_wrgreenlet,&__pyx_n_s_localdict,0}; - PyObject* values[2] = {0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_wrgreenlet)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_localdict)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 282, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 282, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - } - __pyx_v_wrgreenlet = values[0]; - __pyx_v_localdict = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 282, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._local._localimpl_dict_entry.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_6_local_21_localimpl_dict_entry___init__(((struct __pyx_obj_6gevent_6_local__localimpl_dict_entry *)__pyx_v_self), __pyx_v_wrgreenlet, __pyx_v_localdict); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_6_local_21_localimpl_dict_entry___init__(struct __pyx_obj_6gevent_6_local__localimpl_dict_entry *__pyx_v_self, PyObject *__pyx_v_wrgreenlet, PyObject *__pyx_v_localdict) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__init__", 0); - - /* "src/gevent/local.py":283 - * - * def __init__(self, wrgreenlet, localdict): - * self.wrgreenlet = wrgreenlet # <<<<<<<<<<<<<< - * self.localdict = localdict - * - */ - __Pyx_INCREF(__pyx_v_wrgreenlet); - __Pyx_GIVEREF(__pyx_v_wrgreenlet); - __Pyx_GOTREF(__pyx_v_self->wrgreenlet); - __Pyx_DECREF(__pyx_v_self->wrgreenlet); - __pyx_v_self->wrgreenlet = __pyx_v_wrgreenlet; - - /* "src/gevent/local.py":284 - * def __init__(self, wrgreenlet, localdict): - * self.wrgreenlet = wrgreenlet - * self.localdict = localdict # <<<<<<<<<<<<<< - * - * # We use functions instead of methods so that they can be cdef'd in - */ - if (!(likely(PyDict_CheckExact(__pyx_v_localdict))||((__pyx_v_localdict) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_localdict)->tp_name), 0))) __PYX_ERR(0, 284, __pyx_L1_error) - __pyx_t_1 = __pyx_v_localdict; - __Pyx_INCREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->localdict); - __Pyx_DECREF(__pyx_v_self->localdict); - __pyx_v_self->localdict = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/local.py":282 - * __slots__ = ('wrgreenlet', 'localdict') - * - * def __init__(self, wrgreenlet, localdict): # <<<<<<<<<<<<<< - * self.wrgreenlet = wrgreenlet - * self.localdict = localdict - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._local._localimpl_dict_entry.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/local.py":294 - * - * - * def _localimpl_create_dict(self, greenlet, id_greenlet): # <<<<<<<<<<<<<< - * """Create a new dict for the current thread, and return it.""" - * localdict = {} - */ - -static PyObject *__pyx_f_6gevent_6_local__localimpl_create_dict(struct __pyx_obj_6gevent_6_local__localimpl *__pyx_v_self, PyGreenlet *__pyx_v_greenlet, PyObject *__pyx_v_id_greenlet) { - PyObject *__pyx_v_localdict = 0; - PyObject *__pyx_v_key = 0; - struct __pyx_obj_6gevent_6_local__greenlet_deleted *__pyx_v_greenlet_deleted = 0; - struct __pyx_obj_6gevent_6_local__local_deleted *__pyx_v_local_deleted = 0; - PyObject *__pyx_v_wrdicts = NULL; - PyObject *__pyx_v_rawlink = NULL; - PyObject *__pyx_v_wrthread = NULL; - PyObject *__pyx_v_wrlocal = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - int __pyx_t_6; - int __pyx_t_7; - __Pyx_RefNannySetupContext("_localimpl_create_dict", 0); - - /* "src/gevent/local.py":296 - * def _localimpl_create_dict(self, greenlet, id_greenlet): - * """Create a new dict for the current thread, and return it.""" - * localdict = {} # <<<<<<<<<<<<<< - * key = self.key - * - */ - __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 296, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_localdict = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/local.py":297 - * """Create a new dict for the current thread, and return it.""" - * localdict = {} - * key = self.key # <<<<<<<<<<<<<< - * - * wrdicts = ref(self.dicts) - */ - __pyx_t_1 = __pyx_v_self->key; - __Pyx_INCREF(__pyx_t_1); - __pyx_v_key = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/local.py":299 - * key = self.key - * - * wrdicts = ref(self.dicts) # <<<<<<<<<<<<<< - * - * # When the greenlet is deleted, remove the local dict. - */ - __Pyx_INCREF(__pyx_v_6gevent_6_local_ref); - __pyx_t_2 = __pyx_v_6gevent_6_local_ref; __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_self->dicts); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 299, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_self->dicts}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 299, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_self->dicts}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 299, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 299, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(__pyx_v_self->dicts); - __Pyx_GIVEREF(__pyx_v_self->dicts); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_self->dicts); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 299, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_wrdicts = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/local.py":310 - * # issue described above. Use rawlink to avoid spawning any - * # more greenlets. - * greenlet_deleted = _greenlet_deleted(id_greenlet, wrdicts) # <<<<<<<<<<<<<< - * - * rawlink = getattr(greenlet, 'rawlink', None) - */ - __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 310, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_v_id_greenlet); - __Pyx_GIVEREF(__pyx_v_id_greenlet); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_id_greenlet); - __Pyx_INCREF(__pyx_v_wrdicts); - __Pyx_GIVEREF(__pyx_v_wrdicts); - PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_wrdicts); - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6gevent_6_local__greenlet_deleted), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 310, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_greenlet_deleted = ((struct __pyx_obj_6gevent_6_local__greenlet_deleted *)__pyx_t_2); - __pyx_t_2 = 0; - - /* "src/gevent/local.py":312 - * greenlet_deleted = _greenlet_deleted(id_greenlet, wrdicts) - * - * rawlink = getattr(greenlet, 'rawlink', None) # <<<<<<<<<<<<<< - * if rawlink is not None: - * rawlink(greenlet_deleted) - */ - __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_greenlet), __pyx_n_s_rawlink, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 312, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_v_rawlink = __pyx_t_2; - __pyx_t_2 = 0; - - /* "src/gevent/local.py":313 - * - * rawlink = getattr(greenlet, 'rawlink', None) - * if rawlink is not None: # <<<<<<<<<<<<<< - * rawlink(greenlet_deleted) - * wrthread = ref(greenlet) - */ - __pyx_t_5 = (__pyx_v_rawlink != Py_None); - __pyx_t_6 = (__pyx_t_5 != 0); - if (__pyx_t_6) { - - /* "src/gevent/local.py":314 - * rawlink = getattr(greenlet, 'rawlink', None) - * if rawlink is not None: - * rawlink(greenlet_deleted) # <<<<<<<<<<<<<< - * wrthread = ref(greenlet) - * else: - */ - __Pyx_INCREF(__pyx_v_rawlink); - __pyx_t_1 = __pyx_v_rawlink; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - } - } - if (!__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, ((PyObject *)__pyx_v_greenlet_deleted)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 314, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_1)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, ((PyObject *)__pyx_v_greenlet_deleted)}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 314, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, ((PyObject *)__pyx_v_greenlet_deleted)}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 314, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 314, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_INCREF(((PyObject *)__pyx_v_greenlet_deleted)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_greenlet_deleted)); - PyTuple_SET_ITEM(__pyx_t_3, 0+1, ((PyObject *)__pyx_v_greenlet_deleted)); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 314, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/local.py":315 - * if rawlink is not None: - * rawlink(greenlet_deleted) - * wrthread = ref(greenlet) # <<<<<<<<<<<<<< - * else: - * wrthread = ref(greenlet, greenlet_deleted) - */ - __Pyx_INCREF(__pyx_v_6gevent_6_local_ref); - __pyx_t_1 = __pyx_v_6gevent_6_local_ref; __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - } - } - if (!__pyx_t_3) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, ((PyObject *)__pyx_v_greenlet)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 315, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_1)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_greenlet)}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 315, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_greenlet)}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 315, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 315, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(((PyObject *)__pyx_v_greenlet)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_greenlet)); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)__pyx_v_greenlet)); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 315, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_wrthread = __pyx_t_2; - __pyx_t_2 = 0; - - /* "src/gevent/local.py":313 - * - * rawlink = getattr(greenlet, 'rawlink', None) - * if rawlink is not None: # <<<<<<<<<<<<<< - * rawlink(greenlet_deleted) - * wrthread = ref(greenlet) - */ - goto __pyx_L3; - } - - /* "src/gevent/local.py":317 - * wrthread = ref(greenlet) - * else: - * wrthread = ref(greenlet, greenlet_deleted) # <<<<<<<<<<<<<< - * - * - */ - /*else*/ { - __Pyx_INCREF(__pyx_v_6gevent_6_local_ref); - __pyx_t_1 = __pyx_v_6gevent_6_local_ref; __pyx_t_4 = NULL; - __pyx_t_7 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_7 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_1)) { - PyObject *__pyx_temp[3] = {__pyx_t_4, ((PyObject *)__pyx_v_greenlet), ((PyObject *)__pyx_v_greenlet_deleted)}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 317, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { - PyObject *__pyx_temp[3] = {__pyx_t_4, ((PyObject *)__pyx_v_greenlet), ((PyObject *)__pyx_v_greenlet_deleted)}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 317, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_3 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 317, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (__pyx_t_4) { - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; - } - __Pyx_INCREF(((PyObject *)__pyx_v_greenlet)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_greenlet)); - PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_7, ((PyObject *)__pyx_v_greenlet)); - __Pyx_INCREF(((PyObject *)__pyx_v_greenlet_deleted)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_greenlet_deleted)); - PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_7, ((PyObject *)__pyx_v_greenlet_deleted)); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 317, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_wrthread = __pyx_t_2; - __pyx_t_2 = 0; - } - __pyx_L3:; - - /* "src/gevent/local.py":321 - * - * # When the localimpl is deleted, remove the thread attribute. - * local_deleted = _local_deleted(key, wrthread, greenlet_deleted) # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 321, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_v_key); - __Pyx_GIVEREF(__pyx_v_key); - PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_key); - __Pyx_INCREF(__pyx_v_wrthread); - __Pyx_GIVEREF(__pyx_v_wrthread); - PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_wrthread); - __Pyx_INCREF(((PyObject *)__pyx_v_greenlet_deleted)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_greenlet_deleted)); - PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_v_greenlet_deleted)); - __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6gevent_6_local__local_deleted), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 321, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_local_deleted = ((struct __pyx_obj_6gevent_6_local__local_deleted *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/local.py":324 - * - * - * wrlocal = ref(self, local_deleted) # <<<<<<<<<<<<<< - * greenlet.__dict__[key] = wrlocal - * - */ - __Pyx_INCREF(__pyx_v_6gevent_6_local_ref); - __pyx_t_2 = __pyx_v_6gevent_6_local_ref; __pyx_t_3 = NULL; - __pyx_t_7 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_7 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, ((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_local_deleted)}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 324, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, ((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_local_deleted)}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 324, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_4 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 324, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - if (__pyx_t_3) { - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; - } - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_7, ((PyObject *)__pyx_v_self)); - __Pyx_INCREF(((PyObject *)__pyx_v_local_deleted)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_local_deleted)); - PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_7, ((PyObject *)__pyx_v_local_deleted)); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 324, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_wrlocal = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/local.py":325 - * - * wrlocal = ref(self, local_deleted) - * greenlet.__dict__[key] = wrlocal # <<<<<<<<<<<<<< - * - * self.dicts[id_greenlet] = _localimpl_dict_entry(wrthread, localdict) - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_greenlet), __pyx_n_s_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 325, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_v_key, __pyx_v_wrlocal) < 0)) __PYX_ERR(0, 325, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/local.py":327 - * greenlet.__dict__[key] = wrlocal - * - * self.dicts[id_greenlet] = _localimpl_dict_entry(wrthread, localdict) # <<<<<<<<<<<<<< - * return localdict - * - */ - __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 327, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_v_wrthread); - __Pyx_GIVEREF(__pyx_v_wrthread); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_wrthread); - __Pyx_INCREF(__pyx_v_localdict); - __Pyx_GIVEREF(__pyx_v_localdict); - PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_localdict); - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6gevent_6_local__localimpl_dict_entry), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 327, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(__pyx_v_self->dicts == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 327, __pyx_L1_error) - } - if (unlikely(PyDict_SetItem(__pyx_v_self->dicts, __pyx_v_id_greenlet, __pyx_t_2) < 0)) __PYX_ERR(0, 327, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/local.py":328 - * - * self.dicts[id_greenlet] = _localimpl_dict_entry(wrthread, localdict) - * return localdict # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_localdict); - __pyx_r = __pyx_v_localdict; - goto __pyx_L0; - - /* "src/gevent/local.py":294 - * - * - * def _localimpl_create_dict(self, greenlet, id_greenlet): # <<<<<<<<<<<<<< - * """Create a new dict for the current thread, and return it.""" - * localdict = {} - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent._local._localimpl_create_dict", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_localdict); - __Pyx_XDECREF(__pyx_v_key); - __Pyx_XDECREF((PyObject *)__pyx_v_greenlet_deleted); - __Pyx_XDECREF((PyObject *)__pyx_v_local_deleted); - __Pyx_XDECREF(__pyx_v_wrdicts); - __Pyx_XDECREF(__pyx_v_rawlink); - __Pyx_XDECREF(__pyx_v_wrthread); - __Pyx_XDECREF(__pyx_v_wrlocal); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/local.py":333 - * _marker = object() - * - * def _local_get_dict(self): # <<<<<<<<<<<<<< - * impl = self._local__impl - * # Cython can optimize dict[], but not dict.get() - */ - -static CYTHON_INLINE PyObject *__pyx_f_6gevent_6_local__local_get_dict(struct __pyx_obj_6gevent_6_local_local *__pyx_v_self) { - struct __pyx_obj_6gevent_6_local__localimpl *__pyx_v_impl = 0; - PyObject *__pyx_v_dct = 0; - struct __pyx_obj_6gevent_6_local__localimpl_dict_entry *__pyx_v_entry = 0; - PyGreenlet *__pyx_v_greenlet = NULL; - PyObject *__pyx_v_idg = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - __Pyx_RefNannySetupContext("_local_get_dict", 0); - - /* "src/gevent/local.py":334 - * - * def _local_get_dict(self): - * impl = self._local__impl # <<<<<<<<<<<<<< - * # Cython can optimize dict[], but not dict.get() - * greenlet = getcurrent() # pylint:disable=undefined-variable - */ - __pyx_t_1 = ((PyObject *)__pyx_v_self->_local__impl); - __Pyx_INCREF(__pyx_t_1); - __pyx_v_impl = ((struct __pyx_obj_6gevent_6_local__localimpl *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/local.py":336 - * impl = self._local__impl - * # Cython can optimize dict[], but not dict.get() - * greenlet = getcurrent() # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * idg = id(greenlet) - * try: - */ - __pyx_t_1 = ((PyObject *)__pyx_f_6gevent_6_local_getcurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 336, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_greenlet = ((PyGreenlet *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/local.py":337 - * # Cython can optimize dict[], but not dict.get() - * greenlet = getcurrent() # pylint:disable=undefined-variable - * idg = id(greenlet) # <<<<<<<<<<<<<< - * try: - * entry = impl.dicts[idg] - */ - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_greenlet)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 337, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_idg = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/local.py":338 - * greenlet = getcurrent() # pylint:disable=undefined-variable - * idg = id(greenlet) - * try: # <<<<<<<<<<<<<< - * entry = impl.dicts[idg] - * dct = entry.localdict - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4); - __Pyx_XGOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_4); - /*try:*/ { - - /* "src/gevent/local.py":339 - * idg = id(greenlet) - * try: - * entry = impl.dicts[idg] # <<<<<<<<<<<<<< - * dct = entry.localdict - * except KeyError: - */ - if (unlikely(__pyx_v_impl->dicts == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 339, __pyx_L3_error) - } - __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_impl->dicts, __pyx_v_idg); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 339, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_1); - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6gevent_6_local__localimpl_dict_entry))))) __PYX_ERR(0, 339, __pyx_L3_error) - __pyx_v_entry = ((struct __pyx_obj_6gevent_6_local__localimpl_dict_entry *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/local.py":340 - * try: - * entry = impl.dicts[idg] - * dct = entry.localdict # <<<<<<<<<<<<<< - * except KeyError: - * dct = _localimpl_create_dict(impl, greenlet, idg) - */ - __pyx_t_1 = __pyx_v_entry->localdict; - __Pyx_INCREF(__pyx_t_1); - __pyx_v_dct = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/local.py":338 - * greenlet = getcurrent() # pylint:disable=undefined-variable - * idg = id(greenlet) - * try: # <<<<<<<<<<<<<< - * entry = impl.dicts[idg] - * dct = entry.localdict - */ - } - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - goto __pyx_L8_try_end; - __pyx_L3_error:; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/local.py":341 - * entry = impl.dicts[idg] - * dct = entry.localdict - * except KeyError: # <<<<<<<<<<<<<< - * dct = _localimpl_create_dict(impl, greenlet, idg) - * self.__init__(*impl.localargs, **impl.localkwargs) - */ - __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError); - if (__pyx_t_5) { - __Pyx_AddTraceback("gevent._local._local_get_dict", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(0, 341, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GOTREF(__pyx_t_7); - - /* "src/gevent/local.py":342 - * dct = entry.localdict - * except KeyError: - * dct = _localimpl_create_dict(impl, greenlet, idg) # <<<<<<<<<<<<<< - * self.__init__(*impl.localargs, **impl.localkwargs) - * return dct - */ - __pyx_t_8 = __pyx_f_6gevent_6_local__localimpl_create_dict(__pyx_v_impl, __pyx_v_greenlet, __pyx_v_idg); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 342, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_XDECREF_SET(__pyx_v_dct, ((PyObject*)__pyx_t_8)); - __pyx_t_8 = 0; - - /* "src/gevent/local.py":343 - * except KeyError: - * dct = _localimpl_create_dict(impl, greenlet, idg) - * self.__init__(*impl.localargs, **impl.localkwargs) # <<<<<<<<<<<<<< - * return dct - * - */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_init); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 343, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_8); - if (unlikely(__pyx_v_impl->localargs == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 343, __pyx_L5_except_error) - } - if (unlikely(__pyx_v_impl->localkwargs == Py_None)) { - PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType"); - __PYX_ERR(0, 343, __pyx_L5_except_error) - } - __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_v_impl->localargs, __pyx_v_impl->localkwargs); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 343, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - goto __pyx_L4_exception_handled; - } - goto __pyx_L5_except_error; - __pyx_L5_except_error:; - - /* "src/gevent/local.py":338 - * greenlet = getcurrent() # pylint:disable=undefined-variable - * idg = id(greenlet) - * try: # <<<<<<<<<<<<<< - * entry = impl.dicts[idg] - * dct = entry.localdict - */ - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); - goto __pyx_L1_error; - __pyx_L4_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); - __pyx_L8_try_end:; - } - - /* "src/gevent/local.py":344 - * dct = _localimpl_create_dict(impl, greenlet, idg) - * self.__init__(*impl.localargs, **impl.localkwargs) - * return dct # <<<<<<<<<<<<<< - * - * def _init(): - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_dct); - __pyx_r = __pyx_v_dct; - goto __pyx_L0; - - /* "src/gevent/local.py":333 - * _marker = object() - * - * def _local_get_dict(self): # <<<<<<<<<<<<<< - * impl = self._local__impl - * # Cython can optimize dict[], but not dict.get() - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_XDECREF(__pyx_t_9); - __Pyx_AddTraceback("gevent._local._local_get_dict", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_impl); - __Pyx_XDECREF(__pyx_v_dct); - __Pyx_XDECREF((PyObject *)__pyx_v_entry); - __Pyx_XDECREF((PyObject *)__pyx_v_greenlet); - __Pyx_XDECREF(__pyx_v_idg); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/local.py":346 - * return dct - * - * def _init(): # <<<<<<<<<<<<<< - * greenlet_init() # pylint:disable=undefined-variable - * - */ - -static void __pyx_f_6gevent_6_local__init(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_init", 0); - - /* "src/gevent/local.py":347 - * - * def _init(): - * greenlet_init() # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * - * _local_attrs = { - */ - __pyx_f_6gevent_6_local_greenlet_init(); - - /* "src/gevent/local.py":346 - * return dct - * - * def _init(): # <<<<<<<<<<<<<< - * greenlet_init() # pylint:disable=undefined-variable - * - */ - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -/* "src/gevent/local.py":367 - * __slots__ = tuple(_local_attrs - {'__class__', '__cinit__'}) - * - * def __cinit__(self, *args, **kw): # <<<<<<<<<<<<<< - * if args or kw: - * if type(self).__init__ == object.__init__: - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_6_local_5local_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_6_local_5local_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_args = 0; - PyObject *__pyx_v_kw = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); - if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 1))) return -1; - __pyx_v_kw = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kw)) return -1; - __Pyx_GOTREF(__pyx_v_kw); - __Pyx_INCREF(__pyx_args); - __pyx_v_args = __pyx_args; - __pyx_r = __pyx_pf_6gevent_6_local_5local___cinit__(((struct __pyx_obj_6gevent_6_local_local *)__pyx_v_self), __pyx_v_args, __pyx_v_kw); - - /* function exit code */ - __Pyx_XDECREF(__pyx_v_args); - __Pyx_XDECREF(__pyx_v_kw); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_6_local_5local___cinit__(struct __pyx_obj_6gevent_6_local_local *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kw) { - struct __pyx_obj_6gevent_6_local__localimpl *__pyx_v_impl = NULL; - PyObject *__pyx_v_get = NULL; - PyObject *__pyx_v_dels = NULL; - PyObject *__pyx_v_sets_or_dels = NULL; - PyObject *__pyx_v_sets = NULL; - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - __Pyx_RefNannySetupContext("__cinit__", 0); - - /* "src/gevent/local.py":368 - * - * def __cinit__(self, *args, **kw): - * if args or kw: # <<<<<<<<<<<<<< - * if type(self).__init__ == object.__init__: - * raise TypeError("Initialization arguments are not supported", args, kw) - */ - __pyx_t_2 = (PyTuple_GET_SIZE(__pyx_v_args) != 0); - if (!__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_kw); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 368, __pyx_L1_error) - __pyx_t_1 = __pyx_t_2; - __pyx_L4_bool_binop_done:; - if (__pyx_t_1) { - - /* "src/gevent/local.py":369 - * def __cinit__(self, *args, **kw): - * if args or kw: - * if type(self).__init__ == object.__init__: # <<<<<<<<<<<<<< - * raise TypeError("Initialization arguments are not supported", args, kw) - * impl = _localimpl(args, kw, type(self), id(self)) - */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_init); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 369, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_builtin_object, __pyx_n_s_init); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 369, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 369, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 369, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(__pyx_t_1)) { - - /* "src/gevent/local.py":370 - * if args or kw: - * if type(self).__init__ == object.__init__: - * raise TypeError("Initialization arguments are not supported", args, kw) # <<<<<<<<<<<<<< - * impl = _localimpl(args, kw, type(self), id(self)) - * # pylint:disable=attribute-defined-outside-init - */ - __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 370, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_INCREF(__pyx_kp_s_Initialization_arguments_are_not); - __Pyx_GIVEREF(__pyx_kp_s_Initialization_arguments_are_not); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_kp_s_Initialization_arguments_are_not); - __Pyx_INCREF(__pyx_v_args); - __Pyx_GIVEREF(__pyx_v_args); - PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_args); - __Pyx_INCREF(__pyx_v_kw); - __Pyx_GIVEREF(__pyx_v_kw); - PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_kw); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 370, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_Raise(__pyx_t_4, 0, 0, 0); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __PYX_ERR(0, 370, __pyx_L1_error) - - /* "src/gevent/local.py":369 - * def __cinit__(self, *args, **kw): - * if args or kw: - * if type(self).__init__ == object.__init__: # <<<<<<<<<<<<<< - * raise TypeError("Initialization arguments are not supported", args, kw) - * impl = _localimpl(args, kw, type(self), id(self)) - */ - } - - /* "src/gevent/local.py":368 - * - * def __cinit__(self, *args, **kw): - * if args or kw: # <<<<<<<<<<<<<< - * if type(self).__init__ == object.__init__: - * raise TypeError("Initialization arguments are not supported", args, kw) - */ - } - - /* "src/gevent/local.py":371 - * if type(self).__init__ == object.__init__: - * raise TypeError("Initialization arguments are not supported", args, kw) - * impl = _localimpl(args, kw, type(self), id(self)) # <<<<<<<<<<<<<< - * # pylint:disable=attribute-defined-outside-init - * self._local__impl = impl - */ - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 371, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 371, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_INCREF(__pyx_v_args); - __Pyx_GIVEREF(__pyx_v_args); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_args); - __Pyx_INCREF(__pyx_v_kw); - __Pyx_GIVEREF(__pyx_v_kw); - PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_kw); - __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - PyTuple_SET_ITEM(__pyx_t_5, 2, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_4); - __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6gevent_6_local__localimpl), __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 371, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_v_impl = ((struct __pyx_obj_6gevent_6_local__localimpl *)__pyx_t_4); - __pyx_t_4 = 0; - - /* "src/gevent/local.py":373 - * impl = _localimpl(args, kw, type(self), id(self)) - * # pylint:disable=attribute-defined-outside-init - * self._local__impl = impl # <<<<<<<<<<<<<< - * get, dels, sets_or_dels, sets = _local_find_descriptors(self) - * self._local_type_get_descriptors = get - */ - __Pyx_INCREF(((PyObject *)__pyx_v_impl)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_impl)); - __Pyx_GOTREF(__pyx_v_self->_local__impl); - __Pyx_DECREF(((PyObject *)__pyx_v_self->_local__impl)); - __pyx_v_self->_local__impl = __pyx_v_impl; - - /* "src/gevent/local.py":374 - * # pylint:disable=attribute-defined-outside-init - * self._local__impl = impl - * get, dels, sets_or_dels, sets = _local_find_descriptors(self) # <<<<<<<<<<<<<< - * self._local_type_get_descriptors = get - * self._local_type_set_or_del_descriptors = sets_or_dels - */ - __pyx_t_4 = __pyx_f_6gevent_6_local__local_find_descriptors(__pyx_v_self); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 374, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - if (likely(__pyx_t_4 != Py_None)) { - PyObject* sequence = __pyx_t_4; - Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); - if (unlikely(size != 4)) { - if (size > 4) __Pyx_RaiseTooManyValuesError(4); - else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 374, __pyx_L1_error) - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); - __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); - __pyx_t_6 = PyTuple_GET_ITEM(sequence, 2); - __pyx_t_7 = PyTuple_GET_ITEM(sequence, 3); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(__pyx_t_7); - #else - { - Py_ssize_t i; - PyObject** temps[4] = {&__pyx_t_5,&__pyx_t_3,&__pyx_t_6,&__pyx_t_7}; - for (i=0; i < 4; i++) { - PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 374, __pyx_L1_error) - __Pyx_GOTREF(item); - *(temps[i]) = item; - } - } - #endif - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(0, 374, __pyx_L1_error) - } - __pyx_v_get = __pyx_t_5; - __pyx_t_5 = 0; - __pyx_v_dels = __pyx_t_3; - __pyx_t_3 = 0; - __pyx_v_sets_or_dels = __pyx_t_6; - __pyx_t_6 = 0; - __pyx_v_sets = __pyx_t_7; - __pyx_t_7 = 0; - - /* "src/gevent/local.py":375 - * self._local__impl = impl - * get, dels, sets_or_dels, sets = _local_find_descriptors(self) - * self._local_type_get_descriptors = get # <<<<<<<<<<<<<< - * self._local_type_set_or_del_descriptors = sets_or_dels - * self._local_type_del_descriptors = dels - */ - if (!(likely(PySet_CheckExact(__pyx_v_get))||((__pyx_v_get) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "set", Py_TYPE(__pyx_v_get)->tp_name), 0))) __PYX_ERR(0, 375, __pyx_L1_error) - __pyx_t_4 = __pyx_v_get; - __Pyx_INCREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_4); - __Pyx_GOTREF(__pyx_v_self->_local_type_get_descriptors); - __Pyx_DECREF(__pyx_v_self->_local_type_get_descriptors); - __pyx_v_self->_local_type_get_descriptors = ((PyObject*)__pyx_t_4); - __pyx_t_4 = 0; - - /* "src/gevent/local.py":376 - * get, dels, sets_or_dels, sets = _local_find_descriptors(self) - * self._local_type_get_descriptors = get - * self._local_type_set_or_del_descriptors = sets_or_dels # <<<<<<<<<<<<<< - * self._local_type_del_descriptors = dels - * self._local_type_set_descriptors = sets - */ - if (!(likely(PySet_CheckExact(__pyx_v_sets_or_dels))||((__pyx_v_sets_or_dels) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "set", Py_TYPE(__pyx_v_sets_or_dels)->tp_name), 0))) __PYX_ERR(0, 376, __pyx_L1_error) - __pyx_t_4 = __pyx_v_sets_or_dels; - __Pyx_INCREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_4); - __Pyx_GOTREF(__pyx_v_self->_local_type_set_or_del_descriptors); - __Pyx_DECREF(__pyx_v_self->_local_type_set_or_del_descriptors); - __pyx_v_self->_local_type_set_or_del_descriptors = ((PyObject*)__pyx_t_4); - __pyx_t_4 = 0; - - /* "src/gevent/local.py":377 - * self._local_type_get_descriptors = get - * self._local_type_set_or_del_descriptors = sets_or_dels - * self._local_type_del_descriptors = dels # <<<<<<<<<<<<<< - * self._local_type_set_descriptors = sets - * self._local_type = type(self) - */ - if (!(likely(PySet_CheckExact(__pyx_v_dels))||((__pyx_v_dels) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "set", Py_TYPE(__pyx_v_dels)->tp_name), 0))) __PYX_ERR(0, 377, __pyx_L1_error) - __pyx_t_4 = __pyx_v_dels; - __Pyx_INCREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_4); - __Pyx_GOTREF(__pyx_v_self->_local_type_del_descriptors); - __Pyx_DECREF(__pyx_v_self->_local_type_del_descriptors); - __pyx_v_self->_local_type_del_descriptors = ((PyObject*)__pyx_t_4); - __pyx_t_4 = 0; - - /* "src/gevent/local.py":378 - * self._local_type_set_or_del_descriptors = sets_or_dels - * self._local_type_del_descriptors = dels - * self._local_type_set_descriptors = sets # <<<<<<<<<<<<<< - * self._local_type = type(self) - * self._local_type_vars = set(dir(self._local_type)) - */ - if (!(likely(PySet_CheckExact(__pyx_v_sets))||((__pyx_v_sets) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "set", Py_TYPE(__pyx_v_sets)->tp_name), 0))) __PYX_ERR(0, 378, __pyx_L1_error) - __pyx_t_4 = __pyx_v_sets; - __Pyx_INCREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_4); - __Pyx_GOTREF(__pyx_v_self->_local_type_set_descriptors); - __Pyx_DECREF(__pyx_v_self->_local_type_set_descriptors); - __pyx_v_self->_local_type_set_descriptors = ((PyObject*)__pyx_t_4); - __pyx_t_4 = 0; - - /* "src/gevent/local.py":379 - * self._local_type_del_descriptors = dels - * self._local_type_set_descriptors = sets - * self._local_type = type(self) # <<<<<<<<<<<<<< - * self._local_type_vars = set(dir(self._local_type)) - * - */ - __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - __Pyx_GOTREF(__pyx_v_self->_local_type); - __Pyx_DECREF(((PyObject *)__pyx_v_self->_local_type)); - __pyx_v_self->_local_type = ((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - - /* "src/gevent/local.py":380 - * self._local_type_set_descriptors = sets - * self._local_type = type(self) - * self._local_type_vars = set(dir(self._local_type)) # <<<<<<<<<<<<<< - * - * def __getattribute__(self, name): # pylint:disable=too-many-return-statements - */ - __pyx_t_4 = ((PyObject *)__pyx_v_self->_local_type); - __Pyx_INCREF(__pyx_t_4); - __pyx_t_7 = PyObject_Dir(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 380, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PySet_New(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 380, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GIVEREF(__pyx_t_4); - __Pyx_GOTREF(__pyx_v_self->_local_type_vars); - __Pyx_DECREF(__pyx_v_self->_local_type_vars); - __pyx_v_self->_local_type_vars = ((PyObject*)__pyx_t_4); - __pyx_t_4 = 0; - - /* "src/gevent/local.py":367 - * __slots__ = tuple(_local_attrs - {'__class__', '__cinit__'}) - * - * def __cinit__(self, *args, **kw): # <<<<<<<<<<<<<< - * if args or kw: - * if type(self).__init__ == object.__init__: - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("gevent._local.local.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_impl); - __Pyx_XDECREF(__pyx_v_get); - __Pyx_XDECREF(__pyx_v_dels); - __Pyx_XDECREF(__pyx_v_sets_or_dels); - __Pyx_XDECREF(__pyx_v_sets); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/local.py":382 - * self._local_type_vars = set(dir(self._local_type)) - * - * def __getattribute__(self, name): # pylint:disable=too-many-return-statements # <<<<<<<<<<<<<< - * if name in _local_attrs: - * # The _local__impl, __cinit__, etc, won't be hit by the - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_local_5local_3__getattribute__(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/ -static PyObject *__pyx_pw_6gevent_6_local_5local_3__getattribute__(PyObject *__pyx_v_self, PyObject *__pyx_v_name) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__getattribute__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_local_5local_2__getattribute__(((struct __pyx_obj_6gevent_6_local_local *)__pyx_v_self), ((PyObject *)__pyx_v_name)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_local_5local_2__getattribute__(struct __pyx_obj_6gevent_6_local_local *__pyx_v_self, PyObject *__pyx_v_name) { - PyObject *__pyx_v_dct = NULL; - PyObject *__pyx_v_type_attr = NULL; - PyObject *__pyx_v_base = NULL; - PyObject *__pyx_v_bd = NULL; - PyObject *__pyx_v_attr_on_type = NULL; - PyObject *__pyx_v_result = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - Py_ssize_t __pyx_t_9; - PyObject *(*__pyx_t_10)(PyObject *); - __Pyx_RefNannySetupContext("__getattribute__", 0); - - /* "src/gevent/local.py":383 - * - * def __getattribute__(self, name): # pylint:disable=too-many-return-statements - * if name in _local_attrs: # <<<<<<<<<<<<<< - * # The _local__impl, __cinit__, etc, won't be hit by the - * # Cython version, if we've done things right. If we haven't, - */ - if (unlikely(__pyx_v_6gevent_6_local__local_attrs == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 383, __pyx_L1_error) - } - __pyx_t_1 = (__Pyx_PySet_ContainsTF(__pyx_v_name, __pyx_v_6gevent_6_local__local_attrs, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 383, __pyx_L1_error) - __pyx_t_2 = (__pyx_t_1 != 0); - if (__pyx_t_2) { - - /* "src/gevent/local.py":387 - * # Cython version, if we've done things right. If we haven't, - * # they will be, and this will produce an error. - * return object.__getattribute__(self, name) # <<<<<<<<<<<<<< - * - * dct = _local_get_dict(self) - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_builtin_object, __pyx_n_s_getattribute); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 387, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - __pyx_t_6 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - __pyx_t_6 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[3] = {__pyx_t_5, ((PyObject *)__pyx_v_self), __pyx_v_name}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 387, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_3); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[3] = {__pyx_t_5, ((PyObject *)__pyx_v_self), __pyx_v_name}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 387, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_3); - } else - #endif - { - __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 387, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (__pyx_t_5) { - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; - } - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, ((PyObject *)__pyx_v_self)); - __Pyx_INCREF(__pyx_v_name); - __Pyx_GIVEREF(__pyx_v_name); - PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_name); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 387, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - - /* "src/gevent/local.py":383 - * - * def __getattribute__(self, name): # pylint:disable=too-many-return-statements - * if name in _local_attrs: # <<<<<<<<<<<<<< - * # The _local__impl, __cinit__, etc, won't be hit by the - * # Cython version, if we've done things right. If we haven't, - */ - } - - /* "src/gevent/local.py":389 - * return object.__getattribute__(self, name) - * - * dct = _local_get_dict(self) # <<<<<<<<<<<<<< - * - * if name == '__dict__': - */ - __pyx_t_3 = __pyx_f_6gevent_6_local__local_get_dict(__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 389, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_v_dct = ((PyObject*)__pyx_t_3); - __pyx_t_3 = 0; - - /* "src/gevent/local.py":391 - * dct = _local_get_dict(self) - * - * if name == '__dict__': # <<<<<<<<<<<<<< - * return dct - * # If there's no possible way we can switch, because this - */ - __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_dict, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 391, __pyx_L1_error) - if (__pyx_t_2) { - - /* "src/gevent/local.py":392 - * - * if name == '__dict__': - * return dct # <<<<<<<<<<<<<< - * # If there's no possible way we can switch, because this - * # attribute is *not* found in the class where it might be a - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_dct); - __pyx_r = __pyx_v_dct; - goto __pyx_L0; - - /* "src/gevent/local.py":391 - * dct = _local_get_dict(self) - * - * if name == '__dict__': # <<<<<<<<<<<<<< - * return dct - * # If there's no possible way we can switch, because this - */ - } - - /* "src/gevent/local.py":407 - * # there can be no descriptors except for methods, which will - * # never need to use __dict__. - * if self._local_type is local: # <<<<<<<<<<<<<< - * return dct[name] if name in dct else object.__getattribute__(self, name) - * - */ - __pyx_t_2 = (__pyx_v_self->_local_type == __pyx_ptype_6gevent_6_local_local); - __pyx_t_1 = (__pyx_t_2 != 0); - if (__pyx_t_1) { - - /* "src/gevent/local.py":408 - * # never need to use __dict__. - * if self._local_type is local: - * return dct[name] if name in dct else object.__getattribute__(self, name) # <<<<<<<<<<<<<< - * - * # NOTE: If this is a descriptor, this will invoke its __get__. - */ - __Pyx_XDECREF(__pyx_r); - if (unlikely(__pyx_v_dct == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 408, __pyx_L1_error) - } - __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_v_name, __pyx_v_dct, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 408, __pyx_L1_error) - if ((__pyx_t_1 != 0)) { - if (unlikely(__pyx_v_dct == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 408, __pyx_L1_error) - } - __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_dct, __pyx_v_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 408, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __pyx_t_4; - __pyx_t_4 = 0; - } else { - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_builtin_object, __pyx_n_s_getattribute); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 408, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_5 = NULL; - __pyx_t_6 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_7, function); - __pyx_t_6 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_7)) { - PyObject *__pyx_temp[3] = {__pyx_t_5, ((PyObject *)__pyx_v_self), __pyx_v_name}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 408, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_4); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { - PyObject *__pyx_temp[3] = {__pyx_t_5, ((PyObject *)__pyx_v_self), __pyx_v_name}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 408, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_4); - } else - #endif - { - __pyx_t_8 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 408, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - if (__pyx_t_5) { - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL; - } - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_6, ((PyObject *)__pyx_v_self)); - __Pyx_INCREF(__pyx_v_name); - __Pyx_GIVEREF(__pyx_v_name); - PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_6, __pyx_v_name); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 408, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_3 = __pyx_t_4; - __pyx_t_4 = 0; - } - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - - /* "src/gevent/local.py":407 - * # there can be no descriptors except for methods, which will - * # never need to use __dict__. - * if self._local_type is local: # <<<<<<<<<<<<<< - * return dct[name] if name in dct else object.__getattribute__(self, name) - * - */ - } - - /* "src/gevent/local.py":415 - * # But this is faster than a loop over mro() checking each class __dict__ - * # manually. - * if name in dct: # <<<<<<<<<<<<<< - * if name not in self._local_type_vars: - * # If there is a dict value, and nothing in the type, - */ - if (unlikely(__pyx_v_dct == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 415, __pyx_L1_error) - } - __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_v_name, __pyx_v_dct, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 415, __pyx_L1_error) - __pyx_t_2 = (__pyx_t_1 != 0); - if (__pyx_t_2) { - - /* "src/gevent/local.py":416 - * # manually. - * if name in dct: - * if name not in self._local_type_vars: # <<<<<<<<<<<<<< - * # If there is a dict value, and nothing in the type, - * # it can't possibly be a descriptor, so it is just returned. - */ - if (unlikely(__pyx_v_self->_local_type_vars == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 416, __pyx_L1_error) - } - __pyx_t_2 = (__Pyx_PySet_ContainsTF(__pyx_v_name, __pyx_v_self->_local_type_vars, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 416, __pyx_L1_error) - __pyx_t_1 = (__pyx_t_2 != 0); - if (__pyx_t_1) { - - /* "src/gevent/local.py":419 - * # If there is a dict value, and nothing in the type, - * # it can't possibly be a descriptor, so it is just returned. - * return dct[name] # <<<<<<<<<<<<<< - * - * # It's in the type *and* in the dict. If the type value is - */ - __Pyx_XDECREF(__pyx_r); - if (unlikely(__pyx_v_dct == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 419, __pyx_L1_error) - } - __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_dct, __pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 419, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - - /* "src/gevent/local.py":416 - * # manually. - * if name in dct: - * if name not in self._local_type_vars: # <<<<<<<<<<<<<< - * # If there is a dict value, and nothing in the type, - * # it can't possibly be a descriptor, so it is just returned. - */ - } - - /* "src/gevent/local.py":428 - * # NOTE that the docs for descriptors say that these methods must be - * # defined on the *class* of the object in the type. - * if name not in self._local_type_get_descriptors: # <<<<<<<<<<<<<< - * # Entirely not a descriptor. Instance wins. - * return dct[name] - */ - if (unlikely(__pyx_v_self->_local_type_get_descriptors == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 428, __pyx_L1_error) - } - __pyx_t_1 = (__Pyx_PySet_ContainsTF(__pyx_v_name, __pyx_v_self->_local_type_get_descriptors, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 428, __pyx_L1_error) - __pyx_t_2 = (__pyx_t_1 != 0); - if (__pyx_t_2) { - - /* "src/gevent/local.py":430 - * if name not in self._local_type_get_descriptors: - * # Entirely not a descriptor. Instance wins. - * return dct[name] # <<<<<<<<<<<<<< - * if name in self._local_type_set_or_del_descriptors: - * # A data descriptor. - */ - __Pyx_XDECREF(__pyx_r); - if (unlikely(__pyx_v_dct == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 430, __pyx_L1_error) - } - __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_dct, __pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 430, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - - /* "src/gevent/local.py":428 - * # NOTE that the docs for descriptors say that these methods must be - * # defined on the *class* of the object in the type. - * if name not in self._local_type_get_descriptors: # <<<<<<<<<<<<<< - * # Entirely not a descriptor. Instance wins. - * return dct[name] - */ - } - - /* "src/gevent/local.py":431 - * # Entirely not a descriptor. Instance wins. - * return dct[name] - * if name in self._local_type_set_or_del_descriptors: # <<<<<<<<<<<<<< - * # A data descriptor. - * # arbitrary code execution while these run. If they touch self again, - */ - if (unlikely(__pyx_v_self->_local_type_set_or_del_descriptors == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 431, __pyx_L1_error) - } - __pyx_t_2 = (__Pyx_PySet_ContainsTF(__pyx_v_name, __pyx_v_self->_local_type_set_or_del_descriptors, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 431, __pyx_L1_error) - __pyx_t_1 = (__pyx_t_2 != 0); - if (__pyx_t_1) { - - /* "src/gevent/local.py":435 - * # arbitrary code execution while these run. If they touch self again, - * # they'll call back into us and we'll repeat the dance. - * type_attr = getattr(self._local_type, name) # <<<<<<<<<<<<<< - * return type(type_attr).__get__(type_attr, self, self._local_type) - * # Last case is a non-data descriptor. Instance wins. - */ - __pyx_t_3 = ((PyObject *)__pyx_v_self->_local_type); - __Pyx_INCREF(__pyx_t_3); - __pyx_t_4 = __Pyx_GetAttr(__pyx_t_3, __pyx_v_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 435, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_v_type_attr = __pyx_t_4; - __pyx_t_4 = 0; - - /* "src/gevent/local.py":436 - * # they'll call back into us and we'll repeat the dance. - * type_attr = getattr(self._local_type, name) - * return type(type_attr).__get__(type_attr, self, self._local_type) # <<<<<<<<<<<<<< - * # Last case is a non-data descriptor. Instance wins. - * return dct[name] - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_type_attr)), __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 436, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_7 = NULL; - __pyx_t_6 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_7); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_6 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_v_type_attr, ((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_self->_local_type)}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 436, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_4); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_v_type_attr, ((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_self->_local_type)}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 436, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_4); - } else - #endif - { - __pyx_t_8 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 436, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - if (__pyx_t_7) { - __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL; - } - __Pyx_INCREF(__pyx_v_type_attr); - __Pyx_GIVEREF(__pyx_v_type_attr); - PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_6, __pyx_v_type_attr); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_6, ((PyObject *)__pyx_v_self)); - __Pyx_INCREF(((PyObject *)__pyx_v_self->_local_type)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self->_local_type)); - PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_6, ((PyObject *)__pyx_v_self->_local_type)); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 436, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_4; - __pyx_t_4 = 0; - goto __pyx_L0; - - /* "src/gevent/local.py":431 - * # Entirely not a descriptor. Instance wins. - * return dct[name] - * if name in self._local_type_set_or_del_descriptors: # <<<<<<<<<<<<<< - * # A data descriptor. - * # arbitrary code execution while these run. If they touch self again, - */ - } - - /* "src/gevent/local.py":438 - * return type(type_attr).__get__(type_attr, self, self._local_type) - * # Last case is a non-data descriptor. Instance wins. - * return dct[name] # <<<<<<<<<<<<<< - * - * if name in self._local_type_vars: - */ - __Pyx_XDECREF(__pyx_r); - if (unlikely(__pyx_v_dct == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 438, __pyx_L1_error) - } - __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_dct, __pyx_v_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 438, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_r = __pyx_t_4; - __pyx_t_4 = 0; - goto __pyx_L0; - - /* "src/gevent/local.py":415 - * # But this is faster than a loop over mro() checking each class __dict__ - * # manually. - * if name in dct: # <<<<<<<<<<<<<< - * if name not in self._local_type_vars: - * # If there is a dict value, and nothing in the type, - */ - } - - /* "src/gevent/local.py":440 - * return dct[name] - * - * if name in self._local_type_vars: # <<<<<<<<<<<<<< - * # Not in the dictionary, but is found in the type. It could be - * # a non-data descriptor still. Some descriptors, like @staticmethod, - */ - if (unlikely(__pyx_v_self->_local_type_vars == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 440, __pyx_L1_error) - } - __pyx_t_1 = (__Pyx_PySet_ContainsTF(__pyx_v_name, __pyx_v_self->_local_type_vars, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 440, __pyx_L1_error) - __pyx_t_2 = (__pyx_t_1 != 0); - if (__pyx_t_2) { - - /* "src/gevent/local.py":447 - * # So we can't rely on getattr() on the type for them, we have to - * # look through the MRO dicts ourself. - * if name not in self._local_type_get_descriptors: # <<<<<<<<<<<<<< - * # Not a descriptor, can't execute code. So all we need is - * # the return value of getattr() on our type. - */ - if (unlikely(__pyx_v_self->_local_type_get_descriptors == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 447, __pyx_L1_error) - } - __pyx_t_2 = (__Pyx_PySet_ContainsTF(__pyx_v_name, __pyx_v_self->_local_type_get_descriptors, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 447, __pyx_L1_error) - __pyx_t_1 = (__pyx_t_2 != 0); - if (__pyx_t_1) { - - /* "src/gevent/local.py":450 - * # Not a descriptor, can't execute code. So all we need is - * # the return value of getattr() on our type. - * return getattr(self._local_type, name) # <<<<<<<<<<<<<< - * - * for base in self._local_type.mro(): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = ((PyObject *)__pyx_v_self->_local_type); - __Pyx_INCREF(__pyx_t_4); - __pyx_t_3 = __Pyx_GetAttr(__pyx_t_4, __pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 450, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - - /* "src/gevent/local.py":447 - * # So we can't rely on getattr() on the type for them, we have to - * # look through the MRO dicts ourself. - * if name not in self._local_type_get_descriptors: # <<<<<<<<<<<<<< - * # Not a descriptor, can't execute code. So all we need is - * # the return value of getattr() on our type. - */ - } - - /* "src/gevent/local.py":452 - * return getattr(self._local_type, name) - * - * for base in self._local_type.mro(): # <<<<<<<<<<<<<< - * bd = base.__dict__ - * if name in bd: - */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_local_type), __pyx_n_s_mro); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 452, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_8 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_8)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_8); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (__pyx_t_8) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 452, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 452, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { - __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); __pyx_t_9 = 0; - __pyx_t_10 = NULL; - } else { - __pyx_t_9 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 452, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_10 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 452, __pyx_L1_error) - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - for (;;) { - if (likely(!__pyx_t_10)) { - if (likely(PyList_CheckExact(__pyx_t_4))) { - if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_4)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_9); __Pyx_INCREF(__pyx_t_3); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 452, __pyx_L1_error) - #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 452, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - #endif - } else { - if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_4)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_9); __Pyx_INCREF(__pyx_t_3); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 452, __pyx_L1_error) - #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 452, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - #endif - } - } else { - __pyx_t_3 = __pyx_t_10(__pyx_t_4); - if (unlikely(!__pyx_t_3)) { - PyObject* exc_type = PyErr_Occurred(); - if (exc_type) { - if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 452, __pyx_L1_error) - } - break; - } - __Pyx_GOTREF(__pyx_t_3); - } - __Pyx_XDECREF_SET(__pyx_v_base, __pyx_t_3); - __pyx_t_3 = 0; - - /* "src/gevent/local.py":453 - * - * for base in self._local_type.mro(): - * bd = base.__dict__ # <<<<<<<<<<<<<< - * if name in bd: - * attr_on_type = bd[name] - */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_base, __pyx_n_s_dict); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 453, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_XDECREF_SET(__pyx_v_bd, __pyx_t_3); - __pyx_t_3 = 0; - - /* "src/gevent/local.py":454 - * for base in self._local_type.mro(): - * bd = base.__dict__ - * if name in bd: # <<<<<<<<<<<<<< - * attr_on_type = bd[name] - * result = type(attr_on_type).__get__(attr_on_type, self, self._local_type) - */ - __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_name, __pyx_v_bd, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 454, __pyx_L1_error) - __pyx_t_2 = (__pyx_t_1 != 0); - if (__pyx_t_2) { - - /* "src/gevent/local.py":455 - * bd = base.__dict__ - * if name in bd: - * attr_on_type = bd[name] # <<<<<<<<<<<<<< - * result = type(attr_on_type).__get__(attr_on_type, self, self._local_type) - * return result - */ - __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_bd, __pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 455, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_v_attr_on_type = __pyx_t_3; - __pyx_t_3 = 0; - - /* "src/gevent/local.py":456 - * if name in bd: - * attr_on_type = bd[name] - * result = type(attr_on_type).__get__(attr_on_type, self, self._local_type) # <<<<<<<<<<<<<< - * return result - * - */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_attr_on_type)), __pyx_n_s_get); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 456, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_7 = NULL; - __pyx_t_6 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8); - if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); - __Pyx_INCREF(__pyx_t_7); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_8, function); - __pyx_t_6 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_8)) { - PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_v_attr_on_type, ((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_self->_local_type)}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 456, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_3); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { - PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_v_attr_on_type, ((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_self->_local_type)}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 456, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_3); - } else - #endif - { - __pyx_t_5 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 456, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (__pyx_t_7) { - __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __pyx_t_7 = NULL; - } - __Pyx_INCREF(__pyx_v_attr_on_type); - __Pyx_GIVEREF(__pyx_v_attr_on_type); - PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_v_attr_on_type); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, ((PyObject *)__pyx_v_self)); - __Pyx_INCREF(((PyObject *)__pyx_v_self->_local_type)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self->_local_type)); - PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_6, ((PyObject *)__pyx_v_self->_local_type)); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 456, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_v_result = __pyx_t_3; - __pyx_t_3 = 0; - - /* "src/gevent/local.py":457 - * attr_on_type = bd[name] - * result = type(attr_on_type).__get__(attr_on_type, self, self._local_type) - * return result # <<<<<<<<<<<<<< - * - * # It wasn't in the dict and it wasn't in the type. - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_result); - __pyx_r = __pyx_v_result; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - goto __pyx_L0; - - /* "src/gevent/local.py":454 - * for base in self._local_type.mro(): - * bd = base.__dict__ - * if name in bd: # <<<<<<<<<<<<<< - * attr_on_type = bd[name] - * result = type(attr_on_type).__get__(attr_on_type, self, self._local_type) - */ - } - - /* "src/gevent/local.py":452 - * return getattr(self._local_type, name) - * - * for base in self._local_type.mro(): # <<<<<<<<<<<<<< - * bd = base.__dict__ - * if name in bd: - */ - } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "src/gevent/local.py":440 - * return dct[name] - * - * if name in self._local_type_vars: # <<<<<<<<<<<<<< - * # Not in the dictionary, but is found in the type. It could be - * # a non-data descriptor still. Some descriptors, like @staticmethod, - */ - } - - /* "src/gevent/local.py":463 - * # exists, otherwise raise an AttributeError. - * # we will invoke type(self).__getattr__ or raise an attribute error. - * if hasattr(self._local_type, '__getattr__'): # <<<<<<<<<<<<<< - * return self._local_type.__getattr__(self, name) - * raise AttributeError("%r object has no attribute '%s'" - */ - __pyx_t_4 = ((PyObject *)__pyx_v_self->_local_type); - __Pyx_INCREF(__pyx_t_4); - __pyx_t_2 = __Pyx_HasAttr(__pyx_t_4, __pyx_n_s_getattr); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 463, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_1 = (__pyx_t_2 != 0); - if (__pyx_t_1) { - - /* "src/gevent/local.py":464 - * # we will invoke type(self).__getattr__ or raise an attribute error. - * if hasattr(self._local_type, '__getattr__'): - * return self._local_type.__getattr__(self, name) # <<<<<<<<<<<<<< - * raise AttributeError("%r object has no attribute '%s'" - * % (self._local_type.__name__, name)) - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_local_type), __pyx_n_s_getattr); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 464, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_8 = NULL; - __pyx_t_6 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_8)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_8); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_6 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[3] = {__pyx_t_8, ((PyObject *)__pyx_v_self), __pyx_v_name}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 464, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_GOTREF(__pyx_t_4); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[3] = {__pyx_t_8, ((PyObject *)__pyx_v_self), __pyx_v_name}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 464, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_GOTREF(__pyx_t_4); - } else - #endif - { - __pyx_t_5 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 464, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (__pyx_t_8) { - __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8); __pyx_t_8 = NULL; - } - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, ((PyObject *)__pyx_v_self)); - __Pyx_INCREF(__pyx_v_name); - __Pyx_GIVEREF(__pyx_v_name); - PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_v_name); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 464, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_4; - __pyx_t_4 = 0; - goto __pyx_L0; - - /* "src/gevent/local.py":463 - * # exists, otherwise raise an AttributeError. - * # we will invoke type(self).__getattr__ or raise an attribute error. - * if hasattr(self._local_type, '__getattr__'): # <<<<<<<<<<<<<< - * return self._local_type.__getattr__(self, name) - * raise AttributeError("%r object has no attribute '%s'" - */ - } - - /* "src/gevent/local.py":466 - * return self._local_type.__getattr__(self, name) - * raise AttributeError("%r object has no attribute '%s'" - * % (self._local_type.__name__, name)) # <<<<<<<<<<<<<< - * - * def __setattr__(self, name, value): - */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_local_type), __pyx_n_s_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 466, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 466, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); - __Pyx_INCREF(__pyx_v_name); - __Pyx_GIVEREF(__pyx_v_name); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_name); - __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_r_object_has_no_attribute_s, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 466, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "src/gevent/local.py":465 - * if hasattr(self._local_type, '__getattr__'): - * return self._local_type.__getattr__(self, name) - * raise AttributeError("%r object has no attribute '%s'" # <<<<<<<<<<<<<< - * % (self._local_type.__name__, name)) - * - */ - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_AttributeError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 465, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 465, __pyx_L1_error) - - /* "src/gevent/local.py":382 - * self._local_type_vars = set(dir(self._local_type)) - * - * def __getattribute__(self, name): # pylint:disable=too-many-return-statements # <<<<<<<<<<<<<< - * if name in _local_attrs: - * # The _local__impl, __cinit__, etc, won't be hit by the - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_AddTraceback("gevent._local.local.__getattribute__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_dct); - __Pyx_XDECREF(__pyx_v_type_attr); - __Pyx_XDECREF(__pyx_v_base); - __Pyx_XDECREF(__pyx_v_bd); - __Pyx_XDECREF(__pyx_v_attr_on_type); - __Pyx_XDECREF(__pyx_v_result); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/local.py":468 - * % (self._local_type.__name__, name)) - * - * def __setattr__(self, name, value): # <<<<<<<<<<<<<< - * if name == '__dict__': - * raise AttributeError( - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_6_local_5local_5__setattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_6gevent_6_local_5local_5__setattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__setattr__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_local_5local_4__setattr__(((struct __pyx_obj_6gevent_6_local_local *)__pyx_v_self), ((PyObject *)__pyx_v_name), ((PyObject *)__pyx_v_value)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_6_local_5local_4__setattr__(struct __pyx_obj_6gevent_6_local_local *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value) { - PyObject *__pyx_v_dct = NULL; - PyObject *__pyx_v_type_attr = NULL; - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - PyObject *__pyx_t_7 = NULL; - __Pyx_RefNannySetupContext("__setattr__", 0); - - /* "src/gevent/local.py":469 - * - * def __setattr__(self, name, value): - * if name == '__dict__': # <<<<<<<<<<<<<< - * raise AttributeError( - * "%r object attribute '__dict__' is read-only" - */ - __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_dict, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 469, __pyx_L1_error) - if (unlikely(__pyx_t_1)) { - - /* "src/gevent/local.py":472 - * raise AttributeError( - * "%r object attribute '__dict__' is read-only" - * % type(self)) # <<<<<<<<<<<<<< - * - * if name in _local_attrs: - */ - __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_r_object_attribute___dict___is, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 472, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - - /* "src/gevent/local.py":470 - * def __setattr__(self, name, value): - * if name == '__dict__': - * raise AttributeError( # <<<<<<<<<<<<<< - * "%r object attribute '__dict__' is read-only" - * % type(self)) - */ - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_AttributeError, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 470, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 470, __pyx_L1_error) - - /* "src/gevent/local.py":469 - * - * def __setattr__(self, name, value): - * if name == '__dict__': # <<<<<<<<<<<<<< - * raise AttributeError( - * "%r object attribute '__dict__' is read-only" - */ - } - - /* "src/gevent/local.py":474 - * % type(self)) - * - * if name in _local_attrs: # <<<<<<<<<<<<<< - * object.__setattr__(self, name, value) - * return - */ - if (unlikely(__pyx_v_6gevent_6_local__local_attrs == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 474, __pyx_L1_error) - } - __pyx_t_1 = (__Pyx_PySet_ContainsTF(__pyx_v_name, __pyx_v_6gevent_6_local__local_attrs, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 474, __pyx_L1_error) - __pyx_t_4 = (__pyx_t_1 != 0); - if (__pyx_t_4) { - - /* "src/gevent/local.py":475 - * - * if name in _local_attrs: - * object.__setattr__(self, name, value) # <<<<<<<<<<<<<< - * return - * - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_builtin_object, __pyx_n_s_setattr); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 475, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = NULL; - __pyx_t_6 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_6 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[4] = {__pyx_t_5, ((PyObject *)__pyx_v_self), __pyx_v_name, __pyx_v_value}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 475, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_3); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[4] = {__pyx_t_5, ((PyObject *)__pyx_v_self), __pyx_v_name, __pyx_v_value}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 475, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_3); - } else - #endif - { - __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 475, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (__pyx_t_5) { - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; - } - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, ((PyObject *)__pyx_v_self)); - __Pyx_INCREF(__pyx_v_name); - __Pyx_GIVEREF(__pyx_v_name); - PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_name); - __Pyx_INCREF(__pyx_v_value); - __Pyx_GIVEREF(__pyx_v_value); - PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_v_value); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 475, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "src/gevent/local.py":476 - * if name in _local_attrs: - * object.__setattr__(self, name, value) - * return # <<<<<<<<<<<<<< - * - * dct = _local_get_dict(self) - */ - __pyx_r = 0; - goto __pyx_L0; - - /* "src/gevent/local.py":474 - * % type(self)) - * - * if name in _local_attrs: # <<<<<<<<<<<<<< - * object.__setattr__(self, name, value) - * return - */ - } - - /* "src/gevent/local.py":478 - * return - * - * dct = _local_get_dict(self) # <<<<<<<<<<<<<< - * - * if self._local_type is local: - */ - __pyx_t_3 = __pyx_f_6gevent_6_local__local_get_dict(__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 478, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_v_dct = ((PyObject*)__pyx_t_3); - __pyx_t_3 = 0; - - /* "src/gevent/local.py":480 - * dct = _local_get_dict(self) - * - * if self._local_type is local: # <<<<<<<<<<<<<< - * # Optimization: If we're not subclassed, we can't - * # have data descriptors, so this goes right in the dict. - */ - __pyx_t_4 = (__pyx_v_self->_local_type == __pyx_ptype_6gevent_6_local_local); - __pyx_t_1 = (__pyx_t_4 != 0); - if (__pyx_t_1) { - - /* "src/gevent/local.py":483 - * # Optimization: If we're not subclassed, we can't - * # have data descriptors, so this goes right in the dict. - * dct[name] = value # <<<<<<<<<<<<<< - * return - * - */ - if (unlikely(__pyx_v_dct == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 483, __pyx_L1_error) - } - if (unlikely(PyDict_SetItem(__pyx_v_dct, __pyx_v_name, __pyx_v_value) < 0)) __PYX_ERR(0, 483, __pyx_L1_error) - - /* "src/gevent/local.py":484 - * # have data descriptors, so this goes right in the dict. - * dct[name] = value - * return # <<<<<<<<<<<<<< - * - * if name in self._local_type_vars: - */ - __pyx_r = 0; - goto __pyx_L0; - - /* "src/gevent/local.py":480 - * dct = _local_get_dict(self) - * - * if self._local_type is local: # <<<<<<<<<<<<<< - * # Optimization: If we're not subclassed, we can't - * # have data descriptors, so this goes right in the dict. - */ - } - - /* "src/gevent/local.py":486 - * return - * - * if name in self._local_type_vars: # <<<<<<<<<<<<<< - * if name in self._local_type_set_descriptors: - * type_attr = getattr(self._local_type, name, _marker) - */ - if (unlikely(__pyx_v_self->_local_type_vars == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 486, __pyx_L1_error) - } - __pyx_t_1 = (__Pyx_PySet_ContainsTF(__pyx_v_name, __pyx_v_self->_local_type_vars, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 486, __pyx_L1_error) - __pyx_t_4 = (__pyx_t_1 != 0); - if (__pyx_t_4) { - - /* "src/gevent/local.py":487 - * - * if name in self._local_type_vars: - * if name in self._local_type_set_descriptors: # <<<<<<<<<<<<<< - * type_attr = getattr(self._local_type, name, _marker) - * # A data descriptor, like a property or a slot. - */ - if (unlikely(__pyx_v_self->_local_type_set_descriptors == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 487, __pyx_L1_error) - } - __pyx_t_4 = (__Pyx_PySet_ContainsTF(__pyx_v_name, __pyx_v_self->_local_type_set_descriptors, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 487, __pyx_L1_error) - __pyx_t_1 = (__pyx_t_4 != 0); - if (__pyx_t_1) { - - /* "src/gevent/local.py":488 - * if name in self._local_type_vars: - * if name in self._local_type_set_descriptors: - * type_attr = getattr(self._local_type, name, _marker) # <<<<<<<<<<<<<< - * # A data descriptor, like a property or a slot. - * type(type_attr).__set__(type_attr, self, value) - */ - __pyx_t_3 = ((PyObject *)__pyx_v_self->_local_type); - __Pyx_INCREF(__pyx_t_3); - __pyx_t_2 = __pyx_v_6gevent_6_local__marker; - __Pyx_INCREF(__pyx_t_2); - __pyx_t_7 = __Pyx_GetAttr3(__pyx_t_3, __pyx_v_name, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 488, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_type_attr = __pyx_t_7; - __pyx_t_7 = 0; - - /* "src/gevent/local.py":490 - * type_attr = getattr(self._local_type, name, _marker) - * # A data descriptor, like a property or a slot. - * type(type_attr).__set__(type_attr, self, value) # <<<<<<<<<<<<<< - * return - * # Otherwise it goes directly in the dict - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_type_attr)), __pyx_n_s_set); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 490, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - __pyx_t_6 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_6 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_type_attr, ((PyObject *)__pyx_v_self), __pyx_v_value}; - __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 490, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_7); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_type_attr, ((PyObject *)__pyx_v_self), __pyx_v_value}; - __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 490, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_7); - } else - #endif - { - __pyx_t_5 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 490, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (__pyx_t_3) { - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; - } - __Pyx_INCREF(__pyx_v_type_attr); - __Pyx_GIVEREF(__pyx_v_type_attr); - PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_v_type_attr); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, ((PyObject *)__pyx_v_self)); - __Pyx_INCREF(__pyx_v_value); - __Pyx_GIVEREF(__pyx_v_value); - PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_6, __pyx_v_value); - __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 490, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - - /* "src/gevent/local.py":491 - * # A data descriptor, like a property or a slot. - * type(type_attr).__set__(type_attr, self, value) - * return # <<<<<<<<<<<<<< - * # Otherwise it goes directly in the dict - * dct[name] = value - */ - __pyx_r = 0; - goto __pyx_L0; - - /* "src/gevent/local.py":487 - * - * if name in self._local_type_vars: - * if name in self._local_type_set_descriptors: # <<<<<<<<<<<<<< - * type_attr = getattr(self._local_type, name, _marker) - * # A data descriptor, like a property or a slot. - */ - } - - /* "src/gevent/local.py":486 - * return - * - * if name in self._local_type_vars: # <<<<<<<<<<<<<< - * if name in self._local_type_set_descriptors: - * type_attr = getattr(self._local_type, name, _marker) - */ - } - - /* "src/gevent/local.py":493 - * return - * # Otherwise it goes directly in the dict - * dct[name] = value # <<<<<<<<<<<<<< - * - * def __delattr__(self, name): - */ - if (unlikely(__pyx_v_dct == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 493, __pyx_L1_error) - } - if (unlikely(PyDict_SetItem(__pyx_v_dct, __pyx_v_name, __pyx_v_value) < 0)) __PYX_ERR(0, 493, __pyx_L1_error) - - /* "src/gevent/local.py":468 - * % (self._local_type.__name__, name)) - * - * def __setattr__(self, name, value): # <<<<<<<<<<<<<< - * if name == '__dict__': - * raise AttributeError( - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("gevent._local.local.__setattr__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_dct); - __Pyx_XDECREF(__pyx_v_type_attr); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/local.py":495 - * dct[name] = value - * - * def __delattr__(self, name): # <<<<<<<<<<<<<< - * if name == '__dict__': - * raise AttributeError( - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_6_local_5local_7__delattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/ -static int __pyx_pw_6gevent_6_local_5local_7__delattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_name) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__delattr__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_local_5local_6__delattr__(((struct __pyx_obj_6gevent_6_local_local *)__pyx_v_self), ((PyObject *)__pyx_v_name)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_6_local_5local_6__delattr__(struct __pyx_obj_6gevent_6_local_local *__pyx_v_self, PyObject *__pyx_v_name) { - PyObject *__pyx_v_type_attr = NULL; - PyObject *__pyx_v_dct = NULL; - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - __Pyx_RefNannySetupContext("__delattr__", 0); - - /* "src/gevent/local.py":496 - * - * def __delattr__(self, name): - * if name == '__dict__': # <<<<<<<<<<<<<< - * raise AttributeError( - * "%r object attribute '__dict__' is read-only" - */ - __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_dict, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 496, __pyx_L1_error) - if (unlikely(__pyx_t_1)) { - - /* "src/gevent/local.py":499 - * raise AttributeError( - * "%r object attribute '__dict__' is read-only" - * % self.__class__.__name__) # <<<<<<<<<<<<<< - * - * if name in self._local_type_vars: - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 499, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 499, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_r_object_attribute___dict___is, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 499, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "src/gevent/local.py":497 - * def __delattr__(self, name): - * if name == '__dict__': - * raise AttributeError( # <<<<<<<<<<<<<< - * "%r object attribute '__dict__' is read-only" - * % self.__class__.__name__) - */ - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_AttributeError, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 497, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 497, __pyx_L1_error) - - /* "src/gevent/local.py":496 - * - * def __delattr__(self, name): - * if name == '__dict__': # <<<<<<<<<<<<<< - * raise AttributeError( - * "%r object attribute '__dict__' is read-only" - */ - } - - /* "src/gevent/local.py":501 - * % self.__class__.__name__) - * - * if name in self._local_type_vars: # <<<<<<<<<<<<<< - * if name in self._local_type_del_descriptors: - * # A data descriptor, like a property or a slot. - */ - if (unlikely(__pyx_v_self->_local_type_vars == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 501, __pyx_L1_error) - } - __pyx_t_1 = (__Pyx_PySet_ContainsTF(__pyx_v_name, __pyx_v_self->_local_type_vars, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 501, __pyx_L1_error) - __pyx_t_4 = (__pyx_t_1 != 0); - if (__pyx_t_4) { - - /* "src/gevent/local.py":502 - * - * if name in self._local_type_vars: - * if name in self._local_type_del_descriptors: # <<<<<<<<<<<<<< - * # A data descriptor, like a property or a slot. - * type_attr = getattr(self._local_type, name, _marker) - */ - if (unlikely(__pyx_v_self->_local_type_del_descriptors == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 502, __pyx_L1_error) - } - __pyx_t_4 = (__Pyx_PySet_ContainsTF(__pyx_v_name, __pyx_v_self->_local_type_del_descriptors, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 502, __pyx_L1_error) - __pyx_t_1 = (__pyx_t_4 != 0); - if (__pyx_t_1) { - - /* "src/gevent/local.py":504 - * if name in self._local_type_del_descriptors: - * # A data descriptor, like a property or a slot. - * type_attr = getattr(self._local_type, name, _marker) # <<<<<<<<<<<<<< - * type(type_attr).__delete__(type_attr, self) - * return - */ - __pyx_t_3 = ((PyObject *)__pyx_v_self->_local_type); - __Pyx_INCREF(__pyx_t_3); - __pyx_t_2 = __pyx_v_6gevent_6_local__marker; - __Pyx_INCREF(__pyx_t_2); - __pyx_t_5 = __Pyx_GetAttr3(__pyx_t_3, __pyx_v_name, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 504, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_type_attr = __pyx_t_5; - __pyx_t_5 = 0; - - /* "src/gevent/local.py":505 - * # A data descriptor, like a property or a slot. - * type_attr = getattr(self._local_type, name, _marker) - * type(type_attr).__delete__(type_attr, self) # <<<<<<<<<<<<<< - * return - * # Otherwise it goes directly in the dict - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_type_attr)), __pyx_n_s_delete); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 505, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - __pyx_t_6 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_6 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_type_attr, ((PyObject *)__pyx_v_self)}; - __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 505, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_5); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_type_attr, ((PyObject *)__pyx_v_self)}; - __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 505, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_5); - } else - #endif - { - __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 505, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (__pyx_t_3) { - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __pyx_t_3 = NULL; - } - __Pyx_INCREF(__pyx_v_type_attr); - __Pyx_GIVEREF(__pyx_v_type_attr); - PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_type_attr); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, ((PyObject *)__pyx_v_self)); - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 505, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - - /* "src/gevent/local.py":506 - * type_attr = getattr(self._local_type, name, _marker) - * type(type_attr).__delete__(type_attr, self) - * return # <<<<<<<<<<<<<< - * # Otherwise it goes directly in the dict - * - */ - __pyx_r = 0; - goto __pyx_L0; - - /* "src/gevent/local.py":502 - * - * if name in self._local_type_vars: - * if name in self._local_type_del_descriptors: # <<<<<<<<<<<<<< - * # A data descriptor, like a property or a slot. - * type_attr = getattr(self._local_type, name, _marker) - */ - } - - /* "src/gevent/local.py":501 - * % self.__class__.__name__) - * - * if name in self._local_type_vars: # <<<<<<<<<<<<<< - * if name in self._local_type_del_descriptors: - * # A data descriptor, like a property or a slot. - */ - } - - /* "src/gevent/local.py":510 - * - * # Begin inlined function _get_dict() - * dct = _local_get_dict(self) # <<<<<<<<<<<<<< - * - * try: - */ - __pyx_t_5 = __pyx_f_6gevent_6_local__local_get_dict(__pyx_v_self); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 510, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_v_dct = ((PyObject*)__pyx_t_5); - __pyx_t_5 = 0; - - /* "src/gevent/local.py":512 - * dct = _local_get_dict(self) - * - * try: # <<<<<<<<<<<<<< - * del dct[name] - * except KeyError: - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10); - __Pyx_XGOTREF(__pyx_t_8); - __Pyx_XGOTREF(__pyx_t_9); - __Pyx_XGOTREF(__pyx_t_10); - /*try:*/ { - - /* "src/gevent/local.py":513 - * - * try: - * del dct[name] # <<<<<<<<<<<<<< - * except KeyError: - * raise AttributeError(name) - */ - if (unlikely(__pyx_v_dct == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 513, __pyx_L6_error) - } - if (unlikely(PyDict_DelItem(__pyx_v_dct, __pyx_v_name) < 0)) __PYX_ERR(0, 513, __pyx_L6_error) - - /* "src/gevent/local.py":512 - * dct = _local_get_dict(self) - * - * try: # <<<<<<<<<<<<<< - * del dct[name] - * except KeyError: - */ - } - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; - goto __pyx_L11_try_end; - __pyx_L6_error:; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - - /* "src/gevent/local.py":514 - * try: - * del dct[name] - * except KeyError: # <<<<<<<<<<<<<< - * raise AttributeError(name) - * - */ - __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError); - if (__pyx_t_6) { - __Pyx_AddTraceback("gevent._local.local.__delattr__", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_2, &__pyx_t_7) < 0) __PYX_ERR(0, 514, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GOTREF(__pyx_t_7); - - /* "src/gevent/local.py":515 - * del dct[name] - * except KeyError: - * raise AttributeError(name) # <<<<<<<<<<<<<< - * - * def __copy__(self): - */ - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_AttributeError, __pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 515, __pyx_L8_except_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 515, __pyx_L8_except_error) - } - goto __pyx_L8_except_error; - __pyx_L8_except_error:; - - /* "src/gevent/local.py":512 - * dct = _local_get_dict(self) - * - * try: # <<<<<<<<<<<<<< - * del dct[name] - * except KeyError: - */ - __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_XGIVEREF(__pyx_t_9); - __Pyx_XGIVEREF(__pyx_t_10); - __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10); - goto __pyx_L1_error; - __pyx_L11_try_end:; - } - - /* "src/gevent/local.py":495 - * dct[name] = value - * - * def __delattr__(self, name): # <<<<<<<<<<<<<< - * if name == '__dict__': - * raise AttributeError( - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("gevent._local.local.__delattr__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_type_attr); - __Pyx_XDECREF(__pyx_v_dct); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/local.py":517 - * raise AttributeError(name) - * - * def __copy__(self): # <<<<<<<<<<<<<< - * impl = self._local__impl - * entry = impl.dicts[id(getcurrent())] # pylint:disable=undefined-variable - */ - -static PyObject *__pyx_pw_6gevent_6_local_5local_9__copy__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static struct __pyx_obj_6gevent_6_local_local *__pyx_f_6gevent_6_local_5local___copy__(struct __pyx_obj_6gevent_6_local_local *__pyx_v_self, int __pyx_skip_dispatch) { - struct __pyx_obj_6gevent_6_local__localimpl_dict_entry *__pyx_v_entry = 0; - PyObject *__pyx_v_dct = 0; - PyObject *__pyx_v_duplicate = 0; - struct __pyx_obj_6gevent_6_local_local *__pyx_v_instance = 0; - struct __pyx_obj_6gevent_6_local__localimpl *__pyx_v_impl = NULL; - PyTypeObject *__pyx_v_cls = NULL; - struct __pyx_obj_6gevent_6_local_local *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("__copy__", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_copy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 517, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_6_local_5local_9__copy__)) { - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 517, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 517, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6gevent_6_local_local))))) __PYX_ERR(0, 517, __pyx_L1_error) - __pyx_r = ((struct __pyx_obj_6gevent_6_local_local *)__pyx_t_2); - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/local.py":518 - * - * def __copy__(self): - * impl = self._local__impl # <<<<<<<<<<<<<< - * entry = impl.dicts[id(getcurrent())] # pylint:disable=undefined-variable - * - */ - __pyx_t_1 = ((PyObject *)__pyx_v_self->_local__impl); - __Pyx_INCREF(__pyx_t_1); - __pyx_v_impl = ((struct __pyx_obj_6gevent_6_local__localimpl *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/local.py":519 - * def __copy__(self): - * impl = self._local__impl - * entry = impl.dicts[id(getcurrent())] # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * - * dct = entry.localdict - */ - if (unlikely(__pyx_v_impl->dicts == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 519, __pyx_L1_error) - } - __pyx_t_1 = ((PyObject *)__pyx_f_6gevent_6_local_getcurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 519, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 519, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_impl->dicts, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 519, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6gevent_6_local__localimpl_dict_entry))))) __PYX_ERR(0, 519, __pyx_L1_error) - __pyx_v_entry = ((struct __pyx_obj_6gevent_6_local__localimpl_dict_entry *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/local.py":521 - * entry = impl.dicts[id(getcurrent())] # pylint:disable=undefined-variable - * - * dct = entry.localdict # <<<<<<<<<<<<<< - * duplicate = copy(dct) - * - */ - __pyx_t_1 = __pyx_v_entry->localdict; - __Pyx_INCREF(__pyx_t_1); - __pyx_v_dct = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/local.py":522 - * - * dct = entry.localdict - * duplicate = copy(dct) # <<<<<<<<<<<<<< - * - * cls = type(self) - */ - __Pyx_INCREF(__pyx_v_6gevent_6_local_copy); - __pyx_t_2 = __pyx_v_6gevent_6_local_copy; __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_dct); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 522, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_dct}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 522, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_dct}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 522, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 522, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(__pyx_v_dct); - __Pyx_GIVEREF(__pyx_v_dct); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_dct); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 522, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 522, __pyx_L1_error) - __pyx_v_duplicate = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/local.py":524 - * duplicate = copy(dct) - * - * cls = type(self) # <<<<<<<<<<<<<< - * instance = cls(*impl.localargs, **impl.localkwargs) - * _local__copy_dict_from(instance, impl, duplicate) - */ - __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - __pyx_v_cls = ((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - - /* "src/gevent/local.py":525 - * - * cls = type(self) - * instance = cls(*impl.localargs, **impl.localkwargs) # <<<<<<<<<<<<<< - * _local__copy_dict_from(instance, impl, duplicate) - * return instance - */ - if (unlikely(__pyx_v_impl->localargs == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 525, __pyx_L1_error) - } - if (unlikely(__pyx_v_impl->localkwargs == Py_None)) { - PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType"); - __PYX_ERR(0, 525, __pyx_L1_error) - } - __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_v_cls), __pyx_v_impl->localargs, __pyx_v_impl->localkwargs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 525, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6gevent_6_local_local))))) __PYX_ERR(0, 525, __pyx_L1_error) - __pyx_v_instance = ((struct __pyx_obj_6gevent_6_local_local *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/local.py":526 - * cls = type(self) - * instance = cls(*impl.localargs, **impl.localkwargs) - * _local__copy_dict_from(instance, impl, duplicate) # <<<<<<<<<<<<<< - * return instance - * - */ - __pyx_t_1 = __pyx_f_6gevent_6_local__local__copy_dict_from(__pyx_v_instance, __pyx_v_impl, __pyx_v_duplicate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 526, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/local.py":527 - * instance = cls(*impl.localargs, **impl.localkwargs) - * _local__copy_dict_from(instance, impl, duplicate) - * return instance # <<<<<<<<<<<<<< - * - * def _local__copy_dict_from(self, impl, duplicate): - */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __Pyx_INCREF(((PyObject *)__pyx_v_instance)); - __pyx_r = __pyx_v_instance; - goto __pyx_L0; - - /* "src/gevent/local.py":517 - * raise AttributeError(name) - * - * def __copy__(self): # <<<<<<<<<<<<<< - * impl = self._local__impl - * entry = impl.dicts[id(getcurrent())] # pylint:disable=undefined-variable - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent._local.local.__copy__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_entry); - __Pyx_XDECREF(__pyx_v_dct); - __Pyx_XDECREF(__pyx_v_duplicate); - __Pyx_XDECREF((PyObject *)__pyx_v_instance); - __Pyx_XDECREF((PyObject *)__pyx_v_impl); - __Pyx_XDECREF(__pyx_v_cls); - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_local_5local_9__copy__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_local_5local_8__copy__[] = "local.__copy__(self) -> local"; -static PyMethodDef __pyx_mdef_6gevent_6_local_5local_9__copy__ = {"__copy__", (PyCFunction)__pyx_pw_6gevent_6_local_5local_9__copy__, METH_NOARGS, __pyx_doc_6gevent_6_local_5local_8__copy__}; -static PyObject *__pyx_pw_6gevent_6_local_5local_9__copy__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__copy__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_local_5local_8__copy__(((struct __pyx_obj_6gevent_6_local_local *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_local_5local_8__copy__(struct __pyx_obj_6gevent_6_local_local *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__copy__", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = ((PyObject *)__pyx_f_6gevent_6_local_5local___copy__(__pyx_v_self, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 517, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._local.local.__copy__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/local.py":529 - * return instance - * - * def _local__copy_dict_from(self, impl, duplicate): # <<<<<<<<<<<<<< - * current = getcurrent() # pylint:disable=undefined-variable - * currentId = id(current) - */ - -static PyObject *__pyx_f_6gevent_6_local__local__copy_dict_from(struct __pyx_obj_6gevent_6_local_local *__pyx_v_self, struct __pyx_obj_6gevent_6_local__localimpl *__pyx_v_impl, PyObject *__pyx_v_duplicate) { - struct __pyx_obj_6gevent_6_local__localimpl_dict_entry *__pyx_v_entry = 0; - PyGreenlet *__pyx_v_current = NULL; - PyObject *__pyx_v_currentId = NULL; - struct __pyx_obj_6gevent_6_local__localimpl *__pyx_v_new_impl = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("_local__copy_dict_from", 0); - - /* "src/gevent/local.py":530 - * - * def _local__copy_dict_from(self, impl, duplicate): - * current = getcurrent() # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * currentId = id(current) - * new_impl = self._local__impl - */ - __pyx_t_1 = ((PyObject *)__pyx_f_6gevent_6_local_getcurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 530, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_current = ((PyGreenlet *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/local.py":531 - * def _local__copy_dict_from(self, impl, duplicate): - * current = getcurrent() # pylint:disable=undefined-variable - * currentId = id(current) # <<<<<<<<<<<<<< - * new_impl = self._local__impl - * assert new_impl is not impl - */ - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_current)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 531, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_currentId = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/local.py":532 - * current = getcurrent() # pylint:disable=undefined-variable - * currentId = id(current) - * new_impl = self._local__impl # <<<<<<<<<<<<<< - * assert new_impl is not impl - * entry = new_impl.dicts[currentId] - */ - __pyx_t_1 = ((PyObject *)__pyx_v_self->_local__impl); - __Pyx_INCREF(__pyx_t_1); - __pyx_v_new_impl = ((struct __pyx_obj_6gevent_6_local__localimpl *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/local.py":533 - * currentId = id(current) - * new_impl = self._local__impl - * assert new_impl is not impl # <<<<<<<<<<<<<< - * entry = new_impl.dicts[currentId] - * new_impl.dicts[currentId] = _localimpl_dict_entry(entry.wrgreenlet, duplicate) - */ - #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(!Py_OptimizeFlag)) { - __pyx_t_2 = (__pyx_v_new_impl != __pyx_v_impl); - if (unlikely(!(__pyx_t_2 != 0))) { - PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(0, 533, __pyx_L1_error) - } - } - #endif - - /* "src/gevent/local.py":534 - * new_impl = self._local__impl - * assert new_impl is not impl - * entry = new_impl.dicts[currentId] # <<<<<<<<<<<<<< - * new_impl.dicts[currentId] = _localimpl_dict_entry(entry.wrgreenlet, duplicate) - * - */ - if (unlikely(__pyx_v_new_impl->dicts == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 534, __pyx_L1_error) - } - __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_new_impl->dicts, __pyx_v_currentId); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 534, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6gevent_6_local__localimpl_dict_entry))))) __PYX_ERR(0, 534, __pyx_L1_error) - __pyx_v_entry = ((struct __pyx_obj_6gevent_6_local__localimpl_dict_entry *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/local.py":535 - * assert new_impl is not impl - * entry = new_impl.dicts[currentId] - * new_impl.dicts[currentId] = _localimpl_dict_entry(entry.wrgreenlet, duplicate) # <<<<<<<<<<<<<< - * - * def _local_find_descriptors(self): - */ - __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 535, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_v_entry->wrgreenlet); - __Pyx_GIVEREF(__pyx_v_entry->wrgreenlet); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_entry->wrgreenlet); - __Pyx_INCREF(__pyx_v_duplicate); - __Pyx_GIVEREF(__pyx_v_duplicate); - PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_duplicate); - __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6gevent_6_local__localimpl_dict_entry), __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 535, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(__pyx_v_new_impl->dicts == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 535, __pyx_L1_error) - } - if (unlikely(PyDict_SetItem(__pyx_v_new_impl->dicts, __pyx_v_currentId, __pyx_t_3) < 0)) __PYX_ERR(0, 535, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "src/gevent/local.py":529 - * return instance - * - * def _local__copy_dict_from(self, impl, duplicate): # <<<<<<<<<<<<<< - * current = getcurrent() # pylint:disable=undefined-variable - * currentId = id(current) - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent._local._local__copy_dict_from", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_entry); - __Pyx_XDECREF((PyObject *)__pyx_v_current); - __Pyx_XDECREF(__pyx_v_currentId); - __Pyx_XDECREF((PyObject *)__pyx_v_new_impl); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/local.py":537 - * new_impl.dicts[currentId] = _localimpl_dict_entry(entry.wrgreenlet, duplicate) - * - * def _local_find_descriptors(self): # <<<<<<<<<<<<<< - * type_self = type(self) - * gets = set() - */ - -static PyObject *__pyx_f_6gevent_6_local__local_find_descriptors(struct __pyx_obj_6gevent_6_local_local *__pyx_v_self) { - PyObject *__pyx_v_mro = 0; - PyObject *__pyx_v_gets = 0; - PyObject *__pyx_v_dels = 0; - PyObject *__pyx_v_set_or_del = 0; - PyTypeObject *__pyx_v_type_self = 0; - PyTypeObject *__pyx_v_type_attr = 0; - PyObject *__pyx_v_sets = 0; - PyObject *__pyx_v_attr_name = NULL; - PyObject *__pyx_v_base = NULL; - PyObject *__pyx_v_bd = NULL; - PyObject *__pyx_v_attr = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - Py_ssize_t __pyx_t_4; - PyObject *(*__pyx_t_5)(PyObject *); - Py_ssize_t __pyx_t_6; - int __pyx_t_7; - int __pyx_t_8; - int __pyx_t_9; - __Pyx_RefNannySetupContext("_local_find_descriptors", 0); - - /* "src/gevent/local.py":538 - * - * def _local_find_descriptors(self): - * type_self = type(self) # <<<<<<<<<<<<<< - * gets = set() - * dels = set() - */ - __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - __pyx_v_type_self = ((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - - /* "src/gevent/local.py":539 - * def _local_find_descriptors(self): - * type_self = type(self) - * gets = set() # <<<<<<<<<<<<<< - * dels = set() - * set_or_del = set() - */ - __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 539, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_gets = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/local.py":540 - * type_self = type(self) - * gets = set() - * dels = set() # <<<<<<<<<<<<<< - * set_or_del = set() - * sets = set() - */ - __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 540, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_dels = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/local.py":541 - * gets = set() - * dels = set() - * set_or_del = set() # <<<<<<<<<<<<<< - * sets = set() - * mro = list(type_self.mro()) - */ - __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 541, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_set_or_del = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/local.py":542 - * dels = set() - * set_or_del = set() - * sets = set() # <<<<<<<<<<<<<< - * mro = list(type_self.mro()) - * - */ - __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 542, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_sets = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/local.py":543 - * set_or_del = set() - * sets = set() - * mro = list(type_self.mro()) # <<<<<<<<<<<<<< - * - * for attr_name in dir(type_self): - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_type_self), __pyx_n_s_mro); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 543, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 543, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 543, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PySequence_List(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 543, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_mro = ((PyObject*)__pyx_t_2); - __pyx_t_2 = 0; - - /* "src/gevent/local.py":545 - * mro = list(type_self.mro()) - * - * for attr_name in dir(type_self): # <<<<<<<<<<<<<< - * # Conventionally, descriptors when called on a class - * # return themself, but not all do. Notable exceptions are - */ - __pyx_t_2 = PyObject_Dir(((PyObject *)__pyx_v_type_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 545, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) { - __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0; - __pyx_t_5 = NULL; - } else { - __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 545, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 545, __pyx_L1_error) - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - for (;;) { - if (likely(!__pyx_t_5)) { - if (likely(PyList_CheckExact(__pyx_t_1))) { - if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_1)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 545, __pyx_L1_error) - #else - __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 545, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - #endif - } else { - if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_1)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 545, __pyx_L1_error) - #else - __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 545, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - #endif - } - } else { - __pyx_t_2 = __pyx_t_5(__pyx_t_1); - if (unlikely(!__pyx_t_2)) { - PyObject* exc_type = PyErr_Occurred(); - if (exc_type) { - if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 545, __pyx_L1_error) - } - break; - } - __Pyx_GOTREF(__pyx_t_2); - } - __Pyx_XDECREF_SET(__pyx_v_attr_name, __pyx_t_2); - __pyx_t_2 = 0; - - /* "src/gevent/local.py":551 - * # return other class attributes. So we can't use getattr, and instead - * # walk up the dicts - * for base in mro: # <<<<<<<<<<<<<< - * bd = base.__dict__ - * if attr_name in bd: - */ - __pyx_t_2 = __pyx_v_mro; __Pyx_INCREF(__pyx_t_2); __pyx_t_6 = 0; - for (;;) { - if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_2)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 551, __pyx_L1_error) - #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 551, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - #endif - __Pyx_XDECREF_SET(__pyx_v_base, __pyx_t_3); - __pyx_t_3 = 0; - - /* "src/gevent/local.py":552 - * # walk up the dicts - * for base in mro: - * bd = base.__dict__ # <<<<<<<<<<<<<< - * if attr_name in bd: - * attr = bd[attr_name] - */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_base, __pyx_n_s_dict); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 552, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_XDECREF_SET(__pyx_v_bd, __pyx_t_3); - __pyx_t_3 = 0; - - /* "src/gevent/local.py":553 - * for base in mro: - * bd = base.__dict__ - * if attr_name in bd: # <<<<<<<<<<<<<< - * attr = bd[attr_name] - * break - */ - __pyx_t_7 = (__Pyx_PySequence_ContainsTF(__pyx_v_attr_name, __pyx_v_bd, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 553, __pyx_L1_error) - __pyx_t_8 = (__pyx_t_7 != 0); - if (__pyx_t_8) { - - /* "src/gevent/local.py":554 - * bd = base.__dict__ - * if attr_name in bd: - * attr = bd[attr_name] # <<<<<<<<<<<<<< - * break - * else: - */ - __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_bd, __pyx_v_attr_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 554, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_XDECREF_SET(__pyx_v_attr, __pyx_t_3); - __pyx_t_3 = 0; - - /* "src/gevent/local.py":555 - * if attr_name in bd: - * attr = bd[attr_name] - * break # <<<<<<<<<<<<<< - * else: - * raise AttributeError(attr_name) - */ - goto __pyx_L6_break; - - /* "src/gevent/local.py":553 - * for base in mro: - * bd = base.__dict__ - * if attr_name in bd: # <<<<<<<<<<<<<< - * attr = bd[attr_name] - * break - */ - } - - /* "src/gevent/local.py":551 - * # return other class attributes. So we can't use getattr, and instead - * # walk up the dicts - * for base in mro: # <<<<<<<<<<<<<< - * bd = base.__dict__ - * if attr_name in bd: - */ - } - /*else*/ { - - /* "src/gevent/local.py":557 - * break - * else: - * raise AttributeError(attr_name) # <<<<<<<<<<<<<< - * - * type_attr = type(attr) - */ - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_AttributeError, __pyx_v_attr_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 557, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 557, __pyx_L1_error) - } - - /* "src/gevent/local.py":551 - * # return other class attributes. So we can't use getattr, and instead - * # walk up the dicts - * for base in mro: # <<<<<<<<<<<<<< - * bd = base.__dict__ - * if attr_name in bd: - */ - __pyx_L6_break:; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/local.py":559 - * raise AttributeError(attr_name) - * - * type_attr = type(attr) # <<<<<<<<<<<<<< - * if hasattr(type_attr, '__get__'): - * gets.add(attr_name) - */ - __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_attr))); - __Pyx_XDECREF_SET(__pyx_v_type_attr, ((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_attr)))); - - /* "src/gevent/local.py":560 - * - * type_attr = type(attr) - * if hasattr(type_attr, '__get__'): # <<<<<<<<<<<<<< - * gets.add(attr_name) - * if hasattr(type_attr, '__delete__'): - */ - __pyx_t_8 = __Pyx_HasAttr(((PyObject *)__pyx_v_type_attr), __pyx_n_s_get); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 560, __pyx_L1_error) - __pyx_t_7 = (__pyx_t_8 != 0); - if (__pyx_t_7) { - - /* "src/gevent/local.py":561 - * type_attr = type(attr) - * if hasattr(type_attr, '__get__'): - * gets.add(attr_name) # <<<<<<<<<<<<<< - * if hasattr(type_attr, '__delete__'): - * dels.add(attr_name) - */ - __pyx_t_9 = PySet_Add(__pyx_v_gets, __pyx_v_attr_name); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 561, __pyx_L1_error) - - /* "src/gevent/local.py":560 - * - * type_attr = type(attr) - * if hasattr(type_attr, '__get__'): # <<<<<<<<<<<<<< - * gets.add(attr_name) - * if hasattr(type_attr, '__delete__'): - */ - } - - /* "src/gevent/local.py":562 - * if hasattr(type_attr, '__get__'): - * gets.add(attr_name) - * if hasattr(type_attr, '__delete__'): # <<<<<<<<<<<<<< - * dels.add(attr_name) - * set_or_del.add(attr_name) - */ - __pyx_t_7 = __Pyx_HasAttr(((PyObject *)__pyx_v_type_attr), __pyx_n_s_delete); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 562, __pyx_L1_error) - __pyx_t_8 = (__pyx_t_7 != 0); - if (__pyx_t_8) { - - /* "src/gevent/local.py":563 - * gets.add(attr_name) - * if hasattr(type_attr, '__delete__'): - * dels.add(attr_name) # <<<<<<<<<<<<<< - * set_or_del.add(attr_name) - * if hasattr(type_attr, '__set__'): - */ - __pyx_t_9 = PySet_Add(__pyx_v_dels, __pyx_v_attr_name); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 563, __pyx_L1_error) - - /* "src/gevent/local.py":564 - * if hasattr(type_attr, '__delete__'): - * dels.add(attr_name) - * set_or_del.add(attr_name) # <<<<<<<<<<<<<< - * if hasattr(type_attr, '__set__'): - * sets.add(attr_name) - */ - __pyx_t_9 = PySet_Add(__pyx_v_set_or_del, __pyx_v_attr_name); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 564, __pyx_L1_error) - - /* "src/gevent/local.py":562 - * if hasattr(type_attr, '__get__'): - * gets.add(attr_name) - * if hasattr(type_attr, '__delete__'): # <<<<<<<<<<<<<< - * dels.add(attr_name) - * set_or_del.add(attr_name) - */ - } - - /* "src/gevent/local.py":565 - * dels.add(attr_name) - * set_or_del.add(attr_name) - * if hasattr(type_attr, '__set__'): # <<<<<<<<<<<<<< - * sets.add(attr_name) - * - */ - __pyx_t_8 = __Pyx_HasAttr(((PyObject *)__pyx_v_type_attr), __pyx_n_s_set); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 565, __pyx_L1_error) - __pyx_t_7 = (__pyx_t_8 != 0); - if (__pyx_t_7) { - - /* "src/gevent/local.py":566 - * set_or_del.add(attr_name) - * if hasattr(type_attr, '__set__'): - * sets.add(attr_name) # <<<<<<<<<<<<<< - * - * return (gets, dels, set_or_del, sets) - */ - __pyx_t_9 = PySet_Add(__pyx_v_sets, __pyx_v_attr_name); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 566, __pyx_L1_error) - - /* "src/gevent/local.py":565 - * dels.add(attr_name) - * set_or_del.add(attr_name) - * if hasattr(type_attr, '__set__'): # <<<<<<<<<<<<<< - * sets.add(attr_name) - * - */ - } - - /* "src/gevent/local.py":545 - * mro = list(type_self.mro()) - * - * for attr_name in dir(type_self): # <<<<<<<<<<<<<< - * # Conventionally, descriptors when called on a class - * # return themself, but not all do. Notable exceptions are - */ - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/local.py":568 - * sets.add(attr_name) - * - * return (gets, dels, set_or_del, sets) # <<<<<<<<<<<<<< - * - * # Cython doesn't let us use __new__, it requires - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 568, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_v_gets); - __Pyx_GIVEREF(__pyx_v_gets); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_gets); - __Pyx_INCREF(__pyx_v_dels); - __Pyx_GIVEREF(__pyx_v_dels); - PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_dels); - __Pyx_INCREF(__pyx_v_set_or_del); - __Pyx_GIVEREF(__pyx_v_set_or_del); - PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_set_or_del); - __Pyx_INCREF(__pyx_v_sets); - __Pyx_GIVEREF(__pyx_v_sets); - PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_v_sets); - __pyx_r = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/local.py":537 - * new_impl.dicts[currentId] = _localimpl_dict_entry(entry.wrgreenlet, duplicate) - * - * def _local_find_descriptors(self): # <<<<<<<<<<<<<< - * type_self = type(self) - * gets = set() - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent._local._local_find_descriptors", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_mro); - __Pyx_XDECREF(__pyx_v_gets); - __Pyx_XDECREF(__pyx_v_dels); - __Pyx_XDECREF(__pyx_v_set_or_del); - __Pyx_XDECREF(__pyx_v_type_self); - __Pyx_XDECREF(__pyx_v_type_attr); - __Pyx_XDECREF(__pyx_v_sets); - __Pyx_XDECREF(__pyx_v_attr_name); - __Pyx_XDECREF(__pyx_v_base); - __Pyx_XDECREF(__pyx_v_bd); - __Pyx_XDECREF(__pyx_v_attr); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/local.py":574 - * # (e.g., on PyPy). So we set it at runtime. Cython - * # will raise an error if we're compiled. - * def __new__(cls, *args, **kw): # <<<<<<<<<<<<<< - * self = super(local, cls).__new__(cls) - * # We get the cls in *args for some reason - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_local_3__new__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_6_local_2__new__[] = "__new__(cls, *args, **kw)"; -static PyMethodDef __pyx_mdef_6gevent_6_local_3__new__ = {"__new__", (PyCFunction)__pyx_pw_6gevent_6_local_3__new__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_6_local_2__new__}; -static PyObject *__pyx_pw_6gevent_6_local_3__new__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_cls = 0; - PyObject *__pyx_v_args = 0; - PyObject *__pyx_v_kw = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__new__ (wrapper)", 0); - __pyx_v_kw = PyDict_New(); if (unlikely(!__pyx_v_kw)) return NULL; - __Pyx_GOTREF(__pyx_v_kw); - if (PyTuple_GET_SIZE(__pyx_args) > 1) { - __pyx_v_args = PyTuple_GetSlice(__pyx_args, 1, PyTuple_GET_SIZE(__pyx_args)); - if (unlikely(!__pyx_v_args)) { - __Pyx_DECREF(__pyx_v_kw); __pyx_v_kw = 0; - __Pyx_RefNannyFinishContext(); - return NULL; - } - __Pyx_GOTREF(__pyx_v_args); - } else { - __pyx_v_args = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple); - } - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cls,0}; - PyObject* values[1] = {0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - default: - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cls)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t used_pos_args = (pos_args < 1) ? pos_args : 1; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kw, values, used_pos_args, "__new__") < 0)) __PYX_ERR(0, 574, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) < 1) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - } - __pyx_v_cls = values[0]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__new__", 0, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 574, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0; - __Pyx_DECREF(__pyx_v_kw); __pyx_v_kw = 0; - __Pyx_AddTraceback("gevent._local.__new__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_6_local_2__new__(__pyx_self, __pyx_v_cls, __pyx_v_args, __pyx_v_kw); - - /* function exit code */ - __Pyx_XDECREF(__pyx_v_args); - __Pyx_XDECREF(__pyx_v_kw); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_local_2__new__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_cls, PyObject *__pyx_v_args, PyObject *__pyx_v_kw) { - PyObject *__pyx_v_self = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("__new__", 0); - - /* "src/gevent/local.py":575 - * # will raise an error if we're compiled. - * def __new__(cls, *args, **kw): - * self = super(local, cls).__new__(cls) # <<<<<<<<<<<<<< - * # We get the cls in *args for some reason - * # too when we do it this way....except on PyPy3, which does - */ - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 575, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(((PyObject *)__pyx_ptype_6gevent_6_local_local)); - __Pyx_GIVEREF(((PyObject *)__pyx_ptype_6gevent_6_local_local)); - PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_6gevent_6_local_local)); - __Pyx_INCREF(__pyx_v_cls); - __Pyx_GIVEREF(__pyx_v_cls); - PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_cls); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 575, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 575, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_cls); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 575, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_cls}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 575, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_cls}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 575, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 575, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(__pyx_v_cls); - __Pyx_GIVEREF(__pyx_v_cls); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_cls); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 575, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_self = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/local.py":579 - * # too when we do it this way....except on PyPy3, which does - * # not *unless* it's wrapped in a classmethod (which it is) - * self.__cinit__(*args[1:], **kw) # <<<<<<<<<<<<<< - * return self - * - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cinit); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 579, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyTuple_GetSlice(__pyx_v_args, 1, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 579, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_v_kw); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 579, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "src/gevent/local.py":580 - * # not *unless* it's wrapped in a classmethod (which it is) - * self.__cinit__(*args[1:], **kw) - * return self # <<<<<<<<<<<<<< - * - * try: - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self); - __pyx_r = __pyx_v_self; - goto __pyx_L0; - - /* "src/gevent/local.py":574 - * # (e.g., on PyPy). So we set it at runtime. Cython - * # will raise an error if we're compiled. - * def __new__(cls, *args, **kw): # <<<<<<<<<<<<<< - * self = super(local, cls).__new__(cls) - * # We get the cls in *args for some reason - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent._local.__new__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_self); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__greenlet_primitives.pxd":23 - * - * @cython.final - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - -static CYTHON_INLINE PyGreenlet *__pyx_f_6gevent_21__greenlet_primitives_getcurrent(void) { - PyGreenlet *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("getcurrent", 0); - - /* "gevent/__greenlet_primitives.pxd":24 - * @cython.final - * cdef inline greenlet getcurrent(): - * return PyGreenlet_GetCurrent() # <<<<<<<<<<<<<< - * - * cdef bint _greenlet_imported - */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __pyx_t_1 = ((PyObject *)PyGreenlet_GetCurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 24, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = ((PyGreenlet *)__pyx_t_1); - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "gevent/__greenlet_primitives.pxd":23 - * - * @cython.final - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__greenlet_primitives.getcurrent", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__greenlet_primitives.pxd":28 - * cdef bint _greenlet_imported - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - -static CYTHON_INLINE void __pyx_f_6gevent_21__greenlet_primitives_greenlet_init(void) { - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("greenlet_init", 0); - - /* "gevent/__greenlet_primitives.pxd":30 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - __pyx_t_1 = ((!(__pyx_v_6gevent_21__greenlet_primitives__greenlet_imported != 0)) != 0); - if (__pyx_t_1) { - - /* "gevent/__greenlet_primitives.pxd":31 - * global _greenlet_imported - * if not _greenlet_imported: - * PyGreenlet_Import() # <<<<<<<<<<<<<< - * _greenlet_imported = True - * - */ - PyGreenlet_Import(); - - /* "gevent/__greenlet_primitives.pxd":32 - * if not _greenlet_imported: - * PyGreenlet_Import() - * _greenlet_imported = True # <<<<<<<<<<<<<< - * - * cdef inline object _greenlet_switch(greenlet self): - */ - __pyx_v_6gevent_21__greenlet_primitives__greenlet_imported = 1; - - /* "gevent/__greenlet_primitives.pxd":30 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - } - - /* "gevent/__greenlet_primitives.pxd":28 - * cdef bint _greenlet_imported - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -/* "gevent/__greenlet_primitives.pxd":34 - * _greenlet_imported = True - * - * cdef inline object _greenlet_switch(greenlet self): # <<<<<<<<<<<<<< - * return PyGreenlet_Switch(self, NULL, NULL) - * - */ - -static CYTHON_INLINE PyObject *__pyx_f_6gevent_21__greenlet_primitives__greenlet_switch(PyGreenlet *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_greenlet_switch", 0); - - /* "gevent/__greenlet_primitives.pxd":35 - * - * cdef inline object _greenlet_switch(greenlet self): - * return PyGreenlet_Switch(self, NULL, NULL) # <<<<<<<<<<<<<< - * - * cdef class TrackedRawGreenlet(greenlet): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyGreenlet_Switch(__pyx_v_self, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 35, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "gevent/__greenlet_primitives.pxd":34 - * _greenlet_imported = True - * - * cdef inline object _greenlet_switch(greenlet self): # <<<<<<<<<<<<<< - * return PyGreenlet_Switch(self, NULL, NULL) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__greenlet_primitives._greenlet_switch", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__waiter.pxd":24 - * void PyGreenlet_Import() - * - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - -static CYTHON_INLINE PyGreenlet *__pyx_f_6gevent_8__waiter_getcurrent(void) { - PyGreenlet *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("getcurrent", 0); - - /* "gevent/__waiter.pxd":25 - * - * cdef inline greenlet getcurrent(): - * return PyGreenlet_GetCurrent() # <<<<<<<<<<<<<< - * - * cdef inline void greenlet_init(): - */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __pyx_t_1 = ((PyObject *)PyGreenlet_GetCurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 25, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = ((PyGreenlet *)__pyx_t_1); - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "gevent/__waiter.pxd":24 - * void PyGreenlet_Import() - * - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__waiter.getcurrent", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__waiter.pxd":27 - * return PyGreenlet_GetCurrent() - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - -static CYTHON_INLINE void __pyx_f_6gevent_8__waiter_greenlet_init(void) { - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("greenlet_init", 0); - - /* "gevent/__waiter.pxd":29 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - __pyx_t_1 = ((!(__pyx_v_6gevent_8__waiter__greenlet_imported != 0)) != 0); - if (__pyx_t_1) { - - /* "gevent/__waiter.pxd":30 - * global _greenlet_imported - * if not _greenlet_imported: - * PyGreenlet_Import() # <<<<<<<<<<<<<< - * _greenlet_imported = True - * - */ - PyGreenlet_Import(); - - /* "gevent/__waiter.pxd":31 - * if not _greenlet_imported: - * PyGreenlet_Import() - * _greenlet_imported = True # <<<<<<<<<<<<<< - * - * cdef class Waiter: - */ - __pyx_v_6gevent_8__waiter__greenlet_imported = 1; - - /* "gevent/__waiter.pxd":29 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - } - - /* "gevent/__waiter.pxd":27 - * return PyGreenlet_GetCurrent() - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -/* "gevent/_greenlet.pxd":27 - * - * @cython.final - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - -static CYTHON_INLINE PyGreenlet *__pyx_f_6gevent_9_greenlet_getcurrent(void) { - PyGreenlet *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("getcurrent", 0); - - /* "gevent/_greenlet.pxd":28 - * @cython.final - * cdef inline greenlet getcurrent(): - * return PyGreenlet_GetCurrent() # <<<<<<<<<<<<<< - * - * cdef bint _greenlet_imported - */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __pyx_t_1 = ((PyObject *)PyGreenlet_GetCurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 28, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = ((PyGreenlet *)__pyx_t_1); - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "gevent/_greenlet.pxd":27 - * - * @cython.final - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._greenlet.getcurrent", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/_greenlet.pxd":32 - * cdef bint _greenlet_imported - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - -static CYTHON_INLINE void __pyx_f_6gevent_9_greenlet_greenlet_init(void) { - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("greenlet_init", 0); - - /* "gevent/_greenlet.pxd":34 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - __pyx_t_1 = ((!(__pyx_v_6gevent_9_greenlet__greenlet_imported != 0)) != 0); - if (__pyx_t_1) { - - /* "gevent/_greenlet.pxd":35 - * global _greenlet_imported - * if not _greenlet_imported: - * PyGreenlet_Import() # <<<<<<<<<<<<<< - * _greenlet_imported = True - * - */ - PyGreenlet_Import(); - - /* "gevent/_greenlet.pxd":36 - * if not _greenlet_imported: - * PyGreenlet_Import() - * _greenlet_imported = True # <<<<<<<<<<<<<< - * - * cdef extern from "Python.h": - */ - __pyx_v_6gevent_9_greenlet__greenlet_imported = 1; - - /* "gevent/_greenlet.pxd":34 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - } - - /* "gevent/_greenlet.pxd":32 - * cdef bint _greenlet_imported - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -/* "gevent/_local.pxd":26 - * void PyGreenlet_Import() - * - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - -static CYTHON_INLINE PyGreenlet *__pyx_f_6gevent_6_local_getcurrent(void) { - PyGreenlet *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("getcurrent", 0); - - /* "gevent/_local.pxd":27 - * - * cdef inline greenlet getcurrent(): - * return PyGreenlet_GetCurrent() # <<<<<<<<<<<<<< - * - * cdef inline void greenlet_init(): - */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __pyx_t_1 = ((PyObject *)PyGreenlet_GetCurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 27, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = ((PyGreenlet *)__pyx_t_1); - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "gevent/_local.pxd":26 - * void PyGreenlet_Import() - * - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._local.getcurrent", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/_local.pxd":29 - * return PyGreenlet_GetCurrent() - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - -static CYTHON_INLINE void __pyx_f_6gevent_6_local_greenlet_init(void) { - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("greenlet_init", 0); - - /* "gevent/_local.pxd":31 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - __pyx_t_1 = ((!(__pyx_v_6gevent_6_local__greenlet_imported != 0)) != 0); - if (__pyx_t_1) { - - /* "gevent/_local.pxd":32 - * global _greenlet_imported - * if not _greenlet_imported: - * PyGreenlet_Import() # <<<<<<<<<<<<<< - * _greenlet_imported = True - * - */ - PyGreenlet_Import(); - - /* "gevent/_local.pxd":33 - * if not _greenlet_imported: - * PyGreenlet_Import() - * _greenlet_imported = True # <<<<<<<<<<<<<< - * - * - */ - __pyx_v_6gevent_6_local__greenlet_imported = 1; - - /* "gevent/_local.pxd":31 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - } - - /* "gevent/_local.pxd":29 - * return PyGreenlet_GetCurrent() - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -static PyObject *__pyx_tp_new_6gevent_6_local__wrefdict(PyTypeObject *t, PyObject *a, PyObject *k) { - PyObject *o = (&PyDict_Type)->tp_new(t, a, k); - if (unlikely(!o)) return 0; - return o; -} - -static void __pyx_tp_dealloc_6gevent_6_local__wrefdict(PyObject *o) { - struct __pyx_obj_6gevent_6_local__wrefdict *p = (struct __pyx_obj_6gevent_6_local__wrefdict *)o; - PyObject_GC_UnTrack(o); - if (p->__weakref__) PyObject_ClearWeakRefs(o); - PyObject_GC_Track(o); - (&PyDict_Type)->tp_dealloc(o); -} - -static int __pyx_tp_traverse_6gevent_6_local__wrefdict(PyObject *o, visitproc v, void *a) { - int e; - if (!(&PyDict_Type)->tp_traverse); else { e = (&PyDict_Type)->tp_traverse(o,v,a); if (e) return e; } - return 0; -} - -static int __pyx_tp_clear_6gevent_6_local__wrefdict(PyObject *o) { - if (!(&PyDict_Type)->tp_clear); else (&PyDict_Type)->tp_clear(o); - return 0; -} - -static PyTypeObject __pyx_type_6gevent_6_local__wrefdict = { - PyVarObject_HEAD_INIT(0, 0) - "gevent._local._wrefdict", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_6_local__wrefdict), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_6_local__wrefdict, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "A dict that can be weak referenced", /*tp_doc*/ - __pyx_tp_traverse_6gevent_6_local__wrefdict, /*tp_traverse*/ - __pyx_tp_clear_6gevent_6_local__wrefdict, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - 0, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - 0, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_6_local__wrefdict, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; - -static PyObject *__pyx_tp_new_6gevent_6_local__greenlet_deleted(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - struct __pyx_obj_6gevent_6_local__greenlet_deleted *p; - PyObject *o; - o = (*t->tp_alloc)(t, 0); - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_6_local__greenlet_deleted *)o); - p->idt = Py_None; Py_INCREF(Py_None); - p->wrdicts = Py_None; Py_INCREF(Py_None); - return o; -} - -static void __pyx_tp_dealloc_6gevent_6_local__greenlet_deleted(PyObject *o) { - struct __pyx_obj_6gevent_6_local__greenlet_deleted *p = (struct __pyx_obj_6gevent_6_local__greenlet_deleted *)o; - PyObject_GC_UnTrack(o); - Py_CLEAR(p->idt); - Py_CLEAR(p->wrdicts); - (*Py_TYPE(o)->tp_free)(o); -} - -static int __pyx_tp_traverse_6gevent_6_local__greenlet_deleted(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_6gevent_6_local__greenlet_deleted *p = (struct __pyx_obj_6gevent_6_local__greenlet_deleted *)o; - if (p->idt) { - e = (*v)(p->idt, a); if (e) return e; - } - if (p->wrdicts) { - e = (*v)(p->wrdicts, a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_6gevent_6_local__greenlet_deleted(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_6gevent_6_local__greenlet_deleted *p = (struct __pyx_obj_6gevent_6_local__greenlet_deleted *)o; - tmp = ((PyObject*)p->idt); - p->idt = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->wrdicts); - p->wrdicts = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyMethodDef __pyx_methods_6gevent_6_local__greenlet_deleted[] = { - {0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_6_local__greenlet_deleted = { - PyVarObject_HEAD_INIT(0, 0) - "gevent._local._greenlet_deleted", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_6_local__greenlet_deleted), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_6_local__greenlet_deleted, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - __pyx_pw_6gevent_6_local_17_greenlet_deleted_3__call__, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "_greenlet_deleted(idt, wrdicts)\n\n A weakref callback for when the greenlet\n is deleted.\n\n If the greenlet is a `gevent.greenlet.Greenlet` and\n supplies ``rawlink``, that will be used instead of a\n weakref.\n ", /*tp_doc*/ - __pyx_tp_traverse_6gevent_6_local__greenlet_deleted, /*tp_traverse*/ - __pyx_tp_clear_6gevent_6_local__greenlet_deleted, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_6_local__greenlet_deleted, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_6_local_17_greenlet_deleted_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_6_local__greenlet_deleted, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; - -static PyObject *__pyx_tp_new_6gevent_6_local__local_deleted(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - struct __pyx_obj_6gevent_6_local__local_deleted *p; - PyObject *o; - o = (*t->tp_alloc)(t, 0); - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_6_local__local_deleted *)o); - p->key = ((PyObject*)Py_None); Py_INCREF(Py_None); - p->wrthread = Py_None; Py_INCREF(Py_None); - p->greenlet_deleted = ((struct __pyx_obj_6gevent_6_local__greenlet_deleted *)Py_None); Py_INCREF(Py_None); - return o; -} - -static void __pyx_tp_dealloc_6gevent_6_local__local_deleted(PyObject *o) { - struct __pyx_obj_6gevent_6_local__local_deleted *p = (struct __pyx_obj_6gevent_6_local__local_deleted *)o; - PyObject_GC_UnTrack(o); - Py_CLEAR(p->key); - Py_CLEAR(p->wrthread); - Py_CLEAR(p->greenlet_deleted); - (*Py_TYPE(o)->tp_free)(o); -} - -static int __pyx_tp_traverse_6gevent_6_local__local_deleted(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_6gevent_6_local__local_deleted *p = (struct __pyx_obj_6gevent_6_local__local_deleted *)o; - if (p->wrthread) { - e = (*v)(p->wrthread, a); if (e) return e; - } - if (p->greenlet_deleted) { - e = (*v)(((PyObject *)p->greenlet_deleted), a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_6gevent_6_local__local_deleted(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_6gevent_6_local__local_deleted *p = (struct __pyx_obj_6gevent_6_local__local_deleted *)o; - tmp = ((PyObject*)p->wrthread); - p->wrthread = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->greenlet_deleted); - p->greenlet_deleted = ((struct __pyx_obj_6gevent_6_local__greenlet_deleted *)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyMethodDef __pyx_methods_6gevent_6_local__local_deleted[] = { - {0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_6_local__local_deleted = { - PyVarObject_HEAD_INIT(0, 0) - "gevent._local._local_deleted", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_6_local__local_deleted), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_6_local__local_deleted, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - __pyx_pw_6gevent_6_local_14_local_deleted_3__call__, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "_local_deleted(key, wrthread, greenlet_deleted)", /*tp_doc*/ - __pyx_tp_traverse_6gevent_6_local__local_deleted, /*tp_traverse*/ - __pyx_tp_clear_6gevent_6_local__local_deleted, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_6_local__local_deleted, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_6_local_14_local_deleted_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_6_local__local_deleted, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; - -static PyObject *__pyx_tp_new_6gevent_6_local__localimpl(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - struct __pyx_obj_6gevent_6_local__localimpl *p; - PyObject *o; - o = (*t->tp_alloc)(t, 0); - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_6_local__localimpl *)o); - p->key = ((PyObject*)Py_None); Py_INCREF(Py_None); - p->dicts = ((PyObject*)Py_None); Py_INCREF(Py_None); - p->localargs = ((PyObject*)Py_None); Py_INCREF(Py_None); - p->localkwargs = ((PyObject*)Py_None); Py_INCREF(Py_None); - p->localtypeid = ((PyObject*)Py_None); Py_INCREF(Py_None); - return o; -} - -static void __pyx_tp_dealloc_6gevent_6_local__localimpl(PyObject *o) { - struct __pyx_obj_6gevent_6_local__localimpl *p = (struct __pyx_obj_6gevent_6_local__localimpl *)o; - PyObject_GC_UnTrack(o); - if (p->__weakref__) PyObject_ClearWeakRefs(o); - Py_CLEAR(p->key); - Py_CLEAR(p->dicts); - Py_CLEAR(p->localargs); - Py_CLEAR(p->localkwargs); - Py_CLEAR(p->localtypeid); - (*Py_TYPE(o)->tp_free)(o); -} - -static int __pyx_tp_traverse_6gevent_6_local__localimpl(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_6gevent_6_local__localimpl *p = (struct __pyx_obj_6gevent_6_local__localimpl *)o; - if (p->dicts) { - e = (*v)(p->dicts, a); if (e) return e; - } - if (p->localargs) { - e = (*v)(p->localargs, a); if (e) return e; - } - if (p->localkwargs) { - e = (*v)(p->localkwargs, a); if (e) return e; - } - if (p->localtypeid) { - e = (*v)(p->localtypeid, a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_6gevent_6_local__localimpl(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_6gevent_6_local__localimpl *p = (struct __pyx_obj_6gevent_6_local__localimpl *)o; - tmp = ((PyObject*)p->dicts); - p->dicts = ((PyObject*)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->localargs); - p->localargs = ((PyObject*)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->localkwargs); - p->localkwargs = ((PyObject*)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->localtypeid); - p->localtypeid = ((PyObject*)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyMethodDef __pyx_methods_6gevent_6_local__localimpl[] = { - {0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_6_local__localimpl = { - PyVarObject_HEAD_INIT(0, 0) - "gevent._local._localimpl", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_6_local__localimpl), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_6_local__localimpl, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "_localimpl(args, kwargs, local_type, id_local)\nA class managing thread-local dicts", /*tp_doc*/ - __pyx_tp_traverse_6gevent_6_local__localimpl, /*tp_traverse*/ - __pyx_tp_clear_6gevent_6_local__localimpl, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_6_local__localimpl, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_6_local_10_localimpl_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_6_local__localimpl, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; - -static PyObject *__pyx_tp_new_6gevent_6_local__localimpl_dict_entry(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - struct __pyx_obj_6gevent_6_local__localimpl_dict_entry *p; - PyObject *o; - o = (*t->tp_alloc)(t, 0); - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_6_local__localimpl_dict_entry *)o); - p->wrgreenlet = Py_None; Py_INCREF(Py_None); - p->localdict = ((PyObject*)Py_None); Py_INCREF(Py_None); - return o; -} - -static void __pyx_tp_dealloc_6gevent_6_local__localimpl_dict_entry(PyObject *o) { - struct __pyx_obj_6gevent_6_local__localimpl_dict_entry *p = (struct __pyx_obj_6gevent_6_local__localimpl_dict_entry *)o; - PyObject_GC_UnTrack(o); - Py_CLEAR(p->wrgreenlet); - Py_CLEAR(p->localdict); - (*Py_TYPE(o)->tp_free)(o); -} - -static int __pyx_tp_traverse_6gevent_6_local__localimpl_dict_entry(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_6gevent_6_local__localimpl_dict_entry *p = (struct __pyx_obj_6gevent_6_local__localimpl_dict_entry *)o; - if (p->wrgreenlet) { - e = (*v)(p->wrgreenlet, a); if (e) return e; - } - if (p->localdict) { - e = (*v)(p->localdict, a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_6gevent_6_local__localimpl_dict_entry(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_6gevent_6_local__localimpl_dict_entry *p = (struct __pyx_obj_6gevent_6_local__localimpl_dict_entry *)o; - tmp = ((PyObject*)p->wrgreenlet); - p->wrgreenlet = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->localdict); - p->localdict = ((PyObject*)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyMethodDef __pyx_methods_6gevent_6_local__localimpl_dict_entry[] = { - {0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_6_local__localimpl_dict_entry = { - PyVarObject_HEAD_INIT(0, 0) - "gevent._local._localimpl_dict_entry", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_6_local__localimpl_dict_entry), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_6_local__localimpl_dict_entry, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "_localimpl_dict_entry(wrgreenlet, localdict)\n\n The object that goes in the ``dicts`` of ``_localimpl``\n object for each thread.\n ", /*tp_doc*/ - __pyx_tp_traverse_6gevent_6_local__localimpl_dict_entry, /*tp_traverse*/ - __pyx_tp_clear_6gevent_6_local__localimpl_dict_entry, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_6_local__localimpl_dict_entry, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_6_local_21_localimpl_dict_entry_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_6_local__localimpl_dict_entry, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; -static struct __pyx_vtabstruct_6gevent_6_local_local __pyx_vtable_6gevent_6_local_local; - -static PyObject *__pyx_tp_new_6gevent_6_local_local(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_obj_6gevent_6_local_local *p; - PyObject *o; - if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { - o = (*t->tp_alloc)(t, 0); - } else { - o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); - } - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_6_local_local *)o); - p->__pyx_vtab = __pyx_vtabptr_6gevent_6_local_local; - p->_local__impl = ((struct __pyx_obj_6gevent_6_local__localimpl *)Py_None); Py_INCREF(Py_None); - p->_local_type_get_descriptors = ((PyObject*)Py_None); Py_INCREF(Py_None); - p->_local_type_set_or_del_descriptors = ((PyObject*)Py_None); Py_INCREF(Py_None); - p->_local_type_del_descriptors = ((PyObject*)Py_None); Py_INCREF(Py_None); - p->_local_type_set_descriptors = ((PyObject*)Py_None); Py_INCREF(Py_None); - p->_local_type_vars = ((PyObject*)Py_None); Py_INCREF(Py_None); - p->_local_type = ((PyTypeObject*)Py_None); Py_INCREF(Py_None); - if (unlikely(__pyx_pw_6gevent_6_local_5local_1__cinit__(o, a, k) < 0)) goto bad; - return o; - bad: - Py_DECREF(o); o = 0; - return NULL; -} - -static void __pyx_tp_dealloc_6gevent_6_local_local(PyObject *o) { - struct __pyx_obj_6gevent_6_local_local *p = (struct __pyx_obj_6gevent_6_local_local *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - #endif - PyObject_GC_UnTrack(o); - Py_CLEAR(p->_local__impl); - Py_CLEAR(p->_local_type_get_descriptors); - Py_CLEAR(p->_local_type_set_or_del_descriptors); - Py_CLEAR(p->_local_type_del_descriptors); - Py_CLEAR(p->_local_type_set_descriptors); - Py_CLEAR(p->_local_type_vars); - Py_CLEAR(p->_local_type); - (*Py_TYPE(o)->tp_free)(o); -} - -static int __pyx_tp_traverse_6gevent_6_local_local(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_6gevent_6_local_local *p = (struct __pyx_obj_6gevent_6_local_local *)o; - if (p->_local__impl) { - e = (*v)(((PyObject *)p->_local__impl), a); if (e) return e; - } - if (p->_local_type_get_descriptors) { - e = (*v)(p->_local_type_get_descriptors, a); if (e) return e; - } - if (p->_local_type_set_or_del_descriptors) { - e = (*v)(p->_local_type_set_or_del_descriptors, a); if (e) return e; - } - if (p->_local_type_del_descriptors) { - e = (*v)(p->_local_type_del_descriptors, a); if (e) return e; - } - if (p->_local_type_set_descriptors) { - e = (*v)(p->_local_type_set_descriptors, a); if (e) return e; - } - if (p->_local_type_vars) { - e = (*v)(p->_local_type_vars, a); if (e) return e; - } - if (p->_local_type) { - e = (*v)(((PyObject *)p->_local_type), a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_6gevent_6_local_local(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_6gevent_6_local_local *p = (struct __pyx_obj_6gevent_6_local_local *)o; - tmp = ((PyObject*)p->_local__impl); - p->_local__impl = ((struct __pyx_obj_6gevent_6_local__localimpl *)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->_local_type_get_descriptors); - p->_local_type_get_descriptors = ((PyObject*)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->_local_type_set_or_del_descriptors); - p->_local_type_set_or_del_descriptors = ((PyObject*)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->_local_type_del_descriptors); - p->_local_type_del_descriptors = ((PyObject*)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->_local_type_set_descriptors); - p->_local_type_set_descriptors = ((PyObject*)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->_local_type_vars); - p->_local_type_vars = ((PyObject*)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->_local_type); - p->_local_type = ((PyTypeObject*)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyObject *__pyx_tp_getattro_6gevent_6_local_local(PyObject *o, PyObject *n) { - PyObject *v = __pyx_pw_6gevent_6_local_5local_3__getattribute__(o, n); - return v; -} - -static int __pyx_tp_setattro_6gevent_6_local_local(PyObject *o, PyObject *n, PyObject *v) { - if (v) { - return __pyx_pw_6gevent_6_local_5local_5__setattr__(o, n, v); - } - else { - return __pyx_pw_6gevent_6_local_5local_7__delattr__(o, n); - } -} - -static PyMethodDef __pyx_methods_6gevent_6_local_local[] = { - {0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_6_local_local = { - PyVarObject_HEAD_INIT(0, 0) - "gevent._local.local", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_6_local_local), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_6_local_local, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - __pyx_tp_getattro_6gevent_6_local_local, /*tp_getattro*/ - __pyx_tp_setattro_6gevent_6_local_local, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "\n An object whose attributes are greenlet-local.\n ", /*tp_doc*/ - __pyx_tp_traverse_6gevent_6_local_local, /*tp_traverse*/ - __pyx_tp_clear_6gevent_6_local_local, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_6_local_local, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - 0, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_6_local_local, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; - -static PyMethodDef __pyx_methods[] = { - {0, 0, 0, 0} -}; - -#if PY_MAJOR_VERSION >= 3 -#if CYTHON_PEP489_MULTI_PHASE_INIT -static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ -static int __pyx_pymod_exec__local(PyObject* module); /*proto*/ -static PyModuleDef_Slot __pyx_moduledef_slots[] = { - {Py_mod_create, (void*)__pyx_pymod_create}, - {Py_mod_exec, (void*)__pyx_pymod_exec__local}, - {0, NULL} -}; -#endif - -static struct PyModuleDef __pyx_moduledef = { - PyModuleDef_HEAD_INIT, - "_local", - __pyx_k_Greenlet_local_objects_This_mod, /* m_doc */ - #if CYTHON_PEP489_MULTI_PHASE_INIT - 0, /* m_size */ - #else - -1, /* m_size */ - #endif - __pyx_methods /* m_methods */, - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_moduledef_slots, /* m_slots */ - #else - NULL, /* m_reload */ - #endif - NULL, /* m_traverse */ - NULL, /* m_clear */ - NULL /* m_free */ -}; -#endif - -static __Pyx_StringTabEntry __pyx_string_tab[] = { - {&__pyx_n_s_AttributeError, __pyx_k_AttributeError, sizeof(__pyx_k_AttributeError), 0, 0, 1, 1}, - {&__pyx_kp_s_Initialization_arguments_are_not, __pyx_k_Initialization_arguments_are_not, sizeof(__pyx_k_Initialization_arguments_are_not), 0, 0, 1, 0}, - {&__pyx_n_s_KeyError, __pyx_k_KeyError, sizeof(__pyx_k_KeyError), 0, 0, 1, 1}, - {&__pyx_n_s_None, __pyx_k_None, sizeof(__pyx_k_None), 0, 0, 1, 1}, - {&__pyx_n_s_PY2, __pyx_k_PY2, sizeof(__pyx_k_PY2), 0, 0, 1, 1}, - {&__pyx_n_s_PYPY, __pyx_k_PYPY, sizeof(__pyx_k_PYPY), 0, 0, 1, 1}, - {&__pyx_n_s_PYPY_2, __pyx_k_PYPY_2, sizeof(__pyx_k_PYPY_2), 0, 0, 1, 1}, - {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1}, - {&__pyx_n_s_all, __pyx_k_all, sizeof(__pyx_k_all), 0, 0, 1, 1}, - {&__pyx_n_s_all_local_dicts_for_greenlet, __pyx_k_all_local_dicts_for_greenlet, sizeof(__pyx_k_all_local_dicts_for_greenlet), 0, 0, 1, 1}, - {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1}, - {&__pyx_n_s_cinit, __pyx_k_cinit, sizeof(__pyx_k_cinit), 0, 0, 1, 1}, - {&__pyx_n_s_class, __pyx_k_class, sizeof(__pyx_k_class), 0, 0, 1, 1}, - {&__pyx_n_s_classmethod, __pyx_k_classmethod, sizeof(__pyx_k_classmethod), 0, 0, 1, 1}, - {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, - {&__pyx_n_s_cls, __pyx_k_cls, sizeof(__pyx_k_cls), 0, 0, 1, 1}, - {&__pyx_n_s_copy, __pyx_k_copy, sizeof(__pyx_k_copy), 0, 0, 1, 1}, - {&__pyx_n_s_copy_2, __pyx_k_copy_2, sizeof(__pyx_k_copy_2), 0, 0, 1, 1}, - {&__pyx_n_s_delete, __pyx_k_delete, sizeof(__pyx_k_delete), 0, 0, 1, 1}, - {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1}, - {&__pyx_n_s_dicts, __pyx_k_dicts, sizeof(__pyx_k_dicts), 0, 0, 1, 1}, - {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1}, - {&__pyx_n_s_get_2, __pyx_k_get_2, sizeof(__pyx_k_get_2), 0, 0, 1, 1}, - {&__pyx_n_s_getattr, __pyx_k_getattr, sizeof(__pyx_k_getattr), 0, 0, 1, 1}, - {&__pyx_n_s_getattribute, __pyx_k_getattribute, sizeof(__pyx_k_getattribute), 0, 0, 1, 1}, - {&__pyx_n_s_getcurrent, __pyx_k_getcurrent, sizeof(__pyx_k_getcurrent), 0, 0, 1, 1}, - {&__pyx_n_s_gevent__compat, __pyx_k_gevent__compat, sizeof(__pyx_k_gevent__compat), 0, 0, 1, 1}, - {&__pyx_n_s_gevent__local, __pyx_k_gevent__local, sizeof(__pyx_k_gevent__local), 0, 0, 1, 1}, - {&__pyx_n_s_gevent__util, __pyx_k_gevent__util, sizeof(__pyx_k_gevent__util), 0, 0, 1, 1}, - {&__pyx_n_s_gevent_local_localimpl, __pyx_k_gevent_local_localimpl, sizeof(__pyx_k_gevent_local_localimpl), 0, 0, 1, 1}, - {&__pyx_n_s_greenlet, __pyx_k_greenlet, sizeof(__pyx_k_greenlet), 0, 0, 1, 1}, - {&__pyx_n_s_greenlet_deleted, __pyx_k_greenlet_deleted, sizeof(__pyx_k_greenlet_deleted), 0, 0, 1, 1}, - {&__pyx_n_s_greenlet_imported, __pyx_k_greenlet_imported, sizeof(__pyx_k_greenlet_imported), 0, 0, 1, 1}, - {&__pyx_n_s_greenlet_init, __pyx_k_greenlet_init, sizeof(__pyx_k_greenlet_init), 0, 0, 1, 1}, - {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1}, - {&__pyx_n_s_id_local, __pyx_k_id_local, sizeof(__pyx_k_id_local), 0, 0, 1, 1}, - {&__pyx_n_s_idt, __pyx_k_idt, sizeof(__pyx_k_idt), 0, 0, 1, 1}, - {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, - {&__pyx_n_s_import_c_accel, __pyx_k_import_c_accel, sizeof(__pyx_k_import_c_accel), 0, 0, 1, 1}, - {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1}, - {&__pyx_n_s_items, __pyx_k_items, sizeof(__pyx_k_items), 0, 0, 1, 1}, - {&__pyx_n_s_key, __pyx_k_key, sizeof(__pyx_k_key), 0, 0, 1, 1}, - {&__pyx_n_s_key_prefix, __pyx_k_key_prefix, sizeof(__pyx_k_key_prefix), 0, 0, 1, 1}, - {&__pyx_n_s_kw, __pyx_k_kw, sizeof(__pyx_k_kw), 0, 0, 1, 1}, - {&__pyx_n_s_kwargs, __pyx_k_kwargs, sizeof(__pyx_k_kwargs), 0, 0, 1, 1}, - {&__pyx_n_s_lambda, __pyx_k_lambda, sizeof(__pyx_k_lambda), 0, 0, 1, 1}, - {&__pyx_n_s_local, __pyx_k_local, sizeof(__pyx_k_local), 0, 0, 1, 1}, - {&__pyx_n_s_local___copy, __pyx_k_local___copy, sizeof(__pyx_k_local___copy), 0, 0, 1, 1}, - {&__pyx_n_s_local__impl, __pyx_k_local__impl, sizeof(__pyx_k_local__impl), 0, 0, 1, 1}, - {&__pyx_n_s_local_attrs, __pyx_k_local_attrs, sizeof(__pyx_k_local_attrs), 0, 0, 1, 1}, - {&__pyx_n_s_local_type, __pyx_k_local_type, sizeof(__pyx_k_local_type), 0, 0, 1, 1}, - {&__pyx_n_s_local_type_2, __pyx_k_local_type_2, sizeof(__pyx_k_local_type_2), 0, 0, 1, 1}, - {&__pyx_n_s_local_type_del_descriptors, __pyx_k_local_type_del_descriptors, sizeof(__pyx_k_local_type_del_descriptors), 0, 0, 1, 1}, - {&__pyx_n_s_local_type_get_descriptors, __pyx_k_local_type_get_descriptors, sizeof(__pyx_k_local_type_get_descriptors), 0, 0, 1, 1}, - {&__pyx_n_s_local_type_set_descriptors, __pyx_k_local_type_set_descriptors, sizeof(__pyx_k_local_type_set_descriptors), 0, 0, 1, 1}, - {&__pyx_n_s_local_type_set_or_del_descripto, __pyx_k_local_type_set_or_del_descripto, sizeof(__pyx_k_local_type_set_or_del_descripto), 0, 0, 1, 1}, - {&__pyx_n_s_local_type_vars, __pyx_k_local_type_vars, sizeof(__pyx_k_local_type_vars), 0, 0, 1, 1}, - {&__pyx_n_s_localargs, __pyx_k_localargs, sizeof(__pyx_k_localargs), 0, 0, 1, 1}, - {&__pyx_n_s_localdict, __pyx_k_localdict, sizeof(__pyx_k_localdict), 0, 0, 1, 1}, - {&__pyx_n_s_localkwargs, __pyx_k_localkwargs, sizeof(__pyx_k_localkwargs), 0, 0, 1, 1}, - {&__pyx_n_s_localtypeid, __pyx_k_localtypeid, sizeof(__pyx_k_localtypeid), 0, 0, 1, 1}, - {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, - {&__pyx_n_s_marker, __pyx_k_marker, sizeof(__pyx_k_marker), 0, 0, 1, 1}, - {&__pyx_n_s_mro, __pyx_k_mro, sizeof(__pyx_k_mro), 0, 0, 1, 1}, - {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, - {&__pyx_n_s_new, __pyx_k_new, sizeof(__pyx_k_new), 0, 0, 1, 1}, - {&__pyx_n_s_object, __pyx_k_object, sizeof(__pyx_k_object), 0, 0, 1, 1}, - {&__pyx_n_s_pop, __pyx_k_pop, sizeof(__pyx_k_pop), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_capi, __pyx_k_pyx_capi, sizeof(__pyx_k_pyx_capi), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1}, - {&__pyx_kp_s_r_object_attribute___dict___is, __pyx_k_r_object_attribute___dict___is, sizeof(__pyx_k_r_object_attribute___dict___is), 0, 0, 1, 0}, - {&__pyx_kp_s_r_object_has_no_attribute_s, __pyx_k_r_object_has_no_attribute_s, sizeof(__pyx_k_r_object_has_no_attribute_s), 0, 0, 1, 0}, - {&__pyx_n_s_rawlink, __pyx_k_rawlink, sizeof(__pyx_k_rawlink), 0, 0, 1, 1}, - {&__pyx_n_s_ref, __pyx_k_ref, sizeof(__pyx_k_ref), 0, 0, 1, 1}, - {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1}, - {&__pyx_n_s_set, __pyx_k_set, sizeof(__pyx_k_set), 0, 0, 1, 1}, - {&__pyx_n_s_setattr, __pyx_k_setattr, sizeof(__pyx_k_setattr), 0, 0, 1, 1}, - {&__pyx_n_s_slots, __pyx_k_slots, sizeof(__pyx_k_slots), 0, 0, 1, 1}, - {&__pyx_kp_s_src_gevent_local_py, __pyx_k_src_gevent_local_py, sizeof(__pyx_k_src_gevent_local_py), 0, 0, 1, 0}, - {&__pyx_n_s_super, __pyx_k_super, sizeof(__pyx_k_super), 0, 0, 1, 1}, - {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, - {&__pyx_n_s_unlink, __pyx_k_unlink, sizeof(__pyx_k_unlink), 0, 0, 1, 1}, - {&__pyx_n_s_unused, __pyx_k_unused, sizeof(__pyx_k_unused), 0, 0, 1, 1}, - {&__pyx_n_s_weakref, __pyx_k_weakref, sizeof(__pyx_k_weakref), 0, 0, 1, 1}, - {&__pyx_n_s_weakref_2, __pyx_k_weakref_2, sizeof(__pyx_k_weakref_2), 0, 0, 1, 1}, - {&__pyx_n_s_wrdicts, __pyx_k_wrdicts, sizeof(__pyx_k_wrdicts), 0, 0, 1, 1}, - {&__pyx_n_s_wrgreenlet, __pyx_k_wrgreenlet, sizeof(__pyx_k_wrgreenlet), 0, 0, 1, 1}, - {&__pyx_n_s_wrthread, __pyx_k_wrthread, sizeof(__pyx_k_wrthread), 0, 0, 1, 1}, - {0, 0, 0, 0, 0, 0, 0} -}; -static int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin___import__ = __Pyx_GetBuiltinName(__pyx_n_s_import); if (!__pyx_builtin___import__) __PYX_ERR(0, 160, __pyx_L1_error) - __pyx_builtin_object = __Pyx_GetBuiltinName(__pyx_n_s_object); if (!__pyx_builtin_object) __PYX_ERR(0, 331, __pyx_L1_error) - __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 588, __pyx_L1_error) - __pyx_builtin_classmethod = __Pyx_GetBuiltinName(__pyx_n_s_classmethod); if (!__pyx_builtin_classmethod) __PYX_ERR(0, 597, __pyx_L1_error) - __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_n_s_id); if (!__pyx_builtin_id) __PYX_ERR(0, 192, __pyx_L1_error) - __pyx_builtin_AttributeError = __Pyx_GetBuiltinName(__pyx_n_s_AttributeError); if (!__pyx_builtin_AttributeError) __PYX_ERR(0, 246, __pyx_L1_error) - __pyx_builtin_KeyError = __Pyx_GetBuiltinName(__pyx_n_s_KeyError); if (!__pyx_builtin_KeyError) __PYX_ERR(0, 341, __pyx_L1_error) - __pyx_builtin_super = __Pyx_GetBuiltinName(__pyx_n_s_super); if (!__pyx_builtin_super) __PYX_ERR(0, 575, __pyx_L1_error) - return 0; - __pyx_L1_error:; - return -1; -} - -static int __Pyx_InitCachedConstants(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - - /* "src/gevent/local.py":160 - * - * - * locals()['getcurrent'] = __import__('greenlet').getcurrent # <<<<<<<<<<<<<< - * locals()['greenlet_init'] = lambda: None - * - */ - __pyx_tuple_ = PyTuple_Pack(1, __pyx_n_s_greenlet); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 160, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple_); - __Pyx_GIVEREF(__pyx_tuple_); - - /* "src/gevent/local.py":179 - * # That final tuple is actually a localimpl_dict_entry object. - * - * def all_local_dicts_for_greenlet(greenlet): # <<<<<<<<<<<<<< - * """ - * Internal debug helper for getting the local values associated - */ - __pyx_tuple__2 = PyTuple_Pack(1, __pyx_n_s_greenlet); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 179, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__2); - __Pyx_GIVEREF(__pyx_tuple__2); - __pyx_codeobj__3 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__2, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_local_py, __pyx_n_s_all_local_dicts_for_greenlet, 179, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__3)) __PYX_ERR(0, 179, __pyx_L1_error) - - /* "src/gevent/local.py":222 - * weakref. - * """ - * __slots__ = ('idt', 'wrdicts') # <<<<<<<<<<<<<< - * - * def __init__(self, idt, wrdicts): - */ - __pyx_tuple__4 = PyTuple_Pack(2, __pyx_n_s_idt, __pyx_n_s_wrdicts); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 222, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__4); - __Pyx_GIVEREF(__pyx_tuple__4); - - /* "src/gevent/local.py":234 - * - * class _local_deleted(object): - * __slots__ = ('key', 'wrthread', 'greenlet_deleted') # <<<<<<<<<<<<<< - * - * def __init__(self, key, wrthread, greenlet_deleted): - */ - __pyx_tuple__5 = PyTuple_Pack(3, __pyx_n_s_key, __pyx_n_s_wrthread, __pyx_n_s_greenlet_deleted); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 234, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__5); - __Pyx_GIVEREF(__pyx_tuple__5); - - /* "src/gevent/local.py":254 - * class _localimpl(object): - * """A class managing thread-local dicts""" - * __slots__ = ('key', 'dicts', # <<<<<<<<<<<<<< - * 'localargs', 'localkwargs', - * 'localtypeid', - */ - __pyx_tuple__6 = PyTuple_Pack(6, __pyx_n_s_key, __pyx_n_s_dicts, __pyx_n_s_localargs, __pyx_n_s_localkwargs, __pyx_n_s_localtypeid, __pyx_n_s_weakref_2); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 254, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__6); - __Pyx_GIVEREF(__pyx_tuple__6); - - /* "src/gevent/local.py":280 - * # This is a class, not just a tuple, so that cython can optimize - * # attribute access - * __slots__ = ('wrgreenlet', 'localdict') # <<<<<<<<<<<<<< - * - * def __init__(self, wrgreenlet, localdict): - */ - __pyx_tuple__7 = PyTuple_Pack(2, __pyx_n_s_wrgreenlet, __pyx_n_s_localdict); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 280, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__7); - __Pyx_GIVEREF(__pyx_tuple__7); - - /* "src/gevent/local.py":517 - * raise AttributeError(name) - * - * def __copy__(self): # <<<<<<<<<<<<<< - * impl = self._local__impl - * entry = impl.dicts[id(getcurrent())] # pylint:disable=undefined-variable - */ - __pyx_tuple__8 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 517, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__8); - __Pyx_GIVEREF(__pyx_tuple__8); - __pyx_codeobj__9 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__8, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_local_py, __pyx_n_s_copy, 517, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__9)) __PYX_ERR(0, 517, __pyx_L1_error) - - /* "src/gevent/local.py":574 - * # (e.g., on PyPy). So we set it at runtime. Cython - * # will raise an error if we're compiled. - * def __new__(cls, *args, **kw): # <<<<<<<<<<<<<< - * self = super(local, cls).__new__(cls) - * # We get the cls in *args for some reason - */ - __pyx_tuple__10 = PyTuple_Pack(4, __pyx_n_s_cls, __pyx_n_s_args, __pyx_n_s_kw, __pyx_n_s_self); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 574, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__10); - __Pyx_GIVEREF(__pyx_tuple__10); - __pyx_codeobj__11 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_local_py, __pyx_n_s_new, 574, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__11)) __PYX_ERR(0, 574, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_InitGlobals(void) { - __pyx_umethod_PyDict_Type_get.type = (PyObject*)&PyDict_Type; - __pyx_umethod_PyDict_Type_items.type = (PyObject*)&PyDict_Type; - if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - return 0; - __pyx_L1_error:; - return -1; -} - -static int __Pyx_modinit_global_init_code(void); /*proto*/ -static int __Pyx_modinit_variable_export_code(void); /*proto*/ -static int __Pyx_modinit_function_export_code(void); /*proto*/ -static int __Pyx_modinit_type_init_code(void); /*proto*/ -static int __Pyx_modinit_type_import_code(void); /*proto*/ -static int __Pyx_modinit_variable_import_code(void); /*proto*/ -static int __Pyx_modinit_function_import_code(void); /*proto*/ - -static int __Pyx_modinit_global_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); - /*--- Global init code ---*/ - __pyx_v_6gevent_6_local_ref = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_6_local_copy = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_6_local__marker = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_6_local_key_prefix = ((PyObject*)Py_None); Py_INCREF(Py_None); - __pyx_v_6gevent_6_local__local_attrs = ((PyObject*)Py_None); Py_INCREF(Py_None); - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_variable_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); - /*--- Variable export code ---*/ - if (__Pyx_ExportVoidPtr(__pyx_n_s_PYPY, (void *)&__pyx_v_6gevent_6_local__PYPY, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_ref, (void *)&__pyx_v_6gevent_6_local_ref, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_copy_2, (void *)&__pyx_v_6gevent_6_local_copy, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_marker, (void *)&__pyx_v_6gevent_6_local__marker, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_key_prefix, (void *)&__pyx_v_6gevent_6_local_key_prefix, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_greenlet_imported, (void *)&__pyx_v_6gevent_6_local__greenlet_imported, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_local_attrs, (void *)&__pyx_v_6gevent_6_local__local_attrs, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_function_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); - /*--- Function export code ---*/ - if (__Pyx_ExportFunction("_init", (void (*)(void))__pyx_f_6gevent_6_local__init, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportFunction("_localimpl_create_dict", (void (*)(void))__pyx_f_6gevent_6_local__localimpl_create_dict, "PyObject *(struct __pyx_obj_6gevent_6_local__localimpl *, PyGreenlet *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportFunction("_local_get_dict", (void (*)(void))__pyx_f_6gevent_6_local__local_get_dict, "PyObject *(struct __pyx_obj_6gevent_6_local_local *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportFunction("_local__copy_dict_from", (void (*)(void))__pyx_f_6gevent_6_local__local__copy_dict_from, "PyObject *(struct __pyx_obj_6gevent_6_local_local *, struct __pyx_obj_6gevent_6_local__localimpl *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportFunction("_local_find_descriptors", (void (*)(void))__pyx_f_6gevent_6_local__local_find_descriptors, "PyObject *(struct __pyx_obj_6gevent_6_local_local *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportFunction("all_local_dicts_for_greenlet", (void (*)(void))__pyx_f_6gevent_6_local_all_local_dicts_for_greenlet, "PyObject *(PyGreenlet *, int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_type_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); - /*--- Type init code ---*/ - __pyx_ptype_6gevent_6_local_greenlet = __Pyx_ImportType("greenlet", "greenlet", sizeof(PyGreenlet), 0); if (unlikely(!__pyx_ptype_6gevent_6_local_greenlet)) __PYX_ERR(4, 17, __pyx_L1_error) - __pyx_type_6gevent_6_local__wrefdict.tp_base = (&PyDict_Type); - if (PyType_Ready(&__pyx_type_6gevent_6_local__wrefdict) < 0) __PYX_ERR(0, 210, __pyx_L1_error) - __pyx_type_6gevent_6_local__wrefdict.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_6_local__wrefdict.tp_dictoffset && __pyx_type_6gevent_6_local__wrefdict.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_6_local__wrefdict.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; - } - if (PyObject_SetAttrString(__pyx_m, "_wrefdict", (PyObject *)&__pyx_type_6gevent_6_local__wrefdict) < 0) __PYX_ERR(0, 210, __pyx_L1_error) - if (__pyx_type_6gevent_6_local__wrefdict.tp_weaklistoffset == 0) __pyx_type_6gevent_6_local__wrefdict.tp_weaklistoffset = offsetof(struct __pyx_obj_6gevent_6_local__wrefdict, __weakref__); - __pyx_ptype_6gevent_6_local__wrefdict = &__pyx_type_6gevent_6_local__wrefdict; - if (PyType_Ready(&__pyx_type_6gevent_6_local__greenlet_deleted) < 0) __PYX_ERR(0, 213, __pyx_L1_error) - __pyx_type_6gevent_6_local__greenlet_deleted.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_6_local__greenlet_deleted.tp_dictoffset && __pyx_type_6gevent_6_local__greenlet_deleted.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_6_local__greenlet_deleted.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; - } - if (PyObject_SetAttrString(__pyx_m, "_greenlet_deleted", (PyObject *)&__pyx_type_6gevent_6_local__greenlet_deleted) < 0) __PYX_ERR(0, 213, __pyx_L1_error) - __pyx_ptype_6gevent_6_local__greenlet_deleted = &__pyx_type_6gevent_6_local__greenlet_deleted; - if (PyType_Ready(&__pyx_type_6gevent_6_local__local_deleted) < 0) __PYX_ERR(0, 233, __pyx_L1_error) - __pyx_type_6gevent_6_local__local_deleted.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_6_local__local_deleted.tp_dictoffset && __pyx_type_6gevent_6_local__local_deleted.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_6_local__local_deleted.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; - } - if (PyObject_SetAttrString(__pyx_m, "_local_deleted", (PyObject *)&__pyx_type_6gevent_6_local__local_deleted) < 0) __PYX_ERR(0, 233, __pyx_L1_error) - __pyx_ptype_6gevent_6_local__local_deleted = &__pyx_type_6gevent_6_local__local_deleted; - if (PyType_Ready(&__pyx_type_6gevent_6_local__localimpl) < 0) __PYX_ERR(0, 252, __pyx_L1_error) - __pyx_type_6gevent_6_local__localimpl.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_6_local__localimpl.tp_dictoffset && __pyx_type_6gevent_6_local__localimpl.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_6_local__localimpl.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; - } - if (PyObject_SetAttrString(__pyx_m, "_localimpl", (PyObject *)&__pyx_type_6gevent_6_local__localimpl) < 0) __PYX_ERR(0, 252, __pyx_L1_error) - if (__pyx_type_6gevent_6_local__localimpl.tp_weaklistoffset == 0) __pyx_type_6gevent_6_local__localimpl.tp_weaklistoffset = offsetof(struct __pyx_obj_6gevent_6_local__localimpl, __weakref__); - __pyx_ptype_6gevent_6_local__localimpl = &__pyx_type_6gevent_6_local__localimpl; - if (PyType_Ready(&__pyx_type_6gevent_6_local__localimpl_dict_entry) < 0) __PYX_ERR(0, 273, __pyx_L1_error) - __pyx_type_6gevent_6_local__localimpl_dict_entry.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_6_local__localimpl_dict_entry.tp_dictoffset && __pyx_type_6gevent_6_local__localimpl_dict_entry.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_6_local__localimpl_dict_entry.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; - } - if (PyObject_SetAttrString(__pyx_m, "_localimpl_dict_entry", (PyObject *)&__pyx_type_6gevent_6_local__localimpl_dict_entry) < 0) __PYX_ERR(0, 273, __pyx_L1_error) - __pyx_ptype_6gevent_6_local__localimpl_dict_entry = &__pyx_type_6gevent_6_local__localimpl_dict_entry; - __pyx_vtabptr_6gevent_6_local_local = &__pyx_vtable_6gevent_6_local_local; - __pyx_vtable_6gevent_6_local_local.__pyx___copy__ = (struct __pyx_obj_6gevent_6_local_local *(*)(struct __pyx_obj_6gevent_6_local_local *, int __pyx_skip_dispatch))__pyx_f_6gevent_6_local_5local___copy__; - if (PyType_Ready(&__pyx_type_6gevent_6_local_local) < 0) __PYX_ERR(0, 361, __pyx_L1_error) - __pyx_type_6gevent_6_local_local.tp_print = 0; - if (__Pyx_SetVtable(__pyx_type_6gevent_6_local_local.tp_dict, __pyx_vtabptr_6gevent_6_local_local) < 0) __PYX_ERR(0, 361, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "local", (PyObject *)&__pyx_type_6gevent_6_local_local) < 0) __PYX_ERR(0, 361, __pyx_L1_error) - __pyx_ptype_6gevent_6_local_local = &__pyx_type_6gevent_6_local_local; - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_type_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); - /*--- Type import code ---*/ - __pyx_ptype_6gevent_7__ident_ref = __Pyx_ImportType("weakref", "ref", sizeof(PyWeakReference), 0); if (unlikely(!__pyx_ptype_6gevent_7__ident_ref)) __PYX_ERR(5, 5, __pyx_L1_error) - __pyx_ptype_6gevent_7__ident_ValuedWeakRef = __Pyx_ImportType("gevent.__ident", "ValuedWeakRef", sizeof(struct __pyx_obj_6gevent_7__ident_ValuedWeakRef), 1); if (unlikely(!__pyx_ptype_6gevent_7__ident_ValuedWeakRef)) __PYX_ERR(5, 15, __pyx_L1_error) - __pyx_ptype_6gevent_7__ident_IdentRegistry = __Pyx_ImportType("gevent.__ident", "IdentRegistry", sizeof(struct __pyx_obj_6gevent_7__ident_IdentRegistry), 1); if (unlikely(!__pyx_ptype_6gevent_7__ident_IdentRegistry)) __PYX_ERR(5, 19, __pyx_L1_error) - __pyx_vtabptr_6gevent_7__ident_IdentRegistry = (struct __pyx_vtabstruct_6gevent_7__ident_IdentRegistry*)__Pyx_GetVtable(__pyx_ptype_6gevent_7__ident_IdentRegistry->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_7__ident_IdentRegistry)) __PYX_ERR(5, 19, __pyx_L1_error) - __pyx_ptype_6gevent_21__greenlet_primitives_greenlet = __Pyx_ImportType("greenlet", "greenlet", sizeof(PyGreenlet), 0); if (unlikely(!__pyx_ptype_6gevent_21__greenlet_primitives_greenlet)) __PYX_ERR(1, 12, __pyx_L1_error) - __pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet = __Pyx_ImportType("gevent.__greenlet_primitives", "TrackedRawGreenlet", sizeof(struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet), 1); if (unlikely(!__pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet)) __PYX_ERR(1, 37, __pyx_L1_error) - __pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop = __Pyx_ImportType("gevent.__greenlet_primitives", "SwitchOutGreenletWithLoop", sizeof(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop), 1); if (unlikely(!__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop)) __PYX_ERR(1, 40, __pyx_L1_error) - __pyx_vtabptr_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop = (struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop*)__Pyx_GetVtable(__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop)) __PYX_ERR(1, 40, __pyx_L1_error) - __pyx_ptype_6gevent_8__waiter_greenlet = __Pyx_ImportType("greenlet", "greenlet", sizeof(PyGreenlet), 0); if (unlikely(!__pyx_ptype_6gevent_8__waiter_greenlet)) __PYX_ERR(2, 15, __pyx_L1_error) - __pyx_ptype_6gevent_8__waiter_Waiter = __Pyx_ImportType("gevent.__waiter", "Waiter", sizeof(struct __pyx_obj_6gevent_8__waiter_Waiter), 1); if (unlikely(!__pyx_ptype_6gevent_8__waiter_Waiter)) __PYX_ERR(2, 33, __pyx_L1_error) - __pyx_vtabptr_6gevent_8__waiter_Waiter = (struct __pyx_vtabstruct_6gevent_8__waiter_Waiter*)__Pyx_GetVtable(__pyx_ptype_6gevent_8__waiter_Waiter->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_8__waiter_Waiter)) __PYX_ERR(2, 33, __pyx_L1_error) - __pyx_ptype_6gevent_8__waiter_MultipleWaiter = __Pyx_ImportType("gevent.__waiter", "MultipleWaiter", sizeof(struct __pyx_obj_6gevent_8__waiter_MultipleWaiter), 1); if (unlikely(!__pyx_ptype_6gevent_8__waiter_MultipleWaiter)) __PYX_ERR(2, 47, __pyx_L1_error) - __pyx_vtabptr_6gevent_8__waiter_MultipleWaiter = (struct __pyx_vtabstruct_6gevent_8__waiter_MultipleWaiter*)__Pyx_GetVtable(__pyx_ptype_6gevent_8__waiter_MultipleWaiter->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_8__waiter_MultipleWaiter)) __PYX_ERR(2, 47, __pyx_L1_error) - __pyx_ptype_6gevent_9_greenlet_greenlet = __Pyx_ImportType("greenlet", "greenlet", sizeof(PyGreenlet), 0); if (unlikely(!__pyx_ptype_6gevent_9_greenlet_greenlet)) __PYX_ERR(3, 17, __pyx_L1_error) - __pyx_ptype_6gevent_9_greenlet_CodeType = __Pyx_ImportType("types", "CodeType", sizeof(PyCodeObject), 0); if (unlikely(!__pyx_ptype_6gevent_9_greenlet_CodeType)) __PYX_ERR(3, 40, __pyx_L1_error) - __pyx_ptype_6gevent_9_greenlet_FrameType = __Pyx_ImportType("types", "FrameType", sizeof(PyFrameObject), 0); if (unlikely(!__pyx_ptype_6gevent_9_greenlet_FrameType)) __PYX_ERR(3, 45, __pyx_L1_error) - __pyx_ptype_6gevent_9_greenlet_SpawnedLink = __Pyx_ImportType("gevent._greenlet", "SpawnedLink", sizeof(struct __pyx_obj_6gevent_9_greenlet_SpawnedLink), 1); if (unlikely(!__pyx_ptype_6gevent_9_greenlet_SpawnedLink)) __PYX_ERR(3, 56, __pyx_L1_error) - __pyx_ptype_6gevent_9_greenlet_SuccessSpawnedLink = __Pyx_ImportType("gevent._greenlet", "SuccessSpawnedLink", sizeof(struct __pyx_obj_6gevent_9_greenlet_SuccessSpawnedLink), 1); if (unlikely(!__pyx_ptype_6gevent_9_greenlet_SuccessSpawnedLink)) __PYX_ERR(3, 61, __pyx_L1_error) - __pyx_ptype_6gevent_9_greenlet_FailureSpawnedLink = __Pyx_ImportType("gevent._greenlet", "FailureSpawnedLink", sizeof(struct __pyx_obj_6gevent_9_greenlet_FailureSpawnedLink), 1); if (unlikely(!__pyx_ptype_6gevent_9_greenlet_FailureSpawnedLink)) __PYX_ERR(3, 65, __pyx_L1_error) - __pyx_ptype_6gevent_9_greenlet__Frame = __Pyx_ImportType("gevent._greenlet", "_Frame", sizeof(struct __pyx_obj_6gevent_9_greenlet__Frame), 1); if (unlikely(!__pyx_ptype_6gevent_9_greenlet__Frame)) __PYX_ERR(3, 71, __pyx_L1_error) - __pyx_ptype_6gevent_9_greenlet_Greenlet = __Pyx_ImportType("gevent._greenlet", "Greenlet", sizeof(struct __pyx_obj_6gevent_9_greenlet_Greenlet), 1); if (unlikely(!__pyx_ptype_6gevent_9_greenlet_Greenlet)) __PYX_ERR(3, 86, __pyx_L1_error) - __pyx_vtabptr_6gevent_9_greenlet_Greenlet = (struct __pyx_vtabstruct_6gevent_9_greenlet_Greenlet*)__Pyx_GetVtable(__pyx_ptype_6gevent_9_greenlet_Greenlet->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_9_greenlet_Greenlet)) __PYX_ERR(3, 86, __pyx_L1_error) - __pyx_ptype_6gevent_9_greenlet__dummy_event = __Pyx_ImportType("gevent._greenlet", "_dummy_event", sizeof(struct __pyx_obj_6gevent_9_greenlet__dummy_event), 1); if (unlikely(!__pyx_ptype_6gevent_9_greenlet__dummy_event)) __PYX_ERR(3, 157, __pyx_L1_error) - __pyx_vtabptr_6gevent_9_greenlet__dummy_event = (struct __pyx_vtabstruct_6gevent_9_greenlet__dummy_event*)__Pyx_GetVtable(__pyx_ptype_6gevent_9_greenlet__dummy_event->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_9_greenlet__dummy_event)) __PYX_ERR(3, 157, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_variable_import_code(void) { - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); - /*--- Variable import code ---*/ - __pyx_t_1 = __Pyx_ImportModule("gevent.__ident"); if (!__pyx_t_1) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_1, "heappop", (void **)&__pyx_vp_6gevent_7__ident_heappop, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_1, "heappush", (void **)&__pyx_vp_6gevent_7__ident_heappush, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_1, "WeakKeyDictionary", (void **)&__pyx_vp_6gevent_7__ident_WeakKeyDictionary, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_2 = __Pyx_ImportModule("gevent.__greenlet_primitives"); if (!__pyx_t_2) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_2, "wref", (void **)&__pyx_vp_6gevent_21__greenlet_primitives_wref, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_2, "BlockingSwitchOutError", (void **)&__pyx_vp_6gevent_21__greenlet_primitives_BlockingSwitchOutError, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_2, "_greenlet_imported", (void **)&__pyx_vp_6gevent_21__greenlet_primitives__greenlet_imported, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_3 = __Pyx_ImportModule("gevent.__hub_local"); if (!__pyx_t_3) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_3, "_threadlocal", (void **)&__pyx_vp_6gevent_11__hub_local__threadlocal, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_4 = __Pyx_ImportModule("gevent.__waiter"); if (!__pyx_t_4) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_4, "sys", (void **)&__pyx_vp_6gevent_8__waiter_sys, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_4, "ConcurrentObjectUseError", (void **)&__pyx_vp_6gevent_8__waiter_ConcurrentObjectUseError, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_4, "_greenlet_imported", (void **)&__pyx_vp_6gevent_8__waiter__greenlet_imported, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_4, "_NONE", (void **)&__pyx_vp_6gevent_8__waiter__NONE, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_5 = __Pyx_ImportModule("gevent._greenlet"); if (!__pyx_t_5) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "_PYPY", (void **)&__pyx_vp_6gevent_9_greenlet__PYPY, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "sys_getframe", (void **)&__pyx_vp_6gevent_9_greenlet_sys_getframe, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "sys_exc_info", (void **)&__pyx_vp_6gevent_9_greenlet_sys_exc_info, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "Timeout", (void **)&__pyx_vp_6gevent_9_greenlet_Timeout, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "GreenletExit", (void **)&__pyx_vp_6gevent_9_greenlet_GreenletExit, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "InvalidSwitchError", (void **)&__pyx_vp_6gevent_9_greenlet_InvalidSwitchError, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "_greenlet_imported", (void **)&__pyx_vp_6gevent_9_greenlet__greenlet_imported, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "_greenlet__init__", (void **)&__pyx_vp_6gevent_9_greenlet__greenlet__init__, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "_threadlocal", (void **)&__pyx_vp_6gevent_9_greenlet__threadlocal, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "get_hub_class", (void **)&__pyx_vp_6gevent_9_greenlet_get_hub_class, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "wref", (void **)&__pyx_vp_6gevent_9_greenlet_wref, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "dump_traceback", (void **)&__pyx_vp_6gevent_9_greenlet_dump_traceback, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "load_traceback", (void **)&__pyx_vp_6gevent_9_greenlet_load_traceback, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "wait", (void **)&__pyx_vp_6gevent_9_greenlet_wait, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "iwait", (void **)&__pyx_vp_6gevent_9_greenlet_iwait, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "reraise", (void **)&__pyx_vp_6gevent_9_greenlet_reraise, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "GEVENT_CONFIG", (void **)&__pyx_vp_6gevent_9_greenlet_GEVENT_CONFIG, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "_cancelled_start_event", (void **)&__pyx_vp_6gevent_9_greenlet__cancelled_start_event, "struct __pyx_obj_6gevent_9_greenlet__dummy_event *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_5, "_start_completed_event", (void **)&__pyx_vp_6gevent_9_greenlet__start_completed_event, "struct __pyx_obj_6gevent_9_greenlet__dummy_event *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_function_import_code(void) { - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); - /*--- Function import code ---*/ - __pyx_t_1 = __Pyx_ImportModule("gevent.__hub_local"); if (!__pyx_t_1) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportFunction(__pyx_t_1, "get_hub_noargs", (void (**)(void))&__pyx_f_6gevent_11__hub_local_get_hub_noargs, "struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *(int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_RefNannyFinishContext(); - return -1; -} - - -#if PY_MAJOR_VERSION < 3 -#ifdef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC void -#else -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -#endif -#else -#ifdef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC PyObject * -#else -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -#endif -#endif -#ifndef CYTHON_SMALL_CODE -#if defined(__clang__) - #define CYTHON_SMALL_CODE -#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4))) - #define CYTHON_SMALL_CODE __attribute__((cold)) -#else - #define CYTHON_SMALL_CODE -#endif -#endif - - -#if PY_MAJOR_VERSION < 3 -__Pyx_PyMODINIT_FUNC init_local(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC init_local(void) -#else -__Pyx_PyMODINIT_FUNC PyInit__local(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC PyInit__local(void) -#if CYTHON_PEP489_MULTI_PHASE_INIT -{ - return PyModuleDef_Init(&__pyx_moduledef); -} -static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) { - PyObject *value = PyObject_GetAttrString(spec, from_name); - int result = 0; - if (likely(value)) { - result = PyDict_SetItemString(moddict, to_name, value); - Py_DECREF(value); - } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Clear(); - } else { - result = -1; - } - return result; -} -static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) { - PyObject *module = NULL, *moddict, *modname; - if (__pyx_m) - return __Pyx_NewRef(__pyx_m); - modname = PyObject_GetAttrString(spec, "name"); - if (unlikely(!modname)) goto bad; - module = PyModule_NewObject(modname); - Py_DECREF(modname); - if (unlikely(!module)) goto bad; - moddict = PyModule_GetDict(module); - if (unlikely(!moddict)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__") < 0)) goto bad; - return module; -bad: - Py_XDECREF(module); - return NULL; -} - - -static int __pyx_pymod_exec__local(PyObject *__pyx_pyinit_module) -#endif -#endif -{ - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - int __pyx_t_7; - int __pyx_t_8; - PyObject *__pyx_t_9 = NULL; - __Pyx_RefNannyDeclarations - #if CYTHON_PEP489_MULTI_PHASE_INIT - if (__pyx_m && __pyx_m == __pyx_pyinit_module) return 0; - #elif PY_MAJOR_VERSION >= 3 - if (__pyx_m) return __Pyx_NewRef(__pyx_m); - #endif - #if CYTHON_REFNANNY -__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); -if (!__Pyx_RefNanny) { - PyErr_Clear(); - __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); - if (!__Pyx_RefNanny) - Py_FatalError("failed to import 'refnanny' module"); -} -#endif - __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit__local(void)", 0); - if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) - #ifdef __Pyx_CyFunction_USED - if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_FusedFunction_USED - if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Coroutine_USED - if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Generator_USED - if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_AsyncGen_USED - if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_StopAsyncIteration_USED - if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - /*--- Library function declarations ---*/ - /*--- Threads initialization code ---*/ - #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS - #ifdef WITH_THREAD /* Python build with threading support? */ - PyEval_InitThreads(); - #endif - #endif - /*--- Module creation code ---*/ - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_m = __pyx_pyinit_module; - Py_INCREF(__pyx_m); - #else - #if PY_MAJOR_VERSION < 3 - __pyx_m = Py_InitModule4("_local", __pyx_methods, __pyx_k_Greenlet_local_objects_This_mod, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); - #else - __pyx_m = PyModule_Create(&__pyx_moduledef); - #endif - if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) - Py_INCREF(__pyx_d); - __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) - #if CYTHON_COMPILING_IN_PYPY - Py_INCREF(__pyx_b); - #endif - if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - /*--- Initialize various global constants etc. ---*/ - if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) - if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - if (__pyx_module_is_main_gevent___local) { - if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - } - #if PY_MAJOR_VERSION >= 3 - { - PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) - if (!PyDict_GetItemString(modules, "gevent._local")) { - if (unlikely(PyDict_SetItemString(modules, "gevent._local", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) - } - } - #endif - /*--- Builtin init code ---*/ - if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Constants init code ---*/ - if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Global type/function init code ---*/ - (void)__Pyx_modinit_global_init_code(); - if (unlikely(__Pyx_modinit_variable_export_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_function_export_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_type_init_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_type_import_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_variable_import_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_function_import_code() != 0)) goto __pyx_L1_error; - /*--- Execution code ---*/ - #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) - if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - - /* "src/gevent/local.py":156 - * from __future__ import print_function - * - * from copy import copy # <<<<<<<<<<<<<< - * from weakref import ref - * - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 156, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_copy_2); - __Pyx_GIVEREF(__pyx_n_s_copy_2); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_copy_2); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_copy_2, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 156, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_copy_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 156, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_v_6gevent_6_local_copy); - __Pyx_DECREF_SET(__pyx_v_6gevent_6_local_copy, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/local.py":157 - * - * from copy import copy - * from weakref import ref # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 157, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_ref); - __Pyx_GIVEREF(__pyx_n_s_ref); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_ref); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_weakref, __pyx_t_2, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 157, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_ref); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 157, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_v_6gevent_6_local_ref); - __Pyx_DECREF_SET(__pyx_v_6gevent_6_local_ref, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/local.py":160 - * - * - * locals()['getcurrent'] = __import__('greenlet').getcurrent # <<<<<<<<<<<<<< - * locals()['greenlet_init'] = lambda: None - * - */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin___import__, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 160, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_getcurrent); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 160, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_Globals(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 160, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (unlikely(PyDict_SetItem(__pyx_t_1, __pyx_n_s_getcurrent, __pyx_t_2) < 0)) __PYX_ERR(0, 160, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/local.py":161 - * - * locals()['getcurrent'] = __import__('greenlet').getcurrent - * locals()['greenlet_init'] = lambda: None # <<<<<<<<<<<<<< - * - * __all__ = [ - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_local_4lambda, 0, __pyx_n_s_lambda, NULL, __pyx_n_s_gevent__local, __pyx_d, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 161, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_Globals(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 161, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (unlikely(PyDict_SetItem(__pyx_t_1, __pyx_n_s_greenlet_init, __pyx_t_2) < 0)) __PYX_ERR(0, 161, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/local.py":163 - * locals()['greenlet_init'] = lambda: None - * - * __all__ = [ # <<<<<<<<<<<<<< - * "local", - * ] - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 163, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_local); - __Pyx_GIVEREF(__pyx_n_s_local); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_local); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_all, __pyx_t_2) < 0) __PYX_ERR(0, 163, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/local.py":170 - * # We keep it a string for speed but make it unlikely to clash with - * # a "real" attribute. - * key_prefix = '_gevent_local_localimpl_' # <<<<<<<<<<<<<< - * - * # The overall structure is as follows: - */ - __Pyx_INCREF(__pyx_n_s_gevent_local_localimpl); - __Pyx_XGOTREF(__pyx_v_6gevent_6_local_key_prefix); - __Pyx_DECREF_SET(__pyx_v_6gevent_6_local_key_prefix, __pyx_n_s_gevent_local_localimpl); - __Pyx_GIVEREF(__pyx_n_s_gevent_local_localimpl); - - /* "src/gevent/local.py":179 - * # That final tuple is actually a localimpl_dict_entry object. - * - * def all_local_dicts_for_greenlet(greenlet): # <<<<<<<<<<<<<< - * """ - * Internal debug helper for getting the local values associated - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_local_1all_local_dicts_for_greenlet, 0, __pyx_n_s_all_local_dicts_for_greenlet, NULL, __pyx_n_s_gevent__local, __pyx_d, ((PyObject *)__pyx_codeobj__3)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 179, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_all_local_dicts_for_greenlet, __pyx_t_2) < 0) __PYX_ERR(0, 179, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/local.py":222 - * weakref. - * """ - * __slots__ = ('idt', 'wrdicts') # <<<<<<<<<<<<<< - * - * def __init__(self, idt, wrdicts): - */ - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_local__greenlet_deleted->tp_dict, __pyx_n_s_slots, __pyx_tuple__4) < 0) __PYX_ERR(0, 222, __pyx_L1_error) - PyType_Modified(__pyx_ptype_6gevent_6_local__greenlet_deleted); - - /* "src/gevent/local.py":234 - * - * class _local_deleted(object): - * __slots__ = ('key', 'wrthread', 'greenlet_deleted') # <<<<<<<<<<<<<< - * - * def __init__(self, key, wrthread, greenlet_deleted): - */ - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_local__local_deleted->tp_dict, __pyx_n_s_slots, __pyx_tuple__5) < 0) __PYX_ERR(0, 234, __pyx_L1_error) - PyType_Modified(__pyx_ptype_6gevent_6_local__local_deleted); - - /* "src/gevent/local.py":254 - * class _localimpl(object): - * """A class managing thread-local dicts""" - * __slots__ = ('key', 'dicts', # <<<<<<<<<<<<<< - * 'localargs', 'localkwargs', - * 'localtypeid', - */ - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_local__localimpl->tp_dict, __pyx_n_s_slots, __pyx_tuple__6) < 0) __PYX_ERR(0, 254, __pyx_L1_error) - PyType_Modified(__pyx_ptype_6gevent_6_local__localimpl); - - /* "src/gevent/local.py":280 - * # This is a class, not just a tuple, so that cython can optimize - * # attribute access - * __slots__ = ('wrgreenlet', 'localdict') # <<<<<<<<<<<<<< - * - * def __init__(self, wrgreenlet, localdict): - */ - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_local__localimpl_dict_entry->tp_dict, __pyx_n_s_slots, __pyx_tuple__7) < 0) __PYX_ERR(0, 280, __pyx_L1_error) - PyType_Modified(__pyx_ptype_6gevent_6_local__localimpl_dict_entry); - - /* "src/gevent/local.py":331 - * - * - * _marker = object() # <<<<<<<<<<<<<< - * - * def _local_get_dict(self): - */ - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_builtin_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 331, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_v_6gevent_6_local__marker); - __Pyx_DECREF_SET(__pyx_v_6gevent_6_local__marker, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - - /* "src/gevent/local.py":350 - * - * _local_attrs = { - * '_local__impl', # <<<<<<<<<<<<<< - * '_local_type_get_descriptors', - * '_local_type_set_or_del_descriptors', - */ - __pyx_t_2 = PySet_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 350, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PySet_Add(__pyx_t_2, __pyx_n_s_local__impl) < 0) __PYX_ERR(0, 350, __pyx_L1_error) - if (PySet_Add(__pyx_t_2, __pyx_n_s_local_type_get_descriptors) < 0) __PYX_ERR(0, 350, __pyx_L1_error) - if (PySet_Add(__pyx_t_2, __pyx_n_s_local_type_set_or_del_descripto) < 0) __PYX_ERR(0, 350, __pyx_L1_error) - if (PySet_Add(__pyx_t_2, __pyx_n_s_local_type_del_descriptors) < 0) __PYX_ERR(0, 350, __pyx_L1_error) - if (PySet_Add(__pyx_t_2, __pyx_n_s_local_type_set_descriptors) < 0) __PYX_ERR(0, 350, __pyx_L1_error) - if (PySet_Add(__pyx_t_2, __pyx_n_s_local_type_2) < 0) __PYX_ERR(0, 350, __pyx_L1_error) - if (PySet_Add(__pyx_t_2, __pyx_n_s_local_type_vars) < 0) __PYX_ERR(0, 350, __pyx_L1_error) - if (PySet_Add(__pyx_t_2, __pyx_n_s_class) < 0) __PYX_ERR(0, 350, __pyx_L1_error) - if (PySet_Add(__pyx_t_2, __pyx_n_s_cinit) < 0) __PYX_ERR(0, 350, __pyx_L1_error) - __Pyx_XGOTREF(__pyx_v_6gevent_6_local__local_attrs); - __Pyx_DECREF_SET(__pyx_v_6gevent_6_local__local_attrs, ((PyObject*)__pyx_t_2)); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - - /* "src/gevent/local.py":365 - * An object whose attributes are greenlet-local. - * """ - * __slots__ = tuple(_local_attrs - {'__class__', '__cinit__'}) # <<<<<<<<<<<<<< - * - * def __cinit__(self, *args, **kw): - */ - __pyx_t_2 = PySet_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 365, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PySet_Add(__pyx_t_2, __pyx_n_s_class) < 0) __PYX_ERR(0, 365, __pyx_L1_error) - if (PySet_Add(__pyx_t_2, __pyx_n_s_cinit) < 0) __PYX_ERR(0, 365, __pyx_L1_error) - __pyx_t_1 = PyNumber_Subtract(__pyx_v_6gevent_6_local__local_attrs, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 365, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PySequence_Tuple(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 365, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_local_local->tp_dict, __pyx_n_s_slots, __pyx_t_2) < 0) __PYX_ERR(0, 365, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_local_local); - - /* "src/gevent/local.py":517 - * raise AttributeError(name) - * - * def __copy__(self): # <<<<<<<<<<<<<< - * impl = self._local__impl - * entry = impl.dicts[id(getcurrent())] # pylint:disable=undefined-variable - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_local_5local_9__copy__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_local___copy, NULL, __pyx_n_s_gevent__local, __pyx_d, ((PyObject *)__pyx_codeobj__9)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 517, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_local_local->tp_dict, __pyx_n_s_copy, __pyx_t_2) < 0) __PYX_ERR(0, 517, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_local_local); - - /* "src/gevent/local.py":574 - * # (e.g., on PyPy). So we set it at runtime. Cython - * # will raise an error if we're compiled. - * def __new__(cls, *args, **kw): # <<<<<<<<<<<<<< - * self = super(local, cls).__new__(cls) - * # We get the cls in *args for some reason - */ - __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_local_3__new__, 0, __pyx_n_s_new, NULL, __pyx_n_s_gevent__local, __pyx_d, ((PyObject *)__pyx_codeobj__11)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 574, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_new, __pyx_t_2) < 0) __PYX_ERR(0, 574, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/local.py":582 - * return self - * - * try: # <<<<<<<<<<<<<< - * # PyPy2/3 and CPython handle adding a __new__ to the class - * # in different ways. In CPython and PyPy3, it must be wrapped with classmethod; - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5); - __Pyx_XGOTREF(__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_t_5); - /*try:*/ { - - /* "src/gevent/local.py":587 - * # in PyPy2, it must not. In either case, the args that get passed to - * # it are stil wrong. - * local.__new__ = 'None' # <<<<<<<<<<<<<< - * except TypeError: # pragma: no cover - * # Must be compiled - */ - if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_ptype_6gevent_6_local_local), __pyx_n_s_new, __pyx_n_s_None) < 0) __PYX_ERR(0, 587, __pyx_L2_error) - - /* "src/gevent/local.py":582 - * return self - * - * try: # <<<<<<<<<<<<<< - * # PyPy2/3 and CPython handle adding a __new__ to the class - * # in different ways. In CPython and PyPy3, it must be wrapped with classmethod; - */ - } - - /* "src/gevent/local.py":592 - * pass - * else: - * from gevent._compat import PYPY # <<<<<<<<<<<<<< - * from gevent._compat import PY2 - * if PYPY and PY2: - */ - /*else:*/ { - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 592, __pyx_L4_except_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_PYPY_2); - __Pyx_GIVEREF(__pyx_n_s_PYPY_2); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PYPY_2); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_gevent__compat, __pyx_t_2, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 592, __pyx_L4_except_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_PYPY_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 592, __pyx_L4_except_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_PYPY_2, __pyx_t_2) < 0) __PYX_ERR(0, 592, __pyx_L4_except_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/local.py":593 - * else: - * from gevent._compat import PYPY - * from gevent._compat import PY2 # <<<<<<<<<<<<<< - * if PYPY and PY2: - * local.__new__ = __new__ - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 593, __pyx_L4_except_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_PY2); - __Pyx_GIVEREF(__pyx_n_s_PY2); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PY2); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_gevent__compat, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 593, __pyx_L4_except_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_PY2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 593, __pyx_L4_except_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_PY2, __pyx_t_1) < 0) __PYX_ERR(0, 593, __pyx_L4_except_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/local.py":594 - * from gevent._compat import PYPY - * from gevent._compat import PY2 - * if PYPY and PY2: # <<<<<<<<<<<<<< - * local.__new__ = __new__ - * else: - */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_PYPY_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 594, __pyx_L4_except_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 594, __pyx_L4_except_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (__pyx_t_7) { - } else { - __pyx_t_6 = __pyx_t_7; - goto __pyx_L9_bool_binop_done; - } - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_PY2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 594, __pyx_L4_except_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 594, __pyx_L4_except_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_6 = __pyx_t_7; - __pyx_L9_bool_binop_done:; - if (__pyx_t_6) { - - /* "src/gevent/local.py":595 - * from gevent._compat import PY2 - * if PYPY and PY2: - * local.__new__ = __new__ # <<<<<<<<<<<<<< - * else: - * local.__new__ = classmethod(__new__) - */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 595, __pyx_L4_except_error) - __Pyx_GOTREF(__pyx_t_2); - if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_ptype_6gevent_6_local_local), __pyx_n_s_new, __pyx_t_2) < 0) __PYX_ERR(0, 595, __pyx_L4_except_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/local.py":594 - * from gevent._compat import PYPY - * from gevent._compat import PY2 - * if PYPY and PY2: # <<<<<<<<<<<<<< - * local.__new__ = __new__ - * else: - */ - goto __pyx_L8; - } - - /* "src/gevent/local.py":597 - * local.__new__ = __new__ - * else: - * local.__new__ = classmethod(__new__) # <<<<<<<<<<<<<< - * - * del PYPY - */ - /*else*/ { - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 597, __pyx_L4_except_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_classmethod, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 597, __pyx_L4_except_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_ptype_6gevent_6_local_local), __pyx_n_s_new, __pyx_t_1) < 0) __PYX_ERR(0, 597, __pyx_L4_except_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __pyx_L8:; - - /* "src/gevent/local.py":599 - * local.__new__ = classmethod(__new__) - * - * del PYPY # <<<<<<<<<<<<<< - * del PY2 - * - */ - if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_PYPY_2) < 0) __PYX_ERR(0, 599, __pyx_L4_except_error) - - /* "src/gevent/local.py":600 - * - * del PYPY - * del PY2 # <<<<<<<<<<<<<< - * - * _init() - */ - if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_PY2) < 0) __PYX_ERR(0, 600, __pyx_L4_except_error) - } - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - goto __pyx_L7_try_end; - __pyx_L2_error:; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/local.py":588 - * # it are stil wrong. - * local.__new__ = 'None' - * except TypeError: # pragma: no cover # <<<<<<<<<<<<<< - * # Must be compiled - * pass - */ - __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError); - if (__pyx_t_8) { - __Pyx_ErrRestore(0,0,0); - goto __pyx_L3_exception_handled; - } - goto __pyx_L4_except_error; - __pyx_L4_except_error:; - - /* "src/gevent/local.py":582 - * return self - * - * try: # <<<<<<<<<<<<<< - * # PyPy2/3 and CPython handle adding a __new__ to the class - * # in different ways. In CPython and PyPy3, it must be wrapped with classmethod; - */ - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5); - goto __pyx_L1_error; - __pyx_L3_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5); - __pyx_L7_try_end:; - } - - /* "src/gevent/local.py":602 - * del PY2 - * - * _init() # <<<<<<<<<<<<<< - * - * from gevent._util import import_c_accel - */ - __pyx_f_6gevent_6_local__init(); - - /* "src/gevent/local.py":604 - * _init() - * - * from gevent._util import import_c_accel # <<<<<<<<<<<<<< - * import_c_accel(globals(), 'gevent._local') - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 604, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_import_c_accel); - __Pyx_GIVEREF(__pyx_n_s_import_c_accel); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_import_c_accel); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_gevent__util, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 604, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_import_c_accel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 604, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_import_c_accel, __pyx_t_1) < 0) __PYX_ERR(0, 604, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/local.py":605 - * - * from gevent._util import import_c_accel - * import_c_accel(globals(), 'gevent._local') # <<<<<<<<<<<<<< - */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_import_c_accel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 605, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_Globals(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 605, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 605, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1); - __Pyx_INCREF(__pyx_n_s_gevent__local); - __Pyx_GIVEREF(__pyx_n_s_gevent__local); - PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_n_s_gevent__local); - __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 605, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/local.py":1 - * # cython: auto_pickle=False,embedsignature=True,always_allow_keywords=False # <<<<<<<<<<<<<< - * """ - * Greenlet-local objects. - */ - __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "gevent/_local.pxd":29 - * return PyGreenlet_GetCurrent() - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - - /*--- Wrapped vars code ---*/ - - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_9); - if (__pyx_m) { - if (__pyx_d) { - __Pyx_AddTraceback("init gevent._local", 0, __pyx_lineno, __pyx_filename); - } - Py_DECREF(__pyx_m); __pyx_m = 0; - } else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_ImportError, "init gevent._local"); - } - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - #if CYTHON_PEP489_MULTI_PHASE_INIT - return (__pyx_m != NULL) ? 0 : -1; - #elif PY_MAJOR_VERSION >= 3 - return __pyx_m; - #else - return; - #endif -} - -/* --- Runtime support code --- */ -/* Refnanny */ -#if CYTHON_REFNANNY -static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { - PyObject *m = NULL, *p = NULL; - void *r = NULL; - m = PyImport_ImportModule((char *)modname); - if (!m) goto end; - p = PyObject_GetAttrString(m, (char *)"RefNannyAPI"); - if (!p) goto end; - r = PyLong_AsVoidPtr(p); -end: - Py_XDECREF(p); - Py_XDECREF(m); - return (__Pyx_RefNannyAPIStruct *)r; -} -#endif - -/* PyObjectGetAttrStr */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_getattro)) - return tp->tp_getattro(obj, attr_name); -#if PY_MAJOR_VERSION < 3 - if (likely(tp->tp_getattr)) - return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); -#endif - return PyObject_GetAttr(obj, attr_name); -} -#endif - -/* GetBuiltinName */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name) { - PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); - if (unlikely(!result)) { - PyErr_Format(PyExc_NameError, -#if PY_MAJOR_VERSION >= 3 - "name '%U' is not defined", name); -#else - "name '%.200s' is not defined", PyString_AS_STRING(name)); -#endif - } - return result; -} - -/* PyCFunctionFastCall */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { - PyCFunctionObject *func = (PyCFunctionObject*)func_obj; - PyCFunction meth = PyCFunction_GET_FUNCTION(func); - PyObject *self = PyCFunction_GET_SELF(func); - int flags = PyCFunction_GET_FLAGS(func); - assert(PyCFunction_Check(func)); - assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))); - assert(nargs >= 0); - assert(nargs == 0 || args != NULL); - /* _PyCFunction_FastCallDict() must not be called with an exception set, - because it may clear it (directly or indirectly) and so the - caller loses its exception */ - assert(!PyErr_Occurred()); - if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { - return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL); - } else { - return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs); - } -} -#endif - -/* PyFunctionFastCall */ -#if CYTHON_FAST_PYCALL -#include "frameobject.h" -static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, - PyObject *globals) { - PyFrameObject *f; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject **fastlocals; - Py_ssize_t i; - PyObject *result; - assert(globals != NULL); - /* XXX Perhaps we should create a specialized - PyFrame_New() that doesn't take locals, but does - take builtins without sanity checking them. - */ - assert(tstate != NULL); - f = PyFrame_New(tstate, co, globals, NULL); - if (f == NULL) { - return NULL; - } - fastlocals = f->f_localsplus; - for (i = 0; i < na; i++) { - Py_INCREF(*args); - fastlocals[i] = *args++; - } - result = PyEval_EvalFrameEx(f,0); - ++tstate->recursion_depth; - Py_DECREF(f); - --tstate->recursion_depth; - return result; -} -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs) { - PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); - PyObject *globals = PyFunction_GET_GLOBALS(func); - PyObject *argdefs = PyFunction_GET_DEFAULTS(func); - PyObject *closure; -#if PY_MAJOR_VERSION >= 3 - PyObject *kwdefs; -#endif - PyObject *kwtuple, **k; - PyObject **d; - Py_ssize_t nd; - Py_ssize_t nk; - PyObject *result; - assert(kwargs == NULL || PyDict_Check(kwargs)); - nk = kwargs ? PyDict_Size(kwargs) : 0; - if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { - return NULL; - } - if ( -#if PY_MAJOR_VERSION >= 3 - co->co_kwonlyargcount == 0 && -#endif - likely(kwargs == NULL || nk == 0) && - co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { - if (argdefs == NULL && co->co_argcount == nargs) { - result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); - goto done; - } - else if (nargs == 0 && argdefs != NULL - && co->co_argcount == Py_SIZE(argdefs)) { - /* function called with no arguments, but all parameters have - a default value: use default values as arguments .*/ - args = &PyTuple_GET_ITEM(argdefs, 0); - result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); - goto done; - } - } - if (kwargs != NULL) { - Py_ssize_t pos, i; - kwtuple = PyTuple_New(2 * nk); - if (kwtuple == NULL) { - result = NULL; - goto done; - } - k = &PyTuple_GET_ITEM(kwtuple, 0); - pos = i = 0; - while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { - Py_INCREF(k[i]); - Py_INCREF(k[i+1]); - i += 2; - } - nk = i / 2; - } - else { - kwtuple = NULL; - k = NULL; - } - closure = PyFunction_GET_CLOSURE(func); -#if PY_MAJOR_VERSION >= 3 - kwdefs = PyFunction_GET_KW_DEFAULTS(func); -#endif - if (argdefs != NULL) { - d = &PyTuple_GET_ITEM(argdefs, 0); - nd = Py_SIZE(argdefs); - } - else { - d = NULL; - nd = 0; - } -#if PY_MAJOR_VERSION >= 3 - result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, - args, nargs, - k, (int)nk, - d, (int)nd, kwdefs, closure); -#else - result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, - args, nargs, - k, (int)nk, - d, (int)nd, closure); -#endif - Py_XDECREF(kwtuple); -done: - Py_LeaveRecursiveCall(); - return result; -} -#endif -#endif - -/* PyObjectCall */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { - PyObject *result; - ternaryfunc call = func->ob_type->tp_call; - if (unlikely(!call)) - return PyObject_Call(func, arg, kw); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = (*call)(func, arg, kw); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCallMethO */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { - PyObject *self, *result; - PyCFunction cfunc; - cfunc = PyCFunction_GET_FUNCTION(func); - self = PyCFunction_GET_SELF(func); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = cfunc(self, arg); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCallOneArg */ -#if CYTHON_COMPILING_IN_CPYTHON -static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_New(1); - if (unlikely(!args)) return NULL; - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 0, arg); - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, &arg, 1); - } -#endif - if (likely(PyCFunction_Check(func))) { - if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { - return __Pyx_PyObject_CallMethO(func, arg); -#if CYTHON_FAST_PYCCALL - } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { - return __Pyx_PyCFunction_FastCall(func, &arg, 1); -#endif - } - } - return __Pyx__PyObject_CallOneArg(func, arg); -} -#else -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_Pack(1, arg); - if (unlikely(!args)) return NULL; - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -#endif - -/* UnpackUnboundCMethod */ -static int __Pyx_TryUnpackUnboundCMethod(__Pyx_CachedCFunction* target) { - PyObject *method; - method = __Pyx_PyObject_GetAttrStr(target->type, *target->method_name); - if (unlikely(!method)) - return -1; - target->method = method; -#if CYTHON_COMPILING_IN_CPYTHON - #if PY_MAJOR_VERSION >= 3 - if (likely(__Pyx_TypeCheck(method, &PyMethodDescr_Type))) - #endif - { - PyMethodDescrObject *descr = (PyMethodDescrObject*) method; - target->func = descr->d_method->ml_meth; - target->flag = descr->d_method->ml_flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST); - } -#endif - return 0; -} - -/* CallUnboundCMethod0 */ -static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self) { - PyObject *args, *result = NULL; - if (unlikely(!cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL; -#if CYTHON_ASSUME_SAFE_MACROS - args = PyTuple_New(1); - if (unlikely(!args)) goto bad; - Py_INCREF(self); - PyTuple_SET_ITEM(args, 0, self); -#else - args = PyTuple_Pack(1, self); - if (unlikely(!args)) goto bad; -#endif - result = __Pyx_PyObject_Call(cfunc->method, args, NULL); - Py_DECREF(args); -bad: - return result; -} - -/* py_dict_items */ -static CYTHON_INLINE PyObject* __Pyx_PyDict_Items(PyObject* d) { - if (PY_MAJOR_VERSION >= 3) - return __Pyx_CallUnboundCMethod0(&__pyx_umethod_PyDict_Type_items, d); - else - return PyDict_Items(d); -} - -/* RaiseTooManyValuesToUnpack */ -static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { - PyErr_Format(PyExc_ValueError, - "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); -} - -/* RaiseNeedMoreValuesToUnpack */ -static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { - PyErr_Format(PyExc_ValueError, - "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", - index, (index == 1) ? "" : "s"); -} - -/* IterFinish */ -static CYTHON_INLINE int __Pyx_IterFinish(void) { -#if CYTHON_FAST_THREAD_STATE - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject* exc_type = tstate->curexc_type; - if (unlikely(exc_type)) { - if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) { - PyObject *exc_value, *exc_tb; - exc_value = tstate->curexc_value; - exc_tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; - Py_DECREF(exc_type); - Py_XDECREF(exc_value); - Py_XDECREF(exc_tb); - return 0; - } else { - return -1; - } - } - return 0; -#else - if (unlikely(PyErr_Occurred())) { - if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) { - PyErr_Clear(); - return 0; - } else { - return -1; - } - } - return 0; -#endif -} - -/* UnpackItemEndCheck */ -static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { - if (unlikely(retval)) { - Py_DECREF(retval); - __Pyx_RaiseTooManyValuesError(expected); - return -1; - } else { - return __Pyx_IterFinish(); - } - return 0; -} - -/* bytes_tailmatch */ -static int __Pyx_PyBytes_SingleTailmatch(PyObject* self, PyObject* arg, - Py_ssize_t start, Py_ssize_t end, int direction) { - const char* self_ptr = PyBytes_AS_STRING(self); - Py_ssize_t self_len = PyBytes_GET_SIZE(self); - const char* sub_ptr; - Py_ssize_t sub_len; - int retval; - Py_buffer view; - view.obj = NULL; - if ( PyBytes_Check(arg) ) { - sub_ptr = PyBytes_AS_STRING(arg); - sub_len = PyBytes_GET_SIZE(arg); - } -#if PY_MAJOR_VERSION < 3 - else if ( PyUnicode_Check(arg) ) { - return (int) PyUnicode_Tailmatch(self, arg, start, end, direction); - } -#endif - else { - if (unlikely(PyObject_GetBuffer(self, &view, PyBUF_SIMPLE) == -1)) - return -1; - sub_ptr = (const char*) view.buf; - sub_len = view.len; - } - if (end > self_len) - end = self_len; - else if (end < 0) - end += self_len; - if (end < 0) - end = 0; - if (start < 0) - start += self_len; - if (start < 0) - start = 0; - if (direction > 0) { - if (end-sub_len > start) - start = end - sub_len; - } - if (start + sub_len <= end) - retval = !memcmp(self_ptr+start, sub_ptr, (size_t)sub_len); - else - retval = 0; - if (view.obj) - PyBuffer_Release(&view); - return retval; -} -static int __Pyx_PyBytes_TailmatchTuple(PyObject* self, PyObject* substrings, - Py_ssize_t start, Py_ssize_t end, int direction) { - Py_ssize_t i, count = PyTuple_GET_SIZE(substrings); - for (i = 0; i < count; i++) { - int result; -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - result = __Pyx_PyBytes_SingleTailmatch(self, PyTuple_GET_ITEM(substrings, i), - start, end, direction); -#else - PyObject* sub = PySequence_ITEM(substrings, i); - if (unlikely(!sub)) return -1; - result = __Pyx_PyBytes_SingleTailmatch(self, sub, start, end, direction); - Py_DECREF(sub); -#endif - if (result) { - return result; - } - } - return 0; -} -static int __Pyx_PyBytes_Tailmatch(PyObject* self, PyObject* substr, - Py_ssize_t start, Py_ssize_t end, int direction) { - if (unlikely(PyTuple_Check(substr))) { - return __Pyx_PyBytes_TailmatchTuple(self, substr, start, end, direction); - } - return __Pyx_PyBytes_SingleTailmatch(self, substr, start, end, direction); -} - -/* unicode_tailmatch */ -static int __Pyx_PyUnicode_TailmatchTuple(PyObject* s, PyObject* substrings, - Py_ssize_t start, Py_ssize_t end, int direction) { - Py_ssize_t i, count = PyTuple_GET_SIZE(substrings); - for (i = 0; i < count; i++) { - Py_ssize_t result; -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - result = PyUnicode_Tailmatch(s, PyTuple_GET_ITEM(substrings, i), - start, end, direction); -#else - PyObject* sub = PySequence_ITEM(substrings, i); - if (unlikely(!sub)) return -1; - result = PyUnicode_Tailmatch(s, sub, start, end, direction); - Py_DECREF(sub); -#endif - if (result) { - return (int) result; - } - } - return 0; -} -static int __Pyx_PyUnicode_Tailmatch(PyObject* s, PyObject* substr, - Py_ssize_t start, Py_ssize_t end, int direction) { - if (unlikely(PyTuple_Check(substr))) { - return __Pyx_PyUnicode_TailmatchTuple(s, substr, start, end, direction); - } - return (int) PyUnicode_Tailmatch(s, substr, start, end, direction); -} - -/* str_tailmatch */ -static CYTHON_INLINE int __Pyx_PyStr_Tailmatch(PyObject* self, PyObject* arg, Py_ssize_t start, - Py_ssize_t end, int direction) -{ - if (PY_MAJOR_VERSION < 3) - return __Pyx_PyBytes_Tailmatch(self, arg, start, end, direction); - else - return __Pyx_PyUnicode_Tailmatch(self, arg, start, end, direction); -} - -/* PyObjectCallNoArg */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, NULL, 0); - } -#endif -#ifdef __Pyx_CyFunction_USED - if (likely(PyCFunction_Check(func) || __Pyx_TypeCheck(func, __pyx_CyFunctionType))) { -#else - if (likely(PyCFunction_Check(func))) { -#endif - if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { - return __Pyx_PyObject_CallMethO(func, NULL); - } - } - return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL); -} -#endif - -/* ExtTypeTest */ - static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { - if (unlikely(!type)) { - PyErr_SetString(PyExc_SystemError, "Missing type object"); - return 0; - } - if (likely(__Pyx_TypeCheck(obj, type))) - return 1; - PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s", - Py_TYPE(obj)->tp_name, type->tp_name); - return 0; -} - -/* CallUnboundCMethod1 */ - #if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg) { - if (likely(cfunc->func)) { - int flag = cfunc->flag; - if (flag == METH_O) { - return (*(cfunc->func))(self, arg); - } else if (PY_VERSION_HEX >= 0x030600B1 && flag == METH_FASTCALL) { - if (PY_VERSION_HEX >= 0x030700A0) { - return (*(__Pyx_PyCFunctionFast)cfunc->func)(self, &arg, 1); - } else { - return (*(__Pyx_PyCFunctionFastWithKeywords)cfunc->func)(self, &arg, 1, NULL); - } - } else if (PY_VERSION_HEX >= 0x030700A0 && flag == (METH_FASTCALL | METH_KEYWORDS)) { - return (*(__Pyx_PyCFunctionFastWithKeywords)cfunc->func)(self, &arg, 1, NULL); - } - } - return __Pyx__CallUnboundCMethod1(cfunc, self, arg); -} -#endif -static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg){ - PyObject *args, *result = NULL; - if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL; -#if CYTHON_COMPILING_IN_CPYTHON - if (cfunc->func && (cfunc->flag & METH_VARARGS)) { - args = PyTuple_New(1); - if (unlikely(!args)) goto bad; - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 0, arg); - if (cfunc->flag & METH_KEYWORDS) - result = (*(PyCFunctionWithKeywords)cfunc->func)(self, args, NULL); - else - result = (*cfunc->func)(self, args); - } else { - args = PyTuple_New(2); - if (unlikely(!args)) goto bad; - Py_INCREF(self); - PyTuple_SET_ITEM(args, 0, self); - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 1, arg); - result = __Pyx_PyObject_Call(cfunc->method, args, NULL); - } -#else - args = PyTuple_Pack(2, self, arg); - if (unlikely(!args)) goto bad; - result = __Pyx_PyObject_Call(cfunc->method, args, NULL); -#endif -bad: - Py_XDECREF(args); - return result; -} - -/* CallUnboundCMethod2 */ - #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030600B1 -static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2) { - if (likely(cfunc->func)) { - PyObject *args[2] = {arg1, arg2}; - if (cfunc->flag == METH_FASTCALL) { - #if PY_VERSION_HEX >= 0x030700A0 - return (*(__Pyx_PyCFunctionFast)cfunc->func)(self, args, 2); - #else - return (*(__Pyx_PyCFunctionFastWithKeywords)cfunc->func)(self, args, 2, NULL); - #endif - } - #if PY_VERSION_HEX >= 0x030700A0 - if (cfunc->flag == (METH_FASTCALL | METH_KEYWORDS)) - return (*(__Pyx_PyCFunctionFastWithKeywords)cfunc->func)(self, args, 2, NULL); - #endif - } - return __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2); -} -#endif -static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2){ - PyObject *args, *result = NULL; - if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL; -#if CYTHON_COMPILING_IN_CPYTHON - if (cfunc->func && (cfunc->flag & METH_VARARGS)) { - args = PyTuple_New(2); - if (unlikely(!args)) goto bad; - Py_INCREF(arg1); - PyTuple_SET_ITEM(args, 0, arg1); - Py_INCREF(arg2); - PyTuple_SET_ITEM(args, 1, arg2); - if (cfunc->flag & METH_KEYWORDS) - result = (*(PyCFunctionWithKeywords)cfunc->func)(self, args, NULL); - else - result = (*cfunc->func)(self, args); - } else { - args = PyTuple_New(3); - if (unlikely(!args)) goto bad; - Py_INCREF(self); - PyTuple_SET_ITEM(args, 0, self); - Py_INCREF(arg1); - PyTuple_SET_ITEM(args, 1, arg1); - Py_INCREF(arg2); - PyTuple_SET_ITEM(args, 2, arg2); - result = __Pyx_PyObject_Call(cfunc->method, args, NULL); - } -#else - args = PyTuple_Pack(3, self, arg1, arg2); - if (unlikely(!args)) goto bad; - result = __Pyx_PyObject_Call(cfunc->method, args, NULL); -#endif -bad: - Py_XDECREF(args); - return result; -} - -/* dict_getitem_default */ - static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value) { - PyObject* value; -#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY - value = PyDict_GetItemWithError(d, key); - if (unlikely(!value)) { - if (unlikely(PyErr_Occurred())) - return NULL; - value = default_value; - } - Py_INCREF(value); - if ((1)); -#else - if (PyString_CheckExact(key) || PyUnicode_CheckExact(key) || PyInt_CheckExact(key)) { - value = PyDict_GetItem(d, key); - if (unlikely(!value)) { - value = default_value; - } - Py_INCREF(value); - } -#endif - else { - if (default_value == Py_None) - value = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyDict_Type_get, d, key); - else - value = __Pyx_CallUnboundCMethod2(&__pyx_umethod_PyDict_Type_get, d, key, default_value); - } - return value; -} - -/* ArgTypeTest */ - static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact) -{ - if (unlikely(!type)) { - PyErr_SetString(PyExc_SystemError, "Missing type object"); - return 0; - } - else if (exact) { - #if PY_MAJOR_VERSION == 2 - if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1; - #endif - } - else { - if (likely(__Pyx_TypeCheck(obj, type))) return 1; - } - PyErr_Format(PyExc_TypeError, - "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)", - name, type->tp_name, Py_TYPE(obj)->tp_name); - return 0; -} - -/* RaiseArgTupleInvalid */ - static void __Pyx_RaiseArgtupleInvalid( - const char* func_name, - int exact, - Py_ssize_t num_min, - Py_ssize_t num_max, - Py_ssize_t num_found) -{ - Py_ssize_t num_expected; - const char *more_or_less; - if (num_found < num_min) { - num_expected = num_min; - more_or_less = "at least"; - } else { - num_expected = num_max; - more_or_less = "at most"; - } - if (exact) { - more_or_less = "exactly"; - } - PyErr_Format(PyExc_TypeError, - "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", - func_name, more_or_less, num_expected, - (num_expected == 1) ? "" : "s", num_found); -} - -/* RaiseDoubleKeywords */ - static void __Pyx_RaiseDoubleKeywordsError( - const char* func_name, - PyObject* kw_name) -{ - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION >= 3 - "%s() got multiple values for keyword argument '%U'", func_name, kw_name); - #else - "%s() got multiple values for keyword argument '%s'", func_name, - PyString_AsString(kw_name)); - #endif -} - -/* ParseKeywords */ - static int __Pyx_ParseOptionalKeywords( - PyObject *kwds, - PyObject **argnames[], - PyObject *kwds2, - PyObject *values[], - Py_ssize_t num_pos_args, - const char* function_name) -{ - PyObject *key = 0, *value = 0; - Py_ssize_t pos = 0; - PyObject*** name; - PyObject*** first_kw_arg = argnames + num_pos_args; - while (PyDict_Next(kwds, &pos, &key, &value)) { - name = first_kw_arg; - while (*name && (**name != key)) name++; - if (*name) { - values[name-argnames] = value; - continue; - } - name = first_kw_arg; - #if PY_MAJOR_VERSION < 3 - if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) { - while (*name) { - if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) - && _PyString_Eq(**name, key)) { - values[name-argnames] = value; - break; - } - name++; - } - if (*name) continue; - else { - PyObject*** argname = argnames; - while (argname != first_kw_arg) { - if ((**argname == key) || ( - (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) - && _PyString_Eq(**argname, key))) { - goto arg_passed_twice; - } - argname++; - } - } - } else - #endif - if (likely(PyUnicode_Check(key))) { - while (*name) { - int cmp = (**name == key) ? 0 : - #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 : - #endif - PyUnicode_Compare(**name, key); - if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; - if (cmp == 0) { - values[name-argnames] = value; - break; - } - name++; - } - if (*name) continue; - else { - PyObject*** argname = argnames; - while (argname != first_kw_arg) { - int cmp = (**argname == key) ? 0 : - #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 : - #endif - PyUnicode_Compare(**argname, key); - if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; - if (cmp == 0) goto arg_passed_twice; - argname++; - } - } - } else - goto invalid_keyword_type; - if (kwds2) { - if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; - } else { - goto invalid_keyword; - } - } - return 0; -arg_passed_twice: - __Pyx_RaiseDoubleKeywordsError(function_name, key); - goto bad; -invalid_keyword_type: - PyErr_Format(PyExc_TypeError, - "%.200s() keywords must be strings", function_name); - goto bad; -invalid_keyword: - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION < 3 - "%.200s() got an unexpected keyword argument '%.200s'", - function_name, PyString_AsString(key)); - #else - "%s() got an unexpected keyword argument '%U'", - function_name, key); - #endif -bad: - return -1; -} - -/* SaveResetException */ - #if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - #if PY_VERSION_HEX >= 0x030700A3 - *type = tstate->exc_state.exc_type; - *value = tstate->exc_state.exc_value; - *tb = tstate->exc_state.exc_traceback; - #else - *type = tstate->exc_type; - *value = tstate->exc_value; - *tb = tstate->exc_traceback; - #endif - Py_XINCREF(*type); - Py_XINCREF(*value); - Py_XINCREF(*tb); -} -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - #if PY_VERSION_HEX >= 0x030700A3 - tmp_type = tstate->exc_state.exc_type; - tmp_value = tstate->exc_state.exc_value; - tmp_tb = tstate->exc_state.exc_traceback; - tstate->exc_state.exc_type = type; - tstate->exc_state.exc_value = value; - tstate->exc_state.exc_traceback = tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = type; - tstate->exc_value = value; - tstate->exc_traceback = tb; - #endif - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} -#endif - -/* PyErrExceptionMatches */ - #if CYTHON_FAST_THREAD_STATE -static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; i<n; i++) { - if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1; - } -#endif - for (i=0; i<n; i++) { - if (__Pyx_PyErr_GivenExceptionMatches(exc_type, PyTuple_GET_ITEM(tuple, i))) return 1; - } - return 0; -} -static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) { - PyObject *exc_type = tstate->curexc_type; - if (exc_type == err) return 1; - if (unlikely(!exc_type)) return 0; - if (unlikely(PyTuple_Check(err))) - return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); - return __Pyx_PyErr_GivenExceptionMatches(exc_type, err); -} -#endif - -/* PyErrFetchRestore */ - #if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - tmp_type = tstate->curexc_type; - tmp_value = tstate->curexc_value; - tmp_tb = tstate->curexc_traceback; - tstate->curexc_type = type; - tstate->curexc_value = value; - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - *type = tstate->curexc_type; - *value = tstate->curexc_value; - *tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -} -#endif - -/* GetAttr */ - static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) { -#if CYTHON_USE_TYPE_SLOTS -#if PY_MAJOR_VERSION >= 3 - if (likely(PyUnicode_Check(n))) -#else - if (likely(PyString_Check(n))) -#endif - return __Pyx_PyObject_GetAttrStr(o, n); -#endif - return PyObject_GetAttr(o, n); -} - -/* GetAttr3 */ - static PyObject *__Pyx_GetAttr3Default(PyObject *d) { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) - return NULL; - __Pyx_PyErr_Clear(); - Py_INCREF(d); - return d; -} -static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) { - PyObject *r = __Pyx_GetAttr(o, n); - return (likely(r)) ? r : __Pyx_GetAttr3Default(d); -} - -/* DictGetItem */ - #if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY -static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) { - PyObject *value; - value = PyDict_GetItemWithError(d, key); - if (unlikely(!value)) { - if (!PyErr_Occurred()) { - PyObject* args = PyTuple_Pack(1, key); - if (likely(args)) - PyErr_SetObject(PyExc_KeyError, args); - Py_XDECREF(args); - } - return NULL; - } - Py_INCREF(value); - return value; -} -#endif - -/* GetException */ - #if CYTHON_FAST_THREAD_STATE -static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { -#else -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) { -#endif - PyObject *local_type, *local_value, *local_tb; -#if CYTHON_FAST_THREAD_STATE - PyObject *tmp_type, *tmp_value, *tmp_tb; - local_type = tstate->curexc_type; - local_value = tstate->curexc_value; - local_tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -#else - PyErr_Fetch(&local_type, &local_value, &local_tb); -#endif - PyErr_NormalizeException(&local_type, &local_value, &local_tb); -#if CYTHON_FAST_THREAD_STATE - if (unlikely(tstate->curexc_type)) -#else - if (unlikely(PyErr_Occurred())) -#endif - goto bad; - #if PY_MAJOR_VERSION >= 3 - if (local_tb) { - if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) - goto bad; - } - #endif - Py_XINCREF(local_tb); - Py_XINCREF(local_type); - Py_XINCREF(local_value); - *type = local_type; - *value = local_value; - *tb = local_tb; -#if CYTHON_FAST_THREAD_STATE - #if PY_VERSION_HEX >= 0x030700A3 - tmp_type = tstate->exc_state.exc_type; - tmp_value = tstate->exc_state.exc_value; - tmp_tb = tstate->exc_state.exc_traceback; - tstate->exc_state.exc_type = local_type; - tstate->exc_state.exc_value = local_value; - tstate->exc_state.exc_traceback = local_tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = local_type; - tstate->exc_value = local_value; - tstate->exc_traceback = local_tb; - #endif - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -#else - PyErr_SetExcInfo(local_type, local_value, local_tb); -#endif - return 0; -bad: - *type = 0; - *value = 0; - *tb = 0; - Py_XDECREF(local_type); - Py_XDECREF(local_value); - Py_XDECREF(local_tb); - return -1; -} - -/* KeywordStringCheck */ - static int __Pyx_CheckKeywordStrings( - PyObject *kwdict, - const char* function_name, - int kw_allowed) -{ - PyObject* key = 0; - Py_ssize_t pos = 0; -#if CYTHON_COMPILING_IN_PYPY - if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0)) - goto invalid_keyword; - return 1; -#else - while (PyDict_Next(kwdict, &pos, &key, 0)) { - #if PY_MAJOR_VERSION < 3 - if (unlikely(!PyString_Check(key))) - #endif - if (unlikely(!PyUnicode_Check(key))) - goto invalid_keyword_type; - } - if ((!kw_allowed) && unlikely(key)) - goto invalid_keyword; - return 1; -invalid_keyword_type: - PyErr_Format(PyExc_TypeError, - "%.200s() keywords must be strings", function_name); - return 0; -#endif -invalid_keyword: - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION < 3 - "%.200s() got an unexpected keyword argument '%.200s'", - function_name, PyString_AsString(key)); - #else - "%s() got an unexpected keyword argument '%U'", - function_name, key); - #endif - return 0; -} - -/* RaiseException */ - #if PY_MAJOR_VERSION < 3 -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, - CYTHON_UNUSED PyObject *cause) { - __Pyx_PyThreadState_declare - Py_XINCREF(type); - if (!value || value == Py_None) - value = NULL; - else - Py_INCREF(value); - if (!tb || tb == Py_None) - tb = NULL; - else { - Py_INCREF(tb); - if (!PyTraceBack_Check(tb)) { - PyErr_SetString(PyExc_TypeError, - "raise: arg 3 must be a traceback or None"); - goto raise_error; - } - } - if (PyType_Check(type)) { -#if CYTHON_COMPILING_IN_PYPY - if (!value) { - Py_INCREF(Py_None); - value = Py_None; - } -#endif - PyErr_NormalizeException(&type, &value, &tb); - } else { - if (value) { - PyErr_SetString(PyExc_TypeError, - "instance exception may not have a separate value"); - goto raise_error; - } - value = type; - type = (PyObject*) Py_TYPE(type); - Py_INCREF(type); - if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { - PyErr_SetString(PyExc_TypeError, - "raise: exception class must be a subclass of BaseException"); - goto raise_error; - } - } - __Pyx_PyThreadState_assign - __Pyx_ErrRestore(type, value, tb); - return; -raise_error: - Py_XDECREF(value); - Py_XDECREF(type); - Py_XDECREF(tb); - return; -} -#else -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { - PyObject* owned_instance = NULL; - if (tb == Py_None) { - tb = 0; - } else if (tb && !PyTraceBack_Check(tb)) { - PyErr_SetString(PyExc_TypeError, - "raise: arg 3 must be a traceback or None"); - goto bad; - } - if (value == Py_None) - value = 0; - if (PyExceptionInstance_Check(type)) { - if (value) { - PyErr_SetString(PyExc_TypeError, - "instance exception may not have a separate value"); - goto bad; - } - value = type; - type = (PyObject*) Py_TYPE(value); - } else if (PyExceptionClass_Check(type)) { - PyObject *instance_class = NULL; - if (value && PyExceptionInstance_Check(value)) { - instance_class = (PyObject*) Py_TYPE(value); - if (instance_class != type) { - int is_subclass = PyObject_IsSubclass(instance_class, type); - if (!is_subclass) { - instance_class = NULL; - } else if (unlikely(is_subclass == -1)) { - goto bad; - } else { - type = instance_class; - } - } - } - if (!instance_class) { - PyObject *args; - if (!value) - args = PyTuple_New(0); - else if (PyTuple_Check(value)) { - Py_INCREF(value); - args = value; - } else - args = PyTuple_Pack(1, value); - if (!args) - goto bad; - owned_instance = PyObject_Call(type, args, NULL); - Py_DECREF(args); - if (!owned_instance) - goto bad; - value = owned_instance; - if (!PyExceptionInstance_Check(value)) { - PyErr_Format(PyExc_TypeError, - "calling %R should have returned an instance of " - "BaseException, not %R", - type, Py_TYPE(value)); - goto bad; - } - } - } else { - PyErr_SetString(PyExc_TypeError, - "raise: exception class must be a subclass of BaseException"); - goto bad; - } - if (cause) { - PyObject *fixed_cause; - if (cause == Py_None) { - fixed_cause = NULL; - } else if (PyExceptionClass_Check(cause)) { - fixed_cause = PyObject_CallObject(cause, NULL); - if (fixed_cause == NULL) - goto bad; - } else if (PyExceptionInstance_Check(cause)) { - fixed_cause = cause; - Py_INCREF(fixed_cause); - } else { - PyErr_SetString(PyExc_TypeError, - "exception causes must derive from " - "BaseException"); - goto bad; - } - PyException_SetCause(value, fixed_cause); - } - PyErr_SetObject(type, value); - if (tb) { -#if CYTHON_COMPILING_IN_PYPY - PyObject *tmp_type, *tmp_value, *tmp_tb; - PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); - Py_INCREF(tb); - PyErr_Restore(tmp_type, tmp_value, tb); - Py_XDECREF(tmp_tb); -#else - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject* tmp_tb = tstate->curexc_traceback; - if (tb != tmp_tb) { - Py_INCREF(tb); - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_tb); - } -#endif - } -bad: - Py_XDECREF(owned_instance); - return; -} -#endif - -/* RaiseNoneIterError */ - static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); -} - -/* pyfrozenset_new */ - static CYTHON_INLINE PyObject* __Pyx_PyFrozenSet_New(PyObject* it) { - if (it) { - PyObject* result; -#if CYTHON_COMPILING_IN_PYPY - PyObject* args; - args = PyTuple_Pack(1, it); - if (unlikely(!args)) - return NULL; - result = PyObject_Call((PyObject*)&PyFrozenSet_Type, args, NULL); - Py_DECREF(args); - return result; -#else - if (PyFrozenSet_CheckExact(it)) { - Py_INCREF(it); - return it; - } - result = PyFrozenSet_New(it); - if (unlikely(!result)) - return NULL; - if (likely(PySet_GET_SIZE(result))) - return result; - Py_DECREF(result); -#endif - } -#if CYTHON_USE_TYPE_SLOTS - return PyFrozenSet_Type.tp_new(&PyFrozenSet_Type, __pyx_empty_tuple, NULL); -#else - return PyObject_Call((PyObject*)&PyFrozenSet_Type, __pyx_empty_tuple, NULL); -#endif -} - -/* PySetContains */ - static int __Pyx_PySet_ContainsUnhashable(PyObject *set, PyObject *key) { - int result = -1; - if (PySet_Check(key) && PyErr_ExceptionMatches(PyExc_TypeError)) { - PyObject *tmpkey; - PyErr_Clear(); - tmpkey = __Pyx_PyFrozenSet_New(key); - if (tmpkey != NULL) { - result = PySet_Contains(set, tmpkey); - Py_DECREF(tmpkey); - } - } - return result; -} -static CYTHON_INLINE int __Pyx_PySet_ContainsTF(PyObject* key, PyObject* set, int eq) { - int result = PySet_Contains(set, key); - if (unlikely(result < 0)) { - result = __Pyx_PySet_ContainsUnhashable(set, key); - } - return unlikely(result < 0) ? result : (result == (eq == Py_EQ)); -} - -/* BytesEquals */ - static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { -#if CYTHON_COMPILING_IN_PYPY - return PyObject_RichCompareBool(s1, s2, equals); -#else - if (s1 == s2) { - return (equals == Py_EQ); - } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) { - const char *ps1, *ps2; - Py_ssize_t length = PyBytes_GET_SIZE(s1); - if (length != PyBytes_GET_SIZE(s2)) - return (equals == Py_NE); - ps1 = PyBytes_AS_STRING(s1); - ps2 = PyBytes_AS_STRING(s2); - if (ps1[0] != ps2[0]) { - return (equals == Py_NE); - } else if (length == 1) { - return (equals == Py_EQ); - } else { - int result; -#if CYTHON_USE_UNICODE_INTERNALS - Py_hash_t hash1, hash2; - hash1 = ((PyBytesObject*)s1)->ob_shash; - hash2 = ((PyBytesObject*)s2)->ob_shash; - if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { - return (equals == Py_NE); - } -#endif - result = memcmp(ps1, ps2, (size_t)length); - return (equals == Py_EQ) ? (result == 0) : (result != 0); - } - } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) { - return (equals == Py_NE); - } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) { - return (equals == Py_NE); - } else { - int result; - PyObject* py_result = PyObject_RichCompare(s1, s2, equals); - if (!py_result) - return -1; - result = __Pyx_PyObject_IsTrue(py_result); - Py_DECREF(py_result); - return result; - } -#endif -} - -/* UnicodeEquals */ - static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { -#if CYTHON_COMPILING_IN_PYPY - return PyObject_RichCompareBool(s1, s2, equals); -#else -#if PY_MAJOR_VERSION < 3 - PyObject* owned_ref = NULL; -#endif - int s1_is_unicode, s2_is_unicode; - if (s1 == s2) { - goto return_eq; - } - s1_is_unicode = PyUnicode_CheckExact(s1); - s2_is_unicode = PyUnicode_CheckExact(s2); -#if PY_MAJOR_VERSION < 3 - if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) { - owned_ref = PyUnicode_FromObject(s2); - if (unlikely(!owned_ref)) - return -1; - s2 = owned_ref; - s2_is_unicode = 1; - } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) { - owned_ref = PyUnicode_FromObject(s1); - if (unlikely(!owned_ref)) - return -1; - s1 = owned_ref; - s1_is_unicode = 1; - } else if (((!s2_is_unicode) & (!s1_is_unicode))) { - return __Pyx_PyBytes_Equals(s1, s2, equals); - } -#endif - if (s1_is_unicode & s2_is_unicode) { - Py_ssize_t length; - int kind; - void *data1, *data2; - if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0)) - return -1; - length = __Pyx_PyUnicode_GET_LENGTH(s1); - if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) { - goto return_ne; - } -#if CYTHON_USE_UNICODE_INTERNALS - { - Py_hash_t hash1, hash2; - #if CYTHON_PEP393_ENABLED - hash1 = ((PyASCIIObject*)s1)->hash; - hash2 = ((PyASCIIObject*)s2)->hash; - #else - hash1 = ((PyUnicodeObject*)s1)->hash; - hash2 = ((PyUnicodeObject*)s2)->hash; - #endif - if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { - goto return_ne; - } - } -#endif - kind = __Pyx_PyUnicode_KIND(s1); - if (kind != __Pyx_PyUnicode_KIND(s2)) { - goto return_ne; - } - data1 = __Pyx_PyUnicode_DATA(s1); - data2 = __Pyx_PyUnicode_DATA(s2); - if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) { - goto return_ne; - } else if (length == 1) { - goto return_eq; - } else { - int result = memcmp(data1, data2, (size_t)(length * kind)); - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(owned_ref); - #endif - return (equals == Py_EQ) ? (result == 0) : (result != 0); - } - } else if ((s1 == Py_None) & s2_is_unicode) { - goto return_ne; - } else if ((s2 == Py_None) & s1_is_unicode) { - goto return_ne; - } else { - int result; - PyObject* py_result = PyObject_RichCompare(s1, s2, equals); - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(owned_ref); - #endif - if (!py_result) - return -1; - result = __Pyx_PyObject_IsTrue(py_result); - Py_DECREF(py_result); - return result; - } -return_eq: - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(owned_ref); - #endif - return (equals == Py_EQ); -return_ne: - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(owned_ref); - #endif - return (equals == Py_NE); -#endif -} - -/* GetItemInt */ - static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { - PyObject *r; - if (!j) return NULL; - r = PyObject_GetItem(o, j); - Py_DECREF(j); - return r; -} -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - Py_ssize_t wrapped_i = i; - if (wraparound & unlikely(i < 0)) { - wrapped_i += PyList_GET_SIZE(o); - } - if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyList_GET_SIZE(o)))) { - PyObject *r = PyList_GET_ITEM(o, wrapped_i); - Py_INCREF(r); - return r; - } - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -#else - return PySequence_GetItem(o, i); -#endif -} -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - Py_ssize_t wrapped_i = i; - if (wraparound & unlikely(i < 0)) { - wrapped_i += PyTuple_GET_SIZE(o); - } - if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyTuple_GET_SIZE(o)))) { - PyObject *r = PyTuple_GET_ITEM(o, wrapped_i); - Py_INCREF(r); - return r; - } - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -#else - return PySequence_GetItem(o, i); -#endif -} -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS - if (is_list || PyList_CheckExact(o)) { - Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); - if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) { - PyObject *r = PyList_GET_ITEM(o, n); - Py_INCREF(r); - return r; - } - } - else if (PyTuple_CheckExact(o)) { - Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); - if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) { - PyObject *r = PyTuple_GET_ITEM(o, n); - Py_INCREF(r); - return r; - } - } else { - PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; - if (likely(m && m->sq_item)) { - if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { - Py_ssize_t l = m->sq_length(o); - if (likely(l >= 0)) { - i += l; - } else { - if (!PyErr_ExceptionMatches(PyExc_OverflowError)) - return NULL; - PyErr_Clear(); - } - } - return m->sq_item(o, i); - } - } -#else - if (is_list || PySequence_Check(o)) { - return PySequence_GetItem(o, i); - } -#endif - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -} - -/* ObjectGetItem */ - #if CYTHON_USE_TYPE_SLOTS -static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) { - PyObject *runerr; - Py_ssize_t key_value; - PySequenceMethods *m = Py_TYPE(obj)->tp_as_sequence; - if (unlikely(!(m && m->sq_item))) { - PyErr_Format(PyExc_TypeError, "'%.200s' object is not subscriptable", Py_TYPE(obj)->tp_name); - return NULL; - } - key_value = __Pyx_PyIndex_AsSsize_t(index); - if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) { - return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1); - } - if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) { - PyErr_Clear(); - PyErr_Format(PyExc_IndexError, "cannot fit '%.200s' into an index-sized integer", Py_TYPE(index)->tp_name); - } - return NULL; -} -static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) { - PyMappingMethods *m = Py_TYPE(obj)->tp_as_mapping; - if (likely(m && m->mp_subscript)) { - return m->mp_subscript(obj, key); - } - return __Pyx_PyObject_GetIndex(obj, key); -} -#endif - -/* HasAttr */ - static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) { - PyObject *r; - if (unlikely(!__Pyx_PyBaseString_Check(n))) { - PyErr_SetString(PyExc_TypeError, - "hasattr(): attribute name must be string"); - return -1; - } - r = __Pyx_GetAttr(o, n); - if (unlikely(!r)) { - PyErr_Clear(); - return 0; - } else { - Py_DECREF(r); - return 1; - } -} - -/* SliceTupleAndList */ - #if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE void __Pyx_crop_slice(Py_ssize_t* _start, Py_ssize_t* _stop, Py_ssize_t* _length) { - Py_ssize_t start = *_start, stop = *_stop, length = *_length; - if (start < 0) { - start += length; - if (start < 0) - start = 0; - } - if (stop < 0) - stop += length; - else if (stop > length) - stop = length; - *_length = stop - start; - *_start = start; - *_stop = stop; -} -static CYTHON_INLINE void __Pyx_copy_object_array(PyObject** CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length) { - PyObject *v; - Py_ssize_t i; - for (i = 0; i < length; i++) { - v = dest[i] = src[i]; - Py_INCREF(v); - } -} -static CYTHON_INLINE PyObject* __Pyx_PyList_GetSlice( - PyObject* src, Py_ssize_t start, Py_ssize_t stop) { - PyObject* dest; - Py_ssize_t length = PyList_GET_SIZE(src); - __Pyx_crop_slice(&start, &stop, &length); - if (unlikely(length <= 0)) - return PyList_New(0); - dest = PyList_New(length); - if (unlikely(!dest)) - return NULL; - __Pyx_copy_object_array( - ((PyListObject*)src)->ob_item + start, - ((PyListObject*)dest)->ob_item, - length); - return dest; -} -static CYTHON_INLINE PyObject* __Pyx_PyTuple_GetSlice( - PyObject* src, Py_ssize_t start, Py_ssize_t stop) { - PyObject* dest; - Py_ssize_t length = PyTuple_GET_SIZE(src); - __Pyx_crop_slice(&start, &stop, &length); - if (unlikely(length <= 0)) - return PyTuple_New(0); - dest = PyTuple_New(length); - if (unlikely(!dest)) - return NULL; - __Pyx_copy_object_array( - ((PyTupleObject*)src)->ob_item + start, - ((PyTupleObject*)dest)->ob_item, - length); - return dest; -} -#endif - -/* PyObject_GenericGetAttrNoDict */ - #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { - PyErr_Format(PyExc_AttributeError, -#if PY_MAJOR_VERSION >= 3 - "'%.50s' object has no attribute '%U'", - tp->tp_name, attr_name); -#else - "'%.50s' object has no attribute '%.400s'", - tp->tp_name, PyString_AS_STRING(attr_name)); -#endif - return NULL; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { - PyObject *descr; - PyTypeObject *tp = Py_TYPE(obj); - if (unlikely(!PyString_Check(attr_name))) { - return PyObject_GenericGetAttr(obj, attr_name); - } - assert(!tp->tp_dictoffset); - descr = _PyType_Lookup(tp, attr_name); - if (unlikely(!descr)) { - return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); - } - Py_INCREF(descr); - #if PY_MAJOR_VERSION < 3 - if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) - #endif - { - descrgetfunc f = Py_TYPE(descr)->tp_descr_get; - if (unlikely(f)) { - PyObject *res = f(descr, obj, (PyObject *)tp); - Py_DECREF(descr); - return res; - } - } - return descr; -} -#endif - -/* SetVTable */ - static int __Pyx_SetVtable(PyObject *dict, void *vtable) { -#if PY_VERSION_HEX >= 0x02070000 - PyObject *ob = PyCapsule_New(vtable, 0, 0); -#else - PyObject *ob = PyCObject_FromVoidPtr(vtable, 0); -#endif - if (!ob) - goto bad; - if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0) - goto bad; - Py_DECREF(ob); - return 0; -bad: - Py_XDECREF(ob); - return -1; -} - -/* GetVTable */ - static void* __Pyx_GetVtable(PyObject *dict) { - void* ptr; - PyObject *ob = PyObject_GetItem(dict, __pyx_n_s_pyx_vtable); - if (!ob) - goto bad; -#if PY_VERSION_HEX >= 0x02070000 - ptr = PyCapsule_GetPointer(ob, 0); -#else - ptr = PyCObject_AsVoidPtr(ob); -#endif - if (!ptr && !PyErr_Occurred()) - PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type"); - Py_DECREF(ob); - return ptr; -bad: - Py_XDECREF(ob); - return NULL; -} - -/* Import */ - static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { - PyObject *empty_list = 0; - PyObject *module = 0; - PyObject *global_dict = 0; - PyObject *empty_dict = 0; - PyObject *list; - #if PY_MAJOR_VERSION < 3 - PyObject *py_import; - py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); - if (!py_import) - goto bad; - #endif - if (from_list) - list = from_list; - else { - empty_list = PyList_New(0); - if (!empty_list) - goto bad; - list = empty_list; - } - global_dict = PyModule_GetDict(__pyx_m); - if (!global_dict) - goto bad; - empty_dict = PyDict_New(); - if (!empty_dict) - goto bad; - { - #if PY_MAJOR_VERSION >= 3 - if (level == -1) { - if (strchr(__Pyx_MODULE_NAME, '.')) { - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, 1); - if (!module) { - if (!PyErr_ExceptionMatches(PyExc_ImportError)) - goto bad; - PyErr_Clear(); - } - } - level = 0; - } - #endif - if (!module) { - #if PY_MAJOR_VERSION < 3 - PyObject *py_level = PyInt_FromLong(level); - if (!py_level) - goto bad; - module = PyObject_CallFunctionObjArgs(py_import, - name, global_dict, empty_dict, list, py_level, NULL); - Py_DECREF(py_level); - #else - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, level); - #endif - } - } -bad: - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(py_import); - #endif - Py_XDECREF(empty_list); - Py_XDECREF(empty_dict); - return module; -} - -/* ImportFrom */ - static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { - PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); - if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Format(PyExc_ImportError, - #if PY_MAJOR_VERSION < 3 - "cannot import name %.230s", PyString_AS_STRING(name)); - #else - "cannot import name %S", name); - #endif - } - return value; -} - -/* FetchCommonType */ - static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { - PyObject* fake_module; - PyTypeObject* cached_type = NULL; - fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI); - if (!fake_module) return NULL; - Py_INCREF(fake_module); - cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name); - if (cached_type) { - if (!PyType_Check((PyObject*)cached_type)) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s is not a type object", - type->tp_name); - goto bad; - } - if (cached_type->tp_basicsize != type->tp_basicsize) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s has the wrong size, try recompiling", - type->tp_name); - goto bad; - } - } else { - if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; - PyErr_Clear(); - if (PyType_Ready(type) < 0) goto bad; - if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0) - goto bad; - Py_INCREF(type); - cached_type = type; - } -done: - Py_DECREF(fake_module); - return cached_type; -bad: - Py_XDECREF(cached_type); - cached_type = NULL; - goto done; -} - -/* CythonFunction */ - #include <structmember.h> -static PyObject * -__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure) -{ - if (unlikely(op->func_doc == NULL)) { - if (op->func.m_ml->ml_doc) { -#if PY_MAJOR_VERSION >= 3 - op->func_doc = PyUnicode_FromString(op->func.m_ml->ml_doc); -#else - op->func_doc = PyString_FromString(op->func.m_ml->ml_doc); -#endif - if (unlikely(op->func_doc == NULL)) - return NULL; - } else { - Py_INCREF(Py_None); - return Py_None; - } - } - Py_INCREF(op->func_doc); - return op->func_doc; -} -static int -__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp = op->func_doc; - if (value == NULL) { - value = Py_None; - } - Py_INCREF(value); - op->func_doc = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op) -{ - if (unlikely(op->func_name == NULL)) { -#if PY_MAJOR_VERSION >= 3 - op->func_name = PyUnicode_InternFromString(op->func.m_ml->ml_name); -#else - op->func_name = PyString_InternFromString(op->func.m_ml->ml_name); -#endif - if (unlikely(op->func_name == NULL)) - return NULL; - } - Py_INCREF(op->func_name); - return op->func_name; -} -static int -__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; -#if PY_MAJOR_VERSION >= 3 - if (unlikely(value == NULL || !PyUnicode_Check(value))) { -#else - if (unlikely(value == NULL || !PyString_Check(value))) { -#endif - PyErr_SetString(PyExc_TypeError, - "__name__ must be set to a string object"); - return -1; - } - tmp = op->func_name; - Py_INCREF(value); - op->func_name = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op) -{ - Py_INCREF(op->func_qualname); - return op->func_qualname; -} -static int -__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; -#if PY_MAJOR_VERSION >= 3 - if (unlikely(value == NULL || !PyUnicode_Check(value))) { -#else - if (unlikely(value == NULL || !PyString_Check(value))) { -#endif - PyErr_SetString(PyExc_TypeError, - "__qualname__ must be set to a string object"); - return -1; - } - tmp = op->func_qualname; - Py_INCREF(value); - op->func_qualname = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure) -{ - PyObject *self; - self = m->func_closure; - if (self == NULL) - self = Py_None; - Py_INCREF(self); - return self; -} -static PyObject * -__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op) -{ - if (unlikely(op->func_dict == NULL)) { - op->func_dict = PyDict_New(); - if (unlikely(op->func_dict == NULL)) - return NULL; - } - Py_INCREF(op->func_dict); - return op->func_dict; -} -static int -__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; - if (unlikely(value == NULL)) { - PyErr_SetString(PyExc_TypeError, - "function's dictionary may not be deleted"); - return -1; - } - if (unlikely(!PyDict_Check(value))) { - PyErr_SetString(PyExc_TypeError, - "setting function's dictionary to a non-dict"); - return -1; - } - tmp = op->func_dict; - Py_INCREF(value); - op->func_dict = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op) -{ - Py_INCREF(op->func_globals); - return op->func_globals; -} -static PyObject * -__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op) -{ - Py_INCREF(Py_None); - return Py_None; -} -static PyObject * -__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op) -{ - PyObject* result = (op->func_code) ? op->func_code : Py_None; - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { - int result = 0; - PyObject *res = op->defaults_getter((PyObject *) op); - if (unlikely(!res)) - return -1; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - op->defaults_tuple = PyTuple_GET_ITEM(res, 0); - Py_INCREF(op->defaults_tuple); - op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); - Py_INCREF(op->defaults_kwdict); - #else - op->defaults_tuple = PySequence_ITEM(res, 0); - if (unlikely(!op->defaults_tuple)) result = -1; - else { - op->defaults_kwdict = PySequence_ITEM(res, 1); - if (unlikely(!op->defaults_kwdict)) result = -1; - } - #endif - Py_DECREF(res); - return result; -} -static int -__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value) { - value = Py_None; - } else if (value != Py_None && !PyTuple_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__defaults__ must be set to a tuple object"); - return -1; - } - Py_INCREF(value); - tmp = op->defaults_tuple; - op->defaults_tuple = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) { - PyObject* result = op->defaults_tuple; - if (unlikely(!result)) { - if (op->defaults_getter) { - if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; - result = op->defaults_tuple; - } else { - result = Py_None; - } - } - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value) { - value = Py_None; - } else if (value != Py_None && !PyDict_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__kwdefaults__ must be set to a dict object"); - return -1; - } - Py_INCREF(value); - tmp = op->defaults_kwdict; - op->defaults_kwdict = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) { - PyObject* result = op->defaults_kwdict; - if (unlikely(!result)) { - if (op->defaults_getter) { - if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; - result = op->defaults_kwdict; - } else { - result = Py_None; - } - } - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value || value == Py_None) { - value = NULL; - } else if (!PyDict_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__annotations__ must be set to a dict object"); - return -1; - } - Py_XINCREF(value); - tmp = op->func_annotations; - op->func_annotations = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op) { - PyObject* result = op->func_annotations; - if (unlikely(!result)) { - result = PyDict_New(); - if (unlikely(!result)) return NULL; - op->func_annotations = result; - } - Py_INCREF(result); - return result; -} -static PyGetSetDef __pyx_CyFunction_getsets[] = { - {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, - {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, - {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, - {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, - {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, - {(char *) "__self__", (getter)__Pyx_CyFunction_get_self, 0, 0, 0}, - {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, - {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, - {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, - {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, - {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, - {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, - {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, - {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, - {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, - {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, - {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, - {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, - {0, 0, 0, 0, 0} -}; -static PyMemberDef __pyx_CyFunction_members[] = { - {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), PY_WRITE_RESTRICTED, 0}, - {0, 0, 0, 0, 0} -}; -static PyObject * -__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args) -{ -#if PY_MAJOR_VERSION >= 3 - return PyUnicode_FromString(m->func.m_ml->ml_name); -#else - return PyString_FromString(m->func.m_ml->ml_name); -#endif -} -static PyMethodDef __pyx_CyFunction_methods[] = { - {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, - {0, 0, 0, 0} -}; -#if PY_VERSION_HEX < 0x030500A0 -#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) -#else -#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func.m_weakreflist) -#endif -static PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *ml, int flags, PyObject* qualname, - PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { - __pyx_CyFunctionObject *op = PyObject_GC_New(__pyx_CyFunctionObject, type); - if (op == NULL) - return NULL; - op->flags = flags; - __Pyx_CyFunction_weakreflist(op) = NULL; - op->func.m_ml = ml; - op->func.m_self = (PyObject *) op; - Py_XINCREF(closure); - op->func_closure = closure; - Py_XINCREF(module); - op->func.m_module = module; - op->func_dict = NULL; - op->func_name = NULL; - Py_INCREF(qualname); - op->func_qualname = qualname; - op->func_doc = NULL; - op->func_classobj = NULL; - op->func_globals = globals; - Py_INCREF(op->func_globals); - Py_XINCREF(code); - op->func_code = code; - op->defaults_pyobjects = 0; - op->defaults = NULL; - op->defaults_tuple = NULL; - op->defaults_kwdict = NULL; - op->defaults_getter = NULL; - op->func_annotations = NULL; - PyObject_GC_Track(op); - return (PyObject *) op; -} -static int -__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) -{ - Py_CLEAR(m->func_closure); - Py_CLEAR(m->func.m_module); - Py_CLEAR(m->func_dict); - Py_CLEAR(m->func_name); - Py_CLEAR(m->func_qualname); - Py_CLEAR(m->func_doc); - Py_CLEAR(m->func_globals); - Py_CLEAR(m->func_code); - Py_CLEAR(m->func_classobj); - Py_CLEAR(m->defaults_tuple); - Py_CLEAR(m->defaults_kwdict); - Py_CLEAR(m->func_annotations); - if (m->defaults) { - PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); - int i; - for (i = 0; i < m->defaults_pyobjects; i++) - Py_XDECREF(pydefaults[i]); - PyObject_Free(m->defaults); - m->defaults = NULL; - } - return 0; -} -static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) -{ - if (__Pyx_CyFunction_weakreflist(m) != NULL) - PyObject_ClearWeakRefs((PyObject *) m); - __Pyx_CyFunction_clear(m); - PyObject_GC_Del(m); -} -static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) -{ - PyObject_GC_UnTrack(m); - __Pyx__CyFunction_dealloc(m); -} -static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) -{ - Py_VISIT(m->func_closure); - Py_VISIT(m->func.m_module); - Py_VISIT(m->func_dict); - Py_VISIT(m->func_name); - Py_VISIT(m->func_qualname); - Py_VISIT(m->func_doc); - Py_VISIT(m->func_globals); - Py_VISIT(m->func_code); - Py_VISIT(m->func_classobj); - Py_VISIT(m->defaults_tuple); - Py_VISIT(m->defaults_kwdict); - if (m->defaults) { - PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); - int i; - for (i = 0; i < m->defaults_pyobjects; i++) - Py_VISIT(pydefaults[i]); - } - return 0; -} -static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type) -{ - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) { - Py_INCREF(func); - return func; - } - if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) { - if (type == NULL) - type = (PyObject *)(Py_TYPE(obj)); - return __Pyx_PyMethod_New(func, type, (PyObject *)(Py_TYPE(type))); - } - if (obj == Py_None) - obj = NULL; - return __Pyx_PyMethod_New(func, obj, type); -} -static PyObject* -__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) -{ -#if PY_MAJOR_VERSION >= 3 - return PyUnicode_FromFormat("<cyfunction %U at %p>", - op->func_qualname, (void *)op); -#else - return PyString_FromFormat("<cyfunction %s at %p>", - PyString_AsString(op->func_qualname), (void *)op); -#endif -} -static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { - PyCFunctionObject* f = (PyCFunctionObject*)func; - PyCFunction meth = f->m_ml->ml_meth; - Py_ssize_t size; - switch (f->m_ml->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { - case METH_VARARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) - return (*meth)(self, arg); - break; - case METH_VARARGS | METH_KEYWORDS: - return (*(PyCFunctionWithKeywords)meth)(self, arg, kw); - case METH_NOARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { - size = PyTuple_GET_SIZE(arg); - if (likely(size == 0)) - return (*meth)(self, NULL); - PyErr_Format(PyExc_TypeError, - "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", - f->m_ml->ml_name, size); - return NULL; - } - break; - case METH_O: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { - size = PyTuple_GET_SIZE(arg); - if (likely(size == 1)) { - PyObject *result, *arg0; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - arg0 = PyTuple_GET_ITEM(arg, 0); - #else - arg0 = PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; - #endif - result = (*meth)(self, arg0); - #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) - Py_DECREF(arg0); - #endif - return result; - } - PyErr_Format(PyExc_TypeError, - "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", - f->m_ml->ml_name, size); - return NULL; - } - break; - default: - PyErr_SetString(PyExc_SystemError, "Bad call flags in " - "__Pyx_CyFunction_Call. METH_OLDARGS is no " - "longer supported!"); - return NULL; - } - PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", - f->m_ml->ml_name); - return NULL; -} -static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { - return __Pyx_CyFunction_CallMethod(func, ((PyCFunctionObject*)func)->m_self, arg, kw); -} -static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { - PyObject *result; - __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; - if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { - Py_ssize_t argc; - PyObject *new_args; - PyObject *self; - argc = PyTuple_GET_SIZE(args); - new_args = PyTuple_GetSlice(args, 1, argc); - if (unlikely(!new_args)) - return NULL; - self = PyTuple_GetItem(args, 0); - if (unlikely(!self)) { - Py_DECREF(new_args); - return NULL; - } - result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); - Py_DECREF(new_args); - } else { - result = __Pyx_CyFunction_Call(func, args, kw); - } - return result; -} -static PyTypeObject __pyx_CyFunctionType_type = { - PyVarObject_HEAD_INIT(0, 0) - "cython_function_or_method", - sizeof(__pyx_CyFunctionObject), - 0, - (destructor) __Pyx_CyFunction_dealloc, - 0, - 0, - 0, -#if PY_MAJOR_VERSION < 3 - 0, -#else - 0, -#endif - (reprfunc) __Pyx_CyFunction_repr, - 0, - 0, - 0, - 0, - __Pyx_CyFunction_CallAsMethod, - 0, - 0, - 0, - 0, - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, - 0, - (traverseproc) __Pyx_CyFunction_traverse, - (inquiry) __Pyx_CyFunction_clear, - 0, -#if PY_VERSION_HEX < 0x030500A0 - offsetof(__pyx_CyFunctionObject, func_weakreflist), -#else - offsetof(PyCFunctionObject, m_weakreflist), -#endif - 0, - 0, - __pyx_CyFunction_methods, - __pyx_CyFunction_members, - __pyx_CyFunction_getsets, - 0, - 0, - __Pyx_CyFunction_descr_get, - 0, - offsetof(__pyx_CyFunctionObject, func_dict), - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, -#if PY_VERSION_HEX >= 0x030400a1 - 0, -#endif -}; -static int __pyx_CyFunction_init(void) { - __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); - if (unlikely(__pyx_CyFunctionType == NULL)) { - return -1; - } - return 0; -} -static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults = PyObject_Malloc(size); - if (unlikely(!m->defaults)) - return PyErr_NoMemory(); - memset(m->defaults, 0, size); - m->defaults_pyobjects = pyobjects; - return m->defaults; -} -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults_tuple = tuple; - Py_INCREF(tuple); -} -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults_kwdict = dict; - Py_INCREF(dict); -} -static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->func_annotations = dict; - Py_INCREF(dict); -} - -/* PyObjectSetAttrStr */ - #if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_setattro)) - return tp->tp_setattro(obj, attr_name, value); -#if PY_MAJOR_VERSION < 3 - if (likely(tp->tp_setattr)) - return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value); -#endif - return PyObject_SetAttr(obj, attr_name, value); -} -#endif - -/* GetModuleGlobalName */ - static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { - PyObject *result; -#if !CYTHON_AVOID_BORROWED_REFS -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 - result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); - if (likely(result)) { - Py_INCREF(result); - } else if (unlikely(PyErr_Occurred())) { - result = NULL; - } else { -#else - result = PyDict_GetItem(__pyx_d, name); - if (likely(result)) { - Py_INCREF(result); - } else { -#endif -#else - result = PyObject_GetItem(__pyx_d, name); - if (!result) { - PyErr_Clear(); -#endif - result = __Pyx_GetBuiltinName(name); - } - return result; -} - -/* Globals */ - static PyObject* __Pyx_Globals(void) { - Py_ssize_t i; - PyObject *names; - PyObject *globals = __pyx_d; - Py_INCREF(globals); - names = PyObject_Dir(__pyx_m); - if (!names) - goto bad; - for (i = PyList_GET_SIZE(names)-1; i >= 0; i--) { -#if CYTHON_COMPILING_IN_PYPY - PyObject* name = PySequence_ITEM(names, i); - if (!name) - goto bad; -#else - PyObject* name = PyList_GET_ITEM(names, i); -#endif - if (!PyDict_Contains(globals, name)) { - PyObject* value = __Pyx_GetAttr(__pyx_m, name); - if (!value) { -#if CYTHON_COMPILING_IN_PYPY - Py_DECREF(name); -#endif - goto bad; - } - if (PyDict_SetItem(globals, name, value) < 0) { -#if CYTHON_COMPILING_IN_PYPY - Py_DECREF(name); -#endif - Py_DECREF(value); - goto bad; - } - } -#if CYTHON_COMPILING_IN_PYPY - Py_DECREF(name); -#endif - } - Py_DECREF(names); - return globals; -bad: - Py_XDECREF(names); - Py_XDECREF(globals); - return NULL; -} - -/* CLineInTraceback */ - #ifndef CYTHON_CLINE_IN_TRACEBACK -static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) { - PyObject *use_cline; - PyObject *ptype, *pvalue, *ptraceback; -#if CYTHON_COMPILING_IN_CPYTHON - PyObject **cython_runtime_dict; -#endif - if (unlikely(!__pyx_cython_runtime)) { - return c_line; - } - __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); -#if CYTHON_COMPILING_IN_CPYTHON - cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); - if (likely(cython_runtime_dict)) { - use_cline = __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback); - } else -#endif - { - PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); - if (use_cline_obj) { - use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; - Py_DECREF(use_cline_obj); - } else { - PyErr_Clear(); - use_cline = NULL; - } - } - if (!use_cline) { - c_line = 0; - PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); - } - else if (PyObject_Not(use_cline) != 0) { - c_line = 0; - } - __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); - return c_line; -} -#endif - -/* CodeObjectCache */ - static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { - int start = 0, mid = 0, end = count - 1; - if (end >= 0 && code_line > entries[end].code_line) { - return count; - } - while (start < end) { - mid = start + (end - start) / 2; - if (code_line < entries[mid].code_line) { - end = mid; - } else if (code_line > entries[mid].code_line) { - start = mid + 1; - } else { - return mid; - } - } - if (code_line <= entries[mid].code_line) { - return mid; - } else { - return mid + 1; - } -} -static PyCodeObject *__pyx_find_code_object(int code_line) { - PyCodeObject* code_object; - int pos; - if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { - return NULL; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { - return NULL; - } - code_object = __pyx_code_cache.entries[pos].code_object; - Py_INCREF(code_object); - return code_object; -} -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { - int pos, i; - __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; - if (unlikely(!code_line)) { - return; - } - if (unlikely(!entries)) { - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); - if (likely(entries)) { - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = 64; - __pyx_code_cache.count = 1; - entries[0].code_line = code_line; - entries[0].code_object = code_object; - Py_INCREF(code_object); - } - return; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { - PyCodeObject* tmp = entries[pos].code_object; - entries[pos].code_object = code_object; - Py_DECREF(tmp); - return; - } - if (__pyx_code_cache.count == __pyx_code_cache.max_count) { - int new_max = __pyx_code_cache.max_count + 64; - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( - __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry)); - if (unlikely(!entries)) { - return; - } - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = new_max; - } - for (i=__pyx_code_cache.count; i>pos; i--) { - entries[i] = entries[i-1]; - } - entries[pos].code_line = code_line; - entries[pos].code_object = code_object; - __pyx_code_cache.count++; - Py_INCREF(code_object); -} - -/* AddTraceback */ - #include "compile.h" -#include "frameobject.h" -#include "traceback.h" -static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( - const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyObject *py_srcfile = 0; - PyObject *py_funcname = 0; - #if PY_MAJOR_VERSION < 3 - py_srcfile = PyString_FromString(filename); - #else - py_srcfile = PyUnicode_FromString(filename); - #endif - if (!py_srcfile) goto bad; - if (c_line) { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #else - py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #endif - } - else { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromString(funcname); - #else - py_funcname = PyUnicode_FromString(funcname); - #endif - } - if (!py_funcname) goto bad; - py_code = __Pyx_PyCode_New( - 0, - 0, - 0, - 0, - 0, - __pyx_empty_bytes, /*PyObject *code,*/ - __pyx_empty_tuple, /*PyObject *consts,*/ - __pyx_empty_tuple, /*PyObject *names,*/ - __pyx_empty_tuple, /*PyObject *varnames,*/ - __pyx_empty_tuple, /*PyObject *freevars,*/ - __pyx_empty_tuple, /*PyObject *cellvars,*/ - py_srcfile, /*PyObject *filename,*/ - py_funcname, /*PyObject *name,*/ - py_line, - __pyx_empty_bytes /*PyObject *lnotab*/ - ); - Py_DECREF(py_srcfile); - Py_DECREF(py_funcname); - return py_code; -bad: - Py_XDECREF(py_srcfile); - Py_XDECREF(py_funcname); - return NULL; -} -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyFrameObject *py_frame = 0; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - if (c_line) { - c_line = __Pyx_CLineForTraceback(tstate, c_line); - } - py_code = __pyx_find_code_object(c_line ? -c_line : py_line); - if (!py_code) { - py_code = __Pyx_CreateCodeObjectForTraceback( - funcname, c_line, py_line, filename); - if (!py_code) goto bad; - __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); - } - py_frame = PyFrame_New( - tstate, /*PyThreadState *tstate,*/ - py_code, /*PyCodeObject *code,*/ - __pyx_d, /*PyObject *globals,*/ - 0 /*PyObject *locals*/ - ); - if (!py_frame) goto bad; - __Pyx_PyFrame_SetLineNumber(py_frame, py_line); - PyTraceBack_Here(py_frame); -bad: - Py_XDECREF(py_code); - Py_XDECREF(py_frame); -} - -/* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { - const long neg_one = (long) -1, const_zero = (long) 0; - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(long) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(long) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -#endif - } - } else { - if (sizeof(long) <= sizeof(long)) { - return PyInt_FromLong((long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); -#endif - } - } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; - return _PyLong_FromByteArray(bytes, sizeof(long), - little, !is_unsigned); - } -} - -/* CIntFromPyVerify */ - #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) -#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) -#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ - {\ - func_type value = func_value;\ - if (sizeof(target_type) < sizeof(func_type)) {\ - if (unlikely(value != (func_type) (target_type) value)) {\ - func_type zero = 0;\ - if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ - return (target_type) -1;\ - if (is_unsigned && unlikely(value < zero))\ - goto raise_neg_overflow;\ - else\ - goto raise_overflow;\ - }\ - }\ - return (target_type) value;\ - } - -/* CIntFromPy */ - static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { - const long neg_one = (long) -1, const_zero = (long) 0; - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(long) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (long) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { - return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { - return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { - return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (long) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(long) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) - case -2: - if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - } -#endif - if (sizeof(long) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - long val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (long) -1; - } - } else { - long val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (long) -1; - val = __Pyx_PyInt_As_long(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to long"); - return (long) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to long"); - return (long) -1; -} - -/* CIntFromPy */ - static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { - const int neg_one = (int) -1, const_zero = (int) 0; - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(int) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (int) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (int) 0; - case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { - return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { - return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { - return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (int) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(int) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (int) 0; - case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) - case -2: - if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - } -#endif - if (sizeof(int) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - int val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (int) -1; - } - } else { - int val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (int) -1; - val = __Pyx_PyInt_As_int(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to int"); - return (int) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to int"); - return (int) -1; -} - -/* FastTypeChecks */ - #if CYTHON_COMPILING_IN_CPYTHON -static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { - while (a) { - a = a->tp_base; - if (a == b) - return 1; - } - return b == &PyBaseObject_Type; -} -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { - PyObject *mro; - if (a == b) return 1; - mro = a->tp_mro; - if (likely(mro)) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(mro); - for (i = 0; i < n; i++) { - if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) - return 1; - } - return 0; - } - return __Pyx_InBases(a, b); -} -#if PY_MAJOR_VERSION == 2 -static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { - PyObject *exception, *value, *tb; - int res; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&exception, &value, &tb); - res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - if (!res) { - res = PyObject_IsSubclass(err, exc_type2); - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - } - __Pyx_ErrRestore(exception, value, tb); - return res; -} -#else -static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { - int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0; - if (!res) { - res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); - } - return res; -} -#endif -static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - assert(PyExceptionClass_Check(exc_type)); - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; i<n; i++) { - if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1; - } -#endif - for (i=0; i<n; i++) { - PyObject *t = PyTuple_GET_ITEM(tuple, i); - #if PY_MAJOR_VERSION < 3 - if (likely(exc_type == t)) return 1; - #endif - if (likely(PyExceptionClass_Check(t))) { - if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1; - } else { - } - } - return 0; -} -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) { - if (likely(err == exc_type)) return 1; - if (likely(PyExceptionClass_Check(err))) { - if (likely(PyExceptionClass_Check(exc_type))) { - return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type); - } else if (likely(PyTuple_Check(exc_type))) { - return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type); - } else { - } - } - return PyErr_GivenExceptionMatches(err, exc_type); -} -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) { - assert(PyExceptionClass_Check(exc_type1)); - assert(PyExceptionClass_Check(exc_type2)); - if (likely(err == exc_type1 || err == exc_type2)) return 1; - if (likely(PyExceptionClass_Check(err))) { - return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2); - } - return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2)); -} -#endif - -/* CheckBinaryVersion */ - static int __Pyx_check_binary_version(void) { - char ctversion[4], rtversion[4]; - PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); - PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); - if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) { - char message[200]; - PyOS_snprintf(message, sizeof(message), - "compiletime version %s of module '%.100s' " - "does not match runtime version %s", - ctversion, __Pyx_MODULE_NAME, rtversion); - return PyErr_WarnEx(NULL, message, 1); - } - return 0; -} - -/* VoidPtrExport */ - static int __Pyx_ExportVoidPtr(PyObject *name, void *p, const char *sig) { - PyObject *d; - PyObject *cobj = 0; - d = PyDict_GetItem(__pyx_d, __pyx_n_s_pyx_capi); - Py_XINCREF(d); - if (!d) { - d = PyDict_New(); - if (!d) - goto bad; - if (__Pyx_PyObject_SetAttrStr(__pyx_m, __pyx_n_s_pyx_capi, d) < 0) - goto bad; - } -#if PY_VERSION_HEX >= 0x02070000 - cobj = PyCapsule_New(p, sig, 0); -#else - cobj = PyCObject_FromVoidPtrAndDesc(p, (void *)sig, 0); -#endif - if (!cobj) - goto bad; - if (PyDict_SetItem(d, name, cobj) < 0) - goto bad; - Py_DECREF(cobj); - Py_DECREF(d); - return 0; -bad: - Py_XDECREF(cobj); - Py_XDECREF(d); - return -1; -} - -/* FunctionExport */ - static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) { - PyObject *d = 0; - PyObject *cobj = 0; - union { - void (*fp)(void); - void *p; - } tmp; - d = PyObject_GetAttrString(__pyx_m, (char *)"__pyx_capi__"); - if (!d) { - PyErr_Clear(); - d = PyDict_New(); - if (!d) - goto bad; - Py_INCREF(d); - if (PyModule_AddObject(__pyx_m, (char *)"__pyx_capi__", d) < 0) - goto bad; - } - tmp.fp = f; -#if PY_VERSION_HEX >= 0x02070000 - cobj = PyCapsule_New(tmp.p, sig, 0); -#else - cobj = PyCObject_FromVoidPtrAndDesc(tmp.p, (void *)sig, 0); -#endif - if (!cobj) - goto bad; - if (PyDict_SetItemString(d, name, cobj) < 0) - goto bad; - Py_DECREF(cobj); - Py_DECREF(d); - return 0; -bad: - Py_XDECREF(cobj); - Py_XDECREF(d); - return -1; -} - -/* ModuleImport */ - #ifndef __PYX_HAVE_RT_ImportModule -#define __PYX_HAVE_RT_ImportModule -static PyObject *__Pyx_ImportModule(const char *name) { - PyObject *py_name = 0; - PyObject *py_module = 0; - py_name = __Pyx_PyIdentifier_FromString(name); - if (!py_name) - goto bad; - py_module = PyImport_Import(py_name); - Py_DECREF(py_name); - return py_module; -bad: - Py_XDECREF(py_name); - return 0; -} -#endif - -/* TypeImport */ - #ifndef __PYX_HAVE_RT_ImportType -#define __PYX_HAVE_RT_ImportType -static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, - size_t size, int strict) -{ - PyObject *py_module = 0; - PyObject *result = 0; - PyObject *py_name = 0; - char warning[200]; - Py_ssize_t basicsize; -#ifdef Py_LIMITED_API - PyObject *py_basicsize; -#endif - py_module = __Pyx_ImportModule(module_name); - if (!py_module) - goto bad; - py_name = __Pyx_PyIdentifier_FromString(class_name); - if (!py_name) - goto bad; - result = PyObject_GetAttr(py_module, py_name); - Py_DECREF(py_name); - py_name = 0; - Py_DECREF(py_module); - py_module = 0; - if (!result) - goto bad; - if (!PyType_Check(result)) { - PyErr_Format(PyExc_TypeError, - "%.200s.%.200s is not a type object", - module_name, class_name); - goto bad; - } -#ifndef Py_LIMITED_API - basicsize = ((PyTypeObject *)result)->tp_basicsize; -#else - py_basicsize = PyObject_GetAttrString(result, "__basicsize__"); - if (!py_basicsize) - goto bad; - basicsize = PyLong_AsSsize_t(py_basicsize); - Py_DECREF(py_basicsize); - py_basicsize = 0; - if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred()) - goto bad; -#endif - if (!strict && (size_t)basicsize > size) { - PyOS_snprintf(warning, sizeof(warning), - "%s.%s size changed, may indicate binary incompatibility. Expected %zd, got %zd", - module_name, class_name, basicsize, size); - if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad; - } - else if ((size_t)basicsize != size) { - PyErr_Format(PyExc_ValueError, - "%.200s.%.200s has the wrong size, try recompiling. Expected %zd, got %zd", - module_name, class_name, basicsize, size); - goto bad; - } - return (PyTypeObject *)result; -bad: - Py_XDECREF(py_module); - Py_XDECREF(result); - return NULL; -} -#endif - -/* VoidPtrImport */ - #ifndef __PYX_HAVE_RT_ImportVoidPtr -#define __PYX_HAVE_RT_ImportVoidPtr -static int __Pyx_ImportVoidPtr(PyObject *module, const char *name, void **p, const char *sig) { - PyObject *d = 0; - PyObject *cobj = 0; - d = PyObject_GetAttrString(module, (char *)"__pyx_capi__"); - if (!d) - goto bad; - cobj = PyDict_GetItemString(d, name); - if (!cobj) { - PyErr_Format(PyExc_ImportError, - "%.200s does not export expected C variable %.200s", - PyModule_GetName(module), name); - goto bad; - } -#if PY_VERSION_HEX >= 0x02070000 - if (!PyCapsule_IsValid(cobj, sig)) { - PyErr_Format(PyExc_TypeError, - "C variable %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", - PyModule_GetName(module), name, sig, PyCapsule_GetName(cobj)); - goto bad; - } - *p = PyCapsule_GetPointer(cobj, sig); -#else - {const char *desc, *s1, *s2; - desc = (const char *)PyCObject_GetDesc(cobj); - if (!desc) - goto bad; - s1 = desc; s2 = sig; - while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; } - if (*s1 != *s2) { - PyErr_Format(PyExc_TypeError, - "C variable %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", - PyModule_GetName(module), name, sig, desc); - goto bad; - } - *p = PyCObject_AsVoidPtr(cobj);} -#endif - if (!(*p)) - goto bad; - Py_DECREF(d); - return 0; -bad: - Py_XDECREF(d); - return -1; -} -#endif - -/* FunctionImport */ - #ifndef __PYX_HAVE_RT_ImportFunction -#define __PYX_HAVE_RT_ImportFunction -static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) { - PyObject *d = 0; - PyObject *cobj = 0; - union { - void (*fp)(void); - void *p; - } tmp; - d = PyObject_GetAttrString(module, (char *)"__pyx_capi__"); - if (!d) - goto bad; - cobj = PyDict_GetItemString(d, funcname); - if (!cobj) { - PyErr_Format(PyExc_ImportError, - "%.200s does not export expected C function %.200s", - PyModule_GetName(module), funcname); - goto bad; - } -#if PY_VERSION_HEX >= 0x02070000 - if (!PyCapsule_IsValid(cobj, sig)) { - PyErr_Format(PyExc_TypeError, - "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", - PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj)); - goto bad; - } - tmp.p = PyCapsule_GetPointer(cobj, sig); -#else - {const char *desc, *s1, *s2; - desc = (const char *)PyCObject_GetDesc(cobj); - if (!desc) - goto bad; - s1 = desc; s2 = sig; - while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; } - if (*s1 != *s2) { - PyErr_Format(PyExc_TypeError, - "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", - PyModule_GetName(module), funcname, sig, desc); - goto bad; - } - tmp.p = PyCObject_AsVoidPtr(cobj);} -#endif - *f = tmp.fp; - if (!(*f)) - goto bad; - Py_DECREF(d); - return 0; -bad: - Py_XDECREF(d); - return -1; -} -#endif - -/* InitStrings */ - static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { - while (t->p) { - #if PY_MAJOR_VERSION < 3 - if (t->is_unicode) { - *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); - } else if (t->intern) { - *t->p = PyString_InternFromString(t->s); - } else { - *t->p = PyString_FromStringAndSize(t->s, t->n - 1); - } - #else - if (t->is_unicode | t->is_str) { - if (t->intern) { - *t->p = PyUnicode_InternFromString(t->s); - } else if (t->encoding) { - *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL); - } else { - *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1); - } - } else { - *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1); - } - #endif - if (!*t->p) - return -1; - if (PyObject_Hash(*t->p) == -1) - return -1; - ++t; - } - return 0; -} - -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { - return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); -} -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { - Py_ssize_t ignore; - return __Pyx_PyObject_AsStringAndSize(o, &ignore); -} -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -#if !CYTHON_PEP393_ENABLED -static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - char* defenc_c; - PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); - if (!defenc) return NULL; - defenc_c = PyBytes_AS_STRING(defenc); -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - { - char* end = defenc_c + PyBytes_GET_SIZE(defenc); - char* c; - for (c = defenc_c; c < end; c++) { - if ((unsigned char) (*c) >= 128) { - PyUnicode_AsASCIIString(o); - return NULL; - } - } - } -#endif - *length = PyBytes_GET_SIZE(defenc); - return defenc_c; -} -#else -static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - if (likely(PyUnicode_IS_ASCII(o))) { - *length = PyUnicode_GET_LENGTH(o); - return PyUnicode_AsUTF8(o); - } else { - PyUnicode_AsASCIIString(o); - return NULL; - } -#else - return PyUnicode_AsUTF8AndSize(o, length); -#endif -} -#endif -#endif -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT - if ( -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - __Pyx_sys_getdefaultencoding_not_ascii && -#endif - PyUnicode_Check(o)) { - return __Pyx_PyUnicode_AsStringAndSize(o, length); - } else -#endif -#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) - if (PyByteArray_Check(o)) { - *length = PyByteArray_GET_SIZE(o); - return PyByteArray_AS_STRING(o); - } else -#endif - { - char* result; - int r = PyBytes_AsStringAndSize(o, &result, length); - if (unlikely(r < 0)) { - return NULL; - } else { - return result; - } - } -} -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { - int is_true = x == Py_True; - if (is_true | (x == Py_False) | (x == Py_None)) return is_true; - else return PyObject_IsTrue(x); -} -static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { -#if PY_MAJOR_VERSION >= 3 - if (PyLong_Check(result)) { - if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, - "__int__ returned non-int (type %.200s). " - "The ability to return an instance of a strict subclass of int " - "is deprecated, and may be removed in a future version of Python.", - Py_TYPE(result)->tp_name)) { - Py_DECREF(result); - return NULL; - } - return result; - } -#endif - PyErr_Format(PyExc_TypeError, - "__%.4s__ returned non-%.4s (type %.200s)", - type_name, type_name, Py_TYPE(result)->tp_name); - Py_DECREF(result); - return NULL; -} -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { -#if CYTHON_USE_TYPE_SLOTS - PyNumberMethods *m; -#endif - const char *name = NULL; - PyObject *res = NULL; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x) || PyLong_Check(x))) -#else - if (likely(PyLong_Check(x))) -#endif - return __Pyx_NewRef(x); -#if CYTHON_USE_TYPE_SLOTS - m = Py_TYPE(x)->tp_as_number; - #if PY_MAJOR_VERSION < 3 - if (m && m->nb_int) { - name = "int"; - res = m->nb_int(x); - } - else if (m && m->nb_long) { - name = "long"; - res = m->nb_long(x); - } - #else - if (likely(m && m->nb_int)) { - name = "int"; - res = m->nb_int(x); - } - #endif -#else - if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { - res = PyNumber_Int(x); - } -#endif - if (likely(res)) { -#if PY_MAJOR_VERSION < 3 - if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { -#else - if (unlikely(!PyLong_CheckExact(res))) { -#endif - return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); - } - } - else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_TypeError, - "an integer is required"); - } - return res; -} -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { - Py_ssize_t ival; - PyObject *x; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(b))) { - if (sizeof(Py_ssize_t) >= sizeof(long)) - return PyInt_AS_LONG(b); - else - return PyInt_AsSsize_t(x); - } -#endif - if (likely(PyLong_CheckExact(b))) { - #if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)b)->ob_digit; - const Py_ssize_t size = Py_SIZE(b); - if (likely(__Pyx_sst_abs(size) <= 1)) { - ival = likely(size) ? digits[0] : 0; - if (size == -1) ival = -ival; - return ival; - } else { - switch (size) { - case 2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - } - } - #endif - return PyLong_AsSsize_t(b); - } - x = PyNumber_Index(b); - if (!x) return -1; - ival = PyInt_AsSsize_t(x); - Py_DECREF(x); - return ival; -} -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { - return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); -} -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { - return PyInt_FromSize_t(ival); -} - - -#endif /* Py_PYTHON_H */ diff --git a/python/gevent/local.py b/python/gevent/local.py deleted file mode 100644 index f29bb23..0000000 --- a/python/gevent/local.py +++ /dev/null @@ -1,605 +0,0 @@ -# cython: auto_pickle=False,embedsignature=True,always_allow_keywords=False -""" -Greenlet-local objects. - -This module is based on `_threading_local.py`__ from the standard -library of Python 3.4. - -__ https://github.com/python/cpython/blob/3.4/Lib/_threading_local.py - -Greenlet-local objects support the management of greenlet-local data. -If you have data that you want to be local to a greenlet, simply create -a greenlet-local object and use its attributes: - - >>> mydata = local() - >>> mydata.number = 42 - >>> mydata.number - 42 - -You can also access the local-object's dictionary: - - >>> mydata.__dict__ - {'number': 42} - >>> mydata.__dict__.setdefault('widgets', []) - [] - >>> mydata.widgets - [] - -What's important about greenlet-local objects is that their data are -local to a greenlet. If we access the data in a different greenlet: - - >>> log = [] - >>> def f(): - ... items = list(mydata.__dict__.items()) - ... items.sort() - ... log.append(items) - ... mydata.number = 11 - ... log.append(mydata.number) - >>> greenlet = gevent.spawn(f) - >>> greenlet.join() - >>> log - [[], 11] - -we get different data. Furthermore, changes made in the other greenlet -don't affect data seen in this greenlet: - - >>> mydata.number - 42 - -Of course, values you get from a local object, including a __dict__ -attribute, are for whatever greenlet was current at the time the -attribute was read. For that reason, you generally don't want to save -these values across greenlets, as they apply only to the greenlet they -came from. - -You can create custom local objects by subclassing the local class: - - >>> class MyLocal(local): - ... number = 2 - ... initialized = False - ... def __init__(self, **kw): - ... if self.initialized: - ... raise SystemError('__init__ called too many times') - ... self.initialized = True - ... self.__dict__.update(kw) - ... def squared(self): - ... return self.number ** 2 - -This can be useful to support default values, methods and -initialization. Note that if you define an __init__ method, it will be -called each time the local object is used in a separate greenlet. This -is necessary to initialize each greenlet's dictionary. - -Now if we create a local object: - - >>> mydata = MyLocal(color='red') - -Now we have a default number: - - >>> mydata.number - 2 - -an initial color: - - >>> mydata.color - 'red' - >>> del mydata.color - -And a method that operates on the data: - - >>> mydata.squared() - 4 - -As before, we can access the data in a separate greenlet: - - >>> log = [] - >>> greenlet = gevent.spawn(f) - >>> greenlet.join() - >>> log - [[('color', 'red'), ('initialized', True)], 11] - -without affecting this greenlet's data: - - >>> mydata.number - 2 - >>> mydata.color - Traceback (most recent call last): - ... - AttributeError: 'MyLocal' object has no attribute 'color' - -Note that subclasses can define slots, but they are not greenlet -local. They are shared across greenlets:: - - >>> class MyLocal(local): - ... __slots__ = 'number' - - >>> mydata = MyLocal() - >>> mydata.number = 42 - >>> mydata.color = 'red' - -So, the separate greenlet: - - >>> greenlet = gevent.spawn(f) - >>> greenlet.join() - -affects what we see: - - >>> mydata.number - 11 - ->>> del mydata - -.. versionchanged:: 1.1a2 - Update the implementation to match Python 3.4 instead of Python 2.5. - This results in locals being eligible for garbage collection as soon - as their greenlet exits. - -.. versionchanged:: 1.2.3 - Use a weak-reference to clear the greenlet link we establish in case - the local object dies before the greenlet does. - -.. versionchanged:: 1.3a1 - Implement the methods for attribute access directly, handling - descriptors directly here. This allows removing the use of a lock - and facilitates greatly improved performance. - -.. versionchanged:: 1.3a1 - The ``__init__`` method of subclasses of ``local`` is no longer - called with a lock held. CPython does not use such a lock in its - native implementation. This could potentially show as a difference - if code that uses multiple dependent attributes in ``__slots__`` - (which are shared across all greenlets) switches during ``__init__``. - -""" -from __future__ import print_function - -from copy import copy -from weakref import ref - - -locals()['getcurrent'] = __import__('greenlet').getcurrent -locals()['greenlet_init'] = lambda: None - -__all__ = [ - "local", -] - -# The key used in the Thread objects' attribute dicts. -# We keep it a string for speed but make it unlikely to clash with -# a "real" attribute. -key_prefix = '_gevent_local_localimpl_' - -# The overall structure is as follows: -# For each local() object: -# greenlet.__dict__[key_prefix + str(id(local))] -# => _localimpl.dicts[id(greenlet)] => (ref(greenlet), {}) - -# That final tuple is actually a localimpl_dict_entry object. - -def all_local_dicts_for_greenlet(greenlet): - """ - Internal debug helper for getting the local values associated - with a greenlet. This is subject to change or removal at any time. - - :return: A list of ((type, id), {}) pairs, where the first element - is the type and id of the local object and the second object is its - instance dictionary, as seen from this greenlet. - - .. versionadded:: 1.3a2 - """ - - result = [] - id_greenlet = id(greenlet) - greenlet_dict = greenlet.__dict__ - for k, v in greenlet_dict.items(): - if not k.startswith(key_prefix): - continue - local_impl = v() - if local_impl is None: - continue - entry = local_impl.dicts.get(id_greenlet) - if entry is None: - # Not yet used in this greenlet. - continue - assert entry.wrgreenlet() is greenlet - result.append((local_impl.localtypeid, entry.localdict)) - - return result - - -class _wrefdict(dict): - """A dict that can be weak referenced""" - -class _greenlet_deleted(object): - """ - A weakref callback for when the greenlet - is deleted. - - If the greenlet is a `gevent.greenlet.Greenlet` and - supplies ``rawlink``, that will be used instead of a - weakref. - """ - __slots__ = ('idt', 'wrdicts') - - def __init__(self, idt, wrdicts): - self.idt = idt - self.wrdicts = wrdicts - - def __call__(self, _unused): - dicts = self.wrdicts() - if dicts: - dicts.pop(self.idt, None) - -class _local_deleted(object): - __slots__ = ('key', 'wrthread', 'greenlet_deleted') - - def __init__(self, key, wrthread, greenlet_deleted): - self.key = key - self.wrthread = wrthread - self.greenlet_deleted = greenlet_deleted - - def __call__(self, _unused): - thread = self.wrthread() - if thread is not None: - try: - unlink = thread.unlink - except AttributeError: - pass - else: - unlink(self.greenlet_deleted) - del thread.__dict__[self.key] - -class _localimpl(object): - """A class managing thread-local dicts""" - __slots__ = ('key', 'dicts', - 'localargs', 'localkwargs', - 'localtypeid', - '__weakref__',) - - def __init__(self, args, kwargs, local_type, id_local): - self.key = key_prefix + str(id(self)) - # { id(greenlet) -> _localimpl_dict_entry(ref(greenlet), greenlet-local dict) } - self.dicts = _wrefdict() - self.localargs = args - self.localkwargs = kwargs - self.localtypeid = local_type, id_local - - # We need to create the thread dict in anticipation of - # __init__ being called, to make sure we don't call it - # again ourselves. MUST do this before setting any attributes. - greenlet = getcurrent() # pylint:disable=undefined-variable - _localimpl_create_dict(self, greenlet, id(greenlet)) - -class _localimpl_dict_entry(object): - """ - The object that goes in the ``dicts`` of ``_localimpl`` - object for each thread. - """ - # This is a class, not just a tuple, so that cython can optimize - # attribute access - __slots__ = ('wrgreenlet', 'localdict') - - def __init__(self, wrgreenlet, localdict): - self.wrgreenlet = wrgreenlet - self.localdict = localdict - -# We use functions instead of methods so that they can be cdef'd in -# local.pxd; if they were cdef'd as methods, they would cause -# the creation of a pointer and a vtable. This happens -# even if we declare the class @cython.final. functions thus save memory overhead -# (but not pointer chasing overhead; the vtable isn't used when we declare -# the class final). - - -def _localimpl_create_dict(self, greenlet, id_greenlet): - """Create a new dict for the current thread, and return it.""" - localdict = {} - key = self.key - - wrdicts = ref(self.dicts) - - # When the greenlet is deleted, remove the local dict. - # Note that this is suboptimal if the greenlet object gets - # caught in a reference loop. We would like to be called - # as soon as the OS-level greenlet ends instead. - - # If we are working with a gevent.greenlet.Greenlet, we - # can pro-actively clear out with a link, avoiding the - # issue described above. Use rawlink to avoid spawning any - # more greenlets. - greenlet_deleted = _greenlet_deleted(id_greenlet, wrdicts) - - rawlink = getattr(greenlet, 'rawlink', None) - if rawlink is not None: - rawlink(greenlet_deleted) - wrthread = ref(greenlet) - else: - wrthread = ref(greenlet, greenlet_deleted) - - - # When the localimpl is deleted, remove the thread attribute. - local_deleted = _local_deleted(key, wrthread, greenlet_deleted) - - - wrlocal = ref(self, local_deleted) - greenlet.__dict__[key] = wrlocal - - self.dicts[id_greenlet] = _localimpl_dict_entry(wrthread, localdict) - return localdict - - -_marker = object() - -def _local_get_dict(self): - impl = self._local__impl - # Cython can optimize dict[], but not dict.get() - greenlet = getcurrent() # pylint:disable=undefined-variable - idg = id(greenlet) - try: - entry = impl.dicts[idg] - dct = entry.localdict - except KeyError: - dct = _localimpl_create_dict(impl, greenlet, idg) - self.__init__(*impl.localargs, **impl.localkwargs) - return dct - -def _init(): - greenlet_init() # pylint:disable=undefined-variable - -_local_attrs = { - '_local__impl', - '_local_type_get_descriptors', - '_local_type_set_or_del_descriptors', - '_local_type_del_descriptors', - '_local_type_set_descriptors', - '_local_type', - '_local_type_vars', - '__class__', - '__cinit__', -} - -class local(object): - """ - An object whose attributes are greenlet-local. - """ - __slots__ = tuple(_local_attrs - {'__class__', '__cinit__'}) - - def __cinit__(self, *args, **kw): - if args or kw: - if type(self).__init__ == object.__init__: - raise TypeError("Initialization arguments are not supported", args, kw) - impl = _localimpl(args, kw, type(self), id(self)) - # pylint:disable=attribute-defined-outside-init - self._local__impl = impl - get, dels, sets_or_dels, sets = _local_find_descriptors(self) - self._local_type_get_descriptors = get - self._local_type_set_or_del_descriptors = sets_or_dels - self._local_type_del_descriptors = dels - self._local_type_set_descriptors = sets - self._local_type = type(self) - self._local_type_vars = set(dir(self._local_type)) - - def __getattribute__(self, name): # pylint:disable=too-many-return-statements - if name in _local_attrs: - # The _local__impl, __cinit__, etc, won't be hit by the - # Cython version, if we've done things right. If we haven't, - # they will be, and this will produce an error. - return object.__getattribute__(self, name) - - dct = _local_get_dict(self) - - if name == '__dict__': - return dct - # If there's no possible way we can switch, because this - # attribute is *not* found in the class where it might be a - # data descriptor (property), and it *is* in the dict - # then we don't need to swizzle the dict and take the lock. - - # We don't have to worry about people overriding __getattribute__ - # because if they did, the dict-swizzling would only last as - # long as we were in here anyway. - # Similarly, a __getattr__ will still be called by _oga() if needed - # if it's not in the dict. - - # Optimization: If we're not subclassed, then - # there can be no descriptors except for methods, which will - # never need to use __dict__. - if self._local_type is local: - return dct[name] if name in dct else object.__getattribute__(self, name) - - # NOTE: If this is a descriptor, this will invoke its __get__. - # A broken descriptor that doesn't return itself when called with - # a None for the instance argument could mess us up here. - # But this is faster than a loop over mro() checking each class __dict__ - # manually. - if name in dct: - if name not in self._local_type_vars: - # If there is a dict value, and nothing in the type, - # it can't possibly be a descriptor, so it is just returned. - return dct[name] - - # It's in the type *and* in the dict. If the type value is - # a data descriptor (defines __get__ *and* either __set__ or - # __delete__), then the type wins. If it's a non-data descriptor - # (defines just __get__), then the instance wins. If it's not a - # descriptor at all (doesn't have __get__), the instance wins. - # NOTE that the docs for descriptors say that these methods must be - # defined on the *class* of the object in the type. - if name not in self._local_type_get_descriptors: - # Entirely not a descriptor. Instance wins. - return dct[name] - if name in self._local_type_set_or_del_descriptors: - # A data descriptor. - # arbitrary code execution while these run. If they touch self again, - # they'll call back into us and we'll repeat the dance. - type_attr = getattr(self._local_type, name) - return type(type_attr).__get__(type_attr, self, self._local_type) - # Last case is a non-data descriptor. Instance wins. - return dct[name] - - if name in self._local_type_vars: - # Not in the dictionary, but is found in the type. It could be - # a non-data descriptor still. Some descriptors, like @staticmethod, - # return objects (functions, in this case), that are *themselves* - # descriptors, which when invoked, again, would do the wrong thing. - # So we can't rely on getattr() on the type for them, we have to - # look through the MRO dicts ourself. - if name not in self._local_type_get_descriptors: - # Not a descriptor, can't execute code. So all we need is - # the return value of getattr() on our type. - return getattr(self._local_type, name) - - for base in self._local_type.mro(): - bd = base.__dict__ - if name in bd: - attr_on_type = bd[name] - result = type(attr_on_type).__get__(attr_on_type, self, self._local_type) - return result - - # It wasn't in the dict and it wasn't in the type. - # So the next step is to invoke type(self)__getattr__, if it - # exists, otherwise raise an AttributeError. - # we will invoke type(self).__getattr__ or raise an attribute error. - if hasattr(self._local_type, '__getattr__'): - return self._local_type.__getattr__(self, name) - raise AttributeError("%r object has no attribute '%s'" - % (self._local_type.__name__, name)) - - def __setattr__(self, name, value): - if name == '__dict__': - raise AttributeError( - "%r object attribute '__dict__' is read-only" - % type(self)) - - if name in _local_attrs: - object.__setattr__(self, name, value) - return - - dct = _local_get_dict(self) - - if self._local_type is local: - # Optimization: If we're not subclassed, we can't - # have data descriptors, so this goes right in the dict. - dct[name] = value - return - - if name in self._local_type_vars: - if name in self._local_type_set_descriptors: - type_attr = getattr(self._local_type, name, _marker) - # A data descriptor, like a property or a slot. - type(type_attr).__set__(type_attr, self, value) - return - # Otherwise it goes directly in the dict - dct[name] = value - - def __delattr__(self, name): - if name == '__dict__': - raise AttributeError( - "%r object attribute '__dict__' is read-only" - % self.__class__.__name__) - - if name in self._local_type_vars: - if name in self._local_type_del_descriptors: - # A data descriptor, like a property or a slot. - type_attr = getattr(self._local_type, name, _marker) - type(type_attr).__delete__(type_attr, self) - return - # Otherwise it goes directly in the dict - - # Begin inlined function _get_dict() - dct = _local_get_dict(self) - - try: - del dct[name] - except KeyError: - raise AttributeError(name) - - def __copy__(self): - impl = self._local__impl - entry = impl.dicts[id(getcurrent())] # pylint:disable=undefined-variable - - dct = entry.localdict - duplicate = copy(dct) - - cls = type(self) - instance = cls(*impl.localargs, **impl.localkwargs) - _local__copy_dict_from(instance, impl, duplicate) - return instance - -def _local__copy_dict_from(self, impl, duplicate): - current = getcurrent() # pylint:disable=undefined-variable - currentId = id(current) - new_impl = self._local__impl - assert new_impl is not impl - entry = new_impl.dicts[currentId] - new_impl.dicts[currentId] = _localimpl_dict_entry(entry.wrgreenlet, duplicate) - -def _local_find_descriptors(self): - type_self = type(self) - gets = set() - dels = set() - set_or_del = set() - sets = set() - mro = list(type_self.mro()) - - for attr_name in dir(type_self): - # Conventionally, descriptors when called on a class - # return themself, but not all do. Notable exceptions are - # in the zope.interface package, where things like __provides__ - # return other class attributes. So we can't use getattr, and instead - # walk up the dicts - for base in mro: - bd = base.__dict__ - if attr_name in bd: - attr = bd[attr_name] - break - else: - raise AttributeError(attr_name) - - type_attr = type(attr) - if hasattr(type_attr, '__get__'): - gets.add(attr_name) - if hasattr(type_attr, '__delete__'): - dels.add(attr_name) - set_or_del.add(attr_name) - if hasattr(type_attr, '__set__'): - sets.add(attr_name) - - return (gets, dels, set_or_del, sets) - -# Cython doesn't let us use __new__, it requires -# __cinit__. But we need __new__ if we're not compiled -# (e.g., on PyPy). So we set it at runtime. Cython -# will raise an error if we're compiled. -def __new__(cls, *args, **kw): - self = super(local, cls).__new__(cls) - # We get the cls in *args for some reason - # too when we do it this way....except on PyPy3, which does - # not *unless* it's wrapped in a classmethod (which it is) - self.__cinit__(*args[1:], **kw) - return self - -try: - # PyPy2/3 and CPython handle adding a __new__ to the class - # in different ways. In CPython and PyPy3, it must be wrapped with classmethod; - # in PyPy2, it must not. In either case, the args that get passed to - # it are stil wrong. - local.__new__ = 'None' -except TypeError: # pragma: no cover - # Must be compiled - pass -else: - from gevent._compat import PYPY - from gevent._compat import PY2 - if PYPY and PY2: - local.__new__ = __new__ - else: - local.__new__ = classmethod(__new__) - - del PYPY - del PY2 - -_init() - -from gevent._util import import_c_accel -import_c_accel(globals(), 'gevent._local') diff --git a/python/gevent/lock.py b/python/gevent/lock.py deleted file mode 100644 index 00bf68c..0000000 --- a/python/gevent/lock.py +++ /dev/null @@ -1,263 +0,0 @@ -# Copyright (c) 2009-2012 Denis Bilenko. See LICENSE for details. -"""Locking primitives""" -from __future__ import absolute_import - -from gevent.hub import getcurrent -from gevent._compat import PYPY -from gevent._semaphore import Semaphore, BoundedSemaphore # pylint:disable=no-name-in-module,import-error - - -__all__ = [ - 'Semaphore', - 'DummySemaphore', - 'BoundedSemaphore', - 'RLock', -] - -# On PyPy, we don't compile the Semaphore class with Cython. Under -# Cython, each individual method holds the GIL for its entire -# duration, ensuring that no other thread can interrupt us in an -# unsafe state (only when we _do_wait do we call back into Python and -# allow switching threads). Simulate that here through the use of a manual -# lock. (We use a separate lock for each semaphore to allow sys.settrace functions -# to use locks *other* than the one being traced.) -if PYPY: - # TODO: Need to use monkey.get_original? - try: - from _thread import allocate_lock as _allocate_lock # pylint:disable=import-error,useless-suppression - from _thread import get_ident as _get_ident # pylint:disable=import-error,useless-suppression - except ImportError: - # Python 2 - from thread import allocate_lock as _allocate_lock # pylint:disable=import-error,useless-suppression - from thread import get_ident as _get_ident # pylint:disable=import-error,useless-suppression - _sem_lock = _allocate_lock() - - def untraceable(f): - # Don't allow re-entry to these functions in a single thread, as can - # happen if a sys.settrace is used - def wrapper(self): - me = _get_ident() - try: - count = self._locking[me] - except KeyError: - count = self._locking[me] = 1 - else: - count = self._locking[me] = count + 1 - if count: - return - - try: - return f(self) - finally: - count = count - 1 - if not count: - del self._locking[me] - else: - self._locking[me] = count - return wrapper - - class _OwnedLock(object): - - def __init__(self): - self._owner = None - self._block = _allocate_lock() - self._locking = {} - self._count = 0 - - @untraceable - def acquire(self): - me = _get_ident() - if self._owner == me: - self._count += 1 - return - - self._owner = me - self._block.acquire() - self._count = 1 - - @untraceable - def release(self): - self._count = count = self._count - 1 - if not count: - self._block.release() - self._owner = None - - # acquire, wait, and release all acquire the lock on entry and release it - # on exit. acquire and wait can call _do_wait, which must release it on entry - # and re-acquire it for them on exit. - class _around(object): - __slots__ = ('before', 'after') - - def __init__(self, before, after): - self.before = before - self.after = after - - def __enter__(self): - self.before() - - def __exit__(self, t, v, tb): - self.after() - - def _decorate(func, cmname): - # functools.wrap? - def wrapped(self, *args, **kwargs): - with getattr(self, cmname): - return func(self, *args, **kwargs) - return wrapped - - Semaphore._py3k_acquire = Semaphore.acquire = _decorate(Semaphore.acquire, '_lock_locked') - Semaphore.release = _decorate(Semaphore.release, '_lock_locked') - Semaphore.wait = _decorate(Semaphore.wait, '_lock_locked') - Semaphore._do_wait = _decorate(Semaphore._do_wait, '_lock_unlocked') - - _Sem_init = Semaphore.__init__ - - def __init__(self, *args, **kwargs): - l = self._lock_lock = _OwnedLock() - self._lock_locked = _around(l.acquire, l.release) - self._lock_unlocked = _around(l.release, l.acquire) - - _Sem_init(self, *args, **kwargs) - - Semaphore.__init__ = __init__ - - del _decorate - del untraceable - - -class DummySemaphore(object): - """ - DummySemaphore(value=None) -> DummySemaphore - - A Semaphore initialized with "infinite" initial value. None of its - methods ever block. - - This can be used to parameterize on whether or not to actually - guard access to a potentially limited resource. If the resource is - actually limited, such as a fixed-size thread pool, use a real - :class:`Semaphore`, but if the resource is unbounded, use an - instance of this class. In that way none of the supporting code - needs to change. - - Similarly, it can be used to parameterize on whether or not to - enforce mutual exclusion to some underlying object. If the - underlying object is known to be thread-safe itself mutual - exclusion is not needed and a ``DummySemaphore`` can be used, but - if that's not true, use a real ``Semaphore``. - """ - - # Internally this is used for exactly the purpose described in the - # documentation. gevent.pool.Pool uses it instead of a Semaphore - # when the pool size is unlimited, and - # gevent.fileobject.FileObjectThread takes a parameter that - # determines whether it should lock around IO to the underlying - # file object. - - def __init__(self, value=None): - """ - .. versionchanged:: 1.1rc3 - Accept and ignore a *value* argument for compatibility with Semaphore. - """ - pass - - def __str__(self): - return '<%s>' % self.__class__.__name__ - - def locked(self): - """A DummySemaphore is never locked so this always returns False.""" - return False - - def release(self): - """Releasing a dummy semaphore does nothing.""" - pass - - def rawlink(self, callback): - # XXX should still work and notify? - pass - - def unlink(self, callback): - pass - - def wait(self, timeout=None): - """Waiting for a DummySemaphore returns immediately.""" - pass - - def acquire(self, blocking=True, timeout=None): - """ - A DummySemaphore can always be acquired immediately so this always - returns True and ignores its arguments. - - .. versionchanged:: 1.1a1 - Always return *true*. - """ - # pylint:disable=unused-argument - return True - - def __enter__(self): - pass - - def __exit__(self, typ, val, tb): - pass - - -class RLock(object): - """ - A mutex that can be acquired more than once by the same greenlet. - """ - - def __init__(self): - self._block = Semaphore(1) - self._owner = None - self._count = 0 - - def __repr__(self): - return "<%s at 0x%x _block=%s _count=%r _owner=%r)>" % ( - self.__class__.__name__, - id(self), - self._block, - self._count, - self._owner) - - def acquire(self, blocking=1): - me = getcurrent() - if self._owner is me: - self._count = self._count + 1 - return 1 - rc = self._block.acquire(blocking) - if rc: - self._owner = me - self._count = 1 - return rc - - def __enter__(self): - return self.acquire() - - def release(self): - if self._owner is not getcurrent(): - raise RuntimeError("cannot release un-acquired lock") - self._count = count = self._count - 1 - if not count: - self._owner = None - self._block.release() - - def __exit__(self, typ, value, tb): - self.release() - - # Internal methods used by condition variables - - def _acquire_restore(self, count_owner): - count, owner = count_owner - self._block.acquire() - self._count = count - self._owner = owner - - def _release_save(self): - count = self._count - self._count = 0 - owner = self._owner - self._owner = None - self._block.release() - return (count, owner) - - def _is_owned(self): - return self._owner is getcurrent() diff --git a/python/gevent/monkey.py b/python/gevent/monkey.py deleted file mode 100644 index 6c1fa00..0000000 --- a/python/gevent/monkey.py +++ /dev/null @@ -1,1079 +0,0 @@ -# Copyright (c) 2009-2012 Denis Bilenko. See LICENSE for details. -# pylint: disable=redefined-outer-name -""" -Make the standard library cooperative. - -The primary purpose of this module is to carefully patch, in place, -portions of the standard library with gevent-friendly functions that -behave in the same way as the original (at least as closely as possible). - -The primary interface to this is the :func:`patch_all` function, which -performs all the available patches. It accepts arguments to limit the -patching to certain modules, but most programs **should** use the -default values as they receive the most wide-spread testing, and some monkey -patches have dependencies on others. - -Patching **should be done as early as possible** in the lifecycle of the -program. For example, the main module (the one that tests against -``__main__`` or is otherwise the first imported) should begin with -this code, ideally before any other imports:: - - from gevent import monkey - monkey.patch_all() - -A corollary of the above is that patching **should be done on the main -thread** and **should be done while the program is single-threaded**. - -.. tip:: - - Some frameworks, such as gunicorn, handle monkey-patching for you. - Check their documentation to be sure. - -.. warning:: - - Patching too late can lead to unreliable behaviour (for example, some - modules may still use blocking sockets) or even errors. - -Querying -======== - -Sometimes it is helpful to know if objects have been monkey-patched, and in -advanced cases even to have access to the original standard library functions. This -module provides functions for that purpose. - -- :func:`is_module_patched` -- :func:`is_object_patched` -- :func:`get_original` - -Plugins -======= - -Beginning in gevent 1.3, events are emitted during the monkey patching process. -These events are delivered first to :mod:`gevent.events` subscribers, and then -to `setuptools entry points`_. - -The following events are defined. They are listed in (roughly) the order -that a call to :func:`patch_all` will emit them. - -- :class:`gevent.events.GeventWillPatchAllEvent` -- :class:`gevent.events.GeventWillPatchModuleEvent` -- :class:`gevent.events.GeventDidPatchModuleEvent` -- :class:`gevent.events.GeventDidPatchBuiltinModulesEvent` -- :class:`gevent.events.GeventDidPatchAllEvent` - -Each event class documents the corresponding setuptools entry point name. The -entry points will be called with a single argument, the same instance of -the class that was sent to the subscribers. - -You can subscribe to the events to monitor the monkey-patching process and -to manipulate it, for example by raising :exc:`gevent.events.DoNotPatch`. - -You can also subscribe to the events to provide additional patching beyond what -gevent distributes, either for additional standard library modules, or -for third-party packages. The suggested time to do this patching is in -the subscriber for :class:`gevent.events.GeventDidPatchBuiltinModulesEvent`. -For example, to automatically patch `psycopg2`_ using `psycogreen`_ -when the call to :func:`patch_all` is made, you could write code like this:: - - # mypackage.py - def patch_psycopg(event): - from psycogreen.gevent import patch_psycopg - patch_psycopg() - -In your ``setup.py`` you would register it like this:: - - from setuptools import setup - setup( - ... - entry_points={ - 'gevent.plugins.monkey.did_patch_builtins': [ - 'psycopg2 = mypackage:patch_psycopg', - ], - }, - ... - ) - -For more complex patching, gevent provides a helper method -that you can call to replace attributes of modules with attributes of your -own modules. This function also takes care of emitting the appropriate events. - -- :func:`patch_module` - -.. _setuptools entry points: http://setuptools.readthedocs.io/en/latest/setuptools.html#dynamic-discovery-of-services-and-plugins -.. _psycopg2: https://pypi.python.org/pypi/psycopg2 -.. _psycogreen: https://pypi.python.org/pypi/psycogreen - -Use as a module -=============== - -Sometimes it is useful to run existing python scripts or modules that -were not built to be gevent aware under gevent. To do so, this module -can be run as the main module, passing the script and its arguments. -For details, see the :func:`main` function. - -.. versionchanged:: 1.3b1 - Added support for plugins and began emitting will/did patch events. -""" -from __future__ import absolute_import -from __future__ import print_function -import sys - -__all__ = [ - 'patch_all', - 'patch_builtins', - 'patch_dns', - 'patch_os', - 'patch_queue', - 'patch_select', - 'patch_signal', - 'patch_socket', - 'patch_ssl', - 'patch_subprocess', - 'patch_sys', - 'patch_thread', - 'patch_time', - # query functions - 'get_original', - 'is_module_patched', - 'is_object_patched', - # plugin API - 'patch_module', - # module functions - 'main', -] - - -if sys.version_info[0] >= 3: - string_types = (str,) - PY3 = True -else: - import __builtin__ # pylint:disable=import-error - string_types = (__builtin__.basestring,) - PY3 = False - -WIN = sys.platform.startswith("win") - -class MonkeyPatchWarning(RuntimeWarning): - """ - The type of warnings we issue. - - .. versionadded:: 1.3a2 - """ - -def _notify_patch(event, _warnings=None): - # Raises DoNotPatch if we're not supposed to patch - from gevent.events import notify_and_call_entry_points - - event._warnings = _warnings - notify_and_call_entry_points(event) - -def _ignores_DoNotPatch(func): - - from functools import wraps - - @wraps(func) - def ignores(*args, **kwargs): - from gevent.events import DoNotPatch - try: - return func(*args, **kwargs) - except DoNotPatch: - return False - - return ignores - - -# maps module name -> {attribute name: original item} -# e.g. "time" -> {"sleep": built-in function sleep} -saved = {} - - -def is_module_patched(mod_name): - """ - Check if a module has been replaced with a cooperative version. - - :param str mod_name: The name of the standard library module, - e.g., ``'socket'``. - - """ - return mod_name in saved - - -def is_object_patched(mod_name, item_name): - """ - Check if an object in a module has been replaced with a - cooperative version. - - :param str mod_name: The name of the standard library module, - e.g., ``'socket'``. - :param str item_name: The name of the attribute in the module, - e.g., ``'create_connection'``. - - """ - return is_module_patched(mod_name) and item_name in saved[mod_name] - - -def _get_original(name, items): - d = saved.get(name, {}) - values = [] - module = None - for item in items: - if item in d: - values.append(d[item]) - else: - if module is None: - module = __import__(name) - values.append(getattr(module, item)) - return values - - -def get_original(mod_name, item_name): - """ - Retrieve the original object from a module. - - If the object has not been patched, then that object will still be - retrieved. - - :param str mod_name: The name of the standard library module, - e.g., ``'socket'``. - :param item_name: A string or sequence of strings naming the - attribute(s) on the module ``mod_name`` to return. - - :return: The original value if a string was given for - ``item_name`` or a sequence of original values if a - sequence was passed. - """ - if isinstance(item_name, string_types): - return _get_original(mod_name, [item_name])[0] - return _get_original(mod_name, item_name) - - -_NONE = object() - - -def patch_item(module, attr, newitem): - olditem = getattr(module, attr, _NONE) - if olditem is not _NONE: - saved.setdefault(module.__name__, {}).setdefault(attr, olditem) - setattr(module, attr, newitem) - - -def remove_item(module, attr): - olditem = getattr(module, attr, _NONE) - if olditem is _NONE: - return - saved.setdefault(module.__name__, {}).setdefault(attr, olditem) - delattr(module, attr) - - -def __call_module_hook(gevent_module, name, module, items, _warnings): - # This function can raise DoNotPatch on 'will' - - def warn(message): - _queue_warning(message, _warnings) - - func_name = '_gevent_' + name + '_monkey_patch' - try: - func = getattr(gevent_module, func_name) - except AttributeError: - func = lambda *args: None - - - func(module, items, warn) - - -def patch_module(target_module, source_module, items=None, - _warnings=None, - _notify_did_subscribers=True): - """ - patch_module(target_module, source_module, items=None) - - Replace attributes in *target_module* with the attributes of the - same name in *source_module*. - - The *source_module* can provide some attributes to customize the process: - - * ``__implements__`` is a list of attribute names to copy; if not present, - the *items* keyword argument is mandatory. - * ``_gevent_will_monkey_patch(target_module, items, warn, **kwargs)`` - * ``_gevent_did_monkey_patch(target_module, items, warn, **kwargs)`` - These two functions in the *source_module* are called *if* they exist, - before and after copying attributes, respectively. The "will" function - may modify *items*. The value of *warn* is a function that should be called - with a single string argument to issue a warning to the user. If the "will" - function raises :exc:`gevent.events.DoNotPatch`, no patching will be done. These functions - are called before any event subscribers or plugins. - - :keyword list items: A list of attribute names to replace. If - not given, this will be taken from the *source_module* ``__implements__`` - attribute. - :return: A true value if patching was done, a false value if patching was canceled. - - .. versionadded:: 1.3b1 - """ - from gevent import events - - if items is None: - items = getattr(source_module, '__implements__', None) - if items is None: - raise AttributeError('%r does not have __implements__' % source_module) - - try: - __call_module_hook(source_module, 'will', target_module, items, _warnings) - _notify_patch( - events.GeventWillPatchModuleEvent(target_module.__name__, source_module, - target_module, items), - _warnings) - except events.DoNotPatch: - return False - - for attr in items: - patch_item(target_module, attr, getattr(source_module, attr)) - - __call_module_hook(source_module, 'did', target_module, items, _warnings) - - if _notify_did_subscribers: - # We allow turning off the broadcast of the 'did' event for the benefit - # of our internal functions which need to do additional work (besides copying - # attributes) before their patch can be considered complete. - _notify_patch( - events.GeventDidPatchModuleEvent(target_module.__name__, source_module, - target_module) - ) - - return True - -def _patch_module(name, items=None, _warnings=None, _notify_did_subscribers=True): - - gevent_module = getattr(__import__('gevent.' + name), name) - module_name = getattr(gevent_module, '__target__', name) - target_module = __import__(module_name) - - patch_module(target_module, gevent_module, items=items, - _warnings=_warnings, - _notify_did_subscribers=_notify_did_subscribers) - - return gevent_module, target_module - - -def _queue_warning(message, _warnings): - # Queues a warning to show after the monkey-patching process is all done. - # Done this way to avoid extra imports during the process itself, just - # in case. If we're calling a function one-off (unusual) go ahead and do it - if _warnings is None: - _process_warnings([message]) - else: - _warnings.append(message) - - -def _process_warnings(_warnings): - import warnings - for warning in _warnings: - warnings.warn(warning, MonkeyPatchWarning, stacklevel=3) - - -def _patch_sys_std(name): - from gevent.fileobject import FileObjectThread - orig = getattr(sys, name) - if not isinstance(orig, FileObjectThread): - patch_item(sys, name, FileObjectThread(orig)) - -@_ignores_DoNotPatch -def patch_sys(stdin=True, stdout=True, stderr=True): - """ - Patch sys.std[in,out,err] to use a cooperative IO via a - threadpool. - - This is relatively dangerous and can have unintended consequences - such as hanging the process or `misinterpreting control keys`_ - when :func:`input` and :func:`raw_input` are used. :func:`patch_all` - does *not* call this function by default. - - This method does nothing on Python 3. The Python 3 interpreter - wants to flush the TextIOWrapper objects that make up - stderr/stdout at shutdown time, but using a threadpool at that - time leads to a hang. - - .. _`misinterpreting control keys`: https://github.com/gevent/gevent/issues/274 - """ - # test__issue6.py demonstrates the hang if these lines are removed; - # strangely enough that test passes even without monkey-patching sys - if PY3: - items = None - else: - items = set([('stdin' if stdin else None), - ('stdout' if stdout else None), - ('stderr' if stderr else None)]) - items.discard(None) - items = list(items) - - if not items: - return - - from gevent import events - _notify_patch(events.GeventWillPatchModuleEvent('sys', None, sys, - items)) - - for item in items: - _patch_sys_std(item) - - _notify_patch(events.GeventDidPatchModuleEvent('sys', None, sys)) - -@_ignores_DoNotPatch -def patch_os(): - """ - Replace :func:`os.fork` with :func:`gevent.fork`, and, on POSIX, - :func:`os.waitpid` with :func:`gevent.os.waitpid` (if the - environment variable ``GEVENT_NOWAITPID`` is not defined). Does - nothing if fork is not available. - - .. caution:: This method must be used with :func:`patch_signal` to have proper `SIGCHLD` - handling and thus correct results from ``waitpid``. - :func:`patch_all` calls both by default. - - .. caution:: For `SIGCHLD` handling to work correctly, the event loop must run. - The easiest way to help ensure this is to use :func:`patch_all`. - """ - _patch_module('os') - - -@_ignores_DoNotPatch -def patch_queue(): - """ - On Python 3.7 and above, replace :class:`queue.SimpleQueue` (implemented - in C) with its Python counterpart. - - .. versionadded:: 1.3.5 - """ - - import gevent.queue - if 'SimpleQueue' in gevent.queue.__all__: - _patch_module('queue', items=['SimpleQueue']) - - -@_ignores_DoNotPatch -def patch_time(): - """ - Replace :func:`time.sleep` with :func:`gevent.sleep`. - """ - _patch_module('time') - - -def _patch_existing_locks(threading): - if len(list(threading.enumerate())) != 1: - return - try: - tid = threading.get_ident() - except AttributeError: - tid = threading._get_ident() - rlock_type = type(threading.RLock()) - try: - import importlib._bootstrap - except ImportError: - class _ModuleLock(object): - pass - else: - _ModuleLock = importlib._bootstrap._ModuleLock # python 2 pylint: disable=no-member - # It might be possible to walk up all the existing stack frames to find - # locked objects...at least if they use `with`. To be sure, we look at every object - # Since we're supposed to be done very early in the process, there shouldn't be - # too many. - - # By definition there's only one thread running, so the various - # owner attributes were the old (native) thread id. Make it our - # current greenlet id so that when it wants to unlock and compare - # self.__owner with _get_ident(), they match. - gc = __import__('gc') - for o in gc.get_objects(): - if isinstance(o, rlock_type): - if hasattr(o, '_owner'): # Py3 - if o._owner is not None: - o._owner = tid - else: - if o._RLock__owner is not None: - o._RLock__owner = tid - elif isinstance(o, _ModuleLock): - if o.owner is not None: - o.owner = tid - -@_ignores_DoNotPatch -def patch_thread(threading=True, _threading_local=True, Event=True, logging=True, - existing_locks=True, - _warnings=None): - """ - patch_thread(threading=True, _threading_local=True, Event=True, logging=True, existing_locks=True) -> None - - Replace the standard :mod:`thread` module to make it greenlet-based. - - :keyword bool threading: When True (the default), - also patch :mod:`threading`. - :keyword bool _threading_local: When True (the default), - also patch :class:`_threading_local.local`. - :keyword bool logging: When True (the default), also patch locks - taken if the logging module has been configured. - - :keyword bool existing_locks: When True (the default), and the - process is still single threaded, make sure that any - :class:`threading.RLock` (and, under Python 3, :class:`importlib._bootstrap._ModuleLock`) - instances that are currently locked can be properly unlocked. - - .. caution:: - Monkey-patching :mod:`thread` and using - :class:`multiprocessing.Queue` or - :class:`concurrent.futures.ProcessPoolExecutor` (which uses a - ``Queue``) will hang the process. - - .. versionchanged:: 1.1b1 - Add *logging* and *existing_locks* params. - .. versionchanged:: 1.3a2 - ``Event`` defaults to True. - """ - # XXX: Simplify - # pylint:disable=too-many-branches,too-many-locals,too-many-statements - - # Description of the hang: - # There is an incompatibility with patching 'thread' and the 'multiprocessing' module: - # The problem is that multiprocessing.queues.Queue uses a half-duplex multiprocessing.Pipe, - # which is implemented with os.pipe() and _multiprocessing.Connection. os.pipe isn't patched - # by gevent, as it returns just a fileno. _multiprocessing.Connection is an internal implementation - # class implemented in C, which exposes a 'poll(timeout)' method; under the covers, this issues a - # (blocking) select() call: hence the need for a real thread. Except for that method, we could - # almost replace Connection with gevent.fileobject.SocketAdapter, plus a trivial - # patch to os.pipe (below). Sigh, so close. (With a little work, we could replicate that method) - - # import os - # import fcntl - # os_pipe = os.pipe - # def _pipe(): - # r, w = os_pipe() - # fcntl.fcntl(r, fcntl.F_SETFL, os.O_NONBLOCK) - # fcntl.fcntl(w, fcntl.F_SETFL, os.O_NONBLOCK) - # return r, w - # os.pipe = _pipe - - # The 'threading' module copies some attributes from the - # thread module the first time it is imported. If we patch 'thread' - # before that happens, then we store the wrong values in 'saved', - # So if we're going to patch threading, we either need to import it - # before we patch thread, or manually clean up the attributes that - # are in trouble. The latter is tricky because of the different names - # on different versions. - if threading: - threading_mod = __import__('threading') - # Capture the *real* current thread object before - # we start returning DummyThread objects, for comparison - # to the main thread. - orig_current_thread = threading_mod.current_thread() - else: - threading_mod = None - gevent_threading_mod = None - orig_current_thread = None - - gevent_thread_mod, thread_mod = _patch_module('thread', - _warnings=_warnings, _notify_did_subscribers=False) - - if threading: - gevent_threading_mod, _ = _patch_module('threading', - _warnings=_warnings, _notify_did_subscribers=False) - - if Event: - from gevent.event import Event - patch_item(threading_mod, 'Event', Event) - # Python 2 had `Event` as a function returning - # the private class `_Event`. Some code may be relying - # on that. - if hasattr(threading_mod, '_Event'): - patch_item(threading_mod, '_Event', Event) - - if existing_locks: - _patch_existing_locks(threading_mod) - - if logging and 'logging' in sys.modules: - logging = __import__('logging') - patch_item(logging, '_lock', threading_mod.RLock()) - for wr in logging._handlerList: - # In py26, these are actual handlers, not weakrefs - handler = wr() if callable(wr) else wr - if handler is None: - continue - if not hasattr(handler, 'lock'): - raise TypeError("Unknown/unsupported handler %r" % handler) - handler.lock = threading_mod.RLock() - - if _threading_local: - _threading_local = __import__('_threading_local') - from gevent.local import local - patch_item(_threading_local, 'local', local) - - def make_join_func(thread, thread_greenlet): - from gevent.hub import sleep - from time import time - - def join(timeout=None): - end = None - if threading_mod.current_thread() is thread: - raise RuntimeError("Cannot join current thread") - if thread_greenlet is not None and thread_greenlet.dead: - return - if not thread.is_alive(): - return - - if timeout: - end = time() + timeout - - while thread.is_alive(): - if end is not None and time() > end: - return - sleep(0.01) - return join - - if threading: - from gevent.threading import main_native_thread - - for thread in threading_mod._active.values(): - if thread == main_native_thread(): - continue - thread.join = make_join_func(thread, None) - - if sys.version_info[:2] >= (3, 4): - - # Issue 18808 changes the nature of Thread.join() to use - # locks. This means that a greenlet spawned in the main thread - # (which is already running) cannot wait for the main thread---it - # hangs forever. We patch around this if possible. See also - # gevent.threading. - greenlet = __import__('greenlet') - - if orig_current_thread == threading_mod.main_thread(): - main_thread = threading_mod.main_thread() - _greenlet = main_thread._greenlet = greenlet.getcurrent() - - main_thread.join = make_join_func(main_thread, _greenlet) - - # Patch up the ident of the main thread to match. This - # matters if threading was imported before monkey-patching - # thread - oldid = main_thread.ident - main_thread._ident = threading_mod.get_ident() - if oldid in threading_mod._active: - threading_mod._active[main_thread.ident] = threading_mod._active[oldid] - if oldid != main_thread.ident: - del threading_mod._active[oldid] - else: - _queue_warning("Monkey-patching not on the main thread; " - "threading.main_thread().join() will hang from a greenlet", - _warnings) - - from gevent import events - _notify_patch(events.GeventDidPatchModuleEvent('thread', gevent_thread_mod, thread_mod)) - _notify_patch(events.GeventDidPatchModuleEvent('threading', gevent_threading_mod, threading_mod)) - -@_ignores_DoNotPatch -def patch_socket(dns=True, aggressive=True): - """ - Replace the standard socket object with gevent's cooperative - sockets. - - :keyword bool dns: When true (the default), also patch address - resolution functions in :mod:`socket`. See :doc:`/dns` for details. - """ - from gevent import socket - # Note: although it seems like it's not strictly necessary to monkey patch 'create_connection', - # it's better to do it. If 'create_connection' was not monkey patched, but the rest of socket module - # was, create_connection would still use "green" getaddrinfo and "green" socket. - # However, because gevent.socket.socket.connect is a Python function, the exception raised by it causes - # _socket object to be referenced by the frame, thus causing the next invocation of bind(source_address) to fail. - if dns: - items = socket.__implements__ # pylint:disable=no-member - else: - items = set(socket.__implements__) - set(socket.__dns__) # pylint:disable=no-member - _patch_module('socket', items=items) - if aggressive: - if 'ssl' not in socket.__implements__: # pylint:disable=no-member - remove_item(socket, 'ssl') - -@_ignores_DoNotPatch -def patch_dns(): - """ - Replace :doc:`DNS functions </dns>` in :mod:`socket` with - cooperative versions. - - This is only useful if :func:`patch_socket` has been called and is - done automatically by that method if requested. - """ - from gevent import socket - _patch_module('socket', items=socket.__dns__) # pylint:disable=no-member - - -def _find_module_refs(to, excluding_names=()): - # Looks specifically for module-level references, - # i.e., 'from foo import Bar'. We define a module reference - # as a dict (subclass) that also has a __name__ attribute. - # This does not handle subclasses, but it does find them. - # Returns two sets. The first is modules (name, file) that were - # found. The second is subclasses that were found. - gc = __import__('gc') - direct_ref_modules = set() - subclass_modules = set() - - def report(mod): - return mod['__name__'], mod.get('__file__', '<unknown>') - - for r in gc.get_referrers(to): - if isinstance(r, dict) and '__name__' in r: - if r['__name__'] in excluding_names: - continue - - for v in r.values(): - if v is to: - direct_ref_modules.add(report(r)) - elif isinstance(r, type) and to in r.__bases__ and 'gevent.' not in r.__module__: - subclass_modules.add(r) - - return direct_ref_modules, subclass_modules - -@_ignores_DoNotPatch -def patch_ssl(_warnings=None, _first_time=True): - """ - patch_ssl() -> None - - Replace :class:`ssl.SSLSocket` object and socket wrapping functions in - :mod:`ssl` with cooperative versions. - - This is only useful if :func:`patch_socket` has been called. - """ - may_need_warning = ( - _first_time - and sys.version_info[:2] >= (3, 6) - and 'ssl' in sys.modules - and hasattr(sys.modules['ssl'], 'SSLContext')) - # Previously, we didn't warn on Python 2 if pkg_resources has been imported - # because that imports ssl and it's commonly used for namespace packages, - # which typically means we're still in some early part of the import cycle. - # However, with our new more discriminating check, that no longer seems to be a problem. - # Prior to 3.6, we don't have the RecursionError problem, and prior to 3.7 we don't have the - # SSLContext.sslsocket_class/SSLContext.sslobject_class problem. - - gevent_mod, _ = _patch_module('ssl', _warnings=_warnings) - if may_need_warning: - direct_ref_modules, subclass_modules = _find_module_refs( - gevent_mod.orig_SSLContext, - excluding_names=('ssl', 'gevent.ssl', 'gevent._ssl3', 'gevent._sslgte279')) - if direct_ref_modules or subclass_modules: - # Normally you don't want to have dynamic warning strings, because - # the cache in the warning module is based on the string. But we - # specifically only do this the first time we patch ourself, so it's - # ok. - direct_ref_mod_str = subclass_str = '' - if direct_ref_modules: - direct_ref_mod_str = 'Modules that had direct imports (NOT patched): %s. ' % ([ - "%s (%s)" % (name, fname) - for name, fname in direct_ref_modules - ]) - if subclass_modules: - subclass_str = 'Subclasses (NOT patched): %s. ' % ([ - str(t) for t in subclass_modules - ]) - _queue_warning( - 'Monkey-patching ssl after ssl has already been imported ' - 'may lead to errors, including RecursionError on Python 3.6. ' - 'It may also silently lead to incorrect behaviour on Python 3.7. ' - 'Please monkey-patch earlier. ' - 'See https://github.com/gevent/gevent/issues/1016. ' - + direct_ref_mod_str + subclass_str, - _warnings) - - -@_ignores_DoNotPatch -def patch_select(aggressive=True): - """ - Replace :func:`select.select` with :func:`gevent.select.select` - and :func:`select.poll` with :class:`gevent.select.poll` (where available). - - If ``aggressive`` is true (the default), also remove other - blocking functions from :mod:`select` and (on Python 3.4 and - above) :mod:`selectors`: - - - :func:`select.epoll` - - :func:`select.kqueue` - - :func:`select.kevent` - - :func:`select.devpoll` (Python 3.5+) - - :class:`selectors.EpollSelector` - - :class:`selectors.KqueueSelector` - - :class:`selectors.DevpollSelector` (Python 3.5+) - """ - - source_mod, target_mod = _patch_module('select', _notify_did_subscribers=False) - if aggressive: - select = target_mod - # since these are blocking we're removing them here. This makes some other - # modules (e.g. asyncore) non-blocking, as they use select that we provide - # when none of these are available. - remove_item(select, 'epoll') - remove_item(select, 'kqueue') - remove_item(select, 'kevent') - remove_item(select, 'devpoll') - - if sys.version_info[:2] >= (3, 4): - # Python 3 wants to use `select.select` as a member function, - # leading to this error in selectors.py (because gevent.select.select is - # not a builtin and doesn't get the magic auto-static that they do) - # r, w, _ = self._select(self._readers, self._writers, [], timeout) - # TypeError: select() takes from 3 to 4 positional arguments but 5 were given - # Note that this obviously only happens if selectors was imported after we had patched - # select; but there is a code path that leads to it being imported first (but now we've - # patched select---so we can't compare them identically) - select = target_mod # Should be gevent-patched now - orig_select_select = get_original('select', 'select') - assert select.select is not orig_select_select - selectors = __import__('selectors') - if selectors.SelectSelector._select in (select.select, orig_select_select): - def _select(self, *args, **kwargs): # pylint:disable=unused-argument - return select.select(*args, **kwargs) - selectors.SelectSelector._select = _select - _select._gevent_monkey = True - - # Python 3.7 refactors the poll-like selectors to use a common - # base class and capture a reference to select.poll, etc, at - # import time. selectors tends to get imported early - # (importing 'platform' does it: platform -> subprocess -> selectors), - # so we need to clean that up. - if hasattr(selectors, 'PollSelector') and hasattr(selectors.PollSelector, '_selector_cls'): - selectors.PollSelector._selector_cls = select.poll - - if aggressive: - # If `selectors` had already been imported before we removed - # select.epoll|kqueue|devpoll, these may have been defined in terms - # of those functions. They'll fail at runtime. - remove_item(selectors, 'EpollSelector') - remove_item(selectors, 'KqueueSelector') - remove_item(selectors, 'DevpollSelector') - selectors.DefaultSelector = selectors.SelectSelector - - from gevent import events - _notify_patch(events.GeventDidPatchModuleEvent('select', source_mod, target_mod)) - -@_ignores_DoNotPatch -def patch_subprocess(): - """ - Replace :func:`subprocess.call`, :func:`subprocess.check_call`, - :func:`subprocess.check_output` and :class:`subprocess.Popen` with - :mod:`cooperative versions <gevent.subprocess>`. - - .. note:: - On Windows under Python 3, the API support may not completely match - the standard library. - - """ - _patch_module('subprocess') - -@_ignores_DoNotPatch -def patch_builtins(): - """ - Make the builtin :func:`__import__` function `greenlet safe`_ under Python 2. - - .. note:: - This does nothing under Python 3 as it is not necessary. Python 3 features - improved import locks that are per-module, not global. - - .. _greenlet safe: https://github.com/gevent/gevent/issues/108 - - """ - if sys.version_info[:2] < (3, 3): - _patch_module('builtins') - -@_ignores_DoNotPatch -def patch_signal(): - """ - Make the :func:`signal.signal` function work with a :func:`monkey-patched os <patch_os>`. - - .. caution:: This method must be used with :func:`patch_os` to have proper ``SIGCHLD`` - handling. :func:`patch_all` calls both by default. - - .. caution:: For proper ``SIGCHLD`` handling, you must yield to the event loop. - Using :func:`patch_all` is the easiest way to ensure this. - - .. seealso:: :mod:`gevent.signal` - """ - _patch_module("signal") - - -def _check_repatching(**module_settings): - _warnings = [] - key = '_gevent_saved_patch_all' - del module_settings['kwargs'] - if saved.get(key, module_settings) != module_settings: - _queue_warning("Patching more than once will result in the union of all True" - " parameters being patched", - _warnings) - - first_time = key not in saved - saved[key] = module_settings - return _warnings, first_time, module_settings - - -def _subscribe_signal_os(will_patch_all): - if will_patch_all.will_patch_module('signal') and not will_patch_all.will_patch_module('os'): - warnings = will_patch_all._warnings # Internal - _queue_warning('Patching signal but not os will result in SIGCHLD handlers' - ' installed after this not being called and os.waitpid may not' - ' function correctly if gevent.subprocess is used. This may raise an' - ' error in the future.', - warnings) - -def patch_all(socket=True, dns=True, time=True, select=True, thread=True, os=True, ssl=True, - httplib=False, # Deprecated, to be removed. - subprocess=True, sys=False, aggressive=True, Event=True, - builtins=True, signal=True, - queue=True, - **kwargs): - """ - Do all of the default monkey patching (calls every other applicable - function in this module). - - :return: A true value if patching all modules wasn't cancelled, a false - value if it was. - - .. versionchanged:: 1.1 - Issue a :mod:`warning <warnings>` if this function is called multiple times - with different arguments. The second and subsequent calls will only add more - patches, they can never remove existing patches by setting an argument to ``False``. - .. versionchanged:: 1.1 - Issue a :mod:`warning <warnings>` if this function is called with ``os=False`` - and ``signal=True``. This will cause SIGCHLD handlers to not be called. This may - be an error in the future. - .. versionchanged:: 1.3a2 - ``Event`` defaults to True. - .. versionchanged:: 1.3b1 - Defined the return values. - .. versionchanged:: 1.3b1 - Add ``**kwargs`` for the benefit of event subscribers. CAUTION: gevent may add - and interpret additional arguments in the future, so it is suggested to use prefixes - for kwarg values to be interpreted by plugins, for example, `patch_all(mylib_futures=True)`. - .. versionchanged:: 1.3.5 - Add *queue*, defaulting to True, for Python 3.7. - """ - # pylint:disable=too-many-locals,too-many-branches - - # Check to see if they're changing the patched list - _warnings, first_time, modules_to_patch = _check_repatching(**locals()) - if not _warnings and not first_time: - # Nothing to do, identical args to what we just - # did - return - - from gevent import events - try: - _notify_patch(events.GeventWillPatchAllEvent(modules_to_patch, kwargs), _warnings) - except events.DoNotPatch: - return False - - # order is important - if os: - patch_os() - if time: - patch_time() - if thread: - patch_thread(Event=Event, _warnings=_warnings) - # sys must be patched after thread. in other cases threading._shutdown will be - # initiated to _MainThread with real thread ident - if sys: - patch_sys() - if socket: - patch_socket(dns=dns, aggressive=aggressive) - if select: - patch_select(aggressive=aggressive) - if ssl: - patch_ssl(_warnings=_warnings, _first_time=first_time) - if httplib: - raise ValueError('gevent.httplib is no longer provided, httplib must be False') - if subprocess: - patch_subprocess() - if builtins: - patch_builtins() - if signal: - patch_signal() - if queue: - patch_queue() - - _notify_patch(events.GeventDidPatchBuiltinModulesEvent(modules_to_patch, kwargs), _warnings) - _notify_patch(events.GeventDidPatchAllEvent(modules_to_patch, kwargs), _warnings) - - _process_warnings(_warnings) - return True - - -def main(): - args = {} - argv = sys.argv[1:] - verbose = False - script_help, patch_all_args, modules = _get_script_help() - while argv and argv[0].startswith('--'): - option = argv[0][2:] - if option == 'verbose': - verbose = True - elif option.startswith('no-') and option.replace('no-', '') in patch_all_args: - args[option[3:]] = False - elif option in patch_all_args: - args[option] = True - if option in modules: - for module in modules: - args.setdefault(module, False) - else: - sys.exit(script_help + '\n\n' + 'Cannot patch %r' % option) - del argv[0] - # TODO: break on -- - if verbose: - import pprint - import os - print('gevent.monkey.patch_all(%s)' % ', '.join('%s=%s' % item for item in args.items())) - print('sys.version=%s' % (sys.version.strip().replace('\n', ' '), )) - print('sys.path=%s' % pprint.pformat(sys.path)) - print('sys.modules=%s' % pprint.pformat(sorted(sys.modules.keys()))) - print('cwd=%s' % os.getcwd()) - - patch_all(**args) - if argv: - sys.argv = argv - import runpy - # Use runpy.run_path to closely (exactly) match what the - # interpreter does given 'python <path>'. This includes allowing - # passing .pyc/.pyo files and packages with a __main__ and - # potentially even zip files. Previously we used exec, which only - # worked if we directly read a python source file. - runpy.run_path(sys.argv[0], - run_name='__main__') - else: - print(script_help) - - -def _get_script_help(): - # pylint:disable=deprecated-method - import inspect - try: - getter = inspect.getfullargspec # deprecated in 3.5, un-deprecated in 3.6 - except AttributeError: - getter = inspect.getargspec - patch_all_args = getter(patch_all)[0] - modules = [x for x in patch_all_args if 'patch_' + x in globals()] - script_help = """gevent.monkey - monkey patch the standard modules to use gevent. - -USAGE: ``python -m gevent.monkey [MONKEY OPTIONS] script [SCRIPT OPTIONS]`` - -If no OPTIONS present, monkey patches all the modules it can patch. -You can exclude a module with --no-module, e.g. --no-thread. You can -specify a module to patch with --module, e.g. --socket. In the latter -case only the modules specified on the command line will be patched. - -.. versionchanged:: 1.3b1 - The *script* argument can now be any argument that can be passed to `runpy.run_path`, - just like the interpreter itself does, for example a package directory containing ``__main__.py``. - Previously it had to be the path to - a .py source file. - -MONKEY OPTIONS: ``--verbose %s``""" % ', '.join('--[no-]%s' % m for m in modules) - return script_help, patch_all_args, modules - -main.__doc__ = _get_script_help()[0] - -if __name__ == '__main__': - main() diff --git a/python/gevent/os.py b/python/gevent/os.py deleted file mode 100644 index 3980f32..0000000 --- a/python/gevent/os.py +++ /dev/null @@ -1,510 +0,0 @@ -""" -Low-level operating system functions from :mod:`os`. - -Cooperative I/O -=============== - -This module provides cooperative versions of :func:`os.read` and -:func:`os.write`. These functions are *not* monkey-patched; you -must explicitly call them or monkey patch them yourself. - -POSIX functions ---------------- - -On POSIX, non-blocking IO is available. - -- :func:`nb_read` -- :func:`nb_write` -- :func:`make_nonblocking` - -All Platforms -------------- - -On non-POSIX platforms (e.g., Windows), non-blocking IO is not -available. On those platforms (and on POSIX), cooperative IO can -be done with the threadpool. - -- :func:`tp_read` -- :func:`tp_write` - -Child Processes -=============== - -The functions :func:`fork` and (on POSIX) :func:`forkpty` and :func:`waitpid` can be used -to manage child processes. - -.. warning:: - - Forking a process that uses greenlets does not eliminate all non-running - greenlets. Any that were scheduled in the hub of the forking thread in the parent - remain scheduled in the child; compare this to how normal threads operate. (This behaviour - may change is a subsequent major release.) -""" - -from __future__ import absolute_import - -import os -import sys -from gevent.hub import _get_hub_noargs as get_hub -from gevent.hub import reinit -from gevent._config import config -from gevent._compat import PY3 -from gevent._util import copy_globals -import errno - -EAGAIN = getattr(errno, 'EAGAIN', 11) - -try: - import fcntl -except ImportError: - fcntl = None - -__implements__ = ['fork'] -__extensions__ = ['tp_read', 'tp_write'] - -_read = os.read -_write = os.write - - -ignored_errors = [EAGAIN, errno.EINTR] - - -if fcntl: - - __extensions__ += ['make_nonblocking', 'nb_read', 'nb_write'] - - def make_nonblocking(fd): - """Put the file descriptor *fd* into non-blocking mode if - possible. - - :return: A boolean value that evaluates to True if successful. - """ - flags = fcntl.fcntl(fd, fcntl.F_GETFL, 0) - if not bool(flags & os.O_NONBLOCK): - fcntl.fcntl(fd, fcntl.F_SETFL, flags | os.O_NONBLOCK) - return True - - def nb_read(fd, n): - """ - Read up to *n* bytes from file descriptor *fd*. Return a - byte string containing the bytes read, which may be shorter than - *n*. If end-of-file is reached, an empty string is returned. - - The descriptor must be in non-blocking mode. - """ - hub = None - event = None - try: - while 1: - try: - result = _read(fd, n) - return result - except OSError as e: - if e.errno not in ignored_errors: - raise - if not PY3: - sys.exc_clear() - if hub is None: - hub = get_hub() - event = hub.loop.io(fd, 1) - hub.wait(event) - finally: - if event is not None: - event.close() - event = None - hub = None - - - def nb_write(fd, buf): - """ - Write some number of bytes from buffer *buf* to file - descriptor *fd*. Return the number of bytes written, which may - be less than the length of *buf*. - - The file descriptor must be in non-blocking mode. - """ - hub = None - event = None - try: - while 1: - try: - result = _write(fd, buf) - return result - except OSError as e: - if e.errno not in ignored_errors: - raise - if not PY3: - sys.exc_clear() - if hub is None: - hub = get_hub() - event = hub.loop.io(fd, 2) - hub.wait(event) - finally: - if event is not None: - event.close() - event = None - hub = None - - -def tp_read(fd, n): - """Read up to *n* bytes from file descriptor *fd*. Return a string - containing the bytes read. If end-of-file is reached, an empty string - is returned. - - Reading is done using the threadpool. - """ - return get_hub().threadpool.apply(_read, (fd, n)) - - -def tp_write(fd, buf): - """Write bytes from buffer *buf* to file descriptor *fd*. Return the - number of bytes written. - - Writing is done using the threadpool. - """ - return get_hub().threadpool.apply(_write, (fd, buf)) - - -if hasattr(os, 'fork'): - # pylint:disable=function-redefined,redefined-outer-name - - _raw_fork = os.fork - - def fork_gevent(): - """ - Forks the process using :func:`os.fork` and prepares the - child process to continue using gevent before returning. - - .. note:: - - The PID returned by this function may not be waitable with - either the original :func:`os.waitpid` or this module's - :func:`waitpid` and it may not generate SIGCHLD signals if - libev child watchers are or ever have been in use. For - example, the :mod:`gevent.subprocess` module uses libev - child watchers (which parts of gevent use libev child - watchers is subject to change at any time). Most - applications should use :func:`fork_and_watch`, which is - monkey-patched as the default replacement for - :func:`os.fork` and implements the ``fork`` function of - this module by default, unless the environment variable - ``GEVENT_NOWAITPID`` is defined before this module is - imported. - - .. versionadded:: 1.1b2 - """ - result = _raw_fork() - if not result: - reinit() - return result - - def fork(): - """ - A wrapper for :func:`fork_gevent` for non-POSIX platforms. - """ - return fork_gevent() - - if hasattr(os, 'forkpty'): - _raw_forkpty = os.forkpty - - def forkpty_gevent(): - """ - Forks the process using :func:`os.forkpty` and prepares the - child process to continue using gevent before returning. - - Returns a tuple (pid, master_fd). The `master_fd` is *not* put into - non-blocking mode. - - Availability: Some Unix systems. - - .. seealso:: This function has the same limitations as :func:`fork_gevent`. - - .. versionadded:: 1.1b5 - """ - pid, master_fd = _raw_forkpty() - if not pid: - reinit() - return pid, master_fd - - forkpty = forkpty_gevent - - __implements__.append('forkpty') - __extensions__.append("forkpty_gevent") - - if hasattr(os, 'WNOWAIT') or hasattr(os, 'WNOHANG'): - # We can only do this on POSIX - import time - - _waitpid = os.waitpid - _WNOHANG = os.WNOHANG - - # replaced by the signal module. - _on_child_hook = lambda: None - - # {pid -> watcher or tuple(pid, rstatus, timestamp)} - _watched_children = {} - - def _on_child(watcher, callback): - # XXX: Could handle tracing here by not stopping - # until the pid is terminated - watcher.stop() - try: - _watched_children[watcher.pid] = (watcher.pid, watcher.rstatus, time.time()) - if callback: - callback(watcher) - # dispatch an "event"; used by gevent.signal.signal - _on_child_hook() - # now is as good a time as any to reap children - _reap_children() - finally: - watcher.close() - - def _reap_children(timeout=60): - # Remove all the dead children that haven't been waited on - # for the *timeout* seconds. - # Some platforms queue delivery of SIGCHLD for all children that die; - # in that case, a well-behaved application should call waitpid() for each - # signal. - # Some platforms (linux) only guarantee one delivery if multiple children - # die. On that platform, the well-behave application calls waitpid() in a loop - # until it gets back -1, indicating no more dead children need to be waited for. - # In either case, waitpid should be called the same number of times as dead children, - # thus removing all the watchers when a SIGCHLD arrives. The (generous) timeout - # is to work with applications that neglect to call waitpid and prevent "unlimited" - # growth. - # Note that we don't watch for the case of pid wraparound. That is, we fork a new - # child with the same pid as an existing watcher, but the child is already dead, - # just not waited on yet. - now = time.time() - oldest_allowed = now - timeout - dead = [pid for pid, val - in _watched_children.items() - if isinstance(val, tuple) and val[2] < oldest_allowed] - for pid in dead: - del _watched_children[pid] - - def waitpid(pid, options): - """ - Wait for a child process to finish. - - If the child process was spawned using - :func:`fork_and_watch`, then this function behaves - cooperatively. If not, it *may* have race conditions; see - :func:`fork_gevent` for more information. - - The arguments are as for the underlying - :func:`os.waitpid`. Some combinations of *options* may not - be supported cooperatively (as of 1.1 that includes - WUNTRACED). Using a *pid* of 0 to request waiting on only processes - from the current process group is not cooperative. - - Availability: POSIX. - - .. versionadded:: 1.1b1 - .. versionchanged:: 1.2a1 - More cases are handled in a cooperative manner. - """ - # pylint: disable=too-many-return-statements - # XXX Does not handle tracing children - - # So long as libev's loop doesn't run, it's OK to add - # child watchers. The SIGCHLD handler only feeds events - # for the next iteration of the loop to handle. (And the - # signal handler itself is only called from the next loop - # iteration.) - - if pid <= 0: - # magic functions for multiple children. - if pid == -1: - # Any child. If we have one that we're watching and that finished, - # we will use that one. Otherwise, let the OS take care of it. - for k, v in _watched_children.items(): - if isinstance(v, tuple): - pid = k - break - if pid <= 0: - # We didn't have one that was ready. If there are - # no funky options set, and the pid was -1 - # (meaning any process, not 0, which means process - # group--- libev doesn't know about process - # groups) then we can use a child watcher of pid 0; otherwise, - # pass through to the OS. - if pid == -1 and options == 0: - hub = get_hub() - with hub.loop.child(0, False) as watcher: - hub.wait(watcher) - return watcher.rpid, watcher.rstatus - # There were funky options/pid, so we must go to the OS. - return _waitpid(pid, options) - - if pid in _watched_children: - # yes, we're watching it - - # Note that the remainder of this code must be careful to NOT - # yield to the event loop except at well known times, or - # we have a race condition between the _on_child callback and the - # code here that could lead to a process to hang. - if options & _WNOHANG or isinstance(_watched_children[pid], tuple): - # We're either asked not to block, or it already finished, in which - # case blocking doesn't matter - result = _watched_children[pid] - if isinstance(result, tuple): - # it finished. libev child watchers - # are one-shot - del _watched_children[pid] - return result[:2] - # it's not finished - return (0, 0) - - # Ok, we need to "block". Do so via a watcher so that we're - # cooperative. We know it's our child, etc, so this should work. - watcher = _watched_children[pid] - # We can't start a watcher that's already started, - # so we can't reuse the existing watcher. Notice that the - # old watcher must not have fired already, or during this time, but - # only after we successfully `start()` the watcher. So this must - # not yield to the event loop. - with watcher.loop.child(pid, False) as new_watcher: - get_hub().wait(new_watcher) - # Ok, so now the new watcher is done. That means - # the old watcher's callback (_on_child) should - # have fired, potentially taking this child out of - # _watched_children (but that could depend on how - # many callbacks there were to run, so use the - # watcher object directly; libev sets all the - # watchers at the same time). - return watcher.rpid, watcher.rstatus - - # we're not watching it and it may not even be our child, - # so we must go to the OS to be sure to get the right semantics (exception) - # XXX - # libuv has a race condition because the signal - # handler is a Python function, so the InterruptedError - # is raised before the signal handler runs and calls the - # child watcher - # we're not watching it - return _waitpid(pid, options) - - def fork_and_watch(callback=None, loop=None, ref=False, fork=fork_gevent): - """ - Fork a child process and start a child watcher for it in the parent process. - - This call cooperates with :func:`waitpid` to enable cooperatively waiting - for children to finish. When monkey-patching, these functions are patched in as - :func:`os.fork` and :func:`os.waitpid`, respectively. - - In the child process, this function calls :func:`gevent.hub.reinit` before returning. - - Availability: POSIX. - - :keyword callback: If given, a callable that will be called with the child watcher - when the child finishes. - :keyword loop: The loop to start the watcher in. Defaults to the - loop of the current hub. - :keyword fork: The fork function. Defaults to :func:`the one defined in this - module <gevent.os.fork_gevent>` (which automatically calls :func:`gevent.hub.reinit`). - Pass the builtin :func:`os.fork` function if you do not need to - initialize gevent in the child process. - - .. versionadded:: 1.1b1 - .. seealso:: - :func:`gevent.monkey.get_original` To access the builtin :func:`os.fork`. - """ - pid = fork() - if pid: - # parent - loop = loop or get_hub().loop - watcher = loop.child(pid, ref=ref) - _watched_children[pid] = watcher - watcher.start(_on_child, watcher, callback) - return pid - - __extensions__.append('fork_and_watch') - __extensions__.append('fork_gevent') - - if 'forkpty' in __implements__: - def forkpty_and_watch(callback=None, loop=None, ref=False, forkpty=forkpty_gevent): - """ - Like :func:`fork_and_watch`, except using :func:`forkpty_gevent`. - - Availability: Some Unix systems. - - .. versionadded:: 1.1b5 - """ - result = [] - - def _fork(): - pid_and_fd = forkpty() - result.append(pid_and_fd) - return pid_and_fd[0] - fork_and_watch(callback, loop, ref, _fork) - return result[0] - - __extensions__.append('forkpty_and_watch') - - # Watch children by default - if not config.disable_watch_children: - # Broken out into separate functions instead of simple name aliases - # for documentation purposes. - def fork(*args, **kwargs): - """ - Forks a child process and starts a child watcher for it in the - parent process so that ``waitpid`` and SIGCHLD work as expected. - - This implementation of ``fork`` is a wrapper for :func:`fork_and_watch` - when the environment variable ``GEVENT_NOWAITPID`` is *not* defined. - This is the default and should be used by most applications. - - .. versionchanged:: 1.1b2 - """ - # take any args to match fork_and_watch - return fork_and_watch(*args, **kwargs) - - if 'forkpty' in __implements__: - def forkpty(*args, **kwargs): - """ - Like :func:`fork`, but using :func:`forkpty_gevent`. - - This implementation of ``forkpty`` is a wrapper for :func:`forkpty_and_watch` - when the environment variable ``GEVENT_NOWAITPID`` is *not* defined. - This is the default and should be used by most applications. - - .. versionadded:: 1.1b5 - """ - # take any args to match fork_and_watch - return forkpty_and_watch(*args, **kwargs) - __implements__.append("waitpid") - else: - def fork(): - """ - Forks a child process, initializes gevent in the child, - but *does not* prepare the parent to wait for the child or receive SIGCHLD. - - This implementation of ``fork`` is a wrapper for :func:`fork_gevent` - when the environment variable ``GEVENT_NOWAITPID`` *is* defined. - This is not recommended for most applications. - """ - return fork_gevent() - - if 'forkpty' in __implements__: - def forkpty(): - """ - Like :func:`fork`, but using :func:`os.forkpty` - - This implementation of ``forkpty`` is a wrapper for :func:`forkpty_gevent` - when the environment variable ``GEVENT_NOWAITPID`` *is* defined. - This is not recommended for most applications. - - .. versionadded:: 1.1b5 - """ - return forkpty_gevent() - __extensions__.append("waitpid") - -else: - __implements__.remove('fork') - -__imports__ = copy_globals(os, globals(), - names_to_ignore=__implements__ + __extensions__, - dunder_names_to_keep=()) - -__all__ = list(set(__implements__ + __extensions__)) diff --git a/python/gevent/pool.py b/python/gevent/pool.py deleted file mode 100644 index 48e6a7a..0000000 --- a/python/gevent/pool.py +++ /dev/null @@ -1,667 +0,0 @@ -# Copyright (c) 2009-2011 Denis Bilenko. See LICENSE for details. -""" -Managing greenlets in a group. - -The :class:`Group` class in this module abstracts a group of running -greenlets. When a greenlet dies, it's automatically removed from the -group. All running greenlets in a group can be waited on with -:meth:`Group.join`, or all running greenlets can be killed with -:meth:`Group.kill`. - -The :class:`Pool` class, which is a subclass of :class:`Group`, -provides a way to limit concurrency: its :meth:`spawn <Pool.spawn>` -method blocks if the number of greenlets in the pool has already -reached the limit, until there is a free slot. -""" -from __future__ import print_function, absolute_import, division - - -from gevent.hub import GreenletExit, getcurrent, kill as _kill -from gevent.greenlet import joinall, Greenlet -from gevent.queue import Full as QueueFull -from gevent.timeout import Timeout -from gevent.event import Event -from gevent.lock import Semaphore, DummySemaphore - -from gevent._compat import izip -from gevent._imap import IMap -from gevent._imap import IMapUnordered - -__all__ = [ - 'Group', - 'Pool', - 'PoolFull', -] - - - - -class GroupMappingMixin(object): - # Internal, non-public API class. - # Provides mixin methods for implementing mapping pools. Subclasses must define: - - def spawn(self, func, *args, **kwargs): - """ - A function that runs *func* with *args* and *kwargs*, potentially - asynchronously. Return a value with a ``get`` method that blocks - until the results of func are available, and a ``rawlink`` method - that calls a callback when the results are available. - - If this object has an upper bound on how many asyncronously executing - tasks can exist, this method may block until a slot becomes available. - """ - raise NotImplementedError() - - def _apply_immediately(self): - """ - should the function passed to apply be called immediately, - synchronously? - """ - raise NotImplementedError() - - def _apply_async_use_greenlet(self): - """ - Should apply_async directly call Greenlet.spawn(), bypassing - `spawn`? - - Return true when self.spawn would block. - """ - raise NotImplementedError() - - def _apply_async_cb_spawn(self, callback, result): - """ - Run the given callback function, possibly - asynchronously, possibly synchronously. - """ - raise NotImplementedError() - - def apply_cb(self, func, args=None, kwds=None, callback=None): - """ - :meth:`apply` the given *func(\\*args, \\*\\*kwds)*, and, if a *callback* is given, run it with the - results of *func* (unless an exception was raised.) - - The *callback* may be called synchronously or asynchronously. If called - asynchronously, it will not be tracked by this group. (:class:`Group` and :class:`Pool` - call it asynchronously in a new greenlet; :class:`~gevent.threadpool.ThreadPool` calls - it synchronously in the current greenlet.) - """ - result = self.apply(func, args, kwds) - if callback is not None: - self._apply_async_cb_spawn(callback, result) - return result - - def apply_async(self, func, args=None, kwds=None, callback=None): - """ - A variant of the :meth:`apply` method which returns a :class:`~.Greenlet` object. - - When the returned greenlet gets to run, it *will* call :meth:`apply`, - passing in *func*, *args* and *kwds*. - - If *callback* is specified, then it should be a callable which - accepts a single argument. When the result becomes ready - callback is applied to it (unless the call failed). - - This method will never block, even if this group is full (that is, - even if :meth:`spawn` would block, this method will not). - - .. caution:: The returned greenlet may or may not be tracked - as part of this group, so :meth:`joining <join>` this group is - not a reliable way to wait for the results to be available or - for the returned greenlet to run; instead, join the returned - greenlet. - - .. tip:: Because :class:`~.ThreadPool` objects do not track greenlets, the returned - greenlet will never be a part of it. To reduce overhead and improve performance, - :class:`Group` and :class:`Pool` may choose to track the returned - greenlet. These are implementation details that may change. - """ - if args is None: - args = () - if kwds is None: - kwds = {} - if self._apply_async_use_greenlet(): - # cannot call self.spawn() directly because it will block - # XXX: This is always the case for ThreadPool, but for Group/Pool - # of greenlets, this is only the case when they are full...hence - # the weasely language about "may or may not be tracked". Should we make - # Group/Pool always return true as well so it's never tracked by any - # implementation? That would simplify that logic, but could increase - # the total number of greenlets in the system and add a layer of - # overhead for the simple cases when the pool isn't full. - return Greenlet.spawn(self.apply_cb, func, args, kwds, callback) - - greenlet = self.spawn(func, *args, **kwds) - if callback is not None: - greenlet.link(pass_value(callback)) - return greenlet - - def apply(self, func, args=None, kwds=None): - """ - Rough quivalent of the :func:`apply()` builtin function blocking until - the result is ready and returning it. - - The ``func`` will *usually*, but not *always*, be run in a way - that allows the current greenlet to switch out (for example, - in a new greenlet or thread, depending on implementation). But - if the current greenlet or thread is already one that was - spawned by this pool, the pool may choose to immediately run - the `func` synchronously. - - Any exception ``func`` raises will be propagated to the caller of ``apply`` (that is, - this method will raise the exception that ``func`` raised). - """ - if args is None: - args = () - if kwds is None: - kwds = {} - if self._apply_immediately(): - return func(*args, **kwds) - return self.spawn(func, *args, **kwds).get() - - def __map(self, func, iterable): - return [g.get() for g in - [self.spawn(func, i) for i in iterable]] - - def map(self, func, iterable): - """Return a list made by applying the *func* to each element of - the iterable. - - .. seealso:: :meth:`imap` - """ - # We can't return until they're all done and in order. It - # wouldn't seem to much matter what order we wait on them in, - # so the simple, fast (50% faster than imap) solution would be: - - # return [g.get() for g in - # [self.spawn(func, i) for i in iterable]] - - # If the pool size is unlimited (or more than the len(iterable)), this - # is equivalent to imap (spawn() will never block, all of them run concurrently, - # we call get() in the order the iterable was given). - - # Now lets imagine the pool if is limited size. Suppose the - # func is time.sleep, our pool is limited to 3 threads, and - # our input is [10, 1, 10, 1, 1] We would start three threads, - # one to sleep for 10, one to sleep for 1, and the last to - # sleep for 10. We would block starting the fourth thread. At - # time 1, we would finish the second thread and start another - # one for time 1. At time 2, we would finish that one and - # start the last thread, and then begin executing get() on the first - # thread. - - # Because it's spawn that blocks, this is *also* equivalent to what - # imap would do. - - # The one remaining difference is that imap runs in its own - # greenlet, potentially changing the way the event loop runs. - # That's easy enough to do. - - g = Greenlet.spawn(self.__map, func, iterable) - return g.get() - - def map_cb(self, func, iterable, callback=None): - result = self.map(func, iterable) - if callback is not None: - callback(result) - return result - - def map_async(self, func, iterable, callback=None): - """ - A variant of the map() method which returns a Greenlet object that is executing - the map function. - - If callback is specified then it should be a callable which accepts a - single argument. - """ - return Greenlet.spawn(self.map_cb, func, iterable, callback) - - def __imap(self, cls, func, *iterables, **kwargs): - # Python 2 doesn't support the syntax that lets us mix varargs and - # a named kwarg, so we have to unpack manually - maxsize = kwargs.pop('maxsize', None) - if kwargs: - raise TypeError("Unsupported keyword arguments") - return cls.spawn(func, izip(*iterables), spawn=self.spawn, - _zipped=True, maxsize=maxsize) - - def imap(self, func, *iterables, **kwargs): - """ - imap(func, *iterables, maxsize=None) -> iterable - - An equivalent of :func:`itertools.imap`, operating in parallel. - The *func* is applied to each element yielded from each - iterable in *iterables* in turn, collecting the result. - - If this object has a bound on the number of active greenlets it can - contain (such as :class:`Pool`), then at most that number of tasks will operate - in parallel. - - :keyword int maxsize: If given and not-None, specifies the maximum number of - finished results that will be allowed to accumulate awaiting the reader; - more than that number of results will cause map function greenlets to begin - to block. This is most useful if there is a great disparity in the speed of - the mapping code and the consumer and the results consume a great deal of resources. - - .. note:: This is separate from any bound on the number of active parallel - tasks, though they may have some interaction (for example, limiting the - number of parallel tasks to the smallest bound). - - .. note:: Using a bound is slightly more computationally expensive than not using a bound. - - .. tip:: The :meth:`imap_unordered` method makes much better - use of this parameter. Some additional, unspecified, - number of objects may be required to be kept in memory - to maintain order by this function. - - :return: An iterable object. - - .. versionchanged:: 1.1b3 - Added the *maxsize* keyword parameter. - .. versionchanged:: 1.1a1 - Accept multiple *iterables* to iterate in parallel. - """ - return self.__imap(IMap, func, *iterables, **kwargs) - - def imap_unordered(self, func, *iterables, **kwargs): - """ - imap_unordered(func, *iterables, maxsize=None) -> iterable - - The same as :meth:`imap` except that the ordering of the results - from the returned iterator should be considered in arbitrary - order. - - This is lighter weight than :meth:`imap` and should be preferred if order - doesn't matter. - - .. seealso:: :meth:`imap` for more details. - """ - return self.__imap(IMapUnordered, func, *iterables, **kwargs) - - -class Group(GroupMappingMixin): - """ - Maintain a group of greenlets that are still running, without - limiting their number. - - Links to each item and removes it upon notification. - - Groups can be iterated to discover what greenlets they are tracking, - they can be tested to see if they contain a greenlet, and they know the - number (len) of greenlets they are tracking. If they are not tracking any - greenlets, they are False in a boolean context. - """ - - #: The type of Greenlet object we will :meth:`spawn`. This can be changed - #: on an instance or in a subclass. - greenlet_class = Greenlet - - def __init__(self, *args): - assert len(args) <= 1, args - self.greenlets = set(*args) - if args: - for greenlet in args[0]: - greenlet.rawlink(self._discard) - # each item we kill we place in dying, to avoid killing the same greenlet twice - self.dying = set() - self._empty_event = Event() - self._empty_event.set() - - def __repr__(self): - return '<%s at 0x%x %s>' % (self.__class__.__name__, id(self), self.greenlets) - - def __len__(self): - """ - Answer how many greenlets we are tracking. Note that if we are empty, - we are False in a boolean context. - """ - return len(self.greenlets) - - def __contains__(self, item): - """ - Answer if we are tracking the given greenlet. - """ - return item in self.greenlets - - def __iter__(self): - """ - Iterate across all the greenlets we are tracking, in no particular order. - """ - return iter(self.greenlets) - - def add(self, greenlet): - """ - Begin tracking the *greenlet*. - - If this group is :meth:`full`, then this method may block - until it is possible to track the greenlet. - - Typically the *greenlet* should **not** be started when - it is added because if this object blocks in this method, - then the *greenlet* may run to completion before it is tracked. - """ - try: - rawlink = greenlet.rawlink - except AttributeError: - pass # non-Greenlet greenlet, like MAIN - else: - rawlink(self._discard) - self.greenlets.add(greenlet) - self._empty_event.clear() - - def _discard(self, greenlet): - self.greenlets.discard(greenlet) - self.dying.discard(greenlet) - if not self.greenlets: - self._empty_event.set() - - def discard(self, greenlet): - """ - Stop tracking the greenlet. - """ - self._discard(greenlet) - try: - unlink = greenlet.unlink - except AttributeError: - pass # non-Greenlet greenlet, like MAIN - else: - unlink(self._discard) - - def start(self, greenlet): - """ - Add the **unstarted** *greenlet* to the collection of greenlets - this group is monitoring, and then start it. - """ - self.add(greenlet) - greenlet.start() - - def spawn(self, *args, **kwargs): # pylint:disable=arguments-differ - """ - Begin a new greenlet with the given arguments (which are passed - to the greenlet constructor) and add it to the collection of greenlets - this group is monitoring. - - :return: The newly started greenlet. - """ - greenlet = self.greenlet_class(*args, **kwargs) - self.start(greenlet) - return greenlet - -# def close(self): -# """Prevents any more tasks from being submitted to the pool""" -# self.add = RaiseException("This %s has been closed" % self.__class__.__name__) - - def join(self, timeout=None, raise_error=False): - """ - Wait for this group to become empty *at least once*. - - If there are no greenlets in the group, returns immediately. - - .. note:: By the time the waiting code (the caller of this - method) regains control, a greenlet may have been added to - this group, and so this object may no longer be empty. (That - is, ``group.join(); assert len(group) == 0`` is not - guaranteed to hold.) This method only guarantees that the group - reached a ``len`` of 0 at some point. - - :keyword bool raise_error: If True (*not* the default), if any - greenlet that finished while the join was in progress raised - an exception, that exception will be raised to the caller of - this method. If multiple greenlets raised exceptions, which - one gets re-raised is not determined. Only greenlets currently - in the group when this method is called are guaranteed to - be checked for exceptions. - - :return bool: A value indicating whether this group became empty. - If the timeout is specified and the group did not become empty - during that timeout, then this will be a false value. Otherwise - it will be a true value. - - .. versionchanged:: 1.2a1 - Add the return value. - """ - greenlets = list(self.greenlets) if raise_error else () - result = self._empty_event.wait(timeout=timeout) - - for greenlet in greenlets: - if greenlet.exception is not None: - if hasattr(greenlet, '_raise_exception'): - greenlet._raise_exception() - raise greenlet.exception - - return result - - def kill(self, exception=GreenletExit, block=True, timeout=None): - """ - Kill all greenlets being tracked by this group. - """ - timer = Timeout._start_new_or_dummy(timeout) - try: - while self.greenlets: - for greenlet in list(self.greenlets): - if greenlet in self.dying: - continue - try: - kill = greenlet.kill - except AttributeError: - _kill(greenlet, exception) - else: - kill(exception, block=False) - self.dying.add(greenlet) - if not block: - break - joinall(self.greenlets) - except Timeout as ex: - if ex is not timer: - raise - finally: - timer.cancel() - - def killone(self, greenlet, exception=GreenletExit, block=True, timeout=None): - """ - If the given *greenlet* is running and being tracked by this group, - kill it. - """ - if greenlet not in self.dying and greenlet in self.greenlets: - greenlet.kill(exception, block=False) - self.dying.add(greenlet) - if block: - greenlet.join(timeout) - - def full(self): - """ - Return a value indicating whether this group can track more greenlets. - - In this implementation, because there are no limits on the number of - tracked greenlets, this will always return a ``False`` value. - """ - return False - - def wait_available(self, timeout=None): - """ - Block until it is possible to :meth:`spawn` a new greenlet. - - In this implementation, because there are no limits on the number - of tracked greenlets, this will always return immediately. - """ - pass - - # MappingMixin methods - - def _apply_immediately(self): - # If apply() is called from one of our own - # worker greenlets, don't spawn a new one---if we're full, that - # could deadlock. - return getcurrent() in self - - def _apply_async_cb_spawn(self, callback, result): - Greenlet.spawn(callback, result) - - def _apply_async_use_greenlet(self): - # cannot call self.spawn() because it will block, so - # use a fresh, untracked greenlet that when run will - # (indirectly) call self.spawn() for us. - return self.full() - - - -class PoolFull(QueueFull): - """ - Raised when a Pool is full and an attempt was made to - add a new greenlet to it in non-blocking mode. - """ - - -class Pool(Group): - - def __init__(self, size=None, greenlet_class=None): - """ - Create a new pool. - - A pool is like a group, but the maximum number of members - is governed by the *size* parameter. - - :keyword int size: If given, this non-negative integer is the - maximum count of active greenlets that will be allowed in - this pool. A few values have special significance: - - * ``None`` (the default) places no limit on the number of - greenlets. This is useful when you need to track, but not limit, - greenlets, as with :class:`gevent.pywsgi.WSGIServer`. A :class:`Group` - may be a more efficient way to achieve the same effect. - * ``0`` creates a pool that can never have any active greenlets. Attempting - to spawn in this pool will block forever. This is only useful - if an application uses :meth:`wait_available` with a timeout and checks - :meth:`free_count` before attempting to spawn. - """ - if size is not None and size < 0: - raise ValueError('size must not be negative: %r' % (size, )) - Group.__init__(self) - self.size = size - if greenlet_class is not None: - self.greenlet_class = greenlet_class - if size is None: - factory = DummySemaphore - else: - factory = Semaphore - self._semaphore = factory(size) - - def wait_available(self, timeout=None): - """ - Wait until it's possible to spawn a greenlet in this pool. - - :param float timeout: If given, only wait the specified number - of seconds. - - .. warning:: If the pool was initialized with a size of 0, this - method will block forever unless a timeout is given. - - :return: A number indicating how many new greenlets can be put into - the pool without blocking. - - .. versionchanged:: 1.1a3 - Added the ``timeout`` parameter. - """ - return self._semaphore.wait(timeout=timeout) - - def full(self): - """ - Return a boolean indicating whether this pool is full, e.g. if - :meth:`add` would block. - - :return: False if there is room for new members, True if there isn't. - """ - return self.free_count() <= 0 - - def free_count(self): - """ - Return a number indicating *approximately* how many more members - can be added to this pool. - """ - if self.size is None: - return 1 - return max(0, self.size - len(self)) - - def start(self, greenlet, *args, **kwargs): # pylint:disable=arguments-differ - """ - start(greenlet, blocking=True, timeout=None) -> None - - Add the **unstarted** *greenlet* to the collection of greenlets - this group is monitoring and then start it. - - Parameters are as for :meth:`add`. - """ - self.add(greenlet, *args, **kwargs) - greenlet.start() - - def add(self, greenlet, blocking=True, timeout=None): # pylint:disable=arguments-differ - """ - Begin tracking the given **unstarted** greenlet, possibly blocking - until space is available. - - Usually you should call :meth:`start` to track and start the greenlet - instead of using this lower-level method, or :meth:`spawn` to - also create the greenlet. - - :keyword bool blocking: If True (the default), this function - will block until the pool has space or a timeout occurs. If - False, this function will immediately raise a Timeout if the - pool is currently full. - :keyword float timeout: The maximum number of seconds this - method will block, if ``blocking`` is True. (Ignored if - ``blocking`` is False.) - :raises PoolFull: if either ``blocking`` is False and the pool - was full, or if ``blocking`` is True and ``timeout`` was - exceeded. - - .. caution:: If the *greenlet* has already been started and - *blocking* is true, then the greenlet may run to completion - while the current greenlet blocks waiting to track it. This would - enable higher concurrency than desired. - - .. seealso:: :meth:`Group.add` - - .. versionchanged:: 1.3.0 Added the ``blocking`` and - ``timeout`` parameters. - """ - if not self._semaphore.acquire(blocking=blocking, timeout=timeout): - # We failed to acquire the semaphore. - # If blocking was True, then there was a timeout. If blocking was - # False, then there was no capacity. Either way, raise PoolFull. - raise PoolFull() - - try: - Group.add(self, greenlet) - except: - self._semaphore.release() - raise - - def _discard(self, greenlet): - Group._discard(self, greenlet) - self._semaphore.release() - - -class pass_value(object): - __slots__ = ['callback'] - - def __init__(self, callback): - self.callback = callback - - def __call__(self, source): - if source.successful(): - self.callback(source.value) - - def __hash__(self): - return hash(self.callback) - - def __eq__(self, other): - return self.callback == getattr(other, 'callback', other) - - def __str__(self): - return str(self.callback) - - def __repr__(self): - return repr(self.callback) - - def __getattr__(self, item): - assert item != 'callback' - return getattr(self.callback, item) diff --git a/python/gevent/pywsgi.py b/python/gevent/pywsgi.py deleted file mode 100644 index 8d0b5b8..0000000 --- a/python/gevent/pywsgi.py +++ /dev/null @@ -1,1545 +0,0 @@ -# Copyright (c) 2005-2009, eventlet contributors -# Copyright (c) 2009-2018, gevent contributors -""" -A pure-Python, gevent-friendly WSGI server. - -The server is provided in :class:`WSGIServer`, but most of the actual -WSGI work is handled by :class:`WSGIHandler` --- a new instance is -created for each request. The server can be customized to use -different subclasses of :class:`WSGIHandler`. - -""" -from __future__ import absolute_import - -# FIXME: Can we refactor to make smallor? -# pylint:disable=too-many-lines - -import errno -from io import BytesIO -import string -import sys -import time -import traceback -from datetime import datetime - -try: - from urllib import unquote -except ImportError: - from urllib.parse import unquote # python 2 pylint:disable=import-error,no-name-in-module - -from gevent import socket -import gevent -from gevent.server import StreamServer -from gevent.hub import GreenletExit -from gevent._compat import PY3, reraise - -from functools import partial -if PY3: - unquote_latin1 = partial(unquote, encoding='latin-1') -else: - unquote_latin1 = unquote - -_no_undoc_members = True # Don't put undocumented things into sphinx - -__all__ = [ - 'WSGIServer', - 'WSGIHandler', - 'LoggingLogAdapter', - 'Environ', - 'SecureEnviron', - 'WSGISecureEnviron', -] - - -MAX_REQUEST_LINE = 8192 -# Weekday and month names for HTTP date/time formatting; always English! -_WEEKDAYNAME = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"] -_MONTHNAME = [None, # Dummy so we can use 1-based month numbers - "Jan", "Feb", "Mar", "Apr", "May", "Jun", - "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] - -# The contents of the "HEX" grammar rule for HTTP, upper and lowercase A-F plus digits, -# in byte form for comparing to the network. -_HEX = string.hexdigits.encode('ascii') - -# Errors -_ERRORS = dict() -_INTERNAL_ERROR_STATUS = '500 Internal Server Error' -_INTERNAL_ERROR_BODY = b'Internal Server Error' -_INTERNAL_ERROR_HEADERS = [('Content-Type', 'text/plain'), - ('Connection', 'close'), - ('Content-Length', str(len(_INTERNAL_ERROR_BODY)))] -_ERRORS[500] = (_INTERNAL_ERROR_STATUS, _INTERNAL_ERROR_HEADERS, _INTERNAL_ERROR_BODY) - -_BAD_REQUEST_STATUS = '400 Bad Request' -_BAD_REQUEST_BODY = '' -_BAD_REQUEST_HEADERS = [('Content-Type', 'text/plain'), - ('Connection', 'close'), - ('Content-Length', str(len(_BAD_REQUEST_BODY)))] -_ERRORS[400] = (_BAD_REQUEST_STATUS, _BAD_REQUEST_HEADERS, _BAD_REQUEST_BODY) - -_REQUEST_TOO_LONG_RESPONSE = b"HTTP/1.1 414 Request URI Too Long\r\nConnection: close\r\nContent-length: 0\r\n\r\n" -_BAD_REQUEST_RESPONSE = b"HTTP/1.1 400 Bad Request\r\nConnection: close\r\nContent-length: 0\r\n\r\n" -_CONTINUE_RESPONSE = b"HTTP/1.1 100 Continue\r\n\r\n" - - -def format_date_time(timestamp): - # Return a byte-string of the date and time in HTTP format - # .. versionchanged:: 1.1b5 - # Return a byte string, not a native string - year, month, day, hh, mm, ss, wd, _y, _z = time.gmtime(timestamp) - value = "%s, %02d %3s %4d %02d:%02d:%02d GMT" % (_WEEKDAYNAME[wd], day, _MONTHNAME[month], year, hh, mm, ss) - if PY3: - value = value.encode("latin-1") - return value - - -class _InvalidClientInput(IOError): - # Internal exception raised by Input indicating that the client - # sent invalid data at the lowest level of the stream. The result - # *should* be a HTTP 400 error. - pass - - -class _InvalidClientRequest(ValueError): - # Internal exception raised by WSGIHandler.read_request - # indicating that the client sent an HTTP request that cannot - # be parsed (e.g., invalid grammar). The result *should* be an - # HTTP 400 error - pass - - -class Input(object): - - __slots__ = ('rfile', 'content_length', 'socket', 'position', - 'chunked_input', 'chunk_length', '_chunked_input_error') - - def __init__(self, rfile, content_length, socket=None, chunked_input=False): - # pylint:disable=redefined-outer-name - self.rfile = rfile - self.content_length = content_length - self.socket = socket - self.position = 0 - self.chunked_input = chunked_input - self.chunk_length = -1 - self._chunked_input_error = False - - def _discard(self): - if self._chunked_input_error: - # We are in an unknown state, so we can't necessarily discard - # the body (e.g., if the client keeps the socket open, we could hang - # here forever). - # In this case, we've raised an exception and the user of this object - # is going to close the socket, so we don't have to discard - return - - if self.socket is None and (self.position < (self.content_length or 0) or self.chunked_input): - # ## Read and discard body - while 1: - d = self.read(16384) - if not d: - break - - def _send_100_continue(self): - if self.socket is not None: - self.socket.sendall(_CONTINUE_RESPONSE) - self.socket = None - - def _do_read(self, length=None, use_readline=False): - if use_readline: - reader = self.rfile.readline - else: - reader = self.rfile.read - content_length = self.content_length - if content_length is None: - # Either Content-Length or "Transfer-Encoding: chunked" must be present in a request with a body - # if it was chunked, then this function would have not been called - return b'' - - self._send_100_continue() - left = content_length - self.position - if length is None: - length = left - elif length > left: - length = left - if not length: - return b'' - - # On Python 2, self.rfile is usually socket.makefile(), which - # uses cStringIO.StringIO. If *length* is greater than the C - # sizeof(int) (typically 32 bits signed), parsing the argument to - # readline raises OverflowError. StringIO.read(), OTOH, uses - # PySize_t, typically a long (64 bits). In a bare readline() - # case, because the header lines we're trying to read with - # readline are typically expected to be small, we can correct - # that failure by simply doing a smaller call to readline and - # appending; failures in read we let propagate. - try: - read = reader(length) - except OverflowError: - if not use_readline: - # Expecting to read more than 64 bits of data. Ouch! - raise - # We could loop on calls to smaller readline(), appending them - # until we actually get a newline. For uses in this module, - # we expect the actual length to be small, but WSGI applications - # are allowed to pass in an arbitrary length. (This loop isn't optimal, - # but even client applications *probably* have short lines.) - read = b'' - while len(read) < length and not read.endswith(b'\n'): - read += reader(MAX_REQUEST_LINE) - - self.position += len(read) - if len(read) < length: - if (use_readline and not read.endswith(b"\n")) or not use_readline: - raise IOError("unexpected end of file while reading request at position %s" % (self.position,)) - - return read - - def __read_chunk_length(self, rfile): - # Read and return the next integer chunk length. If no - # chunk length can be read, raises _InvalidClientInput. - - # Here's the production for a chunk: - # (http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html) - # chunk = chunk-size [ chunk-extension ] CRLF - # chunk-data CRLF - # chunk-size = 1*HEX - # chunk-extension= *( ";" chunk-ext-name [ "=" chunk-ext-val ] ) - # chunk-ext-name = token - # chunk-ext-val = token | quoted-string - - # To cope with malicious or broken clients that fail to send valid - # chunk lines, the strategy is to read character by character until we either reach - # a ; or newline. If at any time we read a non-HEX digit, we bail. If we hit a - # ;, indicating an chunk-extension, we'll read up to the next - # MAX_REQUEST_LINE characters - # looking for the CRLF, and if we don't find it, we bail. If we read more than 16 hex characters, - # (the number needed to represent a 64-bit chunk size), we bail (this protects us from - # a client that sends an infinite stream of `F`, for example). - - buf = BytesIO() - while 1: - char = rfile.read(1) - if not char: - self._chunked_input_error = True - raise _InvalidClientInput("EOF before chunk end reached") - if char == b'\r': - break - if char == b';': - break - - if char not in _HEX: - self._chunked_input_error = True - raise _InvalidClientInput("Non-hex data", char) - buf.write(char) - if buf.tell() > 16: - self._chunked_input_error = True - raise _InvalidClientInput("Chunk-size too large.") - - if char == b';': - i = 0 - while i < MAX_REQUEST_LINE: - char = rfile.read(1) - if char == b'\r': - break - i += 1 - else: - # we read more than MAX_REQUEST_LINE without - # hitting CR - self._chunked_input_error = True - raise _InvalidClientInput("Too large chunk extension") - - if char == b'\r': - # We either got here from the main loop or from the - # end of an extension - char = rfile.read(1) - if char != b'\n': - self._chunked_input_error = True - raise _InvalidClientInput("Line didn't end in CRLF") - return int(buf.getvalue(), 16) - - def _chunked_read(self, length=None, use_readline=False): - # pylint:disable=too-many-branches - rfile = self.rfile - self._send_100_continue() - - if length == 0: - return b"" - - if length is not None and length < 0: - length = None - - if use_readline: - reader = self.rfile.readline - else: - reader = self.rfile.read - - response = [] - while self.chunk_length != 0: - maxreadlen = self.chunk_length - self.position - if length is not None and length < maxreadlen: - maxreadlen = length - - if maxreadlen > 0: - data = reader(maxreadlen) - if not data: - self.chunk_length = 0 - self._chunked_input_error = True - raise IOError("unexpected end of file while parsing chunked data") - - datalen = len(data) - response.append(data) - - self.position += datalen - if self.chunk_length == self.position: - rfile.readline() - - if length is not None: - length -= datalen - if length == 0: - break - if use_readline and data[-1] == b"\n"[0]: - break - else: - # We're at the beginning of a chunk, so we need to - # determine the next size to read - self.chunk_length = self.__read_chunk_length(rfile) - self.position = 0 - if self.chunk_length == 0: - # Last chunk. Terminates with a CRLF. - rfile.readline() - return b''.join(response) - - def read(self, length=None): - if self.chunked_input: - return self._chunked_read(length) - return self._do_read(length) - - def readline(self, size=None): - if self.chunked_input: - return self._chunked_read(size, True) - return self._do_read(size, use_readline=True) - - def readlines(self, hint=None): - # pylint:disable=unused-argument - return list(self) - - def __iter__(self): - return self - - def next(self): - line = self.readline() - if not line: - raise StopIteration - return line - __next__ = next - - -try: - import mimetools - headers_factory = mimetools.Message -except ImportError: - # adapt Python 3 HTTP headers to old API - from http import client # pylint:disable=import-error - - class OldMessage(client.HTTPMessage): - def __init__(self, **kwargs): - super(client.HTTPMessage, self).__init__(**kwargs) # pylint:disable=bad-super-call - self.status = '' - - def getheader(self, name, default=None): - return self.get(name, default) - - @property - def headers(self): - for key, value in self._headers: - yield '%s: %s\r\n' % (key, value) - - @property - def typeheader(self): - return self.get('content-type') - - def headers_factory(fp, *args): # pylint:disable=unused-argument - try: - ret = client.parse_headers(fp, _class=OldMessage) - except client.LineTooLong: - ret = OldMessage() - ret.status = 'Line too long' - return ret - - -class WSGIHandler(object): - """ - Handles HTTP requests from a socket, creates the WSGI environment, and - interacts with the WSGI application. - - This is the default value of :attr:`WSGIServer.handler_class`. - This class may be subclassed carefully, and that class set on a - :class:`WSGIServer` instance through a keyword argument at - construction time. - - Instances are constructed with the same arguments as passed to the - server's :meth:`WSGIServer.handle` method followed by the server - itself. The application and environment are obtained from the server. - - """ - # pylint:disable=too-many-instance-attributes - - protocol_version = 'HTTP/1.1' - if PY3: - # if we do like Py2, then headers_factory unconditionally - # becomes a bound method, meaning the fp argument becomes WSGIHandler - def MessageClass(self, *args): - return headers_factory(*args) - else: - MessageClass = headers_factory - - # Attributes reset at various times for each request; not public - # documented. Class attributes to keep the constructor fast - # (but not make lint tools complain) - - status = None # byte string: b'200 OK' - _orig_status = None # native string: '200 OK' - response_headers = None # list of tuples (b'name', b'value') - code = None # Integer parsed from status - provided_date = None - provided_content_length = None - close_connection = False - time_start = 0 # time.time() when begin handling request - time_finish = 0 # time.time() when done handling request - headers_sent = False # Have we already sent headers? - response_use_chunked = False # Write with transfer-encoding chunked - environ = None # Dict from self.get_environ - application = None # application callable from self.server.application - requestline = None # native str 'GET / HTTP/1.1' - response_length = 0 # How much data we sent - result = None # The return value of the WSGI application - wsgi_input = None # Instance of Input() - content_length = 0 # From application-provided headers Incoming - # request headers, instance of MessageClass (gunicorn uses hasattr - # on this so the default value needs to be compatible with the - # API) - headers = headers_factory(BytesIO()) - request_version = None # str: 'HTTP 1.1' - command = None # str: 'GET' - path = None # str: '/' - - def __init__(self, sock, address, server, rfile=None): - # Deprecation: The rfile kwarg was introduced in 1.0a1 as part - # of a refactoring. It was never documented or used. It is - # considered DEPRECATED and may be removed in the future. Its - # use is not supported. - - self.socket = sock - self.client_address = address - self.server = server - if rfile is None: - self.rfile = sock.makefile('rb', -1) - else: - self.rfile = rfile - - def handle(self): - """ - The main request handling method, called by the server. - - This method runs a request handling loop, calling - :meth:`handle_one_request` until all requests on the - connection have been handled (that is, it implements - keep-alive). - """ - try: - while self.socket is not None: - self.time_start = time.time() - self.time_finish = 0 - - result = self.handle_one_request() - if result is None: - break - if result is True: - continue - - self.status, response_body = result - self.socket.sendall(response_body) - if self.time_finish == 0: - self.time_finish = time.time() - self.log_request() - break - finally: - if self.socket is not None: - _sock = getattr(self.socket, '_sock', None) # Python 3 - try: - # read out request data to prevent error: [Errno 104] Connection reset by peer - if _sock: - try: - # socket.recv would hang - _sock.recv(16384) - finally: - _sock.close() - self.socket.close() - except socket.error: - pass - self.__dict__.pop('socket', None) - self.__dict__.pop('rfile', None) - - def _check_http_version(self): - version_str = self.request_version - if not version_str.startswith("HTTP/"): - return False - version = tuple(int(x) for x in version_str[5:].split(".")) # "HTTP/" - if version[1] < 0 or version < (0, 9) or version >= (2, 0): - return False - return True - - def read_request(self, raw_requestline): - """ - Parse the incoming request. - - Parses various headers into ``self.headers`` using - :attr:`MessageClass`. Other attributes that are set upon a successful - return of this method include ``self.content_length`` and ``self.close_connection``. - - :param str raw_requestline: A native :class:`str` representing - the request line. A processed version of this will be stored - into ``self.requestline``. - - :raises ValueError: If the request is invalid. This error will - not be logged as a traceback (because it's a client issue, not a server problem). - :return: A boolean value indicating whether the request was successfully parsed. - This method should either return a true value or have raised a ValueError - with details about the parsing error. - - .. versionchanged:: 1.1b6 - Raise the previously documented :exc:`ValueError` in more cases instead of returning a - false value; this allows subclasses more opportunity to customize behaviour. - """ - # pylint:disable=too-many-branches - self.requestline = raw_requestline.rstrip() - words = self.requestline.split() - if len(words) == 3: - self.command, self.path, self.request_version = words - if not self._check_http_version(): - raise _InvalidClientRequest('Invalid http version: %r' % (raw_requestline,)) - elif len(words) == 2: - self.command, self.path = words - if self.command != "GET": - raise _InvalidClientRequest('Expected GET method: %r' % (raw_requestline,)) - self.request_version = "HTTP/0.9" - # QQQ I'm pretty sure we can drop support for HTTP/0.9 - else: - raise _InvalidClientRequest('Invalid HTTP method: %r' % (raw_requestline,)) - - self.headers = self.MessageClass(self.rfile, 0) - - if self.headers.status: - raise _InvalidClientRequest('Invalid headers status: %r' % (self.headers.status,)) - - if self.headers.get("transfer-encoding", "").lower() == "chunked": - try: - del self.headers["content-length"] - except KeyError: - pass - - content_length = self.headers.get("content-length") - if content_length is not None: - content_length = int(content_length) - if content_length < 0: - raise _InvalidClientRequest('Invalid Content-Length: %r' % (content_length,)) - - if content_length and self.command in ('HEAD', ): - raise _InvalidClientRequest('Unexpected Content-Length') - - self.content_length = content_length - - if self.request_version == "HTTP/1.1": - conntype = self.headers.get("Connection", "").lower() - self.close_connection = (conntype == 'close') - else: - self.close_connection = True - - return True - - def log_error(self, msg, *args): - try: - message = msg % args - except Exception: # pylint:disable=broad-except - traceback.print_exc() - message = '%r %r' % (msg, args) - try: - message = '%s: %s' % (self.socket, message) - except Exception: # pylint:disable=broad-except - pass - - try: - self.server.error_log.write(message + '\n') - except Exception: # pylint:disable=broad-except - traceback.print_exc() - - def read_requestline(self): - """ - Read and return the HTTP request line. - - Under both Python 2 and 3, this should return the native - ``str`` type; under Python 3, this probably means the bytes read - from the network need to be decoded (using the ISO-8859-1 charset, aka - latin-1). - """ - line = self.rfile.readline(MAX_REQUEST_LINE) - if PY3: - line = line.decode('latin-1') - return line - - def handle_one_request(self): - """ - Handles one HTTP request using ``self.socket`` and ``self.rfile``. - - Each invocation of this method will do several things, including (but not limited to): - - - Read the request line using :meth:`read_requestline`; - - Read the rest of the request, including headers, with :meth:`read_request`; - - Construct a new WSGI environment in ``self.environ`` using :meth:`get_environ`; - - Store the application in ``self.application``, retrieving it from the server; - - Handle the remainder of the request, including invoking the application, - with :meth:`handle_one_response` - - There are several possible return values to indicate the state - of the client connection: - - - ``None`` - The client connection is already closed or should - be closed because the WSGI application or client set the - ``Connection: close`` header. The request handling - loop should terminate and perform cleanup steps. - - (status, body) - An HTTP status and body tuple. The request was in error, - as detailed by the status and body. The request handling - loop should terminate, close the connection, and perform - cleanup steps. Note that the ``body`` is the complete contents - to send to the client, including all headers and the initial - status line. - - ``True`` - The literal ``True`` value. The request was successfully handled - and the response sent to the client by :meth:`handle_one_response`. - The connection remains open to process more requests and the connection - handling loop should call this method again. This is the typical return - value. - - .. seealso:: :meth:`handle` - - .. versionchanged:: 1.1b6 - Funnel exceptions having to do with invalid HTTP requests through - :meth:`_handle_client_error` to allow subclasses to customize. Note that - this is experimental and may change in the future. - """ - # pylint:disable=too-many-return-statements - if self.rfile.closed: - return - - try: - self.requestline = self.read_requestline() - # Account for old subclasses that haven't done this - if PY3 and isinstance(self.requestline, bytes): - self.requestline = self.requestline.decode('latin-1') - except socket.error: - # "Connection reset by peer" or other socket errors aren't interesting here - return - - if not self.requestline: - return - - self.response_length = 0 - - if len(self.requestline) >= MAX_REQUEST_LINE: - return ('414', _REQUEST_TOO_LONG_RESPONSE) - - try: - # for compatibility with older versions of pywsgi, we pass self.requestline as an argument there - # NOTE: read_request is supposed to raise ValueError on invalid input; allow old - # subclasses that return a False value instead. - # NOTE: This can mutate the value of self.headers, so self.get_environ() must not be - # called until AFTER this call is done. - if not self.read_request(self.requestline): - return ('400', _BAD_REQUEST_RESPONSE) - except Exception as ex: # pylint:disable=broad-except - # Notice we don't use self.handle_error because it reports - # a 500 error to the client, and this is almost certainly - # a client error. - # Provide a hook for subclasses. - return self._handle_client_error(ex) - - self.environ = self.get_environ() - self.application = self.server.application - - self.handle_one_response() - - if self.close_connection: - return - - if self.rfile.closed: - return - - return True # read more requests - - def finalize_headers(self): - if self.provided_date is None: - self.response_headers.append((b'Date', format_date_time(time.time()))) - - if self.code not in (304, 204): - # the reply will include message-body; make sure we have either Content-Length or chunked - if self.provided_content_length is None: - if hasattr(self.result, '__len__'): - total_len = sum(len(chunk) for chunk in self.result) - total_len_str = str(total_len) - if PY3: - total_len_str = total_len_str.encode("latin-1") - self.response_headers.append((b'Content-Length', total_len_str)) - else: - if self.request_version != 'HTTP/1.0': - self.response_use_chunked = True - self.response_headers.append((b'Transfer-Encoding', b'chunked')) - - def _sendall(self, data): - try: - self.socket.sendall(data) - except socket.error as ex: - self.status = 'socket error: %s' % ex - if self.code > 0: - self.code = -self.code - raise - self.response_length += len(data) - - def _write(self, data, - _PY34_EXACTLY=(sys.version_info[:2] == (3, 4)), - _bytearray=bytearray): - if not data: - # The application/middleware are allowed to yield - # empty bytestrings. - return - - if self.response_use_chunked: - ## Write the chunked encoding - # header - if _PY34_EXACTLY: - # This is the only version we support that doesn't - # allow % to be used with bytes. Passing a bytestring - # directly in to bytearray() is faster than passing a - # (unicode) str with encoding, which naturally is faster still - # than encoding first. Interestingly, byte formatting on Python 3 - # is faster than str formatting. - header_str = '%x\r\n' % len(data) - towrite = _bytearray(header_str, 'ascii') - else: - header_str = b'%x\r\n' % len(data) - towrite = _bytearray(header_str) - - # data - towrite += data - # trailer - towrite += b'\r\n' - self._sendall(towrite) - else: - self._sendall(data) - - def write(self, data): - # The write() callable we return from start_response. - # https://www.python.org/dev/peps/pep-3333/#the-write-callable - # Supposed to do pretty much the same thing as yielding values - # from the application's return. - if self.code in (304, 204) and data: - raise AssertionError('The %s response must have no body' % self.code) - - if self.headers_sent: - self._write(data) - else: - if not self.status: - raise AssertionError("The application did not call start_response()") - self._write_with_headers(data) - - def _write_with_headers(self, data): - self.headers_sent = True - self.finalize_headers() - - # self.response_headers and self.status are already in latin-1, as encoded by self.start_response - towrite = bytearray(b'HTTP/1.1 ') - towrite += self.status - towrite += b'\r\n' - for header, value in self.response_headers: - towrite += header - towrite += b': ' - towrite += value - towrite += b"\r\n" - - towrite += b'\r\n' - self._sendall(towrite) - # No need to copy the data into towrite; we may make an extra syscall - # but the copy time could be substantial too, and it reduces the chances - # of sendall being able to send everything in one go - self._write(data) - - def start_response(self, status, headers, exc_info=None): - """ - .. versionchanged:: 1.2a1 - Avoid HTTP header injection by raising a :exc:`ValueError` - if *status* or any *header* name or value contains a carriage - return or newline. - .. versionchanged:: 1.1b5 - Pro-actively handle checking the encoding of the status line - and headers during this method. On Python 2, avoid some - extra encodings. - """ - # pylint:disable=too-many-branches,too-many-statements - if exc_info: - try: - if self.headers_sent: - # Re-raise original exception if headers sent - reraise(*exc_info) - finally: - # Avoid dangling circular ref - exc_info = None - - # Pep 3333, "The start_response callable": - # https://www.python.org/dev/peps/pep-3333/#the-start-response-callable - # "Servers should check for errors in the headers at the time - # start_response is called, so that an error can be raised - # while the application is still running." Here, we check the encoding. - # This aids debugging: headers especially are generated programmatically - # and an encoding error in a loop or list comprehension yields an opaque - # UnicodeError without any clue which header was wrong. - # Note that this results in copying the header list at this point, not modifying it, - # although we are allowed to do so if needed. This slightly increases memory usage. - # We also check for HTTP Response Splitting vulnerabilities - response_headers = [] - header = None - value = None - try: - for header, value in headers: - if not isinstance(header, str): - raise UnicodeError("The header must be a native string", header, value) - if not isinstance(value, str): - raise UnicodeError("The value must be a native string", header, value) - if '\r' in header or '\n' in header: - raise ValueError('carriage return or newline in header name', header) - if '\r' in value or '\n' in value: - raise ValueError('carriage return or newline in header value', value) - # Either we're on Python 2, in which case bytes is correct, or - # we're on Python 3 and the user screwed up (because it should be a native - # string). In either case, make sure that this is latin-1 compatible. Under - # Python 2, bytes.encode() will take a round-trip through the system encoding, - # which may be ascii, which is not really what we want. However, the latin-1 encoding - # can encode everything except control characters and the block from 0x7F to 0x9F, so - # explicitly round-tripping bytes through the encoding is unlikely to be of much - # benefit, so we go for speed (the WSGI spec specifically calls out allowing the range - # from 0x00 to 0xFF, although the HTTP spec forbids the control characters). - # Note: Some Python 2 implementations, like Jython, may allow non-octet (above 255) values - # in their str implementation; this is mentioned in the WSGI spec, but we don't - # run on any platform like that so we can assume that a str value is pure bytes. - response_headers.append((header if not PY3 else header.encode("latin-1"), - value if not PY3 else value.encode("latin-1"))) - except UnicodeEncodeError: - # If we get here, we're guaranteed to have a header and value - raise UnicodeError("Non-latin1 header", repr(header), repr(value)) - - # Same as above - if not isinstance(status, str): - raise UnicodeError("The status string must be a native string") - if '\r' in status or '\n' in status: - raise ValueError("carriage return or newline in status", status) - # don't assign to anything until the validation is complete, including parsing the - # code - code = int(status.split(' ', 1)[0]) - - self.status = status if not PY3 else status.encode("latin-1") - self._orig_status = status # Preserve the native string for logging - self.response_headers = response_headers - self.code = code - - provided_connection = None - self.provided_date = None - self.provided_content_length = None - - for header, value in headers: - header = header.lower() - if header == 'connection': - provided_connection = value - elif header == 'date': - self.provided_date = value - elif header == 'content-length': - self.provided_content_length = value - - if self.request_version == 'HTTP/1.0' and provided_connection is None: - response_headers.append((b'Connection', b'close')) - self.close_connection = True - elif provided_connection == 'close': - self.close_connection = True - - if self.code in (304, 204): - if self.provided_content_length is not None and self.provided_content_length != '0': - msg = 'Invalid Content-Length for %s response: %r (must be absent or zero)' % (self.code, self.provided_content_length) - if PY3: - msg = msg.encode('latin-1') - raise AssertionError(msg) - - return self.write - - def log_request(self): - self.server.log.write(self.format_request() + '\n') - - def format_request(self): - now = datetime.now().replace(microsecond=0) - length = self.response_length or '-' - if self.time_finish: - delta = '%.6f' % (self.time_finish - self.time_start) - else: - delta = '-' - client_address = self.client_address[0] if isinstance(self.client_address, tuple) else self.client_address - return '%s - - [%s] "%s" %s %s %s' % ( - client_address or '-', - now, - self.requestline or '', - # Use the native string version of the status, saved so we don't have to - # decode. But fallback to the encoded 'status' in case of subclasses - # (Is that really necessary? At least there's no overhead.) - (self._orig_status or self.status or '000').split()[0], - length, - delta) - - def process_result(self): - for data in self.result: - if data: - self.write(data) - if self.status and not self.headers_sent: - # In other words, the application returned an empty - # result iterable (and did not use the write callable) - # Trigger the flush of the headers. - self.write(b'') - if self.response_use_chunked: - self._sendall(b'0\r\n\r\n') - - - def run_application(self): - assert self.result is None - try: - self.result = self.application(self.environ, self.start_response) - self.process_result() - finally: - close = getattr(self.result, 'close', None) - try: - if close is not None: - close() - finally: - # Discard the result. If it's a generator this can - # free a lot of hidden resources (if we failed to iterate - # all the way through it---the frames are automatically - # cleaned up when StopIteration is raised); but other cases - # could still free up resources sooner than otherwise. - close = None - self.result = None - - #: These errors are silently ignored by :meth:`handle_one_response` to avoid producing - #: excess log entries on normal operating conditions. They indicate - #: a remote client has disconnected and there is little or nothing - #: this process can be expected to do about it. You may change this - #: value in a subclass. - #: - #: The default value includes :data:`errno.EPIPE` and :data:`errno.ECONNRESET`. - #: On Windows this also includes :data:`errno.WSAECONNABORTED`. - #: - #: This is a provisional API, subject to change. See :pr:`377`, :pr:`999` - #: and :issue:`136`. - #: - #: .. versionadded:: 1.3 - ignored_socket_errors = (errno.EPIPE, errno.ECONNRESET) - try: - ignored_socket_errors += (errno.WSAECONNABORTED,) - except AttributeError: - pass # Not windows - - def handle_one_response(self): - """ - Invoke the application to produce one response. - - This is called by :meth:`handle_one_request` after all the - state for the request has been established. It is responsible - for error handling. - """ - self.time_start = time.time() - self.status = None - self.headers_sent = False - - self.result = None - self.response_use_chunked = False - self.response_length = 0 - - try: - try: - self.run_application() - finally: - try: - self.wsgi_input._discard() - except (socket.error, IOError): - # Don't let exceptions during discarding - # input override any exception that may have been - # raised by the application, such as our own _InvalidClientInput. - # In the general case, these aren't even worth logging (see the comment - # just below) - pass - except _InvalidClientInput: - self._send_error_response_if_possible(400) - except socket.error as ex: - if ex.args[0] in self.ignored_socket_errors: - # See description of self.ignored_socket_errors. - if not PY3: - sys.exc_clear() - self.close_connection = True - else: - self.handle_error(*sys.exc_info()) - except: # pylint:disable=bare-except - self.handle_error(*sys.exc_info()) - finally: - self.time_finish = time.time() - self.log_request() - - def _send_error_response_if_possible(self, error_code): - if self.response_length: - self.close_connection = True - else: - status, headers, body = _ERRORS[error_code] - try: - self.start_response(status, headers[:]) - self.write(body) - except socket.error: - if not PY3: - sys.exc_clear() - self.close_connection = True - - def _log_error(self, t, v, tb): - # TODO: Shouldn't we dump this to wsgi.errors? If we did that now, it would - # wind up getting logged twice - if not issubclass(t, GreenletExit): - context = self.environ - if not isinstance(context, self.server.secure_environ_class): - context = self.server.secure_environ_class(context) - self.server.loop.handle_error(context, t, v, tb) - - def handle_error(self, t, v, tb): - # Called for internal, unexpected errors, NOT invalid client input - self._log_error(t, v, tb) - del tb - self._send_error_response_if_possible(500) - - def _handle_client_error(self, ex): - # Called for invalid client input - # Returns the appropriate error response. - if not isinstance(ex, ValueError): - # XXX: Why not self._log_error to send it through the loop's - # handle_error method? - traceback.print_exc() - if isinstance(ex, _InvalidClientRequest): - # These come with good error messages, and we want to let - # log_error deal with the formatting, especially to handle encoding - self.log_error(*ex.args) - else: - self.log_error('Invalid request: %s', str(ex) or ex.__class__.__name__) - return ('400', _BAD_REQUEST_RESPONSE) - - def _headers(self): - key = None - value = None - IGNORED_KEYS = (None, 'CONTENT_TYPE', 'CONTENT_LENGTH') - for header in self.headers.headers: - if key is not None and header[:1] in " \t": - value += header - continue - - if key not in IGNORED_KEYS: - yield 'HTTP_' + key, value.strip() - - key, value = header.split(':', 1) - if '_' in key: - # strip incoming bad veaders - key = None - else: - key = key.replace('-', '_').upper() - - if key not in IGNORED_KEYS: - yield 'HTTP_' + key, value.strip() - - def get_environ(self): - """ - Construct and return a new WSGI environment dictionary for a specific request. - - This should begin with asking the server for the base environment - using :meth:`WSGIServer.get_environ`, and then proceed to add the - request specific values. - - By the time this method is invoked the request line and request shall have - been parsed and ``self.headers`` shall be populated. - """ - env = self.server.get_environ() - env['REQUEST_METHOD'] = self.command - env['SCRIPT_NAME'] = '' - - if '?' in self.path: - path, query = self.path.split('?', 1) - else: - path, query = self.path, '' - # Note that self.path contains the original str object; if it contains - # encoded escapes, it will NOT match PATH_INFO. - env['PATH_INFO'] = unquote_latin1(path) - env['QUERY_STRING'] = query - - if self.headers.typeheader is not None: - env['CONTENT_TYPE'] = self.headers.typeheader - - length = self.headers.getheader('content-length') - if length: - env['CONTENT_LENGTH'] = length - env['SERVER_PROTOCOL'] = self.request_version - - client_address = self.client_address - if isinstance(client_address, tuple): - env['REMOTE_ADDR'] = str(client_address[0]) - env['REMOTE_PORT'] = str(client_address[1]) - - for key, value in self._headers(): - if key in env: - if 'COOKIE' in key: - env[key] += '; ' + value - else: - env[key] += ',' + value - else: - env[key] = value - - if env.get('HTTP_EXPECT') == '100-continue': - sock = self.socket - else: - sock = None - - chunked = env.get('HTTP_TRANSFER_ENCODING', '').lower() == 'chunked' - self.wsgi_input = Input(self.rfile, self.content_length, socket=sock, chunked_input=chunked) - env['wsgi.input'] = self.wsgi_input - return env - - -class _NoopLog(object): - # Does nothing; implements just enough file-like methods - # to pass the WSGI validator - - def write(self, *args, **kwargs): - # pylint:disable=unused-argument - return - - def flush(self): - pass - - def writelines(self, *args, **kwargs): - pass - - -class LoggingLogAdapter(object): - """ - An adapter for :class:`logging.Logger` instances - to let them be used with :class:`WSGIServer`. - - .. warning:: Unless the entire process is monkey-patched at a very - early part of the lifecycle (before logging is configured), - loggers are likely to not be gevent-cooperative. For example, - the socket and syslog handlers use the socket module in a way - that can block, and most handlers acquire threading locks. - - .. warning:: It *may* be possible for the logging functions to be - called in the :class:`gevent.Hub` greenlet. Code running in the - hub greenlet cannot use any gevent blocking functions without triggering - a ``LoopExit``. - - .. versionadded:: 1.1a3 - - .. versionchanged:: 1.1b6 - Attributes not present on this object are proxied to the underlying - logger instance. This permits using custom :class:`~logging.Logger` - subclasses (or indeed, even duck-typed objects). - - .. versionchanged:: 1.1 - Strip trailing newline characters on the message passed to :meth:`write` - because log handlers will usually add one themselves. - """ - - # gevent avoids importing and using logging because importing it and - # creating loggers creates native locks unless monkey-patched. - - __slots__ = ('_logger', '_level') - - def __init__(self, logger, level=20): - """ - Write information to the *logger* at the given *level* (default to INFO). - """ - self._logger = logger - self._level = level - - def write(self, msg): - if msg and msg.endswith('\n'): - msg = msg[:-1] - self._logger.log(self._level, msg) - - def flush(self): - "No-op; required to be a file-like object" - pass - - def writelines(self, lines): - for line in lines: - self.write(line) - - def __getattr__(self, name): - return getattr(self._logger, name) - - def __setattr__(self, name, value): - if name not in LoggingLogAdapter.__slots__: - setattr(self._logger, name, value) - else: - object.__setattr__(self, name, value) - - def __delattr__(self, name): - delattr(self._logger, name) - -#### -## Environ classes. -# These subclass dict. They could subclass collections.UserDict on -# 3.3+ and proxy to the underlying real dict to avoid a copy if we -# have to print them (on 2.7 it's slightly more complicated to be an -# instance of collections.MutableMapping; UserDict.UserDict isn't.) -# Then we could have either the WSGIHandler.get_environ or the -# WSGIServer.get_environ return one of these proxies, and -# WSGIHandler.run_application would know to access the `environ.data` -# attribute to be able to pass the *real* dict to the application -# (because PEP3333 requires no subclasses, only actual dict objects; -# wsgiref.validator and webob.Request both enforce this). This has the -# advantage of not being fragile if anybody else tries to print/log -# self.environ (and not requiring a copy). However, if there are any -# subclasses of Handler or Server, this could break if they don't know -# to return this type. -#### - -class Environ(dict): - """ - A base class that can be used for WSGI environment objects. - - Provisional API. - - .. versionadded:: 1.2a1 - """ - - __slots__ = () # add no ivars or weakref ability - - def copy(self): - return self.__class__(self) - - if not hasattr(dict, 'iteritems'): - # Python 3 - def iteritems(self): - return self.items() - - def __reduce_ex__(self, proto): - return (dict, (), None, None, iter(self.iteritems())) - -class SecureEnviron(Environ): - """ - An environment that does not print its keys and values - by default. - - Provisional API. - - This is intended to keep potentially sensitive information like - HTTP authorization and cookies from being inadvertently printed - or logged. - - For debugging, each instance can have its *secure_repr* attribute - set to ``False``, which will cause it to print like a normal dict. - - When *secure_repr* is ``True`` (the default), then the value of - the *whitelist_keys* attribute is consulted; if this value is - true-ish, it should be a container (something that responds to - ``in``) of key names (typically a list or set). Keys and values in - this dictionary that are in *whitelist_keys* will then be printed, - while all other values will be masked. These values may be - customized on the class by setting the *default_secure_repr* and - *default_whitelist_keys*, respectively:: - - >>> environ = SecureEnviron(key='value') - >>> environ # doctest: +ELLIPSIS - <pywsgi.SecureEnviron dict (keys: 1) at ... - - If we whitelist the key, it gets printed:: - - >>> environ.whitelist_keys = {'key'} - >>> environ - {'key': 'value'} - - A non-whitelisted key (*only*, to avoid doctest issues) is masked:: - - >>> environ['secure'] = 'secret'; del environ['key'] - >>> environ - {'secure': '<MASKED>'} - - We can turn it off entirely for the instance:: - - >>> environ.secure_repr = False - >>> environ - {'secure': 'secret'} - - We can also customize it at the class level (here we use a new - class to be explicit and to avoid polluting the true default - values; we would set this class to be the ``environ_class`` of the - server):: - - >>> class MyEnviron(SecureEnviron): - ... default_whitelist_keys = ('key',) - ... - >>> environ = MyEnviron({'key': 'value'}) - >>> environ - {'key': 'value'} - - .. versionadded:: 1.2a1 - """ - - default_secure_repr = True - default_whitelist_keys = () - default_print_masked_keys = True - - # Allow instances to override the class values, - # but inherit from the class if not present. Keeps instances - # small since we can't combine __slots__ with class attributes - # of the same name. - __slots__ = ('secure_repr', 'whitelist_keys', 'print_masked_keys') - - def __getattr__(self, name): - if name in SecureEnviron.__slots__: - return getattr(type(self), 'default_' + name) - raise AttributeError(name) - - def __repr__(self): - if self.secure_repr: - whitelist = self.whitelist_keys - print_masked = self.print_masked_keys - if whitelist: - safe = {k: self[k] if k in whitelist else "<MASKED>" - for k in self - if k in whitelist or print_masked} - safe_repr = repr(safe) - if not print_masked and len(safe) != len(self): - safe_repr = safe_repr[:-1] + ", (hidden keys: %d)}" % (len(self) - len(safe)) - return safe_repr - return "<pywsgi.SecureEnviron dict (keys: %d) at %s>" % (len(self), id(self)) - return Environ.__repr__(self) - __str__ = __repr__ - - -class WSGISecureEnviron(SecureEnviron): - """ - Specializes the default list of whitelisted keys to a few - common WSGI variables. - - Example:: - - >>> environ = WSGISecureEnviron(REMOTE_ADDR='::1', HTTP_AUTHORIZATION='secret') - >>> environ - {'REMOTE_ADDR': '::1', (hidden keys: 1)} - >>> import pprint - >>> pprint.pprint(environ) - {'REMOTE_ADDR': '::1', (hidden keys: 1)} - >>> print(pprint.pformat(environ)) - {'REMOTE_ADDR': '::1', (hidden keys: 1)} - """ - default_whitelist_keys = ('REMOTE_ADDR', 'REMOTE_PORT', 'HTTP_HOST') - default_print_masked_keys = False - - -class WSGIServer(StreamServer): - """ - A WSGI server based on :class:`StreamServer` that supports HTTPS. - - - :keyword log: If given, an object with a ``write`` method to which - request (access) logs will be written. If not given, defaults - to :obj:`sys.stderr`. You may pass ``None`` to disable request - logging. You may use a wrapper, around e.g., :mod:`logging`, - to support objects that don't implement a ``write`` method. - (If you pass a :class:`~logging.Logger` instance, or in - general something that provides a ``log`` method but not a - ``write`` method, such a wrapper will automatically be created - and it will be logged to at the :data:`~logging.INFO` level.) - - :keyword error_log: If given, a file-like object with ``write``, - ``writelines`` and ``flush`` methods to which error logs will - be written. If not given, defaults to :obj:`sys.stderr`. You - may pass ``None`` to disable error logging (not recommended). - You may use a wrapper, around e.g., :mod:`logging`, to support - objects that don't implement the proper methods. This - parameter will become the value for ``wsgi.errors`` in the - WSGI environment (if not already set). (As with *log*, - wrappers for :class:`~logging.Logger` instances and the like - will be created automatically and logged to at the :data:`~logging.ERROR` - level.) - - .. seealso:: - - :class:`LoggingLogAdapter` - See important warnings before attempting to use :mod:`logging`. - - .. versionchanged:: 1.1a3 - Added the ``error_log`` parameter, and set ``wsgi.errors`` in the WSGI - environment to this value. - .. versionchanged:: 1.1a3 - Add support for passing :class:`logging.Logger` objects to the ``log`` and - ``error_log`` arguments. - """ - - #: A callable taking three arguments: (socket, address, server) and returning - #: an object with a ``handle()`` method. The callable is called once for - #: each incoming socket request, as is its handle method. The handle method should not - #: return until all use of the socket is complete. - #: - #: This class uses the :class:`WSGIHandler` object as the default value. You may - #: subclass this class and set a different default value, or you may pass - #: a value to use in the ``handler_class`` keyword constructor argument. - handler_class = WSGIHandler - - #: The object to which request logs will be written. - #: It must never be None. Initialized from the ``log`` constructor - #: parameter. - log = None - - #: The object to which error logs will be written. - #: It must never be None. Initialized from the ``error_log`` constructor - #: parameter. - error_log = None - - #: The class of environ objects passed to the handlers. - #: Must be a dict subclass. For compliance with :pep:`3333` - #: and libraries like WebOb, this is simply :class:`dict` - #: but this can be customized in a subclass or per-instance - #: (probably to :class:`WSGISecureEnviron`). - #: - #: .. versionadded:: 1.2a1 - environ_class = dict - - # Undocumented internal detail: the class that WSGIHandler._log_error - # will cast to before passing to the loop. - secure_environ_class = WSGISecureEnviron - - base_env = {'GATEWAY_INTERFACE': 'CGI/1.1', - 'SERVER_SOFTWARE': 'gevent/%d.%d Python/%d.%d' % (gevent.version_info[:2] + sys.version_info[:2]), - 'SCRIPT_NAME': '', - 'wsgi.version': (1, 0), - 'wsgi.multithread': False, # XXX: Aren't we really, though? - 'wsgi.multiprocess': False, - 'wsgi.run_once': False} - - def __init__(self, listener, application=None, backlog=None, spawn='default', - log='default', error_log='default', - handler_class=None, - environ=None, **ssl_args): - StreamServer.__init__(self, listener, backlog=backlog, spawn=spawn, **ssl_args) - if application is not None: - self.application = application - if handler_class is not None: - self.handler_class = handler_class - - # Note that we can't initialize these as class variables: - # sys.stderr might get monkey patched at runtime. - def _make_log(l, level=20): - if l == 'default': - return sys.stderr - if l is None: - return _NoopLog() - if not hasattr(l, 'write') and hasattr(l, 'log'): - return LoggingLogAdapter(l, level) - return l - self.log = _make_log(log) - self.error_log = _make_log(error_log, 40) # logging.ERROR - - self.set_environ(environ) - self.set_max_accept() - - def set_environ(self, environ=None): - if environ is not None: - self.environ = environ - environ_update = getattr(self, 'environ', None) - - self.environ = self.environ_class(self.base_env) - if self.ssl_enabled: - self.environ['wsgi.url_scheme'] = 'https' - else: - self.environ['wsgi.url_scheme'] = 'http' - if environ_update is not None: - self.environ.update(environ_update) - if self.environ.get('wsgi.errors') is None: - self.environ['wsgi.errors'] = self.error_log - - def set_max_accept(self): - if self.environ.get('wsgi.multiprocess'): - self.max_accept = 1 - - def get_environ(self): - return self.environ_class(self.environ) - - def init_socket(self): - StreamServer.init_socket(self) - self.update_environ() - - def update_environ(self): - """ - Called before the first request is handled to fill in WSGI environment values. - - This includes getting the correct server name and port. - """ - address = self.address - if isinstance(address, tuple): - if 'SERVER_NAME' not in self.environ: - try: - name = socket.getfqdn(address[0]) - except socket.error: - name = str(address[0]) - if PY3 and not isinstance(name, str): - name = name.decode('ascii') - self.environ['SERVER_NAME'] = name - self.environ.setdefault('SERVER_PORT', str(address[1])) - else: - self.environ.setdefault('SERVER_NAME', '') - self.environ.setdefault('SERVER_PORT', '') - - def handle(self, sock, address): - """ - Create an instance of :attr:`handler_class` to handle the request. - - This method blocks until the handler returns. - """ - # pylint:disable=method-hidden - handler = self.handler_class(sock, address, self) - handler.handle() - -def _main(): - # Provisional main handler, for quick tests, not production - # usage. - from gevent import monkey; monkey.patch_all() - - import argparse - import importlib - - parser = argparse.ArgumentParser() - parser.add_argument("app", help="dotted name of WSGI app callable [module:callable]") - parser.add_argument("-b", "--bind", - help="The socket to bind", - default=":8080") - - args = parser.parse_args() - - module_name, app_name = args.app.split(':') - module = importlib.import_module(module_name) - app = getattr(module, app_name) - bind = args.bind - - server = WSGIServer(bind, app) - server.serve_forever() - -if __name__ == '__main__': - _main() diff --git a/python/gevent/queue.c b/python/gevent/queue.c deleted file mode 100644 index 742cb1a..0000000 --- a/python/gevent/queue.c +++ /dev/null @@ -1,22127 +0,0 @@ -/* Generated by Cython 0.28.5 */ - -/* BEGIN: Cython Metadata -{ - "distutils": { - "depends": [ - "src/gevent/_queue.pxd", - "src\\gevent\\_queue.pxd" - ], - "include_dirs": [ - "C:\\Python36\\Include", - "deps" - ], - "name": "gevent._queue", - "sources": [ - "src/gevent/queue.py" - ] - }, - "module_name": "gevent._queue" -} -END: Cython Metadata */ - -#define PY_SSIZE_T_CLEAN -#include "Python.h" -#ifndef Py_PYTHON_H - #error Python headers needed to compile C extensions, please install development version of Python. -#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) - #error Cython requires Python 2.6+ or Python 3.3+. -#else -#define CYTHON_ABI "0_28_5" -#define CYTHON_FUTURE_DIVISION 0 -#include <stddef.h> -#ifndef offsetof - #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) -#endif -#if !defined(WIN32) && !defined(MS_WINDOWS) - #ifndef __stdcall - #define __stdcall - #endif - #ifndef __cdecl - #define __cdecl - #endif - #ifndef __fastcall - #define __fastcall - #endif -#endif -#ifndef DL_IMPORT - #define DL_IMPORT(t) t -#endif -#ifndef DL_EXPORT - #define DL_EXPORT(t) t -#endif -#define __PYX_COMMA , -#ifndef HAVE_LONG_LONG - #if PY_VERSION_HEX >= 0x02070000 - #define HAVE_LONG_LONG - #endif -#endif -#ifndef PY_LONG_LONG - #define PY_LONG_LONG LONG_LONG -#endif -#ifndef Py_HUGE_VAL - #define Py_HUGE_VAL HUGE_VAL -#endif -#ifdef PYPY_VERSION - #define CYTHON_COMPILING_IN_PYPY 1 - #define CYTHON_COMPILING_IN_PYSTON 0 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #undef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 0 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #if PY_VERSION_HEX < 0x03050000 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #undef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #undef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 1 - #undef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 0 - #undef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 0 - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 -#elif defined(PYSTON_VERSION) - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_PYSTON 1 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 -#else - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_PYSTON 0 - #define CYTHON_COMPILING_IN_CPYTHON 1 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #if PY_VERSION_HEX < 0x02070000 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #elif !defined(CYTHON_USE_PYTYPE_LOOKUP) - #define CYTHON_USE_PYTYPE_LOOKUP 1 - #endif - #if PY_MAJOR_VERSION < 3 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #if PY_VERSION_HEX < 0x02070000 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #elif !defined(CYTHON_USE_PYLONG_INTERNALS) - #define CYTHON_USE_PYLONG_INTERNALS 1 - #endif - #ifndef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 1 - #endif - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #if PY_VERSION_HEX < 0x030300F0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #elif !defined(CYTHON_USE_UNICODE_WRITER) - #define CYTHON_USE_UNICODE_WRITER 1 - #endif - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #ifndef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 1 - #endif - #ifndef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 1 - #endif - #ifndef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT (0 && PY_VERSION_HEX >= 0x03050000) - #endif - #ifndef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1) - #endif -#endif -#if !defined(CYTHON_FAST_PYCCALL) -#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) -#endif -#if CYTHON_USE_PYLONG_INTERNALS - #include "longintrepr.h" - #undef SHIFT - #undef BASE - #undef MASK -#endif -#ifndef __has_attribute - #define __has_attribute(x) 0 -#endif -#ifndef __has_cpp_attribute - #define __has_cpp_attribute(x) 0 -#endif -#ifndef CYTHON_RESTRICT - #if defined(__GNUC__) - #define CYTHON_RESTRICT __restrict__ - #elif defined(_MSC_VER) && _MSC_VER >= 1400 - #define CYTHON_RESTRICT __restrict - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_RESTRICT restrict - #else - #define CYTHON_RESTRICT - #endif -#endif -#ifndef CYTHON_UNUSED -# if defined(__GNUC__) -# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -#endif -#ifndef CYTHON_MAYBE_UNUSED_VAR -# if defined(__cplusplus) - template<class T> void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } -# else -# define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) -# endif -#endif -#ifndef CYTHON_NCP_UNUSED -# if CYTHON_COMPILING_IN_CPYTHON -# define CYTHON_NCP_UNUSED -# else -# define CYTHON_NCP_UNUSED CYTHON_UNUSED -# endif -#endif -#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) -#ifdef _MSC_VER - #ifndef _MSC_STDINT_H_ - #if _MSC_VER < 1300 - typedef unsigned char uint8_t; - typedef unsigned int uint32_t; - #else - typedef unsigned __int8 uint8_t; - typedef unsigned __int32 uint32_t; - #endif - #endif -#else - #include <stdint.h> -#endif -#ifndef CYTHON_FALLTHROUGH - #if defined(__cplusplus) && __cplusplus >= 201103L - #if __has_cpp_attribute(fallthrough) - #define CYTHON_FALLTHROUGH [[fallthrough]] - #elif __has_cpp_attribute(clang::fallthrough) - #define CYTHON_FALLTHROUGH [[clang::fallthrough]] - #elif __has_cpp_attribute(gnu::fallthrough) - #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] - #endif - #endif - #ifndef CYTHON_FALLTHROUGH - #if __has_attribute(fallthrough) - #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) - #else - #define CYTHON_FALLTHROUGH - #endif - #endif - #if defined(__clang__ ) && defined(__apple_build_version__) - #if __apple_build_version__ < 7000000 - #undef CYTHON_FALLTHROUGH - #define CYTHON_FALLTHROUGH - #endif - #endif -#endif - -#ifndef CYTHON_INLINE - #if defined(__clang__) - #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) - #elif defined(__GNUC__) - #define CYTHON_INLINE __inline__ - #elif defined(_MSC_VER) - #define CYTHON_INLINE __inline - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_INLINE inline - #else - #define CYTHON_INLINE - #endif -#endif - -#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) - #define Py_OptimizeFlag 0 -#endif -#define __PYX_BUILD_PY_SSIZE_T "n" -#define CYTHON_FORMAT_SSIZE_T "z" -#if PY_MAJOR_VERSION < 3 - #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) - #define __Pyx_DefaultClassType PyClass_Type -#else - #define __Pyx_BUILTIN_MODULE_NAME "builtins" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) - #define __Pyx_DefaultClassType PyType_Type -#endif -#ifndef Py_TPFLAGS_CHECKTYPES - #define Py_TPFLAGS_CHECKTYPES 0 -#endif -#ifndef Py_TPFLAGS_HAVE_INDEX - #define Py_TPFLAGS_HAVE_INDEX 0 -#endif -#ifndef Py_TPFLAGS_HAVE_NEWBUFFER - #define Py_TPFLAGS_HAVE_NEWBUFFER 0 -#endif -#ifndef Py_TPFLAGS_HAVE_FINALIZE - #define Py_TPFLAGS_HAVE_FINALIZE 0 -#endif -#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) - #ifndef METH_FASTCALL - #define METH_FASTCALL 0x80 - #endif - typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); - typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, - Py_ssize_t nargs, PyObject *kwnames); -#else - #define __Pyx_PyCFunctionFast _PyCFunctionFast - #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords -#endif -#if CYTHON_FAST_PYCCALL -#define __Pyx_PyFastCFunction_Check(func)\ - ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))))) -#else -#define __Pyx_PyFastCFunction_Check(func) 0 -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) - #define PyObject_Malloc(s) PyMem_Malloc(s) - #define PyObject_Free(p) PyMem_Free(p) - #define PyObject_Realloc(p) PyMem_Realloc(p) -#endif -#if CYTHON_COMPILING_IN_PYSTON - #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) -#else - #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) -#endif -#if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000 - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#elif PY_VERSION_HEX >= 0x03060000 - #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() -#elif PY_VERSION_HEX >= 0x03000000 - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#else - #define __Pyx_PyThreadState_Current _PyThreadState_Current -#endif -#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) -#include "pythread.h" -#define Py_tss_NEEDS_INIT 0 -typedef int Py_tss_t; -static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { - *key = PyThread_create_key(); - return 0; // PyThread_create_key reports success always -} -static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { - Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); - *key = Py_tss_NEEDS_INIT; - return key; -} -static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { - PyObject_Free(key); -} -static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { - return *key != Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { - PyThread_delete_key(*key); - *key = Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { - return PyThread_set_key_value(*key, value); -} -static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { - return PyThread_get_key_value(*key); -} -#endif // TSS (Thread Specific Storage) API -#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) -#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) -#else -#define __Pyx_PyDict_NewPresized(n) PyDict_New() -#endif -#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION - #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) -#else - #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) -#endif -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS -#define __Pyx_PyDict_GetItemStr(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) -#else -#define __Pyx_PyDict_GetItemStr(dict, name) PyDict_GetItem(dict, name) -#endif -#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) - #define CYTHON_PEP393_ENABLED 1 - #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ - 0 : _PyUnicode_Ready((PyObject *)(op))) - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) - #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) - #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) - #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) -#else - #define CYTHON_PEP393_ENABLED 0 - #define PyUnicode_1BYTE_KIND 1 - #define PyUnicode_2BYTE_KIND 2 - #define PyUnicode_4BYTE_KIND 4 - #define __Pyx_PyUnicode_READY(op) (0) - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) - #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) - #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) - #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) -#endif -#if CYTHON_COMPILING_IN_PYPY - #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) -#else - #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ - PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) - #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) - #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) - #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) -#endif -#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) -#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) -#else - #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) -#endif -#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) - #define PyObject_ASCII(o) PyObject_Repr(o) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBaseString_Type PyUnicode_Type - #define PyStringObject PyUnicodeObject - #define PyString_Type PyUnicode_Type - #define PyString_Check PyUnicode_Check - #define PyString_CheckExact PyUnicode_CheckExact - #define PyObject_Unicode PyObject_Str -#endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) - #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) -#else - #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) - #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) -#endif -#ifndef PySet_CheckExact - #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) -#endif -#if CYTHON_ASSUME_SAFE_MACROS - #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) -#else - #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyIntObject PyLongObject - #define PyInt_Type PyLong_Type - #define PyInt_Check(op) PyLong_Check(op) - #define PyInt_CheckExact(op) PyLong_CheckExact(op) - #define PyInt_FromString PyLong_FromString - #define PyInt_FromUnicode PyLong_FromUnicode - #define PyInt_FromLong PyLong_FromLong - #define PyInt_FromSize_t PyLong_FromSize_t - #define PyInt_FromSsize_t PyLong_FromSsize_t - #define PyInt_AsLong PyLong_AsLong - #define PyInt_AS_LONG PyLong_AS_LONG - #define PyInt_AsSsize_t PyLong_AsSsize_t - #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask - #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask - #define PyNumber_Int PyNumber_Long -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBoolObject PyLongObject -#endif -#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY - #ifndef PyUnicode_InternFromString - #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) - #endif -#endif -#if PY_VERSION_HEX < 0x030200A4 - typedef long Py_hash_t; - #define __Pyx_PyInt_FromHash_t PyInt_FromLong - #define __Pyx_PyInt_AsHash_t PyInt_AsLong -#else - #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t - #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t -#endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : (Py_INCREF(func), func)) -#else - #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) -#endif -#if CYTHON_USE_ASYNC_SLOTS - #if PY_VERSION_HEX >= 0x030500B1 - #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods - #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) - #else - #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) - #endif -#else - #define __Pyx_PyType_AsAsync(obj) NULL -#endif -#ifndef __Pyx_PyAsyncMethodsStruct - typedef struct { - unaryfunc am_await; - unaryfunc am_aiter; - unaryfunc am_anext; - } __Pyx_PyAsyncMethodsStruct; -#endif - -#if defined(WIN32) || defined(MS_WINDOWS) - #define _USE_MATH_DEFINES -#endif -#include <math.h> -#ifdef NAN -#define __PYX_NAN() ((float) NAN) -#else -static CYTHON_INLINE float __PYX_NAN() { - float value; - memset(&value, 0xFF, sizeof(value)); - return value; -} -#endif -#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) -#define __Pyx_truncl trunc -#else -#define __Pyx_truncl truncl -#endif - - -#define __PYX_ERR(f_index, lineno, Ln_error) \ -{ \ - __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \ -} - -#ifndef __PYX_EXTERN_C - #ifdef __cplusplus - #define __PYX_EXTERN_C extern "C" - #else - #define __PYX_EXTERN_C extern - #endif -#endif - -#define __PYX_HAVE__gevent___queue -#define __PYX_HAVE_API__gevent___queue -/* Early includes */ -#include "greenlet/greenlet.h" -#ifdef _OPENMP -#include <omp.h> -#endif /* _OPENMP */ - -#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) -#define CYTHON_WITHOUT_ASSERTIONS -#endif - -typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; - const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; - -#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 -#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0 -#define __PYX_DEFAULT_STRING_ENCODING "" -#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString -#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#define __Pyx_uchar_cast(c) ((unsigned char)c) -#define __Pyx_long_cast(x) ((long)x) -#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ - (sizeof(type) < sizeof(Py_ssize_t)) ||\ - (sizeof(type) > sizeof(Py_ssize_t) &&\ - likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX) &&\ - (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ - v == (type)PY_SSIZE_T_MIN))) ||\ - (sizeof(type) == sizeof(Py_ssize_t) &&\ - (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX))) ) -#if defined (__cplusplus) && __cplusplus >= 201103L - #include <cstdlib> - #define __Pyx_sst_abs(value) std::abs(value) -#elif SIZEOF_INT >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) abs(value) -#elif SIZEOF_LONG >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) labs(value) -#elif defined (_MSC_VER) - #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) -#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define __Pyx_sst_abs(value) llabs(value) -#elif defined (__GNUC__) - #define __Pyx_sst_abs(value) __builtin_llabs(value) -#else - #define __Pyx_sst_abs(value) ((value<0) ? -value : value) -#endif -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); -#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) -#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) -#define __Pyx_PyBytes_FromString PyBytes_FromString -#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); -#if PY_MAJOR_VERSION < 3 - #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#else - #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize -#endif -#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) -#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) -#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) -#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) -#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) -static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { - const Py_UNICODE *u_end = u; - while (*u_end++) ; - return (size_t)(u_end - u - 1); -} -#define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) -#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode -#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode -#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) -#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); -#define __Pyx_PySequence_Tuple(obj)\ - (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); -#if CYTHON_ASSUME_SAFE_MACROS -#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) -#else -#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) -#endif -#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) -#if PY_MAJOR_VERSION >= 3 -#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) -#else -#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) -#endif -#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x)) -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII -static int __Pyx_sys_getdefaultencoding_not_ascii; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - PyObject* ascii_chars_u = NULL; - PyObject* ascii_chars_b = NULL; - const char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - if (strcmp(default_encoding_c, "ascii") == 0) { - __Pyx_sys_getdefaultencoding_not_ascii = 0; - } else { - char ascii_chars[128]; - int c; - for (c = 0; c < 128; c++) { - ascii_chars[c] = c; - } - __Pyx_sys_getdefaultencoding_not_ascii = 1; - ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); - if (!ascii_chars_u) goto bad; - ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); - if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { - PyErr_Format( - PyExc_ValueError, - "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", - default_encoding_c); - goto bad; - } - Py_DECREF(ascii_chars_u); - Py_DECREF(ascii_chars_b); - } - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - Py_XDECREF(ascii_chars_u); - Py_XDECREF(ascii_chars_b); - return -1; -} -#endif -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) -#else -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -static char* __PYX_DEFAULT_STRING_ENCODING; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c)); - if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; - strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - return -1; -} -#endif -#endif - - -/* Test for GCC > 2.95 */ -#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) - #define likely(x) __builtin_expect(!!(x), 1) - #define unlikely(x) __builtin_expect(!!(x), 0) -#else /* !__GNUC__ or GCC < 2.95 */ - #define likely(x) (x) - #define unlikely(x) (x) -#endif /* __GNUC__ */ -static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } - -static PyObject *__pyx_m = NULL; -static PyObject *__pyx_d; -static PyObject *__pyx_b; -static PyObject *__pyx_cython_runtime = NULL; -static PyObject *__pyx_empty_tuple; -static PyObject *__pyx_empty_bytes; -static PyObject *__pyx_empty_unicode; -static int __pyx_lineno; -static int __pyx_clineno = 0; -static const char * __pyx_cfilenm= __FILE__; -static const char *__pyx_filename; - - -static const char *__pyx_f[] = { - "src\\gevent\\queue.py", - "src\\gevent\\_queue.pxd", - "src\\gevent\\__greenlet_primitives.pxd", - "src\\gevent\\__waiter.pxd", - "src\\gevent\\_event.pxd", -}; - -/*--- Type declarations ---*/ -struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet; -struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop; -struct __pyx_obj_6gevent_8__waiter_Waiter; -struct __pyx_obj_6gevent_8__waiter_MultipleWaiter; -struct __pyx_obj_6gevent_6_event__AbstractLinkable; -struct __pyx_obj_6gevent_6_event_Event; -struct __pyx_obj_6gevent_6_event_AsyncResult; -struct __pyx_obj_6gevent_6_queue_ItemWaiter; -struct __pyx_obj_6gevent_6_queue_Queue; -struct __pyx_obj_6gevent_6_queue_UnboundQueue; -struct __pyx_obj_6gevent_6_queue_PriorityQueue; -struct __pyx_obj_6gevent_6_queue_LifoQueue; -struct __pyx_obj_6gevent_6_queue_JoinableQueue; -struct __pyx_obj_6gevent_6_queue_Channel; -struct __pyx_opt_args_6gevent_6_event_17_AbstractLinkable__wait_core; -struct __pyx_opt_args_6gevent_6_event_17_AbstractLinkable__wait; -struct __pyx_opt_args_6gevent_6_event_11AsyncResult_get; -struct __pyx_opt_args_6gevent_6_event_11AsyncResult_wait; - -/* "gevent/_event.pxd":55 - * @cython.locals(todo=set) - * cpdef _notify_links(self) - * cdef _wait_core(self, timeout, catch=*) # <<<<<<<<<<<<<< - * cdef _wait_return_value(self, waited, wait_success) - * cdef _wait(self, timeout=*) - */ -struct __pyx_opt_args_6gevent_6_event_17_AbstractLinkable__wait_core { - int __pyx_n; - PyObject *catch; -}; - -/* "gevent/_event.pxd":57 - * cdef _wait_core(self, timeout, catch=*) - * cdef _wait_return_value(self, waited, wait_success) - * cdef _wait(self, timeout=*) # <<<<<<<<<<<<<< - * - * - */ -struct __pyx_opt_args_6gevent_6_event_17_AbstractLinkable__wait { - int __pyx_n; - PyObject *timeout; -}; - -/* "gevent/_event.pxd":70 - * cdef public int _imap_task_index - * - * cpdef get(self, block=*, timeout=*) # <<<<<<<<<<<<<< - * cpdef bint successful(self) - * - */ -struct __pyx_opt_args_6gevent_6_event_11AsyncResult_get { - int __pyx_n; - PyObject *block; - PyObject *timeout; -}; - -/* "gevent/_event.pxd":73 - * cpdef bint successful(self) - * - * cpdef wait(self, timeout=*) # <<<<<<<<<<<<<< - * cpdef bint done(self) - * - */ -struct __pyx_opt_args_6gevent_6_event_11AsyncResult_wait { - int __pyx_n; - PyObject *timeout; -}; -struct __pyx_opt_args_6gevent_6_queue_5Queue_put; -struct __pyx_opt_args_6gevent_6_queue_5Queue_get; -struct __pyx_opt_args_6gevent_6_queue_5Queue_peek; -struct __pyx_opt_args_6gevent_6_queue_7Channel_get; -struct __pyx_opt_args_6gevent_6_queue_12UnboundQueue_put; - -/* "gevent/_queue.pxd":37 - * cpdef bint full(self) - * - * cpdef put(self, item, block=*, timeout=*) # <<<<<<<<<<<<<< - * cpdef put_nowait(self, item) - * - */ -struct __pyx_opt_args_6gevent_6_queue_5Queue_put { - int __pyx_n; - PyObject *block; - PyObject *timeout; -}; - -/* "gevent/_queue.pxd":42 - * cdef __get_or_peek(self, method, block, timeout) - * - * cpdef get(self, block=*, timeout=*) # <<<<<<<<<<<<<< - * cpdef get_nowait(self) - * cpdef peek(self, block=*, timeout=*) - */ -struct __pyx_opt_args_6gevent_6_queue_5Queue_get { - int __pyx_n; - PyObject *block; - PyObject *timeout; -}; - -/* "gevent/_queue.pxd":44 - * cpdef get(self, block=*, timeout=*) - * cpdef get_nowait(self) - * cpdef peek(self, block=*, timeout=*) # <<<<<<<<<<<<<< - * cpdef peek_nowait(self) - * - */ -struct __pyx_opt_args_6gevent_6_queue_5Queue_peek { - int __pyx_n; - PyObject *block; - PyObject *timeout; -}; - -/* "gevent/_queue.pxd":71 - * cdef _event_unlock - * - * cpdef get(self, block=*, timeout=*) # <<<<<<<<<<<<<< - * cpdef get_nowait(self) - * - */ -struct __pyx_opt_args_6gevent_6_queue_7Channel_get { - int __pyx_n; - PyObject *block; - PyObject *timeout; -}; - -/* "src/gevent/queue.py":425 - * self.putters = None # Will never be used. - * - * def put(self, item, block=True, timeout=None): # <<<<<<<<<<<<<< - * self._put(item) - * if self.getters: - */ -struct __pyx_opt_args_6gevent_6_queue_12UnboundQueue_put { - int __pyx_n; - PyObject *block; - PyObject *timeout; -}; - -/* "gevent/__greenlet_primitives.pxd":37 - * return PyGreenlet_Switch(self, NULL, NULL) - * - * cdef class TrackedRawGreenlet(greenlet): # <<<<<<<<<<<<<< - * pass - * - */ -struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet { - PyGreenlet __pyx_base; -}; - - -/* "gevent/__greenlet_primitives.pxd":40 - * pass - * - * cdef class SwitchOutGreenletWithLoop(TrackedRawGreenlet): # <<<<<<<<<<<<<< - * cdef public loop - * - */ -struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop { - struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet __pyx_base; - struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_vtab; - PyObject *loop; -}; - - -/* "gevent/__waiter.pxd":33 - * _greenlet_imported = True - * - * cdef class Waiter: # <<<<<<<<<<<<<< - * cdef readonly SwitchOutGreenletWithLoop hub - * cdef readonly greenlet greenlet - */ -struct __pyx_obj_6gevent_8__waiter_Waiter { - PyObject_HEAD - struct __pyx_vtabstruct_6gevent_8__waiter_Waiter *__pyx_vtab; - struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *hub; - PyGreenlet *greenlet; - PyObject *value; - PyObject *_exception; -}; - - -/* "gevent/__waiter.pxd":47 - * @cython.final - * @cython.internal - * cdef class MultipleWaiter(Waiter): # <<<<<<<<<<<<<< - * cdef list _values - */ -struct __pyx_obj_6gevent_8__waiter_MultipleWaiter { - struct __pyx_obj_6gevent_8__waiter_Waiter __pyx_base; - PyObject *_values; -}; - - -/* "gevent/_event.pxd":38 - * cdef void _init() - * - * cdef class _AbstractLinkable: # <<<<<<<<<<<<<< - * # We declare the __weakref__ here in the base (even though - * # that's not really what we want) as a workaround for a Cython - */ -struct __pyx_obj_6gevent_6_event__AbstractLinkable { - PyObject_HEAD - struct __pyx_vtabstruct_6gevent_6_event__AbstractLinkable *__pyx_vtab; - PyObject *__weakref__; - PyObject *_notifier; - PyObject *_links; - struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *hub; -}; - - -/* "gevent/_event.pxd":60 - * - * - * cdef class Event(_AbstractLinkable): # <<<<<<<<<<<<<< - * cdef bint _flag - * - */ -struct __pyx_obj_6gevent_6_event_Event { - struct __pyx_obj_6gevent_6_event__AbstractLinkable __pyx_base; - int _flag; -}; - - -/* "gevent/_event.pxd":63 - * cdef bint _flag - * - * cdef class AsyncResult(_AbstractLinkable): # <<<<<<<<<<<<<< - * cdef readonly _value - * cdef readonly tuple _exc_info - */ -struct __pyx_obj_6gevent_6_event_AsyncResult { - struct __pyx_obj_6gevent_6_event__AbstractLinkable __pyx_base; - PyObject *_value; - PyObject *_exc_info; - int _imap_task_index; -}; - - -/* "gevent/_queue.pxd":14 - * @cython.final - * @cython.internal - * cdef class ItemWaiter(Waiter): # <<<<<<<<<<<<<< - * cdef readonly item - * cdef readonly queue - */ -struct __pyx_obj_6gevent_6_queue_ItemWaiter { - struct __pyx_obj_6gevent_8__waiter_Waiter __pyx_base; - PyObject *item; - PyObject *queue; -}; - - -/* "gevent/_queue.pxd":18 - * cdef readonly queue - * - * cdef class Queue: # <<<<<<<<<<<<<< - * cdef __weakref__ - * cdef readonly hub - */ -struct __pyx_obj_6gevent_6_queue_Queue { - PyObject_HEAD - struct __pyx_vtabstruct_6gevent_6_queue_Queue *__pyx_vtab; - PyObject *__weakref__; - PyObject *hub; - PyObject *queue; - PyObject *getters; - PyObject *putters; - PyObject *_event_unlock; - Py_ssize_t _maxsize; -}; - - -/* "gevent/_queue.pxd":50 - * - * @cython.final - * cdef class UnboundQueue(Queue): # <<<<<<<<<<<<<< - * pass - * - */ -struct __pyx_obj_6gevent_6_queue_UnboundQueue { - struct __pyx_obj_6gevent_6_queue_Queue __pyx_base; -}; - - -/* "gevent/_queue.pxd":53 - * pass - * - * cdef class PriorityQueue(Queue): # <<<<<<<<<<<<<< - * pass - * - */ -struct __pyx_obj_6gevent_6_queue_PriorityQueue { - struct __pyx_obj_6gevent_6_queue_Queue __pyx_base; -}; - - -/* "gevent/_queue.pxd":56 - * pass - * - * cdef class LifoQueue(Queue): # <<<<<<<<<<<<<< - * pass - * - */ -struct __pyx_obj_6gevent_6_queue_LifoQueue { - struct __pyx_obj_6gevent_6_queue_Queue __pyx_base; -}; - - -/* "gevent/_queue.pxd":59 - * pass - * - * cdef class JoinableQueue(Queue): # <<<<<<<<<<<<<< - * cdef Event _cond - * cdef readonly int unfinished_tasks - */ -struct __pyx_obj_6gevent_6_queue_JoinableQueue { - struct __pyx_obj_6gevent_6_queue_Queue __pyx_base; - struct __pyx_obj_6gevent_6_event_Event *_cond; - int unfinished_tasks; -}; - - -/* "gevent/_queue.pxd":64 - * - * - * cdef class Channel: # <<<<<<<<<<<<<< - * cdef __weakref__ - * cdef readonly getters - */ -struct __pyx_obj_6gevent_6_queue_Channel { - PyObject_HEAD - struct __pyx_vtabstruct_6gevent_6_queue_Channel *__pyx_vtab; - PyObject *__weakref__; - PyObject *getters; - PyObject *putters; - PyObject *hub; - PyObject *_event_unlock; -}; - - - -/* "gevent/__greenlet_primitives.pxd":40 - * pass - * - * cdef class SwitchOutGreenletWithLoop(TrackedRawGreenlet): # <<<<<<<<<<<<<< - * cdef public loop - * - */ - -struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop { - PyObject *(*__pyx_switch)(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *, int __pyx_skip_dispatch); - PyObject *(*switch_out)(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *, int __pyx_skip_dispatch); -}; -static struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_vtabptr_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop; - - -/* "gevent/__waiter.pxd":33 - * _greenlet_imported = True - * - * cdef class Waiter: # <<<<<<<<<<<<<< - * cdef readonly SwitchOutGreenletWithLoop hub - * cdef readonly greenlet greenlet - */ - -struct __pyx_vtabstruct_6gevent_8__waiter_Waiter { - PyObject *(*get)(struct __pyx_obj_6gevent_8__waiter_Waiter *, int __pyx_skip_dispatch); - PyObject *(*clear)(struct __pyx_obj_6gevent_8__waiter_Waiter *, int __pyx_skip_dispatch); -}; -static struct __pyx_vtabstruct_6gevent_8__waiter_Waiter *__pyx_vtabptr_6gevent_8__waiter_Waiter; - - -/* "gevent/__waiter.pxd":47 - * @cython.final - * @cython.internal - * cdef class MultipleWaiter(Waiter): # <<<<<<<<<<<<<< - * cdef list _values - */ - -struct __pyx_vtabstruct_6gevent_8__waiter_MultipleWaiter { - struct __pyx_vtabstruct_6gevent_8__waiter_Waiter __pyx_base; -}; -static struct __pyx_vtabstruct_6gevent_8__waiter_MultipleWaiter *__pyx_vtabptr_6gevent_8__waiter_MultipleWaiter; - - -/* "gevent/_event.pxd":38 - * cdef void _init() - * - * cdef class _AbstractLinkable: # <<<<<<<<<<<<<< - * # We declare the __weakref__ here in the base (even though - * # that's not really what we want) as a workaround for a Cython - */ - -struct __pyx_vtabstruct_6gevent_6_event__AbstractLinkable { - PyObject *(*rawlink)(struct __pyx_obj_6gevent_6_event__AbstractLinkable *, PyObject *, int __pyx_skip_dispatch); - int (*ready)(struct __pyx_obj_6gevent_6_event__AbstractLinkable *, int __pyx_skip_dispatch); - PyObject *(*unlink)(struct __pyx_obj_6gevent_6_event__AbstractLinkable *, PyObject *, int __pyx_skip_dispatch); - PyObject *(*_check_and_notify)(struct __pyx_obj_6gevent_6_event__AbstractLinkable *); - PyObject *(*_notify_links)(struct __pyx_obj_6gevent_6_event__AbstractLinkable *, int __pyx_skip_dispatch); - PyObject *(*_wait_core)(struct __pyx_obj_6gevent_6_event__AbstractLinkable *, PyObject *, struct __pyx_opt_args_6gevent_6_event_17_AbstractLinkable__wait_core *__pyx_optional_args); - PyObject *(*_wait_return_value)(struct __pyx_obj_6gevent_6_event__AbstractLinkable *, PyObject *, PyObject *); - PyObject *(*_wait)(struct __pyx_obj_6gevent_6_event__AbstractLinkable *, struct __pyx_opt_args_6gevent_6_event_17_AbstractLinkable__wait *__pyx_optional_args); -}; -static struct __pyx_vtabstruct_6gevent_6_event__AbstractLinkable *__pyx_vtabptr_6gevent_6_event__AbstractLinkable; - - -/* "gevent/_event.pxd":60 - * - * - * cdef class Event(_AbstractLinkable): # <<<<<<<<<<<<<< - * cdef bint _flag - * - */ - -struct __pyx_vtabstruct_6gevent_6_event_Event { - struct __pyx_vtabstruct_6gevent_6_event__AbstractLinkable __pyx_base; -}; -static struct __pyx_vtabstruct_6gevent_6_event_Event *__pyx_vtabptr_6gevent_6_event_Event; - - -/* "gevent/_event.pxd":63 - * cdef bint _flag - * - * cdef class AsyncResult(_AbstractLinkable): # <<<<<<<<<<<<<< - * cdef readonly _value - * cdef readonly tuple _exc_info - */ - -struct __pyx_vtabstruct_6gevent_6_event_AsyncResult { - struct __pyx_vtabstruct_6gevent_6_event__AbstractLinkable __pyx_base; - PyObject *(*get)(struct __pyx_obj_6gevent_6_event_AsyncResult *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_6_event_11AsyncResult_get *__pyx_optional_args); - int (*successful)(struct __pyx_obj_6gevent_6_event_AsyncResult *, int __pyx_skip_dispatch); - PyObject *(*wait)(struct __pyx_obj_6gevent_6_event_AsyncResult *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_6_event_11AsyncResult_wait *__pyx_optional_args); - int (*done)(struct __pyx_obj_6gevent_6_event_AsyncResult *, int __pyx_skip_dispatch); - int (*cancel)(struct __pyx_obj_6gevent_6_event_AsyncResult *, int __pyx_skip_dispatch); - int (*cancelled)(struct __pyx_obj_6gevent_6_event_AsyncResult *, int __pyx_skip_dispatch); -}; -static struct __pyx_vtabstruct_6gevent_6_event_AsyncResult *__pyx_vtabptr_6gevent_6_event_AsyncResult; - - -/* "src/gevent/queue.py":75 - * locals()['Waiter'] = gevent._waiter.Waiter - * - * class ItemWaiter(Waiter): # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * # pylint:disable=assigning-non-slot - * __slots__ = ( - */ - -struct __pyx_vtabstruct_6gevent_6_queue_ItemWaiter { - struct __pyx_vtabstruct_6gevent_8__waiter_Waiter __pyx_base; -}; -static struct __pyx_vtabstruct_6gevent_6_queue_ItemWaiter *__pyx_vtabptr_6gevent_6_queue_ItemWaiter; - - -/* "src/gevent/queue.py":93 - * return self.switch(self) - * - * class Queue(object): # <<<<<<<<<<<<<< - * """ - * Create a queue object with a given maximum size. - */ - -struct __pyx_vtabstruct_6gevent_6_queue_Queue { - PyObject *(*_get)(struct __pyx_obj_6gevent_6_queue_Queue *, int __pyx_skip_dispatch); - PyObject *(*_put)(struct __pyx_obj_6gevent_6_queue_Queue *, PyObject *, int __pyx_skip_dispatch); - PyObject *(*_peek)(struct __pyx_obj_6gevent_6_queue_Queue *, int __pyx_skip_dispatch); - Py_ssize_t (*qsize)(struct __pyx_obj_6gevent_6_queue_Queue *, int __pyx_skip_dispatch); - int (*empty)(struct __pyx_obj_6gevent_6_queue_Queue *, int __pyx_skip_dispatch); - int (*full)(struct __pyx_obj_6gevent_6_queue_Queue *, int __pyx_skip_dispatch); - PyObject *(*put)(struct __pyx_obj_6gevent_6_queue_Queue *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_6_queue_5Queue_put *__pyx_optional_args); - PyObject *(*put_nowait)(struct __pyx_obj_6gevent_6_queue_Queue *, PyObject *, int __pyx_skip_dispatch); - PyObject *(*__pyx___get_or_peek)(struct __pyx_obj_6gevent_6_queue_Queue *, PyObject *, PyObject *, PyObject *); - PyObject *(*get)(struct __pyx_obj_6gevent_6_queue_Queue *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_6_queue_5Queue_get *__pyx_optional_args); - PyObject *(*get_nowait)(struct __pyx_obj_6gevent_6_queue_Queue *, int __pyx_skip_dispatch); - PyObject *(*peek)(struct __pyx_obj_6gevent_6_queue_Queue *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_6_queue_5Queue_peek *__pyx_optional_args); - PyObject *(*peek_nowait)(struct __pyx_obj_6gevent_6_queue_Queue *, int __pyx_skip_dispatch); - PyObject *(*_schedule_unlock)(struct __pyx_obj_6gevent_6_queue_Queue *); -}; -static struct __pyx_vtabstruct_6gevent_6_queue_Queue *__pyx_vtabptr_6gevent_6_queue_Queue; - - -/* "src/gevent/queue.py":413 - * - * - * class UnboundQueue(Queue): # <<<<<<<<<<<<<< - * # A specialization of Queue that knows it can never - * # be bound. Changing its maxsize has no effect. - */ - -struct __pyx_vtabstruct_6gevent_6_queue_UnboundQueue { - struct __pyx_vtabstruct_6gevent_6_queue_Queue __pyx_base; -}; -static struct __pyx_vtabstruct_6gevent_6_queue_UnboundQueue *__pyx_vtabptr_6gevent_6_queue_UnboundQueue; - - -/* "src/gevent/queue.py":431 - * - * - * class PriorityQueue(Queue): # <<<<<<<<<<<<<< - * '''A subclass of :class:`Queue` that retrieves entries in priority order (lowest first). - * - */ - -struct __pyx_vtabstruct_6gevent_6_queue_PriorityQueue { - struct __pyx_vtabstruct_6gevent_6_queue_Queue __pyx_base; -}; -static struct __pyx_vtabstruct_6gevent_6_queue_PriorityQueue *__pyx_vtabptr_6gevent_6_queue_PriorityQueue; - - -/* "src/gevent/queue.py":456 - * - * - * class LifoQueue(Queue): # <<<<<<<<<<<<<< - * '''A subclass of :class:`Queue` that retrieves most recently added entries first.''' - * - */ - -struct __pyx_vtabstruct_6gevent_6_queue_LifoQueue { - struct __pyx_vtabstruct_6gevent_6_queue_Queue __pyx_base; -}; -static struct __pyx_vtabstruct_6gevent_6_queue_LifoQueue *__pyx_vtabptr_6gevent_6_queue_LifoQueue; - - -/* "src/gevent/queue.py":474 - * - * - * class JoinableQueue(Queue): # <<<<<<<<<<<<<< - * """ - * A subclass of :class:`Queue` that additionally has - */ - -struct __pyx_vtabstruct_6gevent_6_queue_JoinableQueue { - struct __pyx_vtabstruct_6gevent_6_queue_Queue __pyx_base; -}; -static struct __pyx_vtabstruct_6gevent_6_queue_JoinableQueue *__pyx_vtabptr_6gevent_6_queue_JoinableQueue; - - -/* "src/gevent/queue.py":560 - * - * - * class Channel(object): # <<<<<<<<<<<<<< - * - * __slots__ = ( - */ - -struct __pyx_vtabstruct_6gevent_6_queue_Channel { - PyObject *(*get)(struct __pyx_obj_6gevent_6_queue_Channel *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_6_queue_7Channel_get *__pyx_optional_args); - PyObject *(*get_nowait)(struct __pyx_obj_6gevent_6_queue_Channel *, int __pyx_skip_dispatch); - PyObject *(*_schedule_unlock)(struct __pyx_obj_6gevent_6_queue_Channel *); -}; -static struct __pyx_vtabstruct_6gevent_6_queue_Channel *__pyx_vtabptr_6gevent_6_queue_Channel; - -/* --- Runtime support code (head) --- */ -/* Refnanny.proto */ -#ifndef CYTHON_REFNANNY - #define CYTHON_REFNANNY 0 -#endif -#if CYTHON_REFNANNY - typedef struct { - void (*INCREF)(void*, PyObject*, int); - void (*DECREF)(void*, PyObject*, int); - void (*GOTREF)(void*, PyObject*, int); - void (*GIVEREF)(void*, PyObject*, int); - void* (*SetupContext)(const char*, int, const char*); - void (*FinishContext)(void**); - } __Pyx_RefNannyAPIStruct; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); - #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; -#ifdef WITH_THREAD - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - if (acquire_gil) {\ - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - PyGILState_Release(__pyx_gilstate_save);\ - } else {\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - } -#else - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) -#endif - #define __Pyx_RefNannyFinishContext()\ - __Pyx_RefNanny->FinishContext(&__pyx_refnanny) - #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) - #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) - #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) - #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0) -#else - #define __Pyx_RefNannyDeclarations - #define __Pyx_RefNannySetupContext(name, acquire_gil) - #define __Pyx_RefNannyFinishContext() - #define __Pyx_INCREF(r) Py_INCREF(r) - #define __Pyx_DECREF(r) Py_DECREF(r) - #define __Pyx_GOTREF(r) - #define __Pyx_GIVEREF(r) - #define __Pyx_XINCREF(r) Py_XINCREF(r) - #define __Pyx_XDECREF(r) Py_XDECREF(r) - #define __Pyx_XGOTREF(r) - #define __Pyx_XGIVEREF(r) -#endif -#define __Pyx_XDECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_XDECREF(tmp);\ - } while (0) -#define __Pyx_DECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_DECREF(tmp);\ - } while (0) -#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) -#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) - -/* PyObjectGetAttrStr.proto */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) -#endif - -/* GetBuiltinName.proto */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name); - -/* PyCFunctionFastCall.proto */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); -#else -#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) -#endif - -/* PyFunctionFastCall.proto */ -#if CYTHON_FAST_PYCALL -#define __Pyx_PyFunction_FastCall(func, args, nargs)\ - __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs); -#else -#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) -#endif -#endif - -/* PyObjectCall.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); -#else -#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) -#endif - -/* PyObjectCallMethO.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); -#endif - -/* PyObjectCallOneArg.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); - -/* PyThreadStateGet.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; -#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; -#define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type -#else -#define __Pyx_PyThreadState_declare -#define __Pyx_PyThreadState_assign -#define __Pyx_PyErr_Occurred() PyErr_Occurred() -#endif - -/* SaveResetException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -#else -#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) -#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) -#endif - -/* PyErrExceptionMatches.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) -static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); -#else -#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) -#endif - -/* PyErrFetchRestore.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) -#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) -#else -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#endif -#else -#define __Pyx_PyErr_Clear() PyErr_Clear() -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) -#endif - -/* RaiseArgTupleInvalid.proto */ -static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, - Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); - -/* RaiseDoubleKeywords.proto */ -static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); - -/* ParseKeywords.proto */ -static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\ - PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\ - const char* function_name); - -/* PyIntBinop.proto */ -#if !CYTHON_COMPILING_IN_PYPY -static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, int inplace); -#else -#define __Pyx_PyInt_EqObjC(op1, op2, intval, inplace)\ - PyObject_RichCompare(op1, op2, Py_EQ) - #endif - -/* Import.proto */ -static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); - -/* GetModuleGlobalName.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name); - -/* PyObjectCallNoArg.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); -#else -#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL) -#endif - -/* GetItemInt.proto */ -#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ - (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ - __Pyx_GetItemInt_Generic(o, to_py_func(i)))) -#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ - (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, - int wraparound, int boundscheck); -#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ - (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, - int wraparound, int boundscheck); -static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, - int is_list, int wraparound, int boundscheck); - -/* ListAppend.proto */ -#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS -static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { - PyListObject* L = (PyListObject*) list; - Py_ssize_t len = Py_SIZE(list); - if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) { - Py_INCREF(x); - PyList_SET_ITEM(list, len, x); - Py_SIZE(list) = len+1; - return 0; - } - return PyList_Append(list, x); -} -#else -#define __Pyx_PyList_Append(L,x) PyList_Append(L,x) -#endif - -/* PyObjectCallMethod1.proto */ -static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg); -static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg); - -/* append.proto */ -static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x); - -/* GetAttr.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *); - -/* GetAttr3.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *); - -/* StringJoin.proto */ -#if PY_MAJOR_VERSION < 3 -#define __Pyx_PyString_Join __Pyx_PyBytes_Join -#define __Pyx_PyBaseString_Join(s, v) (PyUnicode_CheckExact(s) ? PyUnicode_Join(s, v) : __Pyx_PyBytes_Join(s, v)) -#else -#define __Pyx_PyString_Join PyUnicode_Join -#define __Pyx_PyBaseString_Join PyUnicode_Join -#endif -#if CYTHON_COMPILING_IN_CPYTHON - #if PY_MAJOR_VERSION < 3 - #define __Pyx_PyBytes_Join _PyString_Join - #else - #define __Pyx_PyBytes_Join _PyBytes_Join - #endif -#else -static CYTHON_INLINE PyObject* __Pyx_PyBytes_Join(PyObject* sep, PyObject* values); -#endif - -/* WriteUnraisableException.proto */ -static void __Pyx_WriteUnraisable(const char *name, int clineno, - int lineno, const char *filename, - int full_traceback, int nogil); - -/* RaiseException.proto */ -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); - -/* GetException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) -static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#else -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); -#endif - -/* SwapException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#else -static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); -#endif - -/* None.proto */ -static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname); - -/* PyObjectCallMethod0.proto */ -static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name); - -/* pop.proto */ -static CYTHON_INLINE PyObject* __Pyx__PyObject_Pop(PyObject* L); -#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS -static CYTHON_INLINE PyObject* __Pyx_PyList_Pop(PyObject* L); -#define __Pyx_PyObject_Pop(L) (likely(PyList_CheckExact(L)) ?\ - __Pyx_PyList_Pop(L) : __Pyx__PyObject_Pop(L)) -#else -#define __Pyx_PyList_Pop(L) __Pyx__PyObject_Pop(L) -#define __Pyx_PyObject_Pop(L) __Pyx__PyObject_Pop(L) -#endif - -/* UnpackUnboundCMethod.proto */ -typedef struct { - PyObject *type; - PyObject **method_name; - PyCFunction func; - PyObject *method; - int flag; -} __Pyx_CachedCFunction; - -/* CallUnboundCMethod0.proto */ -static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self); -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_CallUnboundCMethod0(cfunc, self)\ - (likely((cfunc)->func) ?\ - (likely((cfunc)->flag == METH_NOARGS) ? (*((cfunc)->func))(self, NULL) :\ - (PY_VERSION_HEX >= 0x030600B1 && likely((cfunc)->flag == METH_FASTCALL) ?\ - (PY_VERSION_HEX >= 0x030700A0 ?\ - (*(__Pyx_PyCFunctionFast)(cfunc)->func)(self, &__pyx_empty_tuple, 0) :\ - (*(__Pyx_PyCFunctionFastWithKeywords)(cfunc)->func)(self, &__pyx_empty_tuple, 0, NULL)) :\ - (PY_VERSION_HEX >= 0x030700A0 && (cfunc)->flag == (METH_FASTCALL | METH_KEYWORDS) ?\ - (*(__Pyx_PyCFunctionFastWithKeywords)(cfunc)->func)(self, &__pyx_empty_tuple, 0, NULL) :\ - (likely((cfunc)->flag == (METH_VARARGS | METH_KEYWORDS)) ? ((*(PyCFunctionWithKeywords)(cfunc)->func)(self, __pyx_empty_tuple, NULL)) :\ - ((cfunc)->flag == METH_VARARGS ? (*((cfunc)->func))(self, __pyx_empty_tuple) :\ - __Pyx__CallUnboundCMethod0(cfunc, self)))))) :\ - __Pyx__CallUnboundCMethod0(cfunc, self)) -#else -#define __Pyx_CallUnboundCMethod0(cfunc, self) __Pyx__CallUnboundCMethod0(cfunc, self) -#endif - -/* ImportFrom.proto */ -static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); - -/* ExtTypeTest.proto */ -static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); - -/* RaiseTooManyValuesToUnpack.proto */ -static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); - -/* RaiseNeedMoreValuesToUnpack.proto */ -static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); - -/* IterFinish.proto */ -static CYTHON_INLINE int __Pyx_IterFinish(void); - -/* UnpackItemEndCheck.proto */ -static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); - -/* CallNextTpDealloc.proto */ -static void __Pyx_call_next_tp_dealloc(PyObject* obj, destructor current_tp_dealloc); - -/* CallNextTpTraverse.proto */ -static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse); - -/* CallNextTpClear.proto */ -static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_dealloc); - -/* GetVTable.proto */ -static void* __Pyx_GetVtable(PyObject *dict); - -/* PyObject_GenericGetAttrNoDict.proto */ -#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr -#endif - -/* SetVTable.proto */ -static int __Pyx_SetVtable(PyObject *dict, void *vtable); - -/* PyObject_GenericGetAttr.proto */ -#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr -#endif - -/* HasAttr.proto */ -static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *); - -/* FetchCommonType.proto */ -static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); - -/* CythonFunction.proto */ -#define __Pyx_CyFunction_USED 1 -#define __Pyx_CYFUNCTION_STATICMETHOD 0x01 -#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 -#define __Pyx_CYFUNCTION_CCLASS 0x04 -#define __Pyx_CyFunction_GetClosure(f)\ - (((__pyx_CyFunctionObject *) (f))->func_closure) -#define __Pyx_CyFunction_GetClassObj(f)\ - (((__pyx_CyFunctionObject *) (f))->func_classobj) -#define __Pyx_CyFunction_Defaults(type, f)\ - ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) -#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ - ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) -typedef struct { - PyCFunctionObject func; -#if PY_VERSION_HEX < 0x030500A0 - PyObject *func_weakreflist; -#endif - PyObject *func_dict; - PyObject *func_name; - PyObject *func_qualname; - PyObject *func_doc; - PyObject *func_globals; - PyObject *func_code; - PyObject *func_closure; - PyObject *func_classobj; - void *defaults; - int defaults_pyobjects; - int flags; - PyObject *defaults_tuple; - PyObject *defaults_kwdict; - PyObject *(*defaults_getter)(PyObject *); - PyObject *func_annotations; -} __pyx_CyFunctionObject; -static PyTypeObject *__pyx_CyFunctionType = 0; -#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, globals, code)\ - __Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, globals, code) -static PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml, - int flags, PyObject* qualname, - PyObject *self, - PyObject *module, PyObject *globals, - PyObject* code); -static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, - size_t size, - int pyobjects); -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, - PyObject *tuple); -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, - PyObject *dict); -static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, - PyObject *dict); -static int __pyx_CyFunction_init(void); - -/* GetNameInClass.proto */ -static PyObject *__Pyx_GetNameInClass(PyObject *nmspace, PyObject *name); - -/* Globals.proto */ -static PyObject* __Pyx_Globals(void); - -/* CLineInTraceback.proto */ -#ifdef CYTHON_CLINE_IN_TRACEBACK -#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) -#else -static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); -#endif - -/* CodeObjectCache.proto */ -typedef struct { - PyCodeObject* code_object; - int code_line; -} __Pyx_CodeObjectCacheEntry; -struct __Pyx_CodeObjectCache { - int count; - int max_count; - __Pyx_CodeObjectCacheEntry* entries; -}; -static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; -static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); -static PyCodeObject *__pyx_find_code_object(int code_line); -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); - -/* AddTraceback.proto */ -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename); - -/* CIntToPy.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); - -/* CIntToPy.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); - -/* CIntFromPy.proto */ -static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); - -/* CIntFromPy.proto */ -static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); - -/* FastTypeChecks.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); -#else -#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) -#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) -#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) -#endif -#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) - -/* CheckBinaryVersion.proto */ -static int __Pyx_check_binary_version(void); - -/* PyObjectSetAttrStr.proto */ -#if CYTHON_USE_TYPE_SLOTS -#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o, n, NULL) -static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value); -#else -#define __Pyx_PyObject_DelAttrStr(o,n) PyObject_DelAttr(o,n) -#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v) -#endif - -/* VoidPtrExport.proto */ -static int __Pyx_ExportVoidPtr(PyObject *name, void *p, const char *sig); - -/* FunctionExport.proto */ -static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig); - -/* PyIdentifierFromString.proto */ -#if !defined(__Pyx_PyIdentifier_FromString) -#if PY_MAJOR_VERSION < 3 - #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s) -#else - #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s) -#endif -#endif - -/* ModuleImport.proto */ -static PyObject *__Pyx_ImportModule(const char *name); - -/* TypeImport.proto */ -static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict); - -/* VoidPtrImport.proto */ -static int __Pyx_ImportVoidPtr(PyObject *module, const char *name, void **p, const char *sig); - -/* FunctionImport.proto */ -static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig); - -/* InitStrings.proto */ -static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); - -static PyObject *__pyx_f_6gevent_6_queue_5Queue__get(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_6_queue_5Queue__peek(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_6_queue_5Queue__put(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, PyObject *__pyx_v_item, int __pyx_skip_dispatch); /* proto*/ -static Py_ssize_t __pyx_f_6gevent_6_queue_5Queue_qsize(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ -static int __pyx_f_6gevent_6_queue_5Queue_empty(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ -static int __pyx_f_6gevent_6_queue_5Queue_full(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_6_queue_5Queue_put(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, PyObject *__pyx_v_item, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_6_queue_5Queue_put *__pyx_optional_args); /* proto*/ -static PyObject *__pyx_f_6gevent_6_queue_5Queue_put_nowait(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, PyObject *__pyx_v_item, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_6_queue_5Queue___get_or_peek(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, PyObject *__pyx_v_method, PyObject *__pyx_v_block, PyObject *__pyx_v_timeout); /* proto*/ -static PyObject *__pyx_f_6gevent_6_queue_5Queue_get(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_6_queue_5Queue_get *__pyx_optional_args); /* proto*/ -static PyObject *__pyx_f_6gevent_6_queue_5Queue_get_nowait(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_6_queue_5Queue_peek(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_6_queue_5Queue_peek *__pyx_optional_args); /* proto*/ -static PyObject *__pyx_f_6gevent_6_queue_5Queue_peek_nowait(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_6_queue_5Queue__schedule_unlock(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self); /* proto*/ -static PyObject *__pyx_f_6gevent_6_queue_12UnboundQueue_put(struct __pyx_obj_6gevent_6_queue_UnboundQueue *__pyx_v_self, PyObject *__pyx_v_item, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_6_queue_12UnboundQueue_put *__pyx_optional_args); /* proto*/ -static PyObject *__pyx_f_6gevent_6_queue_13PriorityQueue__put(struct __pyx_obj_6gevent_6_queue_PriorityQueue *__pyx_v_self, PyObject *__pyx_v_item, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_6_queue_13PriorityQueue__get(struct __pyx_obj_6gevent_6_queue_PriorityQueue *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_6_queue_9LifoQueue__put(struct __pyx_obj_6gevent_6_queue_LifoQueue *__pyx_v_self, PyObject *__pyx_v_item, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_6_queue_9LifoQueue__get(struct __pyx_obj_6gevent_6_queue_LifoQueue *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_6_queue_9LifoQueue__peek(struct __pyx_obj_6gevent_6_queue_LifoQueue *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_6_queue_13JoinableQueue__put(struct __pyx_obj_6gevent_6_queue_JoinableQueue *__pyx_v_self, PyObject *__pyx_v_item, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_6_queue_7Channel_get(struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_6_queue_7Channel_get *__pyx_optional_args); /* proto*/ -static PyObject *__pyx_f_6gevent_6_queue_7Channel_get_nowait(struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_6gevent_6_queue_7Channel__schedule_unlock(struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self); /* proto*/ - -/* Module declarations from 'cython' */ - -/* Module declarations from 'greenlet' */ - -/* Module declarations from 'gevent.__greenlet_primitives' */ -static PyTypeObject *__pyx_ptype_6gevent_21__greenlet_primitives_greenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop = 0; -static PyObject **__pyx_vp_6gevent_21__greenlet_primitives_wref = 0; -#define __pyx_v_6gevent_21__greenlet_primitives_wref (*__pyx_vp_6gevent_21__greenlet_primitives_wref) -static PyObject **__pyx_vp_6gevent_21__greenlet_primitives_BlockingSwitchOutError = 0; -#define __pyx_v_6gevent_21__greenlet_primitives_BlockingSwitchOutError (*__pyx_vp_6gevent_21__greenlet_primitives_BlockingSwitchOutError) -static int *__pyx_vp_6gevent_21__greenlet_primitives__greenlet_imported = 0; -#define __pyx_v_6gevent_21__greenlet_primitives__greenlet_imported (*__pyx_vp_6gevent_21__greenlet_primitives__greenlet_imported) - -/* Module declarations from 'gevent.__hub_local' */ -static PyObject **__pyx_vp_6gevent_11__hub_local__threadlocal = 0; -#define __pyx_v_6gevent_11__hub_local__threadlocal (*__pyx_vp_6gevent_11__hub_local__threadlocal) -static struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *(*__pyx_f_6gevent_11__hub_local_get_hub_noargs)(int __pyx_skip_dispatch); /*proto*/ - -/* Module declarations from 'gevent.__waiter' */ -static PyTypeObject *__pyx_ptype_6gevent_8__waiter_greenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_8__waiter_Waiter = 0; -static PyTypeObject *__pyx_ptype_6gevent_8__waiter_MultipleWaiter = 0; -static PyObject **__pyx_vp_6gevent_8__waiter_sys = 0; -#define __pyx_v_6gevent_8__waiter_sys (*__pyx_vp_6gevent_8__waiter_sys) -static PyObject **__pyx_vp_6gevent_8__waiter_ConcurrentObjectUseError = 0; -#define __pyx_v_6gevent_8__waiter_ConcurrentObjectUseError (*__pyx_vp_6gevent_8__waiter_ConcurrentObjectUseError) -static int *__pyx_vp_6gevent_8__waiter__greenlet_imported = 0; -#define __pyx_v_6gevent_8__waiter__greenlet_imported (*__pyx_vp_6gevent_8__waiter__greenlet_imported) -static PyObject **__pyx_vp_6gevent_8__waiter__NONE = 0; -#define __pyx_v_6gevent_8__waiter__NONE (*__pyx_vp_6gevent_8__waiter__NONE) - -/* Module declarations from 'gevent._event' */ -static PyTypeObject *__pyx_ptype_6gevent_6_event_greenlet = 0; -static PyTypeObject *__pyx_ptype_6gevent_6_event__AbstractLinkable = 0; -static PyTypeObject *__pyx_ptype_6gevent_6_event_Event = 0; -static PyTypeObject *__pyx_ptype_6gevent_6_event_AsyncResult = 0; -static PyObject **__pyx_vp_6gevent_6_event__None = 0; -#define __pyx_v_6gevent_6_event__None (*__pyx_vp_6gevent_6_event__None) -static PyObject **__pyx_vp_6gevent_6_event_reraise = 0; -#define __pyx_v_6gevent_6_event_reraise (*__pyx_vp_6gevent_6_event_reraise) -static PyObject **__pyx_vp_6gevent_6_event_dump_traceback = 0; -#define __pyx_v_6gevent_6_event_dump_traceback (*__pyx_vp_6gevent_6_event_dump_traceback) -static PyObject **__pyx_vp_6gevent_6_event_load_traceback = 0; -#define __pyx_v_6gevent_6_event_load_traceback (*__pyx_vp_6gevent_6_event_load_traceback) -static PyObject **__pyx_vp_6gevent_6_event_InvalidSwitchError = 0; -#define __pyx_v_6gevent_6_event_InvalidSwitchError (*__pyx_vp_6gevent_6_event_InvalidSwitchError) -static PyObject **__pyx_vp_6gevent_6_event_Timeout = 0; -#define __pyx_v_6gevent_6_event_Timeout (*__pyx_vp_6gevent_6_event_Timeout) -static int *__pyx_vp_6gevent_6_event__greenlet_imported = 0; -#define __pyx_v_6gevent_6_event__greenlet_imported (*__pyx_vp_6gevent_6_event__greenlet_imported) - -/* Module declarations from 'gevent._queue' */ -static PyTypeObject *__pyx_ptype_6gevent_6_queue_ItemWaiter = 0; -static PyTypeObject *__pyx_ptype_6gevent_6_queue_Queue = 0; -static PyTypeObject *__pyx_ptype_6gevent_6_queue_UnboundQueue = 0; -static PyTypeObject *__pyx_ptype_6gevent_6_queue_PriorityQueue = 0; -static PyTypeObject *__pyx_ptype_6gevent_6_queue_LifoQueue = 0; -static PyTypeObject *__pyx_ptype_6gevent_6_queue_JoinableQueue = 0; -static PyTypeObject *__pyx_ptype_6gevent_6_queue_Channel = 0; -static PyObject *__pyx_v_6gevent_6_queue__heappush = 0; -static PyObject *__pyx_v_6gevent_6_queue__heappop = 0; -static PyObject *__pyx_v_6gevent_6_queue__heapify = 0; -static PyObject *__pyx_f_6gevent_6_queue__safe_remove(PyObject *, PyObject *); /*proto*/ -#define __Pyx_MODULE_NAME "gevent._queue" -extern int __pyx_module_is_main_gevent___queue; -int __pyx_module_is_main_gevent___queue = 0; - -/* Implementation of 'gevent._queue' */ -static PyObject *__pyx_builtin_ValueError; -static PyObject *__pyx_builtin_DeprecationWarning; -static PyObject *__pyx_builtin_hex; -static PyObject *__pyx_builtin_id; -static PyObject *__pyx_builtin_StopIteration; -static const char __pyx_k_q[] = "q"; -static const char __pyx_k__2[] = " "; -static const char __pyx_k__3[] = ""; -static const char __pyx_k_id[] = "id"; -static const char __pyx_k_all[] = "__all__"; -static const char __pyx_k_get[] = "_get"; -static const char __pyx_k_hex[] = "hex"; -static const char __pyx_k_hub[] = "hub"; -static const char __pyx_k_pop[] = "pop"; -static const char __pyx_k_put[] = "_put"; -static const char __pyx_k_s_s[] = "<%s%s>"; -static const char __pyx_k_set[] = "set"; -static const char __pyx_k_sys[] = "sys"; -static const char __pyx_k_Full[] = "Full"; -static const char __pyx_k_cond[] = "_cond"; -static const char __pyx_k_copy[] = "copy"; -static const char __pyx_k_full[] = "full"; -static const char __pyx_k_init[] = "__init__"; -static const char __pyx_k_item[] = "item"; -static const char __pyx_k_join[] = "join"; -static const char __pyx_k_loop[] = "loop"; -static const char __pyx_k_main[] = "__main__"; -static const char __pyx_k_name[] = "__name__"; -static const char __pyx_k_next[] = "__next__"; -static const char __pyx_k_peek[] = "_peek"; -static const char __pyx_k_self[] = "self"; -static const char __pyx_k_test[] = "__test__"; -static const char __pyx_k_wait[] = "wait"; -static const char __pyx_k_warn[] = "warn"; -static const char __pyx_k_Empty[] = "Empty"; -static const char __pyx_k_Event[] = "Event"; -static const char __pyx_k_Queue[] = "Queue"; -static const char __pyx_k_block[] = "block"; -static const char __pyx_k_clear[] = "clear"; -static const char __pyx_k_close[] = "close"; -static const char __pyx_k_deque[] = "deque"; -static const char __pyx_k_empty[] = "empty"; -static const char __pyx_k_get_2[] = "get"; -static const char __pyx_k_heapq[] = "heapq"; -static const char __pyx_k_items[] = "items"; -static const char __pyx_k_put_2[] = "put"; -static const char __pyx_k_qsize[] = "qsize"; -static const char __pyx_k_queue[] = "queue"; -static const char __pyx_k_s_s_2[] = "<%s %s>"; -static const char __pyx_k_slots[] = "__slots__"; -static const char __pyx_k_throw[] = "throw"; -static const char __pyx_k_Waiter[] = "Waiter"; -static const char __pyx_k_append[] = "append"; -static const char __pyx_k_cancel[] = "cancel"; -static const char __pyx_k_format[] = "_format"; -static const char __pyx_k_getter[] = "getter"; -static const char __pyx_k_gevent[] = "gevent"; -static const char __pyx_k_import[] = "__import__"; -static const char __pyx_k_next_2[] = "next"; -static const char __pyx_k_peek_2[] = "peek"; -static const char __pyx_k_putter[] = "putter"; -static const char __pyx_k_remove[] = "remove"; -static const char __pyx_k_repeat[] = "repeat"; -static const char __pyx_k_result[] = "result"; -static const char __pyx_k_switch[] = "switch"; -static const char __pyx_k_unlock[] = "_unlock"; -static const char __pyx_k_waiter[] = "_waiter"; -static const char __pyx_k_Channel[] = "Channel"; -static const char __pyx_k_Timeout[] = "Timeout"; -static const char __pyx_k_get_hub[] = "get_hub"; -static const char __pyx_k_getters[] = "getters"; -static const char __pyx_k_heapify[] = "_heapify"; -static const char __pyx_k_heappop[] = "_heappop"; -static const char __pyx_k_imports[] = "__imports__"; -static const char __pyx_k_maxsize[] = "maxsize"; -static const char __pyx_k_popleft[] = "popleft"; -static const char __pyx_k_putters[] = "putters"; -static const char __pyx_k_queue_2[] = "__queue__"; -static const char __pyx_k_queue_r[] = "queue=%r"; -static const char __pyx_k_timeout[] = "timeout"; -static const char __pyx_k_weakref[] = "__weakref__"; -static const char __pyx_k_exc_info[] = "exc_info"; -static const char __pyx_k_greenlet[] = "greenlet"; -static const char __pyx_k_heappush[] = "_heappush"; -static const char __pyx_k_pyx_capi[] = "__pyx_capi__"; -static const char __pyx_k_s_at_s_s[] = "<%s at %s%s>"; -static const char __pyx_k_waiter_2[] = "waiter"; -static const char __pyx_k_warnings[] = "warnings"; -static const char __pyx_k_LifoQueue[] = "LifoQueue"; -static const char __pyx_k_Queue_get[] = "Queue.get"; -static const char __pyx_k_Queue_put[] = "Queue.put"; -static const char __pyx_k_getters_s[] = "getters[%s]"; -static const char __pyx_k_heapify_2[] = "heapify"; -static const char __pyx_k_heappop_2[] = "heappop"; -static const char __pyx_k_maxsize_2[] = "_maxsize"; -static const char __pyx_k_maxsize_r[] = "maxsize=%r"; -static const char __pyx_k_putters_s[] = "putters[%s]"; -static const char __pyx_k_task_done[] = "task_done"; -static const char __pyx_k_Queue__get[] = "Queue._get"; -static const char __pyx_k_Queue__put[] = "Queue._put"; -static const char __pyx_k_Queue_copy[] = "Queue.copy"; -static const char __pyx_k_Queue_full[] = "Queue.full"; -static const char __pyx_k_Queue_peek[] = "Queue.peek"; -static const char __pyx_k_ValueError[] = "ValueError"; -static const char __pyx_k_extensions[] = "__extensions__"; -static const char __pyx_k_get_nowait[] = "get_nowait"; -static const char __pyx_k_getcurrent[] = "getcurrent"; -static const char __pyx_k_heappush_2[] = "heappush"; -static const char __pyx_k_implements[] = "__implements__"; -static const char __pyx_k_put_nowait[] = "put_nowait"; -static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__"; -static const char __pyx_k_s_at_s_s_2[] = "<%s at %s %s>"; -static const char __pyx_k_stacklevel[] = "stacklevel"; -static const char __pyx_k_warn_depth[] = "_warn_depth"; -static const char __pyx_k_Channel_get[] = "Channel.get"; -static const char __pyx_k_Channel_put[] = "Channel.put"; -static const char __pyx_k_Queue__peek[] = "Queue._peek"; -static const char __pyx_k_Queue_empty[] = "Queue.empty"; -static const char __pyx_k_Queue_qsize[] = "Queue.qsize"; -static const char __pyx_k_SimpleQueue[] = "SimpleQueue"; -static const char __pyx_k_collections[] = "collections"; -static const char __pyx_k_getters_s_2[] = " getters[%s]"; -static const char __pyx_k_peek_nowait[] = "peek_nowait"; -static const char __pyx_k_putters_s_2[] = " putters[%s]"; -static const char __pyx_k_Channel_full[] = "Channel.full"; -static const char __pyx_k_create_queue[] = "_create_queue"; -static const char __pyx_k_event_unlock[] = "_event_unlock"; -static const char __pyx_k_gevent__util[] = "gevent._util"; -static const char __pyx_k_gevent_event[] = "gevent.event"; -static const char __pyx_k_run_callback[] = "run_callback"; -static const char __pyx_k_version_info[] = "version_info"; -static const char __pyx_k_Channel_empty[] = "Channel.empty"; -static const char __pyx_k_Channel_qsize[] = "Channel.qsize"; -static const char __pyx_k_JoinableQueue[] = "JoinableQueue"; -static const char __pyx_k_PriorityQueue[] = "PriorityQueue"; -static const char __pyx_k_PySimpleQueue[] = "_PySimpleQueue"; -static const char __pyx_k_Queue__format[] = "Queue._format"; -static const char __pyx_k_Queue__unlock[] = "Queue._unlock"; -static const char __pyx_k_StopIteration[] = "StopIteration"; -static const char __pyx_k_gevent__queue[] = "gevent._queue"; -static const char __pyx_k_LifoQueue__get[] = "LifoQueue._get"; -static const char __pyx_k_LifoQueue__put[] = "LifoQueue._put"; -static const char __pyx_k_get_hub_noargs[] = "get_hub_noargs"; -static const char __pyx_k_gevent__waiter[] = "gevent._waiter"; -static const char __pyx_k_gevent_timeout[] = "gevent.timeout"; -static const char __pyx_k_import_c_accel[] = "import_c_accel"; -static const char __pyx_k_put_and_switch[] = "put_and_switch"; -static const char __pyx_k_Channel__format[] = "Channel._format"; -static const char __pyx_k_Channel__unlock[] = "Channel._unlock"; -static const char __pyx_k_LifoQueue__peek[] = "LifoQueue._peek"; -static const char __pyx_k_tasks_s__cond_s[] = " tasks=%s _cond=%s"; -static const char __pyx_k_Queue_get_nowait[] = "Queue.get_nowait"; -static const char __pyx_k_Queue_put_nowait[] = "Queue.put_nowait"; -static const char __pyx_k_UnboundQueue_put[] = "UnboundQueue.put"; -static const char __pyx_k_unfinished_tasks[] = "unfinished_tasks"; -static const char __pyx_k_Queue_peek_nowait[] = "Queue.peek_nowait"; -static const char __pyx_k_gevent__hub_local[] = "gevent._hub_local"; -static const char __pyx_k_gevent_exceptions[] = "gevent.exceptions"; -static const char __pyx_k_Channel_get_nowait[] = "Channel.get_nowait"; -static const char __pyx_k_Channel_put_nowait[] = "Channel.put_nowait"; -static const char __pyx_k_DeprecationWarning[] = "DeprecationWarning"; -static const char __pyx_k_InvalidSwitchError[] = "InvalidSwitchError"; -static const char __pyx_k_JoinableQueue__put[] = "JoinableQueue._put"; -static const char __pyx_k_JoinableQueue_copy[] = "JoinableQueue.copy"; -static const char __pyx_k_JoinableQueue_join[] = "JoinableQueue.join"; -static const char __pyx_k_PriorityQueue__get[] = "PriorityQueue._get"; -static const char __pyx_k_PriorityQueue__put[] = "PriorityQueue._put"; -static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; -static const char __pyx_k_start_new_or_dummy[] = "_start_new_or_dummy"; -static const char __pyx_k_Queue__create_queue[] = "Queue._create_queue"; -static const char __pyx_k_src_gevent_queue_py[] = "src\\gevent\\queue.py"; -static const char __pyx_k_JoinableQueue__format[] = "JoinableQueue._format"; -static const char __pyx_k_JoinableQueue_task_done[] = "JoinableQueue.task_done"; -static const char __pyx_k_LifoQueue__create_queue[] = "LifoQueue._create_queue"; -static const char __pyx_k_ItemWaiter_put_and_switch[] = "ItemWaiter.put_and_switch"; -static const char __pyx_k_PriorityQueue__create_queue[] = "PriorityQueue._create_queue"; -static const char __pyx_k_UnboundQueue_has_no_maxsize[] = "UnboundQueue has no maxsize"; -static const char __pyx_k_Channels_have_a_maxsize_of_1[] = "Channels have a maxsize of 1"; -static const char __pyx_k_Invalid_switch_into_Channel_put[] = "Invalid switch into Channel.put: %r"; -static const char __pyx_k_Invalid_switch_into_Queue_get_r[] = "Invalid switch into Queue.get: %r"; -static const char __pyx_k_Invalid_switch_into_Queue_put_r[] = "Invalid switch into Queue.put: %r"; -static const char __pyx_k_Queue_0_now_equivalent_to_Queue[] = "Queue(0) now equivalent to Queue(None); if you want a channel, use Channel"; -static const char __pyx_k_Synchronized_queues_The_mod_gev[] = "\nSynchronized queues.\n\nThe :mod:`gevent.queue` module implements multi-producer, multi-consumer queues\nthat work across greenlets, with the API similar to the classes found in the\nstandard :mod:`Queue` and :class:`multiprocessing <multiprocessing.Queue>` modules.\n\nThe classes in this module implement the iterator protocol. Iterating\nover a queue means repeatedly calling :meth:`get <Queue.get>` until\n:meth:`get <Queue.get>` returns ``StopIteration`` (specifically that\nclass, not an instance or subclass).\n\n >>> queue = gevent.queue.Queue()\n >>> queue.put(1)\n >>> queue.put(2)\n >>> queue.put(StopIteration)\n >>> for item in queue:\n ... print(item)\n 1\n 2\n\n.. versionchanged:: 1.0\n ``Queue(0)`` now means queue of infinite size, not a channel. A :exc:`DeprecationWarning`\n will be issued with this argument.\n"; -static const char __pyx_k_task_done_called_too_many_times[] = "task_done() called too many times"; -static PyObject *__pyx_n_s_Channel; -static PyObject *__pyx_n_s_Channel__format; -static PyObject *__pyx_n_s_Channel__unlock; -static PyObject *__pyx_n_s_Channel_empty; -static PyObject *__pyx_n_s_Channel_full; -static PyObject *__pyx_n_s_Channel_get; -static PyObject *__pyx_n_s_Channel_get_nowait; -static PyObject *__pyx_n_s_Channel_put; -static PyObject *__pyx_n_s_Channel_put_nowait; -static PyObject *__pyx_n_s_Channel_qsize; -static PyObject *__pyx_kp_s_Channels_have_a_maxsize_of_1; -static PyObject *__pyx_n_s_DeprecationWarning; -static PyObject *__pyx_n_s_Empty; -static PyObject *__pyx_n_s_Event; -static PyObject *__pyx_n_s_Full; -static PyObject *__pyx_n_s_InvalidSwitchError; -static PyObject *__pyx_kp_s_Invalid_switch_into_Channel_put; -static PyObject *__pyx_kp_s_Invalid_switch_into_Queue_get_r; -static PyObject *__pyx_kp_s_Invalid_switch_into_Queue_put_r; -static PyObject *__pyx_n_s_ItemWaiter_put_and_switch; -static PyObject *__pyx_n_s_JoinableQueue; -static PyObject *__pyx_n_s_JoinableQueue__format; -static PyObject *__pyx_n_s_JoinableQueue__put; -static PyObject *__pyx_n_s_JoinableQueue_copy; -static PyObject *__pyx_n_s_JoinableQueue_join; -static PyObject *__pyx_n_s_JoinableQueue_task_done; -static PyObject *__pyx_n_s_LifoQueue; -static PyObject *__pyx_n_s_LifoQueue__create_queue; -static PyObject *__pyx_n_s_LifoQueue__get; -static PyObject *__pyx_n_s_LifoQueue__peek; -static PyObject *__pyx_n_s_LifoQueue__put; -static PyObject *__pyx_n_s_PriorityQueue; -static PyObject *__pyx_n_s_PriorityQueue__create_queue; -static PyObject *__pyx_n_s_PriorityQueue__get; -static PyObject *__pyx_n_s_PriorityQueue__put; -static PyObject *__pyx_n_s_PySimpleQueue; -static PyObject *__pyx_n_s_Queue; -static PyObject *__pyx_kp_s_Queue_0_now_equivalent_to_Queue; -static PyObject *__pyx_n_s_Queue__create_queue; -static PyObject *__pyx_n_s_Queue__format; -static PyObject *__pyx_n_s_Queue__get; -static PyObject *__pyx_n_s_Queue__peek; -static PyObject *__pyx_n_s_Queue__put; -static PyObject *__pyx_n_s_Queue__unlock; -static PyObject *__pyx_n_s_Queue_copy; -static PyObject *__pyx_n_s_Queue_empty; -static PyObject *__pyx_n_s_Queue_full; -static PyObject *__pyx_n_s_Queue_get; -static PyObject *__pyx_n_s_Queue_get_nowait; -static PyObject *__pyx_n_s_Queue_peek; -static PyObject *__pyx_n_s_Queue_peek_nowait; -static PyObject *__pyx_n_s_Queue_put; -static PyObject *__pyx_n_s_Queue_put_nowait; -static PyObject *__pyx_n_s_Queue_qsize; -static PyObject *__pyx_n_s_SimpleQueue; -static PyObject *__pyx_n_s_StopIteration; -static PyObject *__pyx_n_s_Timeout; -static PyObject *__pyx_kp_s_UnboundQueue_has_no_maxsize; -static PyObject *__pyx_n_s_UnboundQueue_put; -static PyObject *__pyx_n_s_ValueError; -static PyObject *__pyx_n_s_Waiter; -static PyObject *__pyx_kp_s__2; -static PyObject *__pyx_kp_s__3; -static PyObject *__pyx_n_s_all; -static PyObject *__pyx_n_s_append; -static PyObject *__pyx_n_s_block; -static PyObject *__pyx_n_s_cancel; -static PyObject *__pyx_n_s_clear; -static PyObject *__pyx_n_s_cline_in_traceback; -static PyObject *__pyx_n_s_close; -static PyObject *__pyx_n_s_collections; -static PyObject *__pyx_n_s_cond; -static PyObject *__pyx_n_s_copy; -static PyObject *__pyx_n_s_create_queue; -static PyObject *__pyx_n_s_deque; -static PyObject *__pyx_n_s_empty; -static PyObject *__pyx_n_s_event_unlock; -static PyObject *__pyx_n_s_exc_info; -static PyObject *__pyx_n_s_extensions; -static PyObject *__pyx_n_s_format; -static PyObject *__pyx_n_s_full; -static PyObject *__pyx_n_s_get; -static PyObject *__pyx_n_s_get_2; -static PyObject *__pyx_n_s_get_hub; -static PyObject *__pyx_n_s_get_hub_noargs; -static PyObject *__pyx_n_s_get_nowait; -static PyObject *__pyx_n_s_getcurrent; -static PyObject *__pyx_n_s_getter; -static PyObject *__pyx_n_s_getters; -static PyObject *__pyx_kp_s_getters_s; -static PyObject *__pyx_kp_s_getters_s_2; -static PyObject *__pyx_n_s_gevent; -static PyObject *__pyx_n_s_gevent__hub_local; -static PyObject *__pyx_n_s_gevent__queue; -static PyObject *__pyx_n_s_gevent__util; -static PyObject *__pyx_n_s_gevent__waiter; -static PyObject *__pyx_n_s_gevent_event; -static PyObject *__pyx_n_s_gevent_exceptions; -static PyObject *__pyx_n_s_gevent_timeout; -static PyObject *__pyx_n_s_greenlet; -static PyObject *__pyx_n_s_heapify; -static PyObject *__pyx_n_s_heapify_2; -static PyObject *__pyx_n_s_heappop; -static PyObject *__pyx_n_s_heappop_2; -static PyObject *__pyx_n_s_heappush; -static PyObject *__pyx_n_s_heappush_2; -static PyObject *__pyx_n_s_heapq; -static PyObject *__pyx_n_s_hex; -static PyObject *__pyx_n_s_hub; -static PyObject *__pyx_n_s_id; -static PyObject *__pyx_n_s_implements; -static PyObject *__pyx_n_s_import; -static PyObject *__pyx_n_s_import_c_accel; -static PyObject *__pyx_n_s_imports; -static PyObject *__pyx_n_s_init; -static PyObject *__pyx_n_s_item; -static PyObject *__pyx_n_s_items; -static PyObject *__pyx_n_s_join; -static PyObject *__pyx_n_s_loop; -static PyObject *__pyx_n_s_main; -static PyObject *__pyx_n_s_maxsize; -static PyObject *__pyx_n_s_maxsize_2; -static PyObject *__pyx_kp_s_maxsize_r; -static PyObject *__pyx_n_s_name; -static PyObject *__pyx_n_s_next; -static PyObject *__pyx_n_s_next_2; -static PyObject *__pyx_n_s_peek; -static PyObject *__pyx_n_s_peek_2; -static PyObject *__pyx_n_s_peek_nowait; -static PyObject *__pyx_n_s_pop; -static PyObject *__pyx_n_s_popleft; -static PyObject *__pyx_n_s_put; -static PyObject *__pyx_n_s_put_2; -static PyObject *__pyx_n_s_put_and_switch; -static PyObject *__pyx_n_s_put_nowait; -static PyObject *__pyx_n_s_putter; -static PyObject *__pyx_n_s_putters; -static PyObject *__pyx_kp_s_putters_s; -static PyObject *__pyx_kp_s_putters_s_2; -static PyObject *__pyx_n_s_pyx_capi; -static PyObject *__pyx_n_s_pyx_vtable; -static PyObject *__pyx_n_s_q; -static PyObject *__pyx_n_s_qsize; -static PyObject *__pyx_n_s_queue; -static PyObject *__pyx_n_s_queue_2; -static PyObject *__pyx_kp_s_queue_r; -static PyObject *__pyx_n_s_remove; -static PyObject *__pyx_n_s_repeat; -static PyObject *__pyx_n_s_result; -static PyObject *__pyx_n_s_run_callback; -static PyObject *__pyx_kp_s_s_at_s_s; -static PyObject *__pyx_kp_s_s_at_s_s_2; -static PyObject *__pyx_kp_s_s_s; -static PyObject *__pyx_kp_s_s_s_2; -static PyObject *__pyx_n_s_self; -static PyObject *__pyx_n_s_set; -static PyObject *__pyx_n_s_slots; -static PyObject *__pyx_kp_s_src_gevent_queue_py; -static PyObject *__pyx_n_s_stacklevel; -static PyObject *__pyx_n_s_start_new_or_dummy; -static PyObject *__pyx_n_s_switch; -static PyObject *__pyx_n_s_sys; -static PyObject *__pyx_n_s_task_done; -static PyObject *__pyx_kp_s_task_done_called_too_many_times; -static PyObject *__pyx_kp_s_tasks_s__cond_s; -static PyObject *__pyx_n_s_test; -static PyObject *__pyx_n_s_throw; -static PyObject *__pyx_n_s_timeout; -static PyObject *__pyx_n_s_unfinished_tasks; -static PyObject *__pyx_n_s_unlock; -static PyObject *__pyx_n_s_version_info; -static PyObject *__pyx_n_s_wait; -static PyObject *__pyx_n_s_waiter; -static PyObject *__pyx_n_s_waiter_2; -static PyObject *__pyx_n_s_warn; -static PyObject *__pyx_n_s_warn_depth; -static PyObject *__pyx_n_s_warnings; -static PyObject *__pyx_n_s_weakref; -static int __pyx_pf_6gevent_6_queue_10ItemWaiter___init__(struct __pyx_obj_6gevent_6_queue_ItemWaiter *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_queue); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_10ItemWaiter_2put_and_switch(struct __pyx_obj_6gevent_6_queue_ItemWaiter *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_10ItemWaiter_4item___get__(struct __pyx_obj_6gevent_6_queue_ItemWaiter *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_10ItemWaiter_5queue___get__(struct __pyx_obj_6gevent_6_queue_ItemWaiter *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_6_queue_5Queue___init__(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, PyObject *__pyx_v_maxsize, PyObject *__pyx_v_items, PyObject *__pyx_v__warn_depth); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_7maxsize___get__(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_6_queue_5Queue_7maxsize_2__set__(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, PyObject *__pyx_v_nv); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_2copy(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_4_create_queue(CYTHON_UNUSED struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, PyObject *__pyx_v_items); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_6_get(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_8_peek(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_10_put(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, PyObject *__pyx_v_item); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_12__repr__(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_14__str__(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_16_format(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_18qsize(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self); /* proto */ -static Py_ssize_t __pyx_pf_6gevent_6_queue_5Queue_20__len__(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_6_queue_5Queue_22__bool__(CYTHON_UNUSED struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_6_queue_5Queue_24__nonzero__(CYTHON_UNUSED struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_26empty(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_28full(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_30put(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_block, PyObject *__pyx_v_timeout); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_32put_nowait(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, PyObject *__pyx_v_item); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_34get(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, PyObject *__pyx_v_block, PyObject *__pyx_v_timeout); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_36get_nowait(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_38peek(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, PyObject *__pyx_v_block, PyObject *__pyx_v_timeout); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_40peek_nowait(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_42_unlock(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_44__iter__(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_46__next__(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_3hub___get__(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_5queue___get__(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_6_queue_12UnboundQueue___init__(struct __pyx_obj_6gevent_6_queue_UnboundQueue *__pyx_v_self, PyObject *__pyx_v_maxsize, PyObject *__pyx_v_items); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_12UnboundQueue_2put(struct __pyx_obj_6gevent_6_queue_UnboundQueue *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_block, PyObject *__pyx_v_timeout); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_13PriorityQueue__create_queue(CYTHON_UNUSED struct __pyx_obj_6gevent_6_queue_PriorityQueue *__pyx_v_self, PyObject *__pyx_v_items); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_13PriorityQueue_2_put(struct __pyx_obj_6gevent_6_queue_PriorityQueue *__pyx_v_self, PyObject *__pyx_v_item); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_13PriorityQueue_4_get(struct __pyx_obj_6gevent_6_queue_PriorityQueue *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_9LifoQueue__create_queue(CYTHON_UNUSED struct __pyx_obj_6gevent_6_queue_LifoQueue *__pyx_v_self, PyObject *__pyx_v_items); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_9LifoQueue_2_put(struct __pyx_obj_6gevent_6_queue_LifoQueue *__pyx_v_self, PyObject *__pyx_v_item); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_9LifoQueue_4_get(struct __pyx_obj_6gevent_6_queue_LifoQueue *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_9LifoQueue_6_peek(struct __pyx_obj_6gevent_6_queue_LifoQueue *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_6_queue_13JoinableQueue___init__(struct __pyx_obj_6gevent_6_queue_JoinableQueue *__pyx_v_self, PyObject *__pyx_v_maxsize, PyObject *__pyx_v_items, PyObject *__pyx_v_unfinished_tasks); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_13JoinableQueue_2copy(struct __pyx_obj_6gevent_6_queue_JoinableQueue *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_13JoinableQueue_4_format(struct __pyx_obj_6gevent_6_queue_JoinableQueue *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_13JoinableQueue_6_put(struct __pyx_obj_6gevent_6_queue_JoinableQueue *__pyx_v_self, PyObject *__pyx_v_item); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_13JoinableQueue_8task_done(struct __pyx_obj_6gevent_6_queue_JoinableQueue *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_13JoinableQueue_10join(struct __pyx_obj_6gevent_6_queue_JoinableQueue *__pyx_v_self, PyObject *__pyx_v_timeout); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_13JoinableQueue_16unfinished_tasks___get__(struct __pyx_obj_6gevent_6_queue_JoinableQueue *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_6_queue_7Channel___init__(struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self, PyObject *__pyx_v_maxsize); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_7Channel_2__repr__(struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_7Channel_4__str__(struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_7Channel_6_format(struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_7Channel_7balance___get__(struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_7Channel_8qsize(CYTHON_UNUSED struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_7Channel_10empty(CYTHON_UNUSED struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_7Channel_12full(CYTHON_UNUSED struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_7Channel_14put(struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_block, PyObject *__pyx_v_timeout); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_7Channel_16put_nowait(struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self, PyObject *__pyx_v_item); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_7Channel_18get(struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self, PyObject *__pyx_v_block, PyObject *__pyx_v_timeout); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_7Channel_20get_nowait(struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_7Channel_22_unlock(struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_7Channel_24__iter__(struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_7Channel_26__next__(struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_7Channel_7getters___get__(struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_7Channel_7putters___get__(struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_6_queue_7Channel_3hub___get__(struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self); /* proto */ -static PyObject *__pyx_tp_new_6gevent_6_queue_ItemWaiter(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_6_queue_Queue(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_6_queue_UnboundQueue(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_6_queue_PriorityQueue(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_6_queue_LifoQueue(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_6_queue_JoinableQueue(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_6_queue_Channel(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static __Pyx_CachedCFunction __pyx_umethod_PyList_Type_pop = {0, &__pyx_n_s_pop, 0, 0, 0}; -static PyObject *__pyx_int_0; -static PyObject *__pyx_int_1; -static PyObject *__pyx_int_2; -static PyObject *__pyx_int_3; -static PyObject *__pyx_tuple_; -static PyObject *__pyx_tuple__4; -static PyObject *__pyx_tuple__5; -static PyObject *__pyx_tuple__6; -static PyObject *__pyx_tuple__7; -static PyObject *__pyx_tuple__8; -static PyObject *__pyx_tuple__10; -static PyObject *__pyx_tuple__11; -static PyObject *__pyx_tuple__13; -static PyObject *__pyx_tuple__15; -static PyObject *__pyx_tuple__17; -static PyObject *__pyx_tuple__19; -static PyObject *__pyx_tuple__21; -static PyObject *__pyx_tuple__23; -static PyObject *__pyx_tuple__25; -static PyObject *__pyx_tuple__27; -static PyObject *__pyx_tuple__29; -static PyObject *__pyx_tuple__31; -static PyObject *__pyx_tuple__33; -static PyObject *__pyx_tuple__35; -static PyObject *__pyx_tuple__37; -static PyObject *__pyx_tuple__39; -static PyObject *__pyx_tuple__41; -static PyObject *__pyx_tuple__43; -static PyObject *__pyx_tuple__45; -static PyObject *__pyx_tuple__47; -static PyObject *__pyx_tuple__49; -static PyObject *__pyx_tuple__51; -static PyObject *__pyx_tuple__53; -static PyObject *__pyx_tuple__55; -static PyObject *__pyx_tuple__57; -static PyObject *__pyx_tuple__59; -static PyObject *__pyx_tuple__60; -static PyObject *__pyx_tuple__62; -static PyObject *__pyx_tuple__64; -static PyObject *__pyx_tuple__66; -static PyObject *__pyx_tuple__68; -static PyObject *__pyx_tuple__70; -static PyObject *__pyx_tuple__71; -static PyObject *__pyx_tuple__73; -static PyObject *__pyx_tuple__75; -static PyObject *__pyx_tuple__77; -static PyObject *__pyx_tuple__79; -static PyObject *__pyx_tuple__81; -static PyObject *__pyx_tuple__83; -static PyObject *__pyx_tuple__85; -static PyObject *__pyx_tuple__87; -static PyObject *__pyx_codeobj__9; -static PyObject *__pyx_codeobj__12; -static PyObject *__pyx_codeobj__14; -static PyObject *__pyx_codeobj__16; -static PyObject *__pyx_codeobj__18; -static PyObject *__pyx_codeobj__20; -static PyObject *__pyx_codeobj__22; -static PyObject *__pyx_codeobj__24; -static PyObject *__pyx_codeobj__26; -static PyObject *__pyx_codeobj__28; -static PyObject *__pyx_codeobj__30; -static PyObject *__pyx_codeobj__32; -static PyObject *__pyx_codeobj__34; -static PyObject *__pyx_codeobj__36; -static PyObject *__pyx_codeobj__38; -static PyObject *__pyx_codeobj__40; -static PyObject *__pyx_codeobj__42; -static PyObject *__pyx_codeobj__44; -static PyObject *__pyx_codeobj__46; -static PyObject *__pyx_codeobj__48; -static PyObject *__pyx_codeobj__50; -static PyObject *__pyx_codeobj__52; -static PyObject *__pyx_codeobj__54; -static PyObject *__pyx_codeobj__56; -static PyObject *__pyx_codeobj__58; -static PyObject *__pyx_codeobj__61; -static PyObject *__pyx_codeobj__63; -static PyObject *__pyx_codeobj__65; -static PyObject *__pyx_codeobj__67; -static PyObject *__pyx_codeobj__69; -static PyObject *__pyx_codeobj__72; -static PyObject *__pyx_codeobj__74; -static PyObject *__pyx_codeobj__76; -static PyObject *__pyx_codeobj__78; -static PyObject *__pyx_codeobj__80; -static PyObject *__pyx_codeobj__82; -static PyObject *__pyx_codeobj__84; -static PyObject *__pyx_codeobj__86; -static PyObject *__pyx_codeobj__88; -/* Late includes */ - -/* "src/gevent/queue.py":64 - * # pylint:disable=assignment-from-no-return - * - * def _safe_remove(deq, item): # <<<<<<<<<<<<<< - * # For when the item may have been removed by - * # Queue._unlock - */ - -static PyObject *__pyx_f_6gevent_6_queue__safe_remove(PyObject *__pyx_v_deq, PyObject *__pyx_v_item) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - int __pyx_t_8; - __Pyx_RefNannySetupContext("_safe_remove", 0); - - /* "src/gevent/queue.py":67 - * # For when the item may have been removed by - * # Queue._unlock - * try: # <<<<<<<<<<<<<< - * deq.remove(item) - * except ValueError: - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_t_3); - /*try:*/ { - - /* "src/gevent/queue.py":68 - * # Queue._unlock - * try: - * deq.remove(item) # <<<<<<<<<<<<<< - * except ValueError: - * pass - */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_deq, __pyx_n_s_remove); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 68, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - } - } - if (!__pyx_t_6) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_item); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 68, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_4); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v_item}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 68, __pyx_L3_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_4); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v_item}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 68, __pyx_L3_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_4); - } else - #endif - { - __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 68, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL; - __Pyx_INCREF(__pyx_v_item); - __Pyx_GIVEREF(__pyx_v_item); - PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_item); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 68, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - } - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "src/gevent/queue.py":67 - * # For when the item may have been removed by - * # Queue._unlock - * try: # <<<<<<<<<<<<<< - * deq.remove(item) - * except ValueError: - */ - } - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L8_try_end; - __pyx_L3_error:; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "src/gevent/queue.py":69 - * try: - * deq.remove(item) - * except ValueError: # <<<<<<<<<<<<<< - * pass - * - */ - __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError); - if (__pyx_t_8) { - __Pyx_ErrRestore(0,0,0); - goto __pyx_L4_exception_handled; - } - goto __pyx_L5_except_error; - __pyx_L5_except_error:; - - /* "src/gevent/queue.py":67 - * # For when the item may have been removed by - * # Queue._unlock - * try: # <<<<<<<<<<<<<< - * deq.remove(item) - * except ValueError: - */ - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - goto __pyx_L1_error; - __pyx_L4_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - __pyx_L8_try_end:; - } - - /* "src/gevent/queue.py":64 - * # pylint:disable=assignment-from-no-return - * - * def _safe_remove(deq, item): # <<<<<<<<<<<<<< - * # For when the item may have been removed by - * # Queue._unlock - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("gevent._queue._safe_remove", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":82 - * ) - * - * def __init__(self, item, queue): # <<<<<<<<<<<<<< - * Waiter.__init__(self) # pylint:disable=undefined-variable - * self.item = item - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_6_queue_10ItemWaiter_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_6_queue_10ItemWaiter_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_item = 0; - PyObject *__pyx_v_queue = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_item,&__pyx_n_s_queue,0}; - PyObject* values[2] = {0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_item)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_queue)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 82, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 82, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - } - __pyx_v_item = values[0]; - __pyx_v_queue = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 82, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._queue.ItemWaiter.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_6_queue_10ItemWaiter___init__(((struct __pyx_obj_6gevent_6_queue_ItemWaiter *)__pyx_v_self), __pyx_v_item, __pyx_v_queue); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_6_queue_10ItemWaiter___init__(struct __pyx_obj_6gevent_6_queue_ItemWaiter *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_queue) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("__init__", 0); - - /* "src/gevent/queue.py":83 - * - * def __init__(self, item, queue): - * Waiter.__init__(self) # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * self.item = item - * self.queue = queue - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_6gevent_8__waiter_Waiter), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 83, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 83, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_self)}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 83, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_self)}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 83, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 83, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)__pyx_v_self)); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 83, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":84 - * def __init__(self, item, queue): - * Waiter.__init__(self) # pylint:disable=undefined-variable - * self.item = item # <<<<<<<<<<<<<< - * self.queue = queue - * - */ - __Pyx_INCREF(__pyx_v_item); - __Pyx_GIVEREF(__pyx_v_item); - __Pyx_GOTREF(__pyx_v_self->item); - __Pyx_DECREF(__pyx_v_self->item); - __pyx_v_self->item = __pyx_v_item; - - /* "src/gevent/queue.py":85 - * Waiter.__init__(self) # pylint:disable=undefined-variable - * self.item = item - * self.queue = queue # <<<<<<<<<<<<<< - * - * def put_and_switch(self): - */ - __Pyx_INCREF(__pyx_v_queue); - __Pyx_GIVEREF(__pyx_v_queue); - __Pyx_GOTREF(__pyx_v_self->queue); - __Pyx_DECREF(__pyx_v_self->queue); - __pyx_v_self->queue = __pyx_v_queue; - - /* "src/gevent/queue.py":82 - * ) - * - * def __init__(self, item, queue): # <<<<<<<<<<<<<< - * Waiter.__init__(self) # pylint:disable=undefined-variable - * self.item = item - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent._queue.ItemWaiter.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":87 - * self.queue = queue - * - * def put_and_switch(self): # <<<<<<<<<<<<<< - * self.queue._put(self.item) - * self.queue = None - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_10ItemWaiter_3put_and_switch(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_queue_10ItemWaiter_2put_and_switch[] = "ItemWaiter.put_and_switch(self)"; -static PyMethodDef __pyx_mdef_6gevent_6_queue_10ItemWaiter_3put_and_switch = {"put_and_switch", (PyCFunction)__pyx_pw_6gevent_6_queue_10ItemWaiter_3put_and_switch, METH_NOARGS, __pyx_doc_6gevent_6_queue_10ItemWaiter_2put_and_switch}; -static PyObject *__pyx_pw_6gevent_6_queue_10ItemWaiter_3put_and_switch(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("put_and_switch (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_10ItemWaiter_2put_and_switch(((struct __pyx_obj_6gevent_6_queue_ItemWaiter *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_10ItemWaiter_2put_and_switch(struct __pyx_obj_6gevent_6_queue_ItemWaiter *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("put_and_switch", 0); - - /* "src/gevent/queue.py":88 - * - * def put_and_switch(self): - * self.queue._put(self.item) # <<<<<<<<<<<<<< - * self.queue = None - * self.item = None - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->queue, __pyx_n_s_put); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 88, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_self->item); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 88, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_self->item}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 88, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_self->item}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 88, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 88, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(__pyx_v_self->item); - __Pyx_GIVEREF(__pyx_v_self->item); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_self->item); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 88, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":89 - * def put_and_switch(self): - * self.queue._put(self.item) - * self.queue = None # <<<<<<<<<<<<<< - * self.item = None - * return self.switch(self) - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->queue); - __Pyx_DECREF(__pyx_v_self->queue); - __pyx_v_self->queue = Py_None; - - /* "src/gevent/queue.py":90 - * self.queue._put(self.item) - * self.queue = None - * self.item = None # <<<<<<<<<<<<<< - * return self.switch(self) - * - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->item); - __Pyx_DECREF(__pyx_v_self->item); - __pyx_v_self->item = Py_None; - - /* "src/gevent/queue.py":91 - * self.queue = None - * self.item = None - * return self.switch(self) # <<<<<<<<<<<<<< - * - * class Queue(object): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_switch); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 91, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_4) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 91, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, ((PyObject *)__pyx_v_self)}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 91, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, ((PyObject *)__pyx_v_self)}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 91, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 91, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_3, 0+1, ((PyObject *)__pyx_v_self)); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 91, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/queue.py":87 - * self.queue = queue - * - * def put_and_switch(self): # <<<<<<<<<<<<<< - * self.queue._put(self.item) - * self.queue = None - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent._queue.ItemWaiter.put_and_switch", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/_queue.pxd":15 - * @cython.internal - * cdef class ItemWaiter(Waiter): - * cdef readonly item # <<<<<<<<<<<<<< - * cdef readonly queue - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_10ItemWaiter_4item_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_6_queue_10ItemWaiter_4item_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_10ItemWaiter_4item___get__(((struct __pyx_obj_6gevent_6_queue_ItemWaiter *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_10ItemWaiter_4item___get__(struct __pyx_obj_6gevent_6_queue_ItemWaiter *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->item); - __pyx_r = __pyx_v_self->item; - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/_queue.pxd":16 - * cdef class ItemWaiter(Waiter): - * cdef readonly item - * cdef readonly queue # <<<<<<<<<<<<<< - * - * cdef class Queue: - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_10ItemWaiter_5queue_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_6_queue_10ItemWaiter_5queue_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_10ItemWaiter_5queue___get__(((struct __pyx_obj_6gevent_6_queue_ItemWaiter *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_10ItemWaiter_5queue___get__(struct __pyx_obj_6gevent_6_queue_ItemWaiter *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->queue); - __pyx_r = __pyx_v_self->queue; - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":124 - * ) - * - * def __init__(self, maxsize=None, items=(), _warn_depth=2): # <<<<<<<<<<<<<< - * if maxsize is not None and maxsize <= 0: - * if maxsize == 0: - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_6_queue_5Queue_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_6_queue_5Queue_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_maxsize = 0; - PyObject *__pyx_v_items = 0; - PyObject *__pyx_v__warn_depth = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_maxsize,&__pyx_n_s_items,&__pyx_n_s_warn_depth,0}; - PyObject* values[3] = {0,0,0}; - values[0] = ((PyObject *)Py_None); - values[1] = ((PyObject *)__pyx_empty_tuple); - values[2] = ((PyObject *)__pyx_int_2); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_maxsize); - if (value) { values[0] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_items); - if (value) { values[1] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_warn_depth); - if (value) { values[2] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 124, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_maxsize = values[0]; - __pyx_v_items = values[1]; - __pyx_v__warn_depth = values[2]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 124, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._queue.Queue.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_6_queue_5Queue___init__(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self), __pyx_v_maxsize, __pyx_v_items, __pyx_v__warn_depth); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_6_queue_5Queue___init__(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, PyObject *__pyx_v_maxsize, PyObject *__pyx_v_items, PyObject *__pyx_v__warn_depth) { - PyObject *__pyx_v_warnings = NULL; - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - Py_ssize_t __pyx_t_7; - Py_ssize_t __pyx_t_8; - PyObject *__pyx_t_9 = NULL; - __Pyx_RefNannySetupContext("__init__", 0); - __Pyx_INCREF(__pyx_v_maxsize); - - /* "src/gevent/queue.py":125 - * - * def __init__(self, maxsize=None, items=(), _warn_depth=2): - * if maxsize is not None and maxsize <= 0: # <<<<<<<<<<<<<< - * if maxsize == 0: - * import warnings - */ - __pyx_t_2 = (__pyx_v_maxsize != Py_None); - __pyx_t_3 = (__pyx_t_2 != 0); - if (__pyx_t_3) { - } else { - __pyx_t_1 = __pyx_t_3; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_4 = PyObject_RichCompare(__pyx_v_maxsize, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 125, __pyx_L1_error) - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 125, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_1 = __pyx_t_3; - __pyx_L4_bool_binop_done:; - if (__pyx_t_1) { - - /* "src/gevent/queue.py":126 - * def __init__(self, maxsize=None, items=(), _warn_depth=2): - * if maxsize is not None and maxsize <= 0: - * if maxsize == 0: # <<<<<<<<<<<<<< - * import warnings - * warnings.warn( - */ - __pyx_t_4 = __Pyx_PyInt_EqObjC(__pyx_v_maxsize, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 126, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 126, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (__pyx_t_1) { - - /* "src/gevent/queue.py":127 - * if maxsize is not None and maxsize <= 0: - * if maxsize == 0: - * import warnings # <<<<<<<<<<<<<< - * warnings.warn( - * 'Queue(0) now equivalent to Queue(None); if you want a channel, use Channel', - */ - __pyx_t_4 = __Pyx_Import(__pyx_n_s_warnings, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 127, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_v_warnings = __pyx_t_4; - __pyx_t_4 = 0; - - /* "src/gevent/queue.py":128 - * if maxsize == 0: - * import warnings - * warnings.warn( # <<<<<<<<<<<<<< - * 'Queue(0) now equivalent to Queue(None); if you want a channel, use Channel', - * DeprecationWarning, - */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_warnings, __pyx_n_s_warn); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 128, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - - /* "src/gevent/queue.py":131 - * 'Queue(0) now equivalent to Queue(None); if you want a channel, use Channel', - * DeprecationWarning, - * stacklevel=_warn_depth) # <<<<<<<<<<<<<< - * maxsize = None - * - */ - __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 131, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_stacklevel, __pyx_v__warn_depth) < 0) __PYX_ERR(0, 131, __pyx_L1_error) - - /* "src/gevent/queue.py":128 - * if maxsize == 0: - * import warnings - * warnings.warn( # <<<<<<<<<<<<<< - * 'Queue(0) now equivalent to Queue(None); if you want a channel, use Channel', - * DeprecationWarning, - */ - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple_, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 128, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - - /* "src/gevent/queue.py":126 - * def __init__(self, maxsize=None, items=(), _warn_depth=2): - * if maxsize is not None and maxsize <= 0: - * if maxsize == 0: # <<<<<<<<<<<<<< - * import warnings - * warnings.warn( - */ - } - - /* "src/gevent/queue.py":132 - * DeprecationWarning, - * stacklevel=_warn_depth) - * maxsize = None # <<<<<<<<<<<<<< - * - * self._maxsize = maxsize if maxsize is not None else -1 - */ - __Pyx_INCREF(Py_None); - __Pyx_DECREF_SET(__pyx_v_maxsize, Py_None); - - /* "src/gevent/queue.py":125 - * - * def __init__(self, maxsize=None, items=(), _warn_depth=2): - * if maxsize is not None and maxsize <= 0: # <<<<<<<<<<<<<< - * if maxsize == 0: - * import warnings - */ - } - - /* "src/gevent/queue.py":134 - * maxsize = None - * - * self._maxsize = maxsize if maxsize is not None else -1 # <<<<<<<<<<<<<< - * # Explicitly maintain order for getters and putters that block - * # so that callers can consistently rely on getting things out - */ - __pyx_t_1 = (__pyx_v_maxsize != Py_None); - if ((__pyx_t_1 != 0)) { - __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_v_maxsize); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 134, __pyx_L1_error) - __pyx_t_7 = __pyx_t_8; - } else { - __pyx_t_7 = -1L; - } - __pyx_v_self->_maxsize = __pyx_t_7; - - /* "src/gevent/queue.py":147 - * # many waiters that removing an arbitrary element is a - * # bottleneck, though. - * self.getters = collections.deque() # <<<<<<<<<<<<<< - * self.putters = collections.deque() - * self.hub = get_hub() - */ - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_collections); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 147, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_deque); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 147, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (__pyx_t_5) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 147, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else { - __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 147, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GIVEREF(__pyx_t_6); - __Pyx_GOTREF(__pyx_v_self->getters); - __Pyx_DECREF(__pyx_v_self->getters); - __pyx_v_self->getters = __pyx_t_6; - __pyx_t_6 = 0; - - /* "src/gevent/queue.py":148 - * # bottleneck, though. - * self.getters = collections.deque() - * self.putters = collections.deque() # <<<<<<<<<<<<<< - * self.hub = get_hub() - * self._event_unlock = None - */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_collections); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 148, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_deque); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 148, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - } - } - if (__pyx_t_4) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 148, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 148, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GIVEREF(__pyx_t_6); - __Pyx_GOTREF(__pyx_v_self->putters); - __Pyx_DECREF(__pyx_v_self->putters); - __pyx_v_self->putters = __pyx_t_6; - __pyx_t_6 = 0; - - /* "src/gevent/queue.py":149 - * self.getters = collections.deque() - * self.putters = collections.deque() - * self.hub = get_hub() # <<<<<<<<<<<<<< - * self._event_unlock = None - * self.queue = self._create_queue(items) - */ - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_get_hub); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 149, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - } - } - if (__pyx_t_4) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 149, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 149, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GIVEREF(__pyx_t_6); - __Pyx_GOTREF(__pyx_v_self->hub); - __Pyx_DECREF(__pyx_v_self->hub); - __pyx_v_self->hub = __pyx_t_6; - __pyx_t_6 = 0; - - /* "src/gevent/queue.py":150 - * self.putters = collections.deque() - * self.hub = get_hub() - * self._event_unlock = None # <<<<<<<<<<<<<< - * self.queue = self._create_queue(items) - * - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->_event_unlock); - __Pyx_DECREF(__pyx_v_self->_event_unlock); - __pyx_v_self->_event_unlock = Py_None; - - /* "src/gevent/queue.py":151 - * self.hub = get_hub() - * self._event_unlock = None - * self.queue = self._create_queue(items) # <<<<<<<<<<<<<< - * - * @property - */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_create_queue); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 151, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - } - } - if (!__pyx_t_4) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_items); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 151, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_items}; - __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 151, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_6); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_items}; - __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 151, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_6); - } else - #endif - { - __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 151, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_INCREF(__pyx_v_items); - __Pyx_GIVEREF(__pyx_v_items); - PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_items); - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 151, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - } - } - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GIVEREF(__pyx_t_6); - __Pyx_GOTREF(__pyx_v_self->queue); - __Pyx_DECREF(__pyx_v_self->queue); - __pyx_v_self->queue = __pyx_t_6; - __pyx_t_6 = 0; - - /* "src/gevent/queue.py":124 - * ) - * - * def __init__(self, maxsize=None, items=(), _warn_depth=2): # <<<<<<<<<<<<<< - * if maxsize is not None and maxsize <= 0: - * if maxsize == 0: - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_9); - __Pyx_AddTraceback("gevent._queue.Queue.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_warnings); - __Pyx_XDECREF(__pyx_v_maxsize); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":154 - * - * @property - * def maxsize(self): # <<<<<<<<<<<<<< - * return self._maxsize if self._maxsize > 0 else None - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_7maxsize_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_7maxsize_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_5Queue_7maxsize___get__(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_7maxsize___get__(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - - /* "src/gevent/queue.py":155 - * @property - * def maxsize(self): - * return self._maxsize if self._maxsize > 0 else None # <<<<<<<<<<<<<< - * - * @maxsize.setter - */ - __Pyx_XDECREF(__pyx_r); - if (((__pyx_v_self->_maxsize > 0) != 0)) { - __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->_maxsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 155, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __pyx_t_2; - __pyx_t_2 = 0; - } else { - __Pyx_INCREF(Py_None); - __pyx_t_1 = Py_None; - } - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/queue.py":154 - * - * @property - * def maxsize(self): # <<<<<<<<<<<<<< - * return self._maxsize if self._maxsize > 0 else None - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent._queue.Queue.maxsize.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":158 - * - * @maxsize.setter - * def maxsize(self, nv): # <<<<<<<<<<<<<< - * # QQQ make maxsize into a property with setter that schedules unlock if necessary - * if nv is None or nv <= 0: - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_6_queue_5Queue_7maxsize_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_nv); /*proto*/ -static int __pyx_pw_6gevent_6_queue_5Queue_7maxsize_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_nv) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_5Queue_7maxsize_2__set__(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self), ((PyObject *)__pyx_v_nv)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_6_queue_5Queue_7maxsize_2__set__(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, PyObject *__pyx_v_nv) { - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - Py_ssize_t __pyx_t_5; - __Pyx_RefNannySetupContext("__set__", 0); - - /* "src/gevent/queue.py":160 - * def maxsize(self, nv): - * # QQQ make maxsize into a property with setter that schedules unlock if necessary - * if nv is None or nv <= 0: # <<<<<<<<<<<<<< - * self._maxsize = -1 - * else: - */ - __pyx_t_2 = (__pyx_v_nv == Py_None); - __pyx_t_3 = (__pyx_t_2 != 0); - if (!__pyx_t_3) { - } else { - __pyx_t_1 = __pyx_t_3; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_4 = PyObject_RichCompare(__pyx_v_nv, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 160, __pyx_L1_error) - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 160, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_1 = __pyx_t_3; - __pyx_L4_bool_binop_done:; - if (__pyx_t_1) { - - /* "src/gevent/queue.py":161 - * # QQQ make maxsize into a property with setter that schedules unlock if necessary - * if nv is None or nv <= 0: - * self._maxsize = -1 # <<<<<<<<<<<<<< - * else: - * self._maxsize = nv - */ - __pyx_v_self->_maxsize = -1L; - - /* "src/gevent/queue.py":160 - * def maxsize(self, nv): - * # QQQ make maxsize into a property with setter that schedules unlock if necessary - * if nv is None or nv <= 0: # <<<<<<<<<<<<<< - * self._maxsize = -1 - * else: - */ - goto __pyx_L3; - } - - /* "src/gevent/queue.py":163 - * self._maxsize = -1 - * else: - * self._maxsize = nv # <<<<<<<<<<<<<< - * - * def copy(self): - */ - /*else*/ { - __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_v_nv); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 163, __pyx_L1_error) - __pyx_v_self->_maxsize = __pyx_t_5; - } - __pyx_L3:; - - /* "src/gevent/queue.py":158 - * - * @maxsize.setter - * def maxsize(self, nv): # <<<<<<<<<<<<<< - * # QQQ make maxsize into a property with setter that schedules unlock if necessary - * if nv is None or nv <= 0: - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent._queue.Queue.maxsize.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":165 - * self._maxsize = nv - * - * def copy(self): # <<<<<<<<<<<<<< - * return type(self)(self.maxsize, self.queue) - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_3copy(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_queue_5Queue_2copy[] = "Queue.copy(self)"; -static PyMethodDef __pyx_mdef_6gevent_6_queue_5Queue_3copy = {"copy", (PyCFunction)__pyx_pw_6gevent_6_queue_5Queue_3copy, METH_NOARGS, __pyx_doc_6gevent_6_queue_5Queue_2copy}; -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_3copy(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("copy (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_5Queue_2copy(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_2copy(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - __Pyx_RefNannySetupContext("copy", 0); - - /* "src/gevent/queue.py":166 - * - * def copy(self): - * return type(self)(self.maxsize, self.queue) # <<<<<<<<<<<<<< - * - * def _create_queue(self, items=()): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_maxsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 166, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - __pyx_t_3 = ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))); __pyx_t_4 = NULL; - __pyx_t_5 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_5 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_2, __pyx_v_self->queue}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 166, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_2, __pyx_v_self->queue}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 166, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else - #endif - { - __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 166, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (__pyx_t_4) { - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; - } - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_t_2); - __Pyx_INCREF(__pyx_v_self->queue); - __Pyx_GIVEREF(__pyx_v_self->queue); - PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_self->queue); - __pyx_t_2 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 166, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/queue.py":165 - * self._maxsize = nv - * - * def copy(self): # <<<<<<<<<<<<<< - * return type(self)(self.maxsize, self.queue) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_AddTraceback("gevent._queue.Queue.copy", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":168 - * return type(self)(self.maxsize, self.queue) - * - * def _create_queue(self, items=()): # <<<<<<<<<<<<<< - * return collections.deque(items) - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_5_create_queue(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_6_queue_5Queue_4_create_queue[] = "Queue._create_queue(self, items=())"; -static PyMethodDef __pyx_mdef_6gevent_6_queue_5Queue_5_create_queue = {"_create_queue", (PyCFunction)__pyx_pw_6gevent_6_queue_5Queue_5_create_queue, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_6_queue_5Queue_4_create_queue}; -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_5_create_queue(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_items = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_create_queue (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_items,0}; - PyObject* values[1] = {0}; - values[0] = ((PyObject *)__pyx_empty_tuple); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_items); - if (value) { values[0] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_create_queue") < 0)) __PYX_ERR(0, 168, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_items = values[0]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("_create_queue", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 168, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._queue.Queue._create_queue", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_6_queue_5Queue_4_create_queue(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self), __pyx_v_items); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_4_create_queue(CYTHON_UNUSED struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, PyObject *__pyx_v_items) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("_create_queue", 0); - - /* "src/gevent/queue.py":169 - * - * def _create_queue(self, items=()): - * return collections.deque(items) # <<<<<<<<<<<<<< - * - * def _get(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_collections); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 169, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_deque); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 169, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_2)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_2); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (!__pyx_t_2) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_items); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 169, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_items}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 169, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_items}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 169, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 169, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL; - __Pyx_INCREF(__pyx_v_items); - __Pyx_GIVEREF(__pyx_v_items); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_items); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 169, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/queue.py":168 - * return type(self)(self.maxsize, self.queue) - * - * def _create_queue(self, items=()): # <<<<<<<<<<<<<< - * return collections.deque(items) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent._queue.Queue._create_queue", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":171 - * return collections.deque(items) - * - * def _get(self): # <<<<<<<<<<<<<< - * return self.queue.popleft() - * - */ - -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_7_get(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_f_6gevent_6_queue_5Queue__get(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("_get", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 171, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_6_queue_5Queue_7_get)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 171, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 171, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/queue.py":172 - * - * def _get(self): - * return self.queue.popleft() # <<<<<<<<<<<<<< - * - * def _peek(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->queue, __pyx_n_s_popleft); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 172, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 172, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 172, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/queue.py":171 - * return collections.deque(items) - * - * def _get(self): # <<<<<<<<<<<<<< - * return self.queue.popleft() - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent._queue.Queue._get", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_7_get(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_queue_5Queue_6_get[] = "Queue._get(self)"; -static PyMethodDef __pyx_mdef_6gevent_6_queue_5Queue_7_get = {"_get", (PyCFunction)__pyx_pw_6gevent_6_queue_5Queue_7_get, METH_NOARGS, __pyx_doc_6gevent_6_queue_5Queue_6_get}; -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_7_get(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_get (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_5Queue_6_get(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_6_get(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_get", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_6_queue_5Queue__get(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 171, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._queue.Queue._get", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":174 - * return self.queue.popleft() - * - * def _peek(self): # <<<<<<<<<<<<<< - * return self.queue[0] - * - */ - -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_9_peek(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_f_6gevent_6_queue_5Queue__peek(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("_peek", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_peek); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 174, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_6_queue_5Queue_9_peek)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 174, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 174, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/queue.py":175 - * - * def _peek(self): - * return self.queue[0] # <<<<<<<<<<<<<< - * - * def _put(self, item): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_self->queue, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 175, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/queue.py":174 - * return self.queue.popleft() - * - * def _peek(self): # <<<<<<<<<<<<<< - * return self.queue[0] - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent._queue.Queue._peek", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_9_peek(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_queue_5Queue_8_peek[] = "Queue._peek(self)"; -static PyMethodDef __pyx_mdef_6gevent_6_queue_5Queue_9_peek = {"_peek", (PyCFunction)__pyx_pw_6gevent_6_queue_5Queue_9_peek, METH_NOARGS, __pyx_doc_6gevent_6_queue_5Queue_8_peek}; -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_9_peek(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_peek (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_5Queue_8_peek(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_8_peek(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_peek", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_6_queue_5Queue__peek(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 174, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._queue.Queue._peek", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":177 - * return self.queue[0] - * - * def _put(self, item): # <<<<<<<<<<<<<< - * self.queue.append(item) - * - */ - -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_11_put(PyObject *__pyx_v_self, PyObject *__pyx_v_item); /*proto*/ -static PyObject *__pyx_f_6gevent_6_queue_5Queue__put(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, PyObject *__pyx_v_item, int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - __Pyx_RefNannySetupContext("_put", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_put); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 177, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_6_queue_5Queue_11_put)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (!__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_item); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 177, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_item}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 177, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_item}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 177, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 177, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_INCREF(__pyx_v_item); - __Pyx_GIVEREF(__pyx_v_item); - PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_item); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 177, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/queue.py":178 - * - * def _put(self, item): - * self.queue.append(item) # <<<<<<<<<<<<<< - * - * def __repr__(self): - */ - __pyx_t_6 = __Pyx_PyObject_Append(__pyx_v_self->queue, __pyx_v_item); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 178, __pyx_L1_error) - - /* "src/gevent/queue.py":177 - * return self.queue[0] - * - * def _put(self, item): # <<<<<<<<<<<<<< - * self.queue.append(item) - * - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent._queue.Queue._put", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_11_put(PyObject *__pyx_v_self, PyObject *__pyx_v_item); /*proto*/ -static char __pyx_doc_6gevent_6_queue_5Queue_10_put[] = "Queue._put(self, item)"; -static PyMethodDef __pyx_mdef_6gevent_6_queue_5Queue_11_put = {"_put", (PyCFunction)__pyx_pw_6gevent_6_queue_5Queue_11_put, METH_O, __pyx_doc_6gevent_6_queue_5Queue_10_put}; -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_11_put(PyObject *__pyx_v_self, PyObject *__pyx_v_item) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_put (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_5Queue_10_put(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self), ((PyObject *)__pyx_v_item)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_10_put(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, PyObject *__pyx_v_item) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_put", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_6_queue_5Queue__put(__pyx_v_self, __pyx_v_item, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 177, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._queue.Queue._put", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":180 - * self.queue.append(item) - * - * def __repr__(self): # <<<<<<<<<<<<<< - * return '<%s at %s%s>' % (type(self).__name__, hex(id(self)), self._format()) - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_13__repr__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_13__repr__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_5Queue_12__repr__(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_12__repr__(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - __Pyx_RefNannySetupContext("__repr__", 0); - - /* "src/gevent/queue.py":181 - * - * def __repr__(self): - * return '<%s at %s%s>' % (type(self).__name__, hex(id(self)), self._format()) # <<<<<<<<<<<<<< - * - * def __str__(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 181, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 181, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_hex, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 181, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 181, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (__pyx_t_5) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 181, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 181, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 181, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_2); - __pyx_t_1 = 0; - __pyx_t_3 = 0; - __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_s_at_s_s, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 181, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "src/gevent/queue.py":180 - * self.queue.append(item) - * - * def __repr__(self): # <<<<<<<<<<<<<< - * return '<%s at %s%s>' % (type(self).__name__, hex(id(self)), self._format()) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent._queue.Queue.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":183 - * return '<%s at %s%s>' % (type(self).__name__, hex(id(self)), self._format()) - * - * def __str__(self): # <<<<<<<<<<<<<< - * return '<%s%s>' % (type(self).__name__, self._format()) - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_15__str__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_15__str__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__str__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_5Queue_14__str__(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_14__str__(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("__str__", 0); - - /* "src/gevent/queue.py":184 - * - * def __str__(self): - * return '<%s%s>' % (type(self).__name__, self._format()) # <<<<<<<<<<<<<< - * - * def _format(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 184, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 184, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 184, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 184, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 184, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); - __pyx_t_1 = 0; - __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_s_s, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 184, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "src/gevent/queue.py":183 - * return '<%s at %s%s>' % (type(self).__name__, hex(id(self)), self._format()) - * - * def __str__(self): # <<<<<<<<<<<<<< - * return '<%s%s>' % (type(self).__name__, self._format()) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent._queue.Queue.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":186 - * return '<%s%s>' % (type(self).__name__, self._format()) - * - * def _format(self): # <<<<<<<<<<<<<< - * result = [] - * if self.maxsize is not None: - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_17_format(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_queue_5Queue_16_format[] = "Queue._format(self)"; -static PyMethodDef __pyx_mdef_6gevent_6_queue_5Queue_17_format = {"_format", (PyCFunction)__pyx_pw_6gevent_6_queue_5Queue_17_format, METH_NOARGS, __pyx_doc_6gevent_6_queue_5Queue_16_format}; -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_17_format(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_format (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_5Queue_16_format(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_16_format(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self) { - PyObject *__pyx_v_result = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - Py_ssize_t __pyx_t_6; - __Pyx_RefNannySetupContext("_format", 0); - - /* "src/gevent/queue.py":187 - * - * def _format(self): - * result = [] # <<<<<<<<<<<<<< - * if self.maxsize is not None: - * result.append('maxsize=%r' % (self.maxsize, )) - */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 187, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_result = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/queue.py":188 - * def _format(self): - * result = [] - * if self.maxsize is not None: # <<<<<<<<<<<<<< - * result.append('maxsize=%r' % (self.maxsize, )) - * if getattr(self, 'queue', None): - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_maxsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 188, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = (__pyx_t_1 != Py_None); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_3 = (__pyx_t_2 != 0); - if (__pyx_t_3) { - - /* "src/gevent/queue.py":189 - * result = [] - * if self.maxsize is not None: - * result.append('maxsize=%r' % (self.maxsize, )) # <<<<<<<<<<<<<< - * if getattr(self, 'queue', None): - * result.append('queue=%r' % (self.queue, )) - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_maxsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 189, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 189, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); - __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_maxsize_r, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 189, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_1); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 189, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":188 - * def _format(self): - * result = [] - * if self.maxsize is not None: # <<<<<<<<<<<<<< - * result.append('maxsize=%r' % (self.maxsize, )) - * if getattr(self, 'queue', None): - */ - } - - /* "src/gevent/queue.py":190 - * if self.maxsize is not None: - * result.append('maxsize=%r' % (self.maxsize, )) - * if getattr(self, 'queue', None): # <<<<<<<<<<<<<< - * result.append('queue=%r' % (self.queue, )) - * if self.getters: - */ - __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_queue, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 190, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 190, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (__pyx_t_3) { - - /* "src/gevent/queue.py":191 - * result.append('maxsize=%r' % (self.maxsize, )) - * if getattr(self, 'queue', None): - * result.append('queue=%r' % (self.queue, )) # <<<<<<<<<<<<<< - * if self.getters: - * result.append('getters[%s]' % len(self.getters)) - */ - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 191, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_v_self->queue); - __Pyx_GIVEREF(__pyx_v_self->queue); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->queue); - __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_queue_r, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 191, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_4); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 191, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "src/gevent/queue.py":190 - * if self.maxsize is not None: - * result.append('maxsize=%r' % (self.maxsize, )) - * if getattr(self, 'queue', None): # <<<<<<<<<<<<<< - * result.append('queue=%r' % (self.queue, )) - * if self.getters: - */ - } - - /* "src/gevent/queue.py":192 - * if getattr(self, 'queue', None): - * result.append('queue=%r' % (self.queue, )) - * if self.getters: # <<<<<<<<<<<<<< - * result.append('getters[%s]' % len(self.getters)) - * if self.putters: - */ - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_self->getters); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 192, __pyx_L1_error) - if (__pyx_t_3) { - - /* "src/gevent/queue.py":193 - * result.append('queue=%r' % (self.queue, )) - * if self.getters: - * result.append('getters[%s]' % len(self.getters)) # <<<<<<<<<<<<<< - * if self.putters: - * result.append('putters[%s]' % len(self.putters)) - */ - __pyx_t_4 = __pyx_v_self->getters; - __Pyx_INCREF(__pyx_t_4); - __pyx_t_6 = PyObject_Length(__pyx_t_4); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 193, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 193, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_getters_s, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 193, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_1); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 193, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":192 - * if getattr(self, 'queue', None): - * result.append('queue=%r' % (self.queue, )) - * if self.getters: # <<<<<<<<<<<<<< - * result.append('getters[%s]' % len(self.getters)) - * if self.putters: - */ - } - - /* "src/gevent/queue.py":194 - * if self.getters: - * result.append('getters[%s]' % len(self.getters)) - * if self.putters: # <<<<<<<<<<<<<< - * result.append('putters[%s]' % len(self.putters)) - * if result: - */ - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_self->putters); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 194, __pyx_L1_error) - if (__pyx_t_3) { - - /* "src/gevent/queue.py":195 - * result.append('getters[%s]' % len(self.getters)) - * if self.putters: - * result.append('putters[%s]' % len(self.putters)) # <<<<<<<<<<<<<< - * if result: - * return ' ' + ' '.join(result) - */ - __pyx_t_1 = __pyx_v_self->putters; - __Pyx_INCREF(__pyx_t_1); - __pyx_t_6 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 195, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 195, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_putters_s, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 195, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_4); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 195, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "src/gevent/queue.py":194 - * if self.getters: - * result.append('getters[%s]' % len(self.getters)) - * if self.putters: # <<<<<<<<<<<<<< - * result.append('putters[%s]' % len(self.putters)) - * if result: - */ - } - - /* "src/gevent/queue.py":196 - * if self.putters: - * result.append('putters[%s]' % len(self.putters)) - * if result: # <<<<<<<<<<<<<< - * return ' ' + ' '.join(result) - * return '' - */ - __pyx_t_3 = (PyList_GET_SIZE(__pyx_v_result) != 0); - if (__pyx_t_3) { - - /* "src/gevent/queue.py":197 - * result.append('putters[%s]' % len(self.putters)) - * if result: - * return ' ' + ' '.join(result) # <<<<<<<<<<<<<< - * return '' - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = __Pyx_PyString_Join(__pyx_kp_s__2, __pyx_v_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 197, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = PyNumber_Add(__pyx_kp_s__2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 197, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/queue.py":196 - * if self.putters: - * result.append('putters[%s]' % len(self.putters)) - * if result: # <<<<<<<<<<<<<< - * return ' ' + ' '.join(result) - * return '' - */ - } - - /* "src/gevent/queue.py":198 - * if result: - * return ' ' + ' '.join(result) - * return '' # <<<<<<<<<<<<<< - * - * def qsize(self): - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_kp_s__3); - __pyx_r = __pyx_kp_s__3; - goto __pyx_L0; - - /* "src/gevent/queue.py":186 - * return '<%s%s>' % (type(self).__name__, self._format()) - * - * def _format(self): # <<<<<<<<<<<<<< - * result = [] - * if self.maxsize is not None: - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent._queue.Queue._format", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_result); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":200 - * return '' - * - * def qsize(self): # <<<<<<<<<<<<<< - * """Return the size of the queue.""" - * return len(self.queue) - */ - -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_19qsize(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static Py_ssize_t __pyx_f_6gevent_6_queue_5Queue_qsize(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, int __pyx_skip_dispatch) { - Py_ssize_t __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - Py_ssize_t __pyx_t_5; - __Pyx_RefNannySetupContext("qsize", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_qsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 200, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_6_queue_5Queue_19qsize)) { - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 200, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 200, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 200, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_5; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/queue.py":202 - * def qsize(self): - * """Return the size of the queue.""" - * return len(self.queue) # <<<<<<<<<<<<<< - * - * def __len__(self): - */ - __pyx_t_1 = __pyx_v_self->queue; - __Pyx_INCREF(__pyx_t_1); - __pyx_t_5 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 202, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_5; - goto __pyx_L0; - - /* "src/gevent/queue.py":200 - * return '' - * - * def qsize(self): # <<<<<<<<<<<<<< - * """Return the size of the queue.""" - * return len(self.queue) - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_WriteUnraisable("gevent._queue.Queue.qsize", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); - __pyx_r = 0; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_19qsize(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_queue_5Queue_18qsize[] = "Queue.qsize(self) -> Py_ssize_t\nReturn the size of the queue."; -static PyMethodDef __pyx_mdef_6gevent_6_queue_5Queue_19qsize = {"qsize", (PyCFunction)__pyx_pw_6gevent_6_queue_5Queue_19qsize, METH_NOARGS, __pyx_doc_6gevent_6_queue_5Queue_18qsize}; -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_19qsize(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("qsize (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_5Queue_18qsize(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_18qsize(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("qsize", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyInt_FromSsize_t(__pyx_f_6gevent_6_queue_5Queue_qsize(__pyx_v_self, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 200, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._queue.Queue.qsize", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":204 - * return len(self.queue) - * - * def __len__(self): # <<<<<<<<<<<<<< - * """ - * Return the size of the queue. This is the same as :meth:`qsize`. - */ - -/* Python wrapper */ -static Py_ssize_t __pyx_pw_6gevent_6_queue_5Queue_21__len__(PyObject *__pyx_v_self); /*proto*/ -static char __pyx_doc_6gevent_6_queue_5Queue_20__len__[] = "\n Return the size of the queue. This is the same as :meth:`qsize`.\n\n .. versionadded: 1.1b3\n\n Previously, getting len() of a queue would raise a TypeError.\n "; -#if CYTHON_COMPILING_IN_CPYTHON -struct wrapperbase __pyx_wrapperbase_6gevent_6_queue_5Queue_20__len__; -#endif -static Py_ssize_t __pyx_pw_6gevent_6_queue_5Queue_21__len__(PyObject *__pyx_v_self) { - Py_ssize_t __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__len__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_5Queue_20__len__(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static Py_ssize_t __pyx_pf_6gevent_6_queue_5Queue_20__len__(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self) { - Py_ssize_t __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__len__", 0); - - /* "src/gevent/queue.py":213 - * """ - * - * return self.qsize() # <<<<<<<<<<<<<< - * - * def __bool__(self): - */ - __pyx_r = ((struct __pyx_vtabstruct_6gevent_6_queue_Queue *)__pyx_v_self->__pyx_vtab)->qsize(__pyx_v_self, 0); - goto __pyx_L0; - - /* "src/gevent/queue.py":204 - * return len(self.queue) - * - * def __len__(self): # <<<<<<<<<<<<<< - * """ - * Return the size of the queue. This is the same as :meth:`qsize`. - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":215 - * return self.qsize() - * - * def __bool__(self): # <<<<<<<<<<<<<< - * """ - * A queue object is always True. - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_6_queue_5Queue_23__bool__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_6gevent_6_queue_5Queue_23__bool__(PyObject *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__bool__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_5Queue_22__bool__(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_6_queue_5Queue_22__bool__(CYTHON_UNUSED struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__bool__", 0); - - /* "src/gevent/queue.py":224 - * to return True for backwards compatibility. - * """ - * return True # <<<<<<<<<<<<<< - * - * def __nonzero__(self): - */ - __pyx_r = 1; - goto __pyx_L0; - - /* "src/gevent/queue.py":215 - * return self.qsize() - * - * def __bool__(self): # <<<<<<<<<<<<<< - * """ - * A queue object is always True. - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":226 - * return True - * - * def __nonzero__(self): # <<<<<<<<<<<<<< - * # Py2. - * # For Cython; __bool__ becomes a special method that we can't - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_6_queue_5Queue_25__nonzero__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_6gevent_6_queue_5Queue_25__nonzero__(PyObject *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__nonzero__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_5Queue_24__nonzero__(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_6_queue_5Queue_24__nonzero__(CYTHON_UNUSED struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__nonzero__", 0); - - /* "src/gevent/queue.py":230 - * # For Cython; __bool__ becomes a special method that we can't - * # get by name. - * return True # <<<<<<<<<<<<<< - * - * def empty(self): - */ - __pyx_r = 1; - goto __pyx_L0; - - /* "src/gevent/queue.py":226 - * return True - * - * def __nonzero__(self): # <<<<<<<<<<<<<< - * # Py2. - * # For Cython; __bool__ becomes a special method that we can't - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":232 - * return True - * - * def empty(self): # <<<<<<<<<<<<<< - * """Return ``True`` if the queue is empty, ``False`` otherwise.""" - * return not self.qsize() - */ - -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_27empty(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static int __pyx_f_6gevent_6_queue_5Queue_empty(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, int __pyx_skip_dispatch) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - __Pyx_RefNannySetupContext("empty", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 232, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_6_queue_5Queue_27empty)) { - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 232, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 232, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 232, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_5; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/queue.py":234 - * def empty(self): - * """Return ``True`` if the queue is empty, ``False`` otherwise.""" - * return not self.qsize() # <<<<<<<<<<<<<< - * - * def full(self): - */ - __pyx_r = (!(((struct __pyx_vtabstruct_6gevent_6_queue_Queue *)__pyx_v_self->__pyx_vtab)->qsize(__pyx_v_self, 0) != 0)); - goto __pyx_L0; - - /* "src/gevent/queue.py":232 - * return True - * - * def empty(self): # <<<<<<<<<<<<<< - * """Return ``True`` if the queue is empty, ``False`` otherwise.""" - * return not self.qsize() - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_WriteUnraisable("gevent._queue.Queue.empty", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); - __pyx_r = 0; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_27empty(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_queue_5Queue_26empty[] = "Queue.empty(self) -> bool\nReturn ``True`` if the queue is empty, ``False`` otherwise."; -static PyMethodDef __pyx_mdef_6gevent_6_queue_5Queue_27empty = {"empty", (PyCFunction)__pyx_pw_6gevent_6_queue_5Queue_27empty, METH_NOARGS, __pyx_doc_6gevent_6_queue_5Queue_26empty}; -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_27empty(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("empty (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_5Queue_26empty(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_26empty(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("empty", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_f_6gevent_6_queue_5Queue_empty(__pyx_v_self, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 232, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._queue.Queue.empty", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":236 - * return not self.qsize() - * - * def full(self): # <<<<<<<<<<<<<< - * """Return ``True`` if the queue is full, ``False`` otherwise. - * - */ - -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_29full(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static int __pyx_f_6gevent_6_queue_5Queue_full(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, int __pyx_skip_dispatch) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - int __pyx_t_6; - __Pyx_RefNannySetupContext("full", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_full); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 236, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_6_queue_5Queue_29full)) { - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 236, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 236, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 236, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_5; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/queue.py":241 - * ``Queue(None)`` is never full. - * """ - * return self._maxsize > 0 and self.qsize() >= self._maxsize # <<<<<<<<<<<<<< - * - * def put(self, item, block=True, timeout=None): - */ - __pyx_t_6 = ((__pyx_v_self->_maxsize > 0) != 0); - if (__pyx_t_6) { - } else { - __pyx_t_5 = __pyx_t_6; - goto __pyx_L3_bool_binop_done; - } - __pyx_t_6 = ((((struct __pyx_vtabstruct_6gevent_6_queue_Queue *)__pyx_v_self->__pyx_vtab)->qsize(__pyx_v_self, 0) >= __pyx_v_self->_maxsize) != 0); - __pyx_t_5 = __pyx_t_6; - __pyx_L3_bool_binop_done:; - __pyx_r = __pyx_t_5; - goto __pyx_L0; - - /* "src/gevent/queue.py":236 - * return not self.qsize() - * - * def full(self): # <<<<<<<<<<<<<< - * """Return ``True`` if the queue is full, ``False`` otherwise. - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_WriteUnraisable("gevent._queue.Queue.full", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); - __pyx_r = 0; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_29full(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_queue_5Queue_28full[] = "Queue.full(self) -> bool\nReturn ``True`` if the queue is full, ``False`` otherwise.\n\n ``Queue(None)`` is never full.\n "; -static PyMethodDef __pyx_mdef_6gevent_6_queue_5Queue_29full = {"full", (PyCFunction)__pyx_pw_6gevent_6_queue_5Queue_29full, METH_NOARGS, __pyx_doc_6gevent_6_queue_5Queue_28full}; -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_29full(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("full (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_5Queue_28full(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_28full(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("full", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_f_6gevent_6_queue_5Queue_full(__pyx_v_self, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 236, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._queue.Queue.full", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":243 - * return self._maxsize > 0 and self.qsize() >= self._maxsize - * - * def put(self, item, block=True, timeout=None): # <<<<<<<<<<<<<< - * """Put an item into the queue. - * - */ - -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_31put(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_f_6gevent_6_queue_5Queue_put(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, PyObject *__pyx_v_item, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_6_queue_5Queue_put *__pyx_optional_args) { - PyObject *__pyx_v_block = ((PyObject *)Py_True); - PyObject *__pyx_v_timeout = ((PyObject *)Py_None); - PyObject *__pyx_v_getter = NULL; - struct __pyx_obj_6gevent_6_queue_ItemWaiter *__pyx_v_waiter = NULL; - PyObject *__pyx_v_result = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - int __pyx_t_7; - int __pyx_t_8; - int __pyx_t_9; - int __pyx_t_10; - char const *__pyx_t_11; - PyObject *__pyx_t_12 = NULL; - PyObject *__pyx_t_13 = NULL; - PyObject *__pyx_t_14 = NULL; - PyObject *__pyx_t_15 = NULL; - PyObject *__pyx_t_16 = NULL; - PyObject *__pyx_t_17 = NULL; - __Pyx_RefNannySetupContext("put", 0); - if (__pyx_optional_args) { - if (__pyx_optional_args->__pyx_n > 0) { - __pyx_v_block = __pyx_optional_args->block; - if (__pyx_optional_args->__pyx_n > 1) { - __pyx_v_timeout = __pyx_optional_args->timeout; - } - } - } - __Pyx_INCREF(__pyx_v_timeout); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_put_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 243, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_6_queue_5Queue_31put)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - __pyx_t_5 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_5 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_item, __pyx_v_block, __pyx_v_timeout}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 243, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_item, __pyx_v_block, __pyx_v_timeout}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 243, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_6 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 243, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (__pyx_t_4) { - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; - } - __Pyx_INCREF(__pyx_v_item); - __Pyx_GIVEREF(__pyx_v_item); - PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_item); - __Pyx_INCREF(__pyx_v_block); - __Pyx_GIVEREF(__pyx_v_block); - PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_block); - __Pyx_INCREF(__pyx_v_timeout); - __Pyx_GIVEREF(__pyx_v_timeout); - PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_v_timeout); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 243, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/queue.py":254 - * is ignored in that case). - * """ - * if self._maxsize == -1 or self.qsize() < self._maxsize: # <<<<<<<<<<<<<< - * # there's a free slot, put an item right away - * self._put(item) - */ - __pyx_t_8 = ((__pyx_v_self->_maxsize == -1L) != 0); - if (!__pyx_t_8) { - } else { - __pyx_t_7 = __pyx_t_8; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_8 = ((((struct __pyx_vtabstruct_6gevent_6_queue_Queue *)__pyx_v_self->__pyx_vtab)->qsize(__pyx_v_self, 0) < __pyx_v_self->_maxsize) != 0); - __pyx_t_7 = __pyx_t_8; - __pyx_L4_bool_binop_done:; - if (__pyx_t_7) { - - /* "src/gevent/queue.py":256 - * if self._maxsize == -1 or self.qsize() < self._maxsize: - * # there's a free slot, put an item right away - * self._put(item) # <<<<<<<<<<<<<< - * if self.getters: - * self._schedule_unlock() - */ - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_6_queue_Queue *)__pyx_v_self->__pyx_vtab)->_put(__pyx_v_self, __pyx_v_item, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":257 - * # there's a free slot, put an item right away - * self._put(item) - * if self.getters: # <<<<<<<<<<<<<< - * self._schedule_unlock() - * elif self.hub is getcurrent(): - */ - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_self->getters); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 257, __pyx_L1_error) - if (__pyx_t_7) { - - /* "src/gevent/queue.py":258 - * self._put(item) - * if self.getters: - * self._schedule_unlock() # <<<<<<<<<<<<<< - * elif self.hub is getcurrent(): - * # We're in the mainloop, so we cannot wait; we can switch to other greenlets though. - */ - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_6_queue_Queue *)__pyx_v_self->__pyx_vtab)->_schedule_unlock(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 258, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":257 - * # there's a free slot, put an item right away - * self._put(item) - * if self.getters: # <<<<<<<<<<<<<< - * self._schedule_unlock() - * elif self.hub is getcurrent(): - */ - } - - /* "src/gevent/queue.py":254 - * is ignored in that case). - * """ - * if self._maxsize == -1 or self.qsize() < self._maxsize: # <<<<<<<<<<<<<< - * # there's a free slot, put an item right away - * self._put(item) - */ - goto __pyx_L3; - } - - /* "src/gevent/queue.py":259 - * if self.getters: - * self._schedule_unlock() - * elif self.hub is getcurrent(): # <<<<<<<<<<<<<< - * # We're in the mainloop, so we cannot wait; we can switch to other greenlets though. - * # Check if possible to get a free slot in the queue. - */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_getcurrent); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 259, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 259, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 259, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_7 = (__pyx_v_self->hub == __pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_8 = (__pyx_t_7 != 0); - if (__pyx_t_8) { - - /* "src/gevent/queue.py":262 - * # We're in the mainloop, so we cannot wait; we can switch to other greenlets though. - * # Check if possible to get a free slot in the queue. - * while self.getters and self.qsize() and self.qsize() >= self._maxsize: # <<<<<<<<<<<<<< - * getter = self.getters.popleft() - * getter.switch(getter) - */ - while (1) { - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_self->getters); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 262, __pyx_L1_error) - if (__pyx_t_7) { - } else { - __pyx_t_8 = __pyx_t_7; - goto __pyx_L9_bool_binop_done; - } - __pyx_t_7 = (((struct __pyx_vtabstruct_6gevent_6_queue_Queue *)__pyx_v_self->__pyx_vtab)->qsize(__pyx_v_self, 0) != 0); - if (__pyx_t_7) { - } else { - __pyx_t_8 = __pyx_t_7; - goto __pyx_L9_bool_binop_done; - } - __pyx_t_7 = ((((struct __pyx_vtabstruct_6gevent_6_queue_Queue *)__pyx_v_self->__pyx_vtab)->qsize(__pyx_v_self, 0) >= __pyx_v_self->_maxsize) != 0); - __pyx_t_8 = __pyx_t_7; - __pyx_L9_bool_binop_done:; - if (!__pyx_t_8) break; - - /* "src/gevent/queue.py":263 - * # Check if possible to get a free slot in the queue. - * while self.getters and self.qsize() and self.qsize() >= self._maxsize: - * getter = self.getters.popleft() # <<<<<<<<<<<<<< - * getter.switch(getter) - * if self.qsize() < self._maxsize: - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->getters, __pyx_n_s_popleft); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 263, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 263, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 263, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF_SET(__pyx_v_getter, __pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/queue.py":264 - * while self.getters and self.qsize() and self.qsize() >= self._maxsize: - * getter = self.getters.popleft() - * getter.switch(getter) # <<<<<<<<<<<<<< - * if self.qsize() < self._maxsize: - * self._put(item) - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_getter, __pyx_n_s_switch); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 264, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_getter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 264, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_getter}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 264, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_getter}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 264, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 264, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(__pyx_v_getter); - __Pyx_GIVEREF(__pyx_v_getter); - PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_getter); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 264, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/queue.py":265 - * getter = self.getters.popleft() - * getter.switch(getter) - * if self.qsize() < self._maxsize: # <<<<<<<<<<<<<< - * self._put(item) - * return - */ - __pyx_t_8 = ((((struct __pyx_vtabstruct_6gevent_6_queue_Queue *)__pyx_v_self->__pyx_vtab)->qsize(__pyx_v_self, 0) < __pyx_v_self->_maxsize) != 0); - if (__pyx_t_8) { - - /* "src/gevent/queue.py":266 - * getter.switch(getter) - * if self.qsize() < self._maxsize: - * self._put(item) # <<<<<<<<<<<<<< - * return - * raise Full - */ - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_6_queue_Queue *)__pyx_v_self->__pyx_vtab)->_put(__pyx_v_self, __pyx_v_item, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 266, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":267 - * if self.qsize() < self._maxsize: - * self._put(item) - * return # <<<<<<<<<<<<<< - * raise Full - * elif block: - */ - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - /* "src/gevent/queue.py":265 - * getter = self.getters.popleft() - * getter.switch(getter) - * if self.qsize() < self._maxsize: # <<<<<<<<<<<<<< - * self._put(item) - * return - */ - } - - /* "src/gevent/queue.py":268 - * self._put(item) - * return - * raise Full # <<<<<<<<<<<<<< - * elif block: - * waiter = ItemWaiter(item, self) - */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_Full); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 268, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 268, __pyx_L1_error) - - /* "src/gevent/queue.py":259 - * if self.getters: - * self._schedule_unlock() - * elif self.hub is getcurrent(): # <<<<<<<<<<<<<< - * # We're in the mainloop, so we cannot wait; we can switch to other greenlets though. - * # Check if possible to get a free slot in the queue. - */ - } - - /* "src/gevent/queue.py":269 - * return - * raise Full - * elif block: # <<<<<<<<<<<<<< - * waiter = ItemWaiter(item, self) - * self.putters.append(waiter) - */ - __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_block); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 269, __pyx_L1_error) - if (likely(__pyx_t_8)) { - - /* "src/gevent/queue.py":270 - * raise Full - * elif block: - * waiter = ItemWaiter(item, self) # <<<<<<<<<<<<<< - * self.putters.append(waiter) - * timeout = Timeout._start_new_or_dummy(timeout, Full) - */ - __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 270, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_v_item); - __Pyx_GIVEREF(__pyx_v_item); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_item); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self)); - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6gevent_6_queue_ItemWaiter), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 270, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_waiter = ((struct __pyx_obj_6gevent_6_queue_ItemWaiter *)__pyx_t_2); - __pyx_t_2 = 0; - - /* "src/gevent/queue.py":271 - * elif block: - * waiter = ItemWaiter(item, self) - * self.putters.append(waiter) # <<<<<<<<<<<<<< - * timeout = Timeout._start_new_or_dummy(timeout, Full) - * try: - */ - __pyx_t_9 = __Pyx_PyObject_Append(__pyx_v_self->putters, ((PyObject *)__pyx_v_waiter)); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 271, __pyx_L1_error) - - /* "src/gevent/queue.py":272 - * waiter = ItemWaiter(item, self) - * self.putters.append(waiter) - * timeout = Timeout._start_new_or_dummy(timeout, Full) # <<<<<<<<<<<<<< - * try: - * if self.getters: - */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_Timeout); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 272, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_start_new_or_dummy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 272, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_Full); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 272, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = NULL; - __pyx_t_5 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_6, function); - __pyx_t_5 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_6)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_timeout, __pyx_t_1}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 272, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_timeout, __pyx_t_1}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 272, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else - #endif - { - __pyx_t_4 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 272, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - if (__pyx_t_3) { - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; - } - __Pyx_INCREF(__pyx_v_timeout); - __Pyx_GIVEREF(__pyx_v_timeout); - PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_5, __pyx_v_timeout); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_5, __pyx_t_1); - __pyx_t_1 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 272, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF_SET(__pyx_v_timeout, __pyx_t_2); - __pyx_t_2 = 0; - - /* "src/gevent/queue.py":273 - * self.putters.append(waiter) - * timeout = Timeout._start_new_or_dummy(timeout, Full) - * try: # <<<<<<<<<<<<<< - * if self.getters: - * self._schedule_unlock() - */ - /*try:*/ { - - /* "src/gevent/queue.py":274 - * timeout = Timeout._start_new_or_dummy(timeout, Full) - * try: - * if self.getters: # <<<<<<<<<<<<<< - * self._schedule_unlock() - * result = waiter.get() - */ - __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_self->getters); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 274, __pyx_L14_error) - if (__pyx_t_8) { - - /* "src/gevent/queue.py":275 - * try: - * if self.getters: - * self._schedule_unlock() # <<<<<<<<<<<<<< - * result = waiter.get() - * if result is not waiter: - */ - __pyx_t_2 = ((struct __pyx_vtabstruct_6gevent_6_queue_Queue *)__pyx_v_self->__pyx_vtab)->_schedule_unlock(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 275, __pyx_L14_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/queue.py":274 - * timeout = Timeout._start_new_or_dummy(timeout, Full) - * try: - * if self.getters: # <<<<<<<<<<<<<< - * self._schedule_unlock() - * result = waiter.get() - */ - } - - /* "src/gevent/queue.py":276 - * if self.getters: - * self._schedule_unlock() - * result = waiter.get() # <<<<<<<<<<<<<< - * if result is not waiter: - * raise InvalidSwitchError("Invalid switch into Queue.put: %r" % (result, )) - */ - __pyx_t_2 = ((struct __pyx_vtabstruct_6gevent_6_queue_ItemWaiter *)__pyx_v_waiter->__pyx_base.__pyx_vtab)->__pyx_base.get(((struct __pyx_obj_6gevent_8__waiter_Waiter *)__pyx_v_waiter), 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 276, __pyx_L14_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_v_result = __pyx_t_2; - __pyx_t_2 = 0; - - /* "src/gevent/queue.py":277 - * self._schedule_unlock() - * result = waiter.get() - * if result is not waiter: # <<<<<<<<<<<<<< - * raise InvalidSwitchError("Invalid switch into Queue.put: %r" % (result, )) - * finally: - */ - __pyx_t_8 = (__pyx_v_result != ((PyObject *)__pyx_v_waiter)); - __pyx_t_7 = (__pyx_t_8 != 0); - if (unlikely(__pyx_t_7)) { - - /* "src/gevent/queue.py":278 - * result = waiter.get() - * if result is not waiter: - * raise InvalidSwitchError("Invalid switch into Queue.put: %r" % (result, )) # <<<<<<<<<<<<<< - * finally: - * timeout.cancel() - */ - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_InvalidSwitchError); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 278, __pyx_L14_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 278, __pyx_L14_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_INCREF(__pyx_v_result); - __Pyx_GIVEREF(__pyx_v_result); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_result); - __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_switch_into_Queue_put_r, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 278, __pyx_L14_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_6, function); - } - } - if (!__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 278, __pyx_L14_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_6)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_1}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 278, __pyx_L14_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_1}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 278, __pyx_L14_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else - #endif - { - __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 278, __pyx_L14_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_1); - __pyx_t_1 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 278, __pyx_L14_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - } - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 278, __pyx_L14_error) - - /* "src/gevent/queue.py":277 - * self._schedule_unlock() - * result = waiter.get() - * if result is not waiter: # <<<<<<<<<<<<<< - * raise InvalidSwitchError("Invalid switch into Queue.put: %r" % (result, )) - * finally: - */ - } - } - - /* "src/gevent/queue.py":280 - * raise InvalidSwitchError("Invalid switch into Queue.put: %r" % (result, )) - * finally: - * timeout.cancel() # <<<<<<<<<<<<<< - * _safe_remove(self.putters, waiter) - * else: - */ - /*finally:*/ { - /*normal exit:*/{ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_timeout, __pyx_n_s_cancel); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 280, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_6, function); - } - } - if (__pyx_t_3) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 280, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 280, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/queue.py":281 - * finally: - * timeout.cancel() - * _safe_remove(self.putters, waiter) # <<<<<<<<<<<<<< - * else: - * raise Full - */ - __pyx_t_2 = __pyx_v_self->putters; - __Pyx_INCREF(__pyx_t_2); - __pyx_t_6 = __pyx_f_6gevent_6_queue__safe_remove(__pyx_t_2, ((PyObject *)__pyx_v_waiter)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 281, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - goto __pyx_L15; - } - __pyx_L14_error:; - /*exception exit:*/{ - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17); - if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14) < 0)) __Pyx_ErrFetch(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14); - __Pyx_XGOTREF(__pyx_t_12); - __Pyx_XGOTREF(__pyx_t_13); - __Pyx_XGOTREF(__pyx_t_14); - __Pyx_XGOTREF(__pyx_t_15); - __Pyx_XGOTREF(__pyx_t_16); - __Pyx_XGOTREF(__pyx_t_17); - __pyx_t_5 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename; - { - - /* "src/gevent/queue.py":280 - * raise InvalidSwitchError("Invalid switch into Queue.put: %r" % (result, )) - * finally: - * timeout.cancel() # <<<<<<<<<<<<<< - * _safe_remove(self.putters, waiter) - * else: - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_timeout, __pyx_n_s_cancel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 280, __pyx_L19_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 280, __pyx_L19_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 280, __pyx_L19_error) - } - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - - /* "src/gevent/queue.py":281 - * finally: - * timeout.cancel() - * _safe_remove(self.putters, waiter) # <<<<<<<<<<<<<< - * else: - * raise Full - */ - __pyx_t_6 = __pyx_v_self->putters; - __Pyx_INCREF(__pyx_t_6); - __pyx_t_2 = __pyx_f_6gevent_6_queue__safe_remove(__pyx_t_6, ((PyObject *)__pyx_v_waiter)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 281, __pyx_L19_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_15); - __Pyx_XGIVEREF(__pyx_t_16); - __Pyx_XGIVEREF(__pyx_t_17); - __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17); - } - __Pyx_XGIVEREF(__pyx_t_12); - __Pyx_XGIVEREF(__pyx_t_13); - __Pyx_XGIVEREF(__pyx_t_14); - __Pyx_ErrRestore(__pyx_t_12, __pyx_t_13, __pyx_t_14); - __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; - __pyx_lineno = __pyx_t_5; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_11; - goto __pyx_L1_error; - __pyx_L19_error:; - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_15); - __Pyx_XGIVEREF(__pyx_t_16); - __Pyx_XGIVEREF(__pyx_t_17); - __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17); - } - __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; - __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; - goto __pyx_L1_error; - } - __pyx_L15:; - } - - /* "src/gevent/queue.py":269 - * return - * raise Full - * elif block: # <<<<<<<<<<<<<< - * waiter = ItemWaiter(item, self) - * self.putters.append(waiter) - */ - goto __pyx_L3; - } - - /* "src/gevent/queue.py":283 - * _safe_remove(self.putters, waiter) - * else: - * raise Full # <<<<<<<<<<<<<< - * - * def put_nowait(self, item): - */ - /*else*/ { - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_Full); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 283, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 283, __pyx_L1_error) - } - __pyx_L3:; - - /* "src/gevent/queue.py":243 - * return self._maxsize > 0 and self.qsize() >= self._maxsize - * - * def put(self, item, block=True, timeout=None): # <<<<<<<<<<<<<< - * """Put an item into the queue. - * - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_AddTraceback("gevent._queue.Queue.put", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_getter); - __Pyx_XDECREF((PyObject *)__pyx_v_waiter); - __Pyx_XDECREF(__pyx_v_result); - __Pyx_XDECREF(__pyx_v_timeout); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_31put(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_6_queue_5Queue_30put[] = "Queue.put(self, item, block=True, timeout=None)\nPut an item into the queue.\n\n If optional arg *block* is true and *timeout* is ``None`` (the default),\n block if necessary until a free slot is available. If *timeout* is\n a positive number, it blocks at most *timeout* seconds and raises\n the :class:`Full` exception if no free slot was available within that time.\n Otherwise (*block* is false), put an item on the queue if a free slot\n is immediately available, else raise the :class:`Full` exception (*timeout*\n is ignored in that case).\n "; -static PyMethodDef __pyx_mdef_6gevent_6_queue_5Queue_31put = {"put", (PyCFunction)__pyx_pw_6gevent_6_queue_5Queue_31put, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_6_queue_5Queue_30put}; -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_31put(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_item = 0; - PyObject *__pyx_v_block = 0; - PyObject *__pyx_v_timeout = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("put (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_item,&__pyx_n_s_block,&__pyx_n_s_timeout,0}; - PyObject* values[3] = {0,0,0}; - values[1] = ((PyObject *)Py_True); - values[2] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_item)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_block); - if (value) { values[1] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeout); - if (value) { values[2] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "put") < 0)) __PYX_ERR(0, 243, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_item = values[0]; - __pyx_v_block = values[1]; - __pyx_v_timeout = values[2]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("put", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 243, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._queue.Queue.put", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_6_queue_5Queue_30put(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self), __pyx_v_item, __pyx_v_block, __pyx_v_timeout); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_30put(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_block, PyObject *__pyx_v_timeout) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - struct __pyx_opt_args_6gevent_6_queue_5Queue_put __pyx_t_2; - __Pyx_RefNannySetupContext("put", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_2.__pyx_n = 2; - __pyx_t_2.block = __pyx_v_block; - __pyx_t_2.timeout = __pyx_v_timeout; - __pyx_t_1 = __pyx_vtabptr_6gevent_6_queue_Queue->put(__pyx_v_self, __pyx_v_item, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 243, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._queue.Queue.put", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":285 - * raise Full - * - * def put_nowait(self, item): # <<<<<<<<<<<<<< - * """Put an item into the queue without blocking. - * - */ - -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_33put_nowait(PyObject *__pyx_v_self, PyObject *__pyx_v_item); /*proto*/ -static PyObject *__pyx_f_6gevent_6_queue_5Queue_put_nowait(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, PyObject *__pyx_v_item, int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - struct __pyx_opt_args_6gevent_6_queue_5Queue_put __pyx_t_6; - __Pyx_RefNannySetupContext("put_nowait", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_put_nowait); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 285, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_6_queue_5Queue_33put_nowait)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (!__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_item); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 285, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_item}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 285, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_item}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 285, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 285, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_INCREF(__pyx_v_item); - __Pyx_GIVEREF(__pyx_v_item); - PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_item); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 285, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/queue.py":291 - * Otherwise raise the :class:`Full` exception. - * """ - * self.put(item, False) # <<<<<<<<<<<<<< - * - * def __get_or_peek(self, method, block, timeout): - */ - __pyx_t_6.__pyx_n = 1; - __pyx_t_6.block = Py_False; - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_6_queue_Queue *)__pyx_v_self->__pyx_vtab)->put(__pyx_v_self, __pyx_v_item, 0, &__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 291, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":285 - * raise Full - * - * def put_nowait(self, item): # <<<<<<<<<<<<<< - * """Put an item into the queue without blocking. - * - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent._queue.Queue.put_nowait", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_33put_nowait(PyObject *__pyx_v_self, PyObject *__pyx_v_item); /*proto*/ -static char __pyx_doc_6gevent_6_queue_5Queue_32put_nowait[] = "Queue.put_nowait(self, item)\nPut an item into the queue without blocking.\n\n Only enqueue the item if a free slot is immediately available.\n Otherwise raise the :class:`Full` exception.\n "; -static PyMethodDef __pyx_mdef_6gevent_6_queue_5Queue_33put_nowait = {"put_nowait", (PyCFunction)__pyx_pw_6gevent_6_queue_5Queue_33put_nowait, METH_O, __pyx_doc_6gevent_6_queue_5Queue_32put_nowait}; -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_33put_nowait(PyObject *__pyx_v_self, PyObject *__pyx_v_item) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("put_nowait (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_5Queue_32put_nowait(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self), ((PyObject *)__pyx_v_item)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_32put_nowait(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, PyObject *__pyx_v_item) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("put_nowait", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_6_queue_5Queue_put_nowait(__pyx_v_self, __pyx_v_item, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 285, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._queue.Queue.put_nowait", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":293 - * self.put(item, False) - * - * def __get_or_peek(self, method, block, timeout): # <<<<<<<<<<<<<< - * # Internal helper method. The `method` should be either - * # self._get when called from self.get() or self._peek when - */ - -static PyObject *__pyx_f_6gevent_6_queue_5Queue___get_or_peek(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, PyObject *__pyx_v_method, PyObject *__pyx_v_block, PyObject *__pyx_v_timeout) { - struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_waiter = NULL; - PyObject *__pyx_v_result = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - int __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - int __pyx_t_7; - PyObject *__pyx_t_8 = NULL; - int __pyx_t_9; - int __pyx_t_10; - char const *__pyx_t_11; - PyObject *__pyx_t_12 = NULL; - PyObject *__pyx_t_13 = NULL; - PyObject *__pyx_t_14 = NULL; - PyObject *__pyx_t_15 = NULL; - PyObject *__pyx_t_16 = NULL; - PyObject *__pyx_t_17 = NULL; - __Pyx_RefNannySetupContext("__get_or_peek", 0); - __Pyx_INCREF(__pyx_v_timeout); - - /* "src/gevent/queue.py":299 - * # to see if there are items in the queue. - * - * if self.hub is getcurrent(): # <<<<<<<<<<<<<< - * # special case to make get_nowait() or peek_nowait() runnable in the mainloop greenlet - * # there are no items in the queue; try to fix the situation by unlocking putters - */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_getcurrent); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 299, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 299, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 299, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = (__pyx_v_self->hub == __pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_5 = (__pyx_t_4 != 0); - if (__pyx_t_5) { - - /* "src/gevent/queue.py":302 - * # special case to make get_nowait() or peek_nowait() runnable in the mainloop greenlet - * # there are no items in the queue; try to fix the situation by unlocking putters - * while self.putters: # <<<<<<<<<<<<<< - * # Note: get() used popleft(), peek used pop(); popleft - * # is almost certainly correct. - */ - while (1) { - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_self->putters); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 302, __pyx_L1_error) - if (!__pyx_t_5) break; - - /* "src/gevent/queue.py":305 - * # Note: get() used popleft(), peek used pop(); popleft - * # is almost certainly correct. - * self.putters.popleft().put_and_switch() # <<<<<<<<<<<<<< - * if self.qsize(): - * return method() - */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->putters, __pyx_n_s_popleft); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 305, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_6) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 305, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 305, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_put_and_switch); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 305, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_2)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_2); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_2) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 305, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 305, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":306 - * # is almost certainly correct. - * self.putters.popleft().put_and_switch() - * if self.qsize(): # <<<<<<<<<<<<<< - * return method() - * raise Empty() - */ - __pyx_t_5 = (((struct __pyx_vtabstruct_6gevent_6_queue_Queue *)__pyx_v_self->__pyx_vtab)->qsize(__pyx_v_self, 0) != 0); - if (__pyx_t_5) { - - /* "src/gevent/queue.py":307 - * self.putters.popleft().put_and_switch() - * if self.qsize(): - * return method() # <<<<<<<<<<<<<< - * raise Empty() - * - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_method); - __pyx_t_3 = __pyx_v_method; __pyx_t_2 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_2)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_2); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_2) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 307, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 307, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/queue.py":306 - * # is almost certainly correct. - * self.putters.popleft().put_and_switch() - * if self.qsize(): # <<<<<<<<<<<<<< - * return method() - * raise Empty() - */ - } - } - - /* "src/gevent/queue.py":308 - * if self.qsize(): - * return method() - * raise Empty() # <<<<<<<<<<<<<< - * - * if not block: - */ - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_Empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 308, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_2)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_2); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_2) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 308, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 308, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 308, __pyx_L1_error) - - /* "src/gevent/queue.py":299 - * # to see if there are items in the queue. - * - * if self.hub is getcurrent(): # <<<<<<<<<<<<<< - * # special case to make get_nowait() or peek_nowait() runnable in the mainloop greenlet - * # there are no items in the queue; try to fix the situation by unlocking putters - */ - } - - /* "src/gevent/queue.py":310 - * raise Empty() - * - * if not block: # <<<<<<<<<<<<<< - * # We can't block, we're not the hub, and we have nothing - * # to return. No choice... - */ - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_block); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 310, __pyx_L1_error) - __pyx_t_4 = ((!__pyx_t_5) != 0); - if (unlikely(__pyx_t_4)) { - - /* "src/gevent/queue.py":313 - * # We can't block, we're not the hub, and we have nothing - * # to return. No choice... - * raise Empty() # <<<<<<<<<<<<<< - * - * waiter = Waiter() # pylint:disable=undefined-variable - */ - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_Empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 313, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_2)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_2); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_2) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 313, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 313, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 313, __pyx_L1_error) - - /* "src/gevent/queue.py":310 - * raise Empty() - * - * if not block: # <<<<<<<<<<<<<< - * # We can't block, we're not the hub, and we have nothing - * # to return. No choice... - */ - } - - /* "src/gevent/queue.py":315 - * raise Empty() - * - * waiter = Waiter() # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * timeout = Timeout._start_new_or_dummy(timeout, Empty) - * try: - */ - __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_6gevent_8__waiter_Waiter)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 315, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_waiter = ((struct __pyx_obj_6gevent_8__waiter_Waiter *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/queue.py":316 - * - * waiter = Waiter() # pylint:disable=undefined-variable - * timeout = Timeout._start_new_or_dummy(timeout, Empty) # <<<<<<<<<<<<<< - * try: - * self.getters.append(waiter) - */ - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_Timeout); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 316, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_start_new_or_dummy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 316, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_Empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 316, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = NULL; - __pyx_t_7 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_7 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_timeout, __pyx_t_3}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 316, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_timeout, __pyx_t_3}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 316, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - { - __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 316, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - if (__pyx_t_6) { - __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; - } - __Pyx_INCREF(__pyx_v_timeout); - __Pyx_GIVEREF(__pyx_v_timeout); - PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_v_timeout); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_3); - __pyx_t_3 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 316, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF_SET(__pyx_v_timeout, __pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/queue.py":317 - * waiter = Waiter() # pylint:disable=undefined-variable - * timeout = Timeout._start_new_or_dummy(timeout, Empty) - * try: # <<<<<<<<<<<<<< - * self.getters.append(waiter) - * if self.putters: - */ - /*try:*/ { - - /* "src/gevent/queue.py":318 - * timeout = Timeout._start_new_or_dummy(timeout, Empty) - * try: - * self.getters.append(waiter) # <<<<<<<<<<<<<< - * if self.putters: - * self._schedule_unlock() - */ - __pyx_t_9 = __Pyx_PyObject_Append(__pyx_v_self->getters, ((PyObject *)__pyx_v_waiter)); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 318, __pyx_L9_error) - - /* "src/gevent/queue.py":319 - * try: - * self.getters.append(waiter) - * if self.putters: # <<<<<<<<<<<<<< - * self._schedule_unlock() - * result = waiter.get() - */ - __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_self->putters); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 319, __pyx_L9_error) - if (__pyx_t_4) { - - /* "src/gevent/queue.py":320 - * self.getters.append(waiter) - * if self.putters: - * self._schedule_unlock() # <<<<<<<<<<<<<< - * result = waiter.get() - * if result is not waiter: - */ - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_6_queue_Queue *)__pyx_v_self->__pyx_vtab)->_schedule_unlock(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 320, __pyx_L9_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":319 - * try: - * self.getters.append(waiter) - * if self.putters: # <<<<<<<<<<<<<< - * self._schedule_unlock() - * result = waiter.get() - */ - } - - /* "src/gevent/queue.py":321 - * if self.putters: - * self._schedule_unlock() - * result = waiter.get() # <<<<<<<<<<<<<< - * if result is not waiter: - * raise InvalidSwitchError('Invalid switch into Queue.get: %r' % (result, )) - */ - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_8__waiter_Waiter *)__pyx_v_waiter->__pyx_vtab)->get(__pyx_v_waiter, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 321, __pyx_L9_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_result = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/queue.py":322 - * self._schedule_unlock() - * result = waiter.get() - * if result is not waiter: # <<<<<<<<<<<<<< - * raise InvalidSwitchError('Invalid switch into Queue.get: %r' % (result, )) - * return method() - */ - __pyx_t_4 = (__pyx_v_result != ((PyObject *)__pyx_v_waiter)); - __pyx_t_5 = (__pyx_t_4 != 0); - if (unlikely(__pyx_t_5)) { - - /* "src/gevent/queue.py":323 - * result = waiter.get() - * if result is not waiter: - * raise InvalidSwitchError('Invalid switch into Queue.get: %r' % (result, )) # <<<<<<<<<<<<<< - * return method() - * finally: - */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_InvalidSwitchError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 323, __pyx_L9_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 323, __pyx_L9_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_INCREF(__pyx_v_result); - __Pyx_GIVEREF(__pyx_v_result); - PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_result); - __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_switch_into_Queue_get_r, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 323, __pyx_L9_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_8)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_8); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_8) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 323, __pyx_L9_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_3}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 323, __pyx_L9_error) - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_3}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 323, __pyx_L9_error) - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - { - __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 323, __pyx_L9_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8); __pyx_t_8 = NULL; - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3); - __pyx_t_3 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 323, __pyx_L9_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 323, __pyx_L9_error) - - /* "src/gevent/queue.py":322 - * self._schedule_unlock() - * result = waiter.get() - * if result is not waiter: # <<<<<<<<<<<<<< - * raise InvalidSwitchError('Invalid switch into Queue.get: %r' % (result, )) - * return method() - */ - } - - /* "src/gevent/queue.py":324 - * if result is not waiter: - * raise InvalidSwitchError('Invalid switch into Queue.get: %r' % (result, )) - * return method() # <<<<<<<<<<<<<< - * finally: - * timeout.cancel() - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_method); - __pyx_t_2 = __pyx_v_method; __pyx_t_6 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_6) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 324, __pyx_L9_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 324, __pyx_L9_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L8_return; - } - - /* "src/gevent/queue.py":326 - * return method() - * finally: - * timeout.cancel() # <<<<<<<<<<<<<< - * _safe_remove(self.getters, waiter) - * - */ - /*finally:*/ { - __pyx_L9_error:; - /*exception exit:*/{ - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17); - if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14) < 0)) __Pyx_ErrFetch(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14); - __Pyx_XGOTREF(__pyx_t_12); - __Pyx_XGOTREF(__pyx_t_13); - __Pyx_XGOTREF(__pyx_t_14); - __Pyx_XGOTREF(__pyx_t_15); - __Pyx_XGOTREF(__pyx_t_16); - __Pyx_XGOTREF(__pyx_t_17); - __pyx_t_7 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename; - { - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_timeout, __pyx_n_s_cancel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 326, __pyx_L14_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_6) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 326, __pyx_L14_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 326, __pyx_L14_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":327 - * finally: - * timeout.cancel() - * _safe_remove(self.getters, waiter) # <<<<<<<<<<<<<< - * - * def get(self, block=True, timeout=None): - */ - __pyx_t_1 = __pyx_v_self->getters; - __Pyx_INCREF(__pyx_t_1); - __pyx_t_2 = __pyx_f_6gevent_6_queue__safe_remove(__pyx_t_1, ((PyObject *)__pyx_v_waiter)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 327, __pyx_L14_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_15); - __Pyx_XGIVEREF(__pyx_t_16); - __Pyx_XGIVEREF(__pyx_t_17); - __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17); - } - __Pyx_XGIVEREF(__pyx_t_12); - __Pyx_XGIVEREF(__pyx_t_13); - __Pyx_XGIVEREF(__pyx_t_14); - __Pyx_ErrRestore(__pyx_t_12, __pyx_t_13, __pyx_t_14); - __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; - __pyx_lineno = __pyx_t_7; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_11; - goto __pyx_L1_error; - __pyx_L14_error:; - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_15); - __Pyx_XGIVEREF(__pyx_t_16); - __Pyx_XGIVEREF(__pyx_t_17); - __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17); - } - __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; - __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; - goto __pyx_L1_error; - } - __pyx_L8_return: { - __pyx_t_17 = __pyx_r; - __pyx_r = 0; - - /* "src/gevent/queue.py":326 - * return method() - * finally: - * timeout.cancel() # <<<<<<<<<<<<<< - * _safe_remove(self.getters, waiter) - * - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_timeout, __pyx_n_s_cancel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 326, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_6 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - } - } - if (__pyx_t_6) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 326, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 326, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/queue.py":327 - * finally: - * timeout.cancel() - * _safe_remove(self.getters, waiter) # <<<<<<<<<<<<<< - * - * def get(self, block=True, timeout=None): - */ - __pyx_t_2 = __pyx_v_self->getters; - __Pyx_INCREF(__pyx_t_2); - __pyx_t_1 = __pyx_f_6gevent_6_queue__safe_remove(__pyx_t_2, ((PyObject *)__pyx_v_waiter)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 327, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_17; - __pyx_t_17 = 0; - goto __pyx_L0; - } - } - - /* "src/gevent/queue.py":293 - * self.put(item, False) - * - * def __get_or_peek(self, method, block, timeout): # <<<<<<<<<<<<<< - * # Internal helper method. The `method` should be either - * # self._get when called from self.get() or self._peek when - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_AddTraceback("gevent._queue.Queue.__get_or_peek", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_waiter); - __Pyx_XDECREF(__pyx_v_result); - __Pyx_XDECREF(__pyx_v_timeout); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":329 - * _safe_remove(self.getters, waiter) - * - * def get(self, block=True, timeout=None): # <<<<<<<<<<<<<< - * """Remove and return an item from the queue. - * - */ - -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_35get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_f_6gevent_6_queue_5Queue_get(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_6_queue_5Queue_get *__pyx_optional_args) { - PyObject *__pyx_v_block = ((PyObject *)Py_True); - PyObject *__pyx_v_timeout = ((PyObject *)Py_None); - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - int __pyx_t_7; - __Pyx_RefNannySetupContext("get", 0); - if (__pyx_optional_args) { - if (__pyx_optional_args->__pyx_n > 0) { - __pyx_v_block = __pyx_optional_args->block; - if (__pyx_optional_args->__pyx_n > 1) { - __pyx_v_timeout = __pyx_optional_args->timeout; - } - } - } - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 329, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_6_queue_5Queue_35get)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - __pyx_t_5 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_5 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_block, __pyx_v_timeout}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 329, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_block, __pyx_v_timeout}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 329, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 329, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (__pyx_t_4) { - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; - } - __Pyx_INCREF(__pyx_v_block); - __Pyx_GIVEREF(__pyx_v_block); - PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_block); - __Pyx_INCREF(__pyx_v_timeout); - __Pyx_GIVEREF(__pyx_v_timeout); - PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_timeout); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 329, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/queue.py":339 - * (*timeout* is ignored in that case). - * """ - * if self.qsize(): # <<<<<<<<<<<<<< - * if self.putters: - * self._schedule_unlock() - */ - __pyx_t_7 = (((struct __pyx_vtabstruct_6gevent_6_queue_Queue *)__pyx_v_self->__pyx_vtab)->qsize(__pyx_v_self, 0) != 0); - if (__pyx_t_7) { - - /* "src/gevent/queue.py":340 - * """ - * if self.qsize(): - * if self.putters: # <<<<<<<<<<<<<< - * self._schedule_unlock() - * return self._get() - */ - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_self->putters); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 340, __pyx_L1_error) - if (__pyx_t_7) { - - /* "src/gevent/queue.py":341 - * if self.qsize(): - * if self.putters: - * self._schedule_unlock() # <<<<<<<<<<<<<< - * return self._get() - * - */ - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_6_queue_Queue *)__pyx_v_self->__pyx_vtab)->_schedule_unlock(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 341, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":340 - * """ - * if self.qsize(): - * if self.putters: # <<<<<<<<<<<<<< - * self._schedule_unlock() - * return self._get() - */ - } - - /* "src/gevent/queue.py":342 - * if self.putters: - * self._schedule_unlock() - * return self._get() # <<<<<<<<<<<<<< - * - * return self.__get_or_peek(self._get, block, timeout) - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_6_queue_Queue *)__pyx_v_self->__pyx_vtab)->_get(__pyx_v_self, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 342, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/queue.py":339 - * (*timeout* is ignored in that case). - * """ - * if self.qsize(): # <<<<<<<<<<<<<< - * if self.putters: - * self._schedule_unlock() - */ - } - - /* "src/gevent/queue.py":344 - * return self._get() - * - * return self.__get_or_peek(self._get, block, timeout) # <<<<<<<<<<<<<< - * - * def get_nowait(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 344, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = ((struct __pyx_vtabstruct_6gevent_6_queue_Queue *)__pyx_v_self->__pyx_vtab)->__pyx___get_or_peek(__pyx_v_self, __pyx_t_1, __pyx_v_block, __pyx_v_timeout); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 344, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "src/gevent/queue.py":329 - * _safe_remove(self.getters, waiter) - * - * def get(self, block=True, timeout=None): # <<<<<<<<<<<<<< - * """Remove and return an item from the queue. - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_AddTraceback("gevent._queue.Queue.get", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_35get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_6_queue_5Queue_34get[] = "Queue.get(self, block=True, timeout=None)\nRemove and return an item from the queue.\n\n If optional args *block* is true and *timeout* is ``None`` (the default),\n block if necessary until an item is available. If *timeout* is a positive number,\n it blocks at most *timeout* seconds and raises the :class:`Empty` exception\n if no item was available within that time. Otherwise (*block* is false), return\n an item if one is immediately available, else raise the :class:`Empty` exception\n (*timeout* is ignored in that case).\n "; -static PyMethodDef __pyx_mdef_6gevent_6_queue_5Queue_35get = {"get", (PyCFunction)__pyx_pw_6gevent_6_queue_5Queue_35get, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_6_queue_5Queue_34get}; -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_35get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_block = 0; - PyObject *__pyx_v_timeout = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("get (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_block,&__pyx_n_s_timeout,0}; - PyObject* values[2] = {0,0}; - values[0] = ((PyObject *)Py_True); - values[1] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_block); - if (value) { values[0] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeout); - if (value) { values[1] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get") < 0)) __PYX_ERR(0, 329, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_block = values[0]; - __pyx_v_timeout = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 329, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._queue.Queue.get", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_6_queue_5Queue_34get(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self), __pyx_v_block, __pyx_v_timeout); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_34get(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, PyObject *__pyx_v_block, PyObject *__pyx_v_timeout) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - struct __pyx_opt_args_6gevent_6_queue_5Queue_get __pyx_t_2; - __Pyx_RefNannySetupContext("get", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_2.__pyx_n = 2; - __pyx_t_2.block = __pyx_v_block; - __pyx_t_2.timeout = __pyx_v_timeout; - __pyx_t_1 = __pyx_vtabptr_6gevent_6_queue_Queue->get(__pyx_v_self, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 329, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._queue.Queue.get", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":346 - * return self.__get_or_peek(self._get, block, timeout) - * - * def get_nowait(self): # <<<<<<<<<<<<<< - * """Remove and return an item from the queue without blocking. - * - */ - -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_37get_nowait(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_f_6gevent_6_queue_5Queue_get_nowait(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - struct __pyx_opt_args_6gevent_6_queue_5Queue_get __pyx_t_5; - __Pyx_RefNannySetupContext("get_nowait", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_nowait); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 346, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_6_queue_5Queue_37get_nowait)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 346, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 346, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/queue.py":352 - * raise the :class:`Empty` exception. - * """ - * return self.get(False) # <<<<<<<<<<<<<< - * - * def peek(self, block=True, timeout=None): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_5.__pyx_n = 1; - __pyx_t_5.block = Py_False; - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_6_queue_Queue *)__pyx_v_self->__pyx_vtab)->get(__pyx_v_self, 0, &__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 352, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/queue.py":346 - * return self.__get_or_peek(self._get, block, timeout) - * - * def get_nowait(self): # <<<<<<<<<<<<<< - * """Remove and return an item from the queue without blocking. - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent._queue.Queue.get_nowait", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_37get_nowait(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_queue_5Queue_36get_nowait[] = "Queue.get_nowait(self)\nRemove and return an item from the queue without blocking.\n\n Only get an item if one is immediately available. Otherwise\n raise the :class:`Empty` exception.\n "; -static PyMethodDef __pyx_mdef_6gevent_6_queue_5Queue_37get_nowait = {"get_nowait", (PyCFunction)__pyx_pw_6gevent_6_queue_5Queue_37get_nowait, METH_NOARGS, __pyx_doc_6gevent_6_queue_5Queue_36get_nowait}; -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_37get_nowait(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("get_nowait (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_5Queue_36get_nowait(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_36get_nowait(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("get_nowait", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_6_queue_5Queue_get_nowait(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 346, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._queue.Queue.get_nowait", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":354 - * return self.get(False) - * - * def peek(self, block=True, timeout=None): # <<<<<<<<<<<<<< - * """Return an item from the queue without removing it. - * - */ - -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_39peek(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_f_6gevent_6_queue_5Queue_peek(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_6_queue_5Queue_peek *__pyx_optional_args) { - PyObject *__pyx_v_block = ((PyObject *)Py_True); - PyObject *__pyx_v_timeout = ((PyObject *)Py_None); - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - int __pyx_t_7; - __Pyx_RefNannySetupContext("peek", 0); - if (__pyx_optional_args) { - if (__pyx_optional_args->__pyx_n > 0) { - __pyx_v_block = __pyx_optional_args->block; - if (__pyx_optional_args->__pyx_n > 1) { - __pyx_v_timeout = __pyx_optional_args->timeout; - } - } - } - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_peek_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 354, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_6_queue_5Queue_39peek)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - __pyx_t_5 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_5 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_block, __pyx_v_timeout}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 354, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_block, __pyx_v_timeout}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 354, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 354, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (__pyx_t_4) { - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; - } - __Pyx_INCREF(__pyx_v_block); - __Pyx_GIVEREF(__pyx_v_block); - PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_block); - __Pyx_INCREF(__pyx_v_timeout); - __Pyx_GIVEREF(__pyx_v_timeout); - PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_timeout); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 354, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/queue.py":364 - * (*timeout* is ignored in that case). - * """ - * if self.qsize(): # <<<<<<<<<<<<<< - * # XXX: Why doesn't this schedule an unlock like get() does? - * return self._peek() - */ - __pyx_t_7 = (((struct __pyx_vtabstruct_6gevent_6_queue_Queue *)__pyx_v_self->__pyx_vtab)->qsize(__pyx_v_self, 0) != 0); - if (__pyx_t_7) { - - /* "src/gevent/queue.py":366 - * if self.qsize(): - * # XXX: Why doesn't this schedule an unlock like get() does? - * return self._peek() # <<<<<<<<<<<<<< - * - * return self.__get_or_peek(self._peek, block, timeout) - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_6_queue_Queue *)__pyx_v_self->__pyx_vtab)->_peek(__pyx_v_self, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 366, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/queue.py":364 - * (*timeout* is ignored in that case). - * """ - * if self.qsize(): # <<<<<<<<<<<<<< - * # XXX: Why doesn't this schedule an unlock like get() does? - * return self._peek() - */ - } - - /* "src/gevent/queue.py":368 - * return self._peek() - * - * return self.__get_or_peek(self._peek, block, timeout) # <<<<<<<<<<<<<< - * - * def peek_nowait(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_peek); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 368, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = ((struct __pyx_vtabstruct_6gevent_6_queue_Queue *)__pyx_v_self->__pyx_vtab)->__pyx___get_or_peek(__pyx_v_self, __pyx_t_1, __pyx_v_block, __pyx_v_timeout); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 368, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "src/gevent/queue.py":354 - * return self.get(False) - * - * def peek(self, block=True, timeout=None): # <<<<<<<<<<<<<< - * """Return an item from the queue without removing it. - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_AddTraceback("gevent._queue.Queue.peek", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_39peek(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_6_queue_5Queue_38peek[] = "Queue.peek(self, block=True, timeout=None)\nReturn an item from the queue without removing it.\n\n If optional args *block* is true and *timeout* is ``None`` (the default),\n block if necessary until an item is available. If *timeout* is a positive number,\n it blocks at most *timeout* seconds and raises the :class:`Empty` exception\n if no item was available within that time. Otherwise (*block* is false), return\n an item if one is immediately available, else raise the :class:`Empty` exception\n (*timeout* is ignored in that case).\n "; -static PyMethodDef __pyx_mdef_6gevent_6_queue_5Queue_39peek = {"peek", (PyCFunction)__pyx_pw_6gevent_6_queue_5Queue_39peek, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_6_queue_5Queue_38peek}; -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_39peek(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_block = 0; - PyObject *__pyx_v_timeout = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("peek (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_block,&__pyx_n_s_timeout,0}; - PyObject* values[2] = {0,0}; - values[0] = ((PyObject *)Py_True); - values[1] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_block); - if (value) { values[0] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeout); - if (value) { values[1] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "peek") < 0)) __PYX_ERR(0, 354, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_block = values[0]; - __pyx_v_timeout = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("peek", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 354, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._queue.Queue.peek", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_6_queue_5Queue_38peek(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self), __pyx_v_block, __pyx_v_timeout); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_38peek(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, PyObject *__pyx_v_block, PyObject *__pyx_v_timeout) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - struct __pyx_opt_args_6gevent_6_queue_5Queue_peek __pyx_t_2; - __Pyx_RefNannySetupContext("peek", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_2.__pyx_n = 2; - __pyx_t_2.block = __pyx_v_block; - __pyx_t_2.timeout = __pyx_v_timeout; - __pyx_t_1 = __pyx_vtabptr_6gevent_6_queue_Queue->peek(__pyx_v_self, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 354, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._queue.Queue.peek", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":370 - * return self.__get_or_peek(self._peek, block, timeout) - * - * def peek_nowait(self): # <<<<<<<<<<<<<< - * """Return an item from the queue without blocking. - * - */ - -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_41peek_nowait(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_f_6gevent_6_queue_5Queue_peek_nowait(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self, int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - struct __pyx_opt_args_6gevent_6_queue_5Queue_peek __pyx_t_5; - __Pyx_RefNannySetupContext("peek_nowait", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_peek_nowait); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 370, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_6_queue_5Queue_41peek_nowait)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 370, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 370, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/queue.py":376 - * raise the :class:`Empty` exception. - * """ - * return self.peek(False) # <<<<<<<<<<<<<< - * - * def _unlock(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_5.__pyx_n = 1; - __pyx_t_5.block = Py_False; - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_6_queue_Queue *)__pyx_v_self->__pyx_vtab)->peek(__pyx_v_self, 0, &__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 376, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/queue.py":370 - * return self.__get_or_peek(self._peek, block, timeout) - * - * def peek_nowait(self): # <<<<<<<<<<<<<< - * """Return an item from the queue without blocking. - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent._queue.Queue.peek_nowait", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_41peek_nowait(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_queue_5Queue_40peek_nowait[] = "Queue.peek_nowait(self)\nReturn an item from the queue without blocking.\n\n Only return an item if one is immediately available. Otherwise\n raise the :class:`Empty` exception.\n "; -static PyMethodDef __pyx_mdef_6gevent_6_queue_5Queue_41peek_nowait = {"peek_nowait", (PyCFunction)__pyx_pw_6gevent_6_queue_5Queue_41peek_nowait, METH_NOARGS, __pyx_doc_6gevent_6_queue_5Queue_40peek_nowait}; -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_41peek_nowait(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("peek_nowait (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_5Queue_40peek_nowait(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_40peek_nowait(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("peek_nowait", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_6_queue_5Queue_peek_nowait(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 370, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._queue.Queue.peek_nowait", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":378 - * return self.peek(False) - * - * def _unlock(self): # <<<<<<<<<<<<<< - * while True: - * repeat = False - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_43_unlock(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_queue_5Queue_42_unlock[] = "Queue._unlock(self)"; -static PyMethodDef __pyx_mdef_6gevent_6_queue_5Queue_43_unlock = {"_unlock", (PyCFunction)__pyx_pw_6gevent_6_queue_5Queue_43_unlock, METH_NOARGS, __pyx_doc_6gevent_6_queue_5Queue_42_unlock}; -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_43_unlock(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_unlock (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_5Queue_42_unlock(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_42_unlock(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self) { - int __pyx_v_repeat; - PyObject *__pyx_v_putter = NULL; - PyObject *__pyx_v_getter = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - PyObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; - __Pyx_RefNannySetupContext("_unlock", 0); - - /* "src/gevent/queue.py":379 - * - * def _unlock(self): - * while True: # <<<<<<<<<<<<<< - * repeat = False - * if self.putters and (self._maxsize == -1 or self.qsize() < self._maxsize): - */ - while (1) { - - /* "src/gevent/queue.py":380 - * def _unlock(self): - * while True: - * repeat = False # <<<<<<<<<<<<<< - * if self.putters and (self._maxsize == -1 or self.qsize() < self._maxsize): - * repeat = True - */ - __pyx_v_repeat = 0; - - /* "src/gevent/queue.py":381 - * while True: - * repeat = False - * if self.putters and (self._maxsize == -1 or self.qsize() < self._maxsize): # <<<<<<<<<<<<<< - * repeat = True - * try: - */ - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->putters); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 381, __pyx_L1_error) - if (__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L6_bool_binop_done; - } - __pyx_t_2 = ((__pyx_v_self->_maxsize == -1L) != 0); - if (!__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L6_bool_binop_done; - } - __pyx_t_2 = ((((struct __pyx_vtabstruct_6gevent_6_queue_Queue *)__pyx_v_self->__pyx_vtab)->qsize(__pyx_v_self, 0) < __pyx_v_self->_maxsize) != 0); - __pyx_t_1 = __pyx_t_2; - __pyx_L6_bool_binop_done:; - if (__pyx_t_1) { - - /* "src/gevent/queue.py":382 - * repeat = False - * if self.putters and (self._maxsize == -1 or self.qsize() < self._maxsize): - * repeat = True # <<<<<<<<<<<<<< - * try: - * putter = self.putters.popleft() - */ - __pyx_v_repeat = 1; - - /* "src/gevent/queue.py":383 - * if self.putters and (self._maxsize == -1 or self.qsize() < self._maxsize): - * repeat = True - * try: # <<<<<<<<<<<<<< - * putter = self.putters.popleft() - * self._put(putter.item) - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5); - __Pyx_XGOTREF(__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_t_5); - /*try:*/ { - - /* "src/gevent/queue.py":384 - * repeat = True - * try: - * putter = self.putters.popleft() # <<<<<<<<<<<<<< - * self._put(putter.item) - * except: # pylint:disable=bare-except - */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->putters, __pyx_n_s_popleft); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 384, __pyx_L9_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_8 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { - __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); - if (likely(__pyx_t_8)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); - __Pyx_INCREF(__pyx_t_8); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_7, function); - } - } - if (__pyx_t_8) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 384, __pyx_L9_error) - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } else { - __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 384, __pyx_L9_error) - } - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_XDECREF_SET(__pyx_v_putter, __pyx_t_6); - __pyx_t_6 = 0; - - /* "src/gevent/queue.py":385 - * try: - * putter = self.putters.popleft() - * self._put(putter.item) # <<<<<<<<<<<<<< - * except: # pylint:disable=bare-except - * putter.throw(*sys.exc_info()) - */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_putter, __pyx_n_s_item); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 385, __pyx_L9_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = ((struct __pyx_vtabstruct_6gevent_6_queue_Queue *)__pyx_v_self->__pyx_vtab)->_put(__pyx_v_self, __pyx_t_6, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 385, __pyx_L9_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - - /* "src/gevent/queue.py":383 - * if self.putters and (self._maxsize == -1 or self.qsize() < self._maxsize): - * repeat = True - * try: # <<<<<<<<<<<<<< - * putter = self.putters.popleft() - * self._put(putter.item) - */ - } - - /* "src/gevent/queue.py":389 - * putter.throw(*sys.exc_info()) - * else: - * putter.switch(putter) # <<<<<<<<<<<<<< - * if self.getters and self.qsize(): - * repeat = True - */ - /*else:*/ { - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_putter, __pyx_n_s_switch); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 389, __pyx_L11_except_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_8 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { - __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6); - if (likely(__pyx_t_8)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); - __Pyx_INCREF(__pyx_t_8); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_6, function); - } - } - if (!__pyx_t_8) { - __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_putter); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 389, __pyx_L11_except_error) - __Pyx_GOTREF(__pyx_t_7); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_6)) { - PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_v_putter}; - __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 389, __pyx_L11_except_error) - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_GOTREF(__pyx_t_7); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { - PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_v_putter}; - __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 389, __pyx_L11_except_error) - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_GOTREF(__pyx_t_7); - } else - #endif - { - __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 389, __pyx_L11_except_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL; - __Pyx_INCREF(__pyx_v_putter); - __Pyx_GIVEREF(__pyx_v_putter); - PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_putter); - __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 389, __pyx_L11_except_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - } - } - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - goto __pyx_L16_try_end; - __pyx_L9_error:; - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - - /* "src/gevent/queue.py":386 - * putter = self.putters.popleft() - * self._put(putter.item) - * except: # pylint:disable=bare-except # <<<<<<<<<<<<<< - * putter.throw(*sys.exc_info()) - * else: - */ - /*except:*/ { - __Pyx_AddTraceback("gevent._queue.Queue._unlock", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_9) < 0) __PYX_ERR(0, 386, __pyx_L11_except_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GOTREF(__pyx_t_9); - - /* "src/gevent/queue.py":387 - * self._put(putter.item) - * except: # pylint:disable=bare-except - * putter.throw(*sys.exc_info()) # <<<<<<<<<<<<<< - * else: - * putter.switch(putter) - */ - if (unlikely(!__pyx_v_putter)) { __Pyx_RaiseUnboundLocalError("putter"); __PYX_ERR(0, 387, __pyx_L11_except_error) } - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_putter, __pyx_n_s_throw); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 387, __pyx_L11_except_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 387, __pyx_L11_except_error) - __Pyx_GOTREF(__pyx_t_11); - __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_exc_info); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 387, __pyx_L11_except_error) - __Pyx_GOTREF(__pyx_t_12); - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_11 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) { - __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_12); - if (likely(__pyx_t_11)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); - __Pyx_INCREF(__pyx_t_11); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_12, function); - } - } - if (__pyx_t_11) { - __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 387, __pyx_L11_except_error) - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - } else { - __pyx_t_10 = __Pyx_PyObject_CallNoArg(__pyx_t_12); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 387, __pyx_L11_except_error) - } - __Pyx_GOTREF(__pyx_t_10); - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __pyx_t_12 = __Pyx_PySequence_Tuple(__pyx_t_10); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 387, __pyx_L11_except_error) - __Pyx_GOTREF(__pyx_t_12); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_12, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 387, __pyx_L11_except_error) - __Pyx_GOTREF(__pyx_t_10); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - goto __pyx_L10_exception_handled; - } - __pyx_L11_except_error:; - - /* "src/gevent/queue.py":383 - * if self.putters and (self._maxsize == -1 or self.qsize() < self._maxsize): - * repeat = True - * try: # <<<<<<<<<<<<<< - * putter = self.putters.popleft() - * self._put(putter.item) - */ - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5); - goto __pyx_L1_error; - __pyx_L10_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5); - __pyx_L16_try_end:; - } - - /* "src/gevent/queue.py":381 - * while True: - * repeat = False - * if self.putters and (self._maxsize == -1 or self.qsize() < self._maxsize): # <<<<<<<<<<<<<< - * repeat = True - * try: - */ - } - - /* "src/gevent/queue.py":390 - * else: - * putter.switch(putter) - * if self.getters and self.qsize(): # <<<<<<<<<<<<<< - * repeat = True - * getter = self.getters.popleft() - */ - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->getters); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 390, __pyx_L1_error) - if (__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L20_bool_binop_done; - } - __pyx_t_2 = (((struct __pyx_vtabstruct_6gevent_6_queue_Queue *)__pyx_v_self->__pyx_vtab)->qsize(__pyx_v_self, 0) != 0); - __pyx_t_1 = __pyx_t_2; - __pyx_L20_bool_binop_done:; - if (__pyx_t_1) { - - /* "src/gevent/queue.py":391 - * putter.switch(putter) - * if self.getters and self.qsize(): - * repeat = True # <<<<<<<<<<<<<< - * getter = self.getters.popleft() - * getter.switch(getter) - */ - __pyx_v_repeat = 1; - - /* "src/gevent/queue.py":392 - * if self.getters and self.qsize(): - * repeat = True - * getter = self.getters.popleft() # <<<<<<<<<<<<<< - * getter.switch(getter) - * if not repeat: - */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->getters, __pyx_n_s_popleft); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 392, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); - if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); - __Pyx_INCREF(__pyx_t_7); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_6, function); - } - } - if (__pyx_t_7) { - __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 392, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } else { - __pyx_t_9 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 392, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF_SET(__pyx_v_getter, __pyx_t_9); - __pyx_t_9 = 0; - - /* "src/gevent/queue.py":393 - * repeat = True - * getter = self.getters.popleft() - * getter.switch(getter) # <<<<<<<<<<<<<< - * if not repeat: - * return - */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_getter, __pyx_n_s_switch); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 393, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); - if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); - __Pyx_INCREF(__pyx_t_7); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_6, function); - } - } - if (!__pyx_t_7) { - __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_getter); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 393, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_6)) { - PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_v_getter}; - __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 393, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_9); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { - PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_v_getter}; - __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 393, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_9); - } else - #endif - { - __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 393, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_10); - __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_7); __pyx_t_7 = NULL; - __Pyx_INCREF(__pyx_v_getter); - __Pyx_GIVEREF(__pyx_v_getter); - PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_v_getter); - __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 393, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - } - } - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - - /* "src/gevent/queue.py":390 - * else: - * putter.switch(putter) - * if self.getters and self.qsize(): # <<<<<<<<<<<<<< - * repeat = True - * getter = self.getters.popleft() - */ - } - - /* "src/gevent/queue.py":394 - * getter = self.getters.popleft() - * getter.switch(getter) - * if not repeat: # <<<<<<<<<<<<<< - * return - * - */ - __pyx_t_1 = ((!(__pyx_v_repeat != 0)) != 0); - if (__pyx_t_1) { - - /* "src/gevent/queue.py":395 - * getter.switch(getter) - * if not repeat: - * return # <<<<<<<<<<<<<< - * - * def _schedule_unlock(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - /* "src/gevent/queue.py":394 - * getter = self.getters.popleft() - * getter.switch(getter) - * if not repeat: # <<<<<<<<<<<<<< - * return - * - */ - } - } - - /* "src/gevent/queue.py":378 - * return self.peek(False) - * - * def _unlock(self): # <<<<<<<<<<<<<< - * while True: - * repeat = False - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_XDECREF(__pyx_t_9); - __Pyx_XDECREF(__pyx_t_10); - __Pyx_XDECREF(__pyx_t_11); - __Pyx_XDECREF(__pyx_t_12); - __Pyx_AddTraceback("gevent._queue.Queue._unlock", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_putter); - __Pyx_XDECREF(__pyx_v_getter); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":397 - * return - * - * def _schedule_unlock(self): # <<<<<<<<<<<<<< - * if not self._event_unlock: - * self._event_unlock = self.hub.loop.run_callback(self._unlock) - */ - -static PyObject *__pyx_f_6gevent_6_queue_5Queue__schedule_unlock(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - __Pyx_RefNannySetupContext("_schedule_unlock", 0); - - /* "src/gevent/queue.py":398 - * - * def _schedule_unlock(self): - * if not self._event_unlock: # <<<<<<<<<<<<<< - * self._event_unlock = self.hub.loop.run_callback(self._unlock) - * - */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->_event_unlock); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 398, __pyx_L1_error) - __pyx_t_2 = ((!__pyx_t_1) != 0); - if (__pyx_t_2) { - - /* "src/gevent/queue.py":399 - * def _schedule_unlock(self): - * if not self._event_unlock: - * self._event_unlock = self.hub.loop.run_callback(self._unlock) # <<<<<<<<<<<<<< - * - * def __iter__(self): - */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->hub, __pyx_n_s_loop); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 399, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_run_callback); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 399, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_unlock); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 399, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - } - } - if (!__pyx_t_6) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 399, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_3); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_4}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 399, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_4}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 399, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else - #endif - { - __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 399, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL; - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_4); - __pyx_t_4 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 399, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - } - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GIVEREF(__pyx_t_3); - __Pyx_GOTREF(__pyx_v_self->_event_unlock); - __Pyx_DECREF(__pyx_v_self->_event_unlock); - __pyx_v_self->_event_unlock = __pyx_t_3; - __pyx_t_3 = 0; - - /* "src/gevent/queue.py":398 - * - * def _schedule_unlock(self): - * if not self._event_unlock: # <<<<<<<<<<<<<< - * self._event_unlock = self.hub.loop.run_callback(self._unlock) - * - */ - } - - /* "src/gevent/queue.py":397 - * return - * - * def _schedule_unlock(self): # <<<<<<<<<<<<<< - * if not self._event_unlock: - * self._event_unlock = self.hub.loop.run_callback(self._unlock) - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("gevent._queue.Queue._schedule_unlock", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":401 - * self._event_unlock = self.hub.loop.run_callback(self._unlock) - * - * def __iter__(self): # <<<<<<<<<<<<<< - * return self - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_45__iter__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_45__iter__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_5Queue_44__iter__(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_44__iter__(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__iter__", 0); - - /* "src/gevent/queue.py":402 - * - * def __iter__(self): - * return self # <<<<<<<<<<<<<< - * - * def __next__(self): - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __pyx_r = ((PyObject *)__pyx_v_self); - goto __pyx_L0; - - /* "src/gevent/queue.py":401 - * self._event_unlock = self.hub.loop.run_callback(self._unlock) - * - * def __iter__(self): # <<<<<<<<<<<<<< - * return self - * - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":404 - * return self - * - * def __next__(self): # <<<<<<<<<<<<<< - * result = self.get() - * if result is StopIteration: - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_47__next__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_47__next__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__next__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_5Queue_46__next__(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_46__next__(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self) { - PyObject *__pyx_v_result = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - int __pyx_t_3; - __Pyx_RefNannySetupContext("__next__", 0); - - /* "src/gevent/queue.py":405 - * - * def __next__(self): - * result = self.get() # <<<<<<<<<<<<<< - * if result is StopIteration: - * raise result - */ - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_6_queue_Queue *)__pyx_v_self->__pyx_vtab)->get(__pyx_v_self, 0, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 405, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_result = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/queue.py":406 - * def __next__(self): - * result = self.get() - * if result is StopIteration: # <<<<<<<<<<<<<< - * raise result - * return result - */ - __pyx_t_2 = (__pyx_v_result == __pyx_builtin_StopIteration); - __pyx_t_3 = (__pyx_t_2 != 0); - if (unlikely(__pyx_t_3)) { - - /* "src/gevent/queue.py":407 - * result = self.get() - * if result is StopIteration: - * raise result # <<<<<<<<<<<<<< - * return result - * - */ - __Pyx_Raise(__pyx_v_result, 0, 0, 0); - __PYX_ERR(0, 407, __pyx_L1_error) - - /* "src/gevent/queue.py":406 - * def __next__(self): - * result = self.get() - * if result is StopIteration: # <<<<<<<<<<<<<< - * raise result - * return result - */ - } - - /* "src/gevent/queue.py":408 - * if result is StopIteration: - * raise result - * return result # <<<<<<<<<<<<<< - * - * next = __next__ # Py2 - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_result); - __pyx_r = __pyx_v_result; - goto __pyx_L0; - - /* "src/gevent/queue.py":404 - * return self - * - * def __next__(self): # <<<<<<<<<<<<<< - * result = self.get() - * if result is StopIteration: - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._queue.Queue.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_result); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/_queue.pxd":20 - * cdef class Queue: - * cdef __weakref__ - * cdef readonly hub # <<<<<<<<<<<<<< - * cdef readonly queue - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_3hub_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_3hub_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_5Queue_3hub___get__(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_3hub___get__(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->hub); - __pyx_r = __pyx_v_self->hub; - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/_queue.pxd":21 - * cdef __weakref__ - * cdef readonly hub - * cdef readonly queue # <<<<<<<<<<<<<< - * - * cdef getters - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_5queue_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_6_queue_5Queue_5queue_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_5Queue_5queue___get__(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_5Queue_5queue___get__(struct __pyx_obj_6gevent_6_queue_Queue *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->queue); - __pyx_r = __pyx_v_self->queue; - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":419 - * __slots__ = () - * - * def __init__(self, maxsize=None, items=()): # <<<<<<<<<<<<<< - * if maxsize is not None: - * raise ValueError("UnboundQueue has no maxsize") - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_6_queue_12UnboundQueue_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_6_queue_12UnboundQueue_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_maxsize = 0; - PyObject *__pyx_v_items = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_maxsize,&__pyx_n_s_items,0}; - PyObject* values[2] = {0,0}; - values[0] = ((PyObject *)Py_None); - values[1] = ((PyObject *)__pyx_empty_tuple); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_maxsize); - if (value) { values[0] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_items); - if (value) { values[1] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 419, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_maxsize = values[0]; - __pyx_v_items = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 419, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._queue.UnboundQueue.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_6_queue_12UnboundQueue___init__(((struct __pyx_obj_6gevent_6_queue_UnboundQueue *)__pyx_v_self), __pyx_v_maxsize, __pyx_v_items); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_6_queue_12UnboundQueue___init__(struct __pyx_obj_6gevent_6_queue_UnboundQueue *__pyx_v_self, PyObject *__pyx_v_maxsize, PyObject *__pyx_v_items) { - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - PyObject *__pyx_t_7 = NULL; - __Pyx_RefNannySetupContext("__init__", 0); - - /* "src/gevent/queue.py":420 - * - * def __init__(self, maxsize=None, items=()): - * if maxsize is not None: # <<<<<<<<<<<<<< - * raise ValueError("UnboundQueue has no maxsize") - * Queue.__init__(self, maxsize, items) - */ - __pyx_t_1 = (__pyx_v_maxsize != Py_None); - __pyx_t_2 = (__pyx_t_1 != 0); - if (unlikely(__pyx_t_2)) { - - /* "src/gevent/queue.py":421 - * def __init__(self, maxsize=None, items=()): - * if maxsize is not None: - * raise ValueError("UnboundQueue has no maxsize") # <<<<<<<<<<<<<< - * Queue.__init__(self, maxsize, items) - * self.putters = None # Will never be used. - */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 421, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 421, __pyx_L1_error) - - /* "src/gevent/queue.py":420 - * - * def __init__(self, maxsize=None, items=()): - * if maxsize is not None: # <<<<<<<<<<<<<< - * raise ValueError("UnboundQueue has no maxsize") - * Queue.__init__(self, maxsize, items) - */ - } - - /* "src/gevent/queue.py":422 - * if maxsize is not None: - * raise ValueError("UnboundQueue has no maxsize") - * Queue.__init__(self, maxsize, items) # <<<<<<<<<<<<<< - * self.putters = None # Will never be used. - * - */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_6gevent_6_queue_Queue), __pyx_n_s_init); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 422, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - __pyx_t_6 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - __pyx_t_6 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[4] = {__pyx_t_5, ((PyObject *)__pyx_v_self), __pyx_v_maxsize, __pyx_v_items}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 422, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_3); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[4] = {__pyx_t_5, ((PyObject *)__pyx_v_self), __pyx_v_maxsize, __pyx_v_items}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 422, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_3); - } else - #endif - { - __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 422, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (__pyx_t_5) { - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; - } - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, ((PyObject *)__pyx_v_self)); - __Pyx_INCREF(__pyx_v_maxsize); - __Pyx_GIVEREF(__pyx_v_maxsize); - PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_maxsize); - __Pyx_INCREF(__pyx_v_items); - __Pyx_GIVEREF(__pyx_v_items); - PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_v_items); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 422, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "src/gevent/queue.py":423 - * raise ValueError("UnboundQueue has no maxsize") - * Queue.__init__(self, maxsize, items) - * self.putters = None # Will never be used. # <<<<<<<<<<<<<< - * - * def put(self, item, block=True, timeout=None): - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->__pyx_base.putters); - __Pyx_DECREF(__pyx_v_self->__pyx_base.putters); - __pyx_v_self->__pyx_base.putters = Py_None; - - /* "src/gevent/queue.py":419 - * __slots__ = () - * - * def __init__(self, maxsize=None, items=()): # <<<<<<<<<<<<<< - * if maxsize is not None: - * raise ValueError("UnboundQueue has no maxsize") - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("gevent._queue.UnboundQueue.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":425 - * self.putters = None # Will never be used. - * - * def put(self, item, block=True, timeout=None): # <<<<<<<<<<<<<< - * self._put(item) - * if self.getters: - */ - -static PyObject *__pyx_pw_6gevent_6_queue_12UnboundQueue_3put(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_f_6gevent_6_queue_12UnboundQueue_put(struct __pyx_obj_6gevent_6_queue_UnboundQueue *__pyx_v_self, PyObject *__pyx_v_item, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_6_queue_12UnboundQueue_put *__pyx_optional_args) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - __Pyx_RefNannySetupContext("put", 0); - if (__pyx_optional_args) { - } - - /* "src/gevent/queue.py":426 - * - * def put(self, item, block=True, timeout=None): - * self._put(item) # <<<<<<<<<<<<<< - * if self.getters: - * self._schedule_unlock() - */ - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_6_queue_UnboundQueue *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._put(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self), __pyx_v_item, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 426, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":427 - * def put(self, item, block=True, timeout=None): - * self._put(item) - * if self.getters: # <<<<<<<<<<<<<< - * self._schedule_unlock() - * - */ - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->__pyx_base.getters); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 427, __pyx_L1_error) - if (__pyx_t_2) { - - /* "src/gevent/queue.py":428 - * self._put(item) - * if self.getters: - * self._schedule_unlock() # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_6_queue_UnboundQueue *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._schedule_unlock(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 428, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":427 - * def put(self, item, block=True, timeout=None): - * self._put(item) - * if self.getters: # <<<<<<<<<<<<<< - * self._schedule_unlock() - * - */ - } - - /* "src/gevent/queue.py":425 - * self.putters = None # Will never be used. - * - * def put(self, item, block=True, timeout=None): # <<<<<<<<<<<<<< - * self._put(item) - * if self.getters: - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._queue.UnboundQueue.put", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_12UnboundQueue_3put(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_6_queue_12UnboundQueue_2put[] = "UnboundQueue.put(self, item, block=True, timeout=None)"; -static PyMethodDef __pyx_mdef_6gevent_6_queue_12UnboundQueue_3put = {"put", (PyCFunction)__pyx_pw_6gevent_6_queue_12UnboundQueue_3put, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_6_queue_12UnboundQueue_2put}; -static PyObject *__pyx_pw_6gevent_6_queue_12UnboundQueue_3put(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_item = 0; - PyObject *__pyx_v_block = 0; - PyObject *__pyx_v_timeout = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("put (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_item,&__pyx_n_s_block,&__pyx_n_s_timeout,0}; - PyObject* values[3] = {0,0,0}; - values[1] = ((PyObject *)Py_True); - values[2] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_item)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_block); - if (value) { values[1] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeout); - if (value) { values[2] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "put") < 0)) __PYX_ERR(0, 425, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_item = values[0]; - __pyx_v_block = values[1]; - __pyx_v_timeout = values[2]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("put", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 425, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._queue.UnboundQueue.put", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_6_queue_12UnboundQueue_2put(((struct __pyx_obj_6gevent_6_queue_UnboundQueue *)__pyx_v_self), __pyx_v_item, __pyx_v_block, __pyx_v_timeout); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_12UnboundQueue_2put(struct __pyx_obj_6gevent_6_queue_UnboundQueue *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_block, PyObject *__pyx_v_timeout) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - struct __pyx_opt_args_6gevent_6_queue_5Queue_put __pyx_t_2; - __Pyx_RefNannySetupContext("put", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_2.__pyx_n = 2; - __pyx_t_2.block = __pyx_v_block; - __pyx_t_2.timeout = __pyx_v_timeout; - __pyx_t_1 = __pyx_vtabptr_6gevent_6_queue_UnboundQueue->__pyx_base.put(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self), __pyx_v_item, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 425, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._queue.UnboundQueue.put", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":444 - * __slots__ = () - * - * def _create_queue(self, items=()): # <<<<<<<<<<<<<< - * q = list(items) - * _heapify(q) - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_13PriorityQueue_1_create_queue(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_6_queue_13PriorityQueue__create_queue[] = "PriorityQueue._create_queue(self, items=())"; -static PyMethodDef __pyx_mdef_6gevent_6_queue_13PriorityQueue_1_create_queue = {"_create_queue", (PyCFunction)__pyx_pw_6gevent_6_queue_13PriorityQueue_1_create_queue, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_6_queue_13PriorityQueue__create_queue}; -static PyObject *__pyx_pw_6gevent_6_queue_13PriorityQueue_1_create_queue(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_items = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_create_queue (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_items,0}; - PyObject* values[1] = {0}; - values[0] = ((PyObject *)__pyx_empty_tuple); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_items); - if (value) { values[0] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_create_queue") < 0)) __PYX_ERR(0, 444, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_items = values[0]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("_create_queue", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 444, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._queue.PriorityQueue._create_queue", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_6_queue_13PriorityQueue__create_queue(((struct __pyx_obj_6gevent_6_queue_PriorityQueue *)__pyx_v_self), __pyx_v_items); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_13PriorityQueue__create_queue(CYTHON_UNUSED struct __pyx_obj_6gevent_6_queue_PriorityQueue *__pyx_v_self, PyObject *__pyx_v_items) { - PyObject *__pyx_v_q = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("_create_queue", 0); - - /* "src/gevent/queue.py":445 - * - * def _create_queue(self, items=()): - * q = list(items) # <<<<<<<<<<<<<< - * _heapify(q) - * return q - */ - __pyx_t_1 = PySequence_List(__pyx_v_items); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 445, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_q = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/queue.py":446 - * def _create_queue(self, items=()): - * q = list(items) - * _heapify(q) # <<<<<<<<<<<<<< - * return q - * - */ - __Pyx_INCREF(__pyx_v_6gevent_6_queue__heapify); - __pyx_t_2 = __pyx_v_6gevent_6_queue__heapify; __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_q); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 446, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_q}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 446, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_q}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 446, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 446, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(__pyx_v_q); - __Pyx_GIVEREF(__pyx_v_q); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_q); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 446, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":447 - * q = list(items) - * _heapify(q) - * return q # <<<<<<<<<<<<<< - * - * def _put(self, item): - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_q); - __pyx_r = __pyx_v_q; - goto __pyx_L0; - - /* "src/gevent/queue.py":444 - * __slots__ = () - * - * def _create_queue(self, items=()): # <<<<<<<<<<<<<< - * q = list(items) - * _heapify(q) - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent._queue.PriorityQueue._create_queue", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_q); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":449 - * return q - * - * def _put(self, item): # <<<<<<<<<<<<<< - * _heappush(self.queue, item) - * - */ - -static PyObject *__pyx_pw_6gevent_6_queue_13PriorityQueue_3_put(PyObject *__pyx_v_self, PyObject *__pyx_v_item); /*proto*/ -static PyObject *__pyx_f_6gevent_6_queue_13PriorityQueue__put(struct __pyx_obj_6gevent_6_queue_PriorityQueue *__pyx_v_self, PyObject *__pyx_v_item, int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - __Pyx_RefNannySetupContext("_put", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_put); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 449, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_6_queue_13PriorityQueue_3_put)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (!__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_item); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 449, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_item}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 449, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_item}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 449, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 449, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_INCREF(__pyx_v_item); - __Pyx_GIVEREF(__pyx_v_item); - PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_item); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 449, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/queue.py":450 - * - * def _put(self, item): - * _heappush(self.queue, item) # <<<<<<<<<<<<<< - * - * def _get(self): - */ - __Pyx_INCREF(__pyx_v_6gevent_6_queue__heappush); - __pyx_t_2 = __pyx_v_6gevent_6_queue__heappush; __pyx_t_3 = NULL; - __pyx_t_6 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_6 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_self->__pyx_base.queue, __pyx_v_item}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 450, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_self->__pyx_base.queue, __pyx_v_item}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 450, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_5 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 450, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (__pyx_t_3) { - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; - } - __Pyx_INCREF(__pyx_v_self->__pyx_base.queue); - __Pyx_GIVEREF(__pyx_v_self->__pyx_base.queue); - PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_v_self->__pyx_base.queue); - __Pyx_INCREF(__pyx_v_item); - __Pyx_GIVEREF(__pyx_v_item); - PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_v_item); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 450, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":449 - * return q - * - * def _put(self, item): # <<<<<<<<<<<<<< - * _heappush(self.queue, item) - * - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent._queue.PriorityQueue._put", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_13PriorityQueue_3_put(PyObject *__pyx_v_self, PyObject *__pyx_v_item); /*proto*/ -static char __pyx_doc_6gevent_6_queue_13PriorityQueue_2_put[] = "PriorityQueue._put(self, item)"; -static PyMethodDef __pyx_mdef_6gevent_6_queue_13PriorityQueue_3_put = {"_put", (PyCFunction)__pyx_pw_6gevent_6_queue_13PriorityQueue_3_put, METH_O, __pyx_doc_6gevent_6_queue_13PriorityQueue_2_put}; -static PyObject *__pyx_pw_6gevent_6_queue_13PriorityQueue_3_put(PyObject *__pyx_v_self, PyObject *__pyx_v_item) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_put (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_13PriorityQueue_2_put(((struct __pyx_obj_6gevent_6_queue_PriorityQueue *)__pyx_v_self), ((PyObject *)__pyx_v_item)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_13PriorityQueue_2_put(struct __pyx_obj_6gevent_6_queue_PriorityQueue *__pyx_v_self, PyObject *__pyx_v_item) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_put", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_6_queue_13PriorityQueue__put(__pyx_v_self, __pyx_v_item, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 449, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._queue.PriorityQueue._put", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":452 - * _heappush(self.queue, item) - * - * def _get(self): # <<<<<<<<<<<<<< - * return _heappop(self.queue) - * - */ - -static PyObject *__pyx_pw_6gevent_6_queue_13PriorityQueue_5_get(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_f_6gevent_6_queue_13PriorityQueue__get(struct __pyx_obj_6gevent_6_queue_PriorityQueue *__pyx_v_self, int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("_get", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 452, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_6_queue_13PriorityQueue_5_get)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 452, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 452, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/queue.py":453 - * - * def _get(self): - * return _heappop(self.queue) # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_6gevent_6_queue__heappop); - __pyx_t_2 = __pyx_v_6gevent_6_queue__heappop; __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_self->__pyx_base.queue); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 453, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_self->__pyx_base.queue}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 453, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_self->__pyx_base.queue}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 453, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 453, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(__pyx_v_self->__pyx_base.queue); - __Pyx_GIVEREF(__pyx_v_self->__pyx_base.queue); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_self->__pyx_base.queue); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 453, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/queue.py":452 - * _heappush(self.queue, item) - * - * def _get(self): # <<<<<<<<<<<<<< - * return _heappop(self.queue) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent._queue.PriorityQueue._get", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_13PriorityQueue_5_get(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_queue_13PriorityQueue_4_get[] = "PriorityQueue._get(self)"; -static PyMethodDef __pyx_mdef_6gevent_6_queue_13PriorityQueue_5_get = {"_get", (PyCFunction)__pyx_pw_6gevent_6_queue_13PriorityQueue_5_get, METH_NOARGS, __pyx_doc_6gevent_6_queue_13PriorityQueue_4_get}; -static PyObject *__pyx_pw_6gevent_6_queue_13PriorityQueue_5_get(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_get (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_13PriorityQueue_4_get(((struct __pyx_obj_6gevent_6_queue_PriorityQueue *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_13PriorityQueue_4_get(struct __pyx_obj_6gevent_6_queue_PriorityQueue *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_get", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_6_queue_13PriorityQueue__get(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 452, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._queue.PriorityQueue._get", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":461 - * __slots__ = () - * - * def _create_queue(self, items=()): # <<<<<<<<<<<<<< - * return list(items) - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_9LifoQueue_1_create_queue(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_6_queue_9LifoQueue__create_queue[] = "LifoQueue._create_queue(self, items=())"; -static PyMethodDef __pyx_mdef_6gevent_6_queue_9LifoQueue_1_create_queue = {"_create_queue", (PyCFunction)__pyx_pw_6gevent_6_queue_9LifoQueue_1_create_queue, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_6_queue_9LifoQueue__create_queue}; -static PyObject *__pyx_pw_6gevent_6_queue_9LifoQueue_1_create_queue(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_items = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_create_queue (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_items,0}; - PyObject* values[1] = {0}; - values[0] = ((PyObject *)__pyx_empty_tuple); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_items); - if (value) { values[0] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_create_queue") < 0)) __PYX_ERR(0, 461, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_items = values[0]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("_create_queue", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 461, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._queue.LifoQueue._create_queue", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_6_queue_9LifoQueue__create_queue(((struct __pyx_obj_6gevent_6_queue_LifoQueue *)__pyx_v_self), __pyx_v_items); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_9LifoQueue__create_queue(CYTHON_UNUSED struct __pyx_obj_6gevent_6_queue_LifoQueue *__pyx_v_self, PyObject *__pyx_v_items) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_create_queue", 0); - - /* "src/gevent/queue.py":462 - * - * def _create_queue(self, items=()): - * return list(items) # <<<<<<<<<<<<<< - * - * def _put(self, item): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PySequence_List(__pyx_v_items); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 462, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/queue.py":461 - * __slots__ = () - * - * def _create_queue(self, items=()): # <<<<<<<<<<<<<< - * return list(items) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._queue.LifoQueue._create_queue", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":464 - * return list(items) - * - * def _put(self, item): # <<<<<<<<<<<<<< - * self.queue.append(item) - * - */ - -static PyObject *__pyx_pw_6gevent_6_queue_9LifoQueue_3_put(PyObject *__pyx_v_self, PyObject *__pyx_v_item); /*proto*/ -static PyObject *__pyx_f_6gevent_6_queue_9LifoQueue__put(struct __pyx_obj_6gevent_6_queue_LifoQueue *__pyx_v_self, PyObject *__pyx_v_item, int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - __Pyx_RefNannySetupContext("_put", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_put); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 464, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_6_queue_9LifoQueue_3_put)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (!__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_item); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 464, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_item}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 464, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_item}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 464, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 464, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_INCREF(__pyx_v_item); - __Pyx_GIVEREF(__pyx_v_item); - PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_item); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 464, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/queue.py":465 - * - * def _put(self, item): - * self.queue.append(item) # <<<<<<<<<<<<<< - * - * def _get(self): - */ - __pyx_t_6 = __Pyx_PyObject_Append(__pyx_v_self->__pyx_base.queue, __pyx_v_item); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 465, __pyx_L1_error) - - /* "src/gevent/queue.py":464 - * return list(items) - * - * def _put(self, item): # <<<<<<<<<<<<<< - * self.queue.append(item) - * - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent._queue.LifoQueue._put", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_9LifoQueue_3_put(PyObject *__pyx_v_self, PyObject *__pyx_v_item); /*proto*/ -static char __pyx_doc_6gevent_6_queue_9LifoQueue_2_put[] = "LifoQueue._put(self, item)"; -static PyMethodDef __pyx_mdef_6gevent_6_queue_9LifoQueue_3_put = {"_put", (PyCFunction)__pyx_pw_6gevent_6_queue_9LifoQueue_3_put, METH_O, __pyx_doc_6gevent_6_queue_9LifoQueue_2_put}; -static PyObject *__pyx_pw_6gevent_6_queue_9LifoQueue_3_put(PyObject *__pyx_v_self, PyObject *__pyx_v_item) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_put (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_9LifoQueue_2_put(((struct __pyx_obj_6gevent_6_queue_LifoQueue *)__pyx_v_self), ((PyObject *)__pyx_v_item)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_9LifoQueue_2_put(struct __pyx_obj_6gevent_6_queue_LifoQueue *__pyx_v_self, PyObject *__pyx_v_item) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_put", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_6_queue_9LifoQueue__put(__pyx_v_self, __pyx_v_item, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 464, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._queue.LifoQueue._put", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":467 - * self.queue.append(item) - * - * def _get(self): # <<<<<<<<<<<<<< - * return self.queue.pop() - * - */ - -static PyObject *__pyx_pw_6gevent_6_queue_9LifoQueue_5_get(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_f_6gevent_6_queue_9LifoQueue__get(struct __pyx_obj_6gevent_6_queue_LifoQueue *__pyx_v_self, int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("_get", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 467, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_6_queue_9LifoQueue_5_get)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 467, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 467, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/queue.py":468 - * - * def _get(self): - * return self.queue.pop() # <<<<<<<<<<<<<< - * - * def _peek(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_Pop(__pyx_v_self->__pyx_base.queue); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 468, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/queue.py":467 - * self.queue.append(item) - * - * def _get(self): # <<<<<<<<<<<<<< - * return self.queue.pop() - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent._queue.LifoQueue._get", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_9LifoQueue_5_get(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_queue_9LifoQueue_4_get[] = "LifoQueue._get(self)"; -static PyMethodDef __pyx_mdef_6gevent_6_queue_9LifoQueue_5_get = {"_get", (PyCFunction)__pyx_pw_6gevent_6_queue_9LifoQueue_5_get, METH_NOARGS, __pyx_doc_6gevent_6_queue_9LifoQueue_4_get}; -static PyObject *__pyx_pw_6gevent_6_queue_9LifoQueue_5_get(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_get (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_9LifoQueue_4_get(((struct __pyx_obj_6gevent_6_queue_LifoQueue *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_9LifoQueue_4_get(struct __pyx_obj_6gevent_6_queue_LifoQueue *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_get", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_6_queue_9LifoQueue__get(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 467, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._queue.LifoQueue._get", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":470 - * return self.queue.pop() - * - * def _peek(self): # <<<<<<<<<<<<<< - * return self.queue[-1] - * - */ - -static PyObject *__pyx_pw_6gevent_6_queue_9LifoQueue_7_peek(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_f_6gevent_6_queue_9LifoQueue__peek(struct __pyx_obj_6gevent_6_queue_LifoQueue *__pyx_v_self, int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("_peek", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_peek); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 470, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_6_queue_9LifoQueue_7_peek)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 470, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 470, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/queue.py":471 - * - * def _peek(self): - * return self.queue[-1] # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_self->__pyx_base.queue, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 471, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/queue.py":470 - * return self.queue.pop() - * - * def _peek(self): # <<<<<<<<<<<<<< - * return self.queue[-1] - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent._queue.LifoQueue._peek", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_9LifoQueue_7_peek(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_queue_9LifoQueue_6_peek[] = "LifoQueue._peek(self)"; -static PyMethodDef __pyx_mdef_6gevent_6_queue_9LifoQueue_7_peek = {"_peek", (PyCFunction)__pyx_pw_6gevent_6_queue_9LifoQueue_7_peek, METH_NOARGS, __pyx_doc_6gevent_6_queue_9LifoQueue_6_peek}; -static PyObject *__pyx_pw_6gevent_6_queue_9LifoQueue_7_peek(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_peek (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_9LifoQueue_6_peek(((struct __pyx_obj_6gevent_6_queue_LifoQueue *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_9LifoQueue_6_peek(struct __pyx_obj_6gevent_6_queue_LifoQueue *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_peek", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_6_queue_9LifoQueue__peek(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 470, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._queue.LifoQueue._peek", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":485 - * ) - * - * def __init__(self, maxsize=None, items=(), unfinished_tasks=None): # <<<<<<<<<<<<<< - * """ - * - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_6_queue_13JoinableQueue_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_6_queue_13JoinableQueue___init__[] = "\n\n .. versionchanged:: 1.1a1\n If *unfinished_tasks* is not given, then all the given *items*\n (if any) will be considered unfinished.\n\n "; -#if CYTHON_COMPILING_IN_CPYTHON -struct wrapperbase __pyx_wrapperbase_6gevent_6_queue_13JoinableQueue___init__; -#endif -static int __pyx_pw_6gevent_6_queue_13JoinableQueue_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_maxsize = 0; - PyObject *__pyx_v_items = 0; - PyObject *__pyx_v_unfinished_tasks = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_maxsize,&__pyx_n_s_items,&__pyx_n_s_unfinished_tasks,0}; - PyObject* values[3] = {0,0,0}; - values[0] = ((PyObject *)Py_None); - values[1] = ((PyObject *)__pyx_empty_tuple); - values[2] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_maxsize); - if (value) { values[0] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_items); - if (value) { values[1] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_unfinished_tasks); - if (value) { values[2] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 485, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_maxsize = values[0]; - __pyx_v_items = values[1]; - __pyx_v_unfinished_tasks = values[2]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 485, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._queue.JoinableQueue.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_6_queue_13JoinableQueue___init__(((struct __pyx_obj_6gevent_6_queue_JoinableQueue *)__pyx_v_self), __pyx_v_maxsize, __pyx_v_items, __pyx_v_unfinished_tasks); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_6_queue_13JoinableQueue___init__(struct __pyx_obj_6gevent_6_queue_JoinableQueue *__pyx_v_self, PyObject *__pyx_v_maxsize, PyObject *__pyx_v_items, PyObject *__pyx_v_unfinished_tasks) { - PyObject *__pyx_v_Event = NULL; - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - int __pyx_t_6; - Py_ssize_t __pyx_t_7; - __Pyx_RefNannySetupContext("__init__", 0); - - /* "src/gevent/queue.py":493 - * - * """ - * Queue.__init__(self, maxsize, items, _warn_depth=3) # <<<<<<<<<<<<<< - * - * from gevent.event import Event - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_6gevent_6_queue_Queue), __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 493, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 493, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_self)); - __Pyx_INCREF(__pyx_v_maxsize); - __Pyx_GIVEREF(__pyx_v_maxsize); - PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_maxsize); - __Pyx_INCREF(__pyx_v_items); - __Pyx_GIVEREF(__pyx_v_items); - PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_items); - __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 493, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_warn_depth, __pyx_int_3) < 0) __PYX_ERR(0, 493, __pyx_L1_error) - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 493, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "src/gevent/queue.py":495 - * Queue.__init__(self, maxsize, items, _warn_depth=3) - * - * from gevent.event import Event # <<<<<<<<<<<<<< - * self._cond = Event() - * self._cond.set() - */ - __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 495, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_INCREF(__pyx_n_s_Event); - __Pyx_GIVEREF(__pyx_n_s_Event); - PyList_SET_ITEM(__pyx_t_4, 0, __pyx_n_s_Event); - __pyx_t_3 = __Pyx_Import(__pyx_n_s_gevent_event, __pyx_t_4, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 495, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_Event); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 495, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_INCREF(__pyx_t_4); - __pyx_v_Event = __pyx_t_4; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "src/gevent/queue.py":496 - * - * from gevent.event import Event - * self._cond = Event() # <<<<<<<<<<<<<< - * self._cond.set() - * - */ - __Pyx_INCREF(__pyx_v_Event); - __pyx_t_4 = __pyx_v_Event; __pyx_t_2 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_2)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_2); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (__pyx_t_2) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 496, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 496, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6gevent_6_event_Event))))) __PYX_ERR(0, 496, __pyx_L1_error) - __Pyx_GIVEREF(__pyx_t_3); - __Pyx_GOTREF(__pyx_v_self->_cond); - __Pyx_DECREF(((PyObject *)__pyx_v_self->_cond)); - __pyx_v_self->_cond = ((struct __pyx_obj_6gevent_6_event_Event *)__pyx_t_3); - __pyx_t_3 = 0; - - /* "src/gevent/queue.py":497 - * from gevent.event import Event - * self._cond = Event() - * self._cond.set() # <<<<<<<<<<<<<< - * - * if unfinished_tasks: - */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_cond), __pyx_n_s_set); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 497, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_2)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_2); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (__pyx_t_2) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 497, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 497, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "src/gevent/queue.py":499 - * self._cond.set() - * - * if unfinished_tasks: # <<<<<<<<<<<<<< - * self.unfinished_tasks = unfinished_tasks - * elif items: - */ - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_unfinished_tasks); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 499, __pyx_L1_error) - if (__pyx_t_5) { - - /* "src/gevent/queue.py":500 - * - * if unfinished_tasks: - * self.unfinished_tasks = unfinished_tasks # <<<<<<<<<<<<<< - * elif items: - * self.unfinished_tasks = len(items) - */ - __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_v_unfinished_tasks); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 500, __pyx_L1_error) - __pyx_v_self->unfinished_tasks = __pyx_t_6; - - /* "src/gevent/queue.py":499 - * self._cond.set() - * - * if unfinished_tasks: # <<<<<<<<<<<<<< - * self.unfinished_tasks = unfinished_tasks - * elif items: - */ - goto __pyx_L3; - } - - /* "src/gevent/queue.py":501 - * if unfinished_tasks: - * self.unfinished_tasks = unfinished_tasks - * elif items: # <<<<<<<<<<<<<< - * self.unfinished_tasks = len(items) - * else: - */ - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_items); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 501, __pyx_L1_error) - if (__pyx_t_5) { - - /* "src/gevent/queue.py":502 - * self.unfinished_tasks = unfinished_tasks - * elif items: - * self.unfinished_tasks = len(items) # <<<<<<<<<<<<<< - * else: - * self.unfinished_tasks = 0 - */ - __pyx_t_7 = PyObject_Length(__pyx_v_items); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 502, __pyx_L1_error) - __pyx_v_self->unfinished_tasks = __pyx_t_7; - - /* "src/gevent/queue.py":501 - * if unfinished_tasks: - * self.unfinished_tasks = unfinished_tasks - * elif items: # <<<<<<<<<<<<<< - * self.unfinished_tasks = len(items) - * else: - */ - goto __pyx_L3; - } - - /* "src/gevent/queue.py":504 - * self.unfinished_tasks = len(items) - * else: - * self.unfinished_tasks = 0 # <<<<<<<<<<<<<< - * - * if self.unfinished_tasks: - */ - /*else*/ { - __pyx_v_self->unfinished_tasks = 0; - } - __pyx_L3:; - - /* "src/gevent/queue.py":506 - * self.unfinished_tasks = 0 - * - * if self.unfinished_tasks: # <<<<<<<<<<<<<< - * self._cond.clear() - * - */ - __pyx_t_5 = (__pyx_v_self->unfinished_tasks != 0); - if (__pyx_t_5) { - - /* "src/gevent/queue.py":507 - * - * if self.unfinished_tasks: - * self._cond.clear() # <<<<<<<<<<<<<< - * - * def copy(self): - */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_cond), __pyx_n_s_clear); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 507, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_2)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_2); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (__pyx_t_2) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 507, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 507, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "src/gevent/queue.py":506 - * self.unfinished_tasks = 0 - * - * if self.unfinished_tasks: # <<<<<<<<<<<<<< - * self._cond.clear() - * - */ - } - - /* "src/gevent/queue.py":485 - * ) - * - * def __init__(self, maxsize=None, items=(), unfinished_tasks=None): # <<<<<<<<<<<<<< - * """ - * - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent._queue.JoinableQueue.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_Event); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":509 - * self._cond.clear() - * - * def copy(self): # <<<<<<<<<<<<<< - * return type(self)(self.maxsize, self.queue, self.unfinished_tasks) - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_13JoinableQueue_3copy(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_queue_13JoinableQueue_2copy[] = "JoinableQueue.copy(self)"; -static PyMethodDef __pyx_mdef_6gevent_6_queue_13JoinableQueue_3copy = {"copy", (PyCFunction)__pyx_pw_6gevent_6_queue_13JoinableQueue_3copy, METH_NOARGS, __pyx_doc_6gevent_6_queue_13JoinableQueue_2copy}; -static PyObject *__pyx_pw_6gevent_6_queue_13JoinableQueue_3copy(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("copy (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_13JoinableQueue_2copy(((struct __pyx_obj_6gevent_6_queue_JoinableQueue *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_13JoinableQueue_2copy(struct __pyx_obj_6gevent_6_queue_JoinableQueue *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - PyObject *__pyx_t_7 = NULL; - __Pyx_RefNannySetupContext("copy", 0); - - /* "src/gevent/queue.py":510 - * - * def copy(self): - * return type(self)(self.maxsize, self.queue, self.unfinished_tasks) # <<<<<<<<<<<<<< - * - * def _format(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_maxsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 510, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_self->unfinished_tasks); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 510, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - __pyx_t_4 = ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))); __pyx_t_5 = NULL; - __pyx_t_6 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - __pyx_t_6 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_2, __pyx_v_self->__pyx_base.queue, __pyx_t_3}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 510, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_2, __pyx_v_self->__pyx_base.queue, __pyx_t_3}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 510, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - { - __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 510, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (__pyx_t_5) { - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; - } - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_2); - __Pyx_INCREF(__pyx_v_self->__pyx_base.queue); - __Pyx_GIVEREF(__pyx_v_self->__pyx_base.queue); - PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_self->__pyx_base.queue); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_t_3); - __pyx_t_2 = 0; - __pyx_t_3 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 510, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/queue.py":509 - * self._cond.clear() - * - * def copy(self): # <<<<<<<<<<<<<< - * return type(self)(self.maxsize, self.queue, self.unfinished_tasks) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("gevent._queue.JoinableQueue.copy", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":512 - * return type(self)(self.maxsize, self.queue, self.unfinished_tasks) - * - * def _format(self): # <<<<<<<<<<<<<< - * result = Queue._format(self) - * if self.unfinished_tasks: - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_13JoinableQueue_5_format(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_queue_13JoinableQueue_4_format[] = "JoinableQueue._format(self)"; -static PyMethodDef __pyx_mdef_6gevent_6_queue_13JoinableQueue_5_format = {"_format", (PyCFunction)__pyx_pw_6gevent_6_queue_13JoinableQueue_5_format, METH_NOARGS, __pyx_doc_6gevent_6_queue_13JoinableQueue_4_format}; -static PyObject *__pyx_pw_6gevent_6_queue_13JoinableQueue_5_format(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_format (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_13JoinableQueue_4_format(((struct __pyx_obj_6gevent_6_queue_JoinableQueue *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_13JoinableQueue_4_format(struct __pyx_obj_6gevent_6_queue_JoinableQueue *__pyx_v_self) { - PyObject *__pyx_v_result = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - __Pyx_RefNannySetupContext("_format", 0); - - /* "src/gevent/queue.py":513 - * - * def _format(self): - * result = Queue._format(self) # <<<<<<<<<<<<<< - * if self.unfinished_tasks: - * result += ' tasks=%s _cond=%s' % (self.unfinished_tasks, self._cond) - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_6gevent_6_queue_Queue), __pyx_n_s_format); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 513, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 513, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_self)}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 513, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_self)}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 513, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 513, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)__pyx_v_self)); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 513, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_result = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/queue.py":514 - * def _format(self): - * result = Queue._format(self) - * if self.unfinished_tasks: # <<<<<<<<<<<<<< - * result += ' tasks=%s _cond=%s' % (self.unfinished_tasks, self._cond) - * return result - */ - __pyx_t_5 = (__pyx_v_self->unfinished_tasks != 0); - if (__pyx_t_5) { - - /* "src/gevent/queue.py":515 - * result = Queue._format(self) - * if self.unfinished_tasks: - * result += ' tasks=%s _cond=%s' % (self.unfinished_tasks, self._cond) # <<<<<<<<<<<<<< - * return result - * - */ - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->unfinished_tasks); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 515, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 515, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); - __Pyx_INCREF(((PyObject *)__pyx_v_self->_cond)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self->_cond)); - PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self->_cond)); - __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_tasks_s__cond_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 515, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_result, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 515, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_2); - __pyx_t_2 = 0; - - /* "src/gevent/queue.py":514 - * def _format(self): - * result = Queue._format(self) - * if self.unfinished_tasks: # <<<<<<<<<<<<<< - * result += ' tasks=%s _cond=%s' % (self.unfinished_tasks, self._cond) - * return result - */ - } - - /* "src/gevent/queue.py":516 - * if self.unfinished_tasks: - * result += ' tasks=%s _cond=%s' % (self.unfinished_tasks, self._cond) - * return result # <<<<<<<<<<<<<< - * - * def _put(self, item): - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_result); - __pyx_r = __pyx_v_result; - goto __pyx_L0; - - /* "src/gevent/queue.py":512 - * return type(self)(self.maxsize, self.queue, self.unfinished_tasks) - * - * def _format(self): # <<<<<<<<<<<<<< - * result = Queue._format(self) - * if self.unfinished_tasks: - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent._queue.JoinableQueue._format", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_result); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":518 - * return result - * - * def _put(self, item): # <<<<<<<<<<<<<< - * Queue._put(self, item) - * self.unfinished_tasks += 1 - */ - -static PyObject *__pyx_pw_6gevent_6_queue_13JoinableQueue_7_put(PyObject *__pyx_v_self, PyObject *__pyx_v_item); /*proto*/ -static PyObject *__pyx_f_6gevent_6_queue_13JoinableQueue__put(struct __pyx_obj_6gevent_6_queue_JoinableQueue *__pyx_v_self, PyObject *__pyx_v_item, int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - __Pyx_RefNannySetupContext("_put", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_put); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 518, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_6_queue_13JoinableQueue_7_put)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (!__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_item); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 518, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_item}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 518, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_item}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 518, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 518, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_INCREF(__pyx_v_item); - __Pyx_GIVEREF(__pyx_v_item); - PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_item); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 518, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/queue.py":519 - * - * def _put(self, item): - * Queue._put(self, item) # <<<<<<<<<<<<<< - * self.unfinished_tasks += 1 - * self._cond.clear() - */ - __pyx_t_1 = __pyx_f_6gevent_6_queue_5Queue__put(((struct __pyx_obj_6gevent_6_queue_Queue *)__pyx_v_self), __pyx_v_item, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 519, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":520 - * def _put(self, item): - * Queue._put(self, item) - * self.unfinished_tasks += 1 # <<<<<<<<<<<<<< - * self._cond.clear() - * - */ - __pyx_v_self->unfinished_tasks = (__pyx_v_self->unfinished_tasks + 1); - - /* "src/gevent/queue.py":521 - * Queue._put(self, item) - * self.unfinished_tasks += 1 - * self._cond.clear() # <<<<<<<<<<<<<< - * - * def task_done(self): - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_cond), __pyx_n_s_clear); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 521, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 521, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 521, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":518 - * return result - * - * def _put(self, item): # <<<<<<<<<<<<<< - * Queue._put(self, item) - * self.unfinished_tasks += 1 - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent._queue.JoinableQueue._put", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_13JoinableQueue_7_put(PyObject *__pyx_v_self, PyObject *__pyx_v_item); /*proto*/ -static char __pyx_doc_6gevent_6_queue_13JoinableQueue_6_put[] = "JoinableQueue._put(self, item)"; -static PyMethodDef __pyx_mdef_6gevent_6_queue_13JoinableQueue_7_put = {"_put", (PyCFunction)__pyx_pw_6gevent_6_queue_13JoinableQueue_7_put, METH_O, __pyx_doc_6gevent_6_queue_13JoinableQueue_6_put}; -static PyObject *__pyx_pw_6gevent_6_queue_13JoinableQueue_7_put(PyObject *__pyx_v_self, PyObject *__pyx_v_item) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_put (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_13JoinableQueue_6_put(((struct __pyx_obj_6gevent_6_queue_JoinableQueue *)__pyx_v_self), ((PyObject *)__pyx_v_item)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_13JoinableQueue_6_put(struct __pyx_obj_6gevent_6_queue_JoinableQueue *__pyx_v_self, PyObject *__pyx_v_item) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_put", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_6_queue_13JoinableQueue__put(__pyx_v_self, __pyx_v_item, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 518, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._queue.JoinableQueue._put", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":523 - * self._cond.clear() - * - * def task_done(self): # <<<<<<<<<<<<<< - * '''Indicate that a formerly enqueued task is complete. Used by queue consumer threads. - * For each :meth:`get <Queue.get>` used to fetch a task, a subsequent call to :meth:`task_done` tells the queue - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_13JoinableQueue_9task_done(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_queue_13JoinableQueue_8task_done[] = "JoinableQueue.task_done(self)\nIndicate that a formerly enqueued task is complete. Used by queue consumer threads.\n For each :meth:`get <Queue.get>` used to fetch a task, a subsequent call to :meth:`task_done` tells the queue\n that the processing on the task is complete.\n\n If a :meth:`join` is currently blocking, it will resume when all items have been processed\n (meaning that a :meth:`task_done` call was received for every item that had been\n :meth:`put <Queue.put>` into the queue).\n\n Raises a :exc:`ValueError` if called more times than there were items placed in the queue.\n "; -static PyMethodDef __pyx_mdef_6gevent_6_queue_13JoinableQueue_9task_done = {"task_done", (PyCFunction)__pyx_pw_6gevent_6_queue_13JoinableQueue_9task_done, METH_NOARGS, __pyx_doc_6gevent_6_queue_13JoinableQueue_8task_done}; -static PyObject *__pyx_pw_6gevent_6_queue_13JoinableQueue_9task_done(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("task_done (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_13JoinableQueue_8task_done(((struct __pyx_obj_6gevent_6_queue_JoinableQueue *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_13JoinableQueue_8task_done(struct __pyx_obj_6gevent_6_queue_JoinableQueue *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("task_done", 0); - - /* "src/gevent/queue.py":534 - * Raises a :exc:`ValueError` if called more times than there were items placed in the queue. - * ''' - * if self.unfinished_tasks <= 0: # <<<<<<<<<<<<<< - * raise ValueError('task_done() called too many times') - * self.unfinished_tasks -= 1 - */ - __pyx_t_1 = ((__pyx_v_self->unfinished_tasks <= 0) != 0); - if (unlikely(__pyx_t_1)) { - - /* "src/gevent/queue.py":535 - * ''' - * if self.unfinished_tasks <= 0: - * raise ValueError('task_done() called too many times') # <<<<<<<<<<<<<< - * self.unfinished_tasks -= 1 - * if self.unfinished_tasks == 0: - */ - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 535, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 535, __pyx_L1_error) - - /* "src/gevent/queue.py":534 - * Raises a :exc:`ValueError` if called more times than there were items placed in the queue. - * ''' - * if self.unfinished_tasks <= 0: # <<<<<<<<<<<<<< - * raise ValueError('task_done() called too many times') - * self.unfinished_tasks -= 1 - */ - } - - /* "src/gevent/queue.py":536 - * if self.unfinished_tasks <= 0: - * raise ValueError('task_done() called too many times') - * self.unfinished_tasks -= 1 # <<<<<<<<<<<<<< - * if self.unfinished_tasks == 0: - * self._cond.set() - */ - __pyx_v_self->unfinished_tasks = (__pyx_v_self->unfinished_tasks - 1); - - /* "src/gevent/queue.py":537 - * raise ValueError('task_done() called too many times') - * self.unfinished_tasks -= 1 - * if self.unfinished_tasks == 0: # <<<<<<<<<<<<<< - * self._cond.set() - * - */ - __pyx_t_1 = ((__pyx_v_self->unfinished_tasks == 0) != 0); - if (__pyx_t_1) { - - /* "src/gevent/queue.py":538 - * self.unfinished_tasks -= 1 - * if self.unfinished_tasks == 0: - * self._cond.set() # <<<<<<<<<<<<<< - * - * def join(self, timeout=None): - */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_cond), __pyx_n_s_set); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 538, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 538, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 538, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/queue.py":537 - * raise ValueError('task_done() called too many times') - * self.unfinished_tasks -= 1 - * if self.unfinished_tasks == 0: # <<<<<<<<<<<<<< - * self._cond.set() - * - */ - } - - /* "src/gevent/queue.py":523 - * self._cond.clear() - * - * def task_done(self): # <<<<<<<<<<<<<< - * '''Indicate that a formerly enqueued task is complete. Used by queue consumer threads. - * For each :meth:`get <Queue.get>` used to fetch a task, a subsequent call to :meth:`task_done` tells the queue - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent._queue.JoinableQueue.task_done", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":540 - * self._cond.set() - * - * def join(self, timeout=None): # <<<<<<<<<<<<<< - * ''' - * Block until all items in the queue have been gotten and processed. - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_13JoinableQueue_11join(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_6_queue_13JoinableQueue_10join[] = "JoinableQueue.join(self, timeout=None)\n\n Block until all items in the queue have been gotten and processed.\n\n The count of unfinished tasks goes up whenever an item is added to the queue.\n The count goes down whenever a consumer thread calls :meth:`task_done` to indicate\n that the item was retrieved and all work on it is complete. When the count of\n unfinished tasks drops to zero, :meth:`join` unblocks.\n\n :param float timeout: If not ``None``, then wait no more than this time in seconds\n for all tasks to finish.\n :return: ``True`` if all tasks have finished; if ``timeout`` was given and expired before\n all tasks finished, ``False``.\n\n .. versionchanged:: 1.1a1\n Add the *timeout* parameter.\n "; -static PyMethodDef __pyx_mdef_6gevent_6_queue_13JoinableQueue_11join = {"join", (PyCFunction)__pyx_pw_6gevent_6_queue_13JoinableQueue_11join, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_6_queue_13JoinableQueue_10join}; -static PyObject *__pyx_pw_6gevent_6_queue_13JoinableQueue_11join(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_timeout = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("join (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_timeout,0}; - PyObject* values[1] = {0}; - values[0] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeout); - if (value) { values[0] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "join") < 0)) __PYX_ERR(0, 540, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_timeout = values[0]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("join", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 540, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._queue.JoinableQueue.join", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_6_queue_13JoinableQueue_10join(((struct __pyx_obj_6gevent_6_queue_JoinableQueue *)__pyx_v_self), __pyx_v_timeout); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_13JoinableQueue_10join(struct __pyx_obj_6gevent_6_queue_JoinableQueue *__pyx_v_self, PyObject *__pyx_v_timeout) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("join", 0); - - /* "src/gevent/queue.py":557 - * Add the *timeout* parameter. - * ''' - * return self._cond.wait(timeout=timeout) # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_cond), __pyx_n_s_wait); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 557, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 557, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_timeout, __pyx_v_timeout) < 0) __PYX_ERR(0, 557, __pyx_L1_error) - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 557, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - - /* "src/gevent/queue.py":540 - * self._cond.set() - * - * def join(self, timeout=None): # <<<<<<<<<<<<<< - * ''' - * Block until all items in the queue have been gotten and processed. - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent._queue.JoinableQueue.join", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/_queue.pxd":61 - * cdef class JoinableQueue(Queue): - * cdef Event _cond - * cdef readonly int unfinished_tasks # <<<<<<<<<<<<<< - * - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_13JoinableQueue_16unfinished_tasks_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_6_queue_13JoinableQueue_16unfinished_tasks_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_13JoinableQueue_16unfinished_tasks___get__(((struct __pyx_obj_6gevent_6_queue_JoinableQueue *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_13JoinableQueue_16unfinished_tasks___get__(struct __pyx_obj_6gevent_6_queue_JoinableQueue *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->unfinished_tasks); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 61, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._queue.JoinableQueue.unfinished_tasks.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":570 - * ) - * - * def __init__(self, maxsize=1): # <<<<<<<<<<<<<< - * # We take maxsize to simplify certain kinds of code - * if maxsize != 1: - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_6_queue_7Channel_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_6_queue_7Channel_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_maxsize = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_maxsize,0}; - PyObject* values[1] = {0}; - values[0] = ((PyObject *)__pyx_int_1); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_maxsize); - if (value) { values[0] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 570, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_maxsize = values[0]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 570, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._queue.Channel.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_6_queue_7Channel___init__(((struct __pyx_obj_6gevent_6_queue_Channel *)__pyx_v_self), __pyx_v_maxsize); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_6_queue_7Channel___init__(struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self, PyObject *__pyx_v_maxsize) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("__init__", 0); - - /* "src/gevent/queue.py":572 - * def __init__(self, maxsize=1): - * # We take maxsize to simplify certain kinds of code - * if maxsize != 1: # <<<<<<<<<<<<<< - * raise ValueError("Channels have a maxsize of 1") - * self.getters = collections.deque() - */ - __pyx_t_1 = PyObject_RichCompare(__pyx_v_maxsize, __pyx_int_1, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 572, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 572, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(__pyx_t_2)) { - - /* "src/gevent/queue.py":573 - * # We take maxsize to simplify certain kinds of code - * if maxsize != 1: - * raise ValueError("Channels have a maxsize of 1") # <<<<<<<<<<<<<< - * self.getters = collections.deque() - * self.putters = collections.deque() - */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 573, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 573, __pyx_L1_error) - - /* "src/gevent/queue.py":572 - * def __init__(self, maxsize=1): - * # We take maxsize to simplify certain kinds of code - * if maxsize != 1: # <<<<<<<<<<<<<< - * raise ValueError("Channels have a maxsize of 1") - * self.getters = collections.deque() - */ - } - - /* "src/gevent/queue.py":574 - * if maxsize != 1: - * raise ValueError("Channels have a maxsize of 1") - * self.getters = collections.deque() # <<<<<<<<<<<<<< - * self.putters = collections.deque() - * self.hub = get_hub() - */ - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_collections); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 574, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_deque); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 574, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 574, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 574, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->getters); - __Pyx_DECREF(__pyx_v_self->getters); - __pyx_v_self->getters = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/queue.py":575 - * raise ValueError("Channels have a maxsize of 1") - * self.getters = collections.deque() - * self.putters = collections.deque() # <<<<<<<<<<<<<< - * self.hub = get_hub() - * self._event_unlock = None - */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_collections); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 575, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_deque); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 575, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 575, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 575, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->putters); - __Pyx_DECREF(__pyx_v_self->putters); - __pyx_v_self->putters = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/queue.py":576 - * self.getters = collections.deque() - * self.putters = collections.deque() - * self.hub = get_hub() # <<<<<<<<<<<<<< - * self._event_unlock = None - * - */ - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_get_hub); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 576, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 576, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 576, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->hub); - __Pyx_DECREF(__pyx_v_self->hub); - __pyx_v_self->hub = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/queue.py":577 - * self.putters = collections.deque() - * self.hub = get_hub() - * self._event_unlock = None # <<<<<<<<<<<<<< - * - * def __repr__(self): - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->_event_unlock); - __Pyx_DECREF(__pyx_v_self->_event_unlock); - __pyx_v_self->_event_unlock = Py_None; - - /* "src/gevent/queue.py":570 - * ) - * - * def __init__(self, maxsize=1): # <<<<<<<<<<<<<< - * # We take maxsize to simplify certain kinds of code - * if maxsize != 1: - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent._queue.Channel.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":579 - * self._event_unlock = None - * - * def __repr__(self): # <<<<<<<<<<<<<< - * return '<%s at %s %s>' % (type(self).__name__, hex(id(self)), self._format()) - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_7Channel_3__repr__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_6_queue_7Channel_3__repr__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_7Channel_2__repr__(((struct __pyx_obj_6gevent_6_queue_Channel *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_7Channel_2__repr__(struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - __Pyx_RefNannySetupContext("__repr__", 0); - - /* "src/gevent/queue.py":580 - * - * def __repr__(self): - * return '<%s at %s %s>' % (type(self).__name__, hex(id(self)), self._format()) # <<<<<<<<<<<<<< - * - * def __str__(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 580, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 580, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_hex, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 580, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 580, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (__pyx_t_5) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 580, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 580, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 580, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_2); - __pyx_t_1 = 0; - __pyx_t_3 = 0; - __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_s_at_s_s_2, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 580, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "src/gevent/queue.py":579 - * self._event_unlock = None - * - * def __repr__(self): # <<<<<<<<<<<<<< - * return '<%s at %s %s>' % (type(self).__name__, hex(id(self)), self._format()) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent._queue.Channel.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":582 - * return '<%s at %s %s>' % (type(self).__name__, hex(id(self)), self._format()) - * - * def __str__(self): # <<<<<<<<<<<<<< - * return '<%s %s>' % (type(self).__name__, self._format()) - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_7Channel_5__str__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_6_queue_7Channel_5__str__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__str__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_7Channel_4__str__(((struct __pyx_obj_6gevent_6_queue_Channel *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_7Channel_4__str__(struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("__str__", 0); - - /* "src/gevent/queue.py":583 - * - * def __str__(self): - * return '<%s %s>' % (type(self).__name__, self._format()) # <<<<<<<<<<<<<< - * - * def _format(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 583, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 583, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 583, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 583, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 583, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); - __pyx_t_1 = 0; - __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_s_s_2, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 583, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "src/gevent/queue.py":582 - * return '<%s at %s %s>' % (type(self).__name__, hex(id(self)), self._format()) - * - * def __str__(self): # <<<<<<<<<<<<<< - * return '<%s %s>' % (type(self).__name__, self._format()) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent._queue.Channel.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":585 - * return '<%s %s>' % (type(self).__name__, self._format()) - * - * def _format(self): # <<<<<<<<<<<<<< - * result = '' - * if self.getters: - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_7Channel_7_format(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_queue_7Channel_6_format[] = "Channel._format(self)"; -static PyMethodDef __pyx_mdef_6gevent_6_queue_7Channel_7_format = {"_format", (PyCFunction)__pyx_pw_6gevent_6_queue_7Channel_7_format, METH_NOARGS, __pyx_doc_6gevent_6_queue_7Channel_6_format}; -static PyObject *__pyx_pw_6gevent_6_queue_7Channel_7_format(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_format (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_7Channel_6_format(((struct __pyx_obj_6gevent_6_queue_Channel *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_7Channel_6_format(struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self) { - PyObject *__pyx_v_result = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - Py_ssize_t __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("_format", 0); - - /* "src/gevent/queue.py":586 - * - * def _format(self): - * result = '' # <<<<<<<<<<<<<< - * if self.getters: - * result += ' getters[%s]' % len(self.getters) - */ - __Pyx_INCREF(__pyx_kp_s__3); - __pyx_v_result = __pyx_kp_s__3; - - /* "src/gevent/queue.py":587 - * def _format(self): - * result = '' - * if self.getters: # <<<<<<<<<<<<<< - * result += ' getters[%s]' % len(self.getters) - * if self.putters: - */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->getters); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 587, __pyx_L1_error) - if (__pyx_t_1) { - - /* "src/gevent/queue.py":588 - * result = '' - * if self.getters: - * result += ' getters[%s]' % len(self.getters) # <<<<<<<<<<<<<< - * if self.putters: - * result += ' putters[%s]' % len(self.putters) - */ - __pyx_t_2 = __pyx_v_self->getters; - __Pyx_INCREF(__pyx_t_2); - __pyx_t_3 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 588, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 588, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_getters_s_2, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 588, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_result, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 588, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_2); - __pyx_t_2 = 0; - - /* "src/gevent/queue.py":587 - * def _format(self): - * result = '' - * if self.getters: # <<<<<<<<<<<<<< - * result += ' getters[%s]' % len(self.getters) - * if self.putters: - */ - } - - /* "src/gevent/queue.py":589 - * if self.getters: - * result += ' getters[%s]' % len(self.getters) - * if self.putters: # <<<<<<<<<<<<<< - * result += ' putters[%s]' % len(self.putters) - * return result - */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->putters); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 589, __pyx_L1_error) - if (__pyx_t_1) { - - /* "src/gevent/queue.py":590 - * result += ' getters[%s]' % len(self.getters) - * if self.putters: - * result += ' putters[%s]' % len(self.putters) # <<<<<<<<<<<<<< - * return result - * - */ - __pyx_t_2 = __pyx_v_self->putters; - __Pyx_INCREF(__pyx_t_2); - __pyx_t_3 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 590, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 590, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_putters_s_2, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 590, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_result, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 590, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_2); - __pyx_t_2 = 0; - - /* "src/gevent/queue.py":589 - * if self.getters: - * result += ' getters[%s]' % len(self.getters) - * if self.putters: # <<<<<<<<<<<<<< - * result += ' putters[%s]' % len(self.putters) - * return result - */ - } - - /* "src/gevent/queue.py":591 - * if self.putters: - * result += ' putters[%s]' % len(self.putters) - * return result # <<<<<<<<<<<<<< - * - * @property - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_result); - __pyx_r = __pyx_v_result; - goto __pyx_L0; - - /* "src/gevent/queue.py":585 - * return '<%s %s>' % (type(self).__name__, self._format()) - * - * def _format(self): # <<<<<<<<<<<<<< - * result = '' - * if self.getters: - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent._queue.Channel._format", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_result); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":594 - * - * @property - * def balance(self): # <<<<<<<<<<<<<< - * return len(self.putters) - len(self.getters) - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_7Channel_7balance_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_6_queue_7Channel_7balance_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_7Channel_7balance___get__(((struct __pyx_obj_6gevent_6_queue_Channel *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_7Channel_7balance___get__(struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - Py_ssize_t __pyx_t_2; - Py_ssize_t __pyx_t_3; - __Pyx_RefNannySetupContext("__get__", 0); - - /* "src/gevent/queue.py":595 - * @property - * def balance(self): - * return len(self.putters) - len(self.getters) # <<<<<<<<<<<<<< - * - * def qsize(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_v_self->putters; - __Pyx_INCREF(__pyx_t_1); - __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 595, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __pyx_v_self->getters; - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 595, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyInt_FromSsize_t((__pyx_t_2 - __pyx_t_3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 595, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/queue.py":594 - * - * @property - * def balance(self): # <<<<<<<<<<<<<< - * return len(self.putters) - len(self.getters) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._queue.Channel.balance.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":597 - * return len(self.putters) - len(self.getters) - * - * def qsize(self): # <<<<<<<<<<<<<< - * return 0 - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_7Channel_9qsize(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_queue_7Channel_8qsize[] = "Channel.qsize(self)"; -static PyMethodDef __pyx_mdef_6gevent_6_queue_7Channel_9qsize = {"qsize", (PyCFunction)__pyx_pw_6gevent_6_queue_7Channel_9qsize, METH_NOARGS, __pyx_doc_6gevent_6_queue_7Channel_8qsize}; -static PyObject *__pyx_pw_6gevent_6_queue_7Channel_9qsize(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("qsize (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_7Channel_8qsize(((struct __pyx_obj_6gevent_6_queue_Channel *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_7Channel_8qsize(CYTHON_UNUSED struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("qsize", 0); - - /* "src/gevent/queue.py":598 - * - * def qsize(self): - * return 0 # <<<<<<<<<<<<<< - * - * def empty(self): - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_int_0); - __pyx_r = __pyx_int_0; - goto __pyx_L0; - - /* "src/gevent/queue.py":597 - * return len(self.putters) - len(self.getters) - * - * def qsize(self): # <<<<<<<<<<<<<< - * return 0 - * - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":600 - * return 0 - * - * def empty(self): # <<<<<<<<<<<<<< - * return True - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_7Channel_11empty(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_queue_7Channel_10empty[] = "Channel.empty(self)"; -static PyMethodDef __pyx_mdef_6gevent_6_queue_7Channel_11empty = {"empty", (PyCFunction)__pyx_pw_6gevent_6_queue_7Channel_11empty, METH_NOARGS, __pyx_doc_6gevent_6_queue_7Channel_10empty}; -static PyObject *__pyx_pw_6gevent_6_queue_7Channel_11empty(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("empty (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_7Channel_10empty(((struct __pyx_obj_6gevent_6_queue_Channel *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_7Channel_10empty(CYTHON_UNUSED struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("empty", 0); - - /* "src/gevent/queue.py":601 - * - * def empty(self): - * return True # <<<<<<<<<<<<<< - * - * def full(self): - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(Py_True); - __pyx_r = Py_True; - goto __pyx_L0; - - /* "src/gevent/queue.py":600 - * return 0 - * - * def empty(self): # <<<<<<<<<<<<<< - * return True - * - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":603 - * return True - * - * def full(self): # <<<<<<<<<<<<<< - * return True - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_7Channel_13full(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_queue_7Channel_12full[] = "Channel.full(self)"; -static PyMethodDef __pyx_mdef_6gevent_6_queue_7Channel_13full = {"full", (PyCFunction)__pyx_pw_6gevent_6_queue_7Channel_13full, METH_NOARGS, __pyx_doc_6gevent_6_queue_7Channel_12full}; -static PyObject *__pyx_pw_6gevent_6_queue_7Channel_13full(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("full (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_7Channel_12full(((struct __pyx_obj_6gevent_6_queue_Channel *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_7Channel_12full(CYTHON_UNUSED struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("full", 0); - - /* "src/gevent/queue.py":604 - * - * def full(self): - * return True # <<<<<<<<<<<<<< - * - * def put(self, item, block=True, timeout=None): - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(Py_True); - __pyx_r = Py_True; - goto __pyx_L0; - - /* "src/gevent/queue.py":603 - * return True - * - * def full(self): # <<<<<<<<<<<<<< - * return True - * - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":606 - * return True - * - * def put(self, item, block=True, timeout=None): # <<<<<<<<<<<<<< - * if self.hub is getcurrent(): - * if self.getters: - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_7Channel_15put(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_6_queue_7Channel_14put[] = "Channel.put(self, item, block=True, timeout=None)"; -static PyMethodDef __pyx_mdef_6gevent_6_queue_7Channel_15put = {"put", (PyCFunction)__pyx_pw_6gevent_6_queue_7Channel_15put, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_6_queue_7Channel_14put}; -static PyObject *__pyx_pw_6gevent_6_queue_7Channel_15put(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_item = 0; - PyObject *__pyx_v_block = 0; - PyObject *__pyx_v_timeout = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("put (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_item,&__pyx_n_s_block,&__pyx_n_s_timeout,0}; - PyObject* values[3] = {0,0,0}; - values[1] = ((PyObject *)Py_True); - values[2] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_item)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_block); - if (value) { values[1] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeout); - if (value) { values[2] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "put") < 0)) __PYX_ERR(0, 606, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_item = values[0]; - __pyx_v_block = values[1]; - __pyx_v_timeout = values[2]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("put", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 606, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._queue.Channel.put", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_6_queue_7Channel_14put(((struct __pyx_obj_6gevent_6_queue_Channel *)__pyx_v_self), __pyx_v_item, __pyx_v_block, __pyx_v_timeout); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_7Channel_14put(struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_block, PyObject *__pyx_v_timeout) { - PyObject *__pyx_v_getter = NULL; - struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_waiter = NULL; - PyObject *__pyx_v_result = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - int __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - int __pyx_t_7; - int __pyx_t_8; - PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - PyObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; - int __pyx_t_13; - char const *__pyx_t_14; - PyObject *__pyx_t_15 = NULL; - PyObject *__pyx_t_16 = NULL; - PyObject *__pyx_t_17 = NULL; - __Pyx_RefNannySetupContext("put", 0); - __Pyx_INCREF(__pyx_v_item); - __Pyx_INCREF(__pyx_v_timeout); - - /* "src/gevent/queue.py":607 - * - * def put(self, item, block=True, timeout=None): - * if self.hub is getcurrent(): # <<<<<<<<<<<<<< - * if self.getters: - * getter = self.getters.popleft() - */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_getcurrent); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 607, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 607, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 607, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = (__pyx_v_self->hub == __pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_5 = (__pyx_t_4 != 0); - if (__pyx_t_5) { - - /* "src/gevent/queue.py":608 - * def put(self, item, block=True, timeout=None): - * if self.hub is getcurrent(): - * if self.getters: # <<<<<<<<<<<<<< - * getter = self.getters.popleft() - * getter.switch(item) - */ - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_self->getters); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 608, __pyx_L1_error) - if (__pyx_t_5) { - - /* "src/gevent/queue.py":609 - * if self.hub is getcurrent(): - * if self.getters: - * getter = self.getters.popleft() # <<<<<<<<<<<<<< - * getter.switch(item) - * return - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->getters, __pyx_n_s_popleft); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 609, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 609, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 609, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_getter = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/queue.py":610 - * if self.getters: - * getter = self.getters.popleft() - * getter.switch(item) # <<<<<<<<<<<<<< - * return - * raise Full - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_getter, __pyx_n_s_switch); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 610, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_item); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 610, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_item}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 610, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_item}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 610, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 610, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(__pyx_v_item); - __Pyx_GIVEREF(__pyx_v_item); - PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_item); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 610, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":611 - * getter = self.getters.popleft() - * getter.switch(item) - * return # <<<<<<<<<<<<<< - * raise Full - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - /* "src/gevent/queue.py":608 - * def put(self, item, block=True, timeout=None): - * if self.hub is getcurrent(): - * if self.getters: # <<<<<<<<<<<<<< - * getter = self.getters.popleft() - * getter.switch(item) - */ - } - - /* "src/gevent/queue.py":612 - * getter.switch(item) - * return - * raise Full # <<<<<<<<<<<<<< - * - * if not block: - */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_Full); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 612, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 612, __pyx_L1_error) - - /* "src/gevent/queue.py":607 - * - * def put(self, item, block=True, timeout=None): - * if self.hub is getcurrent(): # <<<<<<<<<<<<<< - * if self.getters: - * getter = self.getters.popleft() - */ - } - - /* "src/gevent/queue.py":614 - * raise Full - * - * if not block: # <<<<<<<<<<<<<< - * timeout = 0 - * - */ - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_block); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 614, __pyx_L1_error) - __pyx_t_4 = ((!__pyx_t_5) != 0); - if (__pyx_t_4) { - - /* "src/gevent/queue.py":615 - * - * if not block: - * timeout = 0 # <<<<<<<<<<<<<< - * - * waiter = Waiter() # pylint:disable=undefined-variable - */ - __Pyx_INCREF(__pyx_int_0); - __Pyx_DECREF_SET(__pyx_v_timeout, __pyx_int_0); - - /* "src/gevent/queue.py":614 - * raise Full - * - * if not block: # <<<<<<<<<<<<<< - * timeout = 0 - * - */ - } - - /* "src/gevent/queue.py":617 - * timeout = 0 - * - * waiter = Waiter() # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * item = (item, waiter) - * self.putters.append(item) - */ - __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_6gevent_8__waiter_Waiter)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 617, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_waiter = ((struct __pyx_obj_6gevent_8__waiter_Waiter *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/queue.py":618 - * - * waiter = Waiter() # pylint:disable=undefined-variable - * item = (item, waiter) # <<<<<<<<<<<<<< - * self.putters.append(item) - * timeout = Timeout._start_new_or_dummy(timeout, Full) - */ - __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 618, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_v_item); - __Pyx_GIVEREF(__pyx_v_item); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_item); - __Pyx_INCREF(((PyObject *)__pyx_v_waiter)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_waiter)); - PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_waiter)); - __Pyx_DECREF_SET(__pyx_v_item, __pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/queue.py":619 - * waiter = Waiter() # pylint:disable=undefined-variable - * item = (item, waiter) - * self.putters.append(item) # <<<<<<<<<<<<<< - * timeout = Timeout._start_new_or_dummy(timeout, Full) - * try: - */ - __pyx_t_7 = __Pyx_PyObject_Append(__pyx_v_self->putters, __pyx_v_item); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 619, __pyx_L1_error) - - /* "src/gevent/queue.py":620 - * item = (item, waiter) - * self.putters.append(item) - * timeout = Timeout._start_new_or_dummy(timeout, Full) # <<<<<<<<<<<<<< - * try: - * if self.getters: - */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_Timeout); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 620, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_start_new_or_dummy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 620, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_Full); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 620, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - __pyx_t_8 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_6, function); - __pyx_t_8 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_6)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_timeout, __pyx_t_2}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 620, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_timeout, __pyx_t_2}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 620, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else - #endif - { - __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 620, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - if (__pyx_t_3) { - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3); __pyx_t_3 = NULL; - } - __Pyx_INCREF(__pyx_v_timeout); - __Pyx_GIVEREF(__pyx_v_timeout); - PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_v_timeout); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 620, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - } - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF_SET(__pyx_v_timeout, __pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/queue.py":621 - * self.putters.append(item) - * timeout = Timeout._start_new_or_dummy(timeout, Full) - * try: # <<<<<<<<<<<<<< - * if self.getters: - * self._schedule_unlock() - */ - /*try:*/ { - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); - __Pyx_XGOTREF(__pyx_t_10); - __Pyx_XGOTREF(__pyx_t_11); - __Pyx_XGOTREF(__pyx_t_12); - /*try:*/ { - - /* "src/gevent/queue.py":622 - * timeout = Timeout._start_new_or_dummy(timeout, Full) - * try: - * if self.getters: # <<<<<<<<<<<<<< - * self._schedule_unlock() - * result = waiter.get() - */ - __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_self->getters); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 622, __pyx_L9_error) - if (__pyx_t_4) { - - /* "src/gevent/queue.py":623 - * try: - * if self.getters: - * self._schedule_unlock() # <<<<<<<<<<<<<< - * result = waiter.get() - * if result is not waiter: - */ - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_6_queue_Channel *)__pyx_v_self->__pyx_vtab)->_schedule_unlock(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 623, __pyx_L9_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":622 - * timeout = Timeout._start_new_or_dummy(timeout, Full) - * try: - * if self.getters: # <<<<<<<<<<<<<< - * self._schedule_unlock() - * result = waiter.get() - */ - } - - /* "src/gevent/queue.py":624 - * if self.getters: - * self._schedule_unlock() - * result = waiter.get() # <<<<<<<<<<<<<< - * if result is not waiter: - * raise InvalidSwitchError("Invalid switch into Channel.put: %r" % (result, )) - */ - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_8__waiter_Waiter *)__pyx_v_waiter->__pyx_vtab)->get(__pyx_v_waiter, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 624, __pyx_L9_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_result = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/queue.py":625 - * self._schedule_unlock() - * result = waiter.get() - * if result is not waiter: # <<<<<<<<<<<<<< - * raise InvalidSwitchError("Invalid switch into Channel.put: %r" % (result, )) - * except: - */ - __pyx_t_4 = (__pyx_v_result != ((PyObject *)__pyx_v_waiter)); - __pyx_t_5 = (__pyx_t_4 != 0); - if (unlikely(__pyx_t_5)) { - - /* "src/gevent/queue.py":626 - * result = waiter.get() - * if result is not waiter: - * raise InvalidSwitchError("Invalid switch into Channel.put: %r" % (result, )) # <<<<<<<<<<<<<< - * except: - * _safe_remove(self.putters, item) - */ - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_InvalidSwitchError); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 626, __pyx_L9_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 626, __pyx_L9_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_INCREF(__pyx_v_result); - __Pyx_GIVEREF(__pyx_v_result); - PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_result); - __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_switch_into_Channel_put, __pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 626, __pyx_L9_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { - __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_6); - if (likely(__pyx_t_9)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); - __Pyx_INCREF(__pyx_t_9); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_6, function); - } - } - if (!__pyx_t_9) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 626, __pyx_L9_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_6)) { - PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_t_2}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 626, __pyx_L9_error) - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { - PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_t_2}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 626, __pyx_L9_error) - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else - #endif - { - __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 626, __pyx_L9_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_9); __pyx_t_9 = NULL; - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 626, __pyx_L9_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - } - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 626, __pyx_L9_error) - - /* "src/gevent/queue.py":625 - * self._schedule_unlock() - * result = waiter.get() - * if result is not waiter: # <<<<<<<<<<<<<< - * raise InvalidSwitchError("Invalid switch into Channel.put: %r" % (result, )) - * except: - */ - } - - /* "src/gevent/queue.py":621 - * self.putters.append(item) - * timeout = Timeout._start_new_or_dummy(timeout, Full) - * try: # <<<<<<<<<<<<<< - * if self.getters: - * self._schedule_unlock() - */ - } - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; - goto __pyx_L14_try_end; - __pyx_L9_error:; - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":627 - * if result is not waiter: - * raise InvalidSwitchError("Invalid switch into Channel.put: %r" % (result, )) - * except: # <<<<<<<<<<<<<< - * _safe_remove(self.putters, item) - * raise - */ - /*except:*/ { - __Pyx_AddTraceback("gevent._queue.Channel.put", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_6, &__pyx_t_3) < 0) __PYX_ERR(0, 627, __pyx_L11_except_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GOTREF(__pyx_t_3); - - /* "src/gevent/queue.py":628 - * raise InvalidSwitchError("Invalid switch into Channel.put: %r" % (result, )) - * except: - * _safe_remove(self.putters, item) # <<<<<<<<<<<<<< - * raise - * finally: - */ - __pyx_t_2 = __pyx_v_self->putters; - __Pyx_INCREF(__pyx_t_2); - __pyx_t_9 = __pyx_f_6gevent_6_queue__safe_remove(__pyx_t_2, __pyx_v_item); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 628, __pyx_L11_except_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - - /* "src/gevent/queue.py":629 - * except: - * _safe_remove(self.putters, item) - * raise # <<<<<<<<<<<<<< - * finally: - * timeout.cancel() - */ - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_6); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_6, __pyx_t_3); - __pyx_t_1 = 0; __pyx_t_6 = 0; __pyx_t_3 = 0; - __PYX_ERR(0, 629, __pyx_L11_except_error) - } - __pyx_L11_except_error:; - - /* "src/gevent/queue.py":621 - * self.putters.append(item) - * timeout = Timeout._start_new_or_dummy(timeout, Full) - * try: # <<<<<<<<<<<<<< - * if self.getters: - * self._schedule_unlock() - */ - __Pyx_XGIVEREF(__pyx_t_10); - __Pyx_XGIVEREF(__pyx_t_11); - __Pyx_XGIVEREF(__pyx_t_12); - __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12); - goto __pyx_L7_error; - __pyx_L14_try_end:; - } - } - - /* "src/gevent/queue.py":631 - * raise - * finally: - * timeout.cancel() # <<<<<<<<<<<<<< - * - * def put_nowait(self, item): - */ - /*finally:*/ { - /*normal exit:*/{ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_timeout, __pyx_n_s_cancel); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 631, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_1 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { - __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); - if (likely(__pyx_t_1)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); - __Pyx_INCREF(__pyx_t_1); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_6, function); - } - } - if (__pyx_t_1) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 631, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 631, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L8; - } - __pyx_L7_error:; - /*exception exit:*/{ - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_10 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17); - if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_12, &__pyx_t_11, &__pyx_t_10) < 0)) __Pyx_ErrFetch(&__pyx_t_12, &__pyx_t_11, &__pyx_t_10); - __Pyx_XGOTREF(__pyx_t_12); - __Pyx_XGOTREF(__pyx_t_11); - __Pyx_XGOTREF(__pyx_t_10); - __Pyx_XGOTREF(__pyx_t_15); - __Pyx_XGOTREF(__pyx_t_16); - __Pyx_XGOTREF(__pyx_t_17); - __pyx_t_8 = __pyx_lineno; __pyx_t_13 = __pyx_clineno; __pyx_t_14 = __pyx_filename; - { - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_timeout, __pyx_n_s_cancel); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 631, __pyx_L20_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_1 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { - __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); - if (likely(__pyx_t_1)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); - __Pyx_INCREF(__pyx_t_1); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_6, function); - } - } - if (__pyx_t_1) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 631, __pyx_L20_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 631, __pyx_L20_error) - } - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_15); - __Pyx_XGIVEREF(__pyx_t_16); - __Pyx_XGIVEREF(__pyx_t_17); - __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17); - } - __Pyx_XGIVEREF(__pyx_t_12); - __Pyx_XGIVEREF(__pyx_t_11); - __Pyx_XGIVEREF(__pyx_t_10); - __Pyx_ErrRestore(__pyx_t_12, __pyx_t_11, __pyx_t_10); - __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_10 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; - __pyx_lineno = __pyx_t_8; __pyx_clineno = __pyx_t_13; __pyx_filename = __pyx_t_14; - goto __pyx_L1_error; - __pyx_L20_error:; - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_15); - __Pyx_XGIVEREF(__pyx_t_16); - __Pyx_XGIVEREF(__pyx_t_17); - __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17); - } - __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; - __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; - goto __pyx_L1_error; - } - __pyx_L8:; - } - - /* "src/gevent/queue.py":606 - * return True - * - * def put(self, item, block=True, timeout=None): # <<<<<<<<<<<<<< - * if self.hub is getcurrent(): - * if self.getters: - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_9); - __Pyx_AddTraceback("gevent._queue.Channel.put", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_getter); - __Pyx_XDECREF((PyObject *)__pyx_v_waiter); - __Pyx_XDECREF(__pyx_v_result); - __Pyx_XDECREF(__pyx_v_item); - __Pyx_XDECREF(__pyx_v_timeout); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":633 - * timeout.cancel() - * - * def put_nowait(self, item): # <<<<<<<<<<<<<< - * self.put(item, False) - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_7Channel_17put_nowait(PyObject *__pyx_v_self, PyObject *__pyx_v_item); /*proto*/ -static char __pyx_doc_6gevent_6_queue_7Channel_16put_nowait[] = "Channel.put_nowait(self, item)"; -static PyMethodDef __pyx_mdef_6gevent_6_queue_7Channel_17put_nowait = {"put_nowait", (PyCFunction)__pyx_pw_6gevent_6_queue_7Channel_17put_nowait, METH_O, __pyx_doc_6gevent_6_queue_7Channel_16put_nowait}; -static PyObject *__pyx_pw_6gevent_6_queue_7Channel_17put_nowait(PyObject *__pyx_v_self, PyObject *__pyx_v_item) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("put_nowait (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_7Channel_16put_nowait(((struct __pyx_obj_6gevent_6_queue_Channel *)__pyx_v_self), ((PyObject *)__pyx_v_item)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_7Channel_16put_nowait(struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self, PyObject *__pyx_v_item) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - __Pyx_RefNannySetupContext("put_nowait", 0); - - /* "src/gevent/queue.py":634 - * - * def put_nowait(self, item): - * self.put(item, False) # <<<<<<<<<<<<<< - * - * def get(self, block=True, timeout=None): - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_put_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 634, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - __pyx_t_4 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_4 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_item, Py_False}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 634, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_item, Py_False}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 634, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 634, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (__pyx_t_3) { - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; - } - __Pyx_INCREF(__pyx_v_item); - __Pyx_GIVEREF(__pyx_v_item); - PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_item); - __Pyx_INCREF(Py_False); - __Pyx_GIVEREF(Py_False); - PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, Py_False); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 634, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":633 - * timeout.cancel() - * - * def put_nowait(self, item): # <<<<<<<<<<<<<< - * self.put(item, False) - * - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent._queue.Channel.put_nowait", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":636 - * self.put(item, False) - * - * def get(self, block=True, timeout=None): # <<<<<<<<<<<<<< - * if self.hub is getcurrent(): - * if self.putters: - */ - -static PyObject *__pyx_pw_6gevent_6_queue_7Channel_19get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_f_6gevent_6_queue_7Channel_get(struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_6_queue_7Channel_get *__pyx_optional_args) { - PyObject *__pyx_v_block = ((PyObject *)Py_True); - PyObject *__pyx_v_timeout = ((PyObject *)Py_None); - PyObject *__pyx_v_item = NULL; - PyObject *__pyx_v_putter = NULL; - struct __pyx_obj_6gevent_8__waiter_Waiter *__pyx_v_waiter = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - int __pyx_t_7; - int __pyx_t_8; - PyObject *(*__pyx_t_9)(PyObject *); - PyObject *__pyx_t_10 = NULL; - PyObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; - int __pyx_t_13; - PyObject *__pyx_t_14 = NULL; - PyObject *__pyx_t_15 = NULL; - int __pyx_t_16; - char const *__pyx_t_17; - PyObject *__pyx_t_18 = NULL; - PyObject *__pyx_t_19 = NULL; - PyObject *__pyx_t_20 = NULL; - __Pyx_RefNannySetupContext("get", 0); - if (__pyx_optional_args) { - if (__pyx_optional_args->__pyx_n > 0) { - __pyx_v_block = __pyx_optional_args->block; - if (__pyx_optional_args->__pyx_n > 1) { - __pyx_v_timeout = __pyx_optional_args->timeout; - } - } - } - __Pyx_INCREF(__pyx_v_timeout); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 636, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_6_queue_7Channel_19get)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - __pyx_t_5 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_5 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_block, __pyx_v_timeout}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 636, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_block, __pyx_v_timeout}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 636, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 636, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (__pyx_t_4) { - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; - } - __Pyx_INCREF(__pyx_v_block); - __Pyx_GIVEREF(__pyx_v_block); - PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_block); - __Pyx_INCREF(__pyx_v_timeout); - __Pyx_GIVEREF(__pyx_v_timeout); - PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_timeout); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 636, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/queue.py":637 - * - * def get(self, block=True, timeout=None): - * if self.hub is getcurrent(): # <<<<<<<<<<<<<< - * if self.putters: - * item, putter = self.putters.popleft() - */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_getcurrent); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 637, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 637, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 637, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_7 = (__pyx_v_self->hub == __pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_8 = (__pyx_t_7 != 0); - if (__pyx_t_8) { - - /* "src/gevent/queue.py":638 - * def get(self, block=True, timeout=None): - * if self.hub is getcurrent(): - * if self.putters: # <<<<<<<<<<<<<< - * item, putter = self.putters.popleft() - * self.hub.loop.run_callback(putter.switch, putter) - */ - __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_self->putters); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 638, __pyx_L1_error) - if (__pyx_t_8) { - - /* "src/gevent/queue.py":639 - * if self.hub is getcurrent(): - * if self.putters: - * item, putter = self.putters.popleft() # <<<<<<<<<<<<<< - * self.hub.loop.run_callback(putter.switch, putter) - * return item - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->putters, __pyx_n_s_popleft); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 639, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 639, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 639, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { - PyObject* sequence = __pyx_t_1; - Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); - if (unlikely(size != 2)) { - if (size > 2) __Pyx_RaiseTooManyValuesError(2); - else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 639, __pyx_L1_error) - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - if (likely(PyTuple_CheckExact(sequence))) { - __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); - __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); - } else { - __pyx_t_2 = PyList_GET_ITEM(sequence, 0); - __pyx_t_3 = PyList_GET_ITEM(sequence, 1); - } - __Pyx_INCREF(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - #else - __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 639, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 639, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - #endif - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else { - Py_ssize_t index = -1; - __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 639, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_9 = Py_TYPE(__pyx_t_6)->tp_iternext; - index = 0; __pyx_t_2 = __pyx_t_9(__pyx_t_6); if (unlikely(!__pyx_t_2)) goto __pyx_L5_unpacking_failed; - __Pyx_GOTREF(__pyx_t_2); - index = 1; __pyx_t_3 = __pyx_t_9(__pyx_t_6); if (unlikely(!__pyx_t_3)) goto __pyx_L5_unpacking_failed; - __Pyx_GOTREF(__pyx_t_3); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_6), 2) < 0) __PYX_ERR(0, 639, __pyx_L1_error) - __pyx_t_9 = NULL; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - goto __pyx_L6_unpacking_done; - __pyx_L5_unpacking_failed:; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_9 = NULL; - if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 639, __pyx_L1_error) - __pyx_L6_unpacking_done:; - } - __pyx_v_item = __pyx_t_2; - __pyx_t_2 = 0; - __pyx_v_putter = __pyx_t_3; - __pyx_t_3 = 0; - - /* "src/gevent/queue.py":640 - * if self.putters: - * item, putter = self.putters.popleft() - * self.hub.loop.run_callback(putter.switch, putter) # <<<<<<<<<<<<<< - * return item - * - */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->hub, __pyx_n_s_loop); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 640, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_run_callback); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 640, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_putter, __pyx_n_s_switch); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 640, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = NULL; - __pyx_t_5 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_5 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_3, __pyx_v_putter}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 640, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_3, __pyx_v_putter}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 640, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - { - __pyx_t_4 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 640, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - if (__pyx_t_6) { - __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL; - } - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_5, __pyx_t_3); - __Pyx_INCREF(__pyx_v_putter); - __Pyx_GIVEREF(__pyx_v_putter); - PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_5, __pyx_v_putter); - __pyx_t_3 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 640, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":641 - * item, putter = self.putters.popleft() - * self.hub.loop.run_callback(putter.switch, putter) - * return item # <<<<<<<<<<<<<< - * - * if not block: - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_item); - __pyx_r = __pyx_v_item; - goto __pyx_L0; - - /* "src/gevent/queue.py":638 - * def get(self, block=True, timeout=None): - * if self.hub is getcurrent(): - * if self.putters: # <<<<<<<<<<<<<< - * item, putter = self.putters.popleft() - * self.hub.loop.run_callback(putter.switch, putter) - */ - } - - /* "src/gevent/queue.py":637 - * - * def get(self, block=True, timeout=None): - * if self.hub is getcurrent(): # <<<<<<<<<<<<<< - * if self.putters: - * item, putter = self.putters.popleft() - */ - } - - /* "src/gevent/queue.py":643 - * return item - * - * if not block: # <<<<<<<<<<<<<< - * timeout = 0 - * - */ - __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_block); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 643, __pyx_L1_error) - __pyx_t_7 = ((!__pyx_t_8) != 0); - if (__pyx_t_7) { - - /* "src/gevent/queue.py":644 - * - * if not block: - * timeout = 0 # <<<<<<<<<<<<<< - * - * waiter = Waiter() # pylint:disable=undefined-variable - */ - __Pyx_INCREF(__pyx_int_0); - __Pyx_DECREF_SET(__pyx_v_timeout, __pyx_int_0); - - /* "src/gevent/queue.py":643 - * return item - * - * if not block: # <<<<<<<<<<<<<< - * timeout = 0 - * - */ - } - - /* "src/gevent/queue.py":646 - * timeout = 0 - * - * waiter = Waiter() # pylint:disable=undefined-variable # <<<<<<<<<<<<<< - * timeout = Timeout._start_new_or_dummy(timeout, Empty) - * try: - */ - __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_6gevent_8__waiter_Waiter)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 646, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_waiter = ((struct __pyx_obj_6gevent_8__waiter_Waiter *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/queue.py":647 - * - * waiter = Waiter() # pylint:disable=undefined-variable - * timeout = Timeout._start_new_or_dummy(timeout, Empty) # <<<<<<<<<<<<<< - * try: - * self.getters.append(waiter) - */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_Timeout); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 647, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_start_new_or_dummy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 647, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_Empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 647, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - __pyx_t_5 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - __pyx_t_5 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_timeout, __pyx_t_2}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 647, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_timeout, __pyx_t_2}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 647, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else - #endif - { - __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 647, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (__pyx_t_3) { - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL; - } - __Pyx_INCREF(__pyx_v_timeout); - __Pyx_GIVEREF(__pyx_v_timeout); - PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_timeout); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 647, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF_SET(__pyx_v_timeout, __pyx_t_1); - __pyx_t_1 = 0; - - /* "src/gevent/queue.py":648 - * waiter = Waiter() # pylint:disable=undefined-variable - * timeout = Timeout._start_new_or_dummy(timeout, Empty) - * try: # <<<<<<<<<<<<<< - * self.getters.append(waiter) - * if self.putters: - */ - /*try:*/ { - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); - __Pyx_XGOTREF(__pyx_t_10); - __Pyx_XGOTREF(__pyx_t_11); - __Pyx_XGOTREF(__pyx_t_12); - /*try:*/ { - - /* "src/gevent/queue.py":649 - * timeout = Timeout._start_new_or_dummy(timeout, Empty) - * try: - * self.getters.append(waiter) # <<<<<<<<<<<<<< - * if self.putters: - * self._schedule_unlock() - */ - __pyx_t_13 = __Pyx_PyObject_Append(__pyx_v_self->getters, ((PyObject *)__pyx_v_waiter)); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(0, 649, __pyx_L11_error) - - /* "src/gevent/queue.py":650 - * try: - * self.getters.append(waiter) - * if self.putters: # <<<<<<<<<<<<<< - * self._schedule_unlock() - * return waiter.get() - */ - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_self->putters); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 650, __pyx_L11_error) - if (__pyx_t_7) { - - /* "src/gevent/queue.py":651 - * self.getters.append(waiter) - * if self.putters: - * self._schedule_unlock() # <<<<<<<<<<<<<< - * return waiter.get() - * except: - */ - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_6_queue_Channel *)__pyx_v_self->__pyx_vtab)->_schedule_unlock(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 651, __pyx_L11_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":650 - * try: - * self.getters.append(waiter) - * if self.putters: # <<<<<<<<<<<<<< - * self._schedule_unlock() - * return waiter.get() - */ - } - - /* "src/gevent/queue.py":652 - * if self.putters: - * self._schedule_unlock() - * return waiter.get() # <<<<<<<<<<<<<< - * except: - * self.getters.remove(waiter) - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_8__waiter_Waiter *)__pyx_v_waiter->__pyx_vtab)->get(__pyx_v_waiter, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 652, __pyx_L11_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L15_try_return; - - /* "src/gevent/queue.py":648 - * waiter = Waiter() # pylint:disable=undefined-variable - * timeout = Timeout._start_new_or_dummy(timeout, Empty) - * try: # <<<<<<<<<<<<<< - * self.getters.append(waiter) - * if self.putters: - */ - } - __pyx_L11_error:; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":653 - * self._schedule_unlock() - * return waiter.get() - * except: # <<<<<<<<<<<<<< - * self.getters.remove(waiter) - * raise - */ - /*except:*/ { - __Pyx_AddTraceback("gevent._queue.Channel.get", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_6) < 0) __PYX_ERR(0, 653, __pyx_L13_except_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GOTREF(__pyx_t_6); - - /* "src/gevent/queue.py":654 - * return waiter.get() - * except: - * self.getters.remove(waiter) # <<<<<<<<<<<<<< - * raise - * finally: - */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->getters, __pyx_n_s_remove); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 654, __pyx_L13_except_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_14 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_14)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_14); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (!__pyx_t_14) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_waiter)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 654, __pyx_L13_except_error) - __Pyx_GOTREF(__pyx_t_2); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_14, ((PyObject *)__pyx_v_waiter)}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 654, __pyx_L13_except_error) - __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_14, ((PyObject *)__pyx_v_waiter)}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 654, __pyx_L13_except_error) - __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 654, __pyx_L13_except_error) - __Pyx_GOTREF(__pyx_t_15); - __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_14); __pyx_t_14 = NULL; - __Pyx_INCREF(((PyObject *)__pyx_v_waiter)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_waiter)); - PyTuple_SET_ITEM(__pyx_t_15, 0+1, ((PyObject *)__pyx_v_waiter)); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_15, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 654, __pyx_L13_except_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; - } - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/queue.py":655 - * except: - * self.getters.remove(waiter) - * raise # <<<<<<<<<<<<<< - * finally: - * timeout.close() - */ - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_4); - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_4, __pyx_t_6); - __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_6 = 0; - __PYX_ERR(0, 655, __pyx_L13_except_error) - } - __pyx_L13_except_error:; - - /* "src/gevent/queue.py":648 - * waiter = Waiter() # pylint:disable=undefined-variable - * timeout = Timeout._start_new_or_dummy(timeout, Empty) - * try: # <<<<<<<<<<<<<< - * self.getters.append(waiter) - * if self.putters: - */ - __Pyx_XGIVEREF(__pyx_t_10); - __Pyx_XGIVEREF(__pyx_t_11); - __Pyx_XGIVEREF(__pyx_t_12); - __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12); - goto __pyx_L9_error; - __pyx_L15_try_return:; - __Pyx_XGIVEREF(__pyx_t_10); - __Pyx_XGIVEREF(__pyx_t_11); - __Pyx_XGIVEREF(__pyx_t_12); - __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12); - goto __pyx_L8_return; - } - } - - /* "src/gevent/queue.py":657 - * raise - * finally: - * timeout.close() # <<<<<<<<<<<<<< - * - * def get_nowait(self): - */ - /*finally:*/ { - __pyx_L9_error:; - /*exception exit:*/{ - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_10 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; - __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; - __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20); - if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_12, &__pyx_t_11, &__pyx_t_10) < 0)) __Pyx_ErrFetch(&__pyx_t_12, &__pyx_t_11, &__pyx_t_10); - __Pyx_XGOTREF(__pyx_t_12); - __Pyx_XGOTREF(__pyx_t_11); - __Pyx_XGOTREF(__pyx_t_10); - __Pyx_XGOTREF(__pyx_t_18); - __Pyx_XGOTREF(__pyx_t_19); - __Pyx_XGOTREF(__pyx_t_20); - __pyx_t_5 = __pyx_lineno; __pyx_t_16 = __pyx_clineno; __pyx_t_17 = __pyx_filename; - { - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_timeout, __pyx_n_s_close); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 657, __pyx_L21_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_1)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_1); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (__pyx_t_1) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 657, __pyx_L21_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else { - __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 657, __pyx_L21_error) - } - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_18); - __Pyx_XGIVEREF(__pyx_t_19); - __Pyx_XGIVEREF(__pyx_t_20); - __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20); - } - __Pyx_XGIVEREF(__pyx_t_12); - __Pyx_XGIVEREF(__pyx_t_11); - __Pyx_XGIVEREF(__pyx_t_10); - __Pyx_ErrRestore(__pyx_t_12, __pyx_t_11, __pyx_t_10); - __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_10 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; - __pyx_lineno = __pyx_t_5; __pyx_clineno = __pyx_t_16; __pyx_filename = __pyx_t_17; - goto __pyx_L1_error; - __pyx_L21_error:; - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_18); - __Pyx_XGIVEREF(__pyx_t_19); - __Pyx_XGIVEREF(__pyx_t_20); - __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20); - } - __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; - __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; - goto __pyx_L1_error; - } - __pyx_L8_return: { - __pyx_t_20 = __pyx_r; - __pyx_r = 0; - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_timeout, __pyx_n_s_close); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 657, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_1)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_1); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (__pyx_t_1) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 657, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else { - __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 657, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_r = __pyx_t_20; - __pyx_t_20 = 0; - goto __pyx_L0; - } - } - - /* "src/gevent/queue.py":636 - * self.put(item, False) - * - * def get(self, block=True, timeout=None): # <<<<<<<<<<<<<< - * if self.hub is getcurrent(): - * if self.putters: - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_14); - __Pyx_XDECREF(__pyx_t_15); - __Pyx_AddTraceback("gevent._queue.Channel.get", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_item); - __Pyx_XDECREF(__pyx_v_putter); - __Pyx_XDECREF((PyObject *)__pyx_v_waiter); - __Pyx_XDECREF(__pyx_v_timeout); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_7Channel_19get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6gevent_6_queue_7Channel_18get[] = "Channel.get(self, block=True, timeout=None)"; -static PyMethodDef __pyx_mdef_6gevent_6_queue_7Channel_19get = {"get", (PyCFunction)__pyx_pw_6gevent_6_queue_7Channel_19get, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_6_queue_7Channel_18get}; -static PyObject *__pyx_pw_6gevent_6_queue_7Channel_19get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_block = 0; - PyObject *__pyx_v_timeout = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("get (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_block,&__pyx_n_s_timeout,0}; - PyObject* values[2] = {0,0}; - values[0] = ((PyObject *)Py_True); - values[1] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_block); - if (value) { values[0] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeout); - if (value) { values[1] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get") < 0)) __PYX_ERR(0, 636, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_block = values[0]; - __pyx_v_timeout = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 636, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent._queue.Channel.get", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_6_queue_7Channel_18get(((struct __pyx_obj_6gevent_6_queue_Channel *)__pyx_v_self), __pyx_v_block, __pyx_v_timeout); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_7Channel_18get(struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self, PyObject *__pyx_v_block, PyObject *__pyx_v_timeout) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - struct __pyx_opt_args_6gevent_6_queue_7Channel_get __pyx_t_2; - __Pyx_RefNannySetupContext("get", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_2.__pyx_n = 2; - __pyx_t_2.block = __pyx_v_block; - __pyx_t_2.timeout = __pyx_v_timeout; - __pyx_t_1 = __pyx_vtabptr_6gevent_6_queue_Channel->get(__pyx_v_self, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 636, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._queue.Channel.get", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":659 - * timeout.close() - * - * def get_nowait(self): # <<<<<<<<<<<<<< - * return self.get(False) - * - */ - -static PyObject *__pyx_pw_6gevent_6_queue_7Channel_21get_nowait(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_f_6gevent_6_queue_7Channel_get_nowait(struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self, int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - struct __pyx_opt_args_6gevent_6_queue_7Channel_get __pyx_t_5; - __Pyx_RefNannySetupContext("get_nowait", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_nowait); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 659, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_6_queue_7Channel_21get_nowait)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 659, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 659, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "src/gevent/queue.py":660 - * - * def get_nowait(self): - * return self.get(False) # <<<<<<<<<<<<<< - * - * def _unlock(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_5.__pyx_n = 1; - __pyx_t_5.block = Py_False; - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_6_queue_Channel *)__pyx_v_self->__pyx_vtab)->get(__pyx_v_self, 0, &__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 660, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "src/gevent/queue.py":659 - * timeout.close() - * - * def get_nowait(self): # <<<<<<<<<<<<<< - * return self.get(False) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent._queue.Channel.get_nowait", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_7Channel_21get_nowait(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_queue_7Channel_20get_nowait[] = "Channel.get_nowait(self)"; -static PyMethodDef __pyx_mdef_6gevent_6_queue_7Channel_21get_nowait = {"get_nowait", (PyCFunction)__pyx_pw_6gevent_6_queue_7Channel_21get_nowait, METH_NOARGS, __pyx_doc_6gevent_6_queue_7Channel_20get_nowait}; -static PyObject *__pyx_pw_6gevent_6_queue_7Channel_21get_nowait(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("get_nowait (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_7Channel_20get_nowait(((struct __pyx_obj_6gevent_6_queue_Channel *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_7Channel_20get_nowait(struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("get_nowait", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_6_queue_7Channel_get_nowait(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 659, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._queue.Channel.get_nowait", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":662 - * return self.get(False) - * - * def _unlock(self): # <<<<<<<<<<<<<< - * while self.putters and self.getters: - * getter = self.getters.popleft() - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_7Channel_23_unlock(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static char __pyx_doc_6gevent_6_queue_7Channel_22_unlock[] = "Channel._unlock(self)"; -static PyMethodDef __pyx_mdef_6gevent_6_queue_7Channel_23_unlock = {"_unlock", (PyCFunction)__pyx_pw_6gevent_6_queue_7Channel_23_unlock, METH_NOARGS, __pyx_doc_6gevent_6_queue_7Channel_22_unlock}; -static PyObject *__pyx_pw_6gevent_6_queue_7Channel_23_unlock(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_unlock (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_7Channel_22_unlock(((struct __pyx_obj_6gevent_6_queue_Channel *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_7Channel_22_unlock(struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self) { - PyObject *__pyx_v_getter = NULL; - PyObject *__pyx_v_item = NULL; - PyObject *__pyx_v_putter = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *(*__pyx_t_7)(PyObject *); - __Pyx_RefNannySetupContext("_unlock", 0); - - /* "src/gevent/queue.py":663 - * - * def _unlock(self): - * while self.putters and self.getters: # <<<<<<<<<<<<<< - * getter = self.getters.popleft() - * item, putter = self.putters.popleft() - */ - while (1) { - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->putters); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 663, __pyx_L1_error) - if (__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L5_bool_binop_done; - } - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->getters); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 663, __pyx_L1_error) - __pyx_t_1 = __pyx_t_2; - __pyx_L5_bool_binop_done:; - if (!__pyx_t_1) break; - - /* "src/gevent/queue.py":664 - * def _unlock(self): - * while self.putters and self.getters: - * getter = self.getters.popleft() # <<<<<<<<<<<<<< - * item, putter = self.putters.popleft() - * getter.switch(item) - */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->getters, __pyx_n_s_popleft); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 664, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (__pyx_t_5) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 664, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 664, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF_SET(__pyx_v_getter, __pyx_t_3); - __pyx_t_3 = 0; - - /* "src/gevent/queue.py":665 - * while self.putters and self.getters: - * getter = self.getters.popleft() - * item, putter = self.putters.popleft() # <<<<<<<<<<<<<< - * getter.switch(item) - * putter.switch(putter) - */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->putters, __pyx_n_s_popleft); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 665, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (__pyx_t_5) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 665, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 665, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { - PyObject* sequence = __pyx_t_3; - Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); - if (unlikely(size != 2)) { - if (size > 2) __Pyx_RaiseTooManyValuesError(2); - else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 665, __pyx_L1_error) - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - if (likely(PyTuple_CheckExact(sequence))) { - __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); - __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); - } else { - __pyx_t_4 = PyList_GET_ITEM(sequence, 0); - __pyx_t_5 = PyList_GET_ITEM(sequence, 1); - } - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - #else - __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 665, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 665, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - #endif - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - Py_ssize_t index = -1; - __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 665, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext; - index = 0; __pyx_t_4 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L7_unpacking_failed; - __Pyx_GOTREF(__pyx_t_4); - index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L7_unpacking_failed; - __Pyx_GOTREF(__pyx_t_5); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) __PYX_ERR(0, 665, __pyx_L1_error) - __pyx_t_7 = NULL; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - goto __pyx_L8_unpacking_done; - __pyx_L7_unpacking_failed:; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_7 = NULL; - if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 665, __pyx_L1_error) - __pyx_L8_unpacking_done:; - } - __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_4); - __pyx_t_4 = 0; - __Pyx_XDECREF_SET(__pyx_v_putter, __pyx_t_5); - __pyx_t_5 = 0; - - /* "src/gevent/queue.py":666 - * getter = self.getters.popleft() - * item, putter = self.putters.popleft() - * getter.switch(item) # <<<<<<<<<<<<<< - * putter.switch(putter) - * - */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_getter, __pyx_n_s_switch); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 666, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - } - } - if (!__pyx_t_4) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_item); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 666, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_item}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 666, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_3); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_item}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 666, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_3); - } else - #endif - { - __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 666, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_INCREF(__pyx_v_item); - __Pyx_GIVEREF(__pyx_v_item); - PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_item); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 666, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - } - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "src/gevent/queue.py":667 - * item, putter = self.putters.popleft() - * getter.switch(item) - * putter.switch(putter) # <<<<<<<<<<<<<< - * - * def _schedule_unlock(self): - */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_putter, __pyx_n_s_switch); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 667, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - } - } - if (!__pyx_t_6) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_putter); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 667, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v_putter}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 667, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_3); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v_putter}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 667, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_3); - } else - #endif - { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 667, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL; - __Pyx_INCREF(__pyx_v_putter); - __Pyx_GIVEREF(__pyx_v_putter); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_putter); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 667, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - } - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - - /* "src/gevent/queue.py":662 - * return self.get(False) - * - * def _unlock(self): # <<<<<<<<<<<<<< - * while self.putters and self.getters: - * getter = self.getters.popleft() - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_AddTraceback("gevent._queue.Channel._unlock", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_getter); - __Pyx_XDECREF(__pyx_v_item); - __Pyx_XDECREF(__pyx_v_putter); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":669 - * putter.switch(putter) - * - * def _schedule_unlock(self): # <<<<<<<<<<<<<< - * if not self._event_unlock: - * self._event_unlock = self.hub.loop.run_callback(self._unlock) - */ - -static PyObject *__pyx_f_6gevent_6_queue_7Channel__schedule_unlock(struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - __Pyx_RefNannySetupContext("_schedule_unlock", 0); - - /* "src/gevent/queue.py":670 - * - * def _schedule_unlock(self): - * if not self._event_unlock: # <<<<<<<<<<<<<< - * self._event_unlock = self.hub.loop.run_callback(self._unlock) - * - */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->_event_unlock); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 670, __pyx_L1_error) - __pyx_t_2 = ((!__pyx_t_1) != 0); - if (__pyx_t_2) { - - /* "src/gevent/queue.py":671 - * def _schedule_unlock(self): - * if not self._event_unlock: - * self._event_unlock = self.hub.loop.run_callback(self._unlock) # <<<<<<<<<<<<<< - * - * def __iter__(self): - */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->hub, __pyx_n_s_loop); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 671, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_run_callback); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 671, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_unlock); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 671, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - } - } - if (!__pyx_t_6) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 671, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_3); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_4}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 671, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_4}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 671, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else - #endif - { - __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 671, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL; - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_4); - __pyx_t_4 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 671, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - } - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GIVEREF(__pyx_t_3); - __Pyx_GOTREF(__pyx_v_self->_event_unlock); - __Pyx_DECREF(__pyx_v_self->_event_unlock); - __pyx_v_self->_event_unlock = __pyx_t_3; - __pyx_t_3 = 0; - - /* "src/gevent/queue.py":670 - * - * def _schedule_unlock(self): - * if not self._event_unlock: # <<<<<<<<<<<<<< - * self._event_unlock = self.hub.loop.run_callback(self._unlock) - * - */ - } - - /* "src/gevent/queue.py":669 - * putter.switch(putter) - * - * def _schedule_unlock(self): # <<<<<<<<<<<<<< - * if not self._event_unlock: - * self._event_unlock = self.hub.loop.run_callback(self._unlock) - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("gevent._queue.Channel._schedule_unlock", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":673 - * self._event_unlock = self.hub.loop.run_callback(self._unlock) - * - * def __iter__(self): # <<<<<<<<<<<<<< - * return self - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_7Channel_25__iter__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_6_queue_7Channel_25__iter__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_7Channel_24__iter__(((struct __pyx_obj_6gevent_6_queue_Channel *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_7Channel_24__iter__(struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__iter__", 0); - - /* "src/gevent/queue.py":674 - * - * def __iter__(self): - * return self # <<<<<<<<<<<<<< - * - * def __next__(self): - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __pyx_r = ((PyObject *)__pyx_v_self); - goto __pyx_L0; - - /* "src/gevent/queue.py":673 - * self._event_unlock = self.hub.loop.run_callback(self._unlock) - * - * def __iter__(self): # <<<<<<<<<<<<<< - * return self - * - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "src/gevent/queue.py":676 - * return self - * - * def __next__(self): # <<<<<<<<<<<<<< - * result = self.get() - * if result is StopIteration: - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_7Channel_27__next__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_6_queue_7Channel_27__next__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__next__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_7Channel_26__next__(((struct __pyx_obj_6gevent_6_queue_Channel *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_7Channel_26__next__(struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self) { - PyObject *__pyx_v_result = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - int __pyx_t_3; - __Pyx_RefNannySetupContext("__next__", 0); - - /* "src/gevent/queue.py":677 - * - * def __next__(self): - * result = self.get() # <<<<<<<<<<<<<< - * if result is StopIteration: - * raise result - */ - __pyx_t_1 = ((struct __pyx_vtabstruct_6gevent_6_queue_Channel *)__pyx_v_self->__pyx_vtab)->get(__pyx_v_self, 0, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 677, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_result = __pyx_t_1; - __pyx_t_1 = 0; - - /* "src/gevent/queue.py":678 - * def __next__(self): - * result = self.get() - * if result is StopIteration: # <<<<<<<<<<<<<< - * raise result - * return result - */ - __pyx_t_2 = (__pyx_v_result == __pyx_builtin_StopIteration); - __pyx_t_3 = (__pyx_t_2 != 0); - if (unlikely(__pyx_t_3)) { - - /* "src/gevent/queue.py":679 - * result = self.get() - * if result is StopIteration: - * raise result # <<<<<<<<<<<<<< - * return result - * - */ - __Pyx_Raise(__pyx_v_result, 0, 0, 0); - __PYX_ERR(0, 679, __pyx_L1_error) - - /* "src/gevent/queue.py":678 - * def __next__(self): - * result = self.get() - * if result is StopIteration: # <<<<<<<<<<<<<< - * raise result - * return result - */ - } - - /* "src/gevent/queue.py":680 - * if result is StopIteration: - * raise result - * return result # <<<<<<<<<<<<<< - * - * next = __next__ # Py2 - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_result); - __pyx_r = __pyx_v_result; - goto __pyx_L0; - - /* "src/gevent/queue.py":676 - * return self - * - * def __next__(self): # <<<<<<<<<<<<<< - * result = self.get() - * if result is StopIteration: - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._queue.Channel.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_result); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/_queue.pxd":66 - * cdef class Channel: - * cdef __weakref__ - * cdef readonly getters # <<<<<<<<<<<<<< - * cdef readonly putters - * cdef readonly hub - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_7Channel_7getters_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_6_queue_7Channel_7getters_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_7Channel_7getters___get__(((struct __pyx_obj_6gevent_6_queue_Channel *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_7Channel_7getters___get__(struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->getters); - __pyx_r = __pyx_v_self->getters; - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/_queue.pxd":67 - * cdef __weakref__ - * cdef readonly getters - * cdef readonly putters # <<<<<<<<<<<<<< - * cdef readonly hub - * cdef _event_unlock - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_7Channel_7putters_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_6_queue_7Channel_7putters_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_7Channel_7putters___get__(((struct __pyx_obj_6gevent_6_queue_Channel *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_7Channel_7putters___get__(struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->putters); - __pyx_r = __pyx_v_self->putters; - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/_queue.pxd":68 - * cdef readonly getters - * cdef readonly putters - * cdef readonly hub # <<<<<<<<<<<<<< - * cdef _event_unlock - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_6_queue_7Channel_3hub_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_6_queue_7Channel_3hub_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_6_queue_7Channel_3hub___get__(((struct __pyx_obj_6gevent_6_queue_Channel *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_6_queue_7Channel_3hub___get__(struct __pyx_obj_6gevent_6_queue_Channel *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->hub); - __pyx_r = __pyx_v_self->hub; - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__greenlet_primitives.pxd":23 - * - * @cython.final - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - -static CYTHON_INLINE PyGreenlet *__pyx_f_6gevent_21__greenlet_primitives_getcurrent(void) { - PyGreenlet *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("getcurrent", 0); - - /* "gevent/__greenlet_primitives.pxd":24 - * @cython.final - * cdef inline greenlet getcurrent(): - * return PyGreenlet_GetCurrent() # <<<<<<<<<<<<<< - * - * cdef bint _greenlet_imported - */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __pyx_t_1 = ((PyObject *)PyGreenlet_GetCurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 24, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = ((PyGreenlet *)__pyx_t_1); - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "gevent/__greenlet_primitives.pxd":23 - * - * @cython.final - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__greenlet_primitives.getcurrent", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__greenlet_primitives.pxd":28 - * cdef bint _greenlet_imported - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - -static CYTHON_INLINE void __pyx_f_6gevent_21__greenlet_primitives_greenlet_init(void) { - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("greenlet_init", 0); - - /* "gevent/__greenlet_primitives.pxd":30 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - __pyx_t_1 = ((!(__pyx_v_6gevent_21__greenlet_primitives__greenlet_imported != 0)) != 0); - if (__pyx_t_1) { - - /* "gevent/__greenlet_primitives.pxd":31 - * global _greenlet_imported - * if not _greenlet_imported: - * PyGreenlet_Import() # <<<<<<<<<<<<<< - * _greenlet_imported = True - * - */ - PyGreenlet_Import(); - - /* "gevent/__greenlet_primitives.pxd":32 - * if not _greenlet_imported: - * PyGreenlet_Import() - * _greenlet_imported = True # <<<<<<<<<<<<<< - * - * cdef inline object _greenlet_switch(greenlet self): - */ - __pyx_v_6gevent_21__greenlet_primitives__greenlet_imported = 1; - - /* "gevent/__greenlet_primitives.pxd":30 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - } - - /* "gevent/__greenlet_primitives.pxd":28 - * cdef bint _greenlet_imported - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -/* "gevent/__greenlet_primitives.pxd":34 - * _greenlet_imported = True - * - * cdef inline object _greenlet_switch(greenlet self): # <<<<<<<<<<<<<< - * return PyGreenlet_Switch(self, NULL, NULL) - * - */ - -static CYTHON_INLINE PyObject *__pyx_f_6gevent_21__greenlet_primitives__greenlet_switch(PyGreenlet *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_greenlet_switch", 0); - - /* "gevent/__greenlet_primitives.pxd":35 - * - * cdef inline object _greenlet_switch(greenlet self): - * return PyGreenlet_Switch(self, NULL, NULL) # <<<<<<<<<<<<<< - * - * cdef class TrackedRawGreenlet(greenlet): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyGreenlet_Switch(__pyx_v_self, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 35, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "gevent/__greenlet_primitives.pxd":34 - * _greenlet_imported = True - * - * cdef inline object _greenlet_switch(greenlet self): # <<<<<<<<<<<<<< - * return PyGreenlet_Switch(self, NULL, NULL) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__greenlet_primitives._greenlet_switch", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__waiter.pxd":24 - * void PyGreenlet_Import() - * - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - -static CYTHON_INLINE PyGreenlet *__pyx_f_6gevent_8__waiter_getcurrent(void) { - PyGreenlet *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("getcurrent", 0); - - /* "gevent/__waiter.pxd":25 - * - * cdef inline greenlet getcurrent(): - * return PyGreenlet_GetCurrent() # <<<<<<<<<<<<<< - * - * cdef inline void greenlet_init(): - */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __pyx_t_1 = ((PyObject *)PyGreenlet_GetCurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 25, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = ((PyGreenlet *)__pyx_t_1); - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "gevent/__waiter.pxd":24 - * void PyGreenlet_Import() - * - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.__waiter.getcurrent", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/__waiter.pxd":27 - * return PyGreenlet_GetCurrent() - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - -static CYTHON_INLINE void __pyx_f_6gevent_8__waiter_greenlet_init(void) { - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("greenlet_init", 0); - - /* "gevent/__waiter.pxd":29 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - __pyx_t_1 = ((!(__pyx_v_6gevent_8__waiter__greenlet_imported != 0)) != 0); - if (__pyx_t_1) { - - /* "gevent/__waiter.pxd":30 - * global _greenlet_imported - * if not _greenlet_imported: - * PyGreenlet_Import() # <<<<<<<<<<<<<< - * _greenlet_imported = True - * - */ - PyGreenlet_Import(); - - /* "gevent/__waiter.pxd":31 - * if not _greenlet_imported: - * PyGreenlet_Import() - * _greenlet_imported = True # <<<<<<<<<<<<<< - * - * cdef class Waiter: - */ - __pyx_v_6gevent_8__waiter__greenlet_imported = 1; - - /* "gevent/__waiter.pxd":29 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - } - - /* "gevent/__waiter.pxd":27 - * return PyGreenlet_GetCurrent() - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -/* "gevent/_event.pxd":27 - * void PyGreenlet_Import() - * - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - -static CYTHON_INLINE PyGreenlet *__pyx_f_6gevent_6_event_getcurrent(void) { - PyGreenlet *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("getcurrent", 0); - - /* "gevent/_event.pxd":28 - * - * cdef inline greenlet getcurrent(): - * return PyGreenlet_GetCurrent() # <<<<<<<<<<<<<< - * - * cdef inline void greenlet_init(): - */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __pyx_t_1 = ((PyObject *)PyGreenlet_GetCurrent()); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 28, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = ((PyGreenlet *)__pyx_t_1); - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "gevent/_event.pxd":27 - * void PyGreenlet_Import() - * - * cdef inline greenlet getcurrent(): # <<<<<<<<<<<<<< - * return PyGreenlet_GetCurrent() - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent._event.getcurrent", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/_event.pxd":30 - * return PyGreenlet_GetCurrent() - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - -static CYTHON_INLINE void __pyx_f_6gevent_6_event_greenlet_init(void) { - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("greenlet_init", 0); - - /* "gevent/_event.pxd":32 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - __pyx_t_1 = ((!(__pyx_v_6gevent_6_event__greenlet_imported != 0)) != 0); - if (__pyx_t_1) { - - /* "gevent/_event.pxd":33 - * global _greenlet_imported - * if not _greenlet_imported: - * PyGreenlet_Import() # <<<<<<<<<<<<<< - * _greenlet_imported = True - * - */ - PyGreenlet_Import(); - - /* "gevent/_event.pxd":34 - * if not _greenlet_imported: - * PyGreenlet_Import() - * _greenlet_imported = True # <<<<<<<<<<<<<< - * - * cdef void _init() - */ - __pyx_v_6gevent_6_event__greenlet_imported = 1; - - /* "gevent/_event.pxd":32 - * cdef inline void greenlet_init(): - * global _greenlet_imported - * if not _greenlet_imported: # <<<<<<<<<<<<<< - * PyGreenlet_Import() - * _greenlet_imported = True - */ - } - - /* "gevent/_event.pxd":30 - * return PyGreenlet_GetCurrent() - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} -static struct __pyx_vtabstruct_6gevent_6_queue_ItemWaiter __pyx_vtable_6gevent_6_queue_ItemWaiter; - -static PyObject *__pyx_tp_new_6gevent_6_queue_ItemWaiter(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_obj_6gevent_6_queue_ItemWaiter *p; - PyObject *o = __pyx_ptype_6gevent_8__waiter_Waiter->tp_new(t, a, k); - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_6_queue_ItemWaiter *)o); - p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6gevent_8__waiter_Waiter*)__pyx_vtabptr_6gevent_6_queue_ItemWaiter; - p->item = Py_None; Py_INCREF(Py_None); - p->queue = Py_None; Py_INCREF(Py_None); - return o; -} - -static void __pyx_tp_dealloc_6gevent_6_queue_ItemWaiter(PyObject *o) { - struct __pyx_obj_6gevent_6_queue_ItemWaiter *p = (struct __pyx_obj_6gevent_6_queue_ItemWaiter *)o; - PyObject_GC_UnTrack(o); - Py_CLEAR(p->item); - Py_CLEAR(p->queue); - PyObject_GC_Track(o); - if (likely(__pyx_ptype_6gevent_8__waiter_Waiter)) __pyx_ptype_6gevent_8__waiter_Waiter->tp_dealloc(o); else __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_6gevent_6_queue_ItemWaiter); -} - -static int __pyx_tp_traverse_6gevent_6_queue_ItemWaiter(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_6gevent_6_queue_ItemWaiter *p = (struct __pyx_obj_6gevent_6_queue_ItemWaiter *)o; - e = ((likely(__pyx_ptype_6gevent_8__waiter_Waiter)) ? ((__pyx_ptype_6gevent_8__waiter_Waiter->tp_traverse) ? __pyx_ptype_6gevent_8__waiter_Waiter->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_6gevent_6_queue_ItemWaiter)); if (e) return e; - if (p->item) { - e = (*v)(p->item, a); if (e) return e; - } - if (p->queue) { - e = (*v)(p->queue, a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_6gevent_6_queue_ItemWaiter(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_6gevent_6_queue_ItemWaiter *p = (struct __pyx_obj_6gevent_6_queue_ItemWaiter *)o; - if (likely(__pyx_ptype_6gevent_8__waiter_Waiter)) { if (__pyx_ptype_6gevent_8__waiter_Waiter->tp_clear) __pyx_ptype_6gevent_8__waiter_Waiter->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_6gevent_6_queue_ItemWaiter); - tmp = ((PyObject*)p->item); - p->item = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->queue); - p->queue = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyObject *__pyx_getprop_6gevent_6_queue_10ItemWaiter_item(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_6_queue_10ItemWaiter_4item_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_6_queue_10ItemWaiter_queue(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_6_queue_10ItemWaiter_5queue_1__get__(o); -} - -static PyMethodDef __pyx_methods_6gevent_6_queue_ItemWaiter[] = { - {"put_and_switch", (PyCFunction)__pyx_pw_6gevent_6_queue_10ItemWaiter_3put_and_switch, METH_NOARGS, __pyx_doc_6gevent_6_queue_10ItemWaiter_2put_and_switch}, - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_6gevent_6_queue_ItemWaiter[] = { - {(char *)"item", __pyx_getprop_6gevent_6_queue_10ItemWaiter_item, 0, (char *)0, 0}, - {(char *)"queue", __pyx_getprop_6gevent_6_queue_10ItemWaiter_queue, 0, (char *)0, 0}, - {0, 0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_6_queue_ItemWaiter = { - PyVarObject_HEAD_INIT(0, 0) - "gevent._queue.ItemWaiter", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_6_queue_ItemWaiter), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_6_queue_ItemWaiter, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "ItemWaiter(item, queue)", /*tp_doc*/ - __pyx_tp_traverse_6gevent_6_queue_ItemWaiter, /*tp_traverse*/ - __pyx_tp_clear_6gevent_6_queue_ItemWaiter, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_6_queue_ItemWaiter, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_6gevent_6_queue_ItemWaiter, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_6_queue_10ItemWaiter_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_6_queue_ItemWaiter, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; -static struct __pyx_vtabstruct_6gevent_6_queue_Queue __pyx_vtable_6gevent_6_queue_Queue; - -static PyObject *__pyx_tp_new_6gevent_6_queue_Queue(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - struct __pyx_obj_6gevent_6_queue_Queue *p; - PyObject *o; - if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { - o = (*t->tp_alloc)(t, 0); - } else { - o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); - } - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_6_queue_Queue *)o); - p->__pyx_vtab = __pyx_vtabptr_6gevent_6_queue_Queue; - p->hub = Py_None; Py_INCREF(Py_None); - p->queue = Py_None; Py_INCREF(Py_None); - p->getters = Py_None; Py_INCREF(Py_None); - p->putters = Py_None; Py_INCREF(Py_None); - p->_event_unlock = Py_None; Py_INCREF(Py_None); - return o; -} - -static void __pyx_tp_dealloc_6gevent_6_queue_Queue(PyObject *o) { - struct __pyx_obj_6gevent_6_queue_Queue *p = (struct __pyx_obj_6gevent_6_queue_Queue *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - #endif - PyObject_GC_UnTrack(o); - if (p->__weakref__) PyObject_ClearWeakRefs(o); - Py_CLEAR(p->hub); - Py_CLEAR(p->queue); - Py_CLEAR(p->getters); - Py_CLEAR(p->putters); - Py_CLEAR(p->_event_unlock); - (*Py_TYPE(o)->tp_free)(o); -} - -static int __pyx_tp_traverse_6gevent_6_queue_Queue(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_6gevent_6_queue_Queue *p = (struct __pyx_obj_6gevent_6_queue_Queue *)o; - if (p->hub) { - e = (*v)(p->hub, a); if (e) return e; - } - if (p->queue) { - e = (*v)(p->queue, a); if (e) return e; - } - if (p->getters) { - e = (*v)(p->getters, a); if (e) return e; - } - if (p->putters) { - e = (*v)(p->putters, a); if (e) return e; - } - if (p->_event_unlock) { - e = (*v)(p->_event_unlock, a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_6gevent_6_queue_Queue(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_6gevent_6_queue_Queue *p = (struct __pyx_obj_6gevent_6_queue_Queue *)o; - tmp = ((PyObject*)p->hub); - p->hub = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->queue); - p->queue = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->getters); - p->getters = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->putters); - p->putters = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->_event_unlock); - p->_event_unlock = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyObject *__pyx_getprop_6gevent_6_queue_5Queue_maxsize(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_6_queue_5Queue_7maxsize_1__get__(o); -} - -static int __pyx_setprop_6gevent_6_queue_5Queue_maxsize(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { - if (v) { - return __pyx_pw_6gevent_6_queue_5Queue_7maxsize_3__set__(o, v); - } - else { - PyErr_SetString(PyExc_NotImplementedError, "__del__"); - return -1; - } -} - -static PyObject *__pyx_getprop_6gevent_6_queue_5Queue_hub(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_6_queue_5Queue_3hub_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_6_queue_5Queue_queue(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_6_queue_5Queue_5queue_1__get__(o); -} - -static PyMethodDef __pyx_methods_6gevent_6_queue_Queue[] = { - {"copy", (PyCFunction)__pyx_pw_6gevent_6_queue_5Queue_3copy, METH_NOARGS, __pyx_doc_6gevent_6_queue_5Queue_2copy}, - {"_create_queue", (PyCFunction)__pyx_pw_6gevent_6_queue_5Queue_5_create_queue, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_6_queue_5Queue_4_create_queue}, - {"_format", (PyCFunction)__pyx_pw_6gevent_6_queue_5Queue_17_format, METH_NOARGS, __pyx_doc_6gevent_6_queue_5Queue_16_format}, - {"_unlock", (PyCFunction)__pyx_pw_6gevent_6_queue_5Queue_43_unlock, METH_NOARGS, __pyx_doc_6gevent_6_queue_5Queue_42_unlock}, - {"__next__", (PyCFunction)__pyx_pw_6gevent_6_queue_5Queue_47__next__, METH_NOARGS|METH_COEXIST, 0}, - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_6gevent_6_queue_Queue[] = { - {(char *)"maxsize", __pyx_getprop_6gevent_6_queue_5Queue_maxsize, __pyx_setprop_6gevent_6_queue_5Queue_maxsize, (char *)0, 0}, - {(char *)"hub", __pyx_getprop_6gevent_6_queue_5Queue_hub, 0, (char *)0, 0}, - {(char *)"queue", __pyx_getprop_6gevent_6_queue_5Queue_queue, 0, (char *)0, 0}, - {0, 0, 0, 0, 0} -}; - -static PyNumberMethods __pyx_tp_as_number_Queue = { - 0, /*nb_add*/ - 0, /*nb_subtract*/ - 0, /*nb_multiply*/ - #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000) - 0, /*nb_divide*/ - #endif - 0, /*nb_remainder*/ - 0, /*nb_divmod*/ - 0, /*nb_power*/ - 0, /*nb_negative*/ - 0, /*nb_positive*/ - 0, /*nb_absolute*/ - __pyx_pw_6gevent_6_queue_5Queue_25__nonzero__, /*nb_nonzero*/ - 0, /*nb_invert*/ - 0, /*nb_lshift*/ - 0, /*nb_rshift*/ - 0, /*nb_and*/ - 0, /*nb_xor*/ - 0, /*nb_or*/ - #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000) - 0, /*nb_coerce*/ - #endif - 0, /*nb_int*/ - #if PY_MAJOR_VERSION < 3 - 0, /*nb_long*/ - #else - 0, /*reserved*/ - #endif - 0, /*nb_float*/ - #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000) - 0, /*nb_oct*/ - #endif - #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000) - 0, /*nb_hex*/ - #endif - 0, /*nb_inplace_add*/ - 0, /*nb_inplace_subtract*/ - 0, /*nb_inplace_multiply*/ - #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000) - 0, /*nb_inplace_divide*/ - #endif - 0, /*nb_inplace_remainder*/ - 0, /*nb_inplace_power*/ - 0, /*nb_inplace_lshift*/ - 0, /*nb_inplace_rshift*/ - 0, /*nb_inplace_and*/ - 0, /*nb_inplace_xor*/ - 0, /*nb_inplace_or*/ - 0, /*nb_floor_divide*/ - 0, /*nb_true_divide*/ - 0, /*nb_inplace_floor_divide*/ - 0, /*nb_inplace_true_divide*/ - 0, /*nb_index*/ - #if PY_VERSION_HEX >= 0x03050000 - 0, /*nb_matrix_multiply*/ - #endif - #if PY_VERSION_HEX >= 0x03050000 - 0, /*nb_inplace_matrix_multiply*/ - #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence_Queue = { - __pyx_pw_6gevent_6_queue_5Queue_21__len__, /*sq_length*/ - 0, /*sq_concat*/ - 0, /*sq_repeat*/ - 0, /*sq_item*/ - 0, /*sq_slice*/ - 0, /*sq_ass_item*/ - 0, /*sq_ass_slice*/ - 0, /*sq_contains*/ - 0, /*sq_inplace_concat*/ - 0, /*sq_inplace_repeat*/ -}; - -static PyMappingMethods __pyx_tp_as_mapping_Queue = { - __pyx_pw_6gevent_6_queue_5Queue_21__len__, /*mp_length*/ - 0, /*mp_subscript*/ - 0, /*mp_ass_subscript*/ -}; - -static PyTypeObject __pyx_type_6gevent_6_queue_Queue = { - PyVarObject_HEAD_INIT(0, 0) - "gevent._queue.Queue", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_6_queue_Queue), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_6_queue_Queue, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - __pyx_pw_6gevent_6_queue_5Queue_13__repr__, /*tp_repr*/ - &__pyx_tp_as_number_Queue, /*tp_as_number*/ - &__pyx_tp_as_sequence_Queue, /*tp_as_sequence*/ - &__pyx_tp_as_mapping_Queue, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - __pyx_pw_6gevent_6_queue_5Queue_15__str__, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "Queue(maxsize=None, items=(), _warn_depth=2)\n\n Create a queue object with a given maximum size.\n\n If *maxsize* is less than or equal to zero or ``None``, the queue\n size is infinite.\n\n Queues have a ``len`` equal to the number of items in them (the :meth:`qsize`),\n but in a boolean context they are always True.\n\n .. versionchanged:: 1.1b3\n Queues now support :func:`len`; it behaves the same as :meth:`qsize`.\n .. versionchanged:: 1.1b3\n Multiple greenlets that block on a call to :meth:`put` for a full queue\n will now be awakened to put their items into the queue in the order in which\n they arrived. Likewise, multiple greenlets that block on a call to :meth:`get` for\n an empty queue will now receive items in the order in which they blocked. An\n implementation quirk under CPython *usually* ensured this was roughly the case\n previously anyway, but that wasn't the case for PyPy.\n ", /*tp_doc*/ - __pyx_tp_traverse_6gevent_6_queue_Queue, /*tp_traverse*/ - __pyx_tp_clear_6gevent_6_queue_Queue, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - __pyx_pw_6gevent_6_queue_5Queue_45__iter__, /*tp_iter*/ - __pyx_pw_6gevent_6_queue_5Queue_47__next__, /*tp_iternext*/ - __pyx_methods_6gevent_6_queue_Queue, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_6gevent_6_queue_Queue, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_6_queue_5Queue_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_6_queue_Queue, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; -static struct __pyx_vtabstruct_6gevent_6_queue_UnboundQueue __pyx_vtable_6gevent_6_queue_UnboundQueue; - -static PyObject *__pyx_tp_new_6gevent_6_queue_UnboundQueue(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_obj_6gevent_6_queue_UnboundQueue *p; - PyObject *o = __pyx_tp_new_6gevent_6_queue_Queue(t, a, k); - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_6_queue_UnboundQueue *)o); - p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6gevent_6_queue_Queue*)__pyx_vtabptr_6gevent_6_queue_UnboundQueue; - return o; -} - -static PyMethodDef __pyx_methods_6gevent_6_queue_UnboundQueue[] = { - {0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_6_queue_UnboundQueue = { - PyVarObject_HEAD_INIT(0, 0) - "gevent._queue.UnboundQueue", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_6_queue_UnboundQueue), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_6_queue_Queue, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_6_queue_5Queue_13__repr__, /*tp_repr*/ - #else - 0, /*tp_repr*/ - #endif - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_6_queue_5Queue_15__str__, /*tp_str*/ - #else - 0, /*tp_str*/ - #endif - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "UnboundQueue(maxsize=None, items=())", /*tp_doc*/ - __pyx_tp_traverse_6gevent_6_queue_Queue, /*tp_traverse*/ - __pyx_tp_clear_6gevent_6_queue_Queue, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_6_queue_5Queue_45__iter__, /*tp_iter*/ - #else - 0, /*tp_iter*/ - #endif - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_6_queue_5Queue_47__next__, /*tp_iternext*/ - #else - 0, /*tp_iternext*/ - #endif - __pyx_methods_6gevent_6_queue_UnboundQueue, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_6_queue_12UnboundQueue_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_6_queue_UnboundQueue, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; -static struct __pyx_vtabstruct_6gevent_6_queue_PriorityQueue __pyx_vtable_6gevent_6_queue_PriorityQueue; - -static PyObject *__pyx_tp_new_6gevent_6_queue_PriorityQueue(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_obj_6gevent_6_queue_PriorityQueue *p; - PyObject *o = __pyx_tp_new_6gevent_6_queue_Queue(t, a, k); - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_6_queue_PriorityQueue *)o); - p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6gevent_6_queue_Queue*)__pyx_vtabptr_6gevent_6_queue_PriorityQueue; - return o; -} - -static PyMethodDef __pyx_methods_6gevent_6_queue_PriorityQueue[] = { - {"_create_queue", (PyCFunction)__pyx_pw_6gevent_6_queue_13PriorityQueue_1_create_queue, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_6_queue_13PriorityQueue__create_queue}, - {0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_6_queue_PriorityQueue = { - PyVarObject_HEAD_INIT(0, 0) - "gevent._queue.PriorityQueue", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_6_queue_PriorityQueue), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_6_queue_Queue, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_6_queue_5Queue_13__repr__, /*tp_repr*/ - #else - 0, /*tp_repr*/ - #endif - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_6_queue_5Queue_15__str__, /*tp_str*/ - #else - 0, /*tp_str*/ - #endif - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "A subclass of :class:`Queue` that retrieves entries in priority order (lowest first).\n\n Entries are typically tuples of the form: ``(priority number, data)``.\n\n .. versionchanged:: 1.2a1\n Any *items* given to the constructor will now be passed through\n :func:`heapq.heapify` to ensure the invariants of this class hold.\n Previously it was just assumed that they were already a heap.\n ", /*tp_doc*/ - __pyx_tp_traverse_6gevent_6_queue_Queue, /*tp_traverse*/ - __pyx_tp_clear_6gevent_6_queue_Queue, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_6_queue_5Queue_45__iter__, /*tp_iter*/ - #else - 0, /*tp_iter*/ - #endif - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_6_queue_5Queue_47__next__, /*tp_iternext*/ - #else - 0, /*tp_iternext*/ - #endif - __pyx_methods_6gevent_6_queue_PriorityQueue, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_6_queue_5Queue_1__init__, /*tp_init*/ - #else - 0, /*tp_init*/ - #endif - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_6_queue_PriorityQueue, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; -static struct __pyx_vtabstruct_6gevent_6_queue_LifoQueue __pyx_vtable_6gevent_6_queue_LifoQueue; - -static PyObject *__pyx_tp_new_6gevent_6_queue_LifoQueue(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_obj_6gevent_6_queue_LifoQueue *p; - PyObject *o = __pyx_tp_new_6gevent_6_queue_Queue(t, a, k); - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_6_queue_LifoQueue *)o); - p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6gevent_6_queue_Queue*)__pyx_vtabptr_6gevent_6_queue_LifoQueue; - return o; -} - -static PyMethodDef __pyx_methods_6gevent_6_queue_LifoQueue[] = { - {"_create_queue", (PyCFunction)__pyx_pw_6gevent_6_queue_9LifoQueue_1_create_queue, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_6_queue_9LifoQueue__create_queue}, - {0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_6_queue_LifoQueue = { - PyVarObject_HEAD_INIT(0, 0) - "gevent._queue.LifoQueue", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_6_queue_LifoQueue), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_6_queue_Queue, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_6_queue_5Queue_13__repr__, /*tp_repr*/ - #else - 0, /*tp_repr*/ - #endif - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_6_queue_5Queue_15__str__, /*tp_str*/ - #else - 0, /*tp_str*/ - #endif - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "A subclass of :class:`Queue` that retrieves most recently added entries first.", /*tp_doc*/ - __pyx_tp_traverse_6gevent_6_queue_Queue, /*tp_traverse*/ - __pyx_tp_clear_6gevent_6_queue_Queue, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_6_queue_5Queue_45__iter__, /*tp_iter*/ - #else - 0, /*tp_iter*/ - #endif - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_6_queue_5Queue_47__next__, /*tp_iternext*/ - #else - 0, /*tp_iternext*/ - #endif - __pyx_methods_6gevent_6_queue_LifoQueue, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_6_queue_5Queue_1__init__, /*tp_init*/ - #else - 0, /*tp_init*/ - #endif - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_6_queue_LifoQueue, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; -static struct __pyx_vtabstruct_6gevent_6_queue_JoinableQueue __pyx_vtable_6gevent_6_queue_JoinableQueue; - -static PyObject *__pyx_tp_new_6gevent_6_queue_JoinableQueue(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_obj_6gevent_6_queue_JoinableQueue *p; - PyObject *o = __pyx_tp_new_6gevent_6_queue_Queue(t, a, k); - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_6_queue_JoinableQueue *)o); - p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6gevent_6_queue_Queue*)__pyx_vtabptr_6gevent_6_queue_JoinableQueue; - p->_cond = ((struct __pyx_obj_6gevent_6_event_Event *)Py_None); Py_INCREF(Py_None); - return o; -} - -static void __pyx_tp_dealloc_6gevent_6_queue_JoinableQueue(PyObject *o) { - struct __pyx_obj_6gevent_6_queue_JoinableQueue *p = (struct __pyx_obj_6gevent_6_queue_JoinableQueue *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - #endif - PyObject_GC_UnTrack(o); - Py_CLEAR(p->_cond); - PyObject_GC_Track(o); - __pyx_tp_dealloc_6gevent_6_queue_Queue(o); -} - -static int __pyx_tp_traverse_6gevent_6_queue_JoinableQueue(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_6gevent_6_queue_JoinableQueue *p = (struct __pyx_obj_6gevent_6_queue_JoinableQueue *)o; - e = __pyx_tp_traverse_6gevent_6_queue_Queue(o, v, a); if (e) return e; - if (p->_cond) { - e = (*v)(((PyObject *)p->_cond), a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_6gevent_6_queue_JoinableQueue(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_6gevent_6_queue_JoinableQueue *p = (struct __pyx_obj_6gevent_6_queue_JoinableQueue *)o; - __pyx_tp_clear_6gevent_6_queue_Queue(o); - tmp = ((PyObject*)p->_cond); - p->_cond = ((struct __pyx_obj_6gevent_6_event_Event *)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyObject *__pyx_getprop_6gevent_6_queue_13JoinableQueue_unfinished_tasks(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_6_queue_13JoinableQueue_16unfinished_tasks_1__get__(o); -} - -static PyMethodDef __pyx_methods_6gevent_6_queue_JoinableQueue[] = { - {"copy", (PyCFunction)__pyx_pw_6gevent_6_queue_13JoinableQueue_3copy, METH_NOARGS, __pyx_doc_6gevent_6_queue_13JoinableQueue_2copy}, - {"_format", (PyCFunction)__pyx_pw_6gevent_6_queue_13JoinableQueue_5_format, METH_NOARGS, __pyx_doc_6gevent_6_queue_13JoinableQueue_4_format}, - {"task_done", (PyCFunction)__pyx_pw_6gevent_6_queue_13JoinableQueue_9task_done, METH_NOARGS, __pyx_doc_6gevent_6_queue_13JoinableQueue_8task_done}, - {"join", (PyCFunction)__pyx_pw_6gevent_6_queue_13JoinableQueue_11join, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_6_queue_13JoinableQueue_10join}, - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_6gevent_6_queue_JoinableQueue[] = { - {(char *)"unfinished_tasks", __pyx_getprop_6gevent_6_queue_13JoinableQueue_unfinished_tasks, 0, (char *)0, 0}, - {0, 0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_6_queue_JoinableQueue = { - PyVarObject_HEAD_INIT(0, 0) - "gevent._queue.JoinableQueue", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_6_queue_JoinableQueue), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_6_queue_JoinableQueue, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_6_queue_5Queue_13__repr__, /*tp_repr*/ - #else - 0, /*tp_repr*/ - #endif - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_6_queue_5Queue_15__str__, /*tp_str*/ - #else - 0, /*tp_str*/ - #endif - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "JoinableQueue(maxsize=None, items=(), unfinished_tasks=None)\n\n A subclass of :class:`Queue` that additionally has\n :meth:`task_done` and :meth:`join` methods.\n ", /*tp_doc*/ - __pyx_tp_traverse_6gevent_6_queue_JoinableQueue, /*tp_traverse*/ - __pyx_tp_clear_6gevent_6_queue_JoinableQueue, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_6_queue_5Queue_45__iter__, /*tp_iter*/ - #else - 0, /*tp_iter*/ - #endif - #if CYTHON_COMPILING_IN_PYPY - __pyx_pw_6gevent_6_queue_5Queue_47__next__, /*tp_iternext*/ - #else - 0, /*tp_iternext*/ - #endif - __pyx_methods_6gevent_6_queue_JoinableQueue, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_6gevent_6_queue_JoinableQueue, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_6_queue_13JoinableQueue_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_6_queue_JoinableQueue, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; -static struct __pyx_vtabstruct_6gevent_6_queue_Channel __pyx_vtable_6gevent_6_queue_Channel; - -static PyObject *__pyx_tp_new_6gevent_6_queue_Channel(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - struct __pyx_obj_6gevent_6_queue_Channel *p; - PyObject *o; - if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { - o = (*t->tp_alloc)(t, 0); - } else { - o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); - } - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_6_queue_Channel *)o); - p->__pyx_vtab = __pyx_vtabptr_6gevent_6_queue_Channel; - p->getters = Py_None; Py_INCREF(Py_None); - p->putters = Py_None; Py_INCREF(Py_None); - p->hub = Py_None; Py_INCREF(Py_None); - p->_event_unlock = Py_None; Py_INCREF(Py_None); - return o; -} - -static void __pyx_tp_dealloc_6gevent_6_queue_Channel(PyObject *o) { - struct __pyx_obj_6gevent_6_queue_Channel *p = (struct __pyx_obj_6gevent_6_queue_Channel *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - #endif - PyObject_GC_UnTrack(o); - if (p->__weakref__) PyObject_ClearWeakRefs(o); - Py_CLEAR(p->getters); - Py_CLEAR(p->putters); - Py_CLEAR(p->hub); - Py_CLEAR(p->_event_unlock); - (*Py_TYPE(o)->tp_free)(o); -} - -static int __pyx_tp_traverse_6gevent_6_queue_Channel(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_6gevent_6_queue_Channel *p = (struct __pyx_obj_6gevent_6_queue_Channel *)o; - if (p->getters) { - e = (*v)(p->getters, a); if (e) return e; - } - if (p->putters) { - e = (*v)(p->putters, a); if (e) return e; - } - if (p->hub) { - e = (*v)(p->hub, a); if (e) return e; - } - if (p->_event_unlock) { - e = (*v)(p->_event_unlock, a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_6gevent_6_queue_Channel(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_6gevent_6_queue_Channel *p = (struct __pyx_obj_6gevent_6_queue_Channel *)o; - tmp = ((PyObject*)p->getters); - p->getters = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->putters); - p->putters = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->hub); - p->hub = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->_event_unlock); - p->_event_unlock = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyObject *__pyx_getprop_6gevent_6_queue_7Channel_balance(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_6_queue_7Channel_7balance_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_6_queue_7Channel_getters(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_6_queue_7Channel_7getters_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_6_queue_7Channel_putters(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_6_queue_7Channel_7putters_1__get__(o); -} - -static PyObject *__pyx_getprop_6gevent_6_queue_7Channel_hub(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_6_queue_7Channel_3hub_1__get__(o); -} - -static PyMethodDef __pyx_methods_6gevent_6_queue_Channel[] = { - {"_format", (PyCFunction)__pyx_pw_6gevent_6_queue_7Channel_7_format, METH_NOARGS, __pyx_doc_6gevent_6_queue_7Channel_6_format}, - {"qsize", (PyCFunction)__pyx_pw_6gevent_6_queue_7Channel_9qsize, METH_NOARGS, __pyx_doc_6gevent_6_queue_7Channel_8qsize}, - {"empty", (PyCFunction)__pyx_pw_6gevent_6_queue_7Channel_11empty, METH_NOARGS, __pyx_doc_6gevent_6_queue_7Channel_10empty}, - {"full", (PyCFunction)__pyx_pw_6gevent_6_queue_7Channel_13full, METH_NOARGS, __pyx_doc_6gevent_6_queue_7Channel_12full}, - {"put", (PyCFunction)__pyx_pw_6gevent_6_queue_7Channel_15put, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_6_queue_7Channel_14put}, - {"put_nowait", (PyCFunction)__pyx_pw_6gevent_6_queue_7Channel_17put_nowait, METH_O, __pyx_doc_6gevent_6_queue_7Channel_16put_nowait}, - {"_unlock", (PyCFunction)__pyx_pw_6gevent_6_queue_7Channel_23_unlock, METH_NOARGS, __pyx_doc_6gevent_6_queue_7Channel_22_unlock}, - {"__next__", (PyCFunction)__pyx_pw_6gevent_6_queue_7Channel_27__next__, METH_NOARGS|METH_COEXIST, 0}, - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_6gevent_6_queue_Channel[] = { - {(char *)"balance", __pyx_getprop_6gevent_6_queue_7Channel_balance, 0, (char *)0, 0}, - {(char *)"getters", __pyx_getprop_6gevent_6_queue_7Channel_getters, 0, (char *)0, 0}, - {(char *)"putters", __pyx_getprop_6gevent_6_queue_7Channel_putters, 0, (char *)0, 0}, - {(char *)"hub", __pyx_getprop_6gevent_6_queue_7Channel_hub, 0, (char *)0, 0}, - {0, 0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_6_queue_Channel = { - PyVarObject_HEAD_INIT(0, 0) - "gevent._queue.Channel", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_6_queue_Channel), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_6_queue_Channel, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - __pyx_pw_6gevent_6_queue_7Channel_3__repr__, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - __pyx_pw_6gevent_6_queue_7Channel_5__str__, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "Channel(maxsize=1)", /*tp_doc*/ - __pyx_tp_traverse_6gevent_6_queue_Channel, /*tp_traverse*/ - __pyx_tp_clear_6gevent_6_queue_Channel, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - __pyx_pw_6gevent_6_queue_7Channel_25__iter__, /*tp_iter*/ - __pyx_pw_6gevent_6_queue_7Channel_27__next__, /*tp_iternext*/ - __pyx_methods_6gevent_6_queue_Channel, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_6gevent_6_queue_Channel, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_6_queue_7Channel_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_6_queue_Channel, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; - -static PyMethodDef __pyx_methods[] = { - {0, 0, 0, 0} -}; - -#if PY_MAJOR_VERSION >= 3 -#if CYTHON_PEP489_MULTI_PHASE_INIT -static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ -static int __pyx_pymod_exec__queue(PyObject* module); /*proto*/ -static PyModuleDef_Slot __pyx_moduledef_slots[] = { - {Py_mod_create, (void*)__pyx_pymod_create}, - {Py_mod_exec, (void*)__pyx_pymod_exec__queue}, - {0, NULL} -}; -#endif - -static struct PyModuleDef __pyx_moduledef = { - PyModuleDef_HEAD_INIT, - "_queue", - __pyx_k_Synchronized_queues_The_mod_gev, /* m_doc */ - #if CYTHON_PEP489_MULTI_PHASE_INIT - 0, /* m_size */ - #else - -1, /* m_size */ - #endif - __pyx_methods /* m_methods */, - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_moduledef_slots, /* m_slots */ - #else - NULL, /* m_reload */ - #endif - NULL, /* m_traverse */ - NULL, /* m_clear */ - NULL /* m_free */ -}; -#endif - -static __Pyx_StringTabEntry __pyx_string_tab[] = { - {&__pyx_n_s_Channel, __pyx_k_Channel, sizeof(__pyx_k_Channel), 0, 0, 1, 1}, - {&__pyx_n_s_Channel__format, __pyx_k_Channel__format, sizeof(__pyx_k_Channel__format), 0, 0, 1, 1}, - {&__pyx_n_s_Channel__unlock, __pyx_k_Channel__unlock, sizeof(__pyx_k_Channel__unlock), 0, 0, 1, 1}, - {&__pyx_n_s_Channel_empty, __pyx_k_Channel_empty, sizeof(__pyx_k_Channel_empty), 0, 0, 1, 1}, - {&__pyx_n_s_Channel_full, __pyx_k_Channel_full, sizeof(__pyx_k_Channel_full), 0, 0, 1, 1}, - {&__pyx_n_s_Channel_get, __pyx_k_Channel_get, sizeof(__pyx_k_Channel_get), 0, 0, 1, 1}, - {&__pyx_n_s_Channel_get_nowait, __pyx_k_Channel_get_nowait, sizeof(__pyx_k_Channel_get_nowait), 0, 0, 1, 1}, - {&__pyx_n_s_Channel_put, __pyx_k_Channel_put, sizeof(__pyx_k_Channel_put), 0, 0, 1, 1}, - {&__pyx_n_s_Channel_put_nowait, __pyx_k_Channel_put_nowait, sizeof(__pyx_k_Channel_put_nowait), 0, 0, 1, 1}, - {&__pyx_n_s_Channel_qsize, __pyx_k_Channel_qsize, sizeof(__pyx_k_Channel_qsize), 0, 0, 1, 1}, - {&__pyx_kp_s_Channels_have_a_maxsize_of_1, __pyx_k_Channels_have_a_maxsize_of_1, sizeof(__pyx_k_Channels_have_a_maxsize_of_1), 0, 0, 1, 0}, - {&__pyx_n_s_DeprecationWarning, __pyx_k_DeprecationWarning, sizeof(__pyx_k_DeprecationWarning), 0, 0, 1, 1}, - {&__pyx_n_s_Empty, __pyx_k_Empty, sizeof(__pyx_k_Empty), 0, 0, 1, 1}, - {&__pyx_n_s_Event, __pyx_k_Event, sizeof(__pyx_k_Event), 0, 0, 1, 1}, - {&__pyx_n_s_Full, __pyx_k_Full, sizeof(__pyx_k_Full), 0, 0, 1, 1}, - {&__pyx_n_s_InvalidSwitchError, __pyx_k_InvalidSwitchError, sizeof(__pyx_k_InvalidSwitchError), 0, 0, 1, 1}, - {&__pyx_kp_s_Invalid_switch_into_Channel_put, __pyx_k_Invalid_switch_into_Channel_put, sizeof(__pyx_k_Invalid_switch_into_Channel_put), 0, 0, 1, 0}, - {&__pyx_kp_s_Invalid_switch_into_Queue_get_r, __pyx_k_Invalid_switch_into_Queue_get_r, sizeof(__pyx_k_Invalid_switch_into_Queue_get_r), 0, 0, 1, 0}, - {&__pyx_kp_s_Invalid_switch_into_Queue_put_r, __pyx_k_Invalid_switch_into_Queue_put_r, sizeof(__pyx_k_Invalid_switch_into_Queue_put_r), 0, 0, 1, 0}, - {&__pyx_n_s_ItemWaiter_put_and_switch, __pyx_k_ItemWaiter_put_and_switch, sizeof(__pyx_k_ItemWaiter_put_and_switch), 0, 0, 1, 1}, - {&__pyx_n_s_JoinableQueue, __pyx_k_JoinableQueue, sizeof(__pyx_k_JoinableQueue), 0, 0, 1, 1}, - {&__pyx_n_s_JoinableQueue__format, __pyx_k_JoinableQueue__format, sizeof(__pyx_k_JoinableQueue__format), 0, 0, 1, 1}, - {&__pyx_n_s_JoinableQueue__put, __pyx_k_JoinableQueue__put, sizeof(__pyx_k_JoinableQueue__put), 0, 0, 1, 1}, - {&__pyx_n_s_JoinableQueue_copy, __pyx_k_JoinableQueue_copy, sizeof(__pyx_k_JoinableQueue_copy), 0, 0, 1, 1}, - {&__pyx_n_s_JoinableQueue_join, __pyx_k_JoinableQueue_join, sizeof(__pyx_k_JoinableQueue_join), 0, 0, 1, 1}, - {&__pyx_n_s_JoinableQueue_task_done, __pyx_k_JoinableQueue_task_done, sizeof(__pyx_k_JoinableQueue_task_done), 0, 0, 1, 1}, - {&__pyx_n_s_LifoQueue, __pyx_k_LifoQueue, sizeof(__pyx_k_LifoQueue), 0, 0, 1, 1}, - {&__pyx_n_s_LifoQueue__create_queue, __pyx_k_LifoQueue__create_queue, sizeof(__pyx_k_LifoQueue__create_queue), 0, 0, 1, 1}, - {&__pyx_n_s_LifoQueue__get, __pyx_k_LifoQueue__get, sizeof(__pyx_k_LifoQueue__get), 0, 0, 1, 1}, - {&__pyx_n_s_LifoQueue__peek, __pyx_k_LifoQueue__peek, sizeof(__pyx_k_LifoQueue__peek), 0, 0, 1, 1}, - {&__pyx_n_s_LifoQueue__put, __pyx_k_LifoQueue__put, sizeof(__pyx_k_LifoQueue__put), 0, 0, 1, 1}, - {&__pyx_n_s_PriorityQueue, __pyx_k_PriorityQueue, sizeof(__pyx_k_PriorityQueue), 0, 0, 1, 1}, - {&__pyx_n_s_PriorityQueue__create_queue, __pyx_k_PriorityQueue__create_queue, sizeof(__pyx_k_PriorityQueue__create_queue), 0, 0, 1, 1}, - {&__pyx_n_s_PriorityQueue__get, __pyx_k_PriorityQueue__get, sizeof(__pyx_k_PriorityQueue__get), 0, 0, 1, 1}, - {&__pyx_n_s_PriorityQueue__put, __pyx_k_PriorityQueue__put, sizeof(__pyx_k_PriorityQueue__put), 0, 0, 1, 1}, - {&__pyx_n_s_PySimpleQueue, __pyx_k_PySimpleQueue, sizeof(__pyx_k_PySimpleQueue), 0, 0, 1, 1}, - {&__pyx_n_s_Queue, __pyx_k_Queue, sizeof(__pyx_k_Queue), 0, 0, 1, 1}, - {&__pyx_kp_s_Queue_0_now_equivalent_to_Queue, __pyx_k_Queue_0_now_equivalent_to_Queue, sizeof(__pyx_k_Queue_0_now_equivalent_to_Queue), 0, 0, 1, 0}, - {&__pyx_n_s_Queue__create_queue, __pyx_k_Queue__create_queue, sizeof(__pyx_k_Queue__create_queue), 0, 0, 1, 1}, - {&__pyx_n_s_Queue__format, __pyx_k_Queue__format, sizeof(__pyx_k_Queue__format), 0, 0, 1, 1}, - {&__pyx_n_s_Queue__get, __pyx_k_Queue__get, sizeof(__pyx_k_Queue__get), 0, 0, 1, 1}, - {&__pyx_n_s_Queue__peek, __pyx_k_Queue__peek, sizeof(__pyx_k_Queue__peek), 0, 0, 1, 1}, - {&__pyx_n_s_Queue__put, __pyx_k_Queue__put, sizeof(__pyx_k_Queue__put), 0, 0, 1, 1}, - {&__pyx_n_s_Queue__unlock, __pyx_k_Queue__unlock, sizeof(__pyx_k_Queue__unlock), 0, 0, 1, 1}, - {&__pyx_n_s_Queue_copy, __pyx_k_Queue_copy, sizeof(__pyx_k_Queue_copy), 0, 0, 1, 1}, - {&__pyx_n_s_Queue_empty, __pyx_k_Queue_empty, sizeof(__pyx_k_Queue_empty), 0, 0, 1, 1}, - {&__pyx_n_s_Queue_full, __pyx_k_Queue_full, sizeof(__pyx_k_Queue_full), 0, 0, 1, 1}, - {&__pyx_n_s_Queue_get, __pyx_k_Queue_get, sizeof(__pyx_k_Queue_get), 0, 0, 1, 1}, - {&__pyx_n_s_Queue_get_nowait, __pyx_k_Queue_get_nowait, sizeof(__pyx_k_Queue_get_nowait), 0, 0, 1, 1}, - {&__pyx_n_s_Queue_peek, __pyx_k_Queue_peek, sizeof(__pyx_k_Queue_peek), 0, 0, 1, 1}, - {&__pyx_n_s_Queue_peek_nowait, __pyx_k_Queue_peek_nowait, sizeof(__pyx_k_Queue_peek_nowait), 0, 0, 1, 1}, - {&__pyx_n_s_Queue_put, __pyx_k_Queue_put, sizeof(__pyx_k_Queue_put), 0, 0, 1, 1}, - {&__pyx_n_s_Queue_put_nowait, __pyx_k_Queue_put_nowait, sizeof(__pyx_k_Queue_put_nowait), 0, 0, 1, 1}, - {&__pyx_n_s_Queue_qsize, __pyx_k_Queue_qsize, sizeof(__pyx_k_Queue_qsize), 0, 0, 1, 1}, - {&__pyx_n_s_SimpleQueue, __pyx_k_SimpleQueue, sizeof(__pyx_k_SimpleQueue), 0, 0, 1, 1}, - {&__pyx_n_s_StopIteration, __pyx_k_StopIteration, sizeof(__pyx_k_StopIteration), 0, 0, 1, 1}, - {&__pyx_n_s_Timeout, __pyx_k_Timeout, sizeof(__pyx_k_Timeout), 0, 0, 1, 1}, - {&__pyx_kp_s_UnboundQueue_has_no_maxsize, __pyx_k_UnboundQueue_has_no_maxsize, sizeof(__pyx_k_UnboundQueue_has_no_maxsize), 0, 0, 1, 0}, - {&__pyx_n_s_UnboundQueue_put, __pyx_k_UnboundQueue_put, sizeof(__pyx_k_UnboundQueue_put), 0, 0, 1, 1}, - {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1}, - {&__pyx_n_s_Waiter, __pyx_k_Waiter, sizeof(__pyx_k_Waiter), 0, 0, 1, 1}, - {&__pyx_kp_s__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 0, 1, 0}, - {&__pyx_kp_s__3, __pyx_k__3, sizeof(__pyx_k__3), 0, 0, 1, 0}, - {&__pyx_n_s_all, __pyx_k_all, sizeof(__pyx_k_all), 0, 0, 1, 1}, - {&__pyx_n_s_append, __pyx_k_append, sizeof(__pyx_k_append), 0, 0, 1, 1}, - {&__pyx_n_s_block, __pyx_k_block, sizeof(__pyx_k_block), 0, 0, 1, 1}, - {&__pyx_n_s_cancel, __pyx_k_cancel, sizeof(__pyx_k_cancel), 0, 0, 1, 1}, - {&__pyx_n_s_clear, __pyx_k_clear, sizeof(__pyx_k_clear), 0, 0, 1, 1}, - {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, - {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1}, - {&__pyx_n_s_collections, __pyx_k_collections, sizeof(__pyx_k_collections), 0, 0, 1, 1}, - {&__pyx_n_s_cond, __pyx_k_cond, sizeof(__pyx_k_cond), 0, 0, 1, 1}, - {&__pyx_n_s_copy, __pyx_k_copy, sizeof(__pyx_k_copy), 0, 0, 1, 1}, - {&__pyx_n_s_create_queue, __pyx_k_create_queue, sizeof(__pyx_k_create_queue), 0, 0, 1, 1}, - {&__pyx_n_s_deque, __pyx_k_deque, sizeof(__pyx_k_deque), 0, 0, 1, 1}, - {&__pyx_n_s_empty, __pyx_k_empty, sizeof(__pyx_k_empty), 0, 0, 1, 1}, - {&__pyx_n_s_event_unlock, __pyx_k_event_unlock, sizeof(__pyx_k_event_unlock), 0, 0, 1, 1}, - {&__pyx_n_s_exc_info, __pyx_k_exc_info, sizeof(__pyx_k_exc_info), 0, 0, 1, 1}, - {&__pyx_n_s_extensions, __pyx_k_extensions, sizeof(__pyx_k_extensions), 0, 0, 1, 1}, - {&__pyx_n_s_format, __pyx_k_format, sizeof(__pyx_k_format), 0, 0, 1, 1}, - {&__pyx_n_s_full, __pyx_k_full, sizeof(__pyx_k_full), 0, 0, 1, 1}, - {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1}, - {&__pyx_n_s_get_2, __pyx_k_get_2, sizeof(__pyx_k_get_2), 0, 0, 1, 1}, - {&__pyx_n_s_get_hub, __pyx_k_get_hub, sizeof(__pyx_k_get_hub), 0, 0, 1, 1}, - {&__pyx_n_s_get_hub_noargs, __pyx_k_get_hub_noargs, sizeof(__pyx_k_get_hub_noargs), 0, 0, 1, 1}, - {&__pyx_n_s_get_nowait, __pyx_k_get_nowait, sizeof(__pyx_k_get_nowait), 0, 0, 1, 1}, - {&__pyx_n_s_getcurrent, __pyx_k_getcurrent, sizeof(__pyx_k_getcurrent), 0, 0, 1, 1}, - {&__pyx_n_s_getter, __pyx_k_getter, sizeof(__pyx_k_getter), 0, 0, 1, 1}, - {&__pyx_n_s_getters, __pyx_k_getters, sizeof(__pyx_k_getters), 0, 0, 1, 1}, - {&__pyx_kp_s_getters_s, __pyx_k_getters_s, sizeof(__pyx_k_getters_s), 0, 0, 1, 0}, - {&__pyx_kp_s_getters_s_2, __pyx_k_getters_s_2, sizeof(__pyx_k_getters_s_2), 0, 0, 1, 0}, - {&__pyx_n_s_gevent, __pyx_k_gevent, sizeof(__pyx_k_gevent), 0, 0, 1, 1}, - {&__pyx_n_s_gevent__hub_local, __pyx_k_gevent__hub_local, sizeof(__pyx_k_gevent__hub_local), 0, 0, 1, 1}, - {&__pyx_n_s_gevent__queue, __pyx_k_gevent__queue, sizeof(__pyx_k_gevent__queue), 0, 0, 1, 1}, - {&__pyx_n_s_gevent__util, __pyx_k_gevent__util, sizeof(__pyx_k_gevent__util), 0, 0, 1, 1}, - {&__pyx_n_s_gevent__waiter, __pyx_k_gevent__waiter, sizeof(__pyx_k_gevent__waiter), 0, 0, 1, 1}, - {&__pyx_n_s_gevent_event, __pyx_k_gevent_event, sizeof(__pyx_k_gevent_event), 0, 0, 1, 1}, - {&__pyx_n_s_gevent_exceptions, __pyx_k_gevent_exceptions, sizeof(__pyx_k_gevent_exceptions), 0, 0, 1, 1}, - {&__pyx_n_s_gevent_timeout, __pyx_k_gevent_timeout, sizeof(__pyx_k_gevent_timeout), 0, 0, 1, 1}, - {&__pyx_n_s_greenlet, __pyx_k_greenlet, sizeof(__pyx_k_greenlet), 0, 0, 1, 1}, - {&__pyx_n_s_heapify, __pyx_k_heapify, sizeof(__pyx_k_heapify), 0, 0, 1, 1}, - {&__pyx_n_s_heapify_2, __pyx_k_heapify_2, sizeof(__pyx_k_heapify_2), 0, 0, 1, 1}, - {&__pyx_n_s_heappop, __pyx_k_heappop, sizeof(__pyx_k_heappop), 0, 0, 1, 1}, - {&__pyx_n_s_heappop_2, __pyx_k_heappop_2, sizeof(__pyx_k_heappop_2), 0, 0, 1, 1}, - {&__pyx_n_s_heappush, __pyx_k_heappush, sizeof(__pyx_k_heappush), 0, 0, 1, 1}, - {&__pyx_n_s_heappush_2, __pyx_k_heappush_2, sizeof(__pyx_k_heappush_2), 0, 0, 1, 1}, - {&__pyx_n_s_heapq, __pyx_k_heapq, sizeof(__pyx_k_heapq), 0, 0, 1, 1}, - {&__pyx_n_s_hex, __pyx_k_hex, sizeof(__pyx_k_hex), 0, 0, 1, 1}, - {&__pyx_n_s_hub, __pyx_k_hub, sizeof(__pyx_k_hub), 0, 0, 1, 1}, - {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1}, - {&__pyx_n_s_implements, __pyx_k_implements, sizeof(__pyx_k_implements), 0, 0, 1, 1}, - {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, - {&__pyx_n_s_import_c_accel, __pyx_k_import_c_accel, sizeof(__pyx_k_import_c_accel), 0, 0, 1, 1}, - {&__pyx_n_s_imports, __pyx_k_imports, sizeof(__pyx_k_imports), 0, 0, 1, 1}, - {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1}, - {&__pyx_n_s_item, __pyx_k_item, sizeof(__pyx_k_item), 0, 0, 1, 1}, - {&__pyx_n_s_items, __pyx_k_items, sizeof(__pyx_k_items), 0, 0, 1, 1}, - {&__pyx_n_s_join, __pyx_k_join, sizeof(__pyx_k_join), 0, 0, 1, 1}, - {&__pyx_n_s_loop, __pyx_k_loop, sizeof(__pyx_k_loop), 0, 0, 1, 1}, - {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, - {&__pyx_n_s_maxsize, __pyx_k_maxsize, sizeof(__pyx_k_maxsize), 0, 0, 1, 1}, - {&__pyx_n_s_maxsize_2, __pyx_k_maxsize_2, sizeof(__pyx_k_maxsize_2), 0, 0, 1, 1}, - {&__pyx_kp_s_maxsize_r, __pyx_k_maxsize_r, sizeof(__pyx_k_maxsize_r), 0, 0, 1, 0}, - {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, - {&__pyx_n_s_next, __pyx_k_next, sizeof(__pyx_k_next), 0, 0, 1, 1}, - {&__pyx_n_s_next_2, __pyx_k_next_2, sizeof(__pyx_k_next_2), 0, 0, 1, 1}, - {&__pyx_n_s_peek, __pyx_k_peek, sizeof(__pyx_k_peek), 0, 0, 1, 1}, - {&__pyx_n_s_peek_2, __pyx_k_peek_2, sizeof(__pyx_k_peek_2), 0, 0, 1, 1}, - {&__pyx_n_s_peek_nowait, __pyx_k_peek_nowait, sizeof(__pyx_k_peek_nowait), 0, 0, 1, 1}, - {&__pyx_n_s_pop, __pyx_k_pop, sizeof(__pyx_k_pop), 0, 0, 1, 1}, - {&__pyx_n_s_popleft, __pyx_k_popleft, sizeof(__pyx_k_popleft), 0, 0, 1, 1}, - {&__pyx_n_s_put, __pyx_k_put, sizeof(__pyx_k_put), 0, 0, 1, 1}, - {&__pyx_n_s_put_2, __pyx_k_put_2, sizeof(__pyx_k_put_2), 0, 0, 1, 1}, - {&__pyx_n_s_put_and_switch, __pyx_k_put_and_switch, sizeof(__pyx_k_put_and_switch), 0, 0, 1, 1}, - {&__pyx_n_s_put_nowait, __pyx_k_put_nowait, sizeof(__pyx_k_put_nowait), 0, 0, 1, 1}, - {&__pyx_n_s_putter, __pyx_k_putter, sizeof(__pyx_k_putter), 0, 0, 1, 1}, - {&__pyx_n_s_putters, __pyx_k_putters, sizeof(__pyx_k_putters), 0, 0, 1, 1}, - {&__pyx_kp_s_putters_s, __pyx_k_putters_s, sizeof(__pyx_k_putters_s), 0, 0, 1, 0}, - {&__pyx_kp_s_putters_s_2, __pyx_k_putters_s_2, sizeof(__pyx_k_putters_s_2), 0, 0, 1, 0}, - {&__pyx_n_s_pyx_capi, __pyx_k_pyx_capi, sizeof(__pyx_k_pyx_capi), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1}, - {&__pyx_n_s_q, __pyx_k_q, sizeof(__pyx_k_q), 0, 0, 1, 1}, - {&__pyx_n_s_qsize, __pyx_k_qsize, sizeof(__pyx_k_qsize), 0, 0, 1, 1}, - {&__pyx_n_s_queue, __pyx_k_queue, sizeof(__pyx_k_queue), 0, 0, 1, 1}, - {&__pyx_n_s_queue_2, __pyx_k_queue_2, sizeof(__pyx_k_queue_2), 0, 0, 1, 1}, - {&__pyx_kp_s_queue_r, __pyx_k_queue_r, sizeof(__pyx_k_queue_r), 0, 0, 1, 0}, - {&__pyx_n_s_remove, __pyx_k_remove, sizeof(__pyx_k_remove), 0, 0, 1, 1}, - {&__pyx_n_s_repeat, __pyx_k_repeat, sizeof(__pyx_k_repeat), 0, 0, 1, 1}, - {&__pyx_n_s_result, __pyx_k_result, sizeof(__pyx_k_result), 0, 0, 1, 1}, - {&__pyx_n_s_run_callback, __pyx_k_run_callback, sizeof(__pyx_k_run_callback), 0, 0, 1, 1}, - {&__pyx_kp_s_s_at_s_s, __pyx_k_s_at_s_s, sizeof(__pyx_k_s_at_s_s), 0, 0, 1, 0}, - {&__pyx_kp_s_s_at_s_s_2, __pyx_k_s_at_s_s_2, sizeof(__pyx_k_s_at_s_s_2), 0, 0, 1, 0}, - {&__pyx_kp_s_s_s, __pyx_k_s_s, sizeof(__pyx_k_s_s), 0, 0, 1, 0}, - {&__pyx_kp_s_s_s_2, __pyx_k_s_s_2, sizeof(__pyx_k_s_s_2), 0, 0, 1, 0}, - {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1}, - {&__pyx_n_s_set, __pyx_k_set, sizeof(__pyx_k_set), 0, 0, 1, 1}, - {&__pyx_n_s_slots, __pyx_k_slots, sizeof(__pyx_k_slots), 0, 0, 1, 1}, - {&__pyx_kp_s_src_gevent_queue_py, __pyx_k_src_gevent_queue_py, sizeof(__pyx_k_src_gevent_queue_py), 0, 0, 1, 0}, - {&__pyx_n_s_stacklevel, __pyx_k_stacklevel, sizeof(__pyx_k_stacklevel), 0, 0, 1, 1}, - {&__pyx_n_s_start_new_or_dummy, __pyx_k_start_new_or_dummy, sizeof(__pyx_k_start_new_or_dummy), 0, 0, 1, 1}, - {&__pyx_n_s_switch, __pyx_k_switch, sizeof(__pyx_k_switch), 0, 0, 1, 1}, - {&__pyx_n_s_sys, __pyx_k_sys, sizeof(__pyx_k_sys), 0, 0, 1, 1}, - {&__pyx_n_s_task_done, __pyx_k_task_done, sizeof(__pyx_k_task_done), 0, 0, 1, 1}, - {&__pyx_kp_s_task_done_called_too_many_times, __pyx_k_task_done_called_too_many_times, sizeof(__pyx_k_task_done_called_too_many_times), 0, 0, 1, 0}, - {&__pyx_kp_s_tasks_s__cond_s, __pyx_k_tasks_s__cond_s, sizeof(__pyx_k_tasks_s__cond_s), 0, 0, 1, 0}, - {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, - {&__pyx_n_s_throw, __pyx_k_throw, sizeof(__pyx_k_throw), 0, 0, 1, 1}, - {&__pyx_n_s_timeout, __pyx_k_timeout, sizeof(__pyx_k_timeout), 0, 0, 1, 1}, - {&__pyx_n_s_unfinished_tasks, __pyx_k_unfinished_tasks, sizeof(__pyx_k_unfinished_tasks), 0, 0, 1, 1}, - {&__pyx_n_s_unlock, __pyx_k_unlock, sizeof(__pyx_k_unlock), 0, 0, 1, 1}, - {&__pyx_n_s_version_info, __pyx_k_version_info, sizeof(__pyx_k_version_info), 0, 0, 1, 1}, - {&__pyx_n_s_wait, __pyx_k_wait, sizeof(__pyx_k_wait), 0, 0, 1, 1}, - {&__pyx_n_s_waiter, __pyx_k_waiter, sizeof(__pyx_k_waiter), 0, 0, 1, 1}, - {&__pyx_n_s_waiter_2, __pyx_k_waiter_2, sizeof(__pyx_k_waiter_2), 0, 0, 1, 1}, - {&__pyx_n_s_warn, __pyx_k_warn, sizeof(__pyx_k_warn), 0, 0, 1, 1}, - {&__pyx_n_s_warn_depth, __pyx_k_warn_depth, sizeof(__pyx_k_warn_depth), 0, 0, 1, 1}, - {&__pyx_n_s_warnings, __pyx_k_warnings, sizeof(__pyx_k_warnings), 0, 0, 1, 1}, - {&__pyx_n_s_weakref, __pyx_k_weakref, sizeof(__pyx_k_weakref), 0, 0, 1, 1}, - {0, 0, 0, 0, 0, 0, 0} -}; -static int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 69, __pyx_L1_error) - __pyx_builtin_DeprecationWarning = __Pyx_GetBuiltinName(__pyx_n_s_DeprecationWarning); if (!__pyx_builtin_DeprecationWarning) __PYX_ERR(0, 130, __pyx_L1_error) - __pyx_builtin_hex = __Pyx_GetBuiltinName(__pyx_n_s_hex); if (!__pyx_builtin_hex) __PYX_ERR(0, 181, __pyx_L1_error) - __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_n_s_id); if (!__pyx_builtin_id) __PYX_ERR(0, 181, __pyx_L1_error) - __pyx_builtin_StopIteration = __Pyx_GetBuiltinName(__pyx_n_s_StopIteration); if (!__pyx_builtin_StopIteration) __PYX_ERR(0, 406, __pyx_L1_error) - return 0; - __pyx_L1_error:; - return -1; -} - -static int __Pyx_InitCachedConstants(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - - /* "src/gevent/queue.py":128 - * if maxsize == 0: - * import warnings - * warnings.warn( # <<<<<<<<<<<<<< - * 'Queue(0) now equivalent to Queue(None); if you want a channel, use Channel', - * DeprecationWarning, - */ - __pyx_tuple_ = PyTuple_Pack(2, __pyx_kp_s_Queue_0_now_equivalent_to_Queue, __pyx_builtin_DeprecationWarning); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 128, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple_); - __Pyx_GIVEREF(__pyx_tuple_); - - /* "src/gevent/queue.py":421 - * def __init__(self, maxsize=None, items=()): - * if maxsize is not None: - * raise ValueError("UnboundQueue has no maxsize") # <<<<<<<<<<<<<< - * Queue.__init__(self, maxsize, items) - * self.putters = None # Will never be used. - */ - __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_UnboundQueue_has_no_maxsize); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 421, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__4); - __Pyx_GIVEREF(__pyx_tuple__4); - - /* "src/gevent/queue.py":535 - * ''' - * if self.unfinished_tasks <= 0: - * raise ValueError('task_done() called too many times') # <<<<<<<<<<<<<< - * self.unfinished_tasks -= 1 - * if self.unfinished_tasks == 0: - */ - __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_task_done_called_too_many_times); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 535, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__5); - __Pyx_GIVEREF(__pyx_tuple__5); - - /* "src/gevent/queue.py":573 - * # We take maxsize to simplify certain kinds of code - * if maxsize != 1: - * raise ValueError("Channels have a maxsize of 1") # <<<<<<<<<<<<<< - * self.getters = collections.deque() - * self.putters = collections.deque() - */ - __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s_Channels_have_a_maxsize_of_1); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 573, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__6); - __Pyx_GIVEREF(__pyx_tuple__6); - - /* "src/gevent/queue.py":78 - * # pylint:disable=assigning-non-slot - * __slots__ = ( - * 'item', # <<<<<<<<<<<<<< - * 'queue', - * ) - */ - __pyx_tuple__7 = PyTuple_Pack(2, __pyx_n_s_item, __pyx_n_s_queue); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 78, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__7); - __Pyx_GIVEREF(__pyx_tuple__7); - - /* "src/gevent/queue.py":87 - * self.queue = queue - * - * def put_and_switch(self): # <<<<<<<<<<<<<< - * self.queue._put(self.item) - * self.queue = None - */ - __pyx_tuple__8 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 87, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__8); - __Pyx_GIVEREF(__pyx_tuple__8); - __pyx_codeobj__9 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__8, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_put_and_switch, 87, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__9)) __PYX_ERR(0, 87, __pyx_L1_error) - - /* "src/gevent/queue.py":115 - * - * __slots__ = ( - * '_maxsize', # <<<<<<<<<<<<<< - * 'getters', - * 'putters', - */ - __pyx_tuple__10 = PyTuple_Pack(7, __pyx_n_s_maxsize_2, __pyx_n_s_getters, __pyx_n_s_putters, __pyx_n_s_hub, __pyx_n_s_event_unlock, __pyx_n_s_queue, __pyx_n_s_weakref); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 115, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__10); - __Pyx_GIVEREF(__pyx_tuple__10); - - /* "src/gevent/queue.py":165 - * self._maxsize = nv - * - * def copy(self): # <<<<<<<<<<<<<< - * return type(self)(self.maxsize, self.queue) - * - */ - __pyx_tuple__11 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 165, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__11); - __Pyx_GIVEREF(__pyx_tuple__11); - __pyx_codeobj__12 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__11, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_copy, 165, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__12)) __PYX_ERR(0, 165, __pyx_L1_error) - - /* "src/gevent/queue.py":168 - * return type(self)(self.maxsize, self.queue) - * - * def _create_queue(self, items=()): # <<<<<<<<<<<<<< - * return collections.deque(items) - * - */ - __pyx_tuple__13 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_items); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 168, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__13); - __Pyx_GIVEREF(__pyx_tuple__13); - __pyx_codeobj__14 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_create_queue, 168, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__14)) __PYX_ERR(0, 168, __pyx_L1_error) - - /* "src/gevent/queue.py":171 - * return collections.deque(items) - * - * def _get(self): # <<<<<<<<<<<<<< - * return self.queue.popleft() - * - */ - __pyx_tuple__15 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 171, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__15); - __Pyx_GIVEREF(__pyx_tuple__15); - __pyx_codeobj__16 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__15, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_get, 171, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__16)) __PYX_ERR(0, 171, __pyx_L1_error) - - /* "src/gevent/queue.py":174 - * return self.queue.popleft() - * - * def _peek(self): # <<<<<<<<<<<<<< - * return self.queue[0] - * - */ - __pyx_tuple__17 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 174, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__17); - __Pyx_GIVEREF(__pyx_tuple__17); - __pyx_codeobj__18 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_peek, 174, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__18)) __PYX_ERR(0, 174, __pyx_L1_error) - - /* "src/gevent/queue.py":177 - * return self.queue[0] - * - * def _put(self, item): # <<<<<<<<<<<<<< - * self.queue.append(item) - * - */ - __pyx_tuple__19 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_item); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 177, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__19); - __Pyx_GIVEREF(__pyx_tuple__19); - __pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__19, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_put, 177, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) __PYX_ERR(0, 177, __pyx_L1_error) - - /* "src/gevent/queue.py":186 - * return '<%s%s>' % (type(self).__name__, self._format()) - * - * def _format(self): # <<<<<<<<<<<<<< - * result = [] - * if self.maxsize is not None: - */ - __pyx_tuple__21 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_result); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 186, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__21); - __Pyx_GIVEREF(__pyx_tuple__21); - __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_format, 186, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(0, 186, __pyx_L1_error) - - /* "src/gevent/queue.py":200 - * return '' - * - * def qsize(self): # <<<<<<<<<<<<<< - * """Return the size of the queue.""" - * return len(self.queue) - */ - __pyx_tuple__23 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 200, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__23); - __Pyx_GIVEREF(__pyx_tuple__23); - __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_qsize, 200, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 200, __pyx_L1_error) - - /* "src/gevent/queue.py":232 - * return True - * - * def empty(self): # <<<<<<<<<<<<<< - * """Return ``True`` if the queue is empty, ``False`` otherwise.""" - * return not self.qsize() - */ - __pyx_tuple__25 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 232, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__25); - __Pyx_GIVEREF(__pyx_tuple__25); - __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_empty, 232, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(0, 232, __pyx_L1_error) - - /* "src/gevent/queue.py":236 - * return not self.qsize() - * - * def full(self): # <<<<<<<<<<<<<< - * """Return ``True`` if the queue is full, ``False`` otherwise. - * - */ - __pyx_tuple__27 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 236, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__27); - __Pyx_GIVEREF(__pyx_tuple__27); - __pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_full, 236, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) __PYX_ERR(0, 236, __pyx_L1_error) - - /* "src/gevent/queue.py":243 - * return self._maxsize > 0 and self.qsize() >= self._maxsize - * - * def put(self, item, block=True, timeout=None): # <<<<<<<<<<<<<< - * """Put an item into the queue. - * - */ - __pyx_tuple__29 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_item, __pyx_n_s_block, __pyx_n_s_timeout); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 243, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__29); - __Pyx_GIVEREF(__pyx_tuple__29); - __pyx_codeobj__30 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__29, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_put_2, 243, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__30)) __PYX_ERR(0, 243, __pyx_L1_error) - - /* "src/gevent/queue.py":285 - * raise Full - * - * def put_nowait(self, item): # <<<<<<<<<<<<<< - * """Put an item into the queue without blocking. - * - */ - __pyx_tuple__31 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_item); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 285, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__31); - __Pyx_GIVEREF(__pyx_tuple__31); - __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__31, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_put_nowait, 285, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) __PYX_ERR(0, 285, __pyx_L1_error) - - /* "src/gevent/queue.py":329 - * _safe_remove(self.getters, waiter) - * - * def get(self, block=True, timeout=None): # <<<<<<<<<<<<<< - * """Remove and return an item from the queue. - * - */ - __pyx_tuple__33 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_block, __pyx_n_s_timeout); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 329, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__33); - __Pyx_GIVEREF(__pyx_tuple__33); - __pyx_codeobj__34 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_get_2, 329, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__34)) __PYX_ERR(0, 329, __pyx_L1_error) - - /* "src/gevent/queue.py":346 - * return self.__get_or_peek(self._get, block, timeout) - * - * def get_nowait(self): # <<<<<<<<<<<<<< - * """Remove and return an item from the queue without blocking. - * - */ - __pyx_tuple__35 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(0, 346, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__35); - __Pyx_GIVEREF(__pyx_tuple__35); - __pyx_codeobj__36 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__35, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_get_nowait, 346, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__36)) __PYX_ERR(0, 346, __pyx_L1_error) - - /* "src/gevent/queue.py":354 - * return self.get(False) - * - * def peek(self, block=True, timeout=None): # <<<<<<<<<<<<<< - * """Return an item from the queue without removing it. - * - */ - __pyx_tuple__37 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_block, __pyx_n_s_timeout); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(0, 354, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__37); - __Pyx_GIVEREF(__pyx_tuple__37); - __pyx_codeobj__38 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__37, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_peek_2, 354, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__38)) __PYX_ERR(0, 354, __pyx_L1_error) - - /* "src/gevent/queue.py":370 - * return self.__get_or_peek(self._peek, block, timeout) - * - * def peek_nowait(self): # <<<<<<<<<<<<<< - * """Return an item from the queue without blocking. - * - */ - __pyx_tuple__39 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(0, 370, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__39); - __Pyx_GIVEREF(__pyx_tuple__39); - __pyx_codeobj__40 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__39, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_peek_nowait, 370, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__40)) __PYX_ERR(0, 370, __pyx_L1_error) - - /* "src/gevent/queue.py":378 - * return self.peek(False) - * - * def _unlock(self): # <<<<<<<<<<<<<< - * while True: - * repeat = False - */ - __pyx_tuple__41 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_repeat, __pyx_n_s_putter, __pyx_n_s_getter); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(0, 378, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__41); - __Pyx_GIVEREF(__pyx_tuple__41); - __pyx_codeobj__42 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__41, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_unlock, 378, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__42)) __PYX_ERR(0, 378, __pyx_L1_error) - - /* "src/gevent/queue.py":425 - * self.putters = None # Will never be used. - * - * def put(self, item, block=True, timeout=None): # <<<<<<<<<<<<<< - * self._put(item) - * if self.getters: - */ - __pyx_tuple__43 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_item, __pyx_n_s_block, __pyx_n_s_timeout); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(0, 425, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__43); - __Pyx_GIVEREF(__pyx_tuple__43); - __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__43, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_put_2, 425, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) __PYX_ERR(0, 425, __pyx_L1_error) - - /* "src/gevent/queue.py":444 - * __slots__ = () - * - * def _create_queue(self, items=()): # <<<<<<<<<<<<<< - * q = list(items) - * _heapify(q) - */ - __pyx_tuple__45 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_items, __pyx_n_s_q); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 444, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__45); - __Pyx_GIVEREF(__pyx_tuple__45); - __pyx_codeobj__46 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__45, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_create_queue, 444, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__46)) __PYX_ERR(0, 444, __pyx_L1_error) - - /* "src/gevent/queue.py":449 - * return q - * - * def _put(self, item): # <<<<<<<<<<<<<< - * _heappush(self.queue, item) - * - */ - __pyx_tuple__47 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_item); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(0, 449, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__47); - __Pyx_GIVEREF(__pyx_tuple__47); - __pyx_codeobj__48 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__47, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_put, 449, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__48)) __PYX_ERR(0, 449, __pyx_L1_error) - - /* "src/gevent/queue.py":452 - * _heappush(self.queue, item) - * - * def _get(self): # <<<<<<<<<<<<<< - * return _heappop(self.queue) - * - */ - __pyx_tuple__49 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(0, 452, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__49); - __Pyx_GIVEREF(__pyx_tuple__49); - __pyx_codeobj__50 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__49, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_get, 452, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__50)) __PYX_ERR(0, 452, __pyx_L1_error) - - /* "src/gevent/queue.py":461 - * __slots__ = () - * - * def _create_queue(self, items=()): # <<<<<<<<<<<<<< - * return list(items) - * - */ - __pyx_tuple__51 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_items); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(0, 461, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__51); - __Pyx_GIVEREF(__pyx_tuple__51); - __pyx_codeobj__52 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__51, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_create_queue, 461, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__52)) __PYX_ERR(0, 461, __pyx_L1_error) - - /* "src/gevent/queue.py":464 - * return list(items) - * - * def _put(self, item): # <<<<<<<<<<<<<< - * self.queue.append(item) - * - */ - __pyx_tuple__53 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_item); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(0, 464, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__53); - __Pyx_GIVEREF(__pyx_tuple__53); - __pyx_codeobj__54 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__53, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_put, 464, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__54)) __PYX_ERR(0, 464, __pyx_L1_error) - - /* "src/gevent/queue.py":467 - * self.queue.append(item) - * - * def _get(self): # <<<<<<<<<<<<<< - * return self.queue.pop() - * - */ - __pyx_tuple__55 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__55)) __PYX_ERR(0, 467, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__55); - __Pyx_GIVEREF(__pyx_tuple__55); - __pyx_codeobj__56 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__55, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_get, 467, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__56)) __PYX_ERR(0, 467, __pyx_L1_error) - - /* "src/gevent/queue.py":470 - * return self.queue.pop() - * - * def _peek(self): # <<<<<<<<<<<<<< - * return self.queue[-1] - * - */ - __pyx_tuple__57 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__57)) __PYX_ERR(0, 470, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__57); - __Pyx_GIVEREF(__pyx_tuple__57); - __pyx_codeobj__58 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__57, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_peek, 470, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__58)) __PYX_ERR(0, 470, __pyx_L1_error) - - /* "src/gevent/queue.py":481 - * - * __slots__ = ( - * '_cond', # <<<<<<<<<<<<<< - * 'unfinished_tasks', - * ) - */ - __pyx_tuple__59 = PyTuple_Pack(2, __pyx_n_s_cond, __pyx_n_s_unfinished_tasks); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(0, 481, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__59); - __Pyx_GIVEREF(__pyx_tuple__59); - - /* "src/gevent/queue.py":509 - * self._cond.clear() - * - * def copy(self): # <<<<<<<<<<<<<< - * return type(self)(self.maxsize, self.queue, self.unfinished_tasks) - * - */ - __pyx_tuple__60 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__60)) __PYX_ERR(0, 509, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__60); - __Pyx_GIVEREF(__pyx_tuple__60); - __pyx_codeobj__61 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__60, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_copy, 509, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__61)) __PYX_ERR(0, 509, __pyx_L1_error) - - /* "src/gevent/queue.py":512 - * return type(self)(self.maxsize, self.queue, self.unfinished_tasks) - * - * def _format(self): # <<<<<<<<<<<<<< - * result = Queue._format(self) - * if self.unfinished_tasks: - */ - __pyx_tuple__62 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_result); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(0, 512, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__62); - __Pyx_GIVEREF(__pyx_tuple__62); - __pyx_codeobj__63 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__62, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_format, 512, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__63)) __PYX_ERR(0, 512, __pyx_L1_error) - - /* "src/gevent/queue.py":518 - * return result - * - * def _put(self, item): # <<<<<<<<<<<<<< - * Queue._put(self, item) - * self.unfinished_tasks += 1 - */ - __pyx_tuple__64 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_item); if (unlikely(!__pyx_tuple__64)) __PYX_ERR(0, 518, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__64); - __Pyx_GIVEREF(__pyx_tuple__64); - __pyx_codeobj__65 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__64, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_put, 518, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__65)) __PYX_ERR(0, 518, __pyx_L1_error) - - /* "src/gevent/queue.py":523 - * self._cond.clear() - * - * def task_done(self): # <<<<<<<<<<<<<< - * '''Indicate that a formerly enqueued task is complete. Used by queue consumer threads. - * For each :meth:`get <Queue.get>` used to fetch a task, a subsequent call to :meth:`task_done` tells the queue - */ - __pyx_tuple__66 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__66)) __PYX_ERR(0, 523, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__66); - __Pyx_GIVEREF(__pyx_tuple__66); - __pyx_codeobj__67 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__66, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_task_done, 523, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__67)) __PYX_ERR(0, 523, __pyx_L1_error) - - /* "src/gevent/queue.py":540 - * self._cond.set() - * - * def join(self, timeout=None): # <<<<<<<<<<<<<< - * ''' - * Block until all items in the queue have been gotten and processed. - */ - __pyx_tuple__68 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_timeout); if (unlikely(!__pyx_tuple__68)) __PYX_ERR(0, 540, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__68); - __Pyx_GIVEREF(__pyx_tuple__68); - __pyx_codeobj__69 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__68, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_join, 540, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__69)) __PYX_ERR(0, 540, __pyx_L1_error) - - /* "src/gevent/queue.py":563 - * - * __slots__ = ( - * 'getters', # <<<<<<<<<<<<<< - * 'putters', - * 'hub', - */ - __pyx_tuple__70 = PyTuple_Pack(5, __pyx_n_s_getters, __pyx_n_s_putters, __pyx_n_s_hub, __pyx_n_s_event_unlock, __pyx_n_s_weakref); if (unlikely(!__pyx_tuple__70)) __PYX_ERR(0, 563, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__70); - __Pyx_GIVEREF(__pyx_tuple__70); - - /* "src/gevent/queue.py":585 - * return '<%s %s>' % (type(self).__name__, self._format()) - * - * def _format(self): # <<<<<<<<<<<<<< - * result = '' - * if self.getters: - */ - __pyx_tuple__71 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_result); if (unlikely(!__pyx_tuple__71)) __PYX_ERR(0, 585, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__71); - __Pyx_GIVEREF(__pyx_tuple__71); - __pyx_codeobj__72 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__71, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_format, 585, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__72)) __PYX_ERR(0, 585, __pyx_L1_error) - - /* "src/gevent/queue.py":597 - * return len(self.putters) - len(self.getters) - * - * def qsize(self): # <<<<<<<<<<<<<< - * return 0 - * - */ - __pyx_tuple__73 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__73)) __PYX_ERR(0, 597, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__73); - __Pyx_GIVEREF(__pyx_tuple__73); - __pyx_codeobj__74 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__73, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_qsize, 597, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__74)) __PYX_ERR(0, 597, __pyx_L1_error) - - /* "src/gevent/queue.py":600 - * return 0 - * - * def empty(self): # <<<<<<<<<<<<<< - * return True - * - */ - __pyx_tuple__75 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__75)) __PYX_ERR(0, 600, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__75); - __Pyx_GIVEREF(__pyx_tuple__75); - __pyx_codeobj__76 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__75, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_empty, 600, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__76)) __PYX_ERR(0, 600, __pyx_L1_error) - - /* "src/gevent/queue.py":603 - * return True - * - * def full(self): # <<<<<<<<<<<<<< - * return True - * - */ - __pyx_tuple__77 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__77)) __PYX_ERR(0, 603, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__77); - __Pyx_GIVEREF(__pyx_tuple__77); - __pyx_codeobj__78 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__77, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_full, 603, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__78)) __PYX_ERR(0, 603, __pyx_L1_error) - - /* "src/gevent/queue.py":606 - * return True - * - * def put(self, item, block=True, timeout=None): # <<<<<<<<<<<<<< - * if self.hub is getcurrent(): - * if self.getters: - */ - __pyx_tuple__79 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_item, __pyx_n_s_block, __pyx_n_s_timeout, __pyx_n_s_getter, __pyx_n_s_waiter_2, __pyx_n_s_result); if (unlikely(!__pyx_tuple__79)) __PYX_ERR(0, 606, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__79); - __Pyx_GIVEREF(__pyx_tuple__79); - __pyx_codeobj__80 = (PyObject*)__Pyx_PyCode_New(4, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__79, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_put_2, 606, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__80)) __PYX_ERR(0, 606, __pyx_L1_error) - - /* "src/gevent/queue.py":633 - * timeout.cancel() - * - * def put_nowait(self, item): # <<<<<<<<<<<<<< - * self.put(item, False) - * - */ - __pyx_tuple__81 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_item); if (unlikely(!__pyx_tuple__81)) __PYX_ERR(0, 633, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__81); - __Pyx_GIVEREF(__pyx_tuple__81); - __pyx_codeobj__82 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__81, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_put_nowait, 633, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__82)) __PYX_ERR(0, 633, __pyx_L1_error) - - /* "src/gevent/queue.py":636 - * self.put(item, False) - * - * def get(self, block=True, timeout=None): # <<<<<<<<<<<<<< - * if self.hub is getcurrent(): - * if self.putters: - */ - __pyx_tuple__83 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_block, __pyx_n_s_timeout); if (unlikely(!__pyx_tuple__83)) __PYX_ERR(0, 636, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__83); - __Pyx_GIVEREF(__pyx_tuple__83); - __pyx_codeobj__84 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__83, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_get_2, 636, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__84)) __PYX_ERR(0, 636, __pyx_L1_error) - - /* "src/gevent/queue.py":659 - * timeout.close() - * - * def get_nowait(self): # <<<<<<<<<<<<<< - * return self.get(False) - * - */ - __pyx_tuple__85 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__85)) __PYX_ERR(0, 659, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__85); - __Pyx_GIVEREF(__pyx_tuple__85); - __pyx_codeobj__86 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__85, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_get_nowait, 659, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__86)) __PYX_ERR(0, 659, __pyx_L1_error) - - /* "src/gevent/queue.py":662 - * return self.get(False) - * - * def _unlock(self): # <<<<<<<<<<<<<< - * while self.putters and self.getters: - * getter = self.getters.popleft() - */ - __pyx_tuple__87 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_getter, __pyx_n_s_item, __pyx_n_s_putter); if (unlikely(!__pyx_tuple__87)) __PYX_ERR(0, 662, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__87); - __Pyx_GIVEREF(__pyx_tuple__87); - __pyx_codeobj__88 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__87, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_queue_py, __pyx_n_s_unlock, 662, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__88)) __PYX_ERR(0, 662, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_InitGlobals(void) { - __pyx_umethod_PyList_Type_pop.type = (PyObject*)&PyList_Type; - if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) __PYX_ERR(0, 1, __pyx_L1_error) - return 0; - __pyx_L1_error:; - return -1; -} - -static int __Pyx_modinit_global_init_code(void); /*proto*/ -static int __Pyx_modinit_variable_export_code(void); /*proto*/ -static int __Pyx_modinit_function_export_code(void); /*proto*/ -static int __Pyx_modinit_type_init_code(void); /*proto*/ -static int __Pyx_modinit_type_import_code(void); /*proto*/ -static int __Pyx_modinit_variable_import_code(void); /*proto*/ -static int __Pyx_modinit_function_import_code(void); /*proto*/ - -static int __Pyx_modinit_global_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); - /*--- Global init code ---*/ - __pyx_v_6gevent_6_queue__heappush = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_6_queue__heappop = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_6_queue__heapify = Py_None; Py_INCREF(Py_None); - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_variable_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); - /*--- Variable export code ---*/ - if (__Pyx_ExportVoidPtr(__pyx_n_s_heappush, (void *)&__pyx_v_6gevent_6_queue__heappush, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_heappop, (void *)&__pyx_v_6gevent_6_queue__heappop, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ExportVoidPtr(__pyx_n_s_heapify, (void *)&__pyx_v_6gevent_6_queue__heapify, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_function_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); - /*--- Function export code ---*/ - if (__Pyx_ExportFunction("_safe_remove", (void (*)(void))__pyx_f_6gevent_6_queue__safe_remove, "PyObject *(PyObject *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_type_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); - /*--- Type init code ---*/ - __pyx_ptype_6gevent_8__waiter_Waiter = __Pyx_ImportType("gevent.__waiter", "Waiter", sizeof(struct __pyx_obj_6gevent_8__waiter_Waiter), 1); if (unlikely(!__pyx_ptype_6gevent_8__waiter_Waiter)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_vtabptr_6gevent_8__waiter_Waiter = (struct __pyx_vtabstruct_6gevent_8__waiter_Waiter*)__Pyx_GetVtable(__pyx_ptype_6gevent_8__waiter_Waiter->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_8__waiter_Waiter)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_vtabptr_6gevent_6_queue_ItemWaiter = &__pyx_vtable_6gevent_6_queue_ItemWaiter; - __pyx_vtable_6gevent_6_queue_ItemWaiter.__pyx_base = *__pyx_vtabptr_6gevent_8__waiter_Waiter; - __pyx_type_6gevent_6_queue_ItemWaiter.tp_base = __pyx_ptype_6gevent_8__waiter_Waiter; - if (PyType_Ready(&__pyx_type_6gevent_6_queue_ItemWaiter) < 0) __PYX_ERR(0, 75, __pyx_L1_error) - __pyx_type_6gevent_6_queue_ItemWaiter.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_6_queue_ItemWaiter.tp_dictoffset && __pyx_type_6gevent_6_queue_ItemWaiter.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_6_queue_ItemWaiter.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; - } - if (__Pyx_SetVtable(__pyx_type_6gevent_6_queue_ItemWaiter.tp_dict, __pyx_vtabptr_6gevent_6_queue_ItemWaiter) < 0) __PYX_ERR(0, 75, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "ItemWaiter", (PyObject *)&__pyx_type_6gevent_6_queue_ItemWaiter) < 0) __PYX_ERR(0, 75, __pyx_L1_error) - __pyx_ptype_6gevent_6_queue_ItemWaiter = &__pyx_type_6gevent_6_queue_ItemWaiter; - __pyx_vtabptr_6gevent_6_queue_Queue = &__pyx_vtable_6gevent_6_queue_Queue; - __pyx_vtable_6gevent_6_queue_Queue._get = (PyObject *(*)(struct __pyx_obj_6gevent_6_queue_Queue *, int __pyx_skip_dispatch))__pyx_f_6gevent_6_queue_5Queue__get; - __pyx_vtable_6gevent_6_queue_Queue._put = (PyObject *(*)(struct __pyx_obj_6gevent_6_queue_Queue *, PyObject *, int __pyx_skip_dispatch))__pyx_f_6gevent_6_queue_5Queue__put; - __pyx_vtable_6gevent_6_queue_Queue._peek = (PyObject *(*)(struct __pyx_obj_6gevent_6_queue_Queue *, int __pyx_skip_dispatch))__pyx_f_6gevent_6_queue_5Queue__peek; - __pyx_vtable_6gevent_6_queue_Queue.qsize = (Py_ssize_t (*)(struct __pyx_obj_6gevent_6_queue_Queue *, int __pyx_skip_dispatch))__pyx_f_6gevent_6_queue_5Queue_qsize; - __pyx_vtable_6gevent_6_queue_Queue.empty = (int (*)(struct __pyx_obj_6gevent_6_queue_Queue *, int __pyx_skip_dispatch))__pyx_f_6gevent_6_queue_5Queue_empty; - __pyx_vtable_6gevent_6_queue_Queue.full = (int (*)(struct __pyx_obj_6gevent_6_queue_Queue *, int __pyx_skip_dispatch))__pyx_f_6gevent_6_queue_5Queue_full; - __pyx_vtable_6gevent_6_queue_Queue.put = (PyObject *(*)(struct __pyx_obj_6gevent_6_queue_Queue *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_6_queue_5Queue_put *__pyx_optional_args))__pyx_f_6gevent_6_queue_5Queue_put; - __pyx_vtable_6gevent_6_queue_Queue.put_nowait = (PyObject *(*)(struct __pyx_obj_6gevent_6_queue_Queue *, PyObject *, int __pyx_skip_dispatch))__pyx_f_6gevent_6_queue_5Queue_put_nowait; - __pyx_vtable_6gevent_6_queue_Queue.__pyx___get_or_peek = (PyObject *(*)(struct __pyx_obj_6gevent_6_queue_Queue *, PyObject *, PyObject *, PyObject *))__pyx_f_6gevent_6_queue_5Queue___get_or_peek; - __pyx_vtable_6gevent_6_queue_Queue.get = (PyObject *(*)(struct __pyx_obj_6gevent_6_queue_Queue *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_6_queue_5Queue_get *__pyx_optional_args))__pyx_f_6gevent_6_queue_5Queue_get; - __pyx_vtable_6gevent_6_queue_Queue.get_nowait = (PyObject *(*)(struct __pyx_obj_6gevent_6_queue_Queue *, int __pyx_skip_dispatch))__pyx_f_6gevent_6_queue_5Queue_get_nowait; - __pyx_vtable_6gevent_6_queue_Queue.peek = (PyObject *(*)(struct __pyx_obj_6gevent_6_queue_Queue *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_6_queue_5Queue_peek *__pyx_optional_args))__pyx_f_6gevent_6_queue_5Queue_peek; - __pyx_vtable_6gevent_6_queue_Queue.peek_nowait = (PyObject *(*)(struct __pyx_obj_6gevent_6_queue_Queue *, int __pyx_skip_dispatch))__pyx_f_6gevent_6_queue_5Queue_peek_nowait; - __pyx_vtable_6gevent_6_queue_Queue._schedule_unlock = (PyObject *(*)(struct __pyx_obj_6gevent_6_queue_Queue *))__pyx_f_6gevent_6_queue_5Queue__schedule_unlock; - if (PyType_Ready(&__pyx_type_6gevent_6_queue_Queue) < 0) __PYX_ERR(0, 93, __pyx_L1_error) - __pyx_type_6gevent_6_queue_Queue.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_6_queue_Queue.tp_dictoffset && __pyx_type_6gevent_6_queue_Queue.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_6_queue_Queue.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - #if CYTHON_COMPILING_IN_CPYTHON - { - PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_6gevent_6_queue_Queue, "__len__"); if (unlikely(!wrapper)) __PYX_ERR(0, 93, __pyx_L1_error) - if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) { - __pyx_wrapperbase_6gevent_6_queue_5Queue_20__len__ = *((PyWrapperDescrObject *)wrapper)->d_base; - __pyx_wrapperbase_6gevent_6_queue_5Queue_20__len__.doc = __pyx_doc_6gevent_6_queue_5Queue_20__len__; - ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_6gevent_6_queue_5Queue_20__len__; - } - } - #endif - if (__Pyx_SetVtable(__pyx_type_6gevent_6_queue_Queue.tp_dict, __pyx_vtabptr_6gevent_6_queue_Queue) < 0) __PYX_ERR(0, 93, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "Queue", (PyObject *)&__pyx_type_6gevent_6_queue_Queue) < 0) __PYX_ERR(0, 93, __pyx_L1_error) - if (__pyx_type_6gevent_6_queue_Queue.tp_weaklistoffset == 0) __pyx_type_6gevent_6_queue_Queue.tp_weaklistoffset = offsetof(struct __pyx_obj_6gevent_6_queue_Queue, __weakref__); - __pyx_ptype_6gevent_6_queue_Queue = &__pyx_type_6gevent_6_queue_Queue; - __pyx_vtabptr_6gevent_6_queue_UnboundQueue = &__pyx_vtable_6gevent_6_queue_UnboundQueue; - __pyx_vtable_6gevent_6_queue_UnboundQueue.__pyx_base = *__pyx_vtabptr_6gevent_6_queue_Queue; - __pyx_vtable_6gevent_6_queue_UnboundQueue.__pyx_base.put = (PyObject *(*)(struct __pyx_obj_6gevent_6_queue_Queue *, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_6_queue_5Queue_put *__pyx_optional_args))__pyx_f_6gevent_6_queue_12UnboundQueue_put; - __pyx_type_6gevent_6_queue_UnboundQueue.tp_base = __pyx_ptype_6gevent_6_queue_Queue; - if (PyType_Ready(&__pyx_type_6gevent_6_queue_UnboundQueue) < 0) __PYX_ERR(0, 413, __pyx_L1_error) - __pyx_type_6gevent_6_queue_UnboundQueue.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_6_queue_UnboundQueue.tp_dictoffset && __pyx_type_6gevent_6_queue_UnboundQueue.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_6_queue_UnboundQueue.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; - } - if (__Pyx_SetVtable(__pyx_type_6gevent_6_queue_UnboundQueue.tp_dict, __pyx_vtabptr_6gevent_6_queue_UnboundQueue) < 0) __PYX_ERR(0, 413, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "UnboundQueue", (PyObject *)&__pyx_type_6gevent_6_queue_UnboundQueue) < 0) __PYX_ERR(0, 413, __pyx_L1_error) - if (__pyx_type_6gevent_6_queue_UnboundQueue.tp_weaklistoffset == 0) __pyx_type_6gevent_6_queue_UnboundQueue.tp_weaklistoffset = offsetof(struct __pyx_obj_6gevent_6_queue_UnboundQueue, __pyx_base.__weakref__); - __pyx_ptype_6gevent_6_queue_UnboundQueue = &__pyx_type_6gevent_6_queue_UnboundQueue; - __pyx_vtabptr_6gevent_6_queue_PriorityQueue = &__pyx_vtable_6gevent_6_queue_PriorityQueue; - __pyx_vtable_6gevent_6_queue_PriorityQueue.__pyx_base = *__pyx_vtabptr_6gevent_6_queue_Queue; - __pyx_vtable_6gevent_6_queue_PriorityQueue.__pyx_base._get = (PyObject *(*)(struct __pyx_obj_6gevent_6_queue_Queue *, int __pyx_skip_dispatch))__pyx_f_6gevent_6_queue_13PriorityQueue__get; - __pyx_vtable_6gevent_6_queue_PriorityQueue.__pyx_base._put = (PyObject *(*)(struct __pyx_obj_6gevent_6_queue_Queue *, PyObject *, int __pyx_skip_dispatch))__pyx_f_6gevent_6_queue_13PriorityQueue__put; - __pyx_type_6gevent_6_queue_PriorityQueue.tp_base = __pyx_ptype_6gevent_6_queue_Queue; - if (PyType_Ready(&__pyx_type_6gevent_6_queue_PriorityQueue) < 0) __PYX_ERR(0, 431, __pyx_L1_error) - __pyx_type_6gevent_6_queue_PriorityQueue.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_6_queue_PriorityQueue.tp_dictoffset && __pyx_type_6gevent_6_queue_PriorityQueue.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_6_queue_PriorityQueue.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - if (__Pyx_SetVtable(__pyx_type_6gevent_6_queue_PriorityQueue.tp_dict, __pyx_vtabptr_6gevent_6_queue_PriorityQueue) < 0) __PYX_ERR(0, 431, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "PriorityQueue", (PyObject *)&__pyx_type_6gevent_6_queue_PriorityQueue) < 0) __PYX_ERR(0, 431, __pyx_L1_error) - if (__pyx_type_6gevent_6_queue_PriorityQueue.tp_weaklistoffset == 0) __pyx_type_6gevent_6_queue_PriorityQueue.tp_weaklistoffset = offsetof(struct __pyx_obj_6gevent_6_queue_PriorityQueue, __pyx_base.__weakref__); - __pyx_ptype_6gevent_6_queue_PriorityQueue = &__pyx_type_6gevent_6_queue_PriorityQueue; - __pyx_vtabptr_6gevent_6_queue_LifoQueue = &__pyx_vtable_6gevent_6_queue_LifoQueue; - __pyx_vtable_6gevent_6_queue_LifoQueue.__pyx_base = *__pyx_vtabptr_6gevent_6_queue_Queue; - __pyx_vtable_6gevent_6_queue_LifoQueue.__pyx_base._get = (PyObject *(*)(struct __pyx_obj_6gevent_6_queue_Queue *, int __pyx_skip_dispatch))__pyx_f_6gevent_6_queue_9LifoQueue__get; - __pyx_vtable_6gevent_6_queue_LifoQueue.__pyx_base._put = (PyObject *(*)(struct __pyx_obj_6gevent_6_queue_Queue *, PyObject *, int __pyx_skip_dispatch))__pyx_f_6gevent_6_queue_9LifoQueue__put; - __pyx_vtable_6gevent_6_queue_LifoQueue.__pyx_base._peek = (PyObject *(*)(struct __pyx_obj_6gevent_6_queue_Queue *, int __pyx_skip_dispatch))__pyx_f_6gevent_6_queue_9LifoQueue__peek; - __pyx_type_6gevent_6_queue_LifoQueue.tp_base = __pyx_ptype_6gevent_6_queue_Queue; - if (PyType_Ready(&__pyx_type_6gevent_6_queue_LifoQueue) < 0) __PYX_ERR(0, 456, __pyx_L1_error) - __pyx_type_6gevent_6_queue_LifoQueue.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_6_queue_LifoQueue.tp_dictoffset && __pyx_type_6gevent_6_queue_LifoQueue.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_6_queue_LifoQueue.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - if (__Pyx_SetVtable(__pyx_type_6gevent_6_queue_LifoQueue.tp_dict, __pyx_vtabptr_6gevent_6_queue_LifoQueue) < 0) __PYX_ERR(0, 456, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "LifoQueue", (PyObject *)&__pyx_type_6gevent_6_queue_LifoQueue) < 0) __PYX_ERR(0, 456, __pyx_L1_error) - if (__pyx_type_6gevent_6_queue_LifoQueue.tp_weaklistoffset == 0) __pyx_type_6gevent_6_queue_LifoQueue.tp_weaklistoffset = offsetof(struct __pyx_obj_6gevent_6_queue_LifoQueue, __pyx_base.__weakref__); - __pyx_ptype_6gevent_6_queue_LifoQueue = &__pyx_type_6gevent_6_queue_LifoQueue; - __pyx_vtabptr_6gevent_6_queue_JoinableQueue = &__pyx_vtable_6gevent_6_queue_JoinableQueue; - __pyx_vtable_6gevent_6_queue_JoinableQueue.__pyx_base = *__pyx_vtabptr_6gevent_6_queue_Queue; - __pyx_vtable_6gevent_6_queue_JoinableQueue.__pyx_base._put = (PyObject *(*)(struct __pyx_obj_6gevent_6_queue_Queue *, PyObject *, int __pyx_skip_dispatch))__pyx_f_6gevent_6_queue_13JoinableQueue__put; - __pyx_type_6gevent_6_queue_JoinableQueue.tp_base = __pyx_ptype_6gevent_6_queue_Queue; - if (PyType_Ready(&__pyx_type_6gevent_6_queue_JoinableQueue) < 0) __PYX_ERR(0, 474, __pyx_L1_error) - __pyx_type_6gevent_6_queue_JoinableQueue.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_6_queue_JoinableQueue.tp_dictoffset && __pyx_type_6gevent_6_queue_JoinableQueue.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_6_queue_JoinableQueue.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - #if CYTHON_COMPILING_IN_CPYTHON - { - PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_6gevent_6_queue_JoinableQueue, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 474, __pyx_L1_error) - if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) { - __pyx_wrapperbase_6gevent_6_queue_13JoinableQueue___init__ = *((PyWrapperDescrObject *)wrapper)->d_base; - __pyx_wrapperbase_6gevent_6_queue_13JoinableQueue___init__.doc = __pyx_doc_6gevent_6_queue_13JoinableQueue___init__; - ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_6gevent_6_queue_13JoinableQueue___init__; - } - } - #endif - if (__Pyx_SetVtable(__pyx_type_6gevent_6_queue_JoinableQueue.tp_dict, __pyx_vtabptr_6gevent_6_queue_JoinableQueue) < 0) __PYX_ERR(0, 474, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "JoinableQueue", (PyObject *)&__pyx_type_6gevent_6_queue_JoinableQueue) < 0) __PYX_ERR(0, 474, __pyx_L1_error) - if (__pyx_type_6gevent_6_queue_JoinableQueue.tp_weaklistoffset == 0) __pyx_type_6gevent_6_queue_JoinableQueue.tp_weaklistoffset = offsetof(struct __pyx_obj_6gevent_6_queue_JoinableQueue, __pyx_base.__weakref__); - __pyx_ptype_6gevent_6_queue_JoinableQueue = &__pyx_type_6gevent_6_queue_JoinableQueue; - __pyx_vtabptr_6gevent_6_queue_Channel = &__pyx_vtable_6gevent_6_queue_Channel; - __pyx_vtable_6gevent_6_queue_Channel.get = (PyObject *(*)(struct __pyx_obj_6gevent_6_queue_Channel *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_6_queue_7Channel_get *__pyx_optional_args))__pyx_f_6gevent_6_queue_7Channel_get; - __pyx_vtable_6gevent_6_queue_Channel.get_nowait = (PyObject *(*)(struct __pyx_obj_6gevent_6_queue_Channel *, int __pyx_skip_dispatch))__pyx_f_6gevent_6_queue_7Channel_get_nowait; - __pyx_vtable_6gevent_6_queue_Channel._schedule_unlock = (PyObject *(*)(struct __pyx_obj_6gevent_6_queue_Channel *))__pyx_f_6gevent_6_queue_7Channel__schedule_unlock; - if (PyType_Ready(&__pyx_type_6gevent_6_queue_Channel) < 0) __PYX_ERR(0, 560, __pyx_L1_error) - __pyx_type_6gevent_6_queue_Channel.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_6_queue_Channel.tp_dictoffset && __pyx_type_6gevent_6_queue_Channel.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_6_queue_Channel.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - if (__Pyx_SetVtable(__pyx_type_6gevent_6_queue_Channel.tp_dict, __pyx_vtabptr_6gevent_6_queue_Channel) < 0) __PYX_ERR(0, 560, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "Channel", (PyObject *)&__pyx_type_6gevent_6_queue_Channel) < 0) __PYX_ERR(0, 560, __pyx_L1_error) - if (__pyx_type_6gevent_6_queue_Channel.tp_weaklistoffset == 0) __pyx_type_6gevent_6_queue_Channel.tp_weaklistoffset = offsetof(struct __pyx_obj_6gevent_6_queue_Channel, __weakref__); - __pyx_ptype_6gevent_6_queue_Channel = &__pyx_type_6gevent_6_queue_Channel; - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_type_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); - /*--- Type import code ---*/ - __pyx_ptype_6gevent_21__greenlet_primitives_greenlet = __Pyx_ImportType("greenlet", "greenlet", sizeof(PyGreenlet), 0); if (unlikely(!__pyx_ptype_6gevent_21__greenlet_primitives_greenlet)) __PYX_ERR(2, 12, __pyx_L1_error) - __pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet = __Pyx_ImportType("gevent.__greenlet_primitives", "TrackedRawGreenlet", sizeof(struct __pyx_obj_6gevent_21__greenlet_primitives_TrackedRawGreenlet), 1); if (unlikely(!__pyx_ptype_6gevent_21__greenlet_primitives_TrackedRawGreenlet)) __PYX_ERR(2, 37, __pyx_L1_error) - __pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop = __Pyx_ImportType("gevent.__greenlet_primitives", "SwitchOutGreenletWithLoop", sizeof(struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop), 1); if (unlikely(!__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop)) __PYX_ERR(2, 40, __pyx_L1_error) - __pyx_vtabptr_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop = (struct __pyx_vtabstruct_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop*)__Pyx_GetVtable(__pyx_ptype_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop)) __PYX_ERR(2, 40, __pyx_L1_error) - __pyx_ptype_6gevent_8__waiter_greenlet = __Pyx_ImportType("greenlet", "greenlet", sizeof(PyGreenlet), 0); if (unlikely(!__pyx_ptype_6gevent_8__waiter_greenlet)) __PYX_ERR(3, 15, __pyx_L1_error) - __pyx_ptype_6gevent_8__waiter_MultipleWaiter = __Pyx_ImportType("gevent.__waiter", "MultipleWaiter", sizeof(struct __pyx_obj_6gevent_8__waiter_MultipleWaiter), 1); if (unlikely(!__pyx_ptype_6gevent_8__waiter_MultipleWaiter)) __PYX_ERR(3, 47, __pyx_L1_error) - __pyx_vtabptr_6gevent_8__waiter_MultipleWaiter = (struct __pyx_vtabstruct_6gevent_8__waiter_MultipleWaiter*)__Pyx_GetVtable(__pyx_ptype_6gevent_8__waiter_MultipleWaiter->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_8__waiter_MultipleWaiter)) __PYX_ERR(3, 47, __pyx_L1_error) - __pyx_ptype_6gevent_6_event_greenlet = __Pyx_ImportType("greenlet", "greenlet", sizeof(PyGreenlet), 0); if (unlikely(!__pyx_ptype_6gevent_6_event_greenlet)) __PYX_ERR(4, 18, __pyx_L1_error) - __pyx_ptype_6gevent_6_event__AbstractLinkable = __Pyx_ImportType("gevent._event", "_AbstractLinkable", sizeof(struct __pyx_obj_6gevent_6_event__AbstractLinkable), 1); if (unlikely(!__pyx_ptype_6gevent_6_event__AbstractLinkable)) __PYX_ERR(4, 38, __pyx_L1_error) - __pyx_vtabptr_6gevent_6_event__AbstractLinkable = (struct __pyx_vtabstruct_6gevent_6_event__AbstractLinkable*)__Pyx_GetVtable(__pyx_ptype_6gevent_6_event__AbstractLinkable->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_6_event__AbstractLinkable)) __PYX_ERR(4, 38, __pyx_L1_error) - __pyx_ptype_6gevent_6_event_Event = __Pyx_ImportType("gevent._event", "Event", sizeof(struct __pyx_obj_6gevent_6_event_Event), 1); if (unlikely(!__pyx_ptype_6gevent_6_event_Event)) __PYX_ERR(4, 60, __pyx_L1_error) - __pyx_vtabptr_6gevent_6_event_Event = (struct __pyx_vtabstruct_6gevent_6_event_Event*)__Pyx_GetVtable(__pyx_ptype_6gevent_6_event_Event->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_6_event_Event)) __PYX_ERR(4, 60, __pyx_L1_error) - __pyx_ptype_6gevent_6_event_AsyncResult = __Pyx_ImportType("gevent._event", "AsyncResult", sizeof(struct __pyx_obj_6gevent_6_event_AsyncResult), 1); if (unlikely(!__pyx_ptype_6gevent_6_event_AsyncResult)) __PYX_ERR(4, 63, __pyx_L1_error) - __pyx_vtabptr_6gevent_6_event_AsyncResult = (struct __pyx_vtabstruct_6gevent_6_event_AsyncResult*)__Pyx_GetVtable(__pyx_ptype_6gevent_6_event_AsyncResult->tp_dict); if (unlikely(!__pyx_vtabptr_6gevent_6_event_AsyncResult)) __PYX_ERR(4, 63, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_variable_import_code(void) { - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); - /*--- Variable import code ---*/ - __pyx_t_1 = __Pyx_ImportModule("gevent.__greenlet_primitives"); if (!__pyx_t_1) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_1, "wref", (void **)&__pyx_vp_6gevent_21__greenlet_primitives_wref, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_1, "BlockingSwitchOutError", (void **)&__pyx_vp_6gevent_21__greenlet_primitives_BlockingSwitchOutError, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_1, "_greenlet_imported", (void **)&__pyx_vp_6gevent_21__greenlet_primitives__greenlet_imported, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_2 = __Pyx_ImportModule("gevent.__hub_local"); if (!__pyx_t_2) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_2, "_threadlocal", (void **)&__pyx_vp_6gevent_11__hub_local__threadlocal, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_3 = __Pyx_ImportModule("gevent.__waiter"); if (!__pyx_t_3) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_3, "sys", (void **)&__pyx_vp_6gevent_8__waiter_sys, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_3, "ConcurrentObjectUseError", (void **)&__pyx_vp_6gevent_8__waiter_ConcurrentObjectUseError, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_3, "_greenlet_imported", (void **)&__pyx_vp_6gevent_8__waiter__greenlet_imported, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_3, "_NONE", (void **)&__pyx_vp_6gevent_8__waiter__NONE, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_4 = __Pyx_ImportModule("gevent._event"); if (!__pyx_t_4) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_4, "_None", (void **)&__pyx_vp_6gevent_6_event__None, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_4, "reraise", (void **)&__pyx_vp_6gevent_6_event_reraise, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_4, "dump_traceback", (void **)&__pyx_vp_6gevent_6_event_dump_traceback, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_4, "load_traceback", (void **)&__pyx_vp_6gevent_6_event_load_traceback, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_4, "InvalidSwitchError", (void **)&__pyx_vp_6gevent_6_event_InvalidSwitchError, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_4, "Timeout", (void **)&__pyx_vp_6gevent_6_event_Timeout, "PyObject *") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportVoidPtr(__pyx_t_4, "_greenlet_imported", (void **)&__pyx_vp_6gevent_6_event__greenlet_imported, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_function_import_code(void) { - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); - /*--- Function import code ---*/ - __pyx_t_1 = __Pyx_ImportModule("gevent.__hub_local"); if (!__pyx_t_1) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_ImportFunction(__pyx_t_1, "get_hub_noargs", (void (**)(void))&__pyx_f_6gevent_11__hub_local_get_hub_noargs, "struct __pyx_obj_6gevent_21__greenlet_primitives_SwitchOutGreenletWithLoop *(int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) - Py_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_RefNannyFinishContext(); - return -1; -} - - -#if PY_MAJOR_VERSION < 3 -#ifdef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC void -#else -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -#endif -#else -#ifdef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC PyObject * -#else -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -#endif -#endif -#ifndef CYTHON_SMALL_CODE -#if defined(__clang__) - #define CYTHON_SMALL_CODE -#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4))) - #define CYTHON_SMALL_CODE __attribute__((cold)) -#else - #define CYTHON_SMALL_CODE -#endif -#endif - - -#if PY_MAJOR_VERSION < 3 -__Pyx_PyMODINIT_FUNC init_queue(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC init_queue(void) -#else -__Pyx_PyMODINIT_FUNC PyInit__queue(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC PyInit__queue(void) -#if CYTHON_PEP489_MULTI_PHASE_INIT -{ - return PyModuleDef_Init(&__pyx_moduledef); -} -static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) { - PyObject *value = PyObject_GetAttrString(spec, from_name); - int result = 0; - if (likely(value)) { - result = PyDict_SetItemString(moddict, to_name, value); - Py_DECREF(value); - } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Clear(); - } else { - result = -1; - } - return result; -} -static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) { - PyObject *module = NULL, *moddict, *modname; - if (__pyx_m) - return __Pyx_NewRef(__pyx_m); - modname = PyObject_GetAttrString(spec, "name"); - if (unlikely(!modname)) goto bad; - module = PyModule_NewObject(modname); - Py_DECREF(modname); - if (unlikely(!module)) goto bad; - moddict = PyModule_GetDict(module); - if (unlikely(!moddict)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__") < 0)) goto bad; - return module; -bad: - Py_XDECREF(module); - return NULL; -} - - -static int __pyx_pymod_exec__queue(PyObject *__pyx_pyinit_module) -#endif -#endif -{ - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - int __pyx_t_3; - int __pyx_t_4; - int __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - __Pyx_RefNannyDeclarations - #if CYTHON_PEP489_MULTI_PHASE_INIT - if (__pyx_m && __pyx_m == __pyx_pyinit_module) return 0; - #elif PY_MAJOR_VERSION >= 3 - if (__pyx_m) return __Pyx_NewRef(__pyx_m); - #endif - #if CYTHON_REFNANNY -__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); -if (!__Pyx_RefNanny) { - PyErr_Clear(); - __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); - if (!__Pyx_RefNanny) - Py_FatalError("failed to import 'refnanny' module"); -} -#endif - __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit__queue(void)", 0); - if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) - #ifdef __Pyx_CyFunction_USED - if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_FusedFunction_USED - if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Coroutine_USED - if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Generator_USED - if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_AsyncGen_USED - if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_StopAsyncIteration_USED - if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - /*--- Library function declarations ---*/ - /*--- Threads initialization code ---*/ - #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS - #ifdef WITH_THREAD /* Python build with threading support? */ - PyEval_InitThreads(); - #endif - #endif - /*--- Module creation code ---*/ - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_m = __pyx_pyinit_module; - Py_INCREF(__pyx_m); - #else - #if PY_MAJOR_VERSION < 3 - __pyx_m = Py_InitModule4("_queue", __pyx_methods, __pyx_k_Synchronized_queues_The_mod_gev, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); - #else - __pyx_m = PyModule_Create(&__pyx_moduledef); - #endif - if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) - Py_INCREF(__pyx_d); - __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) - #if CYTHON_COMPILING_IN_PYPY - Py_INCREF(__pyx_b); - #endif - if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - /*--- Initialize various global constants etc. ---*/ - if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) - if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - if (__pyx_module_is_main_gevent___queue) { - if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - } - #if PY_MAJOR_VERSION >= 3 - { - PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) - if (!PyDict_GetItemString(modules, "gevent._queue")) { - if (unlikely(PyDict_SetItemString(modules, "gevent._queue", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) - } - } - #endif - /*--- Builtin init code ---*/ - if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Constants init code ---*/ - if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Global type/function init code ---*/ - (void)__Pyx_modinit_global_init_code(); - if (unlikely(__Pyx_modinit_variable_export_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_function_export_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_type_init_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_type_import_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_variable_import_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_function_import_code() != 0)) goto __pyx_L1_error; - /*--- Execution code ---*/ - #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) - if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - - /* "src/gevent/queue.py":31 - * - * from __future__ import absolute_import - * import sys # <<<<<<<<<<<<<< - * from heapq import heappush as _heappush - * from heapq import heappop as _heappop - */ - __pyx_t_1 = __Pyx_Import(__pyx_n_s_sys, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 31, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_1) < 0) __PYX_ERR(0, 31, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":32 - * from __future__ import absolute_import - * import sys - * from heapq import heappush as _heappush # <<<<<<<<<<<<<< - * from heapq import heappop as _heappop - * from heapq import heapify as _heapify - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 32, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_heappush_2); - __Pyx_GIVEREF(__pyx_n_s_heappush_2); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_heappush_2); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_heapq, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 32, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_heappush_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 32, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_v_6gevent_6_queue__heappush); - __Pyx_DECREF_SET(__pyx_v_6gevent_6_queue__heappush, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/queue.py":33 - * import sys - * from heapq import heappush as _heappush - * from heapq import heappop as _heappop # <<<<<<<<<<<<<< - * from heapq import heapify as _heapify - * import collections - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 33, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_heappop_2); - __Pyx_GIVEREF(__pyx_n_s_heappop_2); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_heappop_2); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_heapq, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 33, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_heappop_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 33, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_v_6gevent_6_queue__heappop); - __Pyx_DECREF_SET(__pyx_v_6gevent_6_queue__heappop, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":34 - * from heapq import heappush as _heappush - * from heapq import heappop as _heappop - * from heapq import heapify as _heapify # <<<<<<<<<<<<<< - * import collections - * - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 34, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_heapify_2); - __Pyx_GIVEREF(__pyx_n_s_heapify_2); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_heapify_2); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_heapq, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 34, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_heapify_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 34, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_v_6gevent_6_queue__heapify); - __Pyx_DECREF_SET(__pyx_v_6gevent_6_queue__heapify, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/queue.py":35 - * from heapq import heappop as _heappop - * from heapq import heapify as _heapify - * import collections # <<<<<<<<<<<<<< - * - * if sys.version_info[0] == 2: - */ - __pyx_t_2 = __Pyx_Import(__pyx_n_s_collections, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 35, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_collections, __pyx_t_2) < 0) __PYX_ERR(0, 35, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/queue.py":37 - * import collections - * - * if sys.version_info[0] == 2: # <<<<<<<<<<<<<< - * import Queue as __queue__ # python 3: pylint:disable=import-error - * else: - */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 37, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_version_info); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 37, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 37, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyInt_EqObjC(__pyx_t_2, __pyx_int_2, 2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 37, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 37, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (__pyx_t_3) { - - /* "src/gevent/queue.py":38 - * - * if sys.version_info[0] == 2: - * import Queue as __queue__ # python 3: pylint:disable=import-error # <<<<<<<<<<<<<< - * else: - * import queue as __queue__ # python 2: pylint:disable=import-error - */ - __pyx_t_1 = __Pyx_Import(__pyx_n_s_Queue, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 38, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_queue_2, __pyx_t_1) < 0) __PYX_ERR(0, 38, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":37 - * import collections - * - * if sys.version_info[0] == 2: # <<<<<<<<<<<<<< - * import Queue as __queue__ # python 3: pylint:disable=import-error - * else: - */ - goto __pyx_L2; - } - - /* "src/gevent/queue.py":40 - * import Queue as __queue__ # python 3: pylint:disable=import-error - * else: - * import queue as __queue__ # python 2: pylint:disable=import-error # <<<<<<<<<<<<<< - * Full = __queue__.Full - * Empty = __queue__.Empty - */ - /*else*/ { - __pyx_t_1 = __Pyx_Import(__pyx_n_s_queue, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 40, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_queue_2, __pyx_t_1) < 0) __PYX_ERR(0, 40, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __pyx_L2:; - - /* "src/gevent/queue.py":41 - * else: - * import queue as __queue__ # python 2: pylint:disable=import-error - * Full = __queue__.Full # <<<<<<<<<<<<<< - * Empty = __queue__.Empty - * - */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_queue_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 41, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Full); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 41, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (PyDict_SetItem(__pyx_d, __pyx_n_s_Full, __pyx_t_2) < 0) __PYX_ERR(0, 41, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/queue.py":42 - * import queue as __queue__ # python 2: pylint:disable=import-error - * Full = __queue__.Full - * Empty = __queue__.Empty # <<<<<<<<<<<<<< - * - * from gevent.timeout import Timeout - */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_queue_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 42, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Empty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 42, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (PyDict_SetItem(__pyx_d, __pyx_n_s_Empty, __pyx_t_1) < 0) __PYX_ERR(0, 42, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":44 - * Empty = __queue__.Empty - * - * from gevent.timeout import Timeout # <<<<<<<<<<<<<< - * from gevent._hub_local import get_hub_noargs as get_hub - * from greenlet import getcurrent - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 44, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_Timeout); - __Pyx_GIVEREF(__pyx_n_s_Timeout); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_Timeout); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_gevent_timeout, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 44, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Timeout); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 44, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_Timeout, __pyx_t_1) < 0) __PYX_ERR(0, 44, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/queue.py":45 - * - * from gevent.timeout import Timeout - * from gevent._hub_local import get_hub_noargs as get_hub # <<<<<<<<<<<<<< - * from greenlet import getcurrent - * from gevent.exceptions import InvalidSwitchError - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 45, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_get_hub_noargs); - __Pyx_GIVEREF(__pyx_n_s_get_hub_noargs); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_get_hub_noargs); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_gevent__hub_local, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 45, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_get_hub_noargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 45, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_hub, __pyx_t_2) < 0) __PYX_ERR(0, 45, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":46 - * from gevent.timeout import Timeout - * from gevent._hub_local import get_hub_noargs as get_hub - * from greenlet import getcurrent # <<<<<<<<<<<<<< - * from gevent.exceptions import InvalidSwitchError - * - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 46, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_getcurrent); - __Pyx_GIVEREF(__pyx_n_s_getcurrent); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_getcurrent); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_greenlet, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 46, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_getcurrent); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 46, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_getcurrent, __pyx_t_1) < 0) __PYX_ERR(0, 46, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/queue.py":47 - * from gevent._hub_local import get_hub_noargs as get_hub - * from greenlet import getcurrent - * from gevent.exceptions import InvalidSwitchError # <<<<<<<<<<<<<< - * - * __all__ = [] - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 47, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_InvalidSwitchError); - __Pyx_GIVEREF(__pyx_n_s_InvalidSwitchError); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_InvalidSwitchError); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_gevent_exceptions, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 47, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_InvalidSwitchError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 47, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_InvalidSwitchError, __pyx_t_2) < 0) __PYX_ERR(0, 47, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":49 - * from gevent.exceptions import InvalidSwitchError - * - * __all__ = [] # <<<<<<<<<<<<<< - * __implements__ = ['Queue', 'PriorityQueue', 'LifoQueue'] - * __extensions__ = ['JoinableQueue', 'Channel'] - */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 49, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_all, __pyx_t_1) < 0) __PYX_ERR(0, 49, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":50 - * - * __all__ = [] - * __implements__ = ['Queue', 'PriorityQueue', 'LifoQueue'] # <<<<<<<<<<<<<< - * __extensions__ = ['JoinableQueue', 'Channel'] - * __imports__ = ['Empty', 'Full'] - */ - __pyx_t_1 = PyList_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 50, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_Queue); - __Pyx_GIVEREF(__pyx_n_s_Queue); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_Queue); - __Pyx_INCREF(__pyx_n_s_PriorityQueue); - __Pyx_GIVEREF(__pyx_n_s_PriorityQueue); - PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_PriorityQueue); - __Pyx_INCREF(__pyx_n_s_LifoQueue); - __Pyx_GIVEREF(__pyx_n_s_LifoQueue); - PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_s_LifoQueue); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_implements, __pyx_t_1) < 0) __PYX_ERR(0, 50, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":51 - * __all__ = [] - * __implements__ = ['Queue', 'PriorityQueue', 'LifoQueue'] - * __extensions__ = ['JoinableQueue', 'Channel'] # <<<<<<<<<<<<<< - * __imports__ = ['Empty', 'Full'] - * if hasattr(__queue__, 'SimpleQueue'): - */ - __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 51, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_JoinableQueue); - __Pyx_GIVEREF(__pyx_n_s_JoinableQueue); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_JoinableQueue); - __Pyx_INCREF(__pyx_n_s_Channel); - __Pyx_GIVEREF(__pyx_n_s_Channel); - PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_Channel); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_extensions, __pyx_t_1) < 0) __PYX_ERR(0, 51, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":52 - * __implements__ = ['Queue', 'PriorityQueue', 'LifoQueue'] - * __extensions__ = ['JoinableQueue', 'Channel'] - * __imports__ = ['Empty', 'Full'] # <<<<<<<<<<<<<< - * if hasattr(__queue__, 'SimpleQueue'): - * __all__.append('SimpleQueue') # New in 3.7 - */ - __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 52, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_Empty); - __Pyx_GIVEREF(__pyx_n_s_Empty); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_Empty); - __Pyx_INCREF(__pyx_n_s_Full); - __Pyx_GIVEREF(__pyx_n_s_Full); - PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_Full); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_imports, __pyx_t_1) < 0) __PYX_ERR(0, 52, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":53 - * __extensions__ = ['JoinableQueue', 'Channel'] - * __imports__ = ['Empty', 'Full'] - * if hasattr(__queue__, 'SimpleQueue'): # <<<<<<<<<<<<<< - * __all__.append('SimpleQueue') # New in 3.7 - * # SimpleQueue is implemented in C and directly allocates locks - */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_queue_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 53, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_HasAttr(__pyx_t_1, __pyx_n_s_SimpleQueue); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 53, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_4 = (__pyx_t_3 != 0); - if (__pyx_t_4) { - - /* "src/gevent/queue.py":54 - * __imports__ = ['Empty', 'Full'] - * if hasattr(__queue__, 'SimpleQueue'): - * __all__.append('SimpleQueue') # New in 3.7 # <<<<<<<<<<<<<< - * # SimpleQueue is implemented in C and directly allocates locks - * # unaffected by monkey patching. We need the Python version. - */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_all); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 54, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = __Pyx_PyObject_Append(__pyx_t_1, __pyx_n_s_SimpleQueue); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 54, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":57 - * # SimpleQueue is implemented in C and directly allocates locks - * # unaffected by monkey patching. We need the Python version. - * SimpleQueue = __queue__._PySimpleQueue # pylint:disable=no-member # <<<<<<<<<<<<<< - * __all__ += (__implements__ + __extensions__ + __imports__) - * - */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_queue_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_PySimpleQueue); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 57, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (PyDict_SetItem(__pyx_d, __pyx_n_s_SimpleQueue, __pyx_t_2) < 0) __PYX_ERR(0, 57, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "src/gevent/queue.py":53 - * __extensions__ = ['JoinableQueue', 'Channel'] - * __imports__ = ['Empty', 'Full'] - * if hasattr(__queue__, 'SimpleQueue'): # <<<<<<<<<<<<<< - * __all__.append('SimpleQueue') # New in 3.7 - * # SimpleQueue is implemented in C and directly allocates locks - */ - } - - /* "src/gevent/queue.py":58 - * # unaffected by monkey patching. We need the Python version. - * SimpleQueue = __queue__._PySimpleQueue # pylint:disable=no-member - * __all__ += (__implements__ + __extensions__ + __imports__) # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_all); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 58, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_implements); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 58, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_extensions); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 58, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = PyNumber_Add(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 58, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_imports); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 58, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_1 = PyNumber_Add(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 58, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyNumber_InPlaceAdd(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 58, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (PyDict_SetItem(__pyx_d, __pyx_n_s_all, __pyx_t_6) < 0) __PYX_ERR(0, 58, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - - /* "src/gevent/queue.py":72 - * pass - * - * import gevent._waiter # <<<<<<<<<<<<<< - * locals()['Waiter'] = gevent._waiter.Waiter - * - */ - __pyx_t_6 = __Pyx_Import(__pyx_n_s_gevent__waiter, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 72, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_gevent, __pyx_t_6) < 0) __PYX_ERR(0, 72, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - - /* "src/gevent/queue.py":73 - * - * import gevent._waiter - * locals()['Waiter'] = gevent._waiter.Waiter # <<<<<<<<<<<<<< - * - * class ItemWaiter(Waiter): # pylint:disable=undefined-variable - */ - __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_gevent); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 73, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_waiter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 73, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Waiter); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 73, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_Globals(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 73, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (unlikely(PyDict_SetItem(__pyx_t_1, __pyx_n_s_Waiter, __pyx_t_6) < 0)) __PYX_ERR(0, 73, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - - /* "src/gevent/queue.py":78 - * # pylint:disable=assigning-non-slot - * __slots__ = ( - * 'item', # <<<<<<<<<<<<<< - * 'queue', - * ) - */ - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_ItemWaiter->tp_dict, __pyx_n_s_slots, __pyx_tuple__7) < 0) __PYX_ERR(0, 77, __pyx_L1_error) - PyType_Modified(__pyx_ptype_6gevent_6_queue_ItemWaiter); - - /* "src/gevent/queue.py":87 - * self.queue = queue - * - * def put_and_switch(self): # <<<<<<<<<<<<<< - * self.queue._put(self.item) - * self.queue = None - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_10ItemWaiter_3put_and_switch, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ItemWaiter_put_and_switch, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__9)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 87, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_ItemWaiter->tp_dict, __pyx_n_s_put_and_switch, __pyx_t_6) < 0) __PYX_ERR(0, 87, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_ItemWaiter); - - /* "src/gevent/queue.py":115 - * - * __slots__ = ( - * '_maxsize', # <<<<<<<<<<<<<< - * 'getters', - * 'putters', - */ - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_Queue->tp_dict, __pyx_n_s_slots, __pyx_tuple__10) < 0) __PYX_ERR(0, 114, __pyx_L1_error) - PyType_Modified(__pyx_ptype_6gevent_6_queue_Queue); - - /* "src/gevent/queue.py":165 - * self._maxsize = nv - * - * def copy(self): # <<<<<<<<<<<<<< - * return type(self)(self.maxsize, self.queue) - * - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_5Queue_3copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Queue_copy, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__12)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 165, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_Queue->tp_dict, __pyx_n_s_copy, __pyx_t_6) < 0) __PYX_ERR(0, 165, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_Queue); - - /* "src/gevent/queue.py":168 - * return type(self)(self.maxsize, self.queue) - * - * def _create_queue(self, items=()): # <<<<<<<<<<<<<< - * return collections.deque(items) - * - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_5Queue_5_create_queue, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Queue__create_queue, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__14)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 168, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_Queue->tp_dict, __pyx_n_s_create_queue, __pyx_t_6) < 0) __PYX_ERR(0, 168, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_Queue); - - /* "src/gevent/queue.py":171 - * return collections.deque(items) - * - * def _get(self): # <<<<<<<<<<<<<< - * return self.queue.popleft() - * - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_5Queue_7_get, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Queue__get, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__16)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 171, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_Queue->tp_dict, __pyx_n_s_get, __pyx_t_6) < 0) __PYX_ERR(0, 171, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_Queue); - - /* "src/gevent/queue.py":174 - * return self.queue.popleft() - * - * def _peek(self): # <<<<<<<<<<<<<< - * return self.queue[0] - * - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_5Queue_9_peek, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Queue__peek, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__18)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 174, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_Queue->tp_dict, __pyx_n_s_peek, __pyx_t_6) < 0) __PYX_ERR(0, 174, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_Queue); - - /* "src/gevent/queue.py":177 - * return self.queue[0] - * - * def _put(self, item): # <<<<<<<<<<<<<< - * self.queue.append(item) - * - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_5Queue_11_put, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Queue__put, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__20)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 177, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_Queue->tp_dict, __pyx_n_s_put, __pyx_t_6) < 0) __PYX_ERR(0, 177, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_Queue); - - /* "src/gevent/queue.py":186 - * return '<%s%s>' % (type(self).__name__, self._format()) - * - * def _format(self): # <<<<<<<<<<<<<< - * result = [] - * if self.maxsize is not None: - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_5Queue_17_format, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Queue__format, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__22)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 186, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_Queue->tp_dict, __pyx_n_s_format, __pyx_t_6) < 0) __PYX_ERR(0, 186, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_Queue); - - /* "src/gevent/queue.py":200 - * return '' - * - * def qsize(self): # <<<<<<<<<<<<<< - * """Return the size of the queue.""" - * return len(self.queue) - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_5Queue_19qsize, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Queue_qsize, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__24)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 200, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_Queue->tp_dict, __pyx_n_s_qsize, __pyx_t_6) < 0) __PYX_ERR(0, 200, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_Queue); - - /* "src/gevent/queue.py":232 - * return True - * - * def empty(self): # <<<<<<<<<<<<<< - * """Return ``True`` if the queue is empty, ``False`` otherwise.""" - * return not self.qsize() - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_5Queue_27empty, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Queue_empty, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__26)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 232, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_Queue->tp_dict, __pyx_n_s_empty, __pyx_t_6) < 0) __PYX_ERR(0, 232, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_Queue); - - /* "src/gevent/queue.py":236 - * return not self.qsize() - * - * def full(self): # <<<<<<<<<<<<<< - * """Return ``True`` if the queue is full, ``False`` otherwise. - * - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_5Queue_29full, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Queue_full, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__28)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 236, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_Queue->tp_dict, __pyx_n_s_full, __pyx_t_6) < 0) __PYX_ERR(0, 236, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_Queue); - - /* "src/gevent/queue.py":243 - * return self._maxsize > 0 and self.qsize() >= self._maxsize - * - * def put(self, item, block=True, timeout=None): # <<<<<<<<<<<<<< - * """Put an item into the queue. - * - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_5Queue_31put, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Queue_put, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__30)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 243, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_Queue->tp_dict, __pyx_n_s_put_2, __pyx_t_6) < 0) __PYX_ERR(0, 243, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_Queue); - - /* "src/gevent/queue.py":285 - * raise Full - * - * def put_nowait(self, item): # <<<<<<<<<<<<<< - * """Put an item into the queue without blocking. - * - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_5Queue_33put_nowait, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Queue_put_nowait, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__32)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 285, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_Queue->tp_dict, __pyx_n_s_put_nowait, __pyx_t_6) < 0) __PYX_ERR(0, 285, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_Queue); - - /* "src/gevent/queue.py":329 - * _safe_remove(self.getters, waiter) - * - * def get(self, block=True, timeout=None): # <<<<<<<<<<<<<< - * """Remove and return an item from the queue. - * - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_5Queue_35get, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Queue_get, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 329, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_Queue->tp_dict, __pyx_n_s_get_2, __pyx_t_6) < 0) __PYX_ERR(0, 329, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_Queue); - - /* "src/gevent/queue.py":346 - * return self.__get_or_peek(self._get, block, timeout) - * - * def get_nowait(self): # <<<<<<<<<<<<<< - * """Remove and return an item from the queue without blocking. - * - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_5Queue_37get_nowait, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Queue_get_nowait, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__36)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 346, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_Queue->tp_dict, __pyx_n_s_get_nowait, __pyx_t_6) < 0) __PYX_ERR(0, 346, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_Queue); - - /* "src/gevent/queue.py":354 - * return self.get(False) - * - * def peek(self, block=True, timeout=None): # <<<<<<<<<<<<<< - * """Return an item from the queue without removing it. - * - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_5Queue_39peek, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Queue_peek, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__38)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 354, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_Queue->tp_dict, __pyx_n_s_peek_2, __pyx_t_6) < 0) __PYX_ERR(0, 354, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_Queue); - - /* "src/gevent/queue.py":370 - * return self.__get_or_peek(self._peek, block, timeout) - * - * def peek_nowait(self): # <<<<<<<<<<<<<< - * """Return an item from the queue without blocking. - * - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_5Queue_41peek_nowait, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Queue_peek_nowait, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__40)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 370, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_Queue->tp_dict, __pyx_n_s_peek_nowait, __pyx_t_6) < 0) __PYX_ERR(0, 370, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_Queue); - - /* "src/gevent/queue.py":378 - * return self.peek(False) - * - * def _unlock(self): # <<<<<<<<<<<<<< - * while True: - * repeat = False - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_5Queue_43_unlock, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Queue__unlock, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__42)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 378, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_Queue->tp_dict, __pyx_n_s_unlock, __pyx_t_6) < 0) __PYX_ERR(0, 378, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_Queue); - - /* "src/gevent/queue.py":410 - * return result - * - * next = __next__ # Py2 # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_6 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6gevent_6_queue_Queue, __pyx_n_s_next); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 410, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_Queue->tp_dict, __pyx_n_s_next_2, __pyx_t_6) < 0) __PYX_ERR(0, 410, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_Queue); - - /* "src/gevent/queue.py":417 - * # be bound. Changing its maxsize has no effect. - * - * __slots__ = () # <<<<<<<<<<<<<< - * - * def __init__(self, maxsize=None, items=()): - */ - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_UnboundQueue->tp_dict, __pyx_n_s_slots, __pyx_empty_tuple) < 0) __PYX_ERR(0, 417, __pyx_L1_error) - PyType_Modified(__pyx_ptype_6gevent_6_queue_UnboundQueue); - - /* "src/gevent/queue.py":425 - * self.putters = None # Will never be used. - * - * def put(self, item, block=True, timeout=None): # <<<<<<<<<<<<<< - * self._put(item) - * if self.getters: - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_12UnboundQueue_3put, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_UnboundQueue_put, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__44)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 425, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_UnboundQueue->tp_dict, __pyx_n_s_put_2, __pyx_t_6) < 0) __PYX_ERR(0, 425, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_UnboundQueue); - - /* "src/gevent/queue.py":442 - * ''' - * - * __slots__ = () # <<<<<<<<<<<<<< - * - * def _create_queue(self, items=()): - */ - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_PriorityQueue->tp_dict, __pyx_n_s_slots, __pyx_empty_tuple) < 0) __PYX_ERR(0, 442, __pyx_L1_error) - PyType_Modified(__pyx_ptype_6gevent_6_queue_PriorityQueue); - - /* "src/gevent/queue.py":444 - * __slots__ = () - * - * def _create_queue(self, items=()): # <<<<<<<<<<<<<< - * q = list(items) - * _heapify(q) - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_13PriorityQueue_1_create_queue, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PriorityQueue__create_queue, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 444, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_PriorityQueue->tp_dict, __pyx_n_s_create_queue, __pyx_t_6) < 0) __PYX_ERR(0, 444, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_PriorityQueue); - - /* "src/gevent/queue.py":449 - * return q - * - * def _put(self, item): # <<<<<<<<<<<<<< - * _heappush(self.queue, item) - * - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_13PriorityQueue_3_put, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PriorityQueue__put, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 449, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_PriorityQueue->tp_dict, __pyx_n_s_put, __pyx_t_6) < 0) __PYX_ERR(0, 449, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_PriorityQueue); - - /* "src/gevent/queue.py":452 - * _heappush(self.queue, item) - * - * def _get(self): # <<<<<<<<<<<<<< - * return _heappop(self.queue) - * - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_13PriorityQueue_5_get, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PriorityQueue__get, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__50)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 452, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_PriorityQueue->tp_dict, __pyx_n_s_get, __pyx_t_6) < 0) __PYX_ERR(0, 452, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_PriorityQueue); - - /* "src/gevent/queue.py":459 - * '''A subclass of :class:`Queue` that retrieves most recently added entries first.''' - * - * __slots__ = () # <<<<<<<<<<<<<< - * - * def _create_queue(self, items=()): - */ - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_LifoQueue->tp_dict, __pyx_n_s_slots, __pyx_empty_tuple) < 0) __PYX_ERR(0, 459, __pyx_L1_error) - PyType_Modified(__pyx_ptype_6gevent_6_queue_LifoQueue); - - /* "src/gevent/queue.py":461 - * __slots__ = () - * - * def _create_queue(self, items=()): # <<<<<<<<<<<<<< - * return list(items) - * - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_9LifoQueue_1_create_queue, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_LifoQueue__create_queue, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__52)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 461, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_LifoQueue->tp_dict, __pyx_n_s_create_queue, __pyx_t_6) < 0) __PYX_ERR(0, 461, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_LifoQueue); - - /* "src/gevent/queue.py":464 - * return list(items) - * - * def _put(self, item): # <<<<<<<<<<<<<< - * self.queue.append(item) - * - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_9LifoQueue_3_put, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_LifoQueue__put, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__54)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 464, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_LifoQueue->tp_dict, __pyx_n_s_put, __pyx_t_6) < 0) __PYX_ERR(0, 464, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_LifoQueue); - - /* "src/gevent/queue.py":467 - * self.queue.append(item) - * - * def _get(self): # <<<<<<<<<<<<<< - * return self.queue.pop() - * - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_9LifoQueue_5_get, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_LifoQueue__get, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__56)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 467, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_LifoQueue->tp_dict, __pyx_n_s_get, __pyx_t_6) < 0) __PYX_ERR(0, 467, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_LifoQueue); - - /* "src/gevent/queue.py":470 - * return self.queue.pop() - * - * def _peek(self): # <<<<<<<<<<<<<< - * return self.queue[-1] - * - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_9LifoQueue_7_peek, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_LifoQueue__peek, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__58)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 470, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_LifoQueue->tp_dict, __pyx_n_s_peek, __pyx_t_6) < 0) __PYX_ERR(0, 470, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_LifoQueue); - - /* "src/gevent/queue.py":481 - * - * __slots__ = ( - * '_cond', # <<<<<<<<<<<<<< - * 'unfinished_tasks', - * ) - */ - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_JoinableQueue->tp_dict, __pyx_n_s_slots, __pyx_tuple__59) < 0) __PYX_ERR(0, 480, __pyx_L1_error) - PyType_Modified(__pyx_ptype_6gevent_6_queue_JoinableQueue); - - /* "src/gevent/queue.py":509 - * self._cond.clear() - * - * def copy(self): # <<<<<<<<<<<<<< - * return type(self)(self.maxsize, self.queue, self.unfinished_tasks) - * - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_13JoinableQueue_3copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_JoinableQueue_copy, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__61)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 509, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_JoinableQueue->tp_dict, __pyx_n_s_copy, __pyx_t_6) < 0) __PYX_ERR(0, 509, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_JoinableQueue); - - /* "src/gevent/queue.py":512 - * return type(self)(self.maxsize, self.queue, self.unfinished_tasks) - * - * def _format(self): # <<<<<<<<<<<<<< - * result = Queue._format(self) - * if self.unfinished_tasks: - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_13JoinableQueue_5_format, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_JoinableQueue__format, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__63)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 512, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_JoinableQueue->tp_dict, __pyx_n_s_format, __pyx_t_6) < 0) __PYX_ERR(0, 512, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_JoinableQueue); - - /* "src/gevent/queue.py":518 - * return result - * - * def _put(self, item): # <<<<<<<<<<<<<< - * Queue._put(self, item) - * self.unfinished_tasks += 1 - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_13JoinableQueue_7_put, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_JoinableQueue__put, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__65)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 518, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_JoinableQueue->tp_dict, __pyx_n_s_put, __pyx_t_6) < 0) __PYX_ERR(0, 518, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_JoinableQueue); - - /* "src/gevent/queue.py":523 - * self._cond.clear() - * - * def task_done(self): # <<<<<<<<<<<<<< - * '''Indicate that a formerly enqueued task is complete. Used by queue consumer threads. - * For each :meth:`get <Queue.get>` used to fetch a task, a subsequent call to :meth:`task_done` tells the queue - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_13JoinableQueue_9task_done, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_JoinableQueue_task_done, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__67)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 523, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_JoinableQueue->tp_dict, __pyx_n_s_task_done, __pyx_t_6) < 0) __PYX_ERR(0, 523, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_JoinableQueue); - - /* "src/gevent/queue.py":540 - * self._cond.set() - * - * def join(self, timeout=None): # <<<<<<<<<<<<<< - * ''' - * Block until all items in the queue have been gotten and processed. - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_13JoinableQueue_11join, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_JoinableQueue_join, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__69)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 540, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_JoinableQueue->tp_dict, __pyx_n_s_join, __pyx_t_6) < 0) __PYX_ERR(0, 540, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_JoinableQueue); - - /* "src/gevent/queue.py":563 - * - * __slots__ = ( - * 'getters', # <<<<<<<<<<<<<< - * 'putters', - * 'hub', - */ - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_Channel->tp_dict, __pyx_n_s_slots, __pyx_tuple__70) < 0) __PYX_ERR(0, 562, __pyx_L1_error) - PyType_Modified(__pyx_ptype_6gevent_6_queue_Channel); - - /* "src/gevent/queue.py":585 - * return '<%s %s>' % (type(self).__name__, self._format()) - * - * def _format(self): # <<<<<<<<<<<<<< - * result = '' - * if self.getters: - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_7Channel_7_format, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Channel__format, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__72)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 585, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_Channel->tp_dict, __pyx_n_s_format, __pyx_t_6) < 0) __PYX_ERR(0, 585, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_Channel); - - /* "src/gevent/queue.py":597 - * return len(self.putters) - len(self.getters) - * - * def qsize(self): # <<<<<<<<<<<<<< - * return 0 - * - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_7Channel_9qsize, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Channel_qsize, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__74)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 597, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_Channel->tp_dict, __pyx_n_s_qsize, __pyx_t_6) < 0) __PYX_ERR(0, 597, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_Channel); - - /* "src/gevent/queue.py":600 - * return 0 - * - * def empty(self): # <<<<<<<<<<<<<< - * return True - * - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_7Channel_11empty, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Channel_empty, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__76)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 600, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_Channel->tp_dict, __pyx_n_s_empty, __pyx_t_6) < 0) __PYX_ERR(0, 600, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_Channel); - - /* "src/gevent/queue.py":603 - * return True - * - * def full(self): # <<<<<<<<<<<<<< - * return True - * - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_7Channel_13full, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Channel_full, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__78)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 603, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_Channel->tp_dict, __pyx_n_s_full, __pyx_t_6) < 0) __PYX_ERR(0, 603, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_Channel); - - /* "src/gevent/queue.py":606 - * return True - * - * def put(self, item, block=True, timeout=None): # <<<<<<<<<<<<<< - * if self.hub is getcurrent(): - * if self.getters: - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_7Channel_15put, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Channel_put, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__80)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 606, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_Channel->tp_dict, __pyx_n_s_put_2, __pyx_t_6) < 0) __PYX_ERR(0, 606, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_Channel); - - /* "src/gevent/queue.py":633 - * timeout.cancel() - * - * def put_nowait(self, item): # <<<<<<<<<<<<<< - * self.put(item, False) - * - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_7Channel_17put_nowait, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Channel_put_nowait, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__82)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 633, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_Channel->tp_dict, __pyx_n_s_put_nowait, __pyx_t_6) < 0) __PYX_ERR(0, 633, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_Channel); - - /* "src/gevent/queue.py":636 - * self.put(item, False) - * - * def get(self, block=True, timeout=None): # <<<<<<<<<<<<<< - * if self.hub is getcurrent(): - * if self.putters: - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_7Channel_19get, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Channel_get, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__84)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 636, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_Channel->tp_dict, __pyx_n_s_get_2, __pyx_t_6) < 0) __PYX_ERR(0, 636, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_Channel); - - /* "src/gevent/queue.py":659 - * timeout.close() - * - * def get_nowait(self): # <<<<<<<<<<<<<< - * return self.get(False) - * - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_7Channel_21get_nowait, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Channel_get_nowait, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__86)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 659, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_Channel->tp_dict, __pyx_n_s_get_nowait, __pyx_t_6) < 0) __PYX_ERR(0, 659, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_Channel); - - /* "src/gevent/queue.py":662 - * return self.get(False) - * - * def _unlock(self): # <<<<<<<<<<<<<< - * while self.putters and self.getters: - * getter = self.getters.popleft() - */ - __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_6_queue_7Channel_23_unlock, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Channel__unlock, NULL, __pyx_n_s_gevent__queue, __pyx_d, ((PyObject *)__pyx_codeobj__88)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 662, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_Channel->tp_dict, __pyx_n_s_unlock, __pyx_t_6) < 0) __PYX_ERR(0, 662, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_Channel); - - /* "src/gevent/queue.py":682 - * return result - * - * next = __next__ # Py2 # <<<<<<<<<<<<<< - * - * from gevent._util import import_c_accel - */ - __pyx_t_6 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_6gevent_6_queue_Channel, __pyx_n_s_next); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 682, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem((PyObject *)__pyx_ptype_6gevent_6_queue_Channel->tp_dict, __pyx_n_s_next_2, __pyx_t_6) < 0) __PYX_ERR(0, 682, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - PyType_Modified(__pyx_ptype_6gevent_6_queue_Channel); - - /* "src/gevent/queue.py":684 - * next = __next__ # Py2 - * - * from gevent._util import import_c_accel # <<<<<<<<<<<<<< - * import_c_accel(globals(), 'gevent._queue') - */ - __pyx_t_6 = PyList_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 684, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_INCREF(__pyx_n_s_import_c_accel); - __Pyx_GIVEREF(__pyx_n_s_import_c_accel); - PyList_SET_ITEM(__pyx_t_6, 0, __pyx_n_s_import_c_accel); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_gevent__util, __pyx_t_6, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 684, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_import_c_accel); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 684, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_import_c_accel, __pyx_t_6) < 0) __PYX_ERR(0, 684, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "src/gevent/queue.py":685 - * - * from gevent._util import import_c_accel - * import_c_accel(globals(), 'gevent._queue') # <<<<<<<<<<<<<< - */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_import_c_accel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 685, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_6 = __Pyx_Globals(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 685, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 685, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_6); - __Pyx_INCREF(__pyx_n_s_gevent__queue); - __Pyx_GIVEREF(__pyx_n_s_gevent__queue); - PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_gevent__queue); - __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 685, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - - /* "src/gevent/queue.py":1 - * # Copyright (c) 2009-2012 Denis Bilenko. See LICENSE for details. # <<<<<<<<<<<<<< - * # copyright (c) 2018 gevent - * # cython: auto_pickle=False,embedsignature=True,always_allow_keywords=False - */ - __pyx_t_6 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_6) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - - /* "gevent/_event.pxd":30 - * return PyGreenlet_GetCurrent() - * - * cdef inline void greenlet_init(): # <<<<<<<<<<<<<< - * global _greenlet_imported - * if not _greenlet_imported: - */ - - /*--- Wrapped vars code ---*/ - - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - if (__pyx_m) { - if (__pyx_d) { - __Pyx_AddTraceback("init gevent._queue", 0, __pyx_lineno, __pyx_filename); - } - Py_DECREF(__pyx_m); __pyx_m = 0; - } else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_ImportError, "init gevent._queue"); - } - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - #if CYTHON_PEP489_MULTI_PHASE_INIT - return (__pyx_m != NULL) ? 0 : -1; - #elif PY_MAJOR_VERSION >= 3 - return __pyx_m; - #else - return; - #endif -} - -/* --- Runtime support code --- */ -/* Refnanny */ -#if CYTHON_REFNANNY -static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { - PyObject *m = NULL, *p = NULL; - void *r = NULL; - m = PyImport_ImportModule((char *)modname); - if (!m) goto end; - p = PyObject_GetAttrString(m, (char *)"RefNannyAPI"); - if (!p) goto end; - r = PyLong_AsVoidPtr(p); -end: - Py_XDECREF(p); - Py_XDECREF(m); - return (__Pyx_RefNannyAPIStruct *)r; -} -#endif - -/* PyObjectGetAttrStr */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_getattro)) - return tp->tp_getattro(obj, attr_name); -#if PY_MAJOR_VERSION < 3 - if (likely(tp->tp_getattr)) - return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); -#endif - return PyObject_GetAttr(obj, attr_name); -} -#endif - -/* GetBuiltinName */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name) { - PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); - if (unlikely(!result)) { - PyErr_Format(PyExc_NameError, -#if PY_MAJOR_VERSION >= 3 - "name '%U' is not defined", name); -#else - "name '%.200s' is not defined", PyString_AS_STRING(name)); -#endif - } - return result; -} - -/* PyCFunctionFastCall */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { - PyCFunctionObject *func = (PyCFunctionObject*)func_obj; - PyCFunction meth = PyCFunction_GET_FUNCTION(func); - PyObject *self = PyCFunction_GET_SELF(func); - int flags = PyCFunction_GET_FLAGS(func); - assert(PyCFunction_Check(func)); - assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))); - assert(nargs >= 0); - assert(nargs == 0 || args != NULL); - /* _PyCFunction_FastCallDict() must not be called with an exception set, - because it may clear it (directly or indirectly) and so the - caller loses its exception */ - assert(!PyErr_Occurred()); - if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { - return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL); - } else { - return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs); - } -} -#endif - -/* PyFunctionFastCall */ -#if CYTHON_FAST_PYCALL -#include "frameobject.h" -static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, - PyObject *globals) { - PyFrameObject *f; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject **fastlocals; - Py_ssize_t i; - PyObject *result; - assert(globals != NULL); - /* XXX Perhaps we should create a specialized - PyFrame_New() that doesn't take locals, but does - take builtins without sanity checking them. - */ - assert(tstate != NULL); - f = PyFrame_New(tstate, co, globals, NULL); - if (f == NULL) { - return NULL; - } - fastlocals = f->f_localsplus; - for (i = 0; i < na; i++) { - Py_INCREF(*args); - fastlocals[i] = *args++; - } - result = PyEval_EvalFrameEx(f,0); - ++tstate->recursion_depth; - Py_DECREF(f); - --tstate->recursion_depth; - return result; -} -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs) { - PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); - PyObject *globals = PyFunction_GET_GLOBALS(func); - PyObject *argdefs = PyFunction_GET_DEFAULTS(func); - PyObject *closure; -#if PY_MAJOR_VERSION >= 3 - PyObject *kwdefs; -#endif - PyObject *kwtuple, **k; - PyObject **d; - Py_ssize_t nd; - Py_ssize_t nk; - PyObject *result; - assert(kwargs == NULL || PyDict_Check(kwargs)); - nk = kwargs ? PyDict_Size(kwargs) : 0; - if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { - return NULL; - } - if ( -#if PY_MAJOR_VERSION >= 3 - co->co_kwonlyargcount == 0 && -#endif - likely(kwargs == NULL || nk == 0) && - co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { - if (argdefs == NULL && co->co_argcount == nargs) { - result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); - goto done; - } - else if (nargs == 0 && argdefs != NULL - && co->co_argcount == Py_SIZE(argdefs)) { - /* function called with no arguments, but all parameters have - a default value: use default values as arguments .*/ - args = &PyTuple_GET_ITEM(argdefs, 0); - result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); - goto done; - } - } - if (kwargs != NULL) { - Py_ssize_t pos, i; - kwtuple = PyTuple_New(2 * nk); - if (kwtuple == NULL) { - result = NULL; - goto done; - } - k = &PyTuple_GET_ITEM(kwtuple, 0); - pos = i = 0; - while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { - Py_INCREF(k[i]); - Py_INCREF(k[i+1]); - i += 2; - } - nk = i / 2; - } - else { - kwtuple = NULL; - k = NULL; - } - closure = PyFunction_GET_CLOSURE(func); -#if PY_MAJOR_VERSION >= 3 - kwdefs = PyFunction_GET_KW_DEFAULTS(func); -#endif - if (argdefs != NULL) { - d = &PyTuple_GET_ITEM(argdefs, 0); - nd = Py_SIZE(argdefs); - } - else { - d = NULL; - nd = 0; - } -#if PY_MAJOR_VERSION >= 3 - result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, - args, nargs, - k, (int)nk, - d, (int)nd, kwdefs, closure); -#else - result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, - args, nargs, - k, (int)nk, - d, (int)nd, closure); -#endif - Py_XDECREF(kwtuple); -done: - Py_LeaveRecursiveCall(); - return result; -} -#endif -#endif - -/* PyObjectCall */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { - PyObject *result; - ternaryfunc call = func->ob_type->tp_call; - if (unlikely(!call)) - return PyObject_Call(func, arg, kw); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = (*call)(func, arg, kw); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCallMethO */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { - PyObject *self, *result; - PyCFunction cfunc; - cfunc = PyCFunction_GET_FUNCTION(func); - self = PyCFunction_GET_SELF(func); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = cfunc(self, arg); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCallOneArg */ -#if CYTHON_COMPILING_IN_CPYTHON -static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_New(1); - if (unlikely(!args)) return NULL; - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 0, arg); - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, &arg, 1); - } -#endif - if (likely(PyCFunction_Check(func))) { - if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { - return __Pyx_PyObject_CallMethO(func, arg); -#if CYTHON_FAST_PYCCALL - } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { - return __Pyx_PyCFunction_FastCall(func, &arg, 1); -#endif - } - } - return __Pyx__PyObject_CallOneArg(func, arg); -} -#else -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_Pack(1, arg); - if (unlikely(!args)) return NULL; - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -#endif - -/* SaveResetException */ -#if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - #if PY_VERSION_HEX >= 0x030700A3 - *type = tstate->exc_state.exc_type; - *value = tstate->exc_state.exc_value; - *tb = tstate->exc_state.exc_traceback; - #else - *type = tstate->exc_type; - *value = tstate->exc_value; - *tb = tstate->exc_traceback; - #endif - Py_XINCREF(*type); - Py_XINCREF(*value); - Py_XINCREF(*tb); -} -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - #if PY_VERSION_HEX >= 0x030700A3 - tmp_type = tstate->exc_state.exc_type; - tmp_value = tstate->exc_state.exc_value; - tmp_tb = tstate->exc_state.exc_traceback; - tstate->exc_state.exc_type = type; - tstate->exc_state.exc_value = value; - tstate->exc_state.exc_traceback = tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = type; - tstate->exc_value = value; - tstate->exc_traceback = tb; - #endif - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} -#endif - -/* PyErrExceptionMatches */ -#if CYTHON_FAST_THREAD_STATE -static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; i<n; i++) { - if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1; - } -#endif - for (i=0; i<n; i++) { - if (__Pyx_PyErr_GivenExceptionMatches(exc_type, PyTuple_GET_ITEM(tuple, i))) return 1; - } - return 0; -} -static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) { - PyObject *exc_type = tstate->curexc_type; - if (exc_type == err) return 1; - if (unlikely(!exc_type)) return 0; - if (unlikely(PyTuple_Check(err))) - return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); - return __Pyx_PyErr_GivenExceptionMatches(exc_type, err); -} -#endif - -/* PyErrFetchRestore */ -#if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - tmp_type = tstate->curexc_type; - tmp_value = tstate->curexc_value; - tmp_tb = tstate->curexc_traceback; - tstate->curexc_type = type; - tstate->curexc_value = value; - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - *type = tstate->curexc_type; - *value = tstate->curexc_value; - *tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -} -#endif - -/* RaiseArgTupleInvalid */ -static void __Pyx_RaiseArgtupleInvalid( - const char* func_name, - int exact, - Py_ssize_t num_min, - Py_ssize_t num_max, - Py_ssize_t num_found) -{ - Py_ssize_t num_expected; - const char *more_or_less; - if (num_found < num_min) { - num_expected = num_min; - more_or_less = "at least"; - } else { - num_expected = num_max; - more_or_less = "at most"; - } - if (exact) { - more_or_less = "exactly"; - } - PyErr_Format(PyExc_TypeError, - "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", - func_name, more_or_less, num_expected, - (num_expected == 1) ? "" : "s", num_found); -} - -/* RaiseDoubleKeywords */ -static void __Pyx_RaiseDoubleKeywordsError( - const char* func_name, - PyObject* kw_name) -{ - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION >= 3 - "%s() got multiple values for keyword argument '%U'", func_name, kw_name); - #else - "%s() got multiple values for keyword argument '%s'", func_name, - PyString_AsString(kw_name)); - #endif -} - -/* ParseKeywords */ -static int __Pyx_ParseOptionalKeywords( - PyObject *kwds, - PyObject **argnames[], - PyObject *kwds2, - PyObject *values[], - Py_ssize_t num_pos_args, - const char* function_name) -{ - PyObject *key = 0, *value = 0; - Py_ssize_t pos = 0; - PyObject*** name; - PyObject*** first_kw_arg = argnames + num_pos_args; - while (PyDict_Next(kwds, &pos, &key, &value)) { - name = first_kw_arg; - while (*name && (**name != key)) name++; - if (*name) { - values[name-argnames] = value; - continue; - } - name = first_kw_arg; - #if PY_MAJOR_VERSION < 3 - if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) { - while (*name) { - if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) - && _PyString_Eq(**name, key)) { - values[name-argnames] = value; - break; - } - name++; - } - if (*name) continue; - else { - PyObject*** argname = argnames; - while (argname != first_kw_arg) { - if ((**argname == key) || ( - (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) - && _PyString_Eq(**argname, key))) { - goto arg_passed_twice; - } - argname++; - } - } - } else - #endif - if (likely(PyUnicode_Check(key))) { - while (*name) { - int cmp = (**name == key) ? 0 : - #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 : - #endif - PyUnicode_Compare(**name, key); - if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; - if (cmp == 0) { - values[name-argnames] = value; - break; - } - name++; - } - if (*name) continue; - else { - PyObject*** argname = argnames; - while (argname != first_kw_arg) { - int cmp = (**argname == key) ? 0 : - #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 : - #endif - PyUnicode_Compare(**argname, key); - if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; - if (cmp == 0) goto arg_passed_twice; - argname++; - } - } - } else - goto invalid_keyword_type; - if (kwds2) { - if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; - } else { - goto invalid_keyword; - } - } - return 0; -arg_passed_twice: - __Pyx_RaiseDoubleKeywordsError(function_name, key); - goto bad; -invalid_keyword_type: - PyErr_Format(PyExc_TypeError, - "%.200s() keywords must be strings", function_name); - goto bad; -invalid_keyword: - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION < 3 - "%.200s() got an unexpected keyword argument '%.200s'", - function_name, PyString_AsString(key)); - #else - "%s() got an unexpected keyword argument '%U'", - function_name, key); - #endif -bad: - return -1; -} - -/* PyIntBinop */ -#if !CYTHON_COMPILING_IN_PYPY -static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { - if (op1 == op2) { - Py_RETURN_TRUE; - } - #if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(op1))) { - const long b = intval; - long a = PyInt_AS_LONG(op1); - if (a == b) { - Py_RETURN_TRUE; - } else { - Py_RETURN_FALSE; - } - } - #endif - #if CYTHON_USE_PYLONG_INTERNALS - if (likely(PyLong_CheckExact(op1))) { - const long b = intval; - long a; - const digit* digits = ((PyLongObject*)op1)->ob_digit; - const Py_ssize_t size = Py_SIZE(op1); - if (likely(__Pyx_sst_abs(size) <= 1)) { - a = likely(size) ? digits[0] : 0; - if (size == -1) a = -a; - } else { - switch (size) { - case -2: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - } - CYTHON_FALLTHROUGH; - case 2: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - } - CYTHON_FALLTHROUGH; - case -3: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - } - CYTHON_FALLTHROUGH; - case 3: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - } - CYTHON_FALLTHROUGH; - case -4: - if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - } - CYTHON_FALLTHROUGH; - case 4: - if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - } - CYTHON_FALLTHROUGH; - #if PyLong_SHIFT < 30 && PyLong_SHIFT != 15 - default: return PyLong_Type.tp_richcompare(op1, op2, Py_EQ); - #else - default: Py_RETURN_FALSE; - #endif - } - } - if (a == b) { - Py_RETURN_TRUE; - } else { - Py_RETURN_FALSE; - } - } - #endif - if (PyFloat_CheckExact(op1)) { - const long b = intval; - double a = PyFloat_AS_DOUBLE(op1); - if ((double)a == (double)b) { - Py_RETURN_TRUE; - } else { - Py_RETURN_FALSE; - } - } - return PyObject_RichCompare(op1, op2, Py_EQ); -} -#endif - -/* Import */ -static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { - PyObject *empty_list = 0; - PyObject *module = 0; - PyObject *global_dict = 0; - PyObject *empty_dict = 0; - PyObject *list; - #if PY_MAJOR_VERSION < 3 - PyObject *py_import; - py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); - if (!py_import) - goto bad; - #endif - if (from_list) - list = from_list; - else { - empty_list = PyList_New(0); - if (!empty_list) - goto bad; - list = empty_list; - } - global_dict = PyModule_GetDict(__pyx_m); - if (!global_dict) - goto bad; - empty_dict = PyDict_New(); - if (!empty_dict) - goto bad; - { - #if PY_MAJOR_VERSION >= 3 - if (level == -1) { - if (strchr(__Pyx_MODULE_NAME, '.')) { - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, 1); - if (!module) { - if (!PyErr_ExceptionMatches(PyExc_ImportError)) - goto bad; - PyErr_Clear(); - } - } - level = 0; - } - #endif - if (!module) { - #if PY_MAJOR_VERSION < 3 - PyObject *py_level = PyInt_FromLong(level); - if (!py_level) - goto bad; - module = PyObject_CallFunctionObjArgs(py_import, - name, global_dict, empty_dict, list, py_level, NULL); - Py_DECREF(py_level); - #else - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, level); - #endif - } - } -bad: - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(py_import); - #endif - Py_XDECREF(empty_list); - Py_XDECREF(empty_dict); - return module; -} - -/* GetModuleGlobalName */ -static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { - PyObject *result; -#if !CYTHON_AVOID_BORROWED_REFS -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 - result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); - if (likely(result)) { - Py_INCREF(result); - } else if (unlikely(PyErr_Occurred())) { - result = NULL; - } else { -#else - result = PyDict_GetItem(__pyx_d, name); - if (likely(result)) { - Py_INCREF(result); - } else { -#endif -#else - result = PyObject_GetItem(__pyx_d, name); - if (!result) { - PyErr_Clear(); -#endif - result = __Pyx_GetBuiltinName(name); - } - return result; -} - -/* PyObjectCallNoArg */ - #if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, NULL, 0); - } -#endif -#ifdef __Pyx_CyFunction_USED - if (likely(PyCFunction_Check(func) || __Pyx_TypeCheck(func, __pyx_CyFunctionType))) { -#else - if (likely(PyCFunction_Check(func))) { -#endif - if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { - return __Pyx_PyObject_CallMethO(func, NULL); - } - } - return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL); -} -#endif - -/* GetItemInt */ - static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { - PyObject *r; - if (!j) return NULL; - r = PyObject_GetItem(o, j); - Py_DECREF(j); - return r; -} -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - Py_ssize_t wrapped_i = i; - if (wraparound & unlikely(i < 0)) { - wrapped_i += PyList_GET_SIZE(o); - } - if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyList_GET_SIZE(o)))) { - PyObject *r = PyList_GET_ITEM(o, wrapped_i); - Py_INCREF(r); - return r; - } - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -#else - return PySequence_GetItem(o, i); -#endif -} -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - Py_ssize_t wrapped_i = i; - if (wraparound & unlikely(i < 0)) { - wrapped_i += PyTuple_GET_SIZE(o); - } - if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyTuple_GET_SIZE(o)))) { - PyObject *r = PyTuple_GET_ITEM(o, wrapped_i); - Py_INCREF(r); - return r; - } - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -#else - return PySequence_GetItem(o, i); -#endif -} -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS - if (is_list || PyList_CheckExact(o)) { - Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); - if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) { - PyObject *r = PyList_GET_ITEM(o, n); - Py_INCREF(r); - return r; - } - } - else if (PyTuple_CheckExact(o)) { - Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); - if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) { - PyObject *r = PyTuple_GET_ITEM(o, n); - Py_INCREF(r); - return r; - } - } else { - PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; - if (likely(m && m->sq_item)) { - if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { - Py_ssize_t l = m->sq_length(o); - if (likely(l >= 0)) { - i += l; - } else { - if (!PyErr_ExceptionMatches(PyExc_OverflowError)) - return NULL; - PyErr_Clear(); - } - } - return m->sq_item(o, i); - } - } -#else - if (is_list || PySequence_Check(o)) { - return PySequence_GetItem(o, i); - } -#endif - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -} - -/* PyObjectCallMethod1 */ - static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) { - PyObject *result = NULL; -#if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(method))) { - PyObject *self = PyMethod_GET_SELF(method); - if (likely(self)) { - PyObject *args; - PyObject *function = PyMethod_GET_FUNCTION(method); - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(function)) { - PyObject *args[2] = {self, arg}; - result = __Pyx_PyFunction_FastCall(function, args, 2); - goto done; - } - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(function)) { - PyObject *args[2] = {self, arg}; - result = __Pyx_PyCFunction_FastCall(function, args, 2); - goto done; - } - #endif - args = PyTuple_New(2); - if (unlikely(!args)) goto done; - Py_INCREF(self); - PyTuple_SET_ITEM(args, 0, self); - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 1, arg); - Py_INCREF(function); - result = __Pyx_PyObject_Call(function, args, NULL); - Py_DECREF(args); - Py_DECREF(function); - return result; - } - } -#endif - result = __Pyx_PyObject_CallOneArg(method, arg); - goto done; -done: - return result; -} -static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { - PyObject *method, *result; - method = __Pyx_PyObject_GetAttrStr(obj, method_name); - if (unlikely(!method)) return NULL; - result = __Pyx__PyObject_CallMethod1(method, arg); - Py_DECREF(method); - return result; -} - -/* append */ - static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x) { - if (likely(PyList_CheckExact(L))) { - if (unlikely(__Pyx_PyList_Append(L, x) < 0)) return -1; - } else { - PyObject* retval = __Pyx_PyObject_CallMethod1(L, __pyx_n_s_append, x); - if (unlikely(!retval)) - return -1; - Py_DECREF(retval); - } - return 0; -} - -/* GetAttr */ - static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) { -#if CYTHON_USE_TYPE_SLOTS -#if PY_MAJOR_VERSION >= 3 - if (likely(PyUnicode_Check(n))) -#else - if (likely(PyString_Check(n))) -#endif - return __Pyx_PyObject_GetAttrStr(o, n); -#endif - return PyObject_GetAttr(o, n); -} - -/* GetAttr3 */ - static PyObject *__Pyx_GetAttr3Default(PyObject *d) { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) - return NULL; - __Pyx_PyErr_Clear(); - Py_INCREF(d); - return d; -} -static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) { - PyObject *r = __Pyx_GetAttr(o, n); - return (likely(r)) ? r : __Pyx_GetAttr3Default(d); -} - -/* StringJoin */ - #if !CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyBytes_Join(PyObject* sep, PyObject* values) { - return PyObject_CallMethodObjArgs(sep, __pyx_n_s_join, values, NULL); -} -#endif - -/* WriteUnraisableException */ - static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, - CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename, - int full_traceback, CYTHON_UNUSED int nogil) { - PyObject *old_exc, *old_val, *old_tb; - PyObject *ctx; - __Pyx_PyThreadState_declare -#ifdef WITH_THREAD - PyGILState_STATE state; - if (nogil) - state = PyGILState_Ensure(); -#ifdef _MSC_VER - else state = (PyGILState_STATE)-1; -#endif -#endif - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&old_exc, &old_val, &old_tb); - if (full_traceback) { - Py_XINCREF(old_exc); - Py_XINCREF(old_val); - Py_XINCREF(old_tb); - __Pyx_ErrRestore(old_exc, old_val, old_tb); - PyErr_PrintEx(1); - } - #if PY_MAJOR_VERSION < 3 - ctx = PyString_FromString(name); - #else - ctx = PyUnicode_FromString(name); - #endif - __Pyx_ErrRestore(old_exc, old_val, old_tb); - if (!ctx) { - PyErr_WriteUnraisable(Py_None); - } else { - PyErr_WriteUnraisable(ctx); - Py_DECREF(ctx); - } -#ifdef WITH_THREAD - if (nogil) - PyGILState_Release(state); -#endif -} - -/* RaiseException */ - #if PY_MAJOR_VERSION < 3 -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, - CYTHON_UNUSED PyObject *cause) { - __Pyx_PyThreadState_declare - Py_XINCREF(type); - if (!value || value == Py_None) - value = NULL; - else - Py_INCREF(value); - if (!tb || tb == Py_None) - tb = NULL; - else { - Py_INCREF(tb); - if (!PyTraceBack_Check(tb)) { - PyErr_SetString(PyExc_TypeError, - "raise: arg 3 must be a traceback or None"); - goto raise_error; - } - } - if (PyType_Check(type)) { -#if CYTHON_COMPILING_IN_PYPY - if (!value) { - Py_INCREF(Py_None); - value = Py_None; - } -#endif - PyErr_NormalizeException(&type, &value, &tb); - } else { - if (value) { - PyErr_SetString(PyExc_TypeError, - "instance exception may not have a separate value"); - goto raise_error; - } - value = type; - type = (PyObject*) Py_TYPE(type); - Py_INCREF(type); - if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { - PyErr_SetString(PyExc_TypeError, - "raise: exception class must be a subclass of BaseException"); - goto raise_error; - } - } - __Pyx_PyThreadState_assign - __Pyx_ErrRestore(type, value, tb); - return; -raise_error: - Py_XDECREF(value); - Py_XDECREF(type); - Py_XDECREF(tb); - return; -} -#else -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { - PyObject* owned_instance = NULL; - if (tb == Py_None) { - tb = 0; - } else if (tb && !PyTraceBack_Check(tb)) { - PyErr_SetString(PyExc_TypeError, - "raise: arg 3 must be a traceback or None"); - goto bad; - } - if (value == Py_None) - value = 0; - if (PyExceptionInstance_Check(type)) { - if (value) { - PyErr_SetString(PyExc_TypeError, - "instance exception may not have a separate value"); - goto bad; - } - value = type; - type = (PyObject*) Py_TYPE(value); - } else if (PyExceptionClass_Check(type)) { - PyObject *instance_class = NULL; - if (value && PyExceptionInstance_Check(value)) { - instance_class = (PyObject*) Py_TYPE(value); - if (instance_class != type) { - int is_subclass = PyObject_IsSubclass(instance_class, type); - if (!is_subclass) { - instance_class = NULL; - } else if (unlikely(is_subclass == -1)) { - goto bad; - } else { - type = instance_class; - } - } - } - if (!instance_class) { - PyObject *args; - if (!value) - args = PyTuple_New(0); - else if (PyTuple_Check(value)) { - Py_INCREF(value); - args = value; - } else - args = PyTuple_Pack(1, value); - if (!args) - goto bad; - owned_instance = PyObject_Call(type, args, NULL); - Py_DECREF(args); - if (!owned_instance) - goto bad; - value = owned_instance; - if (!PyExceptionInstance_Check(value)) { - PyErr_Format(PyExc_TypeError, - "calling %R should have returned an instance of " - "BaseException, not %R", - type, Py_TYPE(value)); - goto bad; - } - } - } else { - PyErr_SetString(PyExc_TypeError, - "raise: exception class must be a subclass of BaseException"); - goto bad; - } - if (cause) { - PyObject *fixed_cause; - if (cause == Py_None) { - fixed_cause = NULL; - } else if (PyExceptionClass_Check(cause)) { - fixed_cause = PyObject_CallObject(cause, NULL); - if (fixed_cause == NULL) - goto bad; - } else if (PyExceptionInstance_Check(cause)) { - fixed_cause = cause; - Py_INCREF(fixed_cause); - } else { - PyErr_SetString(PyExc_TypeError, - "exception causes must derive from " - "BaseException"); - goto bad; - } - PyException_SetCause(value, fixed_cause); - } - PyErr_SetObject(type, value); - if (tb) { -#if CYTHON_COMPILING_IN_PYPY - PyObject *tmp_type, *tmp_value, *tmp_tb; - PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); - Py_INCREF(tb); - PyErr_Restore(tmp_type, tmp_value, tb); - Py_XDECREF(tmp_tb); -#else - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject* tmp_tb = tstate->curexc_traceback; - if (tb != tmp_tb) { - Py_INCREF(tb); - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_tb); - } -#endif - } -bad: - Py_XDECREF(owned_instance); - return; -} -#endif - -/* GetException */ - #if CYTHON_FAST_THREAD_STATE -static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { -#else -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) { -#endif - PyObject *local_type, *local_value, *local_tb; -#if CYTHON_FAST_THREAD_STATE - PyObject *tmp_type, *tmp_value, *tmp_tb; - local_type = tstate->curexc_type; - local_value = tstate->curexc_value; - local_tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -#else - PyErr_Fetch(&local_type, &local_value, &local_tb); -#endif - PyErr_NormalizeException(&local_type, &local_value, &local_tb); -#if CYTHON_FAST_THREAD_STATE - if (unlikely(tstate->curexc_type)) -#else - if (unlikely(PyErr_Occurred())) -#endif - goto bad; - #if PY_MAJOR_VERSION >= 3 - if (local_tb) { - if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) - goto bad; - } - #endif - Py_XINCREF(local_tb); - Py_XINCREF(local_type); - Py_XINCREF(local_value); - *type = local_type; - *value = local_value; - *tb = local_tb; -#if CYTHON_FAST_THREAD_STATE - #if PY_VERSION_HEX >= 0x030700A3 - tmp_type = tstate->exc_state.exc_type; - tmp_value = tstate->exc_state.exc_value; - tmp_tb = tstate->exc_state.exc_traceback; - tstate->exc_state.exc_type = local_type; - tstate->exc_state.exc_value = local_value; - tstate->exc_state.exc_traceback = local_tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = local_type; - tstate->exc_value = local_value; - tstate->exc_traceback = local_tb; - #endif - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -#else - PyErr_SetExcInfo(local_type, local_value, local_tb); -#endif - return 0; -bad: - *type = 0; - *value = 0; - *tb = 0; - Py_XDECREF(local_type); - Py_XDECREF(local_value); - Py_XDECREF(local_tb); - return -1; -} - -/* SwapException */ - #if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - #if PY_VERSION_HEX >= 0x030700A3 - tmp_type = tstate->exc_state.exc_type; - tmp_value = tstate->exc_state.exc_value; - tmp_tb = tstate->exc_state.exc_traceback; - tstate->exc_state.exc_type = *type; - tstate->exc_state.exc_value = *value; - tstate->exc_state.exc_traceback = *tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = *type; - tstate->exc_value = *value; - tstate->exc_traceback = *tb; - #endif - *type = tmp_type; - *value = tmp_value; - *tb = tmp_tb; -} -#else -static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); - PyErr_SetExcInfo(*type, *value, *tb); - *type = tmp_type; - *value = tmp_value; - *tb = tmp_tb; -} -#endif - -/* None */ - static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) { - PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname); -} - -/* PyObjectCallMethod0 */ - static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) { - PyObject *method, *result = NULL; - method = __Pyx_PyObject_GetAttrStr(obj, method_name); - if (unlikely(!method)) goto bad; -#if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(method))) { - PyObject *self = PyMethod_GET_SELF(method); - if (likely(self)) { - PyObject *function = PyMethod_GET_FUNCTION(method); - result = __Pyx_PyObject_CallOneArg(function, self); - Py_DECREF(method); - return result; - } - } -#endif - result = __Pyx_PyObject_CallNoArg(method); - Py_DECREF(method); -bad: - return result; -} - -/* UnpackUnboundCMethod */ - static int __Pyx_TryUnpackUnboundCMethod(__Pyx_CachedCFunction* target) { - PyObject *method; - method = __Pyx_PyObject_GetAttrStr(target->type, *target->method_name); - if (unlikely(!method)) - return -1; - target->method = method; -#if CYTHON_COMPILING_IN_CPYTHON - #if PY_MAJOR_VERSION >= 3 - if (likely(__Pyx_TypeCheck(method, &PyMethodDescr_Type))) - #endif - { - PyMethodDescrObject *descr = (PyMethodDescrObject*) method; - target->func = descr->d_method->ml_meth; - target->flag = descr->d_method->ml_flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST); - } -#endif - return 0; -} - -/* CallUnboundCMethod0 */ - static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self) { - PyObject *args, *result = NULL; - if (unlikely(!cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL; -#if CYTHON_ASSUME_SAFE_MACROS - args = PyTuple_New(1); - if (unlikely(!args)) goto bad; - Py_INCREF(self); - PyTuple_SET_ITEM(args, 0, self); -#else - args = PyTuple_Pack(1, self); - if (unlikely(!args)) goto bad; -#endif - result = __Pyx_PyObject_Call(cfunc->method, args, NULL); - Py_DECREF(args); -bad: - return result; -} - -/* pop */ - static CYTHON_INLINE PyObject* __Pyx__PyObject_Pop(PyObject* L) { - if (Py_TYPE(L) == &PySet_Type) { - return PySet_Pop(L); - } - return __Pyx_PyObject_CallMethod0(L, __pyx_n_s_pop); -} -#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS -static CYTHON_INLINE PyObject* __Pyx_PyList_Pop(PyObject* L) { - if (likely(PyList_GET_SIZE(L) > (((PyListObject*)L)->allocated >> 1))) { - Py_SIZE(L) -= 1; - return PyList_GET_ITEM(L, PyList_GET_SIZE(L)); - } - return __Pyx_CallUnboundCMethod0(&__pyx_umethod_PyList_Type_pop, L); -} -#endif - -/* ImportFrom */ - static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { - PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); - if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Format(PyExc_ImportError, - #if PY_MAJOR_VERSION < 3 - "cannot import name %.230s", PyString_AS_STRING(name)); - #else - "cannot import name %S", name); - #endif - } - return value; -} - -/* ExtTypeTest */ - static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { - if (unlikely(!type)) { - PyErr_SetString(PyExc_SystemError, "Missing type object"); - return 0; - } - if (likely(__Pyx_TypeCheck(obj, type))) - return 1; - PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s", - Py_TYPE(obj)->tp_name, type->tp_name); - return 0; -} - -/* RaiseTooManyValuesToUnpack */ - static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { - PyErr_Format(PyExc_ValueError, - "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); -} - -/* RaiseNeedMoreValuesToUnpack */ - static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { - PyErr_Format(PyExc_ValueError, - "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", - index, (index == 1) ? "" : "s"); -} - -/* IterFinish */ - static CYTHON_INLINE int __Pyx_IterFinish(void) { -#if CYTHON_FAST_THREAD_STATE - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject* exc_type = tstate->curexc_type; - if (unlikely(exc_type)) { - if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) { - PyObject *exc_value, *exc_tb; - exc_value = tstate->curexc_value; - exc_tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; - Py_DECREF(exc_type); - Py_XDECREF(exc_value); - Py_XDECREF(exc_tb); - return 0; - } else { - return -1; - } - } - return 0; -#else - if (unlikely(PyErr_Occurred())) { - if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) { - PyErr_Clear(); - return 0; - } else { - return -1; - } - } - return 0; -#endif -} - -/* UnpackItemEndCheck */ - static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { - if (unlikely(retval)) { - Py_DECREF(retval); - __Pyx_RaiseTooManyValuesError(expected); - return -1; - } else { - return __Pyx_IterFinish(); - } - return 0; -} - -/* CallNextTpDealloc */ - static void __Pyx_call_next_tp_dealloc(PyObject* obj, destructor current_tp_dealloc) { - PyTypeObject* type = Py_TYPE(obj); - while (type && type->tp_dealloc != current_tp_dealloc) - type = type->tp_base; - while (type && type->tp_dealloc == current_tp_dealloc) - type = type->tp_base; - if (type) - type->tp_dealloc(obj); -} - -/* CallNextTpTraverse */ - static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse) { - PyTypeObject* type = Py_TYPE(obj); - while (type && type->tp_traverse != current_tp_traverse) - type = type->tp_base; - while (type && type->tp_traverse == current_tp_traverse) - type = type->tp_base; - if (type && type->tp_traverse) - return type->tp_traverse(obj, v, a); - return 0; -} - -/* CallNextTpClear */ - static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_clear) { - PyTypeObject* type = Py_TYPE(obj); - while (type && type->tp_clear != current_tp_clear) - type = type->tp_base; - while (type && type->tp_clear == current_tp_clear) - type = type->tp_base; - if (type && type->tp_clear) - type->tp_clear(obj); -} - -/* GetVTable */ - static void* __Pyx_GetVtable(PyObject *dict) { - void* ptr; - PyObject *ob = PyObject_GetItem(dict, __pyx_n_s_pyx_vtable); - if (!ob) - goto bad; -#if PY_VERSION_HEX >= 0x02070000 - ptr = PyCapsule_GetPointer(ob, 0); -#else - ptr = PyCObject_AsVoidPtr(ob); -#endif - if (!ptr && !PyErr_Occurred()) - PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type"); - Py_DECREF(ob); - return ptr; -bad: - Py_XDECREF(ob); - return NULL; -} - -/* PyObject_GenericGetAttrNoDict */ - #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { - PyErr_Format(PyExc_AttributeError, -#if PY_MAJOR_VERSION >= 3 - "'%.50s' object has no attribute '%U'", - tp->tp_name, attr_name); -#else - "'%.50s' object has no attribute '%.400s'", - tp->tp_name, PyString_AS_STRING(attr_name)); -#endif - return NULL; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { - PyObject *descr; - PyTypeObject *tp = Py_TYPE(obj); - if (unlikely(!PyString_Check(attr_name))) { - return PyObject_GenericGetAttr(obj, attr_name); - } - assert(!tp->tp_dictoffset); - descr = _PyType_Lookup(tp, attr_name); - if (unlikely(!descr)) { - return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); - } - Py_INCREF(descr); - #if PY_MAJOR_VERSION < 3 - if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) - #endif - { - descrgetfunc f = Py_TYPE(descr)->tp_descr_get; - if (unlikely(f)) { - PyObject *res = f(descr, obj, (PyObject *)tp); - Py_DECREF(descr); - return res; - } - } - return descr; -} -#endif - -/* SetVTable */ - static int __Pyx_SetVtable(PyObject *dict, void *vtable) { -#if PY_VERSION_HEX >= 0x02070000 - PyObject *ob = PyCapsule_New(vtable, 0, 0); -#else - PyObject *ob = PyCObject_FromVoidPtr(vtable, 0); -#endif - if (!ob) - goto bad; - if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0) - goto bad; - Py_DECREF(ob); - return 0; -bad: - Py_XDECREF(ob); - return -1; -} - -/* PyObject_GenericGetAttr */ - #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) { - if (unlikely(Py_TYPE(obj)->tp_dictoffset)) { - return PyObject_GenericGetAttr(obj, attr_name); - } - return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name); -} -#endif - -/* HasAttr */ - static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) { - PyObject *r; - if (unlikely(!__Pyx_PyBaseString_Check(n))) { - PyErr_SetString(PyExc_TypeError, - "hasattr(): attribute name must be string"); - return -1; - } - r = __Pyx_GetAttr(o, n); - if (unlikely(!r)) { - PyErr_Clear(); - return 0; - } else { - Py_DECREF(r); - return 1; - } -} - -/* FetchCommonType */ - static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { - PyObject* fake_module; - PyTypeObject* cached_type = NULL; - fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI); - if (!fake_module) return NULL; - Py_INCREF(fake_module); - cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name); - if (cached_type) { - if (!PyType_Check((PyObject*)cached_type)) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s is not a type object", - type->tp_name); - goto bad; - } - if (cached_type->tp_basicsize != type->tp_basicsize) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s has the wrong size, try recompiling", - type->tp_name); - goto bad; - } - } else { - if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; - PyErr_Clear(); - if (PyType_Ready(type) < 0) goto bad; - if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0) - goto bad; - Py_INCREF(type); - cached_type = type; - } -done: - Py_DECREF(fake_module); - return cached_type; -bad: - Py_XDECREF(cached_type); - cached_type = NULL; - goto done; -} - -/* CythonFunction */ - #include <structmember.h> -static PyObject * -__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure) -{ - if (unlikely(op->func_doc == NULL)) { - if (op->func.m_ml->ml_doc) { -#if PY_MAJOR_VERSION >= 3 - op->func_doc = PyUnicode_FromString(op->func.m_ml->ml_doc); -#else - op->func_doc = PyString_FromString(op->func.m_ml->ml_doc); -#endif - if (unlikely(op->func_doc == NULL)) - return NULL; - } else { - Py_INCREF(Py_None); - return Py_None; - } - } - Py_INCREF(op->func_doc); - return op->func_doc; -} -static int -__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp = op->func_doc; - if (value == NULL) { - value = Py_None; - } - Py_INCREF(value); - op->func_doc = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op) -{ - if (unlikely(op->func_name == NULL)) { -#if PY_MAJOR_VERSION >= 3 - op->func_name = PyUnicode_InternFromString(op->func.m_ml->ml_name); -#else - op->func_name = PyString_InternFromString(op->func.m_ml->ml_name); -#endif - if (unlikely(op->func_name == NULL)) - return NULL; - } - Py_INCREF(op->func_name); - return op->func_name; -} -static int -__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; -#if PY_MAJOR_VERSION >= 3 - if (unlikely(value == NULL || !PyUnicode_Check(value))) { -#else - if (unlikely(value == NULL || !PyString_Check(value))) { -#endif - PyErr_SetString(PyExc_TypeError, - "__name__ must be set to a string object"); - return -1; - } - tmp = op->func_name; - Py_INCREF(value); - op->func_name = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op) -{ - Py_INCREF(op->func_qualname); - return op->func_qualname; -} -static int -__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; -#if PY_MAJOR_VERSION >= 3 - if (unlikely(value == NULL || !PyUnicode_Check(value))) { -#else - if (unlikely(value == NULL || !PyString_Check(value))) { -#endif - PyErr_SetString(PyExc_TypeError, - "__qualname__ must be set to a string object"); - return -1; - } - tmp = op->func_qualname; - Py_INCREF(value); - op->func_qualname = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure) -{ - PyObject *self; - self = m->func_closure; - if (self == NULL) - self = Py_None; - Py_INCREF(self); - return self; -} -static PyObject * -__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op) -{ - if (unlikely(op->func_dict == NULL)) { - op->func_dict = PyDict_New(); - if (unlikely(op->func_dict == NULL)) - return NULL; - } - Py_INCREF(op->func_dict); - return op->func_dict; -} -static int -__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; - if (unlikely(value == NULL)) { - PyErr_SetString(PyExc_TypeError, - "function's dictionary may not be deleted"); - return -1; - } - if (unlikely(!PyDict_Check(value))) { - PyErr_SetString(PyExc_TypeError, - "setting function's dictionary to a non-dict"); - return -1; - } - tmp = op->func_dict; - Py_INCREF(value); - op->func_dict = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op) -{ - Py_INCREF(op->func_globals); - return op->func_globals; -} -static PyObject * -__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op) -{ - Py_INCREF(Py_None); - return Py_None; -} -static PyObject * -__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op) -{ - PyObject* result = (op->func_code) ? op->func_code : Py_None; - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { - int result = 0; - PyObject *res = op->defaults_getter((PyObject *) op); - if (unlikely(!res)) - return -1; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - op->defaults_tuple = PyTuple_GET_ITEM(res, 0); - Py_INCREF(op->defaults_tuple); - op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); - Py_INCREF(op->defaults_kwdict); - #else - op->defaults_tuple = PySequence_ITEM(res, 0); - if (unlikely(!op->defaults_tuple)) result = -1; - else { - op->defaults_kwdict = PySequence_ITEM(res, 1); - if (unlikely(!op->defaults_kwdict)) result = -1; - } - #endif - Py_DECREF(res); - return result; -} -static int -__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value) { - value = Py_None; - } else if (value != Py_None && !PyTuple_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__defaults__ must be set to a tuple object"); - return -1; - } - Py_INCREF(value); - tmp = op->defaults_tuple; - op->defaults_tuple = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) { - PyObject* result = op->defaults_tuple; - if (unlikely(!result)) { - if (op->defaults_getter) { - if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; - result = op->defaults_tuple; - } else { - result = Py_None; - } - } - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value) { - value = Py_None; - } else if (value != Py_None && !PyDict_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__kwdefaults__ must be set to a dict object"); - return -1; - } - Py_INCREF(value); - tmp = op->defaults_kwdict; - op->defaults_kwdict = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) { - PyObject* result = op->defaults_kwdict; - if (unlikely(!result)) { - if (op->defaults_getter) { - if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; - result = op->defaults_kwdict; - } else { - result = Py_None; - } - } - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value || value == Py_None) { - value = NULL; - } else if (!PyDict_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__annotations__ must be set to a dict object"); - return -1; - } - Py_XINCREF(value); - tmp = op->func_annotations; - op->func_annotations = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op) { - PyObject* result = op->func_annotations; - if (unlikely(!result)) { - result = PyDict_New(); - if (unlikely(!result)) return NULL; - op->func_annotations = result; - } - Py_INCREF(result); - return result; -} -static PyGetSetDef __pyx_CyFunction_getsets[] = { - {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, - {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, - {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, - {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, - {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, - {(char *) "__self__", (getter)__Pyx_CyFunction_get_self, 0, 0, 0}, - {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, - {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, - {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, - {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, - {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, - {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, - {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, - {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, - {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, - {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, - {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, - {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, - {0, 0, 0, 0, 0} -}; -static PyMemberDef __pyx_CyFunction_members[] = { - {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), PY_WRITE_RESTRICTED, 0}, - {0, 0, 0, 0, 0} -}; -static PyObject * -__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args) -{ -#if PY_MAJOR_VERSION >= 3 - return PyUnicode_FromString(m->func.m_ml->ml_name); -#else - return PyString_FromString(m->func.m_ml->ml_name); -#endif -} -static PyMethodDef __pyx_CyFunction_methods[] = { - {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, - {0, 0, 0, 0} -}; -#if PY_VERSION_HEX < 0x030500A0 -#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) -#else -#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func.m_weakreflist) -#endif -static PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *ml, int flags, PyObject* qualname, - PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { - __pyx_CyFunctionObject *op = PyObject_GC_New(__pyx_CyFunctionObject, type); - if (op == NULL) - return NULL; - op->flags = flags; - __Pyx_CyFunction_weakreflist(op) = NULL; - op->func.m_ml = ml; - op->func.m_self = (PyObject *) op; - Py_XINCREF(closure); - op->func_closure = closure; - Py_XINCREF(module); - op->func.m_module = module; - op->func_dict = NULL; - op->func_name = NULL; - Py_INCREF(qualname); - op->func_qualname = qualname; - op->func_doc = NULL; - op->func_classobj = NULL; - op->func_globals = globals; - Py_INCREF(op->func_globals); - Py_XINCREF(code); - op->func_code = code; - op->defaults_pyobjects = 0; - op->defaults = NULL; - op->defaults_tuple = NULL; - op->defaults_kwdict = NULL; - op->defaults_getter = NULL; - op->func_annotations = NULL; - PyObject_GC_Track(op); - return (PyObject *) op; -} -static int -__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) -{ - Py_CLEAR(m->func_closure); - Py_CLEAR(m->func.m_module); - Py_CLEAR(m->func_dict); - Py_CLEAR(m->func_name); - Py_CLEAR(m->func_qualname); - Py_CLEAR(m->func_doc); - Py_CLEAR(m->func_globals); - Py_CLEAR(m->func_code); - Py_CLEAR(m->func_classobj); - Py_CLEAR(m->defaults_tuple); - Py_CLEAR(m->defaults_kwdict); - Py_CLEAR(m->func_annotations); - if (m->defaults) { - PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); - int i; - for (i = 0; i < m->defaults_pyobjects; i++) - Py_XDECREF(pydefaults[i]); - PyObject_Free(m->defaults); - m->defaults = NULL; - } - return 0; -} -static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) -{ - if (__Pyx_CyFunction_weakreflist(m) != NULL) - PyObject_ClearWeakRefs((PyObject *) m); - __Pyx_CyFunction_clear(m); - PyObject_GC_Del(m); -} -static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) -{ - PyObject_GC_UnTrack(m); - __Pyx__CyFunction_dealloc(m); -} -static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) -{ - Py_VISIT(m->func_closure); - Py_VISIT(m->func.m_module); - Py_VISIT(m->func_dict); - Py_VISIT(m->func_name); - Py_VISIT(m->func_qualname); - Py_VISIT(m->func_doc); - Py_VISIT(m->func_globals); - Py_VISIT(m->func_code); - Py_VISIT(m->func_classobj); - Py_VISIT(m->defaults_tuple); - Py_VISIT(m->defaults_kwdict); - if (m->defaults) { - PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); - int i; - for (i = 0; i < m->defaults_pyobjects; i++) - Py_VISIT(pydefaults[i]); - } - return 0; -} -static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type) -{ - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) { - Py_INCREF(func); - return func; - } - if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) { - if (type == NULL) - type = (PyObject *)(Py_TYPE(obj)); - return __Pyx_PyMethod_New(func, type, (PyObject *)(Py_TYPE(type))); - } - if (obj == Py_None) - obj = NULL; - return __Pyx_PyMethod_New(func, obj, type); -} -static PyObject* -__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) -{ -#if PY_MAJOR_VERSION >= 3 - return PyUnicode_FromFormat("<cyfunction %U at %p>", - op->func_qualname, (void *)op); -#else - return PyString_FromFormat("<cyfunction %s at %p>", - PyString_AsString(op->func_qualname), (void *)op); -#endif -} -static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { - PyCFunctionObject* f = (PyCFunctionObject*)func; - PyCFunction meth = f->m_ml->ml_meth; - Py_ssize_t size; - switch (f->m_ml->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { - case METH_VARARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) - return (*meth)(self, arg); - break; - case METH_VARARGS | METH_KEYWORDS: - return (*(PyCFunctionWithKeywords)meth)(self, arg, kw); - case METH_NOARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { - size = PyTuple_GET_SIZE(arg); - if (likely(size == 0)) - return (*meth)(self, NULL); - PyErr_Format(PyExc_TypeError, - "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", - f->m_ml->ml_name, size); - return NULL; - } - break; - case METH_O: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { - size = PyTuple_GET_SIZE(arg); - if (likely(size == 1)) { - PyObject *result, *arg0; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - arg0 = PyTuple_GET_ITEM(arg, 0); - #else - arg0 = PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; - #endif - result = (*meth)(self, arg0); - #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) - Py_DECREF(arg0); - #endif - return result; - } - PyErr_Format(PyExc_TypeError, - "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", - f->m_ml->ml_name, size); - return NULL; - } - break; - default: - PyErr_SetString(PyExc_SystemError, "Bad call flags in " - "__Pyx_CyFunction_Call. METH_OLDARGS is no " - "longer supported!"); - return NULL; - } - PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", - f->m_ml->ml_name); - return NULL; -} -static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { - return __Pyx_CyFunction_CallMethod(func, ((PyCFunctionObject*)func)->m_self, arg, kw); -} -static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { - PyObject *result; - __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; - if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { - Py_ssize_t argc; - PyObject *new_args; - PyObject *self; - argc = PyTuple_GET_SIZE(args); - new_args = PyTuple_GetSlice(args, 1, argc); - if (unlikely(!new_args)) - return NULL; - self = PyTuple_GetItem(args, 0); - if (unlikely(!self)) { - Py_DECREF(new_args); - return NULL; - } - result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); - Py_DECREF(new_args); - } else { - result = __Pyx_CyFunction_Call(func, args, kw); - } - return result; -} -static PyTypeObject __pyx_CyFunctionType_type = { - PyVarObject_HEAD_INIT(0, 0) - "cython_function_or_method", - sizeof(__pyx_CyFunctionObject), - 0, - (destructor) __Pyx_CyFunction_dealloc, - 0, - 0, - 0, -#if PY_MAJOR_VERSION < 3 - 0, -#else - 0, -#endif - (reprfunc) __Pyx_CyFunction_repr, - 0, - 0, - 0, - 0, - __Pyx_CyFunction_CallAsMethod, - 0, - 0, - 0, - 0, - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, - 0, - (traverseproc) __Pyx_CyFunction_traverse, - (inquiry) __Pyx_CyFunction_clear, - 0, -#if PY_VERSION_HEX < 0x030500A0 - offsetof(__pyx_CyFunctionObject, func_weakreflist), -#else - offsetof(PyCFunctionObject, m_weakreflist), -#endif - 0, - 0, - __pyx_CyFunction_methods, - __pyx_CyFunction_members, - __pyx_CyFunction_getsets, - 0, - 0, - __Pyx_CyFunction_descr_get, - 0, - offsetof(__pyx_CyFunctionObject, func_dict), - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, -#if PY_VERSION_HEX >= 0x030400a1 - 0, -#endif -}; -static int __pyx_CyFunction_init(void) { - __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); - if (unlikely(__pyx_CyFunctionType == NULL)) { - return -1; - } - return 0; -} -static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults = PyObject_Malloc(size); - if (unlikely(!m->defaults)) - return PyErr_NoMemory(); - memset(m->defaults, 0, size); - m->defaults_pyobjects = pyobjects; - return m->defaults; -} -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults_tuple = tuple; - Py_INCREF(tuple); -} -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults_kwdict = dict; - Py_INCREF(dict); -} -static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->func_annotations = dict; - Py_INCREF(dict); -} - -/* GetNameInClass */ - static PyObject *__Pyx_GetGlobalNameAfterAttributeLookup(PyObject *name) { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) - return NULL; - __Pyx_PyErr_Clear(); - return __Pyx_GetModuleGlobalName(name); -} -static PyObject *__Pyx_GetNameInClass(PyObject *nmspace, PyObject *name) { - PyObject *result; - result = __Pyx_PyObject_GetAttrStr(nmspace, name); - if (!result) { - result = __Pyx_GetGlobalNameAfterAttributeLookup(name); - } - return result; -} - -/* Globals */ - static PyObject* __Pyx_Globals(void) { - Py_ssize_t i; - PyObject *names; - PyObject *globals = __pyx_d; - Py_INCREF(globals); - names = PyObject_Dir(__pyx_m); - if (!names) - goto bad; - for (i = PyList_GET_SIZE(names)-1; i >= 0; i--) { -#if CYTHON_COMPILING_IN_PYPY - PyObject* name = PySequence_ITEM(names, i); - if (!name) - goto bad; -#else - PyObject* name = PyList_GET_ITEM(names, i); -#endif - if (!PyDict_Contains(globals, name)) { - PyObject* value = __Pyx_GetAttr(__pyx_m, name); - if (!value) { -#if CYTHON_COMPILING_IN_PYPY - Py_DECREF(name); -#endif - goto bad; - } - if (PyDict_SetItem(globals, name, value) < 0) { -#if CYTHON_COMPILING_IN_PYPY - Py_DECREF(name); -#endif - Py_DECREF(value); - goto bad; - } - } -#if CYTHON_COMPILING_IN_PYPY - Py_DECREF(name); -#endif - } - Py_DECREF(names); - return globals; -bad: - Py_XDECREF(names); - Py_XDECREF(globals); - return NULL; -} - -/* CLineInTraceback */ - #ifndef CYTHON_CLINE_IN_TRACEBACK -static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) { - PyObject *use_cline; - PyObject *ptype, *pvalue, *ptraceback; -#if CYTHON_COMPILING_IN_CPYTHON - PyObject **cython_runtime_dict; -#endif - if (unlikely(!__pyx_cython_runtime)) { - return c_line; - } - __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); -#if CYTHON_COMPILING_IN_CPYTHON - cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); - if (likely(cython_runtime_dict)) { - use_cline = __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback); - } else -#endif - { - PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); - if (use_cline_obj) { - use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; - Py_DECREF(use_cline_obj); - } else { - PyErr_Clear(); - use_cline = NULL; - } - } - if (!use_cline) { - c_line = 0; - PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); - } - else if (PyObject_Not(use_cline) != 0) { - c_line = 0; - } - __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); - return c_line; -} -#endif - -/* CodeObjectCache */ - static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { - int start = 0, mid = 0, end = count - 1; - if (end >= 0 && code_line > entries[end].code_line) { - return count; - } - while (start < end) { - mid = start + (end - start) / 2; - if (code_line < entries[mid].code_line) { - end = mid; - } else if (code_line > entries[mid].code_line) { - start = mid + 1; - } else { - return mid; - } - } - if (code_line <= entries[mid].code_line) { - return mid; - } else { - return mid + 1; - } -} -static PyCodeObject *__pyx_find_code_object(int code_line) { - PyCodeObject* code_object; - int pos; - if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { - return NULL; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { - return NULL; - } - code_object = __pyx_code_cache.entries[pos].code_object; - Py_INCREF(code_object); - return code_object; -} -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { - int pos, i; - __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; - if (unlikely(!code_line)) { - return; - } - if (unlikely(!entries)) { - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); - if (likely(entries)) { - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = 64; - __pyx_code_cache.count = 1; - entries[0].code_line = code_line; - entries[0].code_object = code_object; - Py_INCREF(code_object); - } - return; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { - PyCodeObject* tmp = entries[pos].code_object; - entries[pos].code_object = code_object; - Py_DECREF(tmp); - return; - } - if (__pyx_code_cache.count == __pyx_code_cache.max_count) { - int new_max = __pyx_code_cache.max_count + 64; - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( - __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry)); - if (unlikely(!entries)) { - return; - } - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = new_max; - } - for (i=__pyx_code_cache.count; i>pos; i--) { - entries[i] = entries[i-1]; - } - entries[pos].code_line = code_line; - entries[pos].code_object = code_object; - __pyx_code_cache.count++; - Py_INCREF(code_object); -} - -/* AddTraceback */ - #include "compile.h" -#include "frameobject.h" -#include "traceback.h" -static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( - const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyObject *py_srcfile = 0; - PyObject *py_funcname = 0; - #if PY_MAJOR_VERSION < 3 - py_srcfile = PyString_FromString(filename); - #else - py_srcfile = PyUnicode_FromString(filename); - #endif - if (!py_srcfile) goto bad; - if (c_line) { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #else - py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #endif - } - else { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromString(funcname); - #else - py_funcname = PyUnicode_FromString(funcname); - #endif - } - if (!py_funcname) goto bad; - py_code = __Pyx_PyCode_New( - 0, - 0, - 0, - 0, - 0, - __pyx_empty_bytes, /*PyObject *code,*/ - __pyx_empty_tuple, /*PyObject *consts,*/ - __pyx_empty_tuple, /*PyObject *names,*/ - __pyx_empty_tuple, /*PyObject *varnames,*/ - __pyx_empty_tuple, /*PyObject *freevars,*/ - __pyx_empty_tuple, /*PyObject *cellvars,*/ - py_srcfile, /*PyObject *filename,*/ - py_funcname, /*PyObject *name,*/ - py_line, - __pyx_empty_bytes /*PyObject *lnotab*/ - ); - Py_DECREF(py_srcfile); - Py_DECREF(py_funcname); - return py_code; -bad: - Py_XDECREF(py_srcfile); - Py_XDECREF(py_funcname); - return NULL; -} -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyFrameObject *py_frame = 0; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - if (c_line) { - c_line = __Pyx_CLineForTraceback(tstate, c_line); - } - py_code = __pyx_find_code_object(c_line ? -c_line : py_line); - if (!py_code) { - py_code = __Pyx_CreateCodeObjectForTraceback( - funcname, c_line, py_line, filename); - if (!py_code) goto bad; - __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); - } - py_frame = PyFrame_New( - tstate, /*PyThreadState *tstate,*/ - py_code, /*PyCodeObject *code,*/ - __pyx_d, /*PyObject *globals,*/ - 0 /*PyObject *locals*/ - ); - if (!py_frame) goto bad; - __Pyx_PyFrame_SetLineNumber(py_frame, py_line); - PyTraceBack_Here(py_frame); -bad: - Py_XDECREF(py_code); - Py_XDECREF(py_frame); -} - -/* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { - const long neg_one = (long) -1, const_zero = (long) 0; - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(long) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(long) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -#endif - } - } else { - if (sizeof(long) <= sizeof(long)) { - return PyInt_FromLong((long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); -#endif - } - } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; - return _PyLong_FromByteArray(bytes, sizeof(long), - little, !is_unsigned); - } -} - -/* CIntFromPyVerify */ - #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) -#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) -#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ - {\ - func_type value = func_value;\ - if (sizeof(target_type) < sizeof(func_type)) {\ - if (unlikely(value != (func_type) (target_type) value)) {\ - func_type zero = 0;\ - if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ - return (target_type) -1;\ - if (is_unsigned && unlikely(value < zero))\ - goto raise_neg_overflow;\ - else\ - goto raise_overflow;\ - }\ - }\ - return (target_type) value;\ - } - -/* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { - const int neg_one = (int) -1, const_zero = (int) 0; - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(int) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(int) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -#endif - } - } else { - if (sizeof(int) <= sizeof(long)) { - return PyInt_FromLong((long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); -#endif - } - } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; - return _PyLong_FromByteArray(bytes, sizeof(int), - little, !is_unsigned); - } -} - -/* CIntFromPy */ - static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { - const int neg_one = (int) -1, const_zero = (int) 0; - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(int) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (int) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (int) 0; - case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { - return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { - return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { - return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (int) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(int) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (int) 0; - case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) - case -2: - if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - } -#endif - if (sizeof(int) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - int val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (int) -1; - } - } else { - int val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (int) -1; - val = __Pyx_PyInt_As_int(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to int"); - return (int) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to int"); - return (int) -1; -} - -/* CIntFromPy */ - static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { - const long neg_one = (long) -1, const_zero = (long) 0; - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(long) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (long) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { - return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { - return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { - return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (long) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(long) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) - case -2: - if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - } -#endif - if (sizeof(long) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - long val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (long) -1; - } - } else { - long val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (long) -1; - val = __Pyx_PyInt_As_long(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to long"); - return (long) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to long"); - return (long) -1; -} - -/* FastTypeChecks */ - #if CYTHON_COMPILING_IN_CPYTHON -static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { - while (a) { - a = a->tp_base; - if (a == b) - return 1; - } - return b == &PyBaseObject_Type; -} -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { - PyObject *mro; - if (a == b) return 1; - mro = a->tp_mro; - if (likely(mro)) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(mro); - for (i = 0; i < n; i++) { - if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) - return 1; - } - return 0; - } - return __Pyx_InBases(a, b); -} -#if PY_MAJOR_VERSION == 2 -static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { - PyObject *exception, *value, *tb; - int res; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&exception, &value, &tb); - res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - if (!res) { - res = PyObject_IsSubclass(err, exc_type2); - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - } - __Pyx_ErrRestore(exception, value, tb); - return res; -} -#else -static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { - int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0; - if (!res) { - res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); - } - return res; -} -#endif -static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - assert(PyExceptionClass_Check(exc_type)); - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; i<n; i++) { - if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1; - } -#endif - for (i=0; i<n; i++) { - PyObject *t = PyTuple_GET_ITEM(tuple, i); - #if PY_MAJOR_VERSION < 3 - if (likely(exc_type == t)) return 1; - #endif - if (likely(PyExceptionClass_Check(t))) { - if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1; - } else { - } - } - return 0; -} -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) { - if (likely(err == exc_type)) return 1; - if (likely(PyExceptionClass_Check(err))) { - if (likely(PyExceptionClass_Check(exc_type))) { - return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type); - } else if (likely(PyTuple_Check(exc_type))) { - return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type); - } else { - } - } - return PyErr_GivenExceptionMatches(err, exc_type); -} -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) { - assert(PyExceptionClass_Check(exc_type1)); - assert(PyExceptionClass_Check(exc_type2)); - if (likely(err == exc_type1 || err == exc_type2)) return 1; - if (likely(PyExceptionClass_Check(err))) { - return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2); - } - return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2)); -} -#endif - -/* CheckBinaryVersion */ - static int __Pyx_check_binary_version(void) { - char ctversion[4], rtversion[4]; - PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); - PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); - if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) { - char message[200]; - PyOS_snprintf(message, sizeof(message), - "compiletime version %s of module '%.100s' " - "does not match runtime version %s", - ctversion, __Pyx_MODULE_NAME, rtversion); - return PyErr_WarnEx(NULL, message, 1); - } - return 0; -} - -/* PyObjectSetAttrStr */ - #if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_setattro)) - return tp->tp_setattro(obj, attr_name, value); -#if PY_MAJOR_VERSION < 3 - if (likely(tp->tp_setattr)) - return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value); -#endif - return PyObject_SetAttr(obj, attr_name, value); -} -#endif - -/* VoidPtrExport */ - static int __Pyx_ExportVoidPtr(PyObject *name, void *p, const char *sig) { - PyObject *d; - PyObject *cobj = 0; - d = PyDict_GetItem(__pyx_d, __pyx_n_s_pyx_capi); - Py_XINCREF(d); - if (!d) { - d = PyDict_New(); - if (!d) - goto bad; - if (__Pyx_PyObject_SetAttrStr(__pyx_m, __pyx_n_s_pyx_capi, d) < 0) - goto bad; - } -#if PY_VERSION_HEX >= 0x02070000 - cobj = PyCapsule_New(p, sig, 0); -#else - cobj = PyCObject_FromVoidPtrAndDesc(p, (void *)sig, 0); -#endif - if (!cobj) - goto bad; - if (PyDict_SetItem(d, name, cobj) < 0) - goto bad; - Py_DECREF(cobj); - Py_DECREF(d); - return 0; -bad: - Py_XDECREF(cobj); - Py_XDECREF(d); - return -1; -} - -/* FunctionExport */ - static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) { - PyObject *d = 0; - PyObject *cobj = 0; - union { - void (*fp)(void); - void *p; - } tmp; - d = PyObject_GetAttrString(__pyx_m, (char *)"__pyx_capi__"); - if (!d) { - PyErr_Clear(); - d = PyDict_New(); - if (!d) - goto bad; - Py_INCREF(d); - if (PyModule_AddObject(__pyx_m, (char *)"__pyx_capi__", d) < 0) - goto bad; - } - tmp.fp = f; -#if PY_VERSION_HEX >= 0x02070000 - cobj = PyCapsule_New(tmp.p, sig, 0); -#else - cobj = PyCObject_FromVoidPtrAndDesc(tmp.p, (void *)sig, 0); -#endif - if (!cobj) - goto bad; - if (PyDict_SetItemString(d, name, cobj) < 0) - goto bad; - Py_DECREF(cobj); - Py_DECREF(d); - return 0; -bad: - Py_XDECREF(cobj); - Py_XDECREF(d); - return -1; -} - -/* ModuleImport */ - #ifndef __PYX_HAVE_RT_ImportModule -#define __PYX_HAVE_RT_ImportModule -static PyObject *__Pyx_ImportModule(const char *name) { - PyObject *py_name = 0; - PyObject *py_module = 0; - py_name = __Pyx_PyIdentifier_FromString(name); - if (!py_name) - goto bad; - py_module = PyImport_Import(py_name); - Py_DECREF(py_name); - return py_module; -bad: - Py_XDECREF(py_name); - return 0; -} -#endif - -/* TypeImport */ - #ifndef __PYX_HAVE_RT_ImportType -#define __PYX_HAVE_RT_ImportType -static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, - size_t size, int strict) -{ - PyObject *py_module = 0; - PyObject *result = 0; - PyObject *py_name = 0; - char warning[200]; - Py_ssize_t basicsize; -#ifdef Py_LIMITED_API - PyObject *py_basicsize; -#endif - py_module = __Pyx_ImportModule(module_name); - if (!py_module) - goto bad; - py_name = __Pyx_PyIdentifier_FromString(class_name); - if (!py_name) - goto bad; - result = PyObject_GetAttr(py_module, py_name); - Py_DECREF(py_name); - py_name = 0; - Py_DECREF(py_module); - py_module = 0; - if (!result) - goto bad; - if (!PyType_Check(result)) { - PyErr_Format(PyExc_TypeError, - "%.200s.%.200s is not a type object", - module_name, class_name); - goto bad; - } -#ifndef Py_LIMITED_API - basicsize = ((PyTypeObject *)result)->tp_basicsize; -#else - py_basicsize = PyObject_GetAttrString(result, "__basicsize__"); - if (!py_basicsize) - goto bad; - basicsize = PyLong_AsSsize_t(py_basicsize); - Py_DECREF(py_basicsize); - py_basicsize = 0; - if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred()) - goto bad; -#endif - if (!strict && (size_t)basicsize > size) { - PyOS_snprintf(warning, sizeof(warning), - "%s.%s size changed, may indicate binary incompatibility. Expected %zd, got %zd", - module_name, class_name, basicsize, size); - if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad; - } - else if ((size_t)basicsize != size) { - PyErr_Format(PyExc_ValueError, - "%.200s.%.200s has the wrong size, try recompiling. Expected %zd, got %zd", - module_name, class_name, basicsize, size); - goto bad; - } - return (PyTypeObject *)result; -bad: - Py_XDECREF(py_module); - Py_XDECREF(result); - return NULL; -} -#endif - -/* VoidPtrImport */ - #ifndef __PYX_HAVE_RT_ImportVoidPtr -#define __PYX_HAVE_RT_ImportVoidPtr -static int __Pyx_ImportVoidPtr(PyObject *module, const char *name, void **p, const char *sig) { - PyObject *d = 0; - PyObject *cobj = 0; - d = PyObject_GetAttrString(module, (char *)"__pyx_capi__"); - if (!d) - goto bad; - cobj = PyDict_GetItemString(d, name); - if (!cobj) { - PyErr_Format(PyExc_ImportError, - "%.200s does not export expected C variable %.200s", - PyModule_GetName(module), name); - goto bad; - } -#if PY_VERSION_HEX >= 0x02070000 - if (!PyCapsule_IsValid(cobj, sig)) { - PyErr_Format(PyExc_TypeError, - "C variable %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", - PyModule_GetName(module), name, sig, PyCapsule_GetName(cobj)); - goto bad; - } - *p = PyCapsule_GetPointer(cobj, sig); -#else - {const char *desc, *s1, *s2; - desc = (const char *)PyCObject_GetDesc(cobj); - if (!desc) - goto bad; - s1 = desc; s2 = sig; - while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; } - if (*s1 != *s2) { - PyErr_Format(PyExc_TypeError, - "C variable %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", - PyModule_GetName(module), name, sig, desc); - goto bad; - } - *p = PyCObject_AsVoidPtr(cobj);} -#endif - if (!(*p)) - goto bad; - Py_DECREF(d); - return 0; -bad: - Py_XDECREF(d); - return -1; -} -#endif - -/* FunctionImport */ - #ifndef __PYX_HAVE_RT_ImportFunction -#define __PYX_HAVE_RT_ImportFunction -static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) { - PyObject *d = 0; - PyObject *cobj = 0; - union { - void (*fp)(void); - void *p; - } tmp; - d = PyObject_GetAttrString(module, (char *)"__pyx_capi__"); - if (!d) - goto bad; - cobj = PyDict_GetItemString(d, funcname); - if (!cobj) { - PyErr_Format(PyExc_ImportError, - "%.200s does not export expected C function %.200s", - PyModule_GetName(module), funcname); - goto bad; - } -#if PY_VERSION_HEX >= 0x02070000 - if (!PyCapsule_IsValid(cobj, sig)) { - PyErr_Format(PyExc_TypeError, - "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", - PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj)); - goto bad; - } - tmp.p = PyCapsule_GetPointer(cobj, sig); -#else - {const char *desc, *s1, *s2; - desc = (const char *)PyCObject_GetDesc(cobj); - if (!desc) - goto bad; - s1 = desc; s2 = sig; - while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; } - if (*s1 != *s2) { - PyErr_Format(PyExc_TypeError, - "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", - PyModule_GetName(module), funcname, sig, desc); - goto bad; - } - tmp.p = PyCObject_AsVoidPtr(cobj);} -#endif - *f = tmp.fp; - if (!(*f)) - goto bad; - Py_DECREF(d); - return 0; -bad: - Py_XDECREF(d); - return -1; -} -#endif - -/* InitStrings */ - static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { - while (t->p) { - #if PY_MAJOR_VERSION < 3 - if (t->is_unicode) { - *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); - } else if (t->intern) { - *t->p = PyString_InternFromString(t->s); - } else { - *t->p = PyString_FromStringAndSize(t->s, t->n - 1); - } - #else - if (t->is_unicode | t->is_str) { - if (t->intern) { - *t->p = PyUnicode_InternFromString(t->s); - } else if (t->encoding) { - *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL); - } else { - *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1); - } - } else { - *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1); - } - #endif - if (!*t->p) - return -1; - if (PyObject_Hash(*t->p) == -1) - return -1; - ++t; - } - return 0; -} - -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { - return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); -} -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { - Py_ssize_t ignore; - return __Pyx_PyObject_AsStringAndSize(o, &ignore); -} -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -#if !CYTHON_PEP393_ENABLED -static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - char* defenc_c; - PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); - if (!defenc) return NULL; - defenc_c = PyBytes_AS_STRING(defenc); -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - { - char* end = defenc_c + PyBytes_GET_SIZE(defenc); - char* c; - for (c = defenc_c; c < end; c++) { - if ((unsigned char) (*c) >= 128) { - PyUnicode_AsASCIIString(o); - return NULL; - } - } - } -#endif - *length = PyBytes_GET_SIZE(defenc); - return defenc_c; -} -#else -static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - if (likely(PyUnicode_IS_ASCII(o))) { - *length = PyUnicode_GET_LENGTH(o); - return PyUnicode_AsUTF8(o); - } else { - PyUnicode_AsASCIIString(o); - return NULL; - } -#else - return PyUnicode_AsUTF8AndSize(o, length); -#endif -} -#endif -#endif -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT - if ( -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - __Pyx_sys_getdefaultencoding_not_ascii && -#endif - PyUnicode_Check(o)) { - return __Pyx_PyUnicode_AsStringAndSize(o, length); - } else -#endif -#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) - if (PyByteArray_Check(o)) { - *length = PyByteArray_GET_SIZE(o); - return PyByteArray_AS_STRING(o); - } else -#endif - { - char* result; - int r = PyBytes_AsStringAndSize(o, &result, length); - if (unlikely(r < 0)) { - return NULL; - } else { - return result; - } - } -} -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { - int is_true = x == Py_True; - if (is_true | (x == Py_False) | (x == Py_None)) return is_true; - else return PyObject_IsTrue(x); -} -static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { -#if PY_MAJOR_VERSION >= 3 - if (PyLong_Check(result)) { - if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, - "__int__ returned non-int (type %.200s). " - "The ability to return an instance of a strict subclass of int " - "is deprecated, and may be removed in a future version of Python.", - Py_TYPE(result)->tp_name)) { - Py_DECREF(result); - return NULL; - } - return result; - } -#endif - PyErr_Format(PyExc_TypeError, - "__%.4s__ returned non-%.4s (type %.200s)", - type_name, type_name, Py_TYPE(result)->tp_name); - Py_DECREF(result); - return NULL; -} -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { -#if CYTHON_USE_TYPE_SLOTS - PyNumberMethods *m; -#endif - const char *name = NULL; - PyObject *res = NULL; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x) || PyLong_Check(x))) -#else - if (likely(PyLong_Check(x))) -#endif - return __Pyx_NewRef(x); -#if CYTHON_USE_TYPE_SLOTS - m = Py_TYPE(x)->tp_as_number; - #if PY_MAJOR_VERSION < 3 - if (m && m->nb_int) { - name = "int"; - res = m->nb_int(x); - } - else if (m && m->nb_long) { - name = "long"; - res = m->nb_long(x); - } - #else - if (likely(m && m->nb_int)) { - name = "int"; - res = m->nb_int(x); - } - #endif -#else - if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { - res = PyNumber_Int(x); - } -#endif - if (likely(res)) { -#if PY_MAJOR_VERSION < 3 - if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { -#else - if (unlikely(!PyLong_CheckExact(res))) { -#endif - return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); - } - } - else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_TypeError, - "an integer is required"); - } - return res; -} -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { - Py_ssize_t ival; - PyObject *x; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(b))) { - if (sizeof(Py_ssize_t) >= sizeof(long)) - return PyInt_AS_LONG(b); - else - return PyInt_AsSsize_t(x); - } -#endif - if (likely(PyLong_CheckExact(b))) { - #if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)b)->ob_digit; - const Py_ssize_t size = Py_SIZE(b); - if (likely(__Pyx_sst_abs(size) <= 1)) { - ival = likely(size) ? digits[0] : 0; - if (size == -1) ival = -ival; - return ival; - } else { - switch (size) { - case 2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - } - } - #endif - return PyLong_AsSsize_t(b); - } - x = PyNumber_Index(b); - if (!x) return -1; - ival = PyInt_AsSsize_t(x); - Py_DECREF(x); - return ival; -} -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { - return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); -} -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { - return PyInt_FromSize_t(ival); -} - - -#endif /* Py_PYTHON_H */ diff --git a/python/gevent/queue.py b/python/gevent/queue.py deleted file mode 100644 index 57b937b..0000000 --- a/python/gevent/queue.py +++ /dev/null @@ -1,685 +0,0 @@ -# Copyright (c) 2009-2012 Denis Bilenko. See LICENSE for details. -# copyright (c) 2018 gevent -# cython: auto_pickle=False,embedsignature=True,always_allow_keywords=False -""" -Synchronized queues. - -The :mod:`gevent.queue` module implements multi-producer, multi-consumer queues -that work across greenlets, with the API similar to the classes found in the -standard :mod:`Queue` and :class:`multiprocessing <multiprocessing.Queue>` modules. - -The classes in this module implement the iterator protocol. Iterating -over a queue means repeatedly calling :meth:`get <Queue.get>` until -:meth:`get <Queue.get>` returns ``StopIteration`` (specifically that -class, not an instance or subclass). - - >>> queue = gevent.queue.Queue() - >>> queue.put(1) - >>> queue.put(2) - >>> queue.put(StopIteration) - >>> for item in queue: - ... print(item) - 1 - 2 - -.. versionchanged:: 1.0 - ``Queue(0)`` now means queue of infinite size, not a channel. A :exc:`DeprecationWarning` - will be issued with this argument. -""" - -from __future__ import absolute_import -import sys -from heapq import heappush as _heappush -from heapq import heappop as _heappop -from heapq import heapify as _heapify -import collections - -if sys.version_info[0] == 2: - import Queue as __queue__ # python 3: pylint:disable=import-error -else: - import queue as __queue__ # python 2: pylint:disable=import-error -Full = __queue__.Full -Empty = __queue__.Empty - -from gevent.timeout import Timeout -from gevent._hub_local import get_hub_noargs as get_hub -from greenlet import getcurrent -from gevent.exceptions import InvalidSwitchError - -__all__ = [] -__implements__ = ['Queue', 'PriorityQueue', 'LifoQueue'] -__extensions__ = ['JoinableQueue', 'Channel'] -__imports__ = ['Empty', 'Full'] -if hasattr(__queue__, 'SimpleQueue'): - __all__.append('SimpleQueue') # New in 3.7 - # SimpleQueue is implemented in C and directly allocates locks - # unaffected by monkey patching. We need the Python version. - SimpleQueue = __queue__._PySimpleQueue # pylint:disable=no-member -__all__ += (__implements__ + __extensions__ + __imports__) - - -# pylint 2.0.dev2 things collections.dequeue.popleft() doesn't return -# pylint:disable=assignment-from-no-return - -def _safe_remove(deq, item): - # For when the item may have been removed by - # Queue._unlock - try: - deq.remove(item) - except ValueError: - pass - -import gevent._waiter -locals()['Waiter'] = gevent._waiter.Waiter - -class ItemWaiter(Waiter): # pylint:disable=undefined-variable - # pylint:disable=assigning-non-slot - __slots__ = ( - 'item', - 'queue', - ) - - def __init__(self, item, queue): - Waiter.__init__(self) # pylint:disable=undefined-variable - self.item = item - self.queue = queue - - def put_and_switch(self): - self.queue._put(self.item) - self.queue = None - self.item = None - return self.switch(self) - -class Queue(object): - """ - Create a queue object with a given maximum size. - - If *maxsize* is less than or equal to zero or ``None``, the queue - size is infinite. - - Queues have a ``len`` equal to the number of items in them (the :meth:`qsize`), - but in a boolean context they are always True. - - .. versionchanged:: 1.1b3 - Queues now support :func:`len`; it behaves the same as :meth:`qsize`. - .. versionchanged:: 1.1b3 - Multiple greenlets that block on a call to :meth:`put` for a full queue - will now be awakened to put their items into the queue in the order in which - they arrived. Likewise, multiple greenlets that block on a call to :meth:`get` for - an empty queue will now receive items in the order in which they blocked. An - implementation quirk under CPython *usually* ensured this was roughly the case - previously anyway, but that wasn't the case for PyPy. - """ - - __slots__ = ( - '_maxsize', - 'getters', - 'putters', - 'hub', - '_event_unlock', - 'queue', - '__weakref__', - ) - - def __init__(self, maxsize=None, items=(), _warn_depth=2): - if maxsize is not None and maxsize <= 0: - if maxsize == 0: - import warnings - warnings.warn( - 'Queue(0) now equivalent to Queue(None); if you want a channel, use Channel', - DeprecationWarning, - stacklevel=_warn_depth) - maxsize = None - - self._maxsize = maxsize if maxsize is not None else -1 - # Explicitly maintain order for getters and putters that block - # so that callers can consistently rely on getting things out - # in the apparent order they went in. This was once required by - # imap_unordered. Previously these were set() objects, and the - # items put in the set have default hash() and eq() methods; - # under CPython, since new objects tend to have increasing - # hash values, this tended to roughly maintain order anyway, - # but that's not true under PyPy. An alternative to a deque - # (to avoid the linear scan of remove()) might be an - # OrderedDict, but it's 2.7 only; we don't expect to have so - # many waiters that removing an arbitrary element is a - # bottleneck, though. - self.getters = collections.deque() - self.putters = collections.deque() - self.hub = get_hub() - self._event_unlock = None - self.queue = self._create_queue(items) - - @property - def maxsize(self): - return self._maxsize if self._maxsize > 0 else None - - @maxsize.setter - def maxsize(self, nv): - # QQQ make maxsize into a property with setter that schedules unlock if necessary - if nv is None or nv <= 0: - self._maxsize = -1 - else: - self._maxsize = nv - - def copy(self): - return type(self)(self.maxsize, self.queue) - - def _create_queue(self, items=()): - return collections.deque(items) - - def _get(self): - return self.queue.popleft() - - def _peek(self): - return self.queue[0] - - def _put(self, item): - self.queue.append(item) - - def __repr__(self): - return '<%s at %s%s>' % (type(self).__name__, hex(id(self)), self._format()) - - def __str__(self): - return '<%s%s>' % (type(self).__name__, self._format()) - - def _format(self): - result = [] - if self.maxsize is not None: - result.append('maxsize=%r' % (self.maxsize, )) - if getattr(self, 'queue', None): - result.append('queue=%r' % (self.queue, )) - if self.getters: - result.append('getters[%s]' % len(self.getters)) - if self.putters: - result.append('putters[%s]' % len(self.putters)) - if result: - return ' ' + ' '.join(result) - return '' - - def qsize(self): - """Return the size of the queue.""" - return len(self.queue) - - def __len__(self): - """ - Return the size of the queue. This is the same as :meth:`qsize`. - - .. versionadded: 1.1b3 - - Previously, getting len() of a queue would raise a TypeError. - """ - - return self.qsize() - - def __bool__(self): - """ - A queue object is always True. - - .. versionadded: 1.1b3 - - Now that queues support len(), they need to implement ``__bool__`` - to return True for backwards compatibility. - """ - return True - - def __nonzero__(self): - # Py2. - # For Cython; __bool__ becomes a special method that we can't - # get by name. - return True - - def empty(self): - """Return ``True`` if the queue is empty, ``False`` otherwise.""" - return not self.qsize() - - def full(self): - """Return ``True`` if the queue is full, ``False`` otherwise. - - ``Queue(None)`` is never full. - """ - return self._maxsize > 0 and self.qsize() >= self._maxsize - - def put(self, item, block=True, timeout=None): - """Put an item into the queue. - - If optional arg *block* is true and *timeout* is ``None`` (the default), - block if necessary until a free slot is available. If *timeout* is - a positive number, it blocks at most *timeout* seconds and raises - the :class:`Full` exception if no free slot was available within that time. - Otherwise (*block* is false), put an item on the queue if a free slot - is immediately available, else raise the :class:`Full` exception (*timeout* - is ignored in that case). - """ - if self._maxsize == -1 or self.qsize() < self._maxsize: - # there's a free slot, put an item right away - self._put(item) - if self.getters: - self._schedule_unlock() - elif self.hub is getcurrent(): - # We're in the mainloop, so we cannot wait; we can switch to other greenlets though. - # Check if possible to get a free slot in the queue. - while self.getters and self.qsize() and self.qsize() >= self._maxsize: - getter = self.getters.popleft() - getter.switch(getter) - if self.qsize() < self._maxsize: - self._put(item) - return - raise Full - elif block: - waiter = ItemWaiter(item, self) - self.putters.append(waiter) - timeout = Timeout._start_new_or_dummy(timeout, Full) - try: - if self.getters: - self._schedule_unlock() - result = waiter.get() - if result is not waiter: - raise InvalidSwitchError("Invalid switch into Queue.put: %r" % (result, )) - finally: - timeout.cancel() - _safe_remove(self.putters, waiter) - else: - raise Full - - def put_nowait(self, item): - """Put an item into the queue without blocking. - - Only enqueue the item if a free slot is immediately available. - Otherwise raise the :class:`Full` exception. - """ - self.put(item, False) - - def __get_or_peek(self, method, block, timeout): - # Internal helper method. The `method` should be either - # self._get when called from self.get() or self._peek when - # called from self.peek(). Call this after the initial check - # to see if there are items in the queue. - - if self.hub is getcurrent(): - # special case to make get_nowait() or peek_nowait() runnable in the mainloop greenlet - # there are no items in the queue; try to fix the situation by unlocking putters - while self.putters: - # Note: get() used popleft(), peek used pop(); popleft - # is almost certainly correct. - self.putters.popleft().put_and_switch() - if self.qsize(): - return method() - raise Empty() - - if not block: - # We can't block, we're not the hub, and we have nothing - # to return. No choice... - raise Empty() - - waiter = Waiter() # pylint:disable=undefined-variable - timeout = Timeout._start_new_or_dummy(timeout, Empty) - try: - self.getters.append(waiter) - if self.putters: - self._schedule_unlock() - result = waiter.get() - if result is not waiter: - raise InvalidSwitchError('Invalid switch into Queue.get: %r' % (result, )) - return method() - finally: - timeout.cancel() - _safe_remove(self.getters, waiter) - - def get(self, block=True, timeout=None): - """Remove and return an item from the queue. - - If optional args *block* is true and *timeout* is ``None`` (the default), - block if necessary until an item is available. If *timeout* is a positive number, - it blocks at most *timeout* seconds and raises the :class:`Empty` exception - if no item was available within that time. Otherwise (*block* is false), return - an item if one is immediately available, else raise the :class:`Empty` exception - (*timeout* is ignored in that case). - """ - if self.qsize(): - if self.putters: - self._schedule_unlock() - return self._get() - - return self.__get_or_peek(self._get, block, timeout) - - def get_nowait(self): - """Remove and return an item from the queue without blocking. - - Only get an item if one is immediately available. Otherwise - raise the :class:`Empty` exception. - """ - return self.get(False) - - def peek(self, block=True, timeout=None): - """Return an item from the queue without removing it. - - If optional args *block* is true and *timeout* is ``None`` (the default), - block if necessary until an item is available. If *timeout* is a positive number, - it blocks at most *timeout* seconds and raises the :class:`Empty` exception - if no item was available within that time. Otherwise (*block* is false), return - an item if one is immediately available, else raise the :class:`Empty` exception - (*timeout* is ignored in that case). - """ - if self.qsize(): - # XXX: Why doesn't this schedule an unlock like get() does? - return self._peek() - - return self.__get_or_peek(self._peek, block, timeout) - - def peek_nowait(self): - """Return an item from the queue without blocking. - - Only return an item if one is immediately available. Otherwise - raise the :class:`Empty` exception. - """ - return self.peek(False) - - def _unlock(self): - while True: - repeat = False - if self.putters and (self._maxsize == -1 or self.qsize() < self._maxsize): - repeat = True - try: - putter = self.putters.popleft() - self._put(putter.item) - except: # pylint:disable=bare-except - putter.throw(*sys.exc_info()) - else: - putter.switch(putter) - if self.getters and self.qsize(): - repeat = True - getter = self.getters.popleft() - getter.switch(getter) - if not repeat: - return - - def _schedule_unlock(self): - if not self._event_unlock: - self._event_unlock = self.hub.loop.run_callback(self._unlock) - - def __iter__(self): - return self - - def __next__(self): - result = self.get() - if result is StopIteration: - raise result - return result - - next = __next__ # Py2 - - -class UnboundQueue(Queue): - # A specialization of Queue that knows it can never - # be bound. Changing its maxsize has no effect. - - __slots__ = () - - def __init__(self, maxsize=None, items=()): - if maxsize is not None: - raise ValueError("UnboundQueue has no maxsize") - Queue.__init__(self, maxsize, items) - self.putters = None # Will never be used. - - def put(self, item, block=True, timeout=None): - self._put(item) - if self.getters: - self._schedule_unlock() - - -class PriorityQueue(Queue): - '''A subclass of :class:`Queue` that retrieves entries in priority order (lowest first). - - Entries are typically tuples of the form: ``(priority number, data)``. - - .. versionchanged:: 1.2a1 - Any *items* given to the constructor will now be passed through - :func:`heapq.heapify` to ensure the invariants of this class hold. - Previously it was just assumed that they were already a heap. - ''' - - __slots__ = () - - def _create_queue(self, items=()): - q = list(items) - _heapify(q) - return q - - def _put(self, item): - _heappush(self.queue, item) - - def _get(self): - return _heappop(self.queue) - - -class LifoQueue(Queue): - '''A subclass of :class:`Queue` that retrieves most recently added entries first.''' - - __slots__ = () - - def _create_queue(self, items=()): - return list(items) - - def _put(self, item): - self.queue.append(item) - - def _get(self): - return self.queue.pop() - - def _peek(self): - return self.queue[-1] - - -class JoinableQueue(Queue): - """ - A subclass of :class:`Queue` that additionally has - :meth:`task_done` and :meth:`join` methods. - """ - - __slots__ = ( - '_cond', - 'unfinished_tasks', - ) - - def __init__(self, maxsize=None, items=(), unfinished_tasks=None): - """ - - .. versionchanged:: 1.1a1 - If *unfinished_tasks* is not given, then all the given *items* - (if any) will be considered unfinished. - - """ - Queue.__init__(self, maxsize, items, _warn_depth=3) - - from gevent.event import Event - self._cond = Event() - self._cond.set() - - if unfinished_tasks: - self.unfinished_tasks = unfinished_tasks - elif items: - self.unfinished_tasks = len(items) - else: - self.unfinished_tasks = 0 - - if self.unfinished_tasks: - self._cond.clear() - - def copy(self): - return type(self)(self.maxsize, self.queue, self.unfinished_tasks) - - def _format(self): - result = Queue._format(self) - if self.unfinished_tasks: - result += ' tasks=%s _cond=%s' % (self.unfinished_tasks, self._cond) - return result - - def _put(self, item): - Queue._put(self, item) - self.unfinished_tasks += 1 - self._cond.clear() - - def task_done(self): - '''Indicate that a formerly enqueued task is complete. Used by queue consumer threads. - For each :meth:`get <Queue.get>` used to fetch a task, a subsequent call to :meth:`task_done` tells the queue - that the processing on the task is complete. - - If a :meth:`join` is currently blocking, it will resume when all items have been processed - (meaning that a :meth:`task_done` call was received for every item that had been - :meth:`put <Queue.put>` into the queue). - - Raises a :exc:`ValueError` if called more times than there were items placed in the queue. - ''' - if self.unfinished_tasks <= 0: - raise ValueError('task_done() called too many times') - self.unfinished_tasks -= 1 - if self.unfinished_tasks == 0: - self._cond.set() - - def join(self, timeout=None): - ''' - Block until all items in the queue have been gotten and processed. - - The count of unfinished tasks goes up whenever an item is added to the queue. - The count goes down whenever a consumer thread calls :meth:`task_done` to indicate - that the item was retrieved and all work on it is complete. When the count of - unfinished tasks drops to zero, :meth:`join` unblocks. - - :param float timeout: If not ``None``, then wait no more than this time in seconds - for all tasks to finish. - :return: ``True`` if all tasks have finished; if ``timeout`` was given and expired before - all tasks finished, ``False``. - - .. versionchanged:: 1.1a1 - Add the *timeout* parameter. - ''' - return self._cond.wait(timeout=timeout) - - -class Channel(object): - - __slots__ = ( - 'getters', - 'putters', - 'hub', - '_event_unlock', - '__weakref__', - ) - - def __init__(self, maxsize=1): - # We take maxsize to simplify certain kinds of code - if maxsize != 1: - raise ValueError("Channels have a maxsize of 1") - self.getters = collections.deque() - self.putters = collections.deque() - self.hub = get_hub() - self._event_unlock = None - - def __repr__(self): - return '<%s at %s %s>' % (type(self).__name__, hex(id(self)), self._format()) - - def __str__(self): - return '<%s %s>' % (type(self).__name__, self._format()) - - def _format(self): - result = '' - if self.getters: - result += ' getters[%s]' % len(self.getters) - if self.putters: - result += ' putters[%s]' % len(self.putters) - return result - - @property - def balance(self): - return len(self.putters) - len(self.getters) - - def qsize(self): - return 0 - - def empty(self): - return True - - def full(self): - return True - - def put(self, item, block=True, timeout=None): - if self.hub is getcurrent(): - if self.getters: - getter = self.getters.popleft() - getter.switch(item) - return - raise Full - - if not block: - timeout = 0 - - waiter = Waiter() # pylint:disable=undefined-variable - item = (item, waiter) - self.putters.append(item) - timeout = Timeout._start_new_or_dummy(timeout, Full) - try: - if self.getters: - self._schedule_unlock() - result = waiter.get() - if result is not waiter: - raise InvalidSwitchError("Invalid switch into Channel.put: %r" % (result, )) - except: - _safe_remove(self.putters, item) - raise - finally: - timeout.cancel() - - def put_nowait(self, item): - self.put(item, False) - - def get(self, block=True, timeout=None): - if self.hub is getcurrent(): - if self.putters: - item, putter = self.putters.popleft() - self.hub.loop.run_callback(putter.switch, putter) - return item - - if not block: - timeout = 0 - - waiter = Waiter() # pylint:disable=undefined-variable - timeout = Timeout._start_new_or_dummy(timeout, Empty) - try: - self.getters.append(waiter) - if self.putters: - self._schedule_unlock() - return waiter.get() - except: - self.getters.remove(waiter) - raise - finally: - timeout.close() - - def get_nowait(self): - return self.get(False) - - def _unlock(self): - while self.putters and self.getters: - getter = self.getters.popleft() - item, putter = self.putters.popleft() - getter.switch(item) - putter.switch(putter) - - def _schedule_unlock(self): - if not self._event_unlock: - self._event_unlock = self.hub.loop.run_callback(self._unlock) - - def __iter__(self): - return self - - def __next__(self): - result = self.get() - if result is StopIteration: - raise result - return result - - next = __next__ # Py2 - -from gevent._util import import_c_accel -import_c_accel(globals(), 'gevent._queue') diff --git a/python/gevent/resolver/__init__.py b/python/gevent/resolver/__init__.py deleted file mode 100644 index 3da38e3..0000000 --- a/python/gevent/resolver/__init__.py +++ /dev/null @@ -1,103 +0,0 @@ -# Copyright (c) 2018 gevent contributors. See LICENSE for details. - -from _socket import gaierror -from _socket import error -from _socket import getservbyname -from _socket import getaddrinfo - -from gevent._compat import string_types -from gevent._compat import integer_types - -from gevent.socket import SOCK_STREAM -from gevent.socket import SOCK_DGRAM -from gevent.socket import SOL_TCP -from gevent.socket import AI_CANONNAME -from gevent.socket import EAI_SERVICE -from gevent.socket import AF_INET -from gevent.socket import AI_PASSIVE - - -def _lookup_port(port, socktype): - # pylint:disable=too-many-branches - socktypes = [] - if isinstance(port, string_types): - try: - port = int(port) - except ValueError: - try: - if socktype == 0: - origport = port - try: - port = getservbyname(port, 'tcp') - socktypes.append(SOCK_STREAM) - except error: - port = getservbyname(port, 'udp') - socktypes.append(SOCK_DGRAM) - else: - try: - if port == getservbyname(origport, 'udp'): - socktypes.append(SOCK_DGRAM) - except error: - pass - elif socktype == SOCK_STREAM: - port = getservbyname(port, 'tcp') - elif socktype == SOCK_DGRAM: - port = getservbyname(port, 'udp') - else: - raise gaierror(EAI_SERVICE, 'Servname not supported for ai_socktype') - except error as ex: - if 'not found' in str(ex): - raise gaierror(EAI_SERVICE, 'Servname not supported for ai_socktype') - else: - raise gaierror(str(ex)) - except UnicodeEncodeError: - raise error('Int or String expected', port) - elif port is None: - port = 0 - elif isinstance(port, integer_types): - pass - else: - raise error('Int or String expected', port, type(port)) - port = int(port % 65536) - if not socktypes and socktype: - socktypes.append(socktype) - return port, socktypes - -hostname_types = tuple(set(string_types + (bytearray, bytes))) - -def _resolve_special(hostname, family): - if not isinstance(hostname, hostname_types): - raise TypeError("argument 1 must be str, bytes or bytearray, not %s" % (type(hostname),)) - - if hostname == '': - result = getaddrinfo(None, 0, family, SOCK_DGRAM, 0, AI_PASSIVE) - if len(result) != 1: - raise error('wildcard resolved to multiple address') - return result[0][4][0] - return hostname - - -class AbstractResolver(object): - - def gethostbyname(self, hostname, family=AF_INET): - hostname = _resolve_special(hostname, family) - return self.gethostbyname_ex(hostname, family)[-1][0] - - def gethostbyname_ex(self, hostname, family=AF_INET): - aliases = self._getaliases(hostname, family) - addresses = [] - tuples = self.getaddrinfo(hostname, 0, family, - SOCK_STREAM, - SOL_TCP, AI_CANONNAME) - canonical = tuples[0][3] - for item in tuples: - addresses.append(item[4][0]) - # XXX we just ignore aliases - return (canonical, aliases, addresses) - - def getaddrinfo(self, host, port, family=0, socktype=0, proto=0, flags=0): - raise NotImplementedError() - - def _getaliases(self, hostname, family): - # pylint:disable=unused-argument - return [] diff --git a/python/gevent/resolver/ares.py b/python/gevent/resolver/ares.py deleted file mode 100644 index ea6e919..0000000 --- a/python/gevent/resolver/ares.py +++ /dev/null @@ -1,357 +0,0 @@ -# Copyright (c) 2011-2015 Denis Bilenko. See LICENSE for details. -""" -c-ares based hostname resolver. -""" -from __future__ import absolute_import, print_function, division -import os -import sys - -from _socket import getaddrinfo -from _socket import gaierror -from _socket import error - -from gevent._compat import string_types -from gevent._compat import text_type - -from gevent._compat import reraise -from gevent._compat import PY3 - -from gevent.hub import Waiter -from gevent.hub import get_hub - -from gevent.socket import AF_UNSPEC -from gevent.socket import AF_INET -from gevent.socket import AF_INET6 -from gevent.socket import SOCK_STREAM -from gevent.socket import SOCK_DGRAM -from gevent.socket import SOCK_RAW -from gevent.socket import AI_NUMERICHOST - -from gevent._config import config -from gevent._config import AresSettingMixin - -from .cares import channel, InvalidIP # pylint:disable=import-error,no-name-in-module -from . import _lookup_port as lookup_port -from . import _resolve_special -from . import AbstractResolver - -__all__ = ['Resolver'] - - -class Resolver(AbstractResolver): - """ - Implementation of the resolver API using the `c-ares`_ library. - - This implementation uses the c-ares library to handle name - resolution. c-ares is natively asynchronous at the socket level - and so integrates well into gevent's event loop. - - In comparison to :class:`gevent.resolver_thread.Resolver` (which - delegates to the native system resolver), the implementation is - much more complex. In addition, there have been reports of it not - properly honoring certain system configurations (for example, the - order in which IPv4 and IPv6 results are returned may not match - the threaded resolver). However, because it does not use threads, - it may scale better for applications that make many lookups. - - There are some known differences from the system resolver: - - - ``gethostbyname_ex`` and ``gethostbyaddr`` may return different - for the ``aliaslist`` tuple member. (Sometimes the same, - sometimes in a different order, sometimes a different alias - altogether.) - - ``gethostbyname_ex`` may return the ``ipaddrlist`` in a different order. - - ``getaddrinfo`` does not return ``SOCK_RAW`` results. - - ``getaddrinfo`` may return results in a different order. - - Handling of ``.local`` (mDNS) names may be different, even if they are listed in - the hosts file. - - c-ares will not resolve ``broadcasthost``, even if listed in the hosts file. - - This implementation may raise ``gaierror(4)`` where the system implementation would raise - ``herror(1)``. - - The results for ``localhost`` may be different. In particular, some system - resolvers will return more results from ``getaddrinfo`` than c-ares does, - such as SOCK_DGRAM results, and c-ares may report more ips on a multi-homed - host. - - .. caution:: This module is considered extremely experimental on PyPy, and - due to its implementation in cython, it may be slower. It may also lead to - interpreter crashes. - - .. _c-ares: http://c-ares.haxx.se - """ - - ares_class = channel - - def __init__(self, hub=None, use_environ=True, **kwargs): - if hub is None: - hub = get_hub() - self.hub = hub - if use_environ: - for setting in config.settings.values(): - if isinstance(setting, AresSettingMixin): - value = setting.get() - if value is not None: - kwargs.setdefault(setting.kwarg_name, value) - self.ares = self.ares_class(hub.loop, **kwargs) - self.pid = os.getpid() - self.params = kwargs - self.fork_watcher = hub.loop.fork(ref=False) - self.fork_watcher.start(self._on_fork) - - def __repr__(self): - return '<gevent.resolver_ares.Resolver at 0x%x ares=%r>' % (id(self), self.ares) - - def _on_fork(self): - # NOTE: See comment in gevent.hub.reinit. - pid = os.getpid() - if pid != self.pid: - self.hub.loop.run_callback(self.ares.destroy) - self.ares = self.ares_class(self.hub.loop, **self.params) - self.pid = pid - - def close(self): - if self.ares is not None: - self.hub.loop.run_callback(self.ares.destroy) - self.ares = None - self.fork_watcher.stop() - - def gethostbyname(self, hostname, family=AF_INET): - hostname = _resolve_special(hostname, family) - return self.gethostbyname_ex(hostname, family)[-1][0] - - def gethostbyname_ex(self, hostname, family=AF_INET): - if PY3: - if isinstance(hostname, str): - hostname = hostname.encode('idna') - elif not isinstance(hostname, (bytes, bytearray)): - raise TypeError('Expected es(idna), not %s' % type(hostname).__name__) - else: - if isinstance(hostname, text_type): - hostname = hostname.encode('ascii') - elif not isinstance(hostname, str): - raise TypeError('Expected string, not %s' % type(hostname).__name__) - - while True: - ares = self.ares - try: - waiter = Waiter(self.hub) - ares.gethostbyname(waiter, hostname, family) - result = waiter.get() - if not result[-1]: - raise gaierror(-5, 'No address associated with hostname') - return result - except gaierror: - if ares is self.ares: - if hostname == b'255.255.255.255': - # The stdlib handles this case in 2.7 and 3.x, but ares does not. - # It is tested by test_socket.py in 3.4. - # HACK: So hardcode the expected return. - return ('255.255.255.255', [], ['255.255.255.255']) - raise - # "self.ares is not ares" means channel was destroyed (because we were forked) - - def _lookup_port(self, port, socktype): - return lookup_port(port, socktype) - - def _getaddrinfo(self, host, port, family=0, socktype=0, proto=0, flags=0): - # pylint:disable=too-many-locals,too-many-branches - if isinstance(host, text_type): - host = host.encode('idna') - elif not isinstance(host, str) or (flags & AI_NUMERICHOST): - # this handles cases which do not require network access - # 1) host is None - # 2) host is of an invalid type - # 3) AI_NUMERICHOST flag is set - return getaddrinfo(host, port, family, socktype, proto, flags) - # we also call _socket.getaddrinfo below if family is not one of AF_* - - port, socktypes = self._lookup_port(port, socktype) - - socktype_proto = [(SOCK_STREAM, 6), (SOCK_DGRAM, 17), (SOCK_RAW, 0)] - if socktypes: - socktype_proto = [(x, y) for (x, y) in socktype_proto if x in socktypes] - if proto: - socktype_proto = [(x, y) for (x, y) in socktype_proto if proto == y] - - ares = self.ares - - if family == AF_UNSPEC: - ares_values = Values(self.hub, 2) - ares.gethostbyname(ares_values, host, AF_INET) - ares.gethostbyname(ares_values, host, AF_INET6) - elif family == AF_INET: - ares_values = Values(self.hub, 1) - ares.gethostbyname(ares_values, host, AF_INET) - elif family == AF_INET6: - ares_values = Values(self.hub, 1) - ares.gethostbyname(ares_values, host, AF_INET6) - else: - raise gaierror(5, 'ai_family not supported: %r' % (family, )) - - values = ares_values.get() - if len(values) == 2 and values[0] == values[1]: - values.pop() - - result = [] - result4 = [] - result6 = [] - - for addrs in values: - if addrs.family == AF_INET: - for addr in addrs[-1]: - sockaddr = (addr, port) - for socktype4, proto4 in socktype_proto: - result4.append((AF_INET, socktype4, proto4, '', sockaddr)) - elif addrs.family == AF_INET6: - for addr in addrs[-1]: - if addr == '::1': - dest = result - else: - dest = result6 - sockaddr = (addr, port, 0, 0) - for socktype6, proto6 in socktype_proto: - dest.append((AF_INET6, socktype6, proto6, '', sockaddr)) - - # As of 2016, some platforms return IPV6 first and some do IPV4 first, - # and some might even allow configuration of which is which. For backwards - # compatibility with earlier releases (but not necessarily resolver_thread!) - # we return 4 first. See https://github.com/gevent/gevent/issues/815 for more. - result += result4 + result6 - - if not result: - raise gaierror(-5, 'No address associated with hostname') - - return result - - def getaddrinfo(self, host, port, family=0, socktype=0, proto=0, flags=0): - while True: - ares = self.ares - try: - return self._getaddrinfo(host, port, family, socktype, proto, flags) - except gaierror: - if ares is self.ares: - raise - - def _gethostbyaddr(self, ip_address): - if PY3: - if isinstance(ip_address, str): - ip_address = ip_address.encode('idna') - elif not isinstance(ip_address, (bytes, bytearray)): - raise TypeError('Expected es(idna), not %s' % type(ip_address).__name__) - else: - if isinstance(ip_address, text_type): - ip_address = ip_address.encode('ascii') - elif not isinstance(ip_address, str): - raise TypeError('Expected string, not %s' % type(ip_address).__name__) - - waiter = Waiter(self.hub) - try: - self.ares.gethostbyaddr(waiter, ip_address) - return waiter.get() - except InvalidIP: - result = self._getaddrinfo(ip_address, None, family=AF_UNSPEC, socktype=SOCK_DGRAM) - if not result: - raise - _ip_address = result[0][-1][0] - if isinstance(_ip_address, text_type): - _ip_address = _ip_address.encode('ascii') - if _ip_address == ip_address: - raise - waiter.clear() - self.ares.gethostbyaddr(waiter, _ip_address) - return waiter.get() - - def gethostbyaddr(self, ip_address): - ip_address = _resolve_special(ip_address, AF_UNSPEC) - while True: - ares = self.ares - try: - return self._gethostbyaddr(ip_address) - except gaierror: - if ares is self.ares: - raise - - def _getnameinfo(self, sockaddr, flags): - if not isinstance(flags, int): - raise TypeError('an integer is required') - if not isinstance(sockaddr, tuple): - raise TypeError('getnameinfo() argument 1 must be a tuple') - - address = sockaddr[0] - if not PY3 and isinstance(address, text_type): - address = address.encode('ascii') - - if not isinstance(address, string_types): - raise TypeError('sockaddr[0] must be a string, not %s' % type(address).__name__) - - port = sockaddr[1] - if not isinstance(port, int): - raise TypeError('port must be an integer, not %s' % type(port)) - - waiter = Waiter(self.hub) - result = self._getaddrinfo(address, str(sockaddr[1]), family=AF_UNSPEC, socktype=SOCK_DGRAM) - if not result: - reraise(*sys.exc_info()) - elif len(result) != 1: - raise error('sockaddr resolved to multiple addresses') - family, _socktype, _proto, _name, address = result[0] - - if family == AF_INET: - if len(sockaddr) != 2: - raise error("IPv4 sockaddr must be 2 tuple") - elif family == AF_INET6: - address = address[:2] + sockaddr[2:] - - self.ares.getnameinfo(waiter, address, flags) - node, service = waiter.get() - - if service is None: - if PY3: - # ares docs: "If the query did not complete - # successfully, or one of the values was not - # requested, node or service will be NULL ". Python 2 - # allows that for the service, but Python 3 raises - # an error. This is tested by test_socket in py 3.4 - err = gaierror('nodename nor servname provided, or not known') - err.errno = 8 - raise err - service = '0' - return node, service - - def getnameinfo(self, sockaddr, flags): - while True: - ares = self.ares - try: - return self._getnameinfo(sockaddr, flags) - except gaierror: - if ares is self.ares: - raise - - -class Values(object): - # helper to collect multiple values; ignore errors unless nothing has succeeded - # QQQ could probably be moved somewhere - hub.py? - - __slots__ = ['count', 'values', 'error', 'waiter'] - - def __init__(self, hub, count): - self.count = count - self.values = [] - self.error = None - self.waiter = Waiter(hub) - - def __call__(self, source): - self.count -= 1 - if source.exception is None: - self.values.append(source.value) - else: - self.error = source.exception - if self.count <= 0: - self.waiter.switch(None) - - def get(self): - self.waiter.get() - if self.values: - return self.values - assert error is not None - raise self.error # pylint:disable=raising-bad-type diff --git a/python/gevent/resolver/blocking.py b/python/gevent/resolver/blocking.py deleted file mode 100644 index 84cbd9c..0000000 --- a/python/gevent/resolver/blocking.py +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright (c) 2018 gevent contributors. See LICENSE for details. - -import _socket - -class Resolver(object): - """ - A resolver that directly uses the system's resolver functions. - - .. caution:: - - This resolver is *not* cooperative. - - This resolver has the lowest overhead of any resolver and - typically approaches the speed of the unmodified :mod:`socket` - functions. However, it is not cooperative, so if name resolution - blocks, the entire thread and all its greenlets will be blocked. - - This can be useful during debugging, or it may be a good choice if - your operating system provides a good caching resolver (such as - macOS's Directory Services) that is usually very fast and - functionally non-blocking. - - .. versionchanged:: 1.3a2 - This was previously undocumented and existed in :mod:`gevent.socket`. - - """ - - def __init__(self, hub=None): - pass - - def close(self): - pass - - for method in ( - 'gethostbyname', - 'gethostbyname_ex', - 'getaddrinfo', - 'gethostbyaddr', - 'getnameinfo' - ): - locals()[method] = staticmethod(getattr(_socket, method)) diff --git a/python/gevent/resolver/cares.c b/python/gevent/resolver/cares.c deleted file mode 100644 index e9cf5e0..0000000 --- a/python/gevent/resolver/cares.c +++ /dev/null @@ -1,15233 +0,0 @@ -/* Generated by Cython 0.28.5 */ - -/* BEGIN: Cython Metadata -{ - "distutils": { - "define_macros": [ - [ - "FD_SETSIZE", - "1024" - ], - [ - "_WIN32", - "1" - ], - [ - "CARES_STATICLIB", - "" - ], - [ - "CARES_EMBED", - "1" - ] - ], - "depends": [ - "C:\\projects\\gevent\\deps\\c-ares\\ares.h", - "src/gevent/resolver/dnshelper.c", - "src/gevent/resolver\\cares_ntop.h", - "src/gevent/resolver\\cares_pton.h", - "src\\gevent\\resolver\\cares_ntop.h", - "src\\gevent\\resolver\\cares_pton.h", - "src\\gevent\\resolver\\dnshelper.c" - ], - "include_dirs": [ - "src/gevent/resolver", - "C:\\projects\\gevent\\deps\\c-ares" - ], - "libraries": [ - "ws2_32", - "advapi32" - ], - "name": "gevent.resolver.cares", - "sources": [ - "src/gevent/resolver/cares.pyx", - "deps/c-ares\\ares__close_sockets.c", - "deps/c-ares\\ares__get_hostent.c", - "deps/c-ares\\ares__read_line.c", - "deps/c-ares\\ares__timeval.c", - "deps/c-ares\\ares_android.c", - "deps/c-ares\\ares_cancel.c", - "deps/c-ares\\ares_create_query.c", - "deps/c-ares\\ares_data.c", - "deps/c-ares\\ares_destroy.c", - "deps/c-ares\\ares_expand_name.c", - "deps/c-ares\\ares_expand_string.c", - "deps/c-ares\\ares_fds.c", - "deps/c-ares\\ares_free_hostent.c", - "deps/c-ares\\ares_free_string.c", - "deps/c-ares\\ares_getenv.c", - "deps/c-ares\\ares_gethostbyaddr.c", - "deps/c-ares\\ares_gethostbyname.c", - "deps/c-ares\\ares_getnameinfo.c", - "deps/c-ares\\ares_getopt.c", - "deps/c-ares\\ares_getsock.c", - "deps/c-ares\\ares_init.c", - "deps/c-ares\\ares_library_init.c", - "deps/c-ares\\ares_llist.c", - "deps/c-ares\\ares_mkquery.c", - "deps/c-ares\\ares_nowarn.c", - "deps/c-ares\\ares_options.c", - "deps/c-ares\\ares_parse_a_reply.c", - "deps/c-ares\\ares_parse_aaaa_reply.c", - "deps/c-ares\\ares_parse_mx_reply.c", - "deps/c-ares\\ares_parse_naptr_reply.c", - "deps/c-ares\\ares_parse_ns_reply.c", - "deps/c-ares\\ares_parse_ptr_reply.c", - "deps/c-ares\\ares_parse_soa_reply.c", - "deps/c-ares\\ares_parse_srv_reply.c", - "deps/c-ares\\ares_parse_txt_reply.c", - "deps/c-ares\\ares_platform.c", - "deps/c-ares\\ares_process.c", - "deps/c-ares\\ares_query.c", - "deps/c-ares\\ares_search.c", - "deps/c-ares\\ares_send.c", - "deps/c-ares\\ares_strcasecmp.c", - "deps/c-ares\\ares_strdup.c", - "deps/c-ares\\ares_strerror.c", - "deps/c-ares\\ares_timeout.c", - "deps/c-ares\\ares_version.c", - "deps/c-ares\\ares_writev.c", - "deps/c-ares\\bitncmp.c", - "deps/c-ares\\inet_net_pton.c", - "deps/c-ares\\inet_ntop.c", - "deps/c-ares\\windows_port.c" - ] - }, - "module_name": "gevent.resolver.cares" -} -END: Cython Metadata */ - -#define PY_SSIZE_T_CLEAN -#include "Python.h" -#ifndef Py_PYTHON_H - #error Python headers needed to compile C extensions, please install development version of Python. -#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) - #error Cython requires Python 2.6+ or Python 3.3+. -#else -#define CYTHON_ABI "0_28_5" -#define CYTHON_FUTURE_DIVISION 0 -#include <stddef.h> -#ifndef offsetof - #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) -#endif -#if !defined(WIN32) && !defined(MS_WINDOWS) - #ifndef __stdcall - #define __stdcall - #endif - #ifndef __cdecl - #define __cdecl - #endif - #ifndef __fastcall - #define __fastcall - #endif -#endif -#ifndef DL_IMPORT - #define DL_IMPORT(t) t -#endif -#ifndef DL_EXPORT - #define DL_EXPORT(t) t -#endif -#define __PYX_COMMA , -#ifndef HAVE_LONG_LONG - #if PY_VERSION_HEX >= 0x02070000 - #define HAVE_LONG_LONG - #endif -#endif -#ifndef PY_LONG_LONG - #define PY_LONG_LONG LONG_LONG -#endif -#ifndef Py_HUGE_VAL - #define Py_HUGE_VAL HUGE_VAL -#endif -#ifdef PYPY_VERSION - #define CYTHON_COMPILING_IN_PYPY 1 - #define CYTHON_COMPILING_IN_PYSTON 0 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #undef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 0 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #if PY_VERSION_HEX < 0x03050000 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #undef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #undef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 1 - #undef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 0 - #undef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 0 - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 -#elif defined(PYSTON_VERSION) - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_PYSTON 1 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 -#else - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_PYSTON 0 - #define CYTHON_COMPILING_IN_CPYTHON 1 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #if PY_VERSION_HEX < 0x02070000 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #elif !defined(CYTHON_USE_PYTYPE_LOOKUP) - #define CYTHON_USE_PYTYPE_LOOKUP 1 - #endif - #if PY_MAJOR_VERSION < 3 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #if PY_VERSION_HEX < 0x02070000 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #elif !defined(CYTHON_USE_PYLONG_INTERNALS) - #define CYTHON_USE_PYLONG_INTERNALS 1 - #endif - #ifndef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 1 - #endif - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #if PY_VERSION_HEX < 0x030300F0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #elif !defined(CYTHON_USE_UNICODE_WRITER) - #define CYTHON_USE_UNICODE_WRITER 1 - #endif - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #ifndef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 1 - #endif - #ifndef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 1 - #endif - #ifndef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT (0 && PY_VERSION_HEX >= 0x03050000) - #endif - #ifndef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1) - #endif -#endif -#if !defined(CYTHON_FAST_PYCCALL) -#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) -#endif -#if CYTHON_USE_PYLONG_INTERNALS - #include "longintrepr.h" - #undef SHIFT - #undef BASE - #undef MASK -#endif -#ifndef __has_attribute - #define __has_attribute(x) 0 -#endif -#ifndef __has_cpp_attribute - #define __has_cpp_attribute(x) 0 -#endif -#ifndef CYTHON_RESTRICT - #if defined(__GNUC__) - #define CYTHON_RESTRICT __restrict__ - #elif defined(_MSC_VER) && _MSC_VER >= 1400 - #define CYTHON_RESTRICT __restrict - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_RESTRICT restrict - #else - #define CYTHON_RESTRICT - #endif -#endif -#ifndef CYTHON_UNUSED -# if defined(__GNUC__) -# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -#endif -#ifndef CYTHON_MAYBE_UNUSED_VAR -# if defined(__cplusplus) - template<class T> void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } -# else -# define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) -# endif -#endif -#ifndef CYTHON_NCP_UNUSED -# if CYTHON_COMPILING_IN_CPYTHON -# define CYTHON_NCP_UNUSED -# else -# define CYTHON_NCP_UNUSED CYTHON_UNUSED -# endif -#endif -#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) -#ifdef _MSC_VER - #ifndef _MSC_STDINT_H_ - #if _MSC_VER < 1300 - typedef unsigned char uint8_t; - typedef unsigned int uint32_t; - #else - typedef unsigned __int8 uint8_t; - typedef unsigned __int32 uint32_t; - #endif - #endif -#else - #include <stdint.h> -#endif -#ifndef CYTHON_FALLTHROUGH - #if defined(__cplusplus) && __cplusplus >= 201103L - #if __has_cpp_attribute(fallthrough) - #define CYTHON_FALLTHROUGH [[fallthrough]] - #elif __has_cpp_attribute(clang::fallthrough) - #define CYTHON_FALLTHROUGH [[clang::fallthrough]] - #elif __has_cpp_attribute(gnu::fallthrough) - #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] - #endif - #endif - #ifndef CYTHON_FALLTHROUGH - #if __has_attribute(fallthrough) - #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) - #else - #define CYTHON_FALLTHROUGH - #endif - #endif - #if defined(__clang__ ) && defined(__apple_build_version__) - #if __apple_build_version__ < 7000000 - #undef CYTHON_FALLTHROUGH - #define CYTHON_FALLTHROUGH - #endif - #endif -#endif - -#ifndef CYTHON_INLINE - #if defined(__clang__) - #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) - #elif defined(__GNUC__) - #define CYTHON_INLINE __inline__ - #elif defined(_MSC_VER) - #define CYTHON_INLINE __inline - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_INLINE inline - #else - #define CYTHON_INLINE - #endif -#endif - -#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) - #define Py_OptimizeFlag 0 -#endif -#define __PYX_BUILD_PY_SSIZE_T "n" -#define CYTHON_FORMAT_SSIZE_T "z" -#if PY_MAJOR_VERSION < 3 - #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) - #define __Pyx_DefaultClassType PyClass_Type -#else - #define __Pyx_BUILTIN_MODULE_NAME "builtins" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) - #define __Pyx_DefaultClassType PyType_Type -#endif -#ifndef Py_TPFLAGS_CHECKTYPES - #define Py_TPFLAGS_CHECKTYPES 0 -#endif -#ifndef Py_TPFLAGS_HAVE_INDEX - #define Py_TPFLAGS_HAVE_INDEX 0 -#endif -#ifndef Py_TPFLAGS_HAVE_NEWBUFFER - #define Py_TPFLAGS_HAVE_NEWBUFFER 0 -#endif -#ifndef Py_TPFLAGS_HAVE_FINALIZE - #define Py_TPFLAGS_HAVE_FINALIZE 0 -#endif -#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) - #ifndef METH_FASTCALL - #define METH_FASTCALL 0x80 - #endif - typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); - typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, - Py_ssize_t nargs, PyObject *kwnames); -#else - #define __Pyx_PyCFunctionFast _PyCFunctionFast - #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords -#endif -#if CYTHON_FAST_PYCCALL -#define __Pyx_PyFastCFunction_Check(func)\ - ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))))) -#else -#define __Pyx_PyFastCFunction_Check(func) 0 -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) - #define PyObject_Malloc(s) PyMem_Malloc(s) - #define PyObject_Free(p) PyMem_Free(p) - #define PyObject_Realloc(p) PyMem_Realloc(p) -#endif -#if CYTHON_COMPILING_IN_PYSTON - #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) -#else - #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) -#endif -#if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000 - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#elif PY_VERSION_HEX >= 0x03060000 - #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() -#elif PY_VERSION_HEX >= 0x03000000 - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#else - #define __Pyx_PyThreadState_Current _PyThreadState_Current -#endif -#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) -#include "pythread.h" -#define Py_tss_NEEDS_INIT 0 -typedef int Py_tss_t; -static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { - *key = PyThread_create_key(); - return 0; // PyThread_create_key reports success always -} -static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { - Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); - *key = Py_tss_NEEDS_INIT; - return key; -} -static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { - PyObject_Free(key); -} -static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { - return *key != Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { - PyThread_delete_key(*key); - *key = Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { - return PyThread_set_key_value(*key, value); -} -static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { - return PyThread_get_key_value(*key); -} -#endif // TSS (Thread Specific Storage) API -#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) -#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) -#else -#define __Pyx_PyDict_NewPresized(n) PyDict_New() -#endif -#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION - #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) -#else - #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) -#endif -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS -#define __Pyx_PyDict_GetItemStr(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) -#else -#define __Pyx_PyDict_GetItemStr(dict, name) PyDict_GetItem(dict, name) -#endif -#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) - #define CYTHON_PEP393_ENABLED 1 - #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ - 0 : _PyUnicode_Ready((PyObject *)(op))) - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) - #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) - #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) - #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) -#else - #define CYTHON_PEP393_ENABLED 0 - #define PyUnicode_1BYTE_KIND 1 - #define PyUnicode_2BYTE_KIND 2 - #define PyUnicode_4BYTE_KIND 4 - #define __Pyx_PyUnicode_READY(op) (0) - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) - #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) - #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) - #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) -#endif -#if CYTHON_COMPILING_IN_PYPY - #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) -#else - #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ - PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) - #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) - #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) - #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) -#endif -#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) -#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) -#else - #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) -#endif -#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) - #define PyObject_ASCII(o) PyObject_Repr(o) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBaseString_Type PyUnicode_Type - #define PyStringObject PyUnicodeObject - #define PyString_Type PyUnicode_Type - #define PyString_Check PyUnicode_Check - #define PyString_CheckExact PyUnicode_CheckExact - #define PyObject_Unicode PyObject_Str -#endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) - #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) -#else - #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) - #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) -#endif -#ifndef PySet_CheckExact - #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) -#endif -#if CYTHON_ASSUME_SAFE_MACROS - #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) -#else - #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyIntObject PyLongObject - #define PyInt_Type PyLong_Type - #define PyInt_Check(op) PyLong_Check(op) - #define PyInt_CheckExact(op) PyLong_CheckExact(op) - #define PyInt_FromString PyLong_FromString - #define PyInt_FromUnicode PyLong_FromUnicode - #define PyInt_FromLong PyLong_FromLong - #define PyInt_FromSize_t PyLong_FromSize_t - #define PyInt_FromSsize_t PyLong_FromSsize_t - #define PyInt_AsLong PyLong_AsLong - #define PyInt_AS_LONG PyLong_AS_LONG - #define PyInt_AsSsize_t PyLong_AsSsize_t - #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask - #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask - #define PyNumber_Int PyNumber_Long -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBoolObject PyLongObject -#endif -#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY - #ifndef PyUnicode_InternFromString - #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) - #endif -#endif -#if PY_VERSION_HEX < 0x030200A4 - typedef long Py_hash_t; - #define __Pyx_PyInt_FromHash_t PyInt_FromLong - #define __Pyx_PyInt_AsHash_t PyInt_AsLong -#else - #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t - #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t -#endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : (Py_INCREF(func), func)) -#else - #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) -#endif -#if CYTHON_USE_ASYNC_SLOTS - #if PY_VERSION_HEX >= 0x030500B1 - #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods - #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) - #else - #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) - #endif -#else - #define __Pyx_PyType_AsAsync(obj) NULL -#endif -#ifndef __Pyx_PyAsyncMethodsStruct - typedef struct { - unaryfunc am_await; - unaryfunc am_aiter; - unaryfunc am_anext; - } __Pyx_PyAsyncMethodsStruct; -#endif - -#if defined(WIN32) || defined(MS_WINDOWS) - #define _USE_MATH_DEFINES -#endif -#include <math.h> -#ifdef NAN -#define __PYX_NAN() ((float) NAN) -#else -static CYTHON_INLINE float __PYX_NAN() { - float value; - memset(&value, 0xFF, sizeof(value)); - return value; -} -#endif -#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) -#define __Pyx_truncl trunc -#else -#define __Pyx_truncl truncl -#endif - - -#define __PYX_ERR(f_index, lineno, Ln_error) \ -{ \ - __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \ -} - -#ifndef __PYX_EXTERN_C - #ifdef __cplusplus - #define __PYX_EXTERN_C extern "C" - #else - #define __PYX_EXTERN_C extern - #endif -#endif - -#define __PYX_HAVE__gevent__resolver__cares -#define __PYX_HAVE_API__gevent__resolver__cares -/* Early includes */ -#include "ares.h" -#include "cares_pton.h" -#include <string.h> -#include <stdio.h> -#include "dnshelper.c" -#ifdef _OPENMP -#include <omp.h> -#endif /* _OPENMP */ - -#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) -#define CYTHON_WITHOUT_ASSERTIONS -#endif - -typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; - const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; - -#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 -#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0 -#define __PYX_DEFAULT_STRING_ENCODING "" -#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString -#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#define __Pyx_uchar_cast(c) ((unsigned char)c) -#define __Pyx_long_cast(x) ((long)x) -#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ - (sizeof(type) < sizeof(Py_ssize_t)) ||\ - (sizeof(type) > sizeof(Py_ssize_t) &&\ - likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX) &&\ - (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ - v == (type)PY_SSIZE_T_MIN))) ||\ - (sizeof(type) == sizeof(Py_ssize_t) &&\ - (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX))) ) -#if defined (__cplusplus) && __cplusplus >= 201103L - #include <cstdlib> - #define __Pyx_sst_abs(value) std::abs(value) -#elif SIZEOF_INT >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) abs(value) -#elif SIZEOF_LONG >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) labs(value) -#elif defined (_MSC_VER) - #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) -#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define __Pyx_sst_abs(value) llabs(value) -#elif defined (__GNUC__) - #define __Pyx_sst_abs(value) __builtin_llabs(value) -#else - #define __Pyx_sst_abs(value) ((value<0) ? -value : value) -#endif -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); -#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) -#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) -#define __Pyx_PyBytes_FromString PyBytes_FromString -#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); -#if PY_MAJOR_VERSION < 3 - #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#else - #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize -#endif -#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) -#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) -#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) -#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) -#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) -static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { - const Py_UNICODE *u_end = u; - while (*u_end++) ; - return (size_t)(u_end - u - 1); -} -#define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) -#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode -#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode -#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) -#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); -#define __Pyx_PySequence_Tuple(obj)\ - (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); -#if CYTHON_ASSUME_SAFE_MACROS -#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) -#else -#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) -#endif -#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) -#if PY_MAJOR_VERSION >= 3 -#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) -#else -#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) -#endif -#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x)) -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII -static int __Pyx_sys_getdefaultencoding_not_ascii; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - PyObject* ascii_chars_u = NULL; - PyObject* ascii_chars_b = NULL; - const char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - if (strcmp(default_encoding_c, "ascii") == 0) { - __Pyx_sys_getdefaultencoding_not_ascii = 0; - } else { - char ascii_chars[128]; - int c; - for (c = 0; c < 128; c++) { - ascii_chars[c] = c; - } - __Pyx_sys_getdefaultencoding_not_ascii = 1; - ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); - if (!ascii_chars_u) goto bad; - ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); - if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { - PyErr_Format( - PyExc_ValueError, - "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", - default_encoding_c); - goto bad; - } - Py_DECREF(ascii_chars_u); - Py_DECREF(ascii_chars_b); - } - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - Py_XDECREF(ascii_chars_u); - Py_XDECREF(ascii_chars_b); - return -1; -} -#endif -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) -#else -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -static char* __PYX_DEFAULT_STRING_ENCODING; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c)); - if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; - strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - return -1; -} -#endif -#endif - - -/* Test for GCC > 2.95 */ -#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) - #define likely(x) __builtin_expect(!!(x), 1) - #define unlikely(x) __builtin_expect(!!(x), 0) -#else /* !__GNUC__ or GCC < 2.95 */ - #define likely(x) (x) - #define unlikely(x) (x) -#endif /* __GNUC__ */ -static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } - -static PyObject *__pyx_m = NULL; -static PyObject *__pyx_d; -static PyObject *__pyx_b; -static PyObject *__pyx_cython_runtime = NULL; -static PyObject *__pyx_empty_tuple; -static PyObject *__pyx_empty_bytes; -static PyObject *__pyx_empty_unicode; -static int __pyx_lineno; -static int __pyx_clineno = 0; -static const char * __pyx_cfilenm= __FILE__; -static const char *__pyx_filename; - - -static const char *__pyx_f[] = { - "src\\gevent\\resolver\\cares.pyx", - "type.pxd", -}; - -/*--- Type declarations ---*/ -struct __pyx_obj_6gevent_8resolver_5cares_result; -struct __pyx_obj_6gevent_8resolver_5cares_channel; -struct __pyx_opt_args_6gevent_8resolver_5cares__convert_cares_flags; -struct __pyx_opt_args_6gevent_8resolver_5cares_7channel_set_servers; - -/* "gevent/resolver/cares.pyx":146 - * - * - * cpdef _convert_cares_flags(int flags, int default=cares.ARES_NI_LOOKUPHOST|cares.ARES_NI_LOOKUPSERVICE): # <<<<<<<<<<<<<< - * if _cares_flag_map is None: - * _prepare_cares_flag_map() - */ -struct __pyx_opt_args_6gevent_8resolver_5cares__convert_cares_flags { - int __pyx_n; - int __pyx_default; -}; - -/* "gevent/resolver/cares.pyx":323 - * self.channel = NULL - * - * cpdef set_servers(self, servers=None): # <<<<<<<<<<<<<< - * if not self.channel: - * raise gaierror(cares.ARES_EDESTRUCTION, 'this ares channel has been destroyed') - */ -struct __pyx_opt_args_6gevent_8resolver_5cares_7channel_set_servers { - int __pyx_n; - PyObject *servers; -}; - -/* "gevent/resolver/cares.pyx":173 - * - * - * cdef class result: # <<<<<<<<<<<<<< - * cdef public object value - * cdef public object exception - */ -struct __pyx_obj_6gevent_8resolver_5cares_result { - PyObject_HEAD - PyObject *value; - PyObject *exception; -}; - - -/* "gevent/resolver/cares.pyx":254 - * - * - * cdef class channel: # <<<<<<<<<<<<<< - * - * cdef public object loop - */ -struct __pyx_obj_6gevent_8resolver_5cares_channel { - PyObject_HEAD - struct __pyx_vtabstruct_6gevent_8resolver_5cares_channel *__pyx_vtab; - PyObject *loop; - struct ares_channeldata *channel; - PyObject *_watchers; - PyObject *_timer; -}; - - - -struct __pyx_vtabstruct_6gevent_8resolver_5cares_channel { - PyObject *(*set_servers)(struct __pyx_obj_6gevent_8resolver_5cares_channel *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_8resolver_5cares_7channel_set_servers *__pyx_optional_args); - PyObject *(*_sock_state_callback)(struct __pyx_obj_6gevent_8resolver_5cares_channel *, int, int, int); - PyObject *(*_getnameinfo)(struct __pyx_obj_6gevent_8resolver_5cares_channel *, PyObject *, PyObject *, int, int __pyx_skip_dispatch); -}; -static struct __pyx_vtabstruct_6gevent_8resolver_5cares_channel *__pyx_vtabptr_6gevent_8resolver_5cares_channel; - -/* --- Runtime support code (head) --- */ -/* Refnanny.proto */ -#ifndef CYTHON_REFNANNY - #define CYTHON_REFNANNY 0 -#endif -#if CYTHON_REFNANNY - typedef struct { - void (*INCREF)(void*, PyObject*, int); - void (*DECREF)(void*, PyObject*, int); - void (*GOTREF)(void*, PyObject*, int); - void (*GIVEREF)(void*, PyObject*, int); - void* (*SetupContext)(const char*, int, const char*); - void (*FinishContext)(void**); - } __Pyx_RefNannyAPIStruct; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); - #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; -#ifdef WITH_THREAD - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - if (acquire_gil) {\ - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - PyGILState_Release(__pyx_gilstate_save);\ - } else {\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - } -#else - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) -#endif - #define __Pyx_RefNannyFinishContext()\ - __Pyx_RefNanny->FinishContext(&__pyx_refnanny) - #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) - #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) - #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) - #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0) -#else - #define __Pyx_RefNannyDeclarations - #define __Pyx_RefNannySetupContext(name, acquire_gil) - #define __Pyx_RefNannyFinishContext() - #define __Pyx_INCREF(r) Py_INCREF(r) - #define __Pyx_DECREF(r) Py_DECREF(r) - #define __Pyx_GOTREF(r) - #define __Pyx_GIVEREF(r) - #define __Pyx_XINCREF(r) Py_XINCREF(r) - #define __Pyx_XDECREF(r) Py_XDECREF(r) - #define __Pyx_XGOTREF(r) - #define __Pyx_XGIVEREF(r) -#endif -#define __Pyx_XDECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_XDECREF(tmp);\ - } while (0) -#define __Pyx_DECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_DECREF(tmp);\ - } while (0) -#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) -#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) - -/* PyObjectGetAttrStr.proto */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) -#endif - -/* GetBuiltinName.proto */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name); - -/* Import.proto */ -static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); - -/* PyErrExceptionMatches.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) -static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); -#else -#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) -#endif - -/* PyThreadStateGet.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; -#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; -#define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type -#else -#define __Pyx_PyThreadState_declare -#define __Pyx_PyThreadState_assign -#define __Pyx_PyErr_Occurred() PyErr_Occurred() -#endif - -/* PyErrFetchRestore.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) -#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) -#else -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#endif -#else -#define __Pyx_PyErr_Clear() PyErr_Clear() -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) -#endif - -/* GetAttr.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *); - -/* GetAttr3.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *); - -/* GetModuleGlobalName.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name); - -/* RaiseTooManyValuesToUnpack.proto */ -static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); - -/* RaiseNeedMoreValuesToUnpack.proto */ -static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); - -/* IterFinish.proto */ -static CYTHON_INLINE int __Pyx_IterFinish(void); - -/* UnpackItemEndCheck.proto */ -static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); - -/* PyFunctionFastCall.proto */ -#if CYTHON_FAST_PYCALL -#define __Pyx_PyFunction_FastCall(func, args, nargs)\ - __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs); -#else -#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) -#endif -#endif - -/* PyCFunctionFastCall.proto */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); -#else -#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) -#endif - -/* PyObjectCall.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); -#else -#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) -#endif - -/* RaiseException.proto */ -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); - -/* RaiseDoubleKeywords.proto */ -static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); - -/* ParseKeywords.proto */ -static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\ - PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\ - const char* function_name); - -/* RaiseArgTupleInvalid.proto */ -static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, - Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); - -/* PyObjectCallMethO.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); -#endif - -/* PyObjectCallOneArg.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); - -/* WriteUnraisableException.proto */ -static void __Pyx_WriteUnraisable(const char *name, int clineno, - int lineno, const char *filename, - int full_traceback, int nogil); - -/* PyObjectSetAttrStr.proto */ -#if CYTHON_USE_TYPE_SLOTS -#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o, n, NULL) -static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value); -#else -#define __Pyx_PyObject_DelAttrStr(o,n) PyObject_DelAttr(o,n) -#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v) -#endif - -/* RaiseNoneIterError.proto */ -static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void); - -/* ExtTypeTest.proto */ -static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); - -/* SaveResetException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -#else -#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) -#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) -#endif - -/* GetException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) -static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#else -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); -#endif - -/* PyObjectCallNoArg.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); -#else -#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL) -#endif - -/* GetItemInt.proto */ -#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ - (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ - __Pyx_GetItemInt_Generic(o, to_py_func(i)))) -#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ - (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, - int wraparound, int boundscheck); -#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ - (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, - int wraparound, int boundscheck); -static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, - int is_list, int wraparound, int boundscheck); - -/* pyobject_as_double.proto */ -static double __Pyx__PyObject_AsDouble(PyObject* obj); -#if CYTHON_COMPILING_IN_PYPY -#define __Pyx_PyObject_AsDouble(obj)\ -(likely(PyFloat_CheckExact(obj)) ? PyFloat_AS_DOUBLE(obj) :\ - likely(PyInt_CheckExact(obj)) ?\ - PyFloat_AsDouble(obj) : __Pyx__PyObject_AsDouble(obj)) -#else -#define __Pyx_PyObject_AsDouble(obj)\ -((likely(PyFloat_CheckExact(obj))) ?\ - PyFloat_AS_DOUBLE(obj) : __Pyx__PyObject_AsDouble(obj)) -#endif - -/* py_dict_clear.proto */ -#define __Pyx_PyDict_Clear(d) (PyDict_Clear(d), 0) - -/* SwapException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#else -static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); -#endif - -/* dict_getitem_default.proto */ -static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value); - -/* UnpackUnboundCMethod.proto */ -typedef struct { - PyObject *type; - PyObject **method_name; - PyCFunction func; - PyObject *method; - int flag; -} __Pyx_CachedCFunction; - -/* CallUnboundCMethod1.proto */ -static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg); -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg); -#else -#define __Pyx_CallUnboundCMethod1(cfunc, self, arg) __Pyx__CallUnboundCMethod1(cfunc, self, arg) -#endif - -/* CallUnboundCMethod2.proto */ -static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2); -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030600B1 -static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2); -#else -#define __Pyx_CallUnboundCMethod2(cfunc, self, arg1, arg2) __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2) -#endif - -/* py_dict_pop.proto */ -static CYTHON_INLINE PyObject *__Pyx_PyDict_Pop(PyObject *d, PyObject *key, PyObject *default_value); - -/* ArgTypeTest.proto */ -#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\ - ((likely((Py_TYPE(obj) == type) | (none_allowed && (obj == Py_None)))) ? 1 :\ - __Pyx__ArgTypeTest(obj, type, name, exact)) -static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact); - -/* FastTypeChecks.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); -#else -#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) -#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) -#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) -#endif -#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) - -/* PyObject_GenericGetAttrNoDict.proto */ -#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr -#endif - -/* PyObject_GenericGetAttr.proto */ -#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr -#endif - -/* SetVTable.proto */ -static int __Pyx_SetVtable(PyObject *dict, void *vtable); - -/* ImportFrom.proto */ -static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); - -/* CalculateMetaclass.proto */ -static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases); - -/* Py3ClassCreate.proto */ -static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname, - PyObject *mkw, PyObject *modname, PyObject *doc); -static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict, - PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass); - -/* FetchCommonType.proto */ -static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); - -/* CythonFunction.proto */ -#define __Pyx_CyFunction_USED 1 -#define __Pyx_CYFUNCTION_STATICMETHOD 0x01 -#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 -#define __Pyx_CYFUNCTION_CCLASS 0x04 -#define __Pyx_CyFunction_GetClosure(f)\ - (((__pyx_CyFunctionObject *) (f))->func_closure) -#define __Pyx_CyFunction_GetClassObj(f)\ - (((__pyx_CyFunctionObject *) (f))->func_classobj) -#define __Pyx_CyFunction_Defaults(type, f)\ - ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) -#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ - ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) -typedef struct { - PyCFunctionObject func; -#if PY_VERSION_HEX < 0x030500A0 - PyObject *func_weakreflist; -#endif - PyObject *func_dict; - PyObject *func_name; - PyObject *func_qualname; - PyObject *func_doc; - PyObject *func_globals; - PyObject *func_code; - PyObject *func_closure; - PyObject *func_classobj; - void *defaults; - int defaults_pyobjects; - int flags; - PyObject *defaults_tuple; - PyObject *defaults_kwdict; - PyObject *(*defaults_getter)(PyObject *); - PyObject *func_annotations; -} __pyx_CyFunctionObject; -static PyTypeObject *__pyx_CyFunctionType = 0; -#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, globals, code)\ - __Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, globals, code) -static PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml, - int flags, PyObject* qualname, - PyObject *self, - PyObject *module, PyObject *globals, - PyObject* code); -static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, - size_t size, - int pyobjects); -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, - PyObject *tuple); -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, - PyObject *dict); -static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, - PyObject *dict); -static int __pyx_CyFunction_init(void); - -/* SetNameInClass.proto */ -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 -#define __Pyx_SetNameInClass(ns, name, value)\ - (likely(PyDict_CheckExact(ns)) ? _PyDict_SetItem_KnownHash(ns, name, value, ((PyASCIIObject *) name)->hash) : PyObject_SetItem(ns, name, value)) -#elif CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_SetNameInClass(ns, name, value)\ - (likely(PyDict_CheckExact(ns)) ? PyDict_SetItem(ns, name, value) : PyObject_SetItem(ns, name, value)) -#else -#define __Pyx_SetNameInClass(ns, name, value) PyObject_SetItem(ns, name, value) -#endif - -/* CLineInTraceback.proto */ -#ifdef CYTHON_CLINE_IN_TRACEBACK -#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) -#else -static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); -#endif - -/* CodeObjectCache.proto */ -typedef struct { - PyCodeObject* code_object; - int code_line; -} __Pyx_CodeObjectCacheEntry; -struct __Pyx_CodeObjectCache { - int count; - int max_count; - __Pyx_CodeObjectCacheEntry* entries; -}; -static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; -static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); -static PyCodeObject *__pyx_find_code_object(int code_line); -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); - -/* AddTraceback.proto */ -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename); - -/* CIntToPy.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); - -/* CIntToPy.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); - -/* CIntFromPy.proto */ -static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); - -/* CIntFromPy.proto */ -static CYTHON_INLINE unsigned short __Pyx_PyInt_As_unsigned_short(PyObject *); - -/* CIntFromPy.proto */ -static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); - -/* CheckBinaryVersion.proto */ -static int __Pyx_check_binary_version(void); - -/* PyIdentifierFromString.proto */ -#if !defined(__Pyx_PyIdentifier_FromString) -#if PY_MAJOR_VERSION < 3 - #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s) -#else - #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s) -#endif -#endif - -/* ModuleImport.proto */ -static PyObject *__Pyx_ImportModule(const char *name); - -/* TypeImport.proto */ -static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict); - -/* InitStrings.proto */ -static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); - -static PyObject *__pyx_f_6gevent_8resolver_5cares_7channel_set_servers(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_8resolver_5cares_7channel_set_servers *__pyx_optional_args); /* proto*/ -static PyObject *__pyx_f_6gevent_8resolver_5cares_7channel__sock_state_callback(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self, int __pyx_v_socket, int __pyx_v_read, int __pyx_v_write); /* proto*/ -static PyObject *__pyx_f_6gevent_8resolver_5cares_7channel__getnameinfo(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self, PyObject *__pyx_v_callback, PyObject *__pyx_v_sockaddr, int __pyx_v_flags, int __pyx_skip_dispatch); /* proto*/ - -/* Module declarations from 'gevent.resolver.libcares' */ - -/* Module declarations from 'libc.string' */ - -/* Module declarations from 'libc.stdio' */ - -/* Module declarations from '__builtin__' */ - -/* Module declarations from 'cpython.type' */ -static PyTypeObject *__pyx_ptype_7cpython_4type_type = 0; - -/* Module declarations from 'cpython' */ - -/* Module declarations from 'cpython.object' */ - -/* Module declarations from 'cpython.ref' */ - -/* Module declarations from 'cpython.mem' */ - -/* Module declarations from 'gevent.resolver.cares' */ -static PyTypeObject *__pyx_ptype_6gevent_8resolver_5cares_result = 0; -static PyTypeObject *__pyx_ptype_6gevent_8resolver_5cares_channel = 0; -static PyObject *__pyx_v_6gevent_8resolver_5cares_string_types = 0; -static PyObject *__pyx_v_6gevent_8resolver_5cares_text_type = 0; -static PyObject *__pyx_f_6gevent_8resolver_5cares__prepare_cares_flag_map(void); /*proto*/ -static PyObject *__pyx_f_6gevent_8resolver_5cares__convert_cares_flags(int, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_8resolver_5cares__convert_cares_flags *__pyx_optional_args); /*proto*/ -static PyObject *__pyx_f_6gevent_8resolver_5cares_strerror(PyObject *, int __pyx_skip_dispatch); /*proto*/ -static void __pyx_f_6gevent_8resolver_5cares_gevent_sock_state_callback(void *, int, int, int); /*proto*/ -static void __pyx_f_6gevent_8resolver_5cares_gevent_ares_host_callback(void *, int, int, struct hostent *); /*proto*/ -static void __pyx_f_6gevent_8resolver_5cares_gevent_ares_nameinfo_callback(void *, int, int, char *, char *); /*proto*/ -#define __Pyx_MODULE_NAME "gevent.resolver.cares" -extern int __pyx_module_is_main_gevent__resolver__cares; -int __pyx_module_is_main_gevent__resolver__cares = 0; - -/* Implementation of 'gevent.resolver.cares' */ -static PyObject *__pyx_builtin_ValueError; -static PyObject *__pyx_builtin_id; -static PyObject *__pyx_builtin_MemoryError; -static PyObject *__pyx_builtin_TypeError; -static const char __pyx_k__2[] = ","; -static const char __pyx_k_fd[] = "fd"; -static const char __pyx_k_id[] = "id"; -static const char __pyx_k_io[] = "io"; -static const char __pyx_k_all[] = "__all__"; -static const char __pyx_k_cls[] = "cls"; -static const char __pyx_k_doc[] = "__doc__"; -static const char __pyx_k_get[] = "get"; -static const char __pyx_k_new[] = "__new__"; -static const char __pyx_k_pop[] = "pop"; -static const char __pyx_k_s_r[] = "%s(%r)"; -static const char __pyx_k_s_s[] = "%s: %s"; -static const char __pyx_k_sys[] = "sys"; -static const char __pyx_k_addr[] = "addr"; -static const char __pyx_k_loop[] = "loop"; -static const char __pyx_k_main[] = "__main__"; -static const char __pyx_k_name[] = "__name__"; -static const char __pyx_k_self[] = "self"; -static const char __pyx_k_stop[] = "stop"; -static const char __pyx_k_test[] = "__test__"; -static const char __pyx_k_again[] = "again"; -static const char __pyx_k_ascii[] = "ascii"; -static const char __pyx_k_class[] = "__class__"; -static const char __pyx_k_close[] = "close"; -static const char __pyx_k_flags[] = "flags"; -static const char __pyx_k_ndots[] = "ndots"; -static const char __pyx_k_split[] = "split"; -static const char __pyx_k_start[] = "start"; -static const char __pyx_k_timer[] = "timer"; -static const char __pyx_k_tries[] = "tries"; -static const char __pyx_k_value[] = "value"; -static const char __pyx_k_encode[] = "encode"; -static const char __pyx_k_events[] = "events"; -static const char __pyx_k_family[] = "family"; -static const char __pyx_k_import[] = "__import__"; -static const char __pyx_k_module[] = "__module__"; -static const char __pyx_k_name_2[] = "name"; -static const char __pyx_k_socket[] = "_socket"; -static const char __pyx_k_TIMEOUT[] = "TIMEOUT"; -static const char __pyx_k_channel[] = "channel"; -static const char __pyx_k_default[] = "default"; -static const char __pyx_k_destroy[] = "destroy"; -static const char __pyx_k_prepare[] = "__prepare__"; -static const char __pyx_k_servers[] = "servers"; -static const char __pyx_k_timeout[] = "timeout"; -static const char __pyx_k_unicode[] = "unicode"; -static const char __pyx_k_watcher[] = "watcher"; -static const char __pyx_k_ARES_EOF[] = "ARES_EOF"; -static const char __pyx_k_NI_DGRAM[] = "NI_DGRAM"; -static const char __pyx_k_builtins[] = "__builtins__"; -static const char __pyx_k_callback[] = "callback"; -static const char __pyx_k_exc_info[] = "exc_info"; -static const char __pyx_k_gaierror[] = "gaierror"; -static const char __pyx_k_iterable[] = "iterable"; -static const char __pyx_k_on_timer[] = "_on_timer"; -static const char __pyx_k_qualname[] = "__qualname__"; -static const char __pyx_k_sockaddr[] = "sockaddr"; -static const char __pyx_k_tcp_port[] = "tcp_port"; -static const char __pyx_k_udp_port[] = "udp_port"; -static const char __pyx_k_InvalidIP[] = "InvalidIP"; -static const char __pyx_k_NI_NOFQDN[] = "NI_NOFQDN"; -static const char __pyx_k_TypeError[] = "TypeError"; -static const char __pyx_k_exception[] = "exception"; -static const char __pyx_k_metaclass[] = "__metaclass__"; -static const char __pyx_k_ARES_EFILE[] = "ARES_EFILE"; -static const char __pyx_k_ValueError[] = "ValueError"; -static const char __pyx_k_basestring[] = "basestring"; -static const char __pyx_k_getnewargs[] = "__getnewargs__"; -static const char __pyx_k_process_fd[] = "_process_fd"; -static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__"; -static const char __pyx_k_ARES_ENOMEM[] = "ARES_ENOMEM"; -static const char __pyx_k_MemoryError[] = "MemoryError"; -static const char __pyx_k_NI_NAMEREQD[] = "NI_NAMEREQD"; -static const char __pyx_k_ares_errors[] = "_ares_errors"; -static const char __pyx_k_getnameinfo[] = "_getnameinfo"; -static const char __pyx_k_pass_events[] = "pass_events"; -static const char __pyx_k_set_servers[] = "set_servers"; -static const char __pyx_k_ARES_EBADSTR[] = "ARES_EBADSTR"; -static const char __pyx_k_ARES_ENODATA[] = "ARES_ENODATA"; -static const char __pyx_k_ARES_ENONAME[] = "ARES_ENONAME"; -static const char __pyx_k_ARES_ENOTIMP[] = "ARES_ENOTIMP"; -static const char __pyx_k_ARES_SUCCESS[] = "ARES_SUCCESS"; -static const char __pyx_k_handle_error[] = "handle_error"; -static const char __pyx_k_version_info[] = "version_info"; -static const char __pyx_k_ARES_EBADNAME[] = "ARES_EBADNAME"; -static const char __pyx_k_ARES_EBADRESP[] = "ARES_EBADRESP"; -static const char __pyx_k_ARES_EFORMERR[] = "ARES_EFORMERR"; -static const char __pyx_k_ARES_EREFUSED[] = "ARES_EREFUSED"; -static const char __pyx_k_ARES_ETIMEOUT[] = "ARES_ETIMEOUT"; -static const char __pyx_k_s_exception_r[] = "%s(exception=%r)"; -static const char __pyx_k_ARES_EBADFLAGS[] = "ARES_EBADFLAGS"; -static const char __pyx_k_ARES_EBADHINTS[] = "ARES_EBADHINTS"; -static const char __pyx_k_ARES_EBADQUERY[] = "ARES_EBADQUERY"; -static const char __pyx_k_ARES_ENOTFOUND[] = "ARES_ENOTFOUND"; -static const char __pyx_k_ARES_ESERVFAIL[] = "ARES_ESERVFAIL"; -static const char __pyx_k_NI_NUMERICHOST[] = "NI_NUMERICHOST"; -static const char __pyx_k_NI_NUMERICSERV[] = "NI_NUMERICSERV"; -static const char __pyx_k_cares_flag_map[] = "_cares_flag_map"; -static const char __pyx_k_ARES_EBADFAMILY[] = "ARES_EBADFAMILY"; -static const char __pyx_k_ARES_ECANCELLED[] = "ARES_ECANCELLED"; -static const char __pyx_k_ARES_FLAG_IGNTC[] = "ARES_FLAG_IGNTC"; -static const char __pyx_k_ARES_FLAG_USEVC[] = "ARES_FLAG_USEVC"; -static const char __pyx_k_ares_host_result[] = "ares_host_result"; -static const char __pyx_k_ARES_ECONNREFUSED[] = "ARES_ECONNREFUSED"; -static const char __pyx_k_ARES_EDESTRUCTION[] = "ARES_EDESTRUCTION"; -static const char __pyx_k_ARES_FLAG_PRIMARY[] = "ARES_FLAG_PRIMARY"; -static const char __pyx_k_ARES_ELOADIPHLPAPI[] = "ARES_ELOADIPHLPAPI"; -static const char __pyx_k_ARES_FLAG_NOSEARCH[] = "ARES_FLAG_NOSEARCH"; -static const char __pyx_k_ARES_FLAG_STAYOPEN[] = "ARES_FLAG_STAYOPEN"; -static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; -static const char __pyx_k_ARES_FLAG_NOALIASES[] = "ARES_FLAG_NOALIASES"; -static const char __pyx_k_ARES_FLAG_NORECURSE[] = "ARES_FLAG_NORECURSE"; -static const char __pyx_k_ARES_ENOTINITIALIZED[] = "ARES_ENOTINITIALIZED"; -static const char __pyx_k_ARES_FLAG_NOCHECKRESP[] = "ARES_FLAG_NOCHECKRESP"; -static const char __pyx_k_gevent_resolver_cares[] = "gevent.resolver.cares"; -static const char __pyx_k_s_value_r_exception_r[] = "%s(value=%r, exception=%r)"; -static const char __pyx_k_ares_host_result___new[] = "ares_host_result.__new__"; -static const char __pyx_k_expected_a_tuple_got_r[] = "expected a tuple, got %r"; -static const char __pyx_k_Invalid_value_for_port_r[] = "Invalid value for port: %r"; -static const char __pyx_k_ARES_EADDRGETNETWORKPARAMS[] = "ARES_EADDRGETNETWORKPARAMS"; -static const char __pyx_k_Bad_value_for_ai_flags_0x_x[] = "Bad value for ai_flags: 0x%x"; -static const char __pyx_k_ares_host_result___getnewargs[] = "ares_host_result.__getnewargs__"; -static const char __pyx_k_src_gevent_resolver_cares_pyx[] = "src\\gevent\\resolver\\cares.pyx"; -static const char __pyx_k_s_at_0x_x__timer_r__watchers_s[] = "<%s at 0x%x _timer=%r _watchers[%s]>"; -static const char __pyx_k_this_ares_channel_has_been_destr[] = "this ares channel has been destroyed"; -static PyObject *__pyx_n_s_ARES_EADDRGETNETWORKPARAMS; -static PyObject *__pyx_n_s_ARES_EBADFAMILY; -static PyObject *__pyx_n_s_ARES_EBADFLAGS; -static PyObject *__pyx_n_s_ARES_EBADHINTS; -static PyObject *__pyx_n_s_ARES_EBADNAME; -static PyObject *__pyx_n_s_ARES_EBADQUERY; -static PyObject *__pyx_n_s_ARES_EBADRESP; -static PyObject *__pyx_n_s_ARES_EBADSTR; -static PyObject *__pyx_n_s_ARES_ECANCELLED; -static PyObject *__pyx_n_s_ARES_ECONNREFUSED; -static PyObject *__pyx_n_s_ARES_EDESTRUCTION; -static PyObject *__pyx_n_s_ARES_EFILE; -static PyObject *__pyx_n_s_ARES_EFORMERR; -static PyObject *__pyx_n_s_ARES_ELOADIPHLPAPI; -static PyObject *__pyx_n_s_ARES_ENODATA; -static PyObject *__pyx_n_s_ARES_ENOMEM; -static PyObject *__pyx_n_s_ARES_ENONAME; -static PyObject *__pyx_n_s_ARES_ENOTFOUND; -static PyObject *__pyx_n_s_ARES_ENOTIMP; -static PyObject *__pyx_n_s_ARES_ENOTINITIALIZED; -static PyObject *__pyx_n_s_ARES_EOF; -static PyObject *__pyx_n_s_ARES_EREFUSED; -static PyObject *__pyx_n_s_ARES_ESERVFAIL; -static PyObject *__pyx_n_s_ARES_ETIMEOUT; -static PyObject *__pyx_n_s_ARES_FLAG_IGNTC; -static PyObject *__pyx_n_s_ARES_FLAG_NOALIASES; -static PyObject *__pyx_n_s_ARES_FLAG_NOCHECKRESP; -static PyObject *__pyx_n_s_ARES_FLAG_NORECURSE; -static PyObject *__pyx_n_s_ARES_FLAG_NOSEARCH; -static PyObject *__pyx_n_s_ARES_FLAG_PRIMARY; -static PyObject *__pyx_n_s_ARES_FLAG_STAYOPEN; -static PyObject *__pyx_n_s_ARES_FLAG_USEVC; -static PyObject *__pyx_n_s_ARES_SUCCESS; -static PyObject *__pyx_kp_s_Bad_value_for_ai_flags_0x_x; -static PyObject *__pyx_n_s_InvalidIP; -static PyObject *__pyx_kp_s_Invalid_value_for_port_r; -static PyObject *__pyx_n_s_MemoryError; -static PyObject *__pyx_n_s_NI_DGRAM; -static PyObject *__pyx_n_s_NI_NAMEREQD; -static PyObject *__pyx_n_s_NI_NOFQDN; -static PyObject *__pyx_n_s_NI_NUMERICHOST; -static PyObject *__pyx_n_s_NI_NUMERICSERV; -static PyObject *__pyx_n_s_TIMEOUT; -static PyObject *__pyx_n_s_TypeError; -static PyObject *__pyx_n_s_ValueError; -static PyObject *__pyx_kp_s__2; -static PyObject *__pyx_n_s_addr; -static PyObject *__pyx_n_s_again; -static PyObject *__pyx_n_s_all; -static PyObject *__pyx_n_s_ares_errors; -static PyObject *__pyx_n_s_ares_host_result; -static PyObject *__pyx_n_s_ares_host_result___getnewargs; -static PyObject *__pyx_n_s_ares_host_result___new; -static PyObject *__pyx_n_s_ascii; -static PyObject *__pyx_n_s_basestring; -static PyObject *__pyx_n_s_builtins; -static PyObject *__pyx_n_s_callback; -static PyObject *__pyx_n_s_cares_flag_map; -static PyObject *__pyx_n_s_channel; -static PyObject *__pyx_n_s_class; -static PyObject *__pyx_n_s_cline_in_traceback; -static PyObject *__pyx_n_s_close; -static PyObject *__pyx_n_s_cls; -static PyObject *__pyx_n_s_default; -static PyObject *__pyx_n_s_destroy; -static PyObject *__pyx_n_s_doc; -static PyObject *__pyx_n_s_encode; -static PyObject *__pyx_n_s_events; -static PyObject *__pyx_n_s_exc_info; -static PyObject *__pyx_n_s_exception; -static PyObject *__pyx_kp_s_expected_a_tuple_got_r; -static PyObject *__pyx_n_s_family; -static PyObject *__pyx_n_s_fd; -static PyObject *__pyx_n_s_flags; -static PyObject *__pyx_n_s_gaierror; -static PyObject *__pyx_n_s_get; -static PyObject *__pyx_n_s_getnameinfo; -static PyObject *__pyx_n_s_getnewargs; -static PyObject *__pyx_n_s_gevent_resolver_cares; -static PyObject *__pyx_n_s_handle_error; -static PyObject *__pyx_n_s_id; -static PyObject *__pyx_n_s_import; -static PyObject *__pyx_n_s_io; -static PyObject *__pyx_n_s_iterable; -static PyObject *__pyx_n_s_loop; -static PyObject *__pyx_n_s_main; -static PyObject *__pyx_n_s_metaclass; -static PyObject *__pyx_n_s_module; -static PyObject *__pyx_n_s_name; -static PyObject *__pyx_n_s_name_2; -static PyObject *__pyx_n_s_ndots; -static PyObject *__pyx_n_s_new; -static PyObject *__pyx_n_s_on_timer; -static PyObject *__pyx_n_s_pass_events; -static PyObject *__pyx_n_s_pop; -static PyObject *__pyx_n_s_prepare; -static PyObject *__pyx_n_s_process_fd; -static PyObject *__pyx_n_s_pyx_vtable; -static PyObject *__pyx_n_s_qualname; -static PyObject *__pyx_kp_s_s_at_0x_x__timer_r__watchers_s; -static PyObject *__pyx_kp_s_s_exception_r; -static PyObject *__pyx_kp_s_s_r; -static PyObject *__pyx_kp_s_s_s; -static PyObject *__pyx_kp_s_s_value_r_exception_r; -static PyObject *__pyx_n_s_self; -static PyObject *__pyx_n_s_servers; -static PyObject *__pyx_n_s_set_servers; -static PyObject *__pyx_n_s_sockaddr; -static PyObject *__pyx_n_s_socket; -static PyObject *__pyx_n_s_split; -static PyObject *__pyx_kp_s_src_gevent_resolver_cares_pyx; -static PyObject *__pyx_n_s_start; -static PyObject *__pyx_n_s_stop; -static PyObject *__pyx_n_s_sys; -static PyObject *__pyx_n_s_tcp_port; -static PyObject *__pyx_n_s_test; -static PyObject *__pyx_kp_s_this_ares_channel_has_been_destr; -static PyObject *__pyx_n_s_timeout; -static PyObject *__pyx_n_s_timer; -static PyObject *__pyx_n_s_tries; -static PyObject *__pyx_n_s_udp_port; -static PyObject *__pyx_n_s_unicode; -static PyObject *__pyx_n_s_value; -static PyObject *__pyx_n_s_version_info; -static PyObject *__pyx_n_s_watcher; -static PyObject *__pyx_pf_6gevent_8resolver_5cares__convert_cares_flags(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_flags, int __pyx_v_default); /* proto */ -static PyObject *__pyx_pf_6gevent_8resolver_5cares_2strerror(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_code); /* proto */ -static int __pyx_pf_6gevent_8resolver_5cares_6result___init__(struct __pyx_obj_6gevent_8resolver_5cares_result *__pyx_v_self, PyObject *__pyx_v_value, PyObject *__pyx_v_exception); /* proto */ -static PyObject *__pyx_pf_6gevent_8resolver_5cares_6result_2__repr__(struct __pyx_obj_6gevent_8resolver_5cares_result *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_8resolver_5cares_6result_4successful(struct __pyx_obj_6gevent_8resolver_5cares_result *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_8resolver_5cares_6result_6get(struct __pyx_obj_6gevent_8resolver_5cares_result *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_8resolver_5cares_6result_5value___get__(struct __pyx_obj_6gevent_8resolver_5cares_result *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_8resolver_5cares_6result_5value_2__set__(struct __pyx_obj_6gevent_8resolver_5cares_result *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static int __pyx_pf_6gevent_8resolver_5cares_6result_5value_4__del__(struct __pyx_obj_6gevent_8resolver_5cares_result *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_8resolver_5cares_6result_9exception___get__(struct __pyx_obj_6gevent_8resolver_5cares_result *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_8resolver_5cares_6result_9exception_2__set__(struct __pyx_obj_6gevent_8resolver_5cares_result *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static int __pyx_pf_6gevent_8resolver_5cares_6result_9exception_4__del__(struct __pyx_obj_6gevent_8resolver_5cares_result *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_8resolver_5cares_16ares_host_result___new__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_cls, PyObject *__pyx_v_family, PyObject *__pyx_v_iterable); /* proto */ -static PyObject *__pyx_pf_6gevent_8resolver_5cares_16ares_host_result_2__getnewargs__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_8resolver_5cares_7channel___init__(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self, PyObject *__pyx_v_loop, PyObject *__pyx_v_flags, PyObject *__pyx_v_timeout, PyObject *__pyx_v_tries, PyObject *__pyx_v_ndots, PyObject *__pyx_v_udp_port, PyObject *__pyx_v_tcp_port, PyObject *__pyx_v_servers); /* proto */ -static PyObject *__pyx_pf_6gevent_8resolver_5cares_7channel_2__repr__(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_8resolver_5cares_7channel_4destroy(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self); /* proto */ -static void __pyx_pf_6gevent_8resolver_5cares_7channel_6__dealloc__(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_8resolver_5cares_7channel_8set_servers(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self, PyObject *__pyx_v_servers); /* proto */ -static PyObject *__pyx_pf_6gevent_8resolver_5cares_7channel_10_on_timer(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_8resolver_5cares_7channel_12_process_fd(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self, int __pyx_v_events, PyObject *__pyx_v_watcher); /* proto */ -static PyObject *__pyx_pf_6gevent_8resolver_5cares_7channel_14gethostbyname(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self, PyObject *__pyx_v_callback, char *__pyx_v_name, int __pyx_v_family); /* proto */ -static PyObject *__pyx_pf_6gevent_8resolver_5cares_7channel_16gethostbyaddr(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self, PyObject *__pyx_v_callback, char *__pyx_v_addr); /* proto */ -static PyObject *__pyx_pf_6gevent_8resolver_5cares_7channel_18_getnameinfo(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self, PyObject *__pyx_v_callback, PyObject *__pyx_v_sockaddr, int __pyx_v_flags); /* proto */ -static PyObject *__pyx_pf_6gevent_8resolver_5cares_7channel_20getnameinfo(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self, PyObject *__pyx_v_callback, PyObject *__pyx_v_sockaddr, int __pyx_v_flags); /* proto */ -static PyObject *__pyx_pf_6gevent_8resolver_5cares_7channel_4loop___get__(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_8resolver_5cares_7channel_4loop_2__set__(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static int __pyx_pf_6gevent_8resolver_5cares_7channel_4loop_4__del__(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_8resolver_5cares_7channel_9_watchers___get__(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_8resolver_5cares_7channel_9_watchers_2__set__(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static int __pyx_pf_6gevent_8resolver_5cares_7channel_9_watchers_4__del__(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_6gevent_8resolver_5cares_7channel_6_timer___get__(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self); /* proto */ -static int __pyx_pf_6gevent_8resolver_5cares_7channel_6_timer_2__set__(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static int __pyx_pf_6gevent_8resolver_5cares_7channel_6_timer_4__del__(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self); /* proto */ -static PyObject *__pyx_tp_new_6gevent_8resolver_5cares_result(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_6gevent_8resolver_5cares_channel(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_get = {0, &__pyx_n_s_get, 0, 0, 0}; -static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_pop = {0, &__pyx_n_s_pop, 0, 0, 0}; -static PyObject *__pyx_int_1; -static PyObject *__pyx_int_2; -static PyObject *__pyx_int_3; -static PyObject *__pyx_int_4; -static PyObject *__pyx_int_8; -static PyObject *__pyx_int_16; -static PyObject *__pyx_int_neg_1; -static PyObject *__pyx_int_neg_8; -static int __pyx_k_; -static int __pyx_k__5; -static PyObject *__pyx_tuple__3; -static PyObject *__pyx_tuple__4; -static PyObject *__pyx_tuple__6; -static PyObject *__pyx_tuple__7; -static PyObject *__pyx_tuple__9; -static PyObject *__pyx_codeobj__8; -static PyObject *__pyx_codeobj__10; -/* Late includes */ - -/* "gevent/resolver/cares.pyx":135 - * - * - * cdef _prepare_cares_flag_map(): # <<<<<<<<<<<<<< - * global _cares_flag_map - * import _socket - */ - -static PyObject *__pyx_f_6gevent_8resolver_5cares__prepare_cares_flag_map(void) { - PyObject *__pyx_v__socket = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - __Pyx_RefNannySetupContext("_prepare_cares_flag_map", 0); - - /* "gevent/resolver/cares.pyx":137 - * cdef _prepare_cares_flag_map(): - * global _cares_flag_map - * import _socket # <<<<<<<<<<<<<< - * _cares_flag_map = [ - * (getattr(_socket, 'NI_NUMERICHOST', 1), cares.ARES_NI_NUMERICHOST), - */ - __pyx_t_1 = __Pyx_Import(__pyx_n_s_socket, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 137, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v__socket = __pyx_t_1; - __pyx_t_1 = 0; - - /* "gevent/resolver/cares.pyx":139 - * import _socket - * _cares_flag_map = [ - * (getattr(_socket, 'NI_NUMERICHOST', 1), cares.ARES_NI_NUMERICHOST), # <<<<<<<<<<<<<< - * (getattr(_socket, 'NI_NUMERICSERV', 2), cares.ARES_NI_NUMERICSERV), - * (getattr(_socket, 'NI_NOFQDN', 4), cares.ARES_NI_NOFQDN), - */ - __pyx_t_1 = __Pyx_GetAttr3(__pyx_v__socket, __pyx_n_s_NI_NUMERICHOST, __pyx_int_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 139, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_NI_NUMERICHOST); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 139, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 139, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); - __pyx_t_1 = 0; - __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":140 - * _cares_flag_map = [ - * (getattr(_socket, 'NI_NUMERICHOST', 1), cares.ARES_NI_NUMERICHOST), - * (getattr(_socket, 'NI_NUMERICSERV', 2), cares.ARES_NI_NUMERICSERV), # <<<<<<<<<<<<<< - * (getattr(_socket, 'NI_NOFQDN', 4), cares.ARES_NI_NOFQDN), - * (getattr(_socket, 'NI_NAMEREQD', 8), cares.ARES_NI_NAMEREQD), - */ - __pyx_t_2 = __Pyx_GetAttr3(__pyx_v__socket, __pyx_n_s_NI_NUMERICSERV, __pyx_int_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyInt_From_int(ARES_NI_NUMERICSERV); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1); - __pyx_t_2 = 0; - __pyx_t_1 = 0; - - /* "gevent/resolver/cares.pyx":141 - * (getattr(_socket, 'NI_NUMERICHOST', 1), cares.ARES_NI_NUMERICHOST), - * (getattr(_socket, 'NI_NUMERICSERV', 2), cares.ARES_NI_NUMERICSERV), - * (getattr(_socket, 'NI_NOFQDN', 4), cares.ARES_NI_NOFQDN), # <<<<<<<<<<<<<< - * (getattr(_socket, 'NI_NAMEREQD', 8), cares.ARES_NI_NAMEREQD), - * (getattr(_socket, 'NI_DGRAM', 16), cares.ARES_NI_DGRAM)] - */ - __pyx_t_1 = __Pyx_GetAttr3(__pyx_v__socket, __pyx_n_s_NI_NOFQDN, __pyx_int_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 141, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_NI_NOFQDN); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 141, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 141, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2); - __pyx_t_1 = 0; - __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":142 - * (getattr(_socket, 'NI_NUMERICSERV', 2), cares.ARES_NI_NUMERICSERV), - * (getattr(_socket, 'NI_NOFQDN', 4), cares.ARES_NI_NOFQDN), - * (getattr(_socket, 'NI_NAMEREQD', 8), cares.ARES_NI_NAMEREQD), # <<<<<<<<<<<<<< - * (getattr(_socket, 'NI_DGRAM', 16), cares.ARES_NI_DGRAM)] - * - */ - __pyx_t_2 = __Pyx_GetAttr3(__pyx_v__socket, __pyx_n_s_NI_NAMEREQD, __pyx_int_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 142, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyInt_From_int(ARES_NI_NAMEREQD); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 142, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 142, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1); - __pyx_t_2 = 0; - __pyx_t_1 = 0; - - /* "gevent/resolver/cares.pyx":143 - * (getattr(_socket, 'NI_NOFQDN', 4), cares.ARES_NI_NOFQDN), - * (getattr(_socket, 'NI_NAMEREQD', 8), cares.ARES_NI_NAMEREQD), - * (getattr(_socket, 'NI_DGRAM', 16), cares.ARES_NI_DGRAM)] # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_1 = __Pyx_GetAttr3(__pyx_v__socket, __pyx_n_s_NI_DGRAM, __pyx_int_16); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 143, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_NI_DGRAM); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 143, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 143, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_2); - __pyx_t_1 = 0; - __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":138 - * global _cares_flag_map - * import _socket - * _cares_flag_map = [ # <<<<<<<<<<<<<< - * (getattr(_socket, 'NI_NUMERICHOST', 1), cares.ARES_NI_NUMERICHOST), - * (getattr(_socket, 'NI_NUMERICSERV', 2), cares.ARES_NI_NUMERICSERV), - */ - __pyx_t_2 = PyList_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 138, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_3); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); - __Pyx_GIVEREF(__pyx_t_4); - PyList_SET_ITEM(__pyx_t_2, 1, __pyx_t_4); - __Pyx_GIVEREF(__pyx_t_5); - PyList_SET_ITEM(__pyx_t_2, 2, __pyx_t_5); - __Pyx_GIVEREF(__pyx_t_6); - PyList_SET_ITEM(__pyx_t_2, 3, __pyx_t_6); - __Pyx_GIVEREF(__pyx_t_7); - PyList_SET_ITEM(__pyx_t_2, 4, __pyx_t_7); - __pyx_t_3 = 0; - __pyx_t_4 = 0; - __pyx_t_5 = 0; - __pyx_t_6 = 0; - __pyx_t_7 = 0; - if (PyDict_SetItem(__pyx_d, __pyx_n_s_cares_flag_map, __pyx_t_2) < 0) __PYX_ERR(0, 138, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":135 - * - * - * cdef _prepare_cares_flag_map(): # <<<<<<<<<<<<<< - * global _cares_flag_map - * import _socket - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("gevent.resolver.cares._prepare_cares_flag_map", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v__socket); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/resolver/cares.pyx":146 - * - * - * cpdef _convert_cares_flags(int flags, int default=cares.ARES_NI_LOOKUPHOST|cares.ARES_NI_LOOKUPSERVICE): # <<<<<<<<<<<<<< - * if _cares_flag_map is None: - * _prepare_cares_flag_map() - */ - -static PyObject *__pyx_pw_6gevent_8resolver_5cares_1_convert_cares_flags(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_f_6gevent_8resolver_5cares__convert_cares_flags(int __pyx_v_flags, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_8resolver_5cares__convert_cares_flags *__pyx_optional_args) { - int __pyx_v_default = __pyx_k_; - PyObject *__pyx_v_socket_flag = NULL; - PyObject *__pyx_v_cares_flag = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - Py_ssize_t __pyx_t_5; - PyObject *(*__pyx_t_6)(PyObject *); - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - PyObject *(*__pyx_t_10)(PyObject *); - int __pyx_t_11; - __Pyx_RefNannySetupContext("_convert_cares_flags", 0); - if (__pyx_optional_args) { - if (__pyx_optional_args->__pyx_n > 0) { - __pyx_v_default = __pyx_optional_args->__pyx_default; - } - } - - /* "gevent/resolver/cares.pyx":147 - * - * cpdef _convert_cares_flags(int flags, int default=cares.ARES_NI_LOOKUPHOST|cares.ARES_NI_LOOKUPSERVICE): - * if _cares_flag_map is None: # <<<<<<<<<<<<<< - * _prepare_cares_flag_map() - * for socket_flag, cares_flag in _cares_flag_map: - */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_cares_flag_map); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 147, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = (__pyx_t_1 == Py_None); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_3 = (__pyx_t_2 != 0); - if (__pyx_t_3) { - - /* "gevent/resolver/cares.pyx":148 - * cpdef _convert_cares_flags(int flags, int default=cares.ARES_NI_LOOKUPHOST|cares.ARES_NI_LOOKUPSERVICE): - * if _cares_flag_map is None: - * _prepare_cares_flag_map() # <<<<<<<<<<<<<< - * for socket_flag, cares_flag in _cares_flag_map: - * if socket_flag & flags: - */ - __pyx_t_1 = __pyx_f_6gevent_8resolver_5cares__prepare_cares_flag_map(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 148, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "gevent/resolver/cares.pyx":147 - * - * cpdef _convert_cares_flags(int flags, int default=cares.ARES_NI_LOOKUPHOST|cares.ARES_NI_LOOKUPSERVICE): - * if _cares_flag_map is None: # <<<<<<<<<<<<<< - * _prepare_cares_flag_map() - * for socket_flag, cares_flag in _cares_flag_map: - */ - } - - /* "gevent/resolver/cares.pyx":149 - * if _cares_flag_map is None: - * _prepare_cares_flag_map() - * for socket_flag, cares_flag in _cares_flag_map: # <<<<<<<<<<<<<< - * if socket_flag & flags: - * default |= cares_flag - */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_cares_flag_map); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 149, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { - __pyx_t_4 = __pyx_t_1; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0; - __pyx_t_6 = NULL; - } else { - __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 149, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 149, __pyx_L1_error) - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - for (;;) { - if (likely(!__pyx_t_6)) { - if (likely(PyList_CheckExact(__pyx_t_4))) { - if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_4)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 149, __pyx_L1_error) - #else - __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 149, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - #endif - } else { - if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_4)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 149, __pyx_L1_error) - #else - __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 149, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - #endif - } - } else { - __pyx_t_1 = __pyx_t_6(__pyx_t_4); - if (unlikely(!__pyx_t_1)) { - PyObject* exc_type = PyErr_Occurred(); - if (exc_type) { - if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 149, __pyx_L1_error) - } - break; - } - __Pyx_GOTREF(__pyx_t_1); - } - if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { - PyObject* sequence = __pyx_t_1; - Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); - if (unlikely(size != 2)) { - if (size > 2) __Pyx_RaiseTooManyValuesError(2); - else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 149, __pyx_L1_error) - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - if (likely(PyTuple_CheckExact(sequence))) { - __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); - __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1); - } else { - __pyx_t_7 = PyList_GET_ITEM(sequence, 0); - __pyx_t_8 = PyList_GET_ITEM(sequence, 1); - } - __Pyx_INCREF(__pyx_t_7); - __Pyx_INCREF(__pyx_t_8); - #else - __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 149, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 149, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - #endif - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else { - Py_ssize_t index = -1; - __pyx_t_9 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 149, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_10 = Py_TYPE(__pyx_t_9)->tp_iternext; - index = 0; __pyx_t_7 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_7)) goto __pyx_L6_unpacking_failed; - __Pyx_GOTREF(__pyx_t_7); - index = 1; __pyx_t_8 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_8)) goto __pyx_L6_unpacking_failed; - __Pyx_GOTREF(__pyx_t_8); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 2) < 0) __PYX_ERR(0, 149, __pyx_L1_error) - __pyx_t_10 = NULL; - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - goto __pyx_L7_unpacking_done; - __pyx_L6_unpacking_failed:; - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_10 = NULL; - if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 149, __pyx_L1_error) - __pyx_L7_unpacking_done:; - } - __Pyx_XDECREF_SET(__pyx_v_socket_flag, __pyx_t_7); - __pyx_t_7 = 0; - __Pyx_XDECREF_SET(__pyx_v_cares_flag, __pyx_t_8); - __pyx_t_8 = 0; - - /* "gevent/resolver/cares.pyx":150 - * _prepare_cares_flag_map() - * for socket_flag, cares_flag in _cares_flag_map: - * if socket_flag & flags: # <<<<<<<<<<<<<< - * default |= cares_flag - * flags &= ~socket_flag - */ - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 150, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_8 = PyNumber_And(__pyx_v_socket_flag, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 150, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 150, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (__pyx_t_3) { - - /* "gevent/resolver/cares.pyx":151 - * for socket_flag, cares_flag in _cares_flag_map: - * if socket_flag & flags: - * default |= cares_flag # <<<<<<<<<<<<<< - * flags &= ~socket_flag - * if not flags: - */ - __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_default); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 151, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_1 = PyNumber_InPlaceOr(__pyx_t_8, __pyx_v_cares_flag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 151, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 151, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_default = __pyx_t_11; - - /* "gevent/resolver/cares.pyx":152 - * if socket_flag & flags: - * default |= cares_flag - * flags &= ~socket_flag # <<<<<<<<<<<<<< - * if not flags: - * return default - */ - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 152, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_8 = PyNumber_Invert(__pyx_v_socket_flag); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 152, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_7 = PyNumber_InPlaceAnd(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 152, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 152, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_v_flags = __pyx_t_11; - - /* "gevent/resolver/cares.pyx":150 - * _prepare_cares_flag_map() - * for socket_flag, cares_flag in _cares_flag_map: - * if socket_flag & flags: # <<<<<<<<<<<<<< - * default |= cares_flag - * flags &= ~socket_flag - */ - } - - /* "gevent/resolver/cares.pyx":153 - * default |= cares_flag - * flags &= ~socket_flag - * if not flags: # <<<<<<<<<<<<<< - * return default - * raise gaierror(-1, "Bad value for ai_flags: 0x%x" % flags) - */ - __pyx_t_3 = ((!(__pyx_v_flags != 0)) != 0); - if (__pyx_t_3) { - - /* "gevent/resolver/cares.pyx":154 - * flags &= ~socket_flag - * if not flags: - * return default # <<<<<<<<<<<<<< - * raise gaierror(-1, "Bad value for ai_flags: 0x%x" % flags) - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_default); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 154, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_r = __pyx_t_7; - __pyx_t_7 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - goto __pyx_L0; - - /* "gevent/resolver/cares.pyx":153 - * default |= cares_flag - * flags &= ~socket_flag - * if not flags: # <<<<<<<<<<<<<< - * return default - * raise gaierror(-1, "Bad value for ai_flags: 0x%x" % flags) - */ - } - - /* "gevent/resolver/cares.pyx":149 - * if _cares_flag_map is None: - * _prepare_cares_flag_map() - * for socket_flag, cares_flag in _cares_flag_map: # <<<<<<<<<<<<<< - * if socket_flag & flags: - * default |= cares_flag - */ - } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "gevent/resolver/cares.pyx":155 - * if not flags: - * return default - * raise gaierror(-1, "Bad value for ai_flags: 0x%x" % flags) # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_gaierror); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 155, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 155, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Bad_value_for_ai_flags_0x_x, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 155, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = NULL; - __pyx_t_11 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { - __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); - if (likely(__pyx_t_8)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); - __Pyx_INCREF(__pyx_t_8); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_7, function); - __pyx_t_11 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_7)) { - PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_int_neg_1, __pyx_t_1}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 155, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { - PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_int_neg_1, __pyx_t_1}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 155, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else - #endif - { - __pyx_t_9 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 155, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - if (__pyx_t_8) { - __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL; - } - __Pyx_INCREF(__pyx_int_neg_1); - __Pyx_GIVEREF(__pyx_int_neg_1); - PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_11, __pyx_int_neg_1); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_11, __pyx_t_1); - __pyx_t_1 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 155, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - } - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_Raise(__pyx_t_4, 0, 0, 0); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __PYX_ERR(0, 155, __pyx_L1_error) - - /* "gevent/resolver/cares.pyx":146 - * - * - * cpdef _convert_cares_flags(int flags, int default=cares.ARES_NI_LOOKUPHOST|cares.ARES_NI_LOOKUPSERVICE): # <<<<<<<<<<<<<< - * if _cares_flag_map is None: - * _prepare_cares_flag_map() - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_XDECREF(__pyx_t_9); - __Pyx_AddTraceback("gevent.resolver.cares._convert_cares_flags", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_socket_flag); - __Pyx_XDECREF(__pyx_v_cares_flag); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_1_convert_cares_flags(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_1_convert_cares_flags(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - int __pyx_v_flags; - int __pyx_v_default; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_convert_cares_flags (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_flags,&__pyx_n_s_default,0}; - PyObject* values[2] = {0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flags)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_default); - if (value) { values[1] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_convert_cares_flags") < 0)) __PYX_ERR(0, 146, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_flags = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_flags == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 146, __pyx_L3_error) - if (values[1]) { - __pyx_v_default = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_default == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 146, __pyx_L3_error) - } else { - __pyx_v_default = __pyx_k_; - } - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("_convert_cares_flags", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 146, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.resolver.cares._convert_cares_flags", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_8resolver_5cares__convert_cares_flags(__pyx_self, __pyx_v_flags, __pyx_v_default); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8resolver_5cares__convert_cares_flags(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_flags, int __pyx_v_default) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - struct __pyx_opt_args_6gevent_8resolver_5cares__convert_cares_flags __pyx_t_2; - __Pyx_RefNannySetupContext("_convert_cares_flags", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_2.__pyx_n = 1; - __pyx_t_2.__pyx_default = __pyx_v_default; - __pyx_t_1 = __pyx_f_6gevent_8resolver_5cares__convert_cares_flags(__pyx_v_flags, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 146, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.resolver.cares._convert_cares_flags", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/resolver/cares.pyx":158 - * - * - * cpdef strerror(code): # <<<<<<<<<<<<<< - * return '%s: %s' % (_ares_errors.get(code) or code, cares.ares_strerror(code)) - * - */ - -static PyObject *__pyx_pw_6gevent_8resolver_5cares_3strerror(PyObject *__pyx_self, PyObject *__pyx_v_code); /*proto*/ -static PyObject *__pyx_f_6gevent_8resolver_5cares_strerror(PyObject *__pyx_v_code, CYTHON_UNUSED int __pyx_skip_dispatch) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - int __pyx_t_7; - __Pyx_RefNannySetupContext("strerror", 0); - - /* "gevent/resolver/cares.pyx":159 - * - * cpdef strerror(code): - * return '%s: %s' % (_ares_errors.get(code) or code, cares.ares_strerror(code)) # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_ares_errors); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 159, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_get); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 159, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (!__pyx_t_3) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_code); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 159, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_code}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 159, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_code}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 159, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 159, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_INCREF(__pyx_v_code); - __Pyx_GIVEREF(__pyx_v_code); - PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_code); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 159, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 159, __pyx_L1_error) - if (!__pyx_t_6) { - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else { - __Pyx_INCREF(__pyx_t_2); - __pyx_t_1 = __pyx_t_2; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - goto __pyx_L3_bool_binop_done; - } - __Pyx_INCREF(__pyx_v_code); - __pyx_t_1 = __pyx_v_code; - __pyx_L3_bool_binop_done:; - __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_v_code); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 159, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyBytes_FromString(ares_strerror(__pyx_t_7)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 159, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 159, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); - __pyx_t_1 = 0; - __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_s_s, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 159, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "gevent/resolver/cares.pyx":158 - * - * - * cpdef strerror(code): # <<<<<<<<<<<<<< - * return '%s: %s' % (_ares_errors.get(code) or code, cares.ares_strerror(code)) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent.resolver.cares.strerror", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_3strerror(PyObject *__pyx_self, PyObject *__pyx_v_code); /*proto*/ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_3strerror(PyObject *__pyx_self, PyObject *__pyx_v_code) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("strerror (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8resolver_5cares_2strerror(__pyx_self, ((PyObject *)__pyx_v_code)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8resolver_5cares_2strerror(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_code) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("strerror", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_8resolver_5cares_strerror(__pyx_v_code, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 158, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.resolver.cares.strerror", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/resolver/cares.pyx":166 - * - * - * cdef void gevent_sock_state_callback(void *data, int s, int read, int write): # <<<<<<<<<<<<<< - * if not data: - * return - */ - -static void __pyx_f_6gevent_8resolver_5cares_gevent_sock_state_callback(void *__pyx_v_data, int __pyx_v_s, int __pyx_v_read, int __pyx_v_write) { - struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_ch = 0; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("gevent_sock_state_callback", 0); - - /* "gevent/resolver/cares.pyx":167 - * - * cdef void gevent_sock_state_callback(void *data, int s, int read, int write): - * if not data: # <<<<<<<<<<<<<< - * return - * cdef channel ch = <channel>data - */ - __pyx_t_1 = ((!(__pyx_v_data != 0)) != 0); - if (__pyx_t_1) { - - /* "gevent/resolver/cares.pyx":168 - * cdef void gevent_sock_state_callback(void *data, int s, int read, int write): - * if not data: - * return # <<<<<<<<<<<<<< - * cdef channel ch = <channel>data - * ch._sock_state_callback(s, read, write) - */ - goto __pyx_L0; - - /* "gevent/resolver/cares.pyx":167 - * - * cdef void gevent_sock_state_callback(void *data, int s, int read, int write): - * if not data: # <<<<<<<<<<<<<< - * return - * cdef channel ch = <channel>data - */ - } - - /* "gevent/resolver/cares.pyx":169 - * if not data: - * return - * cdef channel ch = <channel>data # <<<<<<<<<<<<<< - * ch._sock_state_callback(s, read, write) - * - */ - __pyx_t_2 = ((PyObject *)__pyx_v_data); - __Pyx_INCREF(__pyx_t_2); - __pyx_v_ch = ((struct __pyx_obj_6gevent_8resolver_5cares_channel *)__pyx_t_2); - __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":170 - * return - * cdef channel ch = <channel>data - * ch._sock_state_callback(s, read, write) # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_2 = ((struct __pyx_vtabstruct_6gevent_8resolver_5cares_channel *)__pyx_v_ch->__pyx_vtab)->_sock_state_callback(__pyx_v_ch, __pyx_v_s, __pyx_v_read, __pyx_v_write); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 170, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":166 - * - * - * cdef void gevent_sock_state_callback(void *data, int s, int read, int write): # <<<<<<<<<<<<<< - * if not data: - * return - */ - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_WriteUnraisable("gevent.resolver.cares.gevent_sock_state_callback", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_ch); - __Pyx_RefNannyFinishContext(); -} - -/* "gevent/resolver/cares.pyx":177 - * cdef public object exception - * - * def __init__(self, object value=None, object exception=None): # <<<<<<<<<<<<<< - * self.value = value - * self.exception = exception - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_8resolver_5cares_6result_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_8resolver_5cares_6result_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_value = 0; - PyObject *__pyx_v_exception = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_value,&__pyx_n_s_exception,0}; - PyObject* values[2] = {0,0}; - values[0] = ((PyObject *)Py_None); - values[1] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_value); - if (value) { values[0] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_exception); - if (value) { values[1] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 177, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_value = values[0]; - __pyx_v_exception = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 177, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.resolver.cares.result.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_8resolver_5cares_6result___init__(((struct __pyx_obj_6gevent_8resolver_5cares_result *)__pyx_v_self), __pyx_v_value, __pyx_v_exception); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_8resolver_5cares_6result___init__(struct __pyx_obj_6gevent_8resolver_5cares_result *__pyx_v_self, PyObject *__pyx_v_value, PyObject *__pyx_v_exception) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__", 0); - - /* "gevent/resolver/cares.pyx":178 - * - * def __init__(self, object value=None, object exception=None): - * self.value = value # <<<<<<<<<<<<<< - * self.exception = exception - * - */ - __Pyx_INCREF(__pyx_v_value); - __Pyx_GIVEREF(__pyx_v_value); - __Pyx_GOTREF(__pyx_v_self->value); - __Pyx_DECREF(__pyx_v_self->value); - __pyx_v_self->value = __pyx_v_value; - - /* "gevent/resolver/cares.pyx":179 - * def __init__(self, object value=None, object exception=None): - * self.value = value - * self.exception = exception # <<<<<<<<<<<<<< - * - * def __repr__(self): - */ - __Pyx_INCREF(__pyx_v_exception); - __Pyx_GIVEREF(__pyx_v_exception); - __Pyx_GOTREF(__pyx_v_self->exception); - __Pyx_DECREF(__pyx_v_self->exception); - __pyx_v_self->exception = __pyx_v_exception; - - /* "gevent/resolver/cares.pyx":177 - * cdef public object exception - * - * def __init__(self, object value=None, object exception=None): # <<<<<<<<<<<<<< - * self.value = value - * self.exception = exception - */ - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/resolver/cares.pyx":181 - * self.exception = exception - * - * def __repr__(self): # <<<<<<<<<<<<<< - * if self.exception is None: - * return '%s(%r)' % (self.__class__.__name__, self.value) - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_6result_3__repr__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_6result_3__repr__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8resolver_5cares_6result_2__repr__(((struct __pyx_obj_6gevent_8resolver_5cares_result *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8resolver_5cares_6result_2__repr__(struct __pyx_obj_6gevent_8resolver_5cares_result *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_RefNannySetupContext("__repr__", 0); - - /* "gevent/resolver/cares.pyx":182 - * - * def __repr__(self): - * if self.exception is None: # <<<<<<<<<<<<<< - * return '%s(%r)' % (self.__class__.__name__, self.value) - * elif self.value is None: - */ - __pyx_t_1 = (__pyx_v_self->exception == Py_None); - __pyx_t_2 = (__pyx_t_1 != 0); - if (__pyx_t_2) { - - /* "gevent/resolver/cares.pyx":183 - * def __repr__(self): - * if self.exception is None: - * return '%s(%r)' % (self.__class__.__name__, self.value) # <<<<<<<<<<<<<< - * elif self.value is None: - * return '%s(exception=%r)' % (self.__class__.__name__, self.exception) - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 183, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 183, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 183, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); - __Pyx_INCREF(__pyx_v_self->value); - __Pyx_GIVEREF(__pyx_v_self->value); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->value); - __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_s_r, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 183, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_4; - __pyx_t_4 = 0; - goto __pyx_L0; - - /* "gevent/resolver/cares.pyx":182 - * - * def __repr__(self): - * if self.exception is None: # <<<<<<<<<<<<<< - * return '%s(%r)' % (self.__class__.__name__, self.value) - * elif self.value is None: - */ - } - - /* "gevent/resolver/cares.pyx":184 - * if self.exception is None: - * return '%s(%r)' % (self.__class__.__name__, self.value) - * elif self.value is None: # <<<<<<<<<<<<<< - * return '%s(exception=%r)' % (self.__class__.__name__, self.exception) - * else: - */ - __pyx_t_2 = (__pyx_v_self->value == Py_None); - __pyx_t_1 = (__pyx_t_2 != 0); - if (__pyx_t_1) { - - /* "gevent/resolver/cares.pyx":185 - * return '%s(%r)' % (self.__class__.__name__, self.value) - * elif self.value is None: - * return '%s(exception=%r)' % (self.__class__.__name__, self.exception) # <<<<<<<<<<<<<< - * else: - * return '%s(value=%r, exception=%r)' % (self.__class__.__name__, self.value, self.exception) - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 185, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 185, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 185, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); - __Pyx_INCREF(__pyx_v_self->exception); - __Pyx_GIVEREF(__pyx_v_self->exception); - PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_self->exception); - __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_s_exception_r, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 185, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - - /* "gevent/resolver/cares.pyx":184 - * if self.exception is None: - * return '%s(%r)' % (self.__class__.__name__, self.value) - * elif self.value is None: # <<<<<<<<<<<<<< - * return '%s(exception=%r)' % (self.__class__.__name__, self.exception) - * else: - */ - } - - /* "gevent/resolver/cares.pyx":187 - * return '%s(exception=%r)' % (self.__class__.__name__, self.exception) - * else: - * return '%s(value=%r, exception=%r)' % (self.__class__.__name__, self.value, self.exception) # <<<<<<<<<<<<<< - * # add repr_recursive precaution - * - */ - /*else*/ { - __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 187, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 187, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 187, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); - __Pyx_INCREF(__pyx_v_self->value); - __Pyx_GIVEREF(__pyx_v_self->value); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->value); - __Pyx_INCREF(__pyx_v_self->exception); - __Pyx_GIVEREF(__pyx_v_self->exception); - PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_self->exception); - __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_s_value_r_exception_r, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 187, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_4; - __pyx_t_4 = 0; - goto __pyx_L0; - } - - /* "gevent/resolver/cares.pyx":181 - * self.exception = exception - * - * def __repr__(self): # <<<<<<<<<<<<<< - * if self.exception is None: - * return '%s(%r)' % (self.__class__.__name__, self.value) - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("gevent.resolver.cares.result.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/resolver/cares.pyx":190 - * # add repr_recursive precaution - * - * def successful(self): # <<<<<<<<<<<<<< - * return self.exception is None - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_6result_5successful(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_6result_5successful(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("successful (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8resolver_5cares_6result_4successful(((struct __pyx_obj_6gevent_8resolver_5cares_result *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8resolver_5cares_6result_4successful(struct __pyx_obj_6gevent_8resolver_5cares_result *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - __Pyx_RefNannySetupContext("successful", 0); - - /* "gevent/resolver/cares.pyx":191 - * - * def successful(self): - * return self.exception is None # <<<<<<<<<<<<<< - * - * def get(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = (__pyx_v_self->exception == Py_None); - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 191, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "gevent/resolver/cares.pyx":190 - * # add repr_recursive precaution - * - * def successful(self): # <<<<<<<<<<<<<< - * return self.exception is None - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent.resolver.cares.result.successful", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/resolver/cares.pyx":193 - * return self.exception is None - * - * def get(self): # <<<<<<<<<<<<<< - * if self.exception is not None: - * raise self.exception - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_6result_7get(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_6result_7get(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("get (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8resolver_5cares_6result_6get(((struct __pyx_obj_6gevent_8resolver_5cares_result *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8resolver_5cares_6result_6get(struct __pyx_obj_6gevent_8resolver_5cares_result *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - __Pyx_RefNannySetupContext("get", 0); - - /* "gevent/resolver/cares.pyx":194 - * - * def get(self): - * if self.exception is not None: # <<<<<<<<<<<<<< - * raise self.exception - * return self.value - */ - __pyx_t_1 = (__pyx_v_self->exception != Py_None); - __pyx_t_2 = (__pyx_t_1 != 0); - if (unlikely(__pyx_t_2)) { - - /* "gevent/resolver/cares.pyx":195 - * def get(self): - * if self.exception is not None: - * raise self.exception # <<<<<<<<<<<<<< - * return self.value - * - */ - __Pyx_Raise(__pyx_v_self->exception, 0, 0, 0); - __PYX_ERR(0, 195, __pyx_L1_error) - - /* "gevent/resolver/cares.pyx":194 - * - * def get(self): - * if self.exception is not None: # <<<<<<<<<<<<<< - * raise self.exception - * return self.value - */ - } - - /* "gevent/resolver/cares.pyx":196 - * if self.exception is not None: - * raise self.exception - * return self.value # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->value); - __pyx_r = __pyx_v_self->value; - goto __pyx_L0; - - /* "gevent/resolver/cares.pyx":193 - * return self.exception is None - * - * def get(self): # <<<<<<<<<<<<<< - * if self.exception is not None: - * raise self.exception - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("gevent.resolver.cares.result.get", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/resolver/cares.pyx":174 - * - * cdef class result: - * cdef public object value # <<<<<<<<<<<<<< - * cdef public object exception - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_6result_5value_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_6result_5value_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8resolver_5cares_6result_5value___get__(((struct __pyx_obj_6gevent_8resolver_5cares_result *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8resolver_5cares_6result_5value___get__(struct __pyx_obj_6gevent_8resolver_5cares_result *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->value); - __pyx_r = __pyx_v_self->value; - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static int __pyx_pw_6gevent_8resolver_5cares_6result_5value_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_6gevent_8resolver_5cares_6result_5value_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8resolver_5cares_6result_5value_2__set__(((struct __pyx_obj_6gevent_8resolver_5cares_result *)__pyx_v_self), ((PyObject *)__pyx_v_value)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_8resolver_5cares_6result_5value_2__set__(struct __pyx_obj_6gevent_8resolver_5cares_result *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__", 0); - __Pyx_INCREF(__pyx_v_value); - __Pyx_GIVEREF(__pyx_v_value); - __Pyx_GOTREF(__pyx_v_self->value); - __Pyx_DECREF(__pyx_v_self->value); - __pyx_v_self->value = __pyx_v_value; - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static int __pyx_pw_6gevent_8resolver_5cares_6result_5value_5__del__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_6gevent_8resolver_5cares_6result_5value_5__del__(PyObject *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8resolver_5cares_6result_5value_4__del__(((struct __pyx_obj_6gevent_8resolver_5cares_result *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_8resolver_5cares_6result_5value_4__del__(struct __pyx_obj_6gevent_8resolver_5cares_result *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__del__", 0); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->value); - __Pyx_DECREF(__pyx_v_self->value); - __pyx_v_self->value = Py_None; - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/resolver/cares.pyx":175 - * cdef class result: - * cdef public object value - * cdef public object exception # <<<<<<<<<<<<<< - * - * def __init__(self, object value=None, object exception=None): - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_6result_9exception_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_6result_9exception_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8resolver_5cares_6result_9exception___get__(((struct __pyx_obj_6gevent_8resolver_5cares_result *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8resolver_5cares_6result_9exception___get__(struct __pyx_obj_6gevent_8resolver_5cares_result *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->exception); - __pyx_r = __pyx_v_self->exception; - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static int __pyx_pw_6gevent_8resolver_5cares_6result_9exception_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_6gevent_8resolver_5cares_6result_9exception_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8resolver_5cares_6result_9exception_2__set__(((struct __pyx_obj_6gevent_8resolver_5cares_result *)__pyx_v_self), ((PyObject *)__pyx_v_value)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_8resolver_5cares_6result_9exception_2__set__(struct __pyx_obj_6gevent_8resolver_5cares_result *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__", 0); - __Pyx_INCREF(__pyx_v_value); - __Pyx_GIVEREF(__pyx_v_value); - __Pyx_GOTREF(__pyx_v_self->exception); - __Pyx_DECREF(__pyx_v_self->exception); - __pyx_v_self->exception = __pyx_v_value; - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static int __pyx_pw_6gevent_8resolver_5cares_6result_9exception_5__del__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_6gevent_8resolver_5cares_6result_9exception_5__del__(PyObject *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8resolver_5cares_6result_9exception_4__del__(((struct __pyx_obj_6gevent_8resolver_5cares_result *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_8resolver_5cares_6result_9exception_4__del__(struct __pyx_obj_6gevent_8resolver_5cares_result *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__del__", 0); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->exception); - __Pyx_DECREF(__pyx_v_self->exception); - __pyx_v_self->exception = Py_None; - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/resolver/cares.pyx":201 - * class ares_host_result(tuple): - * - * def __new__(cls, family, iterable): # <<<<<<<<<<<<<< - * cdef object self = tuple.__new__(cls, iterable) - * self.family = family - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_16ares_host_result_1__new__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyMethodDef __pyx_mdef_6gevent_8resolver_5cares_16ares_host_result_1__new__ = {"__new__", (PyCFunction)__pyx_pw_6gevent_8resolver_5cares_16ares_host_result_1__new__, METH_VARARGS|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_6gevent_8resolver_5cares_16ares_host_result_1__new__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_cls = 0; - PyObject *__pyx_v_family = 0; - PyObject *__pyx_v_iterable = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__new__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cls,&__pyx_n_s_family,&__pyx_n_s_iterable,0}; - PyObject* values[3] = {0,0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cls)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_family)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__new__", 1, 3, 3, 1); __PYX_ERR(0, 201, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iterable)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__new__", 1, 3, 3, 2); __PYX_ERR(0, 201, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__new__") < 0)) __PYX_ERR(0, 201, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - } - __pyx_v_cls = values[0]; - __pyx_v_family = values[1]; - __pyx_v_iterable = values[2]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__new__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 201, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.resolver.cares.ares_host_result.__new__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_8resolver_5cares_16ares_host_result___new__(__pyx_self, __pyx_v_cls, __pyx_v_family, __pyx_v_iterable); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8resolver_5cares_16ares_host_result___new__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_cls, PyObject *__pyx_v_family, PyObject *__pyx_v_iterable) { - PyObject *__pyx_v_self = 0; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - __Pyx_RefNannySetupContext("__new__", 0); - - /* "gevent/resolver/cares.pyx":202 - * - * def __new__(cls, family, iterable): - * cdef object self = tuple.__new__(cls, iterable) # <<<<<<<<<<<<<< - * self.family = family - * return self - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)(&PyTuple_Type)), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 202, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - __pyx_t_4 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_4 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_cls, __pyx_v_iterable}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 202, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_cls, __pyx_v_iterable}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 202, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 202, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (__pyx_t_3) { - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; - } - __Pyx_INCREF(__pyx_v_cls); - __Pyx_GIVEREF(__pyx_v_cls); - PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_cls); - __Pyx_INCREF(__pyx_v_iterable); - __Pyx_GIVEREF(__pyx_v_iterable); - PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_iterable); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 202, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_self = __pyx_t_1; - __pyx_t_1 = 0; - - /* "gevent/resolver/cares.pyx":203 - * def __new__(cls, family, iterable): - * cdef object self = tuple.__new__(cls, iterable) - * self.family = family # <<<<<<<<<<<<<< - * return self - * - */ - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_family, __pyx_v_family) < 0) __PYX_ERR(0, 203, __pyx_L1_error) - - /* "gevent/resolver/cares.pyx":204 - * cdef object self = tuple.__new__(cls, iterable) - * self.family = family - * return self # <<<<<<<<<<<<<< - * - * def __getnewargs__(self): - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self); - __pyx_r = __pyx_v_self; - goto __pyx_L0; - - /* "gevent/resolver/cares.pyx":201 - * class ares_host_result(tuple): - * - * def __new__(cls, family, iterable): # <<<<<<<<<<<<<< - * cdef object self = tuple.__new__(cls, iterable) - * self.family = family - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent.resolver.cares.ares_host_result.__new__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_self); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/resolver/cares.pyx":206 - * return self - * - * def __getnewargs__(self): # <<<<<<<<<<<<<< - * return (self.family, tuple(self)) - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_16ares_host_result_3__getnewargs__(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ -static PyMethodDef __pyx_mdef_6gevent_8resolver_5cares_16ares_host_result_3__getnewargs__ = {"__getnewargs__", (PyCFunction)__pyx_pw_6gevent_8resolver_5cares_16ares_host_result_3__getnewargs__, METH_O, 0}; -static PyObject *__pyx_pw_6gevent_8resolver_5cares_16ares_host_result_3__getnewargs__(PyObject *__pyx_self, PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__getnewargs__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8resolver_5cares_16ares_host_result_2__getnewargs__(__pyx_self, ((PyObject *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8resolver_5cares_16ares_host_result_2__getnewargs__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - __Pyx_RefNannySetupContext("__getnewargs__", 0); - - /* "gevent/resolver/cares.pyx":207 - * - * def __getnewargs__(self): - * return (self.family, tuple(self)) # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_family); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 207, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PySequence_Tuple(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 207, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 207, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); - __pyx_t_1 = 0; - __pyx_t_2 = 0; - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - - /* "gevent/resolver/cares.pyx":206 - * return self - * - * def __getnewargs__(self): # <<<<<<<<<<<<<< - * return (self.family, tuple(self)) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("gevent.resolver.cares.ares_host_result.__getnewargs__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/resolver/cares.pyx":210 - * - * - * cdef void gevent_ares_host_callback(void *arg, int status, int timeouts, hostent* host): # <<<<<<<<<<<<<< - * cdef channel channel - * cdef object callback - */ - -static void __pyx_f_6gevent_8resolver_5cares_gevent_ares_host_callback(void *__pyx_v_arg, int __pyx_v_status, CYTHON_UNUSED int __pyx_v_timeouts, struct hostent *__pyx_v_host) { - struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_channel = 0; - PyObject *__pyx_v_callback = 0; - PyObject *__pyx_v_host_result = 0; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - int __pyx_t_7; - int __pyx_t_8; - PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - PyObject *__pyx_t_11 = NULL; - int __pyx_t_12; - PyObject *__pyx_t_13 = NULL; - PyObject *__pyx_t_14 = NULL; - PyObject *__pyx_t_15 = NULL; - PyObject *__pyx_t_16 = NULL; - PyObject *__pyx_t_17 = NULL; - __Pyx_RefNannySetupContext("gevent_ares_host_callback", 0); - - /* "gevent/resolver/cares.pyx":213 - * cdef channel channel - * cdef object callback - * channel, callback = <tuple>arg # <<<<<<<<<<<<<< - * Py_DECREF(<tuple>arg) - * cdef object host_result - */ - __pyx_t_1 = ((PyObject *)__pyx_v_arg); - __Pyx_INCREF(__pyx_t_1); - if (likely(__pyx_t_1 != Py_None)) { - PyObject* sequence = __pyx_t_1; - Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); - if (unlikely(size != 2)) { - if (size > 2) __Pyx_RaiseTooManyValuesError(2); - else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 213, __pyx_L1_error) - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); - __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); - __Pyx_INCREF(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - #else - __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 213, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 213, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - #endif - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else { - __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(0, 213, __pyx_L1_error) - } - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6gevent_8resolver_5cares_channel))))) __PYX_ERR(0, 213, __pyx_L1_error) - __pyx_v_channel = ((struct __pyx_obj_6gevent_8resolver_5cares_channel *)__pyx_t_2); - __pyx_t_2 = 0; - __pyx_v_callback = __pyx_t_3; - __pyx_t_3 = 0; - - /* "gevent/resolver/cares.pyx":214 - * cdef object callback - * channel, callback = <tuple>arg - * Py_DECREF(<tuple>arg) # <<<<<<<<<<<<<< - * cdef object host_result - * try: - */ - Py_DECREF(((PyObject *)__pyx_v_arg)); - - /* "gevent/resolver/cares.pyx":216 - * Py_DECREF(<tuple>arg) - * cdef object host_result - * try: # <<<<<<<<<<<<<< - * if status or not host: - * callback(result(None, gaierror(status, strerror(status)))) - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6); - __Pyx_XGOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_t_5); - __Pyx_XGOTREF(__pyx_t_6); - /*try:*/ { - - /* "gevent/resolver/cares.pyx":217 - * cdef object host_result - * try: - * if status or not host: # <<<<<<<<<<<<<< - * callback(result(None, gaierror(status, strerror(status)))) - * else: - */ - __pyx_t_8 = (__pyx_v_status != 0); - if (!__pyx_t_8) { - } else { - __pyx_t_7 = __pyx_t_8; - goto __pyx_L10_bool_binop_done; - } - __pyx_t_8 = ((!(__pyx_v_host != 0)) != 0); - __pyx_t_7 = __pyx_t_8; - __pyx_L10_bool_binop_done:; - if (__pyx_t_7) { - - /* "gevent/resolver/cares.pyx":218 - * try: - * if status or not host: - * callback(result(None, gaierror(status, strerror(status)))) # <<<<<<<<<<<<<< - * else: - * try: - */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_gaierror); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 218, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_v_status); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 218, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_10 = __Pyx_PyInt_From_int(__pyx_v_status); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 218, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_10); - __pyx_t_11 = __pyx_f_6gevent_8resolver_5cares_strerror(__pyx_t_10, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 218, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_11); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __pyx_t_10 = NULL; - __pyx_t_12 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_10)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_10); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_12 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_9, __pyx_t_11}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 218, __pyx_L3_error) - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_9, __pyx_t_11}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 218, __pyx_L3_error) - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - } else - #endif - { - __pyx_t_13 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 218, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_13); - if (__pyx_t_10) { - __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_10); __pyx_t_10 = NULL; - } - __Pyx_GIVEREF(__pyx_t_9); - PyTuple_SET_ITEM(__pyx_t_13, 0+__pyx_t_12, __pyx_t_9); - __Pyx_GIVEREF(__pyx_t_11); - PyTuple_SET_ITEM(__pyx_t_13, 1+__pyx_t_12, __pyx_t_11); - __pyx_t_9 = 0; - __pyx_t_11 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_13, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 218, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 218, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - PyTuple_SET_ITEM(__pyx_t_2, 0, Py_None); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3); - __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6gevent_8resolver_5cares_result), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 218, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_INCREF(__pyx_v_callback); - __pyx_t_2 = __pyx_v_callback; __pyx_t_13 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_13)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_13); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_13) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 218, __pyx_L3_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_3}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 218, __pyx_L3_error) - __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_3}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 218, __pyx_L3_error) - __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - { - __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 218, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_11); - __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_13); __pyx_t_13 = NULL; - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_3); - __pyx_t_3 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 218, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - } - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "gevent/resolver/cares.pyx":217 - * cdef object host_result - * try: - * if status or not host: # <<<<<<<<<<<<<< - * callback(result(None, gaierror(status, strerror(status)))) - * else: - */ - goto __pyx_L9; - } - - /* "gevent/resolver/cares.pyx":220 - * callback(result(None, gaierror(status, strerror(status)))) - * else: - * try: # <<<<<<<<<<<<<< - * host_result = ares_host_result(host.h_addrtype, (parse_h_name(host), parse_h_aliases(host), parse_h_addr_list(host))) - * except: - */ - /*else*/ { - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16); - __Pyx_XGOTREF(__pyx_t_14); - __Pyx_XGOTREF(__pyx_t_15); - __Pyx_XGOTREF(__pyx_t_16); - /*try:*/ { - - /* "gevent/resolver/cares.pyx":221 - * else: - * try: - * host_result = ares_host_result(host.h_addrtype, (parse_h_name(host), parse_h_aliases(host), parse_h_addr_list(host))) # <<<<<<<<<<<<<< - * except: - * callback(result(None, sys.exc_info()[1])) - */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ares_host_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 221, __pyx_L12_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_host->h_addrtype); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 221, __pyx_L12_error) - __Pyx_GOTREF(__pyx_t_11); - __pyx_t_3 = parse_h_name(__pyx_v_host); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 221, __pyx_L12_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_13 = parse_h_aliases(__pyx_v_host); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 221, __pyx_L12_error) - __Pyx_GOTREF(__pyx_t_13); - __pyx_t_9 = parse_h_addr_list(__pyx_v_host); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 221, __pyx_L12_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 221, __pyx_L12_error) - __Pyx_GOTREF(__pyx_t_10); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3); - __Pyx_GIVEREF(__pyx_t_13); - PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_13); - __Pyx_GIVEREF(__pyx_t_9); - PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_9); - __pyx_t_3 = 0; - __pyx_t_13 = 0; - __pyx_t_9 = 0; - __pyx_t_9 = NULL; - __pyx_t_12 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_9)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_9); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_12 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_11, __pyx_t_10}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 221, __pyx_L12_error) - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_11, __pyx_t_10}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 221, __pyx_L12_error) - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - } else - #endif - { - __pyx_t_13 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 221, __pyx_L12_error) - __Pyx_GOTREF(__pyx_t_13); - if (__pyx_t_9) { - __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_9); __pyx_t_9 = NULL; - } - __Pyx_GIVEREF(__pyx_t_11); - PyTuple_SET_ITEM(__pyx_t_13, 0+__pyx_t_12, __pyx_t_11); - __Pyx_GIVEREF(__pyx_t_10); - PyTuple_SET_ITEM(__pyx_t_13, 1+__pyx_t_12, __pyx_t_10); - __pyx_t_11 = 0; - __pyx_t_10 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_13, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 221, __pyx_L12_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_host_result = __pyx_t_1; - __pyx_t_1 = 0; - - /* "gevent/resolver/cares.pyx":220 - * callback(result(None, gaierror(status, strerror(status)))) - * else: - * try: # <<<<<<<<<<<<<< - * host_result = ares_host_result(host.h_addrtype, (parse_h_name(host), parse_h_aliases(host), parse_h_addr_list(host))) - * except: - */ - } - - /* "gevent/resolver/cares.pyx":225 - * callback(result(None, sys.exc_info()[1])) - * else: - * callback(result(host_result)) # <<<<<<<<<<<<<< - * except: - * channel.loop.handle_error(callback, *sys.exc_info()) - */ - /*else:*/ { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_6gevent_8resolver_5cares_result), __pyx_v_host_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 225, __pyx_L14_except_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_v_callback); - __pyx_t_13 = __pyx_v_callback; __pyx_t_10 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_13))) { - __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_13); - if (likely(__pyx_t_10)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); - __Pyx_INCREF(__pyx_t_10); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_13, function); - } - } - if (!__pyx_t_10) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 225, __pyx_L14_except_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_13)) { - PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_t_2}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 225, __pyx_L14_except_error) - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) { - PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_t_2}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 225, __pyx_L14_except_error) - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else - #endif - { - __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 225, __pyx_L14_except_error) - __Pyx_GOTREF(__pyx_t_11); - __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10); __pyx_t_10 = NULL; - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 225, __pyx_L14_except_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - } - } - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; - __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; - __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; - goto __pyx_L17_try_end; - __pyx_L12_error:; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "gevent/resolver/cares.pyx":222 - * try: - * host_result = ares_host_result(host.h_addrtype, (parse_h_name(host), parse_h_aliases(host), parse_h_addr_list(host))) - * except: # <<<<<<<<<<<<<< - * callback(result(None, sys.exc_info()[1])) - * else: - */ - /*except:*/ { - __Pyx_AddTraceback("gevent.resolver.cares.gevent_ares_host_callback", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_13, &__pyx_t_11) < 0) __PYX_ERR(0, 222, __pyx_L14_except_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_t_13); - __Pyx_GOTREF(__pyx_t_11); - - /* "gevent/resolver/cares.pyx":223 - * host_result = ares_host_result(host.h_addrtype, (parse_h_name(host), parse_h_aliases(host), parse_h_addr_list(host))) - * except: - * callback(result(None, sys.exc_info()[1])) # <<<<<<<<<<<<<< - * else: - * callback(result(host_result)) - */ - __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 223, __pyx_L14_except_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_exc_info); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 223, __pyx_L14_except_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_9)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_9); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (__pyx_t_9) { - __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 223, __pyx_L14_except_error) - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - } else { - __pyx_t_10 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 223, __pyx_L14_except_error) - } - __Pyx_GOTREF(__pyx_t_10); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_10, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 223, __pyx_L14_except_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 223, __pyx_L14_except_error) - __Pyx_GOTREF(__pyx_t_10); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - PyTuple_SET_ITEM(__pyx_t_10, 0, Py_None); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_3); - __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6gevent_8resolver_5cares_result), __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 223, __pyx_L14_except_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_INCREF(__pyx_v_callback); - __pyx_t_10 = __pyx_v_callback; __pyx_t_9 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) { - __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10); - if (likely(__pyx_t_9)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); - __Pyx_INCREF(__pyx_t_9); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_10, function); - } - } - if (!__pyx_t_9) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 223, __pyx_L14_except_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_10)) { - PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_t_3}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 223, __pyx_L14_except_error) - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) { - PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_t_3}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 223, __pyx_L14_except_error) - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - { - __pyx_t_17 = PyTuple_New(1+1); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 223, __pyx_L14_except_error) - __Pyx_GOTREF(__pyx_t_17); - __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_9); __pyx_t_9 = NULL; - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_17, 0+1, __pyx_t_3); - __pyx_t_3 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_17, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 223, __pyx_L14_except_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; - } - } - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - goto __pyx_L13_exception_handled; - } - __pyx_L14_except_error:; - - /* "gevent/resolver/cares.pyx":220 - * callback(result(None, gaierror(status, strerror(status)))) - * else: - * try: # <<<<<<<<<<<<<< - * host_result = ares_host_result(host.h_addrtype, (parse_h_name(host), parse_h_aliases(host), parse_h_addr_list(host))) - * except: - */ - __Pyx_XGIVEREF(__pyx_t_14); - __Pyx_XGIVEREF(__pyx_t_15); - __Pyx_XGIVEREF(__pyx_t_16); - __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16); - goto __pyx_L3_error; - __pyx_L13_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_14); - __Pyx_XGIVEREF(__pyx_t_15); - __Pyx_XGIVEREF(__pyx_t_16); - __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16); - __pyx_L17_try_end:; - } - } - __pyx_L9:; - - /* "gevent/resolver/cares.pyx":216 - * Py_DECREF(<tuple>arg) - * cdef object host_result - * try: # <<<<<<<<<<<<<< - * if status or not host: - * callback(result(None, gaierror(status, strerror(status)))) - */ - } - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - goto __pyx_L8_try_end; - __pyx_L3_error:; - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; - - /* "gevent/resolver/cares.pyx":226 - * else: - * callback(result(host_result)) - * except: # <<<<<<<<<<<<<< - * channel.loop.handle_error(callback, *sys.exc_info()) - * - */ - /*except:*/ { - __Pyx_AddTraceback("gevent.resolver.cares.gevent_ares_host_callback", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_13, &__pyx_t_1) < 0) __PYX_ERR(0, 226, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_11); - __Pyx_GOTREF(__pyx_t_13); - __Pyx_GOTREF(__pyx_t_1); - - /* "gevent/resolver/cares.pyx":227 - * callback(result(host_result)) - * except: - * channel.loop.handle_error(callback, *sys.exc_info()) # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_channel->loop, __pyx_n_s_handle_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 227, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 227, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_10); - __Pyx_INCREF(__pyx_v_callback); - __Pyx_GIVEREF(__pyx_v_callback); - PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_callback); - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 227, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_exc_info); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 227, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_9); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_9, function); - } - } - if (__pyx_t_3) { - __pyx_t_17 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_3); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 227, __pyx_L5_except_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_17 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 227, __pyx_L5_except_error) - } - __Pyx_GOTREF(__pyx_t_17); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = __Pyx_PySequence_Tuple(__pyx_t_17); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 227, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; - __pyx_t_17 = PyNumber_Add(__pyx_t_10, __pyx_t_9); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 227, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_17); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_17, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 227, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L4_exception_handled; - } - __pyx_L5_except_error:; - - /* "gevent/resolver/cares.pyx":216 - * Py_DECREF(<tuple>arg) - * cdef object host_result - * try: # <<<<<<<<<<<<<< - * if status or not host: - * callback(result(None, gaierror(status, strerror(status)))) - */ - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); - goto __pyx_L1_error; - __pyx_L4_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); - __pyx_L8_try_end:; - } - - /* "gevent/resolver/cares.pyx":210 - * - * - * cdef void gevent_ares_host_callback(void *arg, int status, int timeouts, hostent* host): # <<<<<<<<<<<<<< - * cdef channel channel - * cdef object callback - */ - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_9); - __Pyx_XDECREF(__pyx_t_10); - __Pyx_XDECREF(__pyx_t_11); - __Pyx_XDECREF(__pyx_t_13); - __Pyx_XDECREF(__pyx_t_17); - __Pyx_WriteUnraisable("gevent.resolver.cares.gevent_ares_host_callback", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_channel); - __Pyx_XDECREF(__pyx_v_callback); - __Pyx_XDECREF(__pyx_v_host_result); - __Pyx_RefNannyFinishContext(); -} - -/* "gevent/resolver/cares.pyx":230 - * - * - * cdef void gevent_ares_nameinfo_callback(void *arg, int status, int timeouts, char *c_node, char *c_service): # <<<<<<<<<<<<<< - * cdef channel channel - * cdef object callback - */ - -static void __pyx_f_6gevent_8resolver_5cares_gevent_ares_nameinfo_callback(void *__pyx_v_arg, int __pyx_v_status, CYTHON_UNUSED int __pyx_v_timeouts, char *__pyx_v_c_node, char *__pyx_v_c_service) { - struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_channel = 0; - PyObject *__pyx_v_callback = 0; - PyObject *__pyx_v_node = 0; - PyObject *__pyx_v_service = 0; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - int __pyx_t_7; - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - int __pyx_t_11; - PyObject *__pyx_t_12 = NULL; - PyObject *__pyx_t_13 = NULL; - __Pyx_RefNannySetupContext("gevent_ares_nameinfo_callback", 0); - - /* "gevent/resolver/cares.pyx":233 - * cdef channel channel - * cdef object callback - * channel, callback = <tuple>arg # <<<<<<<<<<<<<< - * Py_DECREF(<tuple>arg) - * cdef object node - */ - __pyx_t_1 = ((PyObject *)__pyx_v_arg); - __Pyx_INCREF(__pyx_t_1); - if (likely(__pyx_t_1 != Py_None)) { - PyObject* sequence = __pyx_t_1; - Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); - if (unlikely(size != 2)) { - if (size > 2) __Pyx_RaiseTooManyValuesError(2); - else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 233, __pyx_L1_error) - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); - __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); - __Pyx_INCREF(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - #else - __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 233, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 233, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - #endif - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else { - __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(0, 233, __pyx_L1_error) - } - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6gevent_8resolver_5cares_channel))))) __PYX_ERR(0, 233, __pyx_L1_error) - __pyx_v_channel = ((struct __pyx_obj_6gevent_8resolver_5cares_channel *)__pyx_t_2); - __pyx_t_2 = 0; - __pyx_v_callback = __pyx_t_3; - __pyx_t_3 = 0; - - /* "gevent/resolver/cares.pyx":234 - * cdef object callback - * channel, callback = <tuple>arg - * Py_DECREF(<tuple>arg) # <<<<<<<<<<<<<< - * cdef object node - * cdef object service - */ - Py_DECREF(((PyObject *)__pyx_v_arg)); - - /* "gevent/resolver/cares.pyx":237 - * cdef object node - * cdef object service - * try: # <<<<<<<<<<<<<< - * if status: - * callback(result(None, gaierror(status, strerror(status)))) - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6); - __Pyx_XGOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_t_5); - __Pyx_XGOTREF(__pyx_t_6); - /*try:*/ { - - /* "gevent/resolver/cares.pyx":238 - * cdef object service - * try: - * if status: # <<<<<<<<<<<<<< - * callback(result(None, gaierror(status, strerror(status)))) - * else: - */ - __pyx_t_7 = (__pyx_v_status != 0); - if (__pyx_t_7) { - - /* "gevent/resolver/cares.pyx":239 - * try: - * if status: - * callback(result(None, gaierror(status, strerror(status)))) # <<<<<<<<<<<<<< - * else: - * if c_node: - */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_gaierror); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 239, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_status); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 239, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_v_status); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 239, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_10 = __pyx_f_6gevent_8resolver_5cares_strerror(__pyx_t_9, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 239, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_10); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = NULL; - __pyx_t_11 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_9)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_9); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_11 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_8, __pyx_t_10}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 239, __pyx_L3_error) - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_8, __pyx_t_10}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 239, __pyx_L3_error) - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - } else - #endif - { - __pyx_t_12 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 239, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_12); - if (__pyx_t_9) { - __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_9); __pyx_t_9 = NULL; - } - __Pyx_GIVEREF(__pyx_t_8); - PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_11, __pyx_t_8); - __Pyx_GIVEREF(__pyx_t_10); - PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_11, __pyx_t_10); - __pyx_t_8 = 0; - __pyx_t_10 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_12, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 239, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 239, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - PyTuple_SET_ITEM(__pyx_t_2, 0, Py_None); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3); - __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6gevent_8resolver_5cares_result), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 239, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_INCREF(__pyx_v_callback); - __pyx_t_2 = __pyx_v_callback; __pyx_t_12 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_12)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_12); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_12) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 239, __pyx_L3_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_12, __pyx_t_3}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 239, __pyx_L3_error) - __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_12, __pyx_t_3}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 239, __pyx_L3_error) - __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - { - __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 239, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_10); - __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_12); __pyx_t_12 = NULL; - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_3); - __pyx_t_3 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 239, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - } - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "gevent/resolver/cares.pyx":238 - * cdef object service - * try: - * if status: # <<<<<<<<<<<<<< - * callback(result(None, gaierror(status, strerror(status)))) - * else: - */ - goto __pyx_L9; - } - - /* "gevent/resolver/cares.pyx":241 - * callback(result(None, gaierror(status, strerror(status)))) - * else: - * if c_node: # <<<<<<<<<<<<<< - * node = PyUnicode_FromString(c_node) - * else: - */ - /*else*/ { - __pyx_t_7 = (__pyx_v_c_node != 0); - if (__pyx_t_7) { - - /* "gevent/resolver/cares.pyx":242 - * else: - * if c_node: - * node = PyUnicode_FromString(c_node) # <<<<<<<<<<<<<< - * else: - * node = None - */ - __pyx_t_1 = PyUnicode_FromString(__pyx_v_c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 242, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_node = __pyx_t_1; - __pyx_t_1 = 0; - - /* "gevent/resolver/cares.pyx":241 - * callback(result(None, gaierror(status, strerror(status)))) - * else: - * if c_node: # <<<<<<<<<<<<<< - * node = PyUnicode_FromString(c_node) - * else: - */ - goto __pyx_L10; - } - - /* "gevent/resolver/cares.pyx":244 - * node = PyUnicode_FromString(c_node) - * else: - * node = None # <<<<<<<<<<<<<< - * if c_service: - * service = PyUnicode_FromString(c_service) - */ - /*else*/ { - __Pyx_INCREF(Py_None); - __pyx_v_node = Py_None; - } - __pyx_L10:; - - /* "gevent/resolver/cares.pyx":245 - * else: - * node = None - * if c_service: # <<<<<<<<<<<<<< - * service = PyUnicode_FromString(c_service) - * else: - */ - __pyx_t_7 = (__pyx_v_c_service != 0); - if (__pyx_t_7) { - - /* "gevent/resolver/cares.pyx":246 - * node = None - * if c_service: - * service = PyUnicode_FromString(c_service) # <<<<<<<<<<<<<< - * else: - * service = None - */ - __pyx_t_1 = PyUnicode_FromString(__pyx_v_c_service); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 246, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_service = __pyx_t_1; - __pyx_t_1 = 0; - - /* "gevent/resolver/cares.pyx":245 - * else: - * node = None - * if c_service: # <<<<<<<<<<<<<< - * service = PyUnicode_FromString(c_service) - * else: - */ - goto __pyx_L11; - } - - /* "gevent/resolver/cares.pyx":248 - * service = PyUnicode_FromString(c_service) - * else: - * service = None # <<<<<<<<<<<<<< - * callback(result((node, service))) - * except: - */ - /*else*/ { - __Pyx_INCREF(Py_None); - __pyx_v_service = Py_None; - } - __pyx_L11:; - - /* "gevent/resolver/cares.pyx":249 - * else: - * service = None - * callback(result((node, service))) # <<<<<<<<<<<<<< - * except: - * channel.loop.handle_error(callback, *sys.exc_info()) - */ - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 249, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_v_node); - __Pyx_GIVEREF(__pyx_v_node); - PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_node); - __Pyx_INCREF(__pyx_v_service); - __Pyx_GIVEREF(__pyx_v_service); - PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_service); - __pyx_t_10 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_6gevent_8resolver_5cares_result), __pyx_t_2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 249, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_10); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_INCREF(__pyx_v_callback); - __pyx_t_2 = __pyx_v_callback; __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 249, __pyx_L3_error) - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_10}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 249, __pyx_L3_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_10}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 249, __pyx_L3_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - } else - #endif - { - __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 249, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_12); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_GIVEREF(__pyx_t_10); - PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_10); - __pyx_t_10 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_12, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 249, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - } - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __pyx_L9:; - - /* "gevent/resolver/cares.pyx":237 - * cdef object node - * cdef object service - * try: # <<<<<<<<<<<<<< - * if status: - * callback(result(None, gaierror(status, strerror(status)))) - */ - } - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - goto __pyx_L8_try_end; - __pyx_L3_error:; - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "gevent/resolver/cares.pyx":250 - * service = None - * callback(result((node, service))) - * except: # <<<<<<<<<<<<<< - * channel.loop.handle_error(callback, *sys.exc_info()) - * - */ - /*except:*/ { - __Pyx_AddTraceback("gevent.resolver.cares.gevent_ares_nameinfo_callback", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_12) < 0) __PYX_ERR(0, 250, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GOTREF(__pyx_t_12); - - /* "gevent/resolver/cares.pyx":251 - * callback(result((node, service))) - * except: - * channel.loop.handle_error(callback, *sys.exc_info()) # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_channel->loop, __pyx_n_s_handle_error); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 251, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_10); - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 251, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_INCREF(__pyx_v_callback); - __Pyx_GIVEREF(__pyx_v_callback); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_callback); - __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 251, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_exc_info); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 251, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_13); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_13))) { - __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_13); - if (likely(__pyx_t_9)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); - __Pyx_INCREF(__pyx_t_9); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_13, function); - } - } - if (__pyx_t_9) { - __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 251, __pyx_L5_except_error) - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - } else { - __pyx_t_8 = __Pyx_PyObject_CallNoArg(__pyx_t_13); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 251, __pyx_L5_except_error) - } - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - __pyx_t_13 = __Pyx_PySequence_Tuple(__pyx_t_8); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 251, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_13); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = PyNumber_Add(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 251, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_8, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 251, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_13); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - goto __pyx_L4_exception_handled; - } - __pyx_L5_except_error:; - - /* "gevent/resolver/cares.pyx":237 - * cdef object node - * cdef object service - * try: # <<<<<<<<<<<<<< - * if status: - * callback(result(None, gaierror(status, strerror(status)))) - */ - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); - goto __pyx_L1_error; - __pyx_L4_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_XGIVEREF(__pyx_t_6); - __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6); - __pyx_L8_try_end:; - } - - /* "gevent/resolver/cares.pyx":230 - * - * - * cdef void gevent_ares_nameinfo_callback(void *arg, int status, int timeouts, char *c_node, char *c_service): # <<<<<<<<<<<<<< - * cdef channel channel - * cdef object callback - */ - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_XDECREF(__pyx_t_9); - __Pyx_XDECREF(__pyx_t_10); - __Pyx_XDECREF(__pyx_t_12); - __Pyx_XDECREF(__pyx_t_13); - __Pyx_WriteUnraisable("gevent.resolver.cares.gevent_ares_nameinfo_callback", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_channel); - __Pyx_XDECREF(__pyx_v_callback); - __Pyx_XDECREF(__pyx_v_node); - __Pyx_XDECREF(__pyx_v_service); - __Pyx_RefNannyFinishContext(); -} - -/* "gevent/resolver/cares.pyx":261 - * cdef public object _timer - * - * def __init__(self, object loop, flags=None, timeout=None, tries=None, ndots=None, # <<<<<<<<<<<<<< - * udp_port=None, tcp_port=None, servers=None): - * cdef ares_channeldata* channel = NULL - */ - -/* Python wrapper */ -static int __pyx_pw_6gevent_8resolver_5cares_7channel_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_6gevent_8resolver_5cares_7channel_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_loop = 0; - PyObject *__pyx_v_flags = 0; - PyObject *__pyx_v_timeout = 0; - PyObject *__pyx_v_tries = 0; - PyObject *__pyx_v_ndots = 0; - PyObject *__pyx_v_udp_port = 0; - PyObject *__pyx_v_tcp_port = 0; - PyObject *__pyx_v_servers = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_loop,&__pyx_n_s_flags,&__pyx_n_s_timeout,&__pyx_n_s_tries,&__pyx_n_s_ndots,&__pyx_n_s_udp_port,&__pyx_n_s_tcp_port,&__pyx_n_s_servers,0}; - PyObject* values[8] = {0,0,0,0,0,0,0,0}; - values[1] = ((PyObject *)Py_None); - values[2] = ((PyObject *)Py_None); - values[3] = ((PyObject *)Py_None); - values[4] = ((PyObject *)Py_None); - - /* "gevent/resolver/cares.pyx":262 - * - * def __init__(self, object loop, flags=None, timeout=None, tries=None, ndots=None, - * udp_port=None, tcp_port=None, servers=None): # <<<<<<<<<<<<<< - * cdef ares_channeldata* channel = NULL - * cdef cares.ares_options options - */ - values[5] = ((PyObject *)Py_None); - values[6] = ((PyObject *)Py_None); - values[7] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7); - CYTHON_FALLTHROUGH; - case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6); - CYTHON_FALLTHROUGH; - case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); - CYTHON_FALLTHROUGH; - case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); - CYTHON_FALLTHROUGH; - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flags); - if (value) { values[1] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeout); - if (value) { values[2] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 3: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tries); - if (value) { values[3] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 4: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ndots); - if (value) { values[4] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 5: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_udp_port); - if (value) { values[5] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 6: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tcp_port); - if (value) { values[6] = value; kw_args--; } - } - CYTHON_FALLTHROUGH; - case 7: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_servers); - if (value) { values[7] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 261, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7); - CYTHON_FALLTHROUGH; - case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6); - CYTHON_FALLTHROUGH; - case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); - CYTHON_FALLTHROUGH; - case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); - CYTHON_FALLTHROUGH; - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_loop = values[0]; - __pyx_v_flags = values[1]; - __pyx_v_timeout = values[2]; - __pyx_v_tries = values[3]; - __pyx_v_ndots = values[4]; - __pyx_v_udp_port = values[5]; - __pyx_v_tcp_port = values[6]; - __pyx_v_servers = values[7]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 261, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.resolver.cares.channel.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_8resolver_5cares_7channel___init__(((struct __pyx_obj_6gevent_8resolver_5cares_channel *)__pyx_v_self), __pyx_v_loop, __pyx_v_flags, __pyx_v_timeout, __pyx_v_tries, __pyx_v_ndots, __pyx_v_udp_port, __pyx_v_tcp_port, __pyx_v_servers); - - /* "gevent/resolver/cares.pyx":261 - * cdef public object _timer - * - * def __init__(self, object loop, flags=None, timeout=None, tries=None, ndots=None, # <<<<<<<<<<<<<< - * udp_port=None, tcp_port=None, servers=None): - * cdef ares_channeldata* channel = NULL - */ - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_8resolver_5cares_7channel___init__(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self, PyObject *__pyx_v_loop, PyObject *__pyx_v_flags, PyObject *__pyx_v_timeout, PyObject *__pyx_v_tries, PyObject *__pyx_v_ndots, PyObject *__pyx_v_udp_port, PyObject *__pyx_v_tcp_port, PyObject *__pyx_v_servers) { - struct ares_channeldata *__pyx_v_channel; - struct ares_options __pyx_v_options; - int __pyx_v_optmask; - int __pyx_v_result; - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - double __pyx_t_5; - unsigned short __pyx_t_6; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - PyObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; - PyObject *__pyx_t_13 = NULL; - PyObject *__pyx_t_14 = NULL; - struct __pyx_opt_args_6gevent_8resolver_5cares_7channel_set_servers __pyx_t_15; - __Pyx_RefNannySetupContext("__init__", 0); - - /* "gevent/resolver/cares.pyx":263 - * def __init__(self, object loop, flags=None, timeout=None, tries=None, ndots=None, - * udp_port=None, tcp_port=None, servers=None): - * cdef ares_channeldata* channel = NULL # <<<<<<<<<<<<<< - * cdef cares.ares_options options - * memset(&options, 0, sizeof(cares.ares_options)) - */ - __pyx_v_channel = NULL; - - /* "gevent/resolver/cares.pyx":265 - * cdef ares_channeldata* channel = NULL - * cdef cares.ares_options options - * memset(&options, 0, sizeof(cares.ares_options)) # <<<<<<<<<<<<<< - * cdef int optmask = cares.ARES_OPT_SOCK_STATE_CB - * options.sock_state_cb = <void*>gevent_sock_state_callback - */ - memset((&__pyx_v_options), 0, (sizeof(struct ares_options))); - - /* "gevent/resolver/cares.pyx":266 - * cdef cares.ares_options options - * memset(&options, 0, sizeof(cares.ares_options)) - * cdef int optmask = cares.ARES_OPT_SOCK_STATE_CB # <<<<<<<<<<<<<< - * options.sock_state_cb = <void*>gevent_sock_state_callback - * options.sock_state_cb_data = <void*>self - */ - __pyx_v_optmask = ARES_OPT_SOCK_STATE_CB; - - /* "gevent/resolver/cares.pyx":267 - * memset(&options, 0, sizeof(cares.ares_options)) - * cdef int optmask = cares.ARES_OPT_SOCK_STATE_CB - * options.sock_state_cb = <void*>gevent_sock_state_callback # <<<<<<<<<<<<<< - * options.sock_state_cb_data = <void*>self - * if flags is not None: - */ - __pyx_v_options.sock_state_cb = ((void *)__pyx_f_6gevent_8resolver_5cares_gevent_sock_state_callback); - - /* "gevent/resolver/cares.pyx":268 - * cdef int optmask = cares.ARES_OPT_SOCK_STATE_CB - * options.sock_state_cb = <void*>gevent_sock_state_callback - * options.sock_state_cb_data = <void*>self # <<<<<<<<<<<<<< - * if flags is not None: - * options.flags = int(flags) - */ - __pyx_v_options.sock_state_cb_data = ((void *)__pyx_v_self); - - /* "gevent/resolver/cares.pyx":269 - * options.sock_state_cb = <void*>gevent_sock_state_callback - * options.sock_state_cb_data = <void*>self - * if flags is not None: # <<<<<<<<<<<<<< - * options.flags = int(flags) - * optmask |= cares.ARES_OPT_FLAGS - */ - __pyx_t_1 = (__pyx_v_flags != Py_None); - __pyx_t_2 = (__pyx_t_1 != 0); - if (__pyx_t_2) { - - /* "gevent/resolver/cares.pyx":270 - * options.sock_state_cb_data = <void*>self - * if flags is not None: - * options.flags = int(flags) # <<<<<<<<<<<<<< - * optmask |= cares.ARES_OPT_FLAGS - * if timeout is not None: - */ - __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_v_flags); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 270, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 270, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_v_options.flags = __pyx_t_4; - - /* "gevent/resolver/cares.pyx":271 - * if flags is not None: - * options.flags = int(flags) - * optmask |= cares.ARES_OPT_FLAGS # <<<<<<<<<<<<<< - * if timeout is not None: - * options.timeout = int(float(timeout) * 1000) - */ - __pyx_v_optmask = (__pyx_v_optmask | ARES_OPT_FLAGS); - - /* "gevent/resolver/cares.pyx":269 - * options.sock_state_cb = <void*>gevent_sock_state_callback - * options.sock_state_cb_data = <void*>self - * if flags is not None: # <<<<<<<<<<<<<< - * options.flags = int(flags) - * optmask |= cares.ARES_OPT_FLAGS - */ - } - - /* "gevent/resolver/cares.pyx":272 - * options.flags = int(flags) - * optmask |= cares.ARES_OPT_FLAGS - * if timeout is not None: # <<<<<<<<<<<<<< - * options.timeout = int(float(timeout) * 1000) - * optmask |= cares.ARES_OPT_TIMEOUTMS - */ - __pyx_t_2 = (__pyx_v_timeout != Py_None); - __pyx_t_1 = (__pyx_t_2 != 0); - if (__pyx_t_1) { - - /* "gevent/resolver/cares.pyx":273 - * optmask |= cares.ARES_OPT_FLAGS - * if timeout is not None: - * options.timeout = int(float(timeout) * 1000) # <<<<<<<<<<<<<< - * optmask |= cares.ARES_OPT_TIMEOUTMS - * if tries is not None: - */ - __pyx_t_5 = __Pyx_PyObject_AsDouble(__pyx_v_timeout); if (unlikely(__pyx_t_5 == ((double)((double)-1)) && PyErr_Occurred())) __PYX_ERR(0, 273, __pyx_L1_error) - __pyx_v_options.timeout = ((int)(__pyx_t_5 * 1000.0)); - - /* "gevent/resolver/cares.pyx":274 - * if timeout is not None: - * options.timeout = int(float(timeout) * 1000) - * optmask |= cares.ARES_OPT_TIMEOUTMS # <<<<<<<<<<<<<< - * if tries is not None: - * options.tries = int(tries) - */ - __pyx_v_optmask = (__pyx_v_optmask | ARES_OPT_TIMEOUTMS); - - /* "gevent/resolver/cares.pyx":272 - * options.flags = int(flags) - * optmask |= cares.ARES_OPT_FLAGS - * if timeout is not None: # <<<<<<<<<<<<<< - * options.timeout = int(float(timeout) * 1000) - * optmask |= cares.ARES_OPT_TIMEOUTMS - */ - } - - /* "gevent/resolver/cares.pyx":275 - * options.timeout = int(float(timeout) * 1000) - * optmask |= cares.ARES_OPT_TIMEOUTMS - * if tries is not None: # <<<<<<<<<<<<<< - * options.tries = int(tries) - * optmask |= cares.ARES_OPT_TRIES - */ - __pyx_t_1 = (__pyx_v_tries != Py_None); - __pyx_t_2 = (__pyx_t_1 != 0); - if (__pyx_t_2) { - - /* "gevent/resolver/cares.pyx":276 - * optmask |= cares.ARES_OPT_TIMEOUTMS - * if tries is not None: - * options.tries = int(tries) # <<<<<<<<<<<<<< - * optmask |= cares.ARES_OPT_TRIES - * if ndots is not None: - */ - __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_v_tries); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 276, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 276, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_v_options.tries = __pyx_t_4; - - /* "gevent/resolver/cares.pyx":277 - * if tries is not None: - * options.tries = int(tries) - * optmask |= cares.ARES_OPT_TRIES # <<<<<<<<<<<<<< - * if ndots is not None: - * options.ndots = int(ndots) - */ - __pyx_v_optmask = (__pyx_v_optmask | ARES_OPT_TRIES); - - /* "gevent/resolver/cares.pyx":275 - * options.timeout = int(float(timeout) * 1000) - * optmask |= cares.ARES_OPT_TIMEOUTMS - * if tries is not None: # <<<<<<<<<<<<<< - * options.tries = int(tries) - * optmask |= cares.ARES_OPT_TRIES - */ - } - - /* "gevent/resolver/cares.pyx":278 - * options.tries = int(tries) - * optmask |= cares.ARES_OPT_TRIES - * if ndots is not None: # <<<<<<<<<<<<<< - * options.ndots = int(ndots) - * optmask |= cares.ARES_OPT_NDOTS - */ - __pyx_t_2 = (__pyx_v_ndots != Py_None); - __pyx_t_1 = (__pyx_t_2 != 0); - if (__pyx_t_1) { - - /* "gevent/resolver/cares.pyx":279 - * optmask |= cares.ARES_OPT_TRIES - * if ndots is not None: - * options.ndots = int(ndots) # <<<<<<<<<<<<<< - * optmask |= cares.ARES_OPT_NDOTS - * if udp_port is not None: - */ - __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_v_ndots); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 279, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 279, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_v_options.ndots = __pyx_t_4; - - /* "gevent/resolver/cares.pyx":280 - * if ndots is not None: - * options.ndots = int(ndots) - * optmask |= cares.ARES_OPT_NDOTS # <<<<<<<<<<<<<< - * if udp_port is not None: - * options.udp_port = int(udp_port) - */ - __pyx_v_optmask = (__pyx_v_optmask | ARES_OPT_NDOTS); - - /* "gevent/resolver/cares.pyx":278 - * options.tries = int(tries) - * optmask |= cares.ARES_OPT_TRIES - * if ndots is not None: # <<<<<<<<<<<<<< - * options.ndots = int(ndots) - * optmask |= cares.ARES_OPT_NDOTS - */ - } - - /* "gevent/resolver/cares.pyx":281 - * options.ndots = int(ndots) - * optmask |= cares.ARES_OPT_NDOTS - * if udp_port is not None: # <<<<<<<<<<<<<< - * options.udp_port = int(udp_port) - * optmask |= cares.ARES_OPT_UDP_PORT - */ - __pyx_t_1 = (__pyx_v_udp_port != Py_None); - __pyx_t_2 = (__pyx_t_1 != 0); - if (__pyx_t_2) { - - /* "gevent/resolver/cares.pyx":282 - * optmask |= cares.ARES_OPT_NDOTS - * if udp_port is not None: - * options.udp_port = int(udp_port) # <<<<<<<<<<<<<< - * optmask |= cares.ARES_OPT_UDP_PORT - * if tcp_port is not None: - */ - __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_v_udp_port); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 282, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = __Pyx_PyInt_As_unsigned_short(__pyx_t_3); if (unlikely((__pyx_t_6 == (unsigned short)-1) && PyErr_Occurred())) __PYX_ERR(0, 282, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_v_options.udp_port = __pyx_t_6; - - /* "gevent/resolver/cares.pyx":283 - * if udp_port is not None: - * options.udp_port = int(udp_port) - * optmask |= cares.ARES_OPT_UDP_PORT # <<<<<<<<<<<<<< - * if tcp_port is not None: - * options.tcp_port = int(tcp_port) - */ - __pyx_v_optmask = (__pyx_v_optmask | ARES_OPT_UDP_PORT); - - /* "gevent/resolver/cares.pyx":281 - * options.ndots = int(ndots) - * optmask |= cares.ARES_OPT_NDOTS - * if udp_port is not None: # <<<<<<<<<<<<<< - * options.udp_port = int(udp_port) - * optmask |= cares.ARES_OPT_UDP_PORT - */ - } - - /* "gevent/resolver/cares.pyx":284 - * options.udp_port = int(udp_port) - * optmask |= cares.ARES_OPT_UDP_PORT - * if tcp_port is not None: # <<<<<<<<<<<<<< - * options.tcp_port = int(tcp_port) - * optmask |= cares.ARES_OPT_TCP_PORT - */ - __pyx_t_2 = (__pyx_v_tcp_port != Py_None); - __pyx_t_1 = (__pyx_t_2 != 0); - if (__pyx_t_1) { - - /* "gevent/resolver/cares.pyx":285 - * optmask |= cares.ARES_OPT_UDP_PORT - * if tcp_port is not None: - * options.tcp_port = int(tcp_port) # <<<<<<<<<<<<<< - * optmask |= cares.ARES_OPT_TCP_PORT - * cdef int result = cares.ares_library_init(cares.ARES_LIB_INIT_ALL) # ARES_LIB_INIT_WIN32 -DUSE_WINSOCK? - */ - __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_v_tcp_port); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 285, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = __Pyx_PyInt_As_unsigned_short(__pyx_t_3); if (unlikely((__pyx_t_6 == (unsigned short)-1) && PyErr_Occurred())) __PYX_ERR(0, 285, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_v_options.tcp_port = __pyx_t_6; - - /* "gevent/resolver/cares.pyx":286 - * if tcp_port is not None: - * options.tcp_port = int(tcp_port) - * optmask |= cares.ARES_OPT_TCP_PORT # <<<<<<<<<<<<<< - * cdef int result = cares.ares_library_init(cares.ARES_LIB_INIT_ALL) # ARES_LIB_INIT_WIN32 -DUSE_WINSOCK? - * if result: - */ - __pyx_v_optmask = (__pyx_v_optmask | ARES_OPT_TCP_PORT); - - /* "gevent/resolver/cares.pyx":284 - * options.udp_port = int(udp_port) - * optmask |= cares.ARES_OPT_UDP_PORT - * if tcp_port is not None: # <<<<<<<<<<<<<< - * options.tcp_port = int(tcp_port) - * optmask |= cares.ARES_OPT_TCP_PORT - */ - } - - /* "gevent/resolver/cares.pyx":287 - * options.tcp_port = int(tcp_port) - * optmask |= cares.ARES_OPT_TCP_PORT - * cdef int result = cares.ares_library_init(cares.ARES_LIB_INIT_ALL) # ARES_LIB_INIT_WIN32 -DUSE_WINSOCK? # <<<<<<<<<<<<<< - * if result: - * raise gaierror(result, strerror(result)) - */ - __pyx_v_result = ares_library_init(ARES_LIB_INIT_ALL); - - /* "gevent/resolver/cares.pyx":288 - * optmask |= cares.ARES_OPT_TCP_PORT - * cdef int result = cares.ares_library_init(cares.ARES_LIB_INIT_ALL) # ARES_LIB_INIT_WIN32 -DUSE_WINSOCK? - * if result: # <<<<<<<<<<<<<< - * raise gaierror(result, strerror(result)) - * result = cares.ares_init_options(&channel, &options, optmask) - */ - __pyx_t_1 = (__pyx_v_result != 0); - if (unlikely(__pyx_t_1)) { - - /* "gevent/resolver/cares.pyx":289 - * cdef int result = cares.ares_library_init(cares.ARES_LIB_INIT_ALL) # ARES_LIB_INIT_WIN32 -DUSE_WINSOCK? - * if result: - * raise gaierror(result, strerror(result)) # <<<<<<<<<<<<<< - * result = cares.ares_init_options(&channel, &options, optmask) - * if result: - */ - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_gaierror); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 289, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_result); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 289, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_v_result); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 289, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_10 = __pyx_f_6gevent_8resolver_5cares_strerror(__pyx_t_9, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 289, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_10); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = NULL; - __pyx_t_4 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { - __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7); - if (likely(__pyx_t_9)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); - __Pyx_INCREF(__pyx_t_9); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_7, function); - __pyx_t_4 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_7)) { - PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_8, __pyx_t_10}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 289, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { - PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_8, __pyx_t_10}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 289, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - } else - #endif - { - __pyx_t_11 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 289, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_11); - if (__pyx_t_9) { - __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL; - } - __Pyx_GIVEREF(__pyx_t_8); - PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_4, __pyx_t_8); - __Pyx_GIVEREF(__pyx_t_10); - PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_4, __pyx_t_10); - __pyx_t_8 = 0; - __pyx_t_10 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 289, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - } - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 289, __pyx_L1_error) - - /* "gevent/resolver/cares.pyx":288 - * optmask |= cares.ARES_OPT_TCP_PORT - * cdef int result = cares.ares_library_init(cares.ARES_LIB_INIT_ALL) # ARES_LIB_INIT_WIN32 -DUSE_WINSOCK? - * if result: # <<<<<<<<<<<<<< - * raise gaierror(result, strerror(result)) - * result = cares.ares_init_options(&channel, &options, optmask) - */ - } - - /* "gevent/resolver/cares.pyx":290 - * if result: - * raise gaierror(result, strerror(result)) - * result = cares.ares_init_options(&channel, &options, optmask) # <<<<<<<<<<<<<< - * if result: - * raise gaierror(result, strerror(result)) - */ - __pyx_v_result = ares_init_options((&__pyx_v_channel), (&__pyx_v_options), __pyx_v_optmask); - - /* "gevent/resolver/cares.pyx":291 - * raise gaierror(result, strerror(result)) - * result = cares.ares_init_options(&channel, &options, optmask) - * if result: # <<<<<<<<<<<<<< - * raise gaierror(result, strerror(result)) - * self._timer = loop.timer(TIMEOUT, TIMEOUT) - */ - __pyx_t_1 = (__pyx_v_result != 0); - if (unlikely(__pyx_t_1)) { - - /* "gevent/resolver/cares.pyx":292 - * result = cares.ares_init_options(&channel, &options, optmask) - * if result: - * raise gaierror(result, strerror(result)) # <<<<<<<<<<<<<< - * self._timer = loop.timer(TIMEOUT, TIMEOUT) - * self._watchers = {} - */ - __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_gaierror); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 292, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_result); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 292, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_11); - __pyx_t_10 = __Pyx_PyInt_From_int(__pyx_v_result); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 292, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_10); - __pyx_t_8 = __pyx_f_6gevent_8resolver_5cares_strerror(__pyx_t_10, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 292, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __pyx_t_10 = NULL; - __pyx_t_4 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { - __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_7); - if (likely(__pyx_t_10)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); - __Pyx_INCREF(__pyx_t_10); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_7, function); - __pyx_t_4 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_7)) { - PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_11, __pyx_t_8}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 292, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { - PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_11, __pyx_t_8}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 292, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } else - #endif - { - __pyx_t_9 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 292, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - if (__pyx_t_10) { - __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_10); __pyx_t_10 = NULL; - } - __Pyx_GIVEREF(__pyx_t_11); - PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_4, __pyx_t_11); - __Pyx_GIVEREF(__pyx_t_8); - PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_4, __pyx_t_8); - __pyx_t_11 = 0; - __pyx_t_8 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 292, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - } - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 292, __pyx_L1_error) - - /* "gevent/resolver/cares.pyx":291 - * raise gaierror(result, strerror(result)) - * result = cares.ares_init_options(&channel, &options, optmask) - * if result: # <<<<<<<<<<<<<< - * raise gaierror(result, strerror(result)) - * self._timer = loop.timer(TIMEOUT, TIMEOUT) - */ - } - - /* "gevent/resolver/cares.pyx":293 - * if result: - * raise gaierror(result, strerror(result)) - * self._timer = loop.timer(TIMEOUT, TIMEOUT) # <<<<<<<<<<<<<< - * self._watchers = {} - * self.channel = channel - */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_loop, __pyx_n_s_timer); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 293, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_TIMEOUT); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 293, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_TIMEOUT); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 293, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_11 = NULL; - __pyx_t_4 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { - __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_7); - if (likely(__pyx_t_11)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); - __Pyx_INCREF(__pyx_t_11); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_7, function); - __pyx_t_4 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_7)) { - PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_9, __pyx_t_8}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 293, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { - PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_9, __pyx_t_8}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 293, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } else - #endif - { - __pyx_t_10 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 293, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_10); - if (__pyx_t_11) { - __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11); __pyx_t_11 = NULL; - } - __Pyx_GIVEREF(__pyx_t_9); - PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_4, __pyx_t_9); - __Pyx_GIVEREF(__pyx_t_8); - PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_4, __pyx_t_8); - __pyx_t_9 = 0; - __pyx_t_8 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 293, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - } - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GIVEREF(__pyx_t_3); - __Pyx_GOTREF(__pyx_v_self->_timer); - __Pyx_DECREF(__pyx_v_self->_timer); - __pyx_v_self->_timer = __pyx_t_3; - __pyx_t_3 = 0; - - /* "gevent/resolver/cares.pyx":294 - * raise gaierror(result, strerror(result)) - * self._timer = loop.timer(TIMEOUT, TIMEOUT) - * self._watchers = {} # <<<<<<<<<<<<<< - * self.channel = channel - * try: - */ - __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 294, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_3); - __Pyx_GOTREF(__pyx_v_self->_watchers); - __Pyx_DECREF(__pyx_v_self->_watchers); - __pyx_v_self->_watchers = ((PyObject*)__pyx_t_3); - __pyx_t_3 = 0; - - /* "gevent/resolver/cares.pyx":295 - * self._timer = loop.timer(TIMEOUT, TIMEOUT) - * self._watchers = {} - * self.channel = channel # <<<<<<<<<<<<<< - * try: - * if servers is not None: - */ - __pyx_v_self->channel = __pyx_v_channel; - - /* "gevent/resolver/cares.pyx":296 - * self._watchers = {} - * self.channel = channel - * try: # <<<<<<<<<<<<<< - * if servers is not None: - * self.set_servers(servers) - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14); - __Pyx_XGOTREF(__pyx_t_12); - __Pyx_XGOTREF(__pyx_t_13); - __Pyx_XGOTREF(__pyx_t_14); - /*try:*/ { - - /* "gevent/resolver/cares.pyx":297 - * self.channel = channel - * try: - * if servers is not None: # <<<<<<<<<<<<<< - * self.set_servers(servers) - * self.loop = loop - */ - __pyx_t_1 = (__pyx_v_servers != Py_None); - __pyx_t_2 = (__pyx_t_1 != 0); - if (__pyx_t_2) { - - /* "gevent/resolver/cares.pyx":298 - * try: - * if servers is not None: - * self.set_servers(servers) # <<<<<<<<<<<<<< - * self.loop = loop - * except: - */ - __pyx_t_15.__pyx_n = 1; - __pyx_t_15.servers = __pyx_v_servers; - __pyx_t_3 = ((struct __pyx_vtabstruct_6gevent_8resolver_5cares_channel *)__pyx_v_self->__pyx_vtab)->set_servers(__pyx_v_self, 0, &__pyx_t_15); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 298, __pyx_L11_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "gevent/resolver/cares.pyx":297 - * self.channel = channel - * try: - * if servers is not None: # <<<<<<<<<<<<<< - * self.set_servers(servers) - * self.loop = loop - */ - } - - /* "gevent/resolver/cares.pyx":299 - * if servers is not None: - * self.set_servers(servers) - * self.loop = loop # <<<<<<<<<<<<<< - * except: - * self.destroy() - */ - __Pyx_INCREF(__pyx_v_loop); - __Pyx_GIVEREF(__pyx_v_loop); - __Pyx_GOTREF(__pyx_v_self->loop); - __Pyx_DECREF(__pyx_v_self->loop); - __pyx_v_self->loop = __pyx_v_loop; - - /* "gevent/resolver/cares.pyx":296 - * self._watchers = {} - * self.channel = channel - * try: # <<<<<<<<<<<<<< - * if servers is not None: - * self.set_servers(servers) - */ - } - __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; - __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; - goto __pyx_L16_try_end; - __pyx_L11_error:; - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "gevent/resolver/cares.pyx":300 - * self.set_servers(servers) - * self.loop = loop - * except: # <<<<<<<<<<<<<< - * self.destroy() - * raise - */ - /*except:*/ { - __Pyx_AddTraceback("gevent.resolver.cares.channel.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_7, &__pyx_t_10) < 0) __PYX_ERR(0, 300, __pyx_L13_except_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GOTREF(__pyx_t_7); - __Pyx_GOTREF(__pyx_t_10); - - /* "gevent/resolver/cares.pyx":301 - * self.loop = loop - * except: - * self.destroy() # <<<<<<<<<<<<<< - * raise - * - */ - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_destroy); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 301, __pyx_L13_except_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_11 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { - __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_9); - if (likely(__pyx_t_11)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); - __Pyx_INCREF(__pyx_t_11); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_9, function); - } - } - if (__pyx_t_11) { - __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_11); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 301, __pyx_L13_except_error) - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - } else { - __pyx_t_8 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 301, __pyx_L13_except_error) - } - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - - /* "gevent/resolver/cares.pyx":302 - * except: - * self.destroy() - * raise # <<<<<<<<<<<<<< - * - * def __repr__(self): - */ - __Pyx_GIVEREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_7); - __Pyx_XGIVEREF(__pyx_t_10); - __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_7, __pyx_t_10); - __pyx_t_3 = 0; __pyx_t_7 = 0; __pyx_t_10 = 0; - __PYX_ERR(0, 302, __pyx_L13_except_error) - } - __pyx_L13_except_error:; - - /* "gevent/resolver/cares.pyx":296 - * self._watchers = {} - * self.channel = channel - * try: # <<<<<<<<<<<<<< - * if servers is not None: - * self.set_servers(servers) - */ - __Pyx_XGIVEREF(__pyx_t_12); - __Pyx_XGIVEREF(__pyx_t_13); - __Pyx_XGIVEREF(__pyx_t_14); - __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14); - goto __pyx_L1_error; - __pyx_L16_try_end:; - } - - /* "gevent/resolver/cares.pyx":261 - * cdef public object _timer - * - * def __init__(self, object loop, flags=None, timeout=None, tries=None, ndots=None, # <<<<<<<<<<<<<< - * udp_port=None, tcp_port=None, servers=None): - * cdef ares_channeldata* channel = NULL - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_XDECREF(__pyx_t_9); - __Pyx_XDECREF(__pyx_t_10); - __Pyx_XDECREF(__pyx_t_11); - __Pyx_AddTraceback("gevent.resolver.cares.channel.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/resolver/cares.pyx":304 - * raise - * - * def __repr__(self): # <<<<<<<<<<<<<< - * args = (self.__class__.__name__, id(self), self._timer, len(self._watchers)) - * return '<%s at 0x%x _timer=%r _watchers[%s]>' % args - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_7channel_3__repr__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_7channel_3__repr__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8resolver_5cares_7channel_2__repr__(((struct __pyx_obj_6gevent_8resolver_5cares_channel *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8resolver_5cares_7channel_2__repr__(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self) { - PyObject *__pyx_v_args = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - Py_ssize_t __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - __Pyx_RefNannySetupContext("__repr__", 0); - - /* "gevent/resolver/cares.pyx":305 - * - * def __repr__(self): - * args = (self.__class__.__name__, id(self), self._timer, len(self._watchers)) # <<<<<<<<<<<<<< - * return '<%s at 0x%x _timer=%r _watchers[%s]>' % args - * - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 305, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 305, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 305, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __pyx_v_self->_watchers; - __Pyx_INCREF(__pyx_t_3); - if (unlikely(__pyx_t_3 == Py_None)) { - PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 305, __pyx_L1_error) - } - __pyx_t_4 = PyDict_Size(__pyx_t_3); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 305, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 305, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 305, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1); - __Pyx_INCREF(__pyx_v_self->_timer); - __Pyx_GIVEREF(__pyx_v_self->_timer); - PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_self->_timer); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_3); - __pyx_t_2 = 0; - __pyx_t_1 = 0; - __pyx_t_3 = 0; - __pyx_v_args = ((PyObject*)__pyx_t_5); - __pyx_t_5 = 0; - - /* "gevent/resolver/cares.pyx":306 - * def __repr__(self): - * args = (self.__class__.__name__, id(self), self._timer, len(self._watchers)) - * return '<%s at 0x%x _timer=%r _watchers[%s]>' % args # <<<<<<<<<<<<<< - * - * def destroy(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_s_at_0x_x__timer_r__watchers_s, __pyx_v_args); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 306, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_r = __pyx_t_5; - __pyx_t_5 = 0; - goto __pyx_L0; - - /* "gevent/resolver/cares.pyx":304 - * raise - * - * def __repr__(self): # <<<<<<<<<<<<<< - * args = (self.__class__.__name__, id(self), self._timer, len(self._watchers)) - * return '<%s at 0x%x _timer=%r _watchers[%s]>' % args - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent.resolver.cares.channel.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_args); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/resolver/cares.pyx":308 - * return '<%s at 0x%x _timer=%r _watchers[%s]>' % args - * - * def destroy(self): # <<<<<<<<<<<<<< - * if self.channel: - * # XXX ares_library_cleanup? - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_7channel_5destroy(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_7channel_5destroy(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("destroy (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8resolver_5cares_7channel_4destroy(((struct __pyx_obj_6gevent_8resolver_5cares_channel *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8resolver_5cares_7channel_4destroy(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - __Pyx_RefNannySetupContext("destroy", 0); - - /* "gevent/resolver/cares.pyx":309 - * - * def destroy(self): - * if self.channel: # <<<<<<<<<<<<<< - * # XXX ares_library_cleanup? - * cares.ares_destroy(self.channel) - */ - __pyx_t_1 = (__pyx_v_self->channel != 0); - if (__pyx_t_1) { - - /* "gevent/resolver/cares.pyx":311 - * if self.channel: - * # XXX ares_library_cleanup? - * cares.ares_destroy(self.channel) # <<<<<<<<<<<<<< - * self.channel = NULL - * self._watchers.clear() - */ - ares_destroy(__pyx_v_self->channel); - - /* "gevent/resolver/cares.pyx":312 - * # XXX ares_library_cleanup? - * cares.ares_destroy(self.channel) - * self.channel = NULL # <<<<<<<<<<<<<< - * self._watchers.clear() - * self._timer.stop() - */ - __pyx_v_self->channel = NULL; - - /* "gevent/resolver/cares.pyx":313 - * cares.ares_destroy(self.channel) - * self.channel = NULL - * self._watchers.clear() # <<<<<<<<<<<<<< - * self._timer.stop() - * self.loop = None - */ - if (unlikely(__pyx_v_self->_watchers == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "clear"); - __PYX_ERR(0, 313, __pyx_L1_error) - } - __pyx_t_2 = __Pyx_PyDict_Clear(__pyx_v_self->_watchers); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 313, __pyx_L1_error) - - /* "gevent/resolver/cares.pyx":314 - * self.channel = NULL - * self._watchers.clear() - * self._timer.stop() # <<<<<<<<<<<<<< - * self.loop = None - * - */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_timer, __pyx_n_s_stop); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 314, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - if (__pyx_t_5) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 314, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 314, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "gevent/resolver/cares.pyx":315 - * self._watchers.clear() - * self._timer.stop() - * self.loop = None # <<<<<<<<<<<<<< - * - * def __dealloc__(self): - */ - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->loop); - __Pyx_DECREF(__pyx_v_self->loop); - __pyx_v_self->loop = Py_None; - - /* "gevent/resolver/cares.pyx":309 - * - * def destroy(self): - * if self.channel: # <<<<<<<<<<<<<< - * # XXX ares_library_cleanup? - * cares.ares_destroy(self.channel) - */ - } - - /* "gevent/resolver/cares.pyx":308 - * return '<%s at 0x%x _timer=%r _watchers[%s]>' % args - * - * def destroy(self): # <<<<<<<<<<<<<< - * if self.channel: - * # XXX ares_library_cleanup? - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("gevent.resolver.cares.channel.destroy", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/resolver/cares.pyx":317 - * self.loop = None - * - * def __dealloc__(self): # <<<<<<<<<<<<<< - * if self.channel: - * # XXX ares_library_cleanup? - */ - -/* Python wrapper */ -static void __pyx_pw_6gevent_8resolver_5cares_7channel_7__dealloc__(PyObject *__pyx_v_self); /*proto*/ -static void __pyx_pw_6gevent_8resolver_5cares_7channel_7__dealloc__(PyObject *__pyx_v_self) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); - __pyx_pf_6gevent_8resolver_5cares_7channel_6__dealloc__(((struct __pyx_obj_6gevent_8resolver_5cares_channel *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -static void __pyx_pf_6gevent_8resolver_5cares_7channel_6__dealloc__(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self) { - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("__dealloc__", 0); - - /* "gevent/resolver/cares.pyx":318 - * - * def __dealloc__(self): - * if self.channel: # <<<<<<<<<<<<<< - * # XXX ares_library_cleanup? - * cares.ares_destroy(self.channel) - */ - __pyx_t_1 = (__pyx_v_self->channel != 0); - if (__pyx_t_1) { - - /* "gevent/resolver/cares.pyx":320 - * if self.channel: - * # XXX ares_library_cleanup? - * cares.ares_destroy(self.channel) # <<<<<<<<<<<<<< - * self.channel = NULL - * - */ - ares_destroy(__pyx_v_self->channel); - - /* "gevent/resolver/cares.pyx":321 - * # XXX ares_library_cleanup? - * cares.ares_destroy(self.channel) - * self.channel = NULL # <<<<<<<<<<<<<< - * - * cpdef set_servers(self, servers=None): - */ - __pyx_v_self->channel = NULL; - - /* "gevent/resolver/cares.pyx":318 - * - * def __dealloc__(self): - * if self.channel: # <<<<<<<<<<<<<< - * # XXX ares_library_cleanup? - * cares.ares_destroy(self.channel) - */ - } - - /* "gevent/resolver/cares.pyx":317 - * self.loop = None - * - * def __dealloc__(self): # <<<<<<<<<<<<<< - * if self.channel: - * # XXX ares_library_cleanup? - */ - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -/* "gevent/resolver/cares.pyx":323 - * self.channel = NULL - * - * cpdef set_servers(self, servers=None): # <<<<<<<<<<<<<< - * if not self.channel: - * raise gaierror(cares.ARES_EDESTRUCTION, 'this ares channel has been destroyed') - */ - -static PyObject *__pyx_pw_6gevent_8resolver_5cares_7channel_9set_servers(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_f_6gevent_8resolver_5cares_7channel_set_servers(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_8resolver_5cares_7channel_set_servers *__pyx_optional_args) { - PyObject *__pyx_v_servers = ((PyObject *)Py_None); - int __pyx_v_length; - CYTHON_UNUSED int __pyx_v_result; - int __pyx_v_index; - char *__pyx_v_string; - struct ares_addr_node *__pyx_v_c_servers; - PyObject *__pyx_v_server = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - int __pyx_t_7; - int __pyx_t_8; - Py_ssize_t __pyx_t_9; - PyObject *(*__pyx_t_10)(PyObject *); - char *__pyx_t_11; - PyObject *__pyx_t_12 = NULL; - int __pyx_t_13; - char const *__pyx_t_14; - PyObject *__pyx_t_15 = NULL; - PyObject *__pyx_t_16 = NULL; - PyObject *__pyx_t_17 = NULL; - PyObject *__pyx_t_18 = NULL; - PyObject *__pyx_t_19 = NULL; - PyObject *__pyx_t_20 = NULL; - __Pyx_RefNannySetupContext("set_servers", 0); - if (__pyx_optional_args) { - if (__pyx_optional_args->__pyx_n > 0) { - __pyx_v_servers = __pyx_optional_args->servers; - } - } - __Pyx_INCREF(__pyx_v_servers); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_servers); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 323, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_8resolver_5cares_7channel_9set_servers)) { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (!__pyx_t_4) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_servers); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 323, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_servers}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 323, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_servers}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 323, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else - #endif - { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 323, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_INCREF(__pyx_v_servers); - __Pyx_GIVEREF(__pyx_v_servers); - PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_servers); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 323, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "gevent/resolver/cares.pyx":324 - * - * cpdef set_servers(self, servers=None): - * if not self.channel: # <<<<<<<<<<<<<< - * raise gaierror(cares.ARES_EDESTRUCTION, 'this ares channel has been destroyed') - * if not servers: - */ - __pyx_t_6 = ((!(__pyx_v_self->channel != 0)) != 0); - if (unlikely(__pyx_t_6)) { - - /* "gevent/resolver/cares.pyx":325 - * cpdef set_servers(self, servers=None): - * if not self.channel: - * raise gaierror(cares.ARES_EDESTRUCTION, 'this ares channel has been destroyed') # <<<<<<<<<<<<<< - * if not servers: - * servers = [] - */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_gaierror); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 325, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyInt_From_int(ARES_EDESTRUCTION); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 325, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = NULL; - __pyx_t_7 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_7 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_kp_s_this_ares_channel_has_been_destr}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 325, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_kp_s_this_ares_channel_has_been_destr}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 325, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - { - __pyx_t_4 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 325, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - if (__pyx_t_5) { - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL; - } - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_7, __pyx_t_3); - __Pyx_INCREF(__pyx_kp_s_this_ares_channel_has_been_destr); - __Pyx_GIVEREF(__pyx_kp_s_this_ares_channel_has_been_destr); - PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_7, __pyx_kp_s_this_ares_channel_has_been_destr); - __pyx_t_3 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 325, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 325, __pyx_L1_error) - - /* "gevent/resolver/cares.pyx":324 - * - * cpdef set_servers(self, servers=None): - * if not self.channel: # <<<<<<<<<<<<<< - * raise gaierror(cares.ARES_EDESTRUCTION, 'this ares channel has been destroyed') - * if not servers: - */ - } - - /* "gevent/resolver/cares.pyx":326 - * if not self.channel: - * raise gaierror(cares.ARES_EDESTRUCTION, 'this ares channel has been destroyed') - * if not servers: # <<<<<<<<<<<<<< - * servers = [] - * if isinstance(servers, string_types): - */ - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_servers); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 326, __pyx_L1_error) - __pyx_t_8 = ((!__pyx_t_6) != 0); - if (__pyx_t_8) { - - /* "gevent/resolver/cares.pyx":327 - * raise gaierror(cares.ARES_EDESTRUCTION, 'this ares channel has been destroyed') - * if not servers: - * servers = [] # <<<<<<<<<<<<<< - * if isinstance(servers, string_types): - * servers = servers.split(',') - */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 327, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF_SET(__pyx_v_servers, __pyx_t_1); - __pyx_t_1 = 0; - - /* "gevent/resolver/cares.pyx":326 - * if not self.channel: - * raise gaierror(cares.ARES_EDESTRUCTION, 'this ares channel has been destroyed') - * if not servers: # <<<<<<<<<<<<<< - * servers = [] - * if isinstance(servers, string_types): - */ - } - - /* "gevent/resolver/cares.pyx":328 - * if not servers: - * servers = [] - * if isinstance(servers, string_types): # <<<<<<<<<<<<<< - * servers = servers.split(',') - * cdef int length = len(servers) - */ - __pyx_t_1 = __pyx_v_6gevent_8resolver_5cares_string_types; - __Pyx_INCREF(__pyx_t_1); - __pyx_t_8 = PyObject_IsInstance(__pyx_v_servers, __pyx_t_1); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 328, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_6 = (__pyx_t_8 != 0); - if (__pyx_t_6) { - - /* "gevent/resolver/cares.pyx":329 - * servers = [] - * if isinstance(servers, string_types): - * servers = servers.split(',') # <<<<<<<<<<<<<< - * cdef int length = len(servers) - * cdef int result, index - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_servers, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 329, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 329, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF_SET(__pyx_v_servers, __pyx_t_2); - __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":328 - * if not servers: - * servers = [] - * if isinstance(servers, string_types): # <<<<<<<<<<<<<< - * servers = servers.split(',') - * cdef int length = len(servers) - */ - } - - /* "gevent/resolver/cares.pyx":330 - * if isinstance(servers, string_types): - * servers = servers.split(',') - * cdef int length = len(servers) # <<<<<<<<<<<<<< - * cdef int result, index - * cdef char* string - */ - __pyx_t_9 = PyObject_Length(__pyx_v_servers); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 330, __pyx_L1_error) - __pyx_v_length = __pyx_t_9; - - /* "gevent/resolver/cares.pyx":334 - * cdef char* string - * cdef cares.ares_addr_node* c_servers - * if length <= 0: # <<<<<<<<<<<<<< - * result = cares.ares_set_servers(self.channel, NULL) - * else: - */ - __pyx_t_6 = ((__pyx_v_length <= 0) != 0); - if (__pyx_t_6) { - - /* "gevent/resolver/cares.pyx":335 - * cdef cares.ares_addr_node* c_servers - * if length <= 0: - * result = cares.ares_set_servers(self.channel, NULL) # <<<<<<<<<<<<<< - * else: - * c_servers = <cares.ares_addr_node*>PyMem_Malloc(sizeof(cares.ares_addr_node) * length) - */ - __pyx_v_result = ares_set_servers(__pyx_v_self->channel, NULL); - - /* "gevent/resolver/cares.pyx":334 - * cdef char* string - * cdef cares.ares_addr_node* c_servers - * if length <= 0: # <<<<<<<<<<<<<< - * result = cares.ares_set_servers(self.channel, NULL) - * else: - */ - goto __pyx_L6; - } - - /* "gevent/resolver/cares.pyx":337 - * result = cares.ares_set_servers(self.channel, NULL) - * else: - * c_servers = <cares.ares_addr_node*>PyMem_Malloc(sizeof(cares.ares_addr_node) * length) # <<<<<<<<<<<<<< - * if not c_servers: - * raise MemoryError - */ - /*else*/ { - __pyx_v_c_servers = ((struct ares_addr_node *)PyMem_Malloc(((sizeof(struct ares_addr_node)) * __pyx_v_length))); - - /* "gevent/resolver/cares.pyx":338 - * else: - * c_servers = <cares.ares_addr_node*>PyMem_Malloc(sizeof(cares.ares_addr_node) * length) - * if not c_servers: # <<<<<<<<<<<<<< - * raise MemoryError - * try: - */ - __pyx_t_6 = ((!(__pyx_v_c_servers != 0)) != 0); - if (unlikely(__pyx_t_6)) { - - /* "gevent/resolver/cares.pyx":339 - * c_servers = <cares.ares_addr_node*>PyMem_Malloc(sizeof(cares.ares_addr_node) * length) - * if not c_servers: - * raise MemoryError # <<<<<<<<<<<<<< - * try: - * index = 0 - */ - PyErr_NoMemory(); __PYX_ERR(0, 339, __pyx_L1_error) - - /* "gevent/resolver/cares.pyx":338 - * else: - * c_servers = <cares.ares_addr_node*>PyMem_Malloc(sizeof(cares.ares_addr_node) * length) - * if not c_servers: # <<<<<<<<<<<<<< - * raise MemoryError - * try: - */ - } - - /* "gevent/resolver/cares.pyx":340 - * if not c_servers: - * raise MemoryError - * try: # <<<<<<<<<<<<<< - * index = 0 - * for server in servers: - */ - /*try:*/ { - - /* "gevent/resolver/cares.pyx":341 - * raise MemoryError - * try: - * index = 0 # <<<<<<<<<<<<<< - * for server in servers: - * if isinstance(server, unicode): - */ - __pyx_v_index = 0; - - /* "gevent/resolver/cares.pyx":342 - * try: - * index = 0 - * for server in servers: # <<<<<<<<<<<<<< - * if isinstance(server, unicode): - * server = server.encode('ascii') - */ - if (likely(PyList_CheckExact(__pyx_v_servers)) || PyTuple_CheckExact(__pyx_v_servers)) { - __pyx_t_2 = __pyx_v_servers; __Pyx_INCREF(__pyx_t_2); __pyx_t_9 = 0; - __pyx_t_10 = NULL; - } else { - __pyx_t_9 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_servers); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 342, __pyx_L9_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_10 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 342, __pyx_L9_error) - } - for (;;) { - if (likely(!__pyx_t_10)) { - if (likely(PyList_CheckExact(__pyx_t_2))) { - if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_2)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_9); __Pyx_INCREF(__pyx_t_1); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 342, __pyx_L9_error) - #else - __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 342, __pyx_L9_error) - __Pyx_GOTREF(__pyx_t_1); - #endif - } else { - if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_2)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_9); __Pyx_INCREF(__pyx_t_1); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 342, __pyx_L9_error) - #else - __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 342, __pyx_L9_error) - __Pyx_GOTREF(__pyx_t_1); - #endif - } - } else { - __pyx_t_1 = __pyx_t_10(__pyx_t_2); - if (unlikely(!__pyx_t_1)) { - PyObject* exc_type = PyErr_Occurred(); - if (exc_type) { - if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 342, __pyx_L9_error) - } - break; - } - __Pyx_GOTREF(__pyx_t_1); - } - __Pyx_XDECREF_SET(__pyx_v_server, __pyx_t_1); - __pyx_t_1 = 0; - - /* "gevent/resolver/cares.pyx":343 - * index = 0 - * for server in servers: - * if isinstance(server, unicode): # <<<<<<<<<<<<<< - * server = server.encode('ascii') - * string = <char*?>server - */ - __pyx_t_6 = PyUnicode_Check(__pyx_v_server); - __pyx_t_8 = (__pyx_t_6 != 0); - if (__pyx_t_8) { - - /* "gevent/resolver/cares.pyx":344 - * for server in servers: - * if isinstance(server, unicode): - * server = server.encode('ascii') # <<<<<<<<<<<<<< - * string = <char*?>server - * if cares.ares_inet_pton(AF_INET, string, &c_servers[index].addr) > 0: - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_server, __pyx_n_s_encode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 344, __pyx_L9_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 344, __pyx_L9_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF_SET(__pyx_v_server, __pyx_t_4); - __pyx_t_4 = 0; - - /* "gevent/resolver/cares.pyx":343 - * index = 0 - * for server in servers: - * if isinstance(server, unicode): # <<<<<<<<<<<<<< - * server = server.encode('ascii') - * string = <char*?>server - */ - } - - /* "gevent/resolver/cares.pyx":345 - * if isinstance(server, unicode): - * server = server.encode('ascii') - * string = <char*?>server # <<<<<<<<<<<<<< - * if cares.ares_inet_pton(AF_INET, string, &c_servers[index].addr) > 0: - * c_servers[index].family = AF_INET - */ - __pyx_t_11 = __Pyx_PyObject_AsWritableString(__pyx_v_server); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) __PYX_ERR(0, 345, __pyx_L9_error) - __pyx_v_string = ((char *)__pyx_t_11); - - /* "gevent/resolver/cares.pyx":346 - * server = server.encode('ascii') - * string = <char*?>server - * if cares.ares_inet_pton(AF_INET, string, &c_servers[index].addr) > 0: # <<<<<<<<<<<<<< - * c_servers[index].family = AF_INET - * elif cares.ares_inet_pton(AF_INET6, string, &c_servers[index].addr) > 0: - */ - __pyx_t_8 = ((ares_inet_pton(AF_INET, __pyx_v_string, (&(__pyx_v_c_servers[__pyx_v_index]).addr)) > 0) != 0); - if (__pyx_t_8) { - - /* "gevent/resolver/cares.pyx":347 - * string = <char*?>server - * if cares.ares_inet_pton(AF_INET, string, &c_servers[index].addr) > 0: - * c_servers[index].family = AF_INET # <<<<<<<<<<<<<< - * elif cares.ares_inet_pton(AF_INET6, string, &c_servers[index].addr) > 0: - * c_servers[index].family = AF_INET6 - */ - (__pyx_v_c_servers[__pyx_v_index]).family = AF_INET; - - /* "gevent/resolver/cares.pyx":346 - * server = server.encode('ascii') - * string = <char*?>server - * if cares.ares_inet_pton(AF_INET, string, &c_servers[index].addr) > 0: # <<<<<<<<<<<<<< - * c_servers[index].family = AF_INET - * elif cares.ares_inet_pton(AF_INET6, string, &c_servers[index].addr) > 0: - */ - goto __pyx_L14; - } - - /* "gevent/resolver/cares.pyx":348 - * if cares.ares_inet_pton(AF_INET, string, &c_servers[index].addr) > 0: - * c_servers[index].family = AF_INET - * elif cares.ares_inet_pton(AF_INET6, string, &c_servers[index].addr) > 0: # <<<<<<<<<<<<<< - * c_servers[index].family = AF_INET6 - * else: - */ - __pyx_t_8 = ((ares_inet_pton(AF_INET6, __pyx_v_string, (&(__pyx_v_c_servers[__pyx_v_index]).addr)) > 0) != 0); - if (likely(__pyx_t_8)) { - - /* "gevent/resolver/cares.pyx":349 - * c_servers[index].family = AF_INET - * elif cares.ares_inet_pton(AF_INET6, string, &c_servers[index].addr) > 0: - * c_servers[index].family = AF_INET6 # <<<<<<<<<<<<<< - * else: - * raise InvalidIP(repr(string)) - */ - (__pyx_v_c_servers[__pyx_v_index]).family = AF_INET6; - - /* "gevent/resolver/cares.pyx":348 - * if cares.ares_inet_pton(AF_INET, string, &c_servers[index].addr) > 0: - * c_servers[index].family = AF_INET - * elif cares.ares_inet_pton(AF_INET6, string, &c_servers[index].addr) > 0: # <<<<<<<<<<<<<< - * c_servers[index].family = AF_INET6 - * else: - */ - goto __pyx_L14; - } - - /* "gevent/resolver/cares.pyx":351 - * c_servers[index].family = AF_INET6 - * else: - * raise InvalidIP(repr(string)) # <<<<<<<<<<<<<< - * c_servers[index].next = &c_servers[index] + 1 - * index += 1 - */ - /*else*/ { - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_InvalidIP); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 351, __pyx_L9_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_string); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 351, __pyx_L9_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = PyObject_Repr(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 351, __pyx_L9_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - } - } - if (!__pyx_t_3) { - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 351, __pyx_L9_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_4); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_1)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_5}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 351, __pyx_L9_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { - PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_5}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 351, __pyx_L9_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else - #endif - { - __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 351, __pyx_L9_error) - __Pyx_GOTREF(__pyx_t_12); - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_3); __pyx_t_3 = NULL; - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_5); - __pyx_t_5 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_12, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 351, __pyx_L9_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - } - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_Raise(__pyx_t_4, 0, 0, 0); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __PYX_ERR(0, 351, __pyx_L9_error) - } - __pyx_L14:; - - /* "gevent/resolver/cares.pyx":352 - * else: - * raise InvalidIP(repr(string)) - * c_servers[index].next = &c_servers[index] + 1 # <<<<<<<<<<<<<< - * index += 1 - * if index >= length: - */ - (__pyx_v_c_servers[__pyx_v_index]).next = ((&(__pyx_v_c_servers[__pyx_v_index])) + 1); - - /* "gevent/resolver/cares.pyx":353 - * raise InvalidIP(repr(string)) - * c_servers[index].next = &c_servers[index] + 1 - * index += 1 # <<<<<<<<<<<<<< - * if index >= length: - * break - */ - __pyx_v_index = (__pyx_v_index + 1); - - /* "gevent/resolver/cares.pyx":354 - * c_servers[index].next = &c_servers[index] + 1 - * index += 1 - * if index >= length: # <<<<<<<<<<<<<< - * break - * c_servers[length - 1].next = NULL - */ - __pyx_t_8 = ((__pyx_v_index >= __pyx_v_length) != 0); - if (__pyx_t_8) { - - /* "gevent/resolver/cares.pyx":355 - * index += 1 - * if index >= length: - * break # <<<<<<<<<<<<<< - * c_servers[length - 1].next = NULL - * index = cares.ares_set_servers(self.channel, c_servers) - */ - goto __pyx_L12_break; - - /* "gevent/resolver/cares.pyx":354 - * c_servers[index].next = &c_servers[index] + 1 - * index += 1 - * if index >= length: # <<<<<<<<<<<<<< - * break - * c_servers[length - 1].next = NULL - */ - } - - /* "gevent/resolver/cares.pyx":342 - * try: - * index = 0 - * for server in servers: # <<<<<<<<<<<<<< - * if isinstance(server, unicode): - * server = server.encode('ascii') - */ - } - __pyx_L12_break:; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":356 - * if index >= length: - * break - * c_servers[length - 1].next = NULL # <<<<<<<<<<<<<< - * index = cares.ares_set_servers(self.channel, c_servers) - * if index: - */ - (__pyx_v_c_servers[(__pyx_v_length - 1)]).next = NULL; - - /* "gevent/resolver/cares.pyx":357 - * break - * c_servers[length - 1].next = NULL - * index = cares.ares_set_servers(self.channel, c_servers) # <<<<<<<<<<<<<< - * if index: - * raise ValueError(strerror(index)) - */ - __pyx_v_index = ares_set_servers(__pyx_v_self->channel, __pyx_v_c_servers); - - /* "gevent/resolver/cares.pyx":358 - * c_servers[length - 1].next = NULL - * index = cares.ares_set_servers(self.channel, c_servers) - * if index: # <<<<<<<<<<<<<< - * raise ValueError(strerror(index)) - * finally: - */ - __pyx_t_8 = (__pyx_v_index != 0); - if (unlikely(__pyx_t_8)) { - - /* "gevent/resolver/cares.pyx":359 - * index = cares.ares_set_servers(self.channel, c_servers) - * if index: - * raise ValueError(strerror(index)) # <<<<<<<<<<<<<< - * finally: - * PyMem_Free(c_servers) - */ - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 359, __pyx_L9_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __pyx_f_6gevent_8resolver_5cares_strerror(__pyx_t_2, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 359, __pyx_L9_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 359, __pyx_L9_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 359, __pyx_L9_error) - - /* "gevent/resolver/cares.pyx":358 - * c_servers[length - 1].next = NULL - * index = cares.ares_set_servers(self.channel, c_servers) - * if index: # <<<<<<<<<<<<<< - * raise ValueError(strerror(index)) - * finally: - */ - } - } - - /* "gevent/resolver/cares.pyx":361 - * raise ValueError(strerror(index)) - * finally: - * PyMem_Free(c_servers) # <<<<<<<<<<<<<< - * - * # this crashes c-ares - */ - /*finally:*/ { - /*normal exit:*/{ - PyMem_Free(__pyx_v_c_servers); - goto __pyx_L10; - } - __pyx_L9_error:; - /*exception exit:*/{ - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20); - if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17) < 0)) __Pyx_ErrFetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17); - __Pyx_XGOTREF(__pyx_t_15); - __Pyx_XGOTREF(__pyx_t_16); - __Pyx_XGOTREF(__pyx_t_17); - __Pyx_XGOTREF(__pyx_t_18); - __Pyx_XGOTREF(__pyx_t_19); - __Pyx_XGOTREF(__pyx_t_20); - __pyx_t_7 = __pyx_lineno; __pyx_t_13 = __pyx_clineno; __pyx_t_14 = __pyx_filename; - { - PyMem_Free(__pyx_v_c_servers); - } - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_18); - __Pyx_XGIVEREF(__pyx_t_19); - __Pyx_XGIVEREF(__pyx_t_20); - __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20); - } - __Pyx_XGIVEREF(__pyx_t_15); - __Pyx_XGIVEREF(__pyx_t_16); - __Pyx_XGIVEREF(__pyx_t_17); - __Pyx_ErrRestore(__pyx_t_15, __pyx_t_16, __pyx_t_17); - __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; - __pyx_lineno = __pyx_t_7; __pyx_clineno = __pyx_t_13; __pyx_filename = __pyx_t_14; - goto __pyx_L1_error; - } - __pyx_L10:; - } - } - __pyx_L6:; - - /* "gevent/resolver/cares.pyx":323 - * self.channel = NULL - * - * cpdef set_servers(self, servers=None): # <<<<<<<<<<<<<< - * if not self.channel: - * raise gaierror(cares.ARES_EDESTRUCTION, 'this ares channel has been destroyed') - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_12); - __Pyx_AddTraceback("gevent.resolver.cares.channel.set_servers", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_server); - __Pyx_XDECREF(__pyx_v_servers); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_7channel_9set_servers(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_7channel_9set_servers(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_servers = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("set_servers (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_servers,0}; - PyObject* values[1] = {0}; - values[0] = ((PyObject *)Py_None); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_servers); - if (value) { values[0] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_servers") < 0)) __PYX_ERR(0, 323, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_servers = values[0]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("set_servers", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 323, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.resolver.cares.channel.set_servers", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_8resolver_5cares_7channel_8set_servers(((struct __pyx_obj_6gevent_8resolver_5cares_channel *)__pyx_v_self), __pyx_v_servers); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8resolver_5cares_7channel_8set_servers(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self, PyObject *__pyx_v_servers) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - struct __pyx_opt_args_6gevent_8resolver_5cares_7channel_set_servers __pyx_t_2; - __Pyx_RefNannySetupContext("set_servers", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_2.__pyx_n = 1; - __pyx_t_2.servers = __pyx_v_servers; - __pyx_t_1 = __pyx_vtabptr_6gevent_8resolver_5cares_channel->set_servers(__pyx_v_self, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 323, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.resolver.cares.channel.set_servers", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/resolver/cares.pyx":367 - * # cares.ares_cancel(self.channel) - * - * cdef _sock_state_callback(self, int socket, int read, int write): # <<<<<<<<<<<<<< - * if not self.channel: - * return - */ - -static PyObject *__pyx_f_6gevent_8resolver_5cares_7channel__sock_state_callback(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self, int __pyx_v_socket, int __pyx_v_read, int __pyx_v_write) { - PyObject *__pyx_v_watcher = 0; - int __pyx_v_events; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - int __pyx_t_8; - PyObject *__pyx_t_9 = NULL; - __Pyx_RefNannySetupContext("_sock_state_callback", 0); - - /* "gevent/resolver/cares.pyx":368 - * - * cdef _sock_state_callback(self, int socket, int read, int write): - * if not self.channel: # <<<<<<<<<<<<<< - * return - * cdef object watcher = self._watchers.get(socket) - */ - __pyx_t_1 = ((!(__pyx_v_self->channel != 0)) != 0); - if (__pyx_t_1) { - - /* "gevent/resolver/cares.pyx":369 - * cdef _sock_state_callback(self, int socket, int read, int write): - * if not self.channel: - * return # <<<<<<<<<<<<<< - * cdef object watcher = self._watchers.get(socket) - * cdef int events = 0 - */ - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - /* "gevent/resolver/cares.pyx":368 - * - * cdef _sock_state_callback(self, int socket, int read, int write): - * if not self.channel: # <<<<<<<<<<<<<< - * return - * cdef object watcher = self._watchers.get(socket) - */ - } - - /* "gevent/resolver/cares.pyx":370 - * if not self.channel: - * return - * cdef object watcher = self._watchers.get(socket) # <<<<<<<<<<<<<< - * cdef int events = 0 - * if read: - */ - if (unlikely(__pyx_v_self->_watchers == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get"); - __PYX_ERR(0, 370, __pyx_L1_error) - } - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_socket); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 370, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyDict_GetItemDefault(__pyx_v_self->_watchers, __pyx_t_2, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 370, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_watcher = __pyx_t_3; - __pyx_t_3 = 0; - - /* "gevent/resolver/cares.pyx":371 - * return - * cdef object watcher = self._watchers.get(socket) - * cdef int events = 0 # <<<<<<<<<<<<<< - * if read: - * events |= EV_READ - */ - __pyx_v_events = 0; - - /* "gevent/resolver/cares.pyx":372 - * cdef object watcher = self._watchers.get(socket) - * cdef int events = 0 - * if read: # <<<<<<<<<<<<<< - * events |= EV_READ - * if write: - */ - __pyx_t_1 = (__pyx_v_read != 0); - if (__pyx_t_1) { - - /* "gevent/resolver/cares.pyx":373 - * cdef int events = 0 - * if read: - * events |= EV_READ # <<<<<<<<<<<<<< - * if write: - * events |= EV_WRITE - */ - __pyx_v_events = (__pyx_v_events | 1); - - /* "gevent/resolver/cares.pyx":372 - * cdef object watcher = self._watchers.get(socket) - * cdef int events = 0 - * if read: # <<<<<<<<<<<<<< - * events |= EV_READ - * if write: - */ - } - - /* "gevent/resolver/cares.pyx":374 - * if read: - * events |= EV_READ - * if write: # <<<<<<<<<<<<<< - * events |= EV_WRITE - * if watcher is None: - */ - __pyx_t_1 = (__pyx_v_write != 0); - if (__pyx_t_1) { - - /* "gevent/resolver/cares.pyx":375 - * events |= EV_READ - * if write: - * events |= EV_WRITE # <<<<<<<<<<<<<< - * if watcher is None: - * if not events: - */ - __pyx_v_events = (__pyx_v_events | 2); - - /* "gevent/resolver/cares.pyx":374 - * if read: - * events |= EV_READ - * if write: # <<<<<<<<<<<<<< - * events |= EV_WRITE - * if watcher is None: - */ - } - - /* "gevent/resolver/cares.pyx":376 - * if write: - * events |= EV_WRITE - * if watcher is None: # <<<<<<<<<<<<<< - * if not events: - * return - */ - __pyx_t_1 = (__pyx_v_watcher == Py_None); - __pyx_t_4 = (__pyx_t_1 != 0); - if (__pyx_t_4) { - - /* "gevent/resolver/cares.pyx":377 - * events |= EV_WRITE - * if watcher is None: - * if not events: # <<<<<<<<<<<<<< - * return - * watcher = self.loop.io(socket, events) - */ - __pyx_t_4 = ((!(__pyx_v_events != 0)) != 0); - if (__pyx_t_4) { - - /* "gevent/resolver/cares.pyx":378 - * if watcher is None: - * if not events: - * return # <<<<<<<<<<<<<< - * watcher = self.loop.io(socket, events) - * self._watchers[socket] = watcher - */ - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - /* "gevent/resolver/cares.pyx":377 - * events |= EV_WRITE - * if watcher is None: - * if not events: # <<<<<<<<<<<<<< - * return - * watcher = self.loop.io(socket, events) - */ - } - - /* "gevent/resolver/cares.pyx":379 - * if not events: - * return - * watcher = self.loop.io(socket, events) # <<<<<<<<<<<<<< - * self._watchers[socket] = watcher - * elif events: - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->loop, __pyx_n_s_io); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 379, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_socket); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 379, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_events); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 379, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = NULL; - __pyx_t_8 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_7); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_8 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_5, __pyx_t_6}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 379, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_5, __pyx_t_6}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 379, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } else - #endif - { - __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 379, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - if (__pyx_t_7) { - __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; - } - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_5); - __Pyx_GIVEREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_6); - __pyx_t_5 = 0; - __pyx_t_6 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 379, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF_SET(__pyx_v_watcher, __pyx_t_3); - __pyx_t_3 = 0; - - /* "gevent/resolver/cares.pyx":380 - * return - * watcher = self.loop.io(socket, events) - * self._watchers[socket] = watcher # <<<<<<<<<<<<<< - * elif events: - * if watcher.events == events: - */ - if (unlikely(__pyx_v_self->_watchers == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 380, __pyx_L1_error) - } - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_socket); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 380, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (unlikely(PyDict_SetItem(__pyx_v_self->_watchers, __pyx_t_3, __pyx_v_watcher) < 0)) __PYX_ERR(0, 380, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "gevent/resolver/cares.pyx":376 - * if write: - * events |= EV_WRITE - * if watcher is None: # <<<<<<<<<<<<<< - * if not events: - * return - */ - goto __pyx_L6; - } - - /* "gevent/resolver/cares.pyx":381 - * watcher = self.loop.io(socket, events) - * self._watchers[socket] = watcher - * elif events: # <<<<<<<<<<<<<< - * if watcher.events == events: - * return - */ - __pyx_t_4 = (__pyx_v_events != 0); - if (__pyx_t_4) { - - /* "gevent/resolver/cares.pyx":382 - * self._watchers[socket] = watcher - * elif events: - * if watcher.events == events: # <<<<<<<<<<<<<< - * return - * watcher.stop() - */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_watcher, __pyx_n_s_events); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 382, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_events); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 382, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_9 = PyObject_RichCompare(__pyx_t_3, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 382, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 382, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - if (__pyx_t_4) { - - /* "gevent/resolver/cares.pyx":383 - * elif events: - * if watcher.events == events: - * return # <<<<<<<<<<<<<< - * watcher.stop() - * watcher.events = events - */ - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - /* "gevent/resolver/cares.pyx":382 - * self._watchers[socket] = watcher - * elif events: - * if watcher.events == events: # <<<<<<<<<<<<<< - * return - * watcher.stop() - */ - } - - /* "gevent/resolver/cares.pyx":384 - * if watcher.events == events: - * return - * watcher.stop() # <<<<<<<<<<<<<< - * watcher.events = events - * else: - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_watcher, __pyx_n_s_stop); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 384, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 384, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_9 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 384, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - - /* "gevent/resolver/cares.pyx":385 - * return - * watcher.stop() - * watcher.events = events # <<<<<<<<<<<<<< - * else: - * watcher.stop() - */ - __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_v_events); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 385, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - if (__Pyx_PyObject_SetAttrStr(__pyx_v_watcher, __pyx_n_s_events, __pyx_t_9) < 0) __PYX_ERR(0, 385, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - - /* "gevent/resolver/cares.pyx":381 - * watcher = self.loop.io(socket, events) - * self._watchers[socket] = watcher - * elif events: # <<<<<<<<<<<<<< - * if watcher.events == events: - * return - */ - goto __pyx_L6; - } - - /* "gevent/resolver/cares.pyx":387 - * watcher.events = events - * else: - * watcher.stop() # <<<<<<<<<<<<<< - * watcher.close() - * self._watchers.pop(socket, None) - */ - /*else*/ { - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_watcher, __pyx_n_s_stop); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 387, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 387, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_9 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 387, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - - /* "gevent/resolver/cares.pyx":388 - * else: - * watcher.stop() - * watcher.close() # <<<<<<<<<<<<<< - * self._watchers.pop(socket, None) - * if not self._watchers: - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_watcher, __pyx_n_s_close); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 388, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (__pyx_t_3) { - __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 388, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_9 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 388, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - - /* "gevent/resolver/cares.pyx":389 - * watcher.stop() - * watcher.close() - * self._watchers.pop(socket, None) # <<<<<<<<<<<<<< - * if not self._watchers: - * self._timer.stop() - */ - if (unlikely(__pyx_v_self->_watchers == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop"); - __PYX_ERR(0, 389, __pyx_L1_error) - } - __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_v_socket); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 389, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_2 = __Pyx_PyDict_Pop(__pyx_v_self->_watchers, __pyx_t_9, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 389, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":390 - * watcher.close() - * self._watchers.pop(socket, None) - * if not self._watchers: # <<<<<<<<<<<<<< - * self._timer.stop() - * return - */ - __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_self->_watchers); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 390, __pyx_L1_error) - __pyx_t_1 = ((!__pyx_t_4) != 0); - if (__pyx_t_1) { - - /* "gevent/resolver/cares.pyx":391 - * self._watchers.pop(socket, None) - * if not self._watchers: - * self._timer.stop() # <<<<<<<<<<<<<< - * return - * watcher.start(self._process_fd, watcher, pass_events=True) - */ - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_timer, __pyx_n_s_stop); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 391, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_9); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_9, function); - } - } - if (__pyx_t_3) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 391, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else { - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 391, __pyx_L1_error) - } - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":390 - * watcher.close() - * self._watchers.pop(socket, None) - * if not self._watchers: # <<<<<<<<<<<<<< - * self._timer.stop() - * return - */ - } - - /* "gevent/resolver/cares.pyx":392 - * if not self._watchers: - * self._timer.stop() - * return # <<<<<<<<<<<<<< - * watcher.start(self._process_fd, watcher, pass_events=True) - * self._timer.again(self._on_timer) - */ - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - } - __pyx_L6:; - - /* "gevent/resolver/cares.pyx":393 - * self._timer.stop() - * return - * watcher.start(self._process_fd, watcher, pass_events=True) # <<<<<<<<<<<<<< - * self._timer.again(self._on_timer) - * - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_watcher, __pyx_n_s_start); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 393, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_process_fd); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 393, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 393, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_9); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_9); - __Pyx_INCREF(__pyx_v_watcher); - __Pyx_GIVEREF(__pyx_v_watcher); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_watcher); - __pyx_t_9 = 0; - __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 393, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_pass_events, Py_True) < 0) __PYX_ERR(0, 393, __pyx_L1_error) - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 393, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - - /* "gevent/resolver/cares.pyx":394 - * return - * watcher.start(self._process_fd, watcher, pass_events=True) - * self._timer.again(self._on_timer) # <<<<<<<<<<<<<< - * - * def _on_timer(self): - */ - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_timer, __pyx_n_s_again); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 394, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_on_timer); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 394, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { - __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_9); - if (likely(__pyx_t_2)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); - __Pyx_INCREF(__pyx_t_2); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_9, function); - } - } - if (!__pyx_t_2) { - __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 394, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_6); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_9)) { - PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_3}; - __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 394, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) { - PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_3}; - __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 394, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 394, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL; - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3); - __pyx_t_3 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 394, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - } - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - - /* "gevent/resolver/cares.pyx":367 - * # cares.ares_cancel(self.channel) - * - * cdef _sock_state_callback(self, int socket, int read, int write): # <<<<<<<<<<<<<< - * if not self.channel: - * return - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_9); - __Pyx_AddTraceback("gevent.resolver.cares.channel._sock_state_callback", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_watcher); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/resolver/cares.pyx":396 - * self._timer.again(self._on_timer) - * - * def _on_timer(self): # <<<<<<<<<<<<<< - * cares.ares_process_fd(self.channel, cares.ARES_SOCKET_BAD, cares.ARES_SOCKET_BAD) - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_7channel_11_on_timer(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_7channel_11_on_timer(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_on_timer (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8resolver_5cares_7channel_10_on_timer(((struct __pyx_obj_6gevent_8resolver_5cares_channel *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8resolver_5cares_7channel_10_on_timer(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_on_timer", 0); - - /* "gevent/resolver/cares.pyx":397 - * - * def _on_timer(self): - * cares.ares_process_fd(self.channel, cares.ARES_SOCKET_BAD, cares.ARES_SOCKET_BAD) # <<<<<<<<<<<<<< - * - * def _process_fd(self, int events, object watcher): - */ - ares_process_fd(__pyx_v_self->channel, ARES_SOCKET_BAD, ARES_SOCKET_BAD); - - /* "gevent/resolver/cares.pyx":396 - * self._timer.again(self._on_timer) - * - * def _on_timer(self): # <<<<<<<<<<<<<< - * cares.ares_process_fd(self.channel, cares.ARES_SOCKET_BAD, cares.ARES_SOCKET_BAD) - * - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/resolver/cares.pyx":399 - * cares.ares_process_fd(self.channel, cares.ARES_SOCKET_BAD, cares.ARES_SOCKET_BAD) - * - * def _process_fd(self, int events, object watcher): # <<<<<<<<<<<<<< - * if not self.channel: - * return - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_7channel_13_process_fd(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_7channel_13_process_fd(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - int __pyx_v_events; - PyObject *__pyx_v_watcher = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_process_fd (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_events,&__pyx_n_s_watcher,0}; - PyObject* values[2] = {0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_events)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_watcher)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("_process_fd", 1, 2, 2, 1); __PYX_ERR(0, 399, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_process_fd") < 0)) __PYX_ERR(0, 399, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - } - __pyx_v_events = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_events == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 399, __pyx_L3_error) - __pyx_v_watcher = values[1]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("_process_fd", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 399, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.resolver.cares.channel._process_fd", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_8resolver_5cares_7channel_12_process_fd(((struct __pyx_obj_6gevent_8resolver_5cares_channel *)__pyx_v_self), __pyx_v_events, __pyx_v_watcher); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8resolver_5cares_7channel_12_process_fd(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self, int __pyx_v_events, PyObject *__pyx_v_watcher) { - int __pyx_v_read_fd; - int __pyx_v_write_fd; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - int __pyx_t_3; - __Pyx_RefNannySetupContext("_process_fd", 0); - - /* "gevent/resolver/cares.pyx":400 - * - * def _process_fd(self, int events, object watcher): - * if not self.channel: # <<<<<<<<<<<<<< - * return - * cdef int read_fd = watcher.fd - */ - __pyx_t_1 = ((!(__pyx_v_self->channel != 0)) != 0); - if (__pyx_t_1) { - - /* "gevent/resolver/cares.pyx":401 - * def _process_fd(self, int events, object watcher): - * if not self.channel: - * return # <<<<<<<<<<<<<< - * cdef int read_fd = watcher.fd - * cdef int write_fd = read_fd - */ - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - /* "gevent/resolver/cares.pyx":400 - * - * def _process_fd(self, int events, object watcher): - * if not self.channel: # <<<<<<<<<<<<<< - * return - * cdef int read_fd = watcher.fd - */ - } - - /* "gevent/resolver/cares.pyx":402 - * if not self.channel: - * return - * cdef int read_fd = watcher.fd # <<<<<<<<<<<<<< - * cdef int write_fd = read_fd - * if not (events & EV_READ): - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_watcher, __pyx_n_s_fd); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 402, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 402, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_read_fd = __pyx_t_3; - - /* "gevent/resolver/cares.pyx":403 - * return - * cdef int read_fd = watcher.fd - * cdef int write_fd = read_fd # <<<<<<<<<<<<<< - * if not (events & EV_READ): - * read_fd = cares.ARES_SOCKET_BAD - */ - __pyx_v_write_fd = __pyx_v_read_fd; - - /* "gevent/resolver/cares.pyx":404 - * cdef int read_fd = watcher.fd - * cdef int write_fd = read_fd - * if not (events & EV_READ): # <<<<<<<<<<<<<< - * read_fd = cares.ARES_SOCKET_BAD - * if not (events & EV_WRITE): - */ - __pyx_t_1 = ((!((__pyx_v_events & 1) != 0)) != 0); - if (__pyx_t_1) { - - /* "gevent/resolver/cares.pyx":405 - * cdef int write_fd = read_fd - * if not (events & EV_READ): - * read_fd = cares.ARES_SOCKET_BAD # <<<<<<<<<<<<<< - * if not (events & EV_WRITE): - * write_fd = cares.ARES_SOCKET_BAD - */ - __pyx_v_read_fd = ARES_SOCKET_BAD; - - /* "gevent/resolver/cares.pyx":404 - * cdef int read_fd = watcher.fd - * cdef int write_fd = read_fd - * if not (events & EV_READ): # <<<<<<<<<<<<<< - * read_fd = cares.ARES_SOCKET_BAD - * if not (events & EV_WRITE): - */ - } - - /* "gevent/resolver/cares.pyx":406 - * if not (events & EV_READ): - * read_fd = cares.ARES_SOCKET_BAD - * if not (events & EV_WRITE): # <<<<<<<<<<<<<< - * write_fd = cares.ARES_SOCKET_BAD - * cares.ares_process_fd(self.channel, read_fd, write_fd) - */ - __pyx_t_1 = ((!((__pyx_v_events & 2) != 0)) != 0); - if (__pyx_t_1) { - - /* "gevent/resolver/cares.pyx":407 - * read_fd = cares.ARES_SOCKET_BAD - * if not (events & EV_WRITE): - * write_fd = cares.ARES_SOCKET_BAD # <<<<<<<<<<<<<< - * cares.ares_process_fd(self.channel, read_fd, write_fd) - * - */ - __pyx_v_write_fd = ARES_SOCKET_BAD; - - /* "gevent/resolver/cares.pyx":406 - * if not (events & EV_READ): - * read_fd = cares.ARES_SOCKET_BAD - * if not (events & EV_WRITE): # <<<<<<<<<<<<<< - * write_fd = cares.ARES_SOCKET_BAD - * cares.ares_process_fd(self.channel, read_fd, write_fd) - */ - } - - /* "gevent/resolver/cares.pyx":408 - * if not (events & EV_WRITE): - * write_fd = cares.ARES_SOCKET_BAD - * cares.ares_process_fd(self.channel, read_fd, write_fd) # <<<<<<<<<<<<<< - * - * def gethostbyname(self, object callback, char* name, int family=AF_INET): - */ - ares_process_fd(__pyx_v_self->channel, __pyx_v_read_fd, __pyx_v_write_fd); - - /* "gevent/resolver/cares.pyx":399 - * cares.ares_process_fd(self.channel, cares.ARES_SOCKET_BAD, cares.ARES_SOCKET_BAD) - * - * def _process_fd(self, int events, object watcher): # <<<<<<<<<<<<<< - * if not self.channel: - * return - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("gevent.resolver.cares.channel._process_fd", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/resolver/cares.pyx":410 - * cares.ares_process_fd(self.channel, read_fd, write_fd) - * - * def gethostbyname(self, object callback, char* name, int family=AF_INET): # <<<<<<<<<<<<<< - * if not self.channel: - * raise gaierror(cares.ARES_EDESTRUCTION, 'this ares channel has been destroyed') - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_7channel_15gethostbyname(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_7channel_15gethostbyname(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_callback = 0; - char *__pyx_v_name; - int __pyx_v_family; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("gethostbyname (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback,&__pyx_n_s_name_2,&__pyx_n_s_family,0}; - PyObject* values[3] = {0,0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_name_2)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("gethostbyname", 0, 2, 3, 1); __PYX_ERR(0, 410, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_family); - if (value) { values[2] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "gethostbyname") < 0)) __PYX_ERR(0, 410, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_callback = values[0]; - __pyx_v_name = __Pyx_PyObject_AsWritableString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) __PYX_ERR(0, 410, __pyx_L3_error) - if (values[2]) { - __pyx_v_family = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_family == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 410, __pyx_L3_error) - } else { - __pyx_v_family = __pyx_k__5; - } - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("gethostbyname", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 410, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.resolver.cares.channel.gethostbyname", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_8resolver_5cares_7channel_14gethostbyname(((struct __pyx_obj_6gevent_8resolver_5cares_channel *)__pyx_v_self), __pyx_v_callback, __pyx_v_name, __pyx_v_family); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8resolver_5cares_7channel_14gethostbyname(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self, PyObject *__pyx_v_callback, char *__pyx_v_name, int __pyx_v_family) { - PyObject *__pyx_v_arg = 0; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - PyObject *__pyx_t_7 = NULL; - __Pyx_RefNannySetupContext("gethostbyname", 0); - - /* "gevent/resolver/cares.pyx":411 - * - * def gethostbyname(self, object callback, char* name, int family=AF_INET): - * if not self.channel: # <<<<<<<<<<<<<< - * raise gaierror(cares.ARES_EDESTRUCTION, 'this ares channel has been destroyed') - * # note that for file lookups still AF_INET can be returned for AF_INET6 request - */ - __pyx_t_1 = ((!(__pyx_v_self->channel != 0)) != 0); - if (unlikely(__pyx_t_1)) { - - /* "gevent/resolver/cares.pyx":412 - * def gethostbyname(self, object callback, char* name, int family=AF_INET): - * if not self.channel: - * raise gaierror(cares.ARES_EDESTRUCTION, 'this ares channel has been destroyed') # <<<<<<<<<<<<<< - * # note that for file lookups still AF_INET can be returned for AF_INET6 request - * cdef object arg = (self, callback) - */ - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_gaierror); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 412, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyInt_From_int(ARES_EDESTRUCTION); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 412, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - __pyx_t_6 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_6 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, __pyx_kp_s_this_ares_channel_has_been_destr}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 412, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, __pyx_kp_s_this_ares_channel_has_been_destr}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 412, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else - #endif - { - __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 412, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (__pyx_t_5) { - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; - } - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_4); - __Pyx_INCREF(__pyx_kp_s_this_ares_channel_has_been_destr); - __Pyx_GIVEREF(__pyx_kp_s_this_ares_channel_has_been_destr); - PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_kp_s_this_ares_channel_has_been_destr); - __pyx_t_4 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 412, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 412, __pyx_L1_error) - - /* "gevent/resolver/cares.pyx":411 - * - * def gethostbyname(self, object callback, char* name, int family=AF_INET): - * if not self.channel: # <<<<<<<<<<<<<< - * raise gaierror(cares.ARES_EDESTRUCTION, 'this ares channel has been destroyed') - * # note that for file lookups still AF_INET can be returned for AF_INET6 request - */ - } - - /* "gevent/resolver/cares.pyx":414 - * raise gaierror(cares.ARES_EDESTRUCTION, 'this ares channel has been destroyed') - * # note that for file lookups still AF_INET can be returned for AF_INET6 request - * cdef object arg = (self, callback) # <<<<<<<<<<<<<< - * Py_INCREF(arg) - * cares.ares_gethostbyname(self.channel, name, family, <void*>gevent_ares_host_callback, <void*>arg) - */ - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 414, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_self)); - __Pyx_INCREF(__pyx_v_callback); - __Pyx_GIVEREF(__pyx_v_callback); - PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_callback); - __pyx_v_arg = __pyx_t_2; - __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":415 - * # note that for file lookups still AF_INET can be returned for AF_INET6 request - * cdef object arg = (self, callback) - * Py_INCREF(arg) # <<<<<<<<<<<<<< - * cares.ares_gethostbyname(self.channel, name, family, <void*>gevent_ares_host_callback, <void*>arg) - * - */ - Py_INCREF(__pyx_v_arg); - - /* "gevent/resolver/cares.pyx":416 - * cdef object arg = (self, callback) - * Py_INCREF(arg) - * cares.ares_gethostbyname(self.channel, name, family, <void*>gevent_ares_host_callback, <void*>arg) # <<<<<<<<<<<<<< - * - * def gethostbyaddr(self, object callback, char* addr): - */ - ares_gethostbyname(__pyx_v_self->channel, __pyx_v_name, __pyx_v_family, ((void *)__pyx_f_6gevent_8resolver_5cares_gevent_ares_host_callback), ((void *)__pyx_v_arg)); - - /* "gevent/resolver/cares.pyx":410 - * cares.ares_process_fd(self.channel, read_fd, write_fd) - * - * def gethostbyname(self, object callback, char* name, int family=AF_INET): # <<<<<<<<<<<<<< - * if not self.channel: - * raise gaierror(cares.ARES_EDESTRUCTION, 'this ares channel has been destroyed') - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("gevent.resolver.cares.channel.gethostbyname", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_arg); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/resolver/cares.pyx":418 - * cares.ares_gethostbyname(self.channel, name, family, <void*>gevent_ares_host_callback, <void*>arg) - * - * def gethostbyaddr(self, object callback, char* addr): # <<<<<<<<<<<<<< - * if not self.channel: - * raise gaierror(cares.ARES_EDESTRUCTION, 'this ares channel has been destroyed') - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_7channel_17gethostbyaddr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_7channel_17gethostbyaddr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_callback = 0; - char *__pyx_v_addr; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("gethostbyaddr (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback,&__pyx_n_s_addr,0}; - PyObject* values[2] = {0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_addr)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("gethostbyaddr", 1, 2, 2, 1); __PYX_ERR(0, 418, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "gethostbyaddr") < 0)) __PYX_ERR(0, 418, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - } - __pyx_v_callback = values[0]; - __pyx_v_addr = __Pyx_PyObject_AsWritableString(values[1]); if (unlikely((!__pyx_v_addr) && PyErr_Occurred())) __PYX_ERR(0, 418, __pyx_L3_error) - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("gethostbyaddr", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 418, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.resolver.cares.channel.gethostbyaddr", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6gevent_8resolver_5cares_7channel_16gethostbyaddr(((struct __pyx_obj_6gevent_8resolver_5cares_channel *)__pyx_v_self), __pyx_v_callback, __pyx_v_addr); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8resolver_5cares_7channel_16gethostbyaddr(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self, PyObject *__pyx_v_callback, char *__pyx_v_addr) { - char __pyx_v_addr_packed[16]; - int __pyx_v_family; - int __pyx_v_length; - PyObject *__pyx_v_arg = 0; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - PyObject *__pyx_t_7 = NULL; - __Pyx_RefNannySetupContext("gethostbyaddr", 0); - - /* "gevent/resolver/cares.pyx":419 - * - * def gethostbyaddr(self, object callback, char* addr): - * if not self.channel: # <<<<<<<<<<<<<< - * raise gaierror(cares.ARES_EDESTRUCTION, 'this ares channel has been destroyed') - * # will guess the family - */ - __pyx_t_1 = ((!(__pyx_v_self->channel != 0)) != 0); - if (unlikely(__pyx_t_1)) { - - /* "gevent/resolver/cares.pyx":420 - * def gethostbyaddr(self, object callback, char* addr): - * if not self.channel: - * raise gaierror(cares.ARES_EDESTRUCTION, 'this ares channel has been destroyed') # <<<<<<<<<<<<<< - * # will guess the family - * cdef char addr_packed[16] - */ - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_gaierror); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 420, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyInt_From_int(ARES_EDESTRUCTION); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 420, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - __pyx_t_6 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_6 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, __pyx_kp_s_this_ares_channel_has_been_destr}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 420, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, __pyx_kp_s_this_ares_channel_has_been_destr}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 420, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else - #endif - { - __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 420, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (__pyx_t_5) { - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; - } - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_4); - __Pyx_INCREF(__pyx_kp_s_this_ares_channel_has_been_destr); - __Pyx_GIVEREF(__pyx_kp_s_this_ares_channel_has_been_destr); - PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_kp_s_this_ares_channel_has_been_destr); - __pyx_t_4 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 420, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 420, __pyx_L1_error) - - /* "gevent/resolver/cares.pyx":419 - * - * def gethostbyaddr(self, object callback, char* addr): - * if not self.channel: # <<<<<<<<<<<<<< - * raise gaierror(cares.ARES_EDESTRUCTION, 'this ares channel has been destroyed') - * # will guess the family - */ - } - - /* "gevent/resolver/cares.pyx":425 - * cdef int family - * cdef int length - * if cares.ares_inet_pton(AF_INET, addr, addr_packed) > 0: # <<<<<<<<<<<<<< - * family = AF_INET - * length = 4 - */ - __pyx_t_1 = ((ares_inet_pton(AF_INET, __pyx_v_addr, __pyx_v_addr_packed) > 0) != 0); - if (__pyx_t_1) { - - /* "gevent/resolver/cares.pyx":426 - * cdef int length - * if cares.ares_inet_pton(AF_INET, addr, addr_packed) > 0: - * family = AF_INET # <<<<<<<<<<<<<< - * length = 4 - * elif cares.ares_inet_pton(AF_INET6, addr, addr_packed) > 0: - */ - __pyx_v_family = AF_INET; - - /* "gevent/resolver/cares.pyx":427 - * if cares.ares_inet_pton(AF_INET, addr, addr_packed) > 0: - * family = AF_INET - * length = 4 # <<<<<<<<<<<<<< - * elif cares.ares_inet_pton(AF_INET6, addr, addr_packed) > 0: - * family = AF_INET6 - */ - __pyx_v_length = 4; - - /* "gevent/resolver/cares.pyx":425 - * cdef int family - * cdef int length - * if cares.ares_inet_pton(AF_INET, addr, addr_packed) > 0: # <<<<<<<<<<<<<< - * family = AF_INET - * length = 4 - */ - goto __pyx_L4; - } - - /* "gevent/resolver/cares.pyx":428 - * family = AF_INET - * length = 4 - * elif cares.ares_inet_pton(AF_INET6, addr, addr_packed) > 0: # <<<<<<<<<<<<<< - * family = AF_INET6 - * length = 16 - */ - __pyx_t_1 = ((ares_inet_pton(AF_INET6, __pyx_v_addr, __pyx_v_addr_packed) > 0) != 0); - if (likely(__pyx_t_1)) { - - /* "gevent/resolver/cares.pyx":429 - * length = 4 - * elif cares.ares_inet_pton(AF_INET6, addr, addr_packed) > 0: - * family = AF_INET6 # <<<<<<<<<<<<<< - * length = 16 - * else: - */ - __pyx_v_family = AF_INET6; - - /* "gevent/resolver/cares.pyx":430 - * elif cares.ares_inet_pton(AF_INET6, addr, addr_packed) > 0: - * family = AF_INET6 - * length = 16 # <<<<<<<<<<<<<< - * else: - * raise InvalidIP(repr(addr)) - */ - __pyx_v_length = 16; - - /* "gevent/resolver/cares.pyx":428 - * family = AF_INET - * length = 4 - * elif cares.ares_inet_pton(AF_INET6, addr, addr_packed) > 0: # <<<<<<<<<<<<<< - * family = AF_INET6 - * length = 16 - */ - goto __pyx_L4; - } - - /* "gevent/resolver/cares.pyx":432 - * length = 16 - * else: - * raise InvalidIP(repr(addr)) # <<<<<<<<<<<<<< - * cdef object arg = (self, callback) - * Py_INCREF(arg) - */ - /*else*/ { - __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_InvalidIP); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 432, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_7 = __Pyx_PyBytes_FromString(__pyx_v_addr); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 432, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_4 = PyObject_Repr(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 432, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_7); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - if (!__pyx_t_7) { - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 432, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_2); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_4}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 432, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_4}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 432, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else - #endif - { - __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 432, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __pyx_t_7 = NULL; - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4); - __pyx_t_4 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 432, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 432, __pyx_L1_error) - } - __pyx_L4:; - - /* "gevent/resolver/cares.pyx":433 - * else: - * raise InvalidIP(repr(addr)) - * cdef object arg = (self, callback) # <<<<<<<<<<<<<< - * Py_INCREF(arg) - * cares.ares_gethostbyaddr(self.channel, addr_packed, length, family, <void*>gevent_ares_host_callback, <void*>arg) - */ - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 433, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_self)); - __Pyx_INCREF(__pyx_v_callback); - __Pyx_GIVEREF(__pyx_v_callback); - PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_callback); - __pyx_v_arg = __pyx_t_2; - __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":434 - * raise InvalidIP(repr(addr)) - * cdef object arg = (self, callback) - * Py_INCREF(arg) # <<<<<<<<<<<<<< - * cares.ares_gethostbyaddr(self.channel, addr_packed, length, family, <void*>gevent_ares_host_callback, <void*>arg) - * - */ - Py_INCREF(__pyx_v_arg); - - /* "gevent/resolver/cares.pyx":435 - * cdef object arg = (self, callback) - * Py_INCREF(arg) - * cares.ares_gethostbyaddr(self.channel, addr_packed, length, family, <void*>gevent_ares_host_callback, <void*>arg) # <<<<<<<<<<<<<< - * - * cpdef _getnameinfo(self, object callback, tuple sockaddr, int flags): - */ - ares_gethostbyaddr(__pyx_v_self->channel, __pyx_v_addr_packed, __pyx_v_length, __pyx_v_family, ((void *)__pyx_f_6gevent_8resolver_5cares_gevent_ares_host_callback), ((void *)__pyx_v_arg)); - - /* "gevent/resolver/cares.pyx":418 - * cares.ares_gethostbyname(self.channel, name, family, <void*>gevent_ares_host_callback, <void*>arg) - * - * def gethostbyaddr(self, object callback, char* addr): # <<<<<<<<<<<<<< - * if not self.channel: - * raise gaierror(cares.ARES_EDESTRUCTION, 'this ares channel has been destroyed') - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("gevent.resolver.cares.channel.gethostbyaddr", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_arg); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/resolver/cares.pyx":437 - * cares.ares_gethostbyaddr(self.channel, addr_packed, length, family, <void*>gevent_ares_host_callback, <void*>arg) - * - * cpdef _getnameinfo(self, object callback, tuple sockaddr, int flags): # <<<<<<<<<<<<<< - * if not self.channel: - * raise gaierror(cares.ARES_EDESTRUCTION, 'this ares channel has been destroyed') - */ - -static PyObject *__pyx_pw_6gevent_8resolver_5cares_7channel_19_getnameinfo(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_f_6gevent_8resolver_5cares_7channel__getnameinfo(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self, PyObject *__pyx_v_callback, PyObject *__pyx_v_sockaddr, int __pyx_v_flags, int __pyx_skip_dispatch) { - char *__pyx_v_hostp; - int __pyx_v_port; - int __pyx_v_flowinfo; - int __pyx_v_scope_id; - struct sockaddr_in6 __pyx_v_sa6; - int __pyx_v_length; - PyObject *__pyx_v_arg = 0; - struct sockaddr *__pyx_v_x; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - PyObject *__pyx_t_7 = NULL; - int __pyx_t_8; - int __pyx_t_9; - __Pyx_RefNannySetupContext("_getnameinfo", 0); - /* Check if called by wrapper */ - if (unlikely(__pyx_skip_dispatch)) ; - /* Check if overridden in Python */ - else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) { - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getnameinfo); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 437, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_6gevent_8resolver_5cares_7channel_19_getnameinfo)) { - __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 437, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_4 = __pyx_t_1; __pyx_t_5 = NULL; - __pyx_t_6 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - __pyx_t_6 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_v_callback, __pyx_v_sockaddr, __pyx_t_3}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 437, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_v_callback, __pyx_v_sockaddr, __pyx_t_3}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 437, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - { - __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 437, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (__pyx_t_5) { - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; - } - __Pyx_INCREF(__pyx_v_callback); - __Pyx_GIVEREF(__pyx_v_callback); - PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_callback); - __Pyx_INCREF(__pyx_v_sockaddr); - __Pyx_GIVEREF(__pyx_v_sockaddr); - PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_sockaddr); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_t_3); - __pyx_t_3 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 437, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "gevent/resolver/cares.pyx":438 - * - * cpdef _getnameinfo(self, object callback, tuple sockaddr, int flags): - * if not self.channel: # <<<<<<<<<<<<<< - * raise gaierror(cares.ARES_EDESTRUCTION, 'this ares channel has been destroyed') - * cdef char* hostp = NULL - */ - __pyx_t_8 = ((!(__pyx_v_self->channel != 0)) != 0); - if (unlikely(__pyx_t_8)) { - - /* "gevent/resolver/cares.pyx":439 - * cpdef _getnameinfo(self, object callback, tuple sockaddr, int flags): - * if not self.channel: - * raise gaierror(cares.ARES_EDESTRUCTION, 'this ares channel has been destroyed') # <<<<<<<<<<<<<< - * cdef char* hostp = NULL - * cdef int port = 0 - */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_gaierror); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 439, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_PyInt_From_int(ARES_EDESTRUCTION); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 439, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_7 = NULL; - __pyx_t_6 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_7); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_6 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_4, __pyx_kp_s_this_ares_channel_has_been_destr}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 439, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_4, __pyx_kp_s_this_ares_channel_has_been_destr}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 439, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else - #endif - { - __pyx_t_3 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 439, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (__pyx_t_7) { - __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7); __pyx_t_7 = NULL; - } - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_6, __pyx_t_4); - __Pyx_INCREF(__pyx_kp_s_this_ares_channel_has_been_destr); - __Pyx_GIVEREF(__pyx_kp_s_this_ares_channel_has_been_destr); - PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_6, __pyx_kp_s_this_ares_channel_has_been_destr); - __pyx_t_4 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 439, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 439, __pyx_L1_error) - - /* "gevent/resolver/cares.pyx":438 - * - * cpdef _getnameinfo(self, object callback, tuple sockaddr, int flags): - * if not self.channel: # <<<<<<<<<<<<<< - * raise gaierror(cares.ARES_EDESTRUCTION, 'this ares channel has been destroyed') - * cdef char* hostp = NULL - */ - } - - /* "gevent/resolver/cares.pyx":440 - * if not self.channel: - * raise gaierror(cares.ARES_EDESTRUCTION, 'this ares channel has been destroyed') - * cdef char* hostp = NULL # <<<<<<<<<<<<<< - * cdef int port = 0 - * cdef int flowinfo = 0 - */ - __pyx_v_hostp = NULL; - - /* "gevent/resolver/cares.pyx":441 - * raise gaierror(cares.ARES_EDESTRUCTION, 'this ares channel has been destroyed') - * cdef char* hostp = NULL - * cdef int port = 0 # <<<<<<<<<<<<<< - * cdef int flowinfo = 0 - * cdef int scope_id = 0 - */ - __pyx_v_port = 0; - - /* "gevent/resolver/cares.pyx":442 - * cdef char* hostp = NULL - * cdef int port = 0 - * cdef int flowinfo = 0 # <<<<<<<<<<<<<< - * cdef int scope_id = 0 - * cdef sockaddr_in6 sa6 - */ - __pyx_v_flowinfo = 0; - - /* "gevent/resolver/cares.pyx":443 - * cdef int port = 0 - * cdef int flowinfo = 0 - * cdef int scope_id = 0 # <<<<<<<<<<<<<< - * cdef sockaddr_in6 sa6 - * if not PyTuple_Check(sockaddr): - */ - __pyx_v_scope_id = 0; - - /* "gevent/resolver/cares.pyx":445 - * cdef int scope_id = 0 - * cdef sockaddr_in6 sa6 - * if not PyTuple_Check(sockaddr): # <<<<<<<<<<<<<< - * raise TypeError('expected a tuple, got %r' % (sockaddr, )) - * PyArg_ParseTuple(sockaddr, "si|ii", &hostp, &port, &flowinfo, &scope_id) - */ - __pyx_t_8 = ((!(PyTuple_Check(__pyx_v_sockaddr) != 0)) != 0); - if (unlikely(__pyx_t_8)) { - - /* "gevent/resolver/cares.pyx":446 - * cdef sockaddr_in6 sa6 - * if not PyTuple_Check(sockaddr): - * raise TypeError('expected a tuple, got %r' % (sockaddr, )) # <<<<<<<<<<<<<< - * PyArg_ParseTuple(sockaddr, "si|ii", &hostp, &port, &flowinfo, &scope_id) - * if port < 0 or port > 65535: - */ - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 446, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_v_sockaddr); - __Pyx_GIVEREF(__pyx_v_sockaddr); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_sockaddr); - __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_expected_a_tuple_got_r, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 446, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 446, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 446, __pyx_L1_error) - - /* "gevent/resolver/cares.pyx":445 - * cdef int scope_id = 0 - * cdef sockaddr_in6 sa6 - * if not PyTuple_Check(sockaddr): # <<<<<<<<<<<<<< - * raise TypeError('expected a tuple, got %r' % (sockaddr, )) - * PyArg_ParseTuple(sockaddr, "si|ii", &hostp, &port, &flowinfo, &scope_id) - */ - } - - /* "gevent/resolver/cares.pyx":447 - * if not PyTuple_Check(sockaddr): - * raise TypeError('expected a tuple, got %r' % (sockaddr, )) - * PyArg_ParseTuple(sockaddr, "si|ii", &hostp, &port, &flowinfo, &scope_id) # <<<<<<<<<<<<<< - * if port < 0 or port > 65535: - * raise gaierror(-8, 'Invalid value for port: %r' % port) - */ - __pyx_t_6 = PyArg_ParseTuple(__pyx_v_sockaddr, ((char *)"si|ii"), (&__pyx_v_hostp), (&__pyx_v_port), (&__pyx_v_flowinfo), (&__pyx_v_scope_id)); if (unlikely(__pyx_t_6 == ((int)0))) __PYX_ERR(0, 447, __pyx_L1_error) - - /* "gevent/resolver/cares.pyx":448 - * raise TypeError('expected a tuple, got %r' % (sockaddr, )) - * PyArg_ParseTuple(sockaddr, "si|ii", &hostp, &port, &flowinfo, &scope_id) - * if port < 0 or port > 65535: # <<<<<<<<<<<<<< - * raise gaierror(-8, 'Invalid value for port: %r' % port) - * cdef int length = gevent_make_sockaddr(hostp, port, flowinfo, scope_id, &sa6) - */ - __pyx_t_9 = ((__pyx_v_port < 0) != 0); - if (!__pyx_t_9) { - } else { - __pyx_t_8 = __pyx_t_9; - goto __pyx_L6_bool_binop_done; - } - __pyx_t_9 = ((__pyx_v_port > 0xFFFF) != 0); - __pyx_t_8 = __pyx_t_9; - __pyx_L6_bool_binop_done:; - if (unlikely(__pyx_t_8)) { - - /* "gevent/resolver/cares.pyx":449 - * PyArg_ParseTuple(sockaddr, "si|ii", &hostp, &port, &flowinfo, &scope_id) - * if port < 0 or port > 65535: - * raise gaierror(-8, 'Invalid value for port: %r' % port) # <<<<<<<<<<<<<< - * cdef int length = gevent_make_sockaddr(hostp, port, flowinfo, scope_id, &sa6) - * if length <= 0: - */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_gaierror); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 449, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_port); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 449, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_value_for_port_r, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 449, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = NULL; - __pyx_t_6 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_6 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_int_neg_8, __pyx_t_4}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 449, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_int_neg_8, __pyx_t_4}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 449, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else - #endif - { - __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 449, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (__pyx_t_3) { - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __pyx_t_3 = NULL; - } - __Pyx_INCREF(__pyx_int_neg_8); - __Pyx_GIVEREF(__pyx_int_neg_8); - PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_int_neg_8); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); - __pyx_t_4 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 449, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 449, __pyx_L1_error) - - /* "gevent/resolver/cares.pyx":448 - * raise TypeError('expected a tuple, got %r' % (sockaddr, )) - * PyArg_ParseTuple(sockaddr, "si|ii", &hostp, &port, &flowinfo, &scope_id) - * if port < 0 or port > 65535: # <<<<<<<<<<<<<< - * raise gaierror(-8, 'Invalid value for port: %r' % port) - * cdef int length = gevent_make_sockaddr(hostp, port, flowinfo, scope_id, &sa6) - */ - } - - /* "gevent/resolver/cares.pyx":450 - * if port < 0 or port > 65535: - * raise gaierror(-8, 'Invalid value for port: %r' % port) - * cdef int length = gevent_make_sockaddr(hostp, port, flowinfo, scope_id, &sa6) # <<<<<<<<<<<<<< - * if length <= 0: - * raise InvalidIP(repr(hostp)) - */ - __pyx_v_length = gevent_make_sockaddr(__pyx_v_hostp, __pyx_v_port, __pyx_v_flowinfo, __pyx_v_scope_id, (&__pyx_v_sa6)); - - /* "gevent/resolver/cares.pyx":451 - * raise gaierror(-8, 'Invalid value for port: %r' % port) - * cdef int length = gevent_make_sockaddr(hostp, port, flowinfo, scope_id, &sa6) - * if length <= 0: # <<<<<<<<<<<<<< - * raise InvalidIP(repr(hostp)) - * cdef object arg = (self, callback) - */ - __pyx_t_8 = ((__pyx_v_length <= 0) != 0); - if (unlikely(__pyx_t_8)) { - - /* "gevent/resolver/cares.pyx":452 - * cdef int length = gevent_make_sockaddr(hostp, port, flowinfo, scope_id, &sa6) - * if length <= 0: - * raise InvalidIP(repr(hostp)) # <<<<<<<<<<<<<< - * cdef object arg = (self, callback) - * Py_INCREF(arg) - */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_InvalidIP); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 452, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_7 = __Pyx_PyBytes_FromString(__pyx_v_hostp); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 452, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_4 = PyObject_Repr(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 452, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_7); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - if (!__pyx_t_7) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 452, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else { - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_4}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 452, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_4}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 452, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else - #endif - { - __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 452, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7); __pyx_t_7 = NULL; - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_4); - __pyx_t_4 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 452, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 452, __pyx_L1_error) - - /* "gevent/resolver/cares.pyx":451 - * raise gaierror(-8, 'Invalid value for port: %r' % port) - * cdef int length = gevent_make_sockaddr(hostp, port, flowinfo, scope_id, &sa6) - * if length <= 0: # <<<<<<<<<<<<<< - * raise InvalidIP(repr(hostp)) - * cdef object arg = (self, callback) - */ - } - - /* "gevent/resolver/cares.pyx":453 - * if length <= 0: - * raise InvalidIP(repr(hostp)) - * cdef object arg = (self, callback) # <<<<<<<<<<<<<< - * Py_INCREF(arg) - * cdef sockaddr_t* x = <sockaddr_t*>&sa6 - */ - __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 453, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self)); - __Pyx_INCREF(__pyx_v_callback); - __Pyx_GIVEREF(__pyx_v_callback); - PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_callback); - __pyx_v_arg = __pyx_t_1; - __pyx_t_1 = 0; - - /* "gevent/resolver/cares.pyx":454 - * raise InvalidIP(repr(hostp)) - * cdef object arg = (self, callback) - * Py_INCREF(arg) # <<<<<<<<<<<<<< - * cdef sockaddr_t* x = <sockaddr_t*>&sa6 - * cares.ares_getnameinfo(self.channel, x, length, flags, <void*>gevent_ares_nameinfo_callback, <void*>arg) - */ - Py_INCREF(__pyx_v_arg); - - /* "gevent/resolver/cares.pyx":455 - * cdef object arg = (self, callback) - * Py_INCREF(arg) - * cdef sockaddr_t* x = <sockaddr_t*>&sa6 # <<<<<<<<<<<<<< - * cares.ares_getnameinfo(self.channel, x, length, flags, <void*>gevent_ares_nameinfo_callback, <void*>arg) - * - */ - __pyx_v_x = ((struct sockaddr *)(&__pyx_v_sa6)); - - /* "gevent/resolver/cares.pyx":456 - * Py_INCREF(arg) - * cdef sockaddr_t* x = <sockaddr_t*>&sa6 - * cares.ares_getnameinfo(self.channel, x, length, flags, <void*>gevent_ares_nameinfo_callback, <void*>arg) # <<<<<<<<<<<<<< - * - * def getnameinfo(self, object callback, tuple sockaddr, int flags): - */ - ares_getnameinfo(__pyx_v_self->channel, __pyx_v_x, __pyx_v_length, __pyx_v_flags, ((void *)__pyx_f_6gevent_8resolver_5cares_gevent_ares_nameinfo_callback), ((void *)__pyx_v_arg)); - - /* "gevent/resolver/cares.pyx":437 - * cares.ares_gethostbyaddr(self.channel, addr_packed, length, family, <void*>gevent_ares_host_callback, <void*>arg) - * - * cpdef _getnameinfo(self, object callback, tuple sockaddr, int flags): # <<<<<<<<<<<<<< - * if not self.channel: - * raise gaierror(cares.ARES_EDESTRUCTION, 'this ares channel has been destroyed') - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("gevent.resolver.cares.channel._getnameinfo", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_arg); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_7channel_19_getnameinfo(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_7channel_19_getnameinfo(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_callback = 0; - PyObject *__pyx_v_sockaddr = 0; - int __pyx_v_flags; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_getnameinfo (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback,&__pyx_n_s_sockaddr,&__pyx_n_s_flags,0}; - PyObject* values[3] = {0,0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sockaddr)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("_getnameinfo", 1, 3, 3, 1); __PYX_ERR(0, 437, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flags)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("_getnameinfo", 1, 3, 3, 2); __PYX_ERR(0, 437, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_getnameinfo") < 0)) __PYX_ERR(0, 437, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - } - __pyx_v_callback = values[0]; - __pyx_v_sockaddr = ((PyObject*)values[1]); - __pyx_v_flags = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_flags == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 437, __pyx_L3_error) - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("_getnameinfo", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 437, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.resolver.cares.channel._getnameinfo", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_sockaddr), (&PyTuple_Type), 1, "sockaddr", 1))) __PYX_ERR(0, 437, __pyx_L1_error) - __pyx_r = __pyx_pf_6gevent_8resolver_5cares_7channel_18_getnameinfo(((struct __pyx_obj_6gevent_8resolver_5cares_channel *)__pyx_v_self), __pyx_v_callback, __pyx_v_sockaddr, __pyx_v_flags); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = NULL; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8resolver_5cares_7channel_18_getnameinfo(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self, PyObject *__pyx_v_callback, PyObject *__pyx_v_sockaddr, int __pyx_v_flags) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("_getnameinfo", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6gevent_8resolver_5cares_7channel__getnameinfo(__pyx_v_self, __pyx_v_callback, __pyx_v_sockaddr, __pyx_v_flags, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 437, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.resolver.cares.channel._getnameinfo", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/resolver/cares.pyx":458 - * cares.ares_getnameinfo(self.channel, x, length, flags, <void*>gevent_ares_nameinfo_callback, <void*>arg) - * - * def getnameinfo(self, object callback, tuple sockaddr, int flags): # <<<<<<<<<<<<<< - * try: - * flags = _convert_cares_flags(flags) - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_7channel_21getnameinfo(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_7channel_21getnameinfo(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_callback = 0; - PyObject *__pyx_v_sockaddr = 0; - int __pyx_v_flags; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("getnameinfo (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback,&__pyx_n_s_sockaddr,&__pyx_n_s_flags,0}; - PyObject* values[3] = {0,0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sockaddr)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("getnameinfo", 1, 3, 3, 1); __PYX_ERR(0, 458, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flags)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("getnameinfo", 1, 3, 3, 2); __PYX_ERR(0, 458, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getnameinfo") < 0)) __PYX_ERR(0, 458, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - } - __pyx_v_callback = values[0]; - __pyx_v_sockaddr = ((PyObject*)values[1]); - __pyx_v_flags = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_flags == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 458, __pyx_L3_error) - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("getnameinfo", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 458, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("gevent.resolver.cares.channel.getnameinfo", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_sockaddr), (&PyTuple_Type), 1, "sockaddr", 1))) __PYX_ERR(0, 458, __pyx_L1_error) - __pyx_r = __pyx_pf_6gevent_8resolver_5cares_7channel_20getnameinfo(((struct __pyx_obj_6gevent_8resolver_5cares_channel *)__pyx_v_self), __pyx_v_callback, __pyx_v_sockaddr, __pyx_v_flags); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = NULL; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8resolver_5cares_7channel_20getnameinfo(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self, PyObject *__pyx_v_callback, PyObject *__pyx_v_sockaddr, int __pyx_v_flags) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - __Pyx_RefNannySetupContext("getnameinfo", 0); - - /* "gevent/resolver/cares.pyx":459 - * - * def getnameinfo(self, object callback, tuple sockaddr, int flags): - * try: # <<<<<<<<<<<<<< - * flags = _convert_cares_flags(flags) - * except gaierror: - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_t_3); - /*try:*/ { - - /* "gevent/resolver/cares.pyx":460 - * def getnameinfo(self, object callback, tuple sockaddr, int flags): - * try: - * flags = _convert_cares_flags(flags) # <<<<<<<<<<<<<< - * except gaierror: - * # The stdlib just ignores bad flags - */ - __pyx_t_4 = __pyx_f_6gevent_8resolver_5cares__convert_cares_flags(__pyx_v_flags, 0, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 460, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 460, __pyx_L3_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_v_flags = __pyx_t_5; - - /* "gevent/resolver/cares.pyx":459 - * - * def getnameinfo(self, object callback, tuple sockaddr, int flags): - * try: # <<<<<<<<<<<<<< - * flags = _convert_cares_flags(flags) - * except gaierror: - */ - } - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L8_try_end; - __pyx_L3_error:; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "gevent/resolver/cares.pyx":461 - * try: - * flags = _convert_cares_flags(flags) - * except gaierror: # <<<<<<<<<<<<<< - * # The stdlib just ignores bad flags - * flags = 0 - */ - __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_6, &__pyx_t_7); - __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_gaierror); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 461, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_5 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_4, __pyx_t_8); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_ErrRestore(__pyx_t_4, __pyx_t_6, __pyx_t_7); - __pyx_t_4 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; - if (__pyx_t_5) { - __Pyx_AddTraceback("gevent.resolver.cares.channel.getnameinfo", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_4) < 0) __PYX_ERR(0, 461, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GOTREF(__pyx_t_4); - - /* "gevent/resolver/cares.pyx":463 - * except gaierror: - * # The stdlib just ignores bad flags - * flags = 0 # <<<<<<<<<<<<<< - * return self._getnameinfo(callback, sockaddr, flags) - */ - __pyx_v_flags = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - goto __pyx_L4_exception_handled; - } - goto __pyx_L5_except_error; - __pyx_L5_except_error:; - - /* "gevent/resolver/cares.pyx":459 - * - * def getnameinfo(self, object callback, tuple sockaddr, int flags): - * try: # <<<<<<<<<<<<<< - * flags = _convert_cares_flags(flags) - * except gaierror: - */ - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - goto __pyx_L1_error; - __pyx_L4_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - __pyx_L8_try_end:; - } - - /* "gevent/resolver/cares.pyx":464 - * # The stdlib just ignores bad flags - * flags = 0 - * return self._getnameinfo(callback, sockaddr, flags) # <<<<<<<<<<<<<< - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = ((struct __pyx_vtabstruct_6gevent_8resolver_5cares_channel *)__pyx_v_self->__pyx_vtab)->_getnameinfo(__pyx_v_self, __pyx_v_callback, __pyx_v_sockaddr, __pyx_v_flags, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 464, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_r = __pyx_t_4; - __pyx_t_4 = 0; - goto __pyx_L0; - - /* "gevent/resolver/cares.pyx":458 - * cares.ares_getnameinfo(self.channel, x, length, flags, <void*>gevent_ares_nameinfo_callback, <void*>arg) - * - * def getnameinfo(self, object callback, tuple sockaddr, int flags): # <<<<<<<<<<<<<< - * try: - * flags = _convert_cares_flags(flags) - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_AddTraceback("gevent.resolver.cares.channel.getnameinfo", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/resolver/cares.pyx":256 - * cdef class channel: - * - * cdef public object loop # <<<<<<<<<<<<<< - * cdef ares_channeldata* channel - * cdef public dict _watchers - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_7channel_4loop_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_7channel_4loop_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8resolver_5cares_7channel_4loop___get__(((struct __pyx_obj_6gevent_8resolver_5cares_channel *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8resolver_5cares_7channel_4loop___get__(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->loop); - __pyx_r = __pyx_v_self->loop; - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static int __pyx_pw_6gevent_8resolver_5cares_7channel_4loop_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_6gevent_8resolver_5cares_7channel_4loop_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8resolver_5cares_7channel_4loop_2__set__(((struct __pyx_obj_6gevent_8resolver_5cares_channel *)__pyx_v_self), ((PyObject *)__pyx_v_value)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_8resolver_5cares_7channel_4loop_2__set__(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__", 0); - __Pyx_INCREF(__pyx_v_value); - __Pyx_GIVEREF(__pyx_v_value); - __Pyx_GOTREF(__pyx_v_self->loop); - __Pyx_DECREF(__pyx_v_self->loop); - __pyx_v_self->loop = __pyx_v_value; - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static int __pyx_pw_6gevent_8resolver_5cares_7channel_4loop_5__del__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_6gevent_8resolver_5cares_7channel_4loop_5__del__(PyObject *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8resolver_5cares_7channel_4loop_4__del__(((struct __pyx_obj_6gevent_8resolver_5cares_channel *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_8resolver_5cares_7channel_4loop_4__del__(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__del__", 0); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->loop); - __Pyx_DECREF(__pyx_v_self->loop); - __pyx_v_self->loop = Py_None; - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/resolver/cares.pyx":258 - * cdef public object loop - * cdef ares_channeldata* channel - * cdef public dict _watchers # <<<<<<<<<<<<<< - * cdef public object _timer - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_7channel_9_watchers_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_7channel_9_watchers_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8resolver_5cares_7channel_9_watchers___get__(((struct __pyx_obj_6gevent_8resolver_5cares_channel *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8resolver_5cares_7channel_9_watchers___get__(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->_watchers); - __pyx_r = __pyx_v_self->_watchers; - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static int __pyx_pw_6gevent_8resolver_5cares_7channel_9_watchers_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_6gevent_8resolver_5cares_7channel_9_watchers_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8resolver_5cares_7channel_9_watchers_2__set__(((struct __pyx_obj_6gevent_8resolver_5cares_channel *)__pyx_v_self), ((PyObject *)__pyx_v_value)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_8resolver_5cares_7channel_9_watchers_2__set__(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __Pyx_RefNannySetupContext("__set__", 0); - if (!(likely(PyDict_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_value)->tp_name), 0))) __PYX_ERR(0, 258, __pyx_L1_error) - __pyx_t_1 = __pyx_v_value; - __Pyx_INCREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->_watchers); - __Pyx_DECREF(__pyx_v_self->_watchers); - __pyx_v_self->_watchers = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("gevent.resolver.cares.channel._watchers.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static int __pyx_pw_6gevent_8resolver_5cares_7channel_9_watchers_5__del__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_6gevent_8resolver_5cares_7channel_9_watchers_5__del__(PyObject *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8resolver_5cares_7channel_9_watchers_4__del__(((struct __pyx_obj_6gevent_8resolver_5cares_channel *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_8resolver_5cares_7channel_9_watchers_4__del__(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__del__", 0); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->_watchers); - __Pyx_DECREF(__pyx_v_self->_watchers); - __pyx_v_self->_watchers = ((PyObject*)Py_None); - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "gevent/resolver/cares.pyx":259 - * cdef ares_channeldata* channel - * cdef public dict _watchers - * cdef public object _timer # <<<<<<<<<<<<<< - * - * def __init__(self, object loop, flags=None, timeout=None, tries=None, ndots=None, - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_7channel_6_timer_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_6gevent_8resolver_5cares_7channel_6_timer_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8resolver_5cares_7channel_6_timer___get__(((struct __pyx_obj_6gevent_8resolver_5cares_channel *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6gevent_8resolver_5cares_7channel_6_timer___get__(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->_timer); - __pyx_r = __pyx_v_self->_timer; - goto __pyx_L0; - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static int __pyx_pw_6gevent_8resolver_5cares_7channel_6_timer_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_6gevent_8resolver_5cares_7channel_6_timer_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8resolver_5cares_7channel_6_timer_2__set__(((struct __pyx_obj_6gevent_8resolver_5cares_channel *)__pyx_v_self), ((PyObject *)__pyx_v_value)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_8resolver_5cares_7channel_6_timer_2__set__(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__set__", 0); - __Pyx_INCREF(__pyx_v_value); - __Pyx_GIVEREF(__pyx_v_value); - __Pyx_GOTREF(__pyx_v_self->_timer); - __Pyx_DECREF(__pyx_v_self->_timer); - __pyx_v_self->_timer = __pyx_v_value; - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static int __pyx_pw_6gevent_8resolver_5cares_7channel_6_timer_5__del__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_6gevent_8resolver_5cares_7channel_6_timer_5__del__(PyObject *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); - __pyx_r = __pyx_pf_6gevent_8resolver_5cares_7channel_6_timer_4__del__(((struct __pyx_obj_6gevent_8resolver_5cares_channel *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_6gevent_8resolver_5cares_7channel_6_timer_4__del__(struct __pyx_obj_6gevent_8resolver_5cares_channel *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__del__", 0); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_GOTREF(__pyx_v_self->_timer); - __Pyx_DECREF(__pyx_v_self->_timer); - __pyx_v_self->_timer = Py_None; - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_tp_new_6gevent_8resolver_5cares_result(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - struct __pyx_obj_6gevent_8resolver_5cares_result *p; - PyObject *o; - if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { - o = (*t->tp_alloc)(t, 0); - } else { - o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); - } - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_8resolver_5cares_result *)o); - p->value = Py_None; Py_INCREF(Py_None); - p->exception = Py_None; Py_INCREF(Py_None); - return o; -} - -static void __pyx_tp_dealloc_6gevent_8resolver_5cares_result(PyObject *o) { - struct __pyx_obj_6gevent_8resolver_5cares_result *p = (struct __pyx_obj_6gevent_8resolver_5cares_result *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - #endif - PyObject_GC_UnTrack(o); - Py_CLEAR(p->value); - Py_CLEAR(p->exception); - (*Py_TYPE(o)->tp_free)(o); -} - -static int __pyx_tp_traverse_6gevent_8resolver_5cares_result(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_6gevent_8resolver_5cares_result *p = (struct __pyx_obj_6gevent_8resolver_5cares_result *)o; - if (p->value) { - e = (*v)(p->value, a); if (e) return e; - } - if (p->exception) { - e = (*v)(p->exception, a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_6gevent_8resolver_5cares_result(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_6gevent_8resolver_5cares_result *p = (struct __pyx_obj_6gevent_8resolver_5cares_result *)o; - tmp = ((PyObject*)p->value); - p->value = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->exception); - p->exception = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyObject *__pyx_getprop_6gevent_8resolver_5cares_6result_value(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_8resolver_5cares_6result_5value_1__get__(o); -} - -static int __pyx_setprop_6gevent_8resolver_5cares_6result_value(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { - if (v) { - return __pyx_pw_6gevent_8resolver_5cares_6result_5value_3__set__(o, v); - } - else { - return __pyx_pw_6gevent_8resolver_5cares_6result_5value_5__del__(o); - } -} - -static PyObject *__pyx_getprop_6gevent_8resolver_5cares_6result_exception(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_8resolver_5cares_6result_9exception_1__get__(o); -} - -static int __pyx_setprop_6gevent_8resolver_5cares_6result_exception(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { - if (v) { - return __pyx_pw_6gevent_8resolver_5cares_6result_9exception_3__set__(o, v); - } - else { - return __pyx_pw_6gevent_8resolver_5cares_6result_9exception_5__del__(o); - } -} - -static PyMethodDef __pyx_methods_6gevent_8resolver_5cares_result[] = { - {"successful", (PyCFunction)__pyx_pw_6gevent_8resolver_5cares_6result_5successful, METH_NOARGS, 0}, - {"get", (PyCFunction)__pyx_pw_6gevent_8resolver_5cares_6result_7get, METH_NOARGS, 0}, - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_6gevent_8resolver_5cares_result[] = { - {(char *)"value", __pyx_getprop_6gevent_8resolver_5cares_6result_value, __pyx_setprop_6gevent_8resolver_5cares_6result_value, (char *)0, 0}, - {(char *)"exception", __pyx_getprop_6gevent_8resolver_5cares_6result_exception, __pyx_setprop_6gevent_8resolver_5cares_6result_exception, (char *)0, 0}, - {0, 0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_8resolver_5cares_result = { - PyVarObject_HEAD_INIT(0, 0) - "gevent.resolver.cares.result", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_8resolver_5cares_result), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_8resolver_5cares_result, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - __pyx_pw_6gevent_8resolver_5cares_6result_3__repr__, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - 0, /*tp_doc*/ - __pyx_tp_traverse_6gevent_8resolver_5cares_result, /*tp_traverse*/ - __pyx_tp_clear_6gevent_8resolver_5cares_result, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_8resolver_5cares_result, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_6gevent_8resolver_5cares_result, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_8resolver_5cares_6result_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_8resolver_5cares_result, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; -static struct __pyx_vtabstruct_6gevent_8resolver_5cares_channel __pyx_vtable_6gevent_8resolver_5cares_channel; - -static PyObject *__pyx_tp_new_6gevent_8resolver_5cares_channel(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - struct __pyx_obj_6gevent_8resolver_5cares_channel *p; - PyObject *o; - if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { - o = (*t->tp_alloc)(t, 0); - } else { - o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); - } - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_6gevent_8resolver_5cares_channel *)o); - p->__pyx_vtab = __pyx_vtabptr_6gevent_8resolver_5cares_channel; - p->loop = Py_None; Py_INCREF(Py_None); - p->_watchers = ((PyObject*)Py_None); Py_INCREF(Py_None); - p->_timer = Py_None; Py_INCREF(Py_None); - return o; -} - -static void __pyx_tp_dealloc_6gevent_8resolver_5cares_channel(PyObject *o) { - struct __pyx_obj_6gevent_8resolver_5cares_channel *p = (struct __pyx_obj_6gevent_8resolver_5cares_channel *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - #endif - PyObject_GC_UnTrack(o); - { - PyObject *etype, *eval, *etb; - PyErr_Fetch(&etype, &eval, &etb); - ++Py_REFCNT(o); - __pyx_pw_6gevent_8resolver_5cares_7channel_7__dealloc__(o); - --Py_REFCNT(o); - PyErr_Restore(etype, eval, etb); - } - Py_CLEAR(p->loop); - Py_CLEAR(p->_watchers); - Py_CLEAR(p->_timer); - (*Py_TYPE(o)->tp_free)(o); -} - -static int __pyx_tp_traverse_6gevent_8resolver_5cares_channel(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_6gevent_8resolver_5cares_channel *p = (struct __pyx_obj_6gevent_8resolver_5cares_channel *)o; - if (p->loop) { - e = (*v)(p->loop, a); if (e) return e; - } - if (p->_watchers) { - e = (*v)(p->_watchers, a); if (e) return e; - } - if (p->_timer) { - e = (*v)(p->_timer, a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_6gevent_8resolver_5cares_channel(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_6gevent_8resolver_5cares_channel *p = (struct __pyx_obj_6gevent_8resolver_5cares_channel *)o; - tmp = ((PyObject*)p->loop); - p->loop = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->_watchers); - p->_watchers = ((PyObject*)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->_timer); - p->_timer = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyObject *__pyx_getprop_6gevent_8resolver_5cares_7channel_loop(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_8resolver_5cares_7channel_4loop_1__get__(o); -} - -static int __pyx_setprop_6gevent_8resolver_5cares_7channel_loop(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { - if (v) { - return __pyx_pw_6gevent_8resolver_5cares_7channel_4loop_3__set__(o, v); - } - else { - return __pyx_pw_6gevent_8resolver_5cares_7channel_4loop_5__del__(o); - } -} - -static PyObject *__pyx_getprop_6gevent_8resolver_5cares_7channel__watchers(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_8resolver_5cares_7channel_9_watchers_1__get__(o); -} - -static int __pyx_setprop_6gevent_8resolver_5cares_7channel__watchers(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { - if (v) { - return __pyx_pw_6gevent_8resolver_5cares_7channel_9_watchers_3__set__(o, v); - } - else { - return __pyx_pw_6gevent_8resolver_5cares_7channel_9_watchers_5__del__(o); - } -} - -static PyObject *__pyx_getprop_6gevent_8resolver_5cares_7channel__timer(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_6gevent_8resolver_5cares_7channel_6_timer_1__get__(o); -} - -static int __pyx_setprop_6gevent_8resolver_5cares_7channel__timer(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { - if (v) { - return __pyx_pw_6gevent_8resolver_5cares_7channel_6_timer_3__set__(o, v); - } - else { - return __pyx_pw_6gevent_8resolver_5cares_7channel_6_timer_5__del__(o); - } -} - -static PyMethodDef __pyx_methods_6gevent_8resolver_5cares_channel[] = { - {"destroy", (PyCFunction)__pyx_pw_6gevent_8resolver_5cares_7channel_5destroy, METH_NOARGS, 0}, - {"set_servers", (PyCFunction)__pyx_pw_6gevent_8resolver_5cares_7channel_9set_servers, METH_VARARGS|METH_KEYWORDS, 0}, - {"_on_timer", (PyCFunction)__pyx_pw_6gevent_8resolver_5cares_7channel_11_on_timer, METH_NOARGS, 0}, - {"_process_fd", (PyCFunction)__pyx_pw_6gevent_8resolver_5cares_7channel_13_process_fd, METH_VARARGS|METH_KEYWORDS, 0}, - {"gethostbyname", (PyCFunction)__pyx_pw_6gevent_8resolver_5cares_7channel_15gethostbyname, METH_VARARGS|METH_KEYWORDS, 0}, - {"gethostbyaddr", (PyCFunction)__pyx_pw_6gevent_8resolver_5cares_7channel_17gethostbyaddr, METH_VARARGS|METH_KEYWORDS, 0}, - {"_getnameinfo", (PyCFunction)__pyx_pw_6gevent_8resolver_5cares_7channel_19_getnameinfo, METH_VARARGS|METH_KEYWORDS, 0}, - {"getnameinfo", (PyCFunction)__pyx_pw_6gevent_8resolver_5cares_7channel_21getnameinfo, METH_VARARGS|METH_KEYWORDS, 0}, - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_6gevent_8resolver_5cares_channel[] = { - {(char *)"loop", __pyx_getprop_6gevent_8resolver_5cares_7channel_loop, __pyx_setprop_6gevent_8resolver_5cares_7channel_loop, (char *)0, 0}, - {(char *)"_watchers", __pyx_getprop_6gevent_8resolver_5cares_7channel__watchers, __pyx_setprop_6gevent_8resolver_5cares_7channel__watchers, (char *)0, 0}, - {(char *)"_timer", __pyx_getprop_6gevent_8resolver_5cares_7channel__timer, __pyx_setprop_6gevent_8resolver_5cares_7channel__timer, (char *)0, 0}, - {0, 0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_6gevent_8resolver_5cares_channel = { - PyVarObject_HEAD_INIT(0, 0) - "gevent.resolver.cares.channel", /*tp_name*/ - sizeof(struct __pyx_obj_6gevent_8resolver_5cares_channel), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6gevent_8resolver_5cares_channel, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - __pyx_pw_6gevent_8resolver_5cares_7channel_3__repr__, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - 0, /*tp_doc*/ - __pyx_tp_traverse_6gevent_8resolver_5cares_channel, /*tp_traverse*/ - __pyx_tp_clear_6gevent_8resolver_5cares_channel, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_6gevent_8resolver_5cares_channel, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_6gevent_8resolver_5cares_channel, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - __pyx_pw_6gevent_8resolver_5cares_7channel_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_6gevent_8resolver_5cares_channel, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif -}; - -static PyMethodDef __pyx_methods[] = { - {"_convert_cares_flags", (PyCFunction)__pyx_pw_6gevent_8resolver_5cares_1_convert_cares_flags, METH_VARARGS|METH_KEYWORDS, 0}, - {"strerror", (PyCFunction)__pyx_pw_6gevent_8resolver_5cares_3strerror, METH_O, 0}, - {0, 0, 0, 0} -}; - -#if PY_MAJOR_VERSION >= 3 -#if CYTHON_PEP489_MULTI_PHASE_INIT -static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ -static int __pyx_pymod_exec_cares(PyObject* module); /*proto*/ -static PyModuleDef_Slot __pyx_moduledef_slots[] = { - {Py_mod_create, (void*)__pyx_pymod_create}, - {Py_mod_exec, (void*)__pyx_pymod_exec_cares}, - {0, NULL} -}; -#endif - -static struct PyModuleDef __pyx_moduledef = { - PyModuleDef_HEAD_INIT, - "cares", - 0, /* m_doc */ - #if CYTHON_PEP489_MULTI_PHASE_INIT - 0, /* m_size */ - #else - -1, /* m_size */ - #endif - __pyx_methods /* m_methods */, - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_moduledef_slots, /* m_slots */ - #else - NULL, /* m_reload */ - #endif - NULL, /* m_traverse */ - NULL, /* m_clear */ - NULL /* m_free */ -}; -#endif - -static __Pyx_StringTabEntry __pyx_string_tab[] = { - {&__pyx_n_s_ARES_EADDRGETNETWORKPARAMS, __pyx_k_ARES_EADDRGETNETWORKPARAMS, sizeof(__pyx_k_ARES_EADDRGETNETWORKPARAMS), 0, 0, 1, 1}, - {&__pyx_n_s_ARES_EBADFAMILY, __pyx_k_ARES_EBADFAMILY, sizeof(__pyx_k_ARES_EBADFAMILY), 0, 0, 1, 1}, - {&__pyx_n_s_ARES_EBADFLAGS, __pyx_k_ARES_EBADFLAGS, sizeof(__pyx_k_ARES_EBADFLAGS), 0, 0, 1, 1}, - {&__pyx_n_s_ARES_EBADHINTS, __pyx_k_ARES_EBADHINTS, sizeof(__pyx_k_ARES_EBADHINTS), 0, 0, 1, 1}, - {&__pyx_n_s_ARES_EBADNAME, __pyx_k_ARES_EBADNAME, sizeof(__pyx_k_ARES_EBADNAME), 0, 0, 1, 1}, - {&__pyx_n_s_ARES_EBADQUERY, __pyx_k_ARES_EBADQUERY, sizeof(__pyx_k_ARES_EBADQUERY), 0, 0, 1, 1}, - {&__pyx_n_s_ARES_EBADRESP, __pyx_k_ARES_EBADRESP, sizeof(__pyx_k_ARES_EBADRESP), 0, 0, 1, 1}, - {&__pyx_n_s_ARES_EBADSTR, __pyx_k_ARES_EBADSTR, sizeof(__pyx_k_ARES_EBADSTR), 0, 0, 1, 1}, - {&__pyx_n_s_ARES_ECANCELLED, __pyx_k_ARES_ECANCELLED, sizeof(__pyx_k_ARES_ECANCELLED), 0, 0, 1, 1}, - {&__pyx_n_s_ARES_ECONNREFUSED, __pyx_k_ARES_ECONNREFUSED, sizeof(__pyx_k_ARES_ECONNREFUSED), 0, 0, 1, 1}, - {&__pyx_n_s_ARES_EDESTRUCTION, __pyx_k_ARES_EDESTRUCTION, sizeof(__pyx_k_ARES_EDESTRUCTION), 0, 0, 1, 1}, - {&__pyx_n_s_ARES_EFILE, __pyx_k_ARES_EFILE, sizeof(__pyx_k_ARES_EFILE), 0, 0, 1, 1}, - {&__pyx_n_s_ARES_EFORMERR, __pyx_k_ARES_EFORMERR, sizeof(__pyx_k_ARES_EFORMERR), 0, 0, 1, 1}, - {&__pyx_n_s_ARES_ELOADIPHLPAPI, __pyx_k_ARES_ELOADIPHLPAPI, sizeof(__pyx_k_ARES_ELOADIPHLPAPI), 0, 0, 1, 1}, - {&__pyx_n_s_ARES_ENODATA, __pyx_k_ARES_ENODATA, sizeof(__pyx_k_ARES_ENODATA), 0, 0, 1, 1}, - {&__pyx_n_s_ARES_ENOMEM, __pyx_k_ARES_ENOMEM, sizeof(__pyx_k_ARES_ENOMEM), 0, 0, 1, 1}, - {&__pyx_n_s_ARES_ENONAME, __pyx_k_ARES_ENONAME, sizeof(__pyx_k_ARES_ENONAME), 0, 0, 1, 1}, - {&__pyx_n_s_ARES_ENOTFOUND, __pyx_k_ARES_ENOTFOUND, sizeof(__pyx_k_ARES_ENOTFOUND), 0, 0, 1, 1}, - {&__pyx_n_s_ARES_ENOTIMP, __pyx_k_ARES_ENOTIMP, sizeof(__pyx_k_ARES_ENOTIMP), 0, 0, 1, 1}, - {&__pyx_n_s_ARES_ENOTINITIALIZED, __pyx_k_ARES_ENOTINITIALIZED, sizeof(__pyx_k_ARES_ENOTINITIALIZED), 0, 0, 1, 1}, - {&__pyx_n_s_ARES_EOF, __pyx_k_ARES_EOF, sizeof(__pyx_k_ARES_EOF), 0, 0, 1, 1}, - {&__pyx_n_s_ARES_EREFUSED, __pyx_k_ARES_EREFUSED, sizeof(__pyx_k_ARES_EREFUSED), 0, 0, 1, 1}, - {&__pyx_n_s_ARES_ESERVFAIL, __pyx_k_ARES_ESERVFAIL, sizeof(__pyx_k_ARES_ESERVFAIL), 0, 0, 1, 1}, - {&__pyx_n_s_ARES_ETIMEOUT, __pyx_k_ARES_ETIMEOUT, sizeof(__pyx_k_ARES_ETIMEOUT), 0, 0, 1, 1}, - {&__pyx_n_s_ARES_FLAG_IGNTC, __pyx_k_ARES_FLAG_IGNTC, sizeof(__pyx_k_ARES_FLAG_IGNTC), 0, 0, 1, 1}, - {&__pyx_n_s_ARES_FLAG_NOALIASES, __pyx_k_ARES_FLAG_NOALIASES, sizeof(__pyx_k_ARES_FLAG_NOALIASES), 0, 0, 1, 1}, - {&__pyx_n_s_ARES_FLAG_NOCHECKRESP, __pyx_k_ARES_FLAG_NOCHECKRESP, sizeof(__pyx_k_ARES_FLAG_NOCHECKRESP), 0, 0, 1, 1}, - {&__pyx_n_s_ARES_FLAG_NORECURSE, __pyx_k_ARES_FLAG_NORECURSE, sizeof(__pyx_k_ARES_FLAG_NORECURSE), 0, 0, 1, 1}, - {&__pyx_n_s_ARES_FLAG_NOSEARCH, __pyx_k_ARES_FLAG_NOSEARCH, sizeof(__pyx_k_ARES_FLAG_NOSEARCH), 0, 0, 1, 1}, - {&__pyx_n_s_ARES_FLAG_PRIMARY, __pyx_k_ARES_FLAG_PRIMARY, sizeof(__pyx_k_ARES_FLAG_PRIMARY), 0, 0, 1, 1}, - {&__pyx_n_s_ARES_FLAG_STAYOPEN, __pyx_k_ARES_FLAG_STAYOPEN, sizeof(__pyx_k_ARES_FLAG_STAYOPEN), 0, 0, 1, 1}, - {&__pyx_n_s_ARES_FLAG_USEVC, __pyx_k_ARES_FLAG_USEVC, sizeof(__pyx_k_ARES_FLAG_USEVC), 0, 0, 1, 1}, - {&__pyx_n_s_ARES_SUCCESS, __pyx_k_ARES_SUCCESS, sizeof(__pyx_k_ARES_SUCCESS), 0, 0, 1, 1}, - {&__pyx_kp_s_Bad_value_for_ai_flags_0x_x, __pyx_k_Bad_value_for_ai_flags_0x_x, sizeof(__pyx_k_Bad_value_for_ai_flags_0x_x), 0, 0, 1, 0}, - {&__pyx_n_s_InvalidIP, __pyx_k_InvalidIP, sizeof(__pyx_k_InvalidIP), 0, 0, 1, 1}, - {&__pyx_kp_s_Invalid_value_for_port_r, __pyx_k_Invalid_value_for_port_r, sizeof(__pyx_k_Invalid_value_for_port_r), 0, 0, 1, 0}, - {&__pyx_n_s_MemoryError, __pyx_k_MemoryError, sizeof(__pyx_k_MemoryError), 0, 0, 1, 1}, - {&__pyx_n_s_NI_DGRAM, __pyx_k_NI_DGRAM, sizeof(__pyx_k_NI_DGRAM), 0, 0, 1, 1}, - {&__pyx_n_s_NI_NAMEREQD, __pyx_k_NI_NAMEREQD, sizeof(__pyx_k_NI_NAMEREQD), 0, 0, 1, 1}, - {&__pyx_n_s_NI_NOFQDN, __pyx_k_NI_NOFQDN, sizeof(__pyx_k_NI_NOFQDN), 0, 0, 1, 1}, - {&__pyx_n_s_NI_NUMERICHOST, __pyx_k_NI_NUMERICHOST, sizeof(__pyx_k_NI_NUMERICHOST), 0, 0, 1, 1}, - {&__pyx_n_s_NI_NUMERICSERV, __pyx_k_NI_NUMERICSERV, sizeof(__pyx_k_NI_NUMERICSERV), 0, 0, 1, 1}, - {&__pyx_n_s_TIMEOUT, __pyx_k_TIMEOUT, sizeof(__pyx_k_TIMEOUT), 0, 0, 1, 1}, - {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1}, - {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1}, - {&__pyx_kp_s__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 0, 1, 0}, - {&__pyx_n_s_addr, __pyx_k_addr, sizeof(__pyx_k_addr), 0, 0, 1, 1}, - {&__pyx_n_s_again, __pyx_k_again, sizeof(__pyx_k_again), 0, 0, 1, 1}, - {&__pyx_n_s_all, __pyx_k_all, sizeof(__pyx_k_all), 0, 0, 1, 1}, - {&__pyx_n_s_ares_errors, __pyx_k_ares_errors, sizeof(__pyx_k_ares_errors), 0, 0, 1, 1}, - {&__pyx_n_s_ares_host_result, __pyx_k_ares_host_result, sizeof(__pyx_k_ares_host_result), 0, 0, 1, 1}, - {&__pyx_n_s_ares_host_result___getnewargs, __pyx_k_ares_host_result___getnewargs, sizeof(__pyx_k_ares_host_result___getnewargs), 0, 0, 1, 1}, - {&__pyx_n_s_ares_host_result___new, __pyx_k_ares_host_result___new, sizeof(__pyx_k_ares_host_result___new), 0, 0, 1, 1}, - {&__pyx_n_s_ascii, __pyx_k_ascii, sizeof(__pyx_k_ascii), 0, 0, 1, 1}, - {&__pyx_n_s_basestring, __pyx_k_basestring, sizeof(__pyx_k_basestring), 0, 0, 1, 1}, - {&__pyx_n_s_builtins, __pyx_k_builtins, sizeof(__pyx_k_builtins), 0, 0, 1, 1}, - {&__pyx_n_s_callback, __pyx_k_callback, sizeof(__pyx_k_callback), 0, 0, 1, 1}, - {&__pyx_n_s_cares_flag_map, __pyx_k_cares_flag_map, sizeof(__pyx_k_cares_flag_map), 0, 0, 1, 1}, - {&__pyx_n_s_channel, __pyx_k_channel, sizeof(__pyx_k_channel), 0, 0, 1, 1}, - {&__pyx_n_s_class, __pyx_k_class, sizeof(__pyx_k_class), 0, 0, 1, 1}, - {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, - {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1}, - {&__pyx_n_s_cls, __pyx_k_cls, sizeof(__pyx_k_cls), 0, 0, 1, 1}, - {&__pyx_n_s_default, __pyx_k_default, sizeof(__pyx_k_default), 0, 0, 1, 1}, - {&__pyx_n_s_destroy, __pyx_k_destroy, sizeof(__pyx_k_destroy), 0, 0, 1, 1}, - {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1}, - {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1}, - {&__pyx_n_s_events, __pyx_k_events, sizeof(__pyx_k_events), 0, 0, 1, 1}, - {&__pyx_n_s_exc_info, __pyx_k_exc_info, sizeof(__pyx_k_exc_info), 0, 0, 1, 1}, - {&__pyx_n_s_exception, __pyx_k_exception, sizeof(__pyx_k_exception), 0, 0, 1, 1}, - {&__pyx_kp_s_expected_a_tuple_got_r, __pyx_k_expected_a_tuple_got_r, sizeof(__pyx_k_expected_a_tuple_got_r), 0, 0, 1, 0}, - {&__pyx_n_s_family, __pyx_k_family, sizeof(__pyx_k_family), 0, 0, 1, 1}, - {&__pyx_n_s_fd, __pyx_k_fd, sizeof(__pyx_k_fd), 0, 0, 1, 1}, - {&__pyx_n_s_flags, __pyx_k_flags, sizeof(__pyx_k_flags), 0, 0, 1, 1}, - {&__pyx_n_s_gaierror, __pyx_k_gaierror, sizeof(__pyx_k_gaierror), 0, 0, 1, 1}, - {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1}, - {&__pyx_n_s_getnameinfo, __pyx_k_getnameinfo, sizeof(__pyx_k_getnameinfo), 0, 0, 1, 1}, - {&__pyx_n_s_getnewargs, __pyx_k_getnewargs, sizeof(__pyx_k_getnewargs), 0, 0, 1, 1}, - {&__pyx_n_s_gevent_resolver_cares, __pyx_k_gevent_resolver_cares, sizeof(__pyx_k_gevent_resolver_cares), 0, 0, 1, 1}, - {&__pyx_n_s_handle_error, __pyx_k_handle_error, sizeof(__pyx_k_handle_error), 0, 0, 1, 1}, - {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1}, - {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, - {&__pyx_n_s_io, __pyx_k_io, sizeof(__pyx_k_io), 0, 0, 1, 1}, - {&__pyx_n_s_iterable, __pyx_k_iterable, sizeof(__pyx_k_iterable), 0, 0, 1, 1}, - {&__pyx_n_s_loop, __pyx_k_loop, sizeof(__pyx_k_loop), 0, 0, 1, 1}, - {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, - {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1}, - {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1}, - {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, - {&__pyx_n_s_name_2, __pyx_k_name_2, sizeof(__pyx_k_name_2), 0, 0, 1, 1}, - {&__pyx_n_s_ndots, __pyx_k_ndots, sizeof(__pyx_k_ndots), 0, 0, 1, 1}, - {&__pyx_n_s_new, __pyx_k_new, sizeof(__pyx_k_new), 0, 0, 1, 1}, - {&__pyx_n_s_on_timer, __pyx_k_on_timer, sizeof(__pyx_k_on_timer), 0, 0, 1, 1}, - {&__pyx_n_s_pass_events, __pyx_k_pass_events, sizeof(__pyx_k_pass_events), 0, 0, 1, 1}, - {&__pyx_n_s_pop, __pyx_k_pop, sizeof(__pyx_k_pop), 0, 0, 1, 1}, - {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1}, - {&__pyx_n_s_process_fd, __pyx_k_process_fd, sizeof(__pyx_k_process_fd), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1}, - {&__pyx_n_s_qualname, __pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 0, 1, 1}, - {&__pyx_kp_s_s_at_0x_x__timer_r__watchers_s, __pyx_k_s_at_0x_x__timer_r__watchers_s, sizeof(__pyx_k_s_at_0x_x__timer_r__watchers_s), 0, 0, 1, 0}, - {&__pyx_kp_s_s_exception_r, __pyx_k_s_exception_r, sizeof(__pyx_k_s_exception_r), 0, 0, 1, 0}, - {&__pyx_kp_s_s_r, __pyx_k_s_r, sizeof(__pyx_k_s_r), 0, 0, 1, 0}, - {&__pyx_kp_s_s_s, __pyx_k_s_s, sizeof(__pyx_k_s_s), 0, 0, 1, 0}, - {&__pyx_kp_s_s_value_r_exception_r, __pyx_k_s_value_r_exception_r, sizeof(__pyx_k_s_value_r_exception_r), 0, 0, 1, 0}, - {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1}, - {&__pyx_n_s_servers, __pyx_k_servers, sizeof(__pyx_k_servers), 0, 0, 1, 1}, - {&__pyx_n_s_set_servers, __pyx_k_set_servers, sizeof(__pyx_k_set_servers), 0, 0, 1, 1}, - {&__pyx_n_s_sockaddr, __pyx_k_sockaddr, sizeof(__pyx_k_sockaddr), 0, 0, 1, 1}, - {&__pyx_n_s_socket, __pyx_k_socket, sizeof(__pyx_k_socket), 0, 0, 1, 1}, - {&__pyx_n_s_split, __pyx_k_split, sizeof(__pyx_k_split), 0, 0, 1, 1}, - {&__pyx_kp_s_src_gevent_resolver_cares_pyx, __pyx_k_src_gevent_resolver_cares_pyx, sizeof(__pyx_k_src_gevent_resolver_cares_pyx), 0, 0, 1, 0}, - {&__pyx_n_s_start, __pyx_k_start, sizeof(__pyx_k_start), 0, 0, 1, 1}, - {&__pyx_n_s_stop, __pyx_k_stop, sizeof(__pyx_k_stop), 0, 0, 1, 1}, - {&__pyx_n_s_sys, __pyx_k_sys, sizeof(__pyx_k_sys), 0, 0, 1, 1}, - {&__pyx_n_s_tcp_port, __pyx_k_tcp_port, sizeof(__pyx_k_tcp_port), 0, 0, 1, 1}, - {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, - {&__pyx_kp_s_this_ares_channel_has_been_destr, __pyx_k_this_ares_channel_has_been_destr, sizeof(__pyx_k_this_ares_channel_has_been_destr), 0, 0, 1, 0}, - {&__pyx_n_s_timeout, __pyx_k_timeout, sizeof(__pyx_k_timeout), 0, 0, 1, 1}, - {&__pyx_n_s_timer, __pyx_k_timer, sizeof(__pyx_k_timer), 0, 0, 1, 1}, - {&__pyx_n_s_tries, __pyx_k_tries, sizeof(__pyx_k_tries), 0, 0, 1, 1}, - {&__pyx_n_s_udp_port, __pyx_k_udp_port, sizeof(__pyx_k_udp_port), 0, 0, 1, 1}, - {&__pyx_n_s_unicode, __pyx_k_unicode, sizeof(__pyx_k_unicode), 0, 0, 1, 1}, - {&__pyx_n_s_value, __pyx_k_value, sizeof(__pyx_k_value), 0, 0, 1, 1}, - {&__pyx_n_s_version_info, __pyx_k_version_info, sizeof(__pyx_k_version_info), 0, 0, 1, 1}, - {&__pyx_n_s_watcher, __pyx_k_watcher, sizeof(__pyx_k_watcher), 0, 0, 1, 1}, - {0, 0, 0, 0, 0, 0, 0} -}; -static int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 162, __pyx_L1_error) - __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_n_s_id); if (!__pyx_builtin_id) __PYX_ERR(0, 305, __pyx_L1_error) - __pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) __PYX_ERR(0, 339, __pyx_L1_error) - __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 446, __pyx_L1_error) - return 0; - __pyx_L1_error:; - return -1; -} - -static int __Pyx_InitCachedConstants(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - - /* "gevent/resolver/cares.pyx":329 - * servers = [] - * if isinstance(servers, string_types): - * servers = servers.split(',') # <<<<<<<<<<<<<< - * cdef int length = len(servers) - * cdef int result, index - */ - __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s__2); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 329, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__3); - __Pyx_GIVEREF(__pyx_tuple__3); - - /* "gevent/resolver/cares.pyx":344 - * for server in servers: - * if isinstance(server, unicode): - * server = server.encode('ascii') # <<<<<<<<<<<<<< - * string = <char*?>server - * if cares.ares_inet_pton(AF_INET, string, &c_servers[index].addr) > 0: - */ - __pyx_tuple__4 = PyTuple_Pack(1, __pyx_n_s_ascii); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 344, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__4); - __Pyx_GIVEREF(__pyx_tuple__4); - - /* "gevent/resolver/cares.pyx":162 - * - * - * class InvalidIP(ValueError): # <<<<<<<<<<<<<< - * pass - * - */ - __pyx_tuple__6 = PyTuple_Pack(1, __pyx_builtin_ValueError); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 162, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__6); - __Pyx_GIVEREF(__pyx_tuple__6); - - /* "gevent/resolver/cares.pyx":201 - * class ares_host_result(tuple): - * - * def __new__(cls, family, iterable): # <<<<<<<<<<<<<< - * cdef object self = tuple.__new__(cls, iterable) - * self.family = family - */ - __pyx_tuple__7 = PyTuple_Pack(4, __pyx_n_s_cls, __pyx_n_s_family, __pyx_n_s_iterable, __pyx_n_s_self); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 201, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__7); - __Pyx_GIVEREF(__pyx_tuple__7); - __pyx_codeobj__8 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__7, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_resolver_cares_pyx, __pyx_n_s_new, 201, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__8)) __PYX_ERR(0, 201, __pyx_L1_error) - - /* "gevent/resolver/cares.pyx":206 - * return self - * - * def __getnewargs__(self): # <<<<<<<<<<<<<< - * return (self.family, tuple(self)) - * - */ - __pyx_tuple__9 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 206, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__9); - __Pyx_GIVEREF(__pyx_tuple__9); - __pyx_codeobj__10 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__9, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent_resolver_cares_pyx, __pyx_n_s_getnewargs, 206, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__10)) __PYX_ERR(0, 206, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_InitGlobals(void) { - __pyx_umethod_PyDict_Type_get.type = (PyObject*)&PyDict_Type; - __pyx_umethod_PyDict_Type_pop.type = (PyObject*)&PyDict_Type; - if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_4 = PyInt_FromLong(4); if (unlikely(!__pyx_int_4)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_8 = PyInt_FromLong(8); if (unlikely(!__pyx_int_8)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_16 = PyInt_FromLong(16); if (unlikely(!__pyx_int_16)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_neg_8 = PyInt_FromLong(-8); if (unlikely(!__pyx_int_neg_8)) __PYX_ERR(0, 1, __pyx_L1_error) - return 0; - __pyx_L1_error:; - return -1; -} - -static int __Pyx_modinit_global_init_code(void); /*proto*/ -static int __Pyx_modinit_variable_export_code(void); /*proto*/ -static int __Pyx_modinit_function_export_code(void); /*proto*/ -static int __Pyx_modinit_type_init_code(void); /*proto*/ -static int __Pyx_modinit_type_import_code(void); /*proto*/ -static int __Pyx_modinit_variable_import_code(void); /*proto*/ -static int __Pyx_modinit_function_import_code(void); /*proto*/ - -static int __Pyx_modinit_global_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); - /*--- Global init code ---*/ - __pyx_v_6gevent_8resolver_5cares_string_types = Py_None; Py_INCREF(Py_None); - __pyx_v_6gevent_8resolver_5cares_text_type = Py_None; Py_INCREF(Py_None); - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_variable_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); - /*--- Variable export code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_function_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); - /*--- Function export code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_type_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); - /*--- Type init code ---*/ - if (PyType_Ready(&__pyx_type_6gevent_8resolver_5cares_result) < 0) __PYX_ERR(0, 173, __pyx_L1_error) - __pyx_type_6gevent_8resolver_5cares_result.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_8resolver_5cares_result.tp_dictoffset && __pyx_type_6gevent_8resolver_5cares_result.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_8resolver_5cares_result.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - if (PyObject_SetAttrString(__pyx_m, "result", (PyObject *)&__pyx_type_6gevent_8resolver_5cares_result) < 0) __PYX_ERR(0, 173, __pyx_L1_error) - __pyx_ptype_6gevent_8resolver_5cares_result = &__pyx_type_6gevent_8resolver_5cares_result; - __pyx_vtabptr_6gevent_8resolver_5cares_channel = &__pyx_vtable_6gevent_8resolver_5cares_channel; - __pyx_vtable_6gevent_8resolver_5cares_channel.set_servers = (PyObject *(*)(struct __pyx_obj_6gevent_8resolver_5cares_channel *, int __pyx_skip_dispatch, struct __pyx_opt_args_6gevent_8resolver_5cares_7channel_set_servers *__pyx_optional_args))__pyx_f_6gevent_8resolver_5cares_7channel_set_servers; - __pyx_vtable_6gevent_8resolver_5cares_channel._sock_state_callback = (PyObject *(*)(struct __pyx_obj_6gevent_8resolver_5cares_channel *, int, int, int))__pyx_f_6gevent_8resolver_5cares_7channel__sock_state_callback; - __pyx_vtable_6gevent_8resolver_5cares_channel._getnameinfo = (PyObject *(*)(struct __pyx_obj_6gevent_8resolver_5cares_channel *, PyObject *, PyObject *, int, int __pyx_skip_dispatch))__pyx_f_6gevent_8resolver_5cares_7channel__getnameinfo; - if (PyType_Ready(&__pyx_type_6gevent_8resolver_5cares_channel) < 0) __PYX_ERR(0, 254, __pyx_L1_error) - __pyx_type_6gevent_8resolver_5cares_channel.tp_print = 0; - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6gevent_8resolver_5cares_channel.tp_dictoffset && __pyx_type_6gevent_8resolver_5cares_channel.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_6gevent_8resolver_5cares_channel.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - if (__Pyx_SetVtable(__pyx_type_6gevent_8resolver_5cares_channel.tp_dict, __pyx_vtabptr_6gevent_8resolver_5cares_channel) < 0) __PYX_ERR(0, 254, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "channel", (PyObject *)&__pyx_type_6gevent_8resolver_5cares_channel) < 0) __PYX_ERR(0, 254, __pyx_L1_error) - __pyx_ptype_6gevent_8resolver_5cares_channel = &__pyx_type_6gevent_8resolver_5cares_channel; - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_type_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); - /*--- Type import code ---*/ - __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "type", - #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyTypeObject), - #else - sizeof(PyHeapTypeObject), - #endif - 0); if (unlikely(!__pyx_ptype_7cpython_4type_type)) __PYX_ERR(1, 9, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_variable_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); - /*--- Variable import code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_function_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); - /*--- Function import code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - - -#if PY_MAJOR_VERSION < 3 -#ifdef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC void -#else -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -#endif -#else -#ifdef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC PyObject * -#else -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -#endif -#endif -#ifndef CYTHON_SMALL_CODE -#if defined(__clang__) - #define CYTHON_SMALL_CODE -#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4))) - #define CYTHON_SMALL_CODE __attribute__((cold)) -#else - #define CYTHON_SMALL_CODE -#endif -#endif - - -#if PY_MAJOR_VERSION < 3 -__Pyx_PyMODINIT_FUNC initcares(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC initcares(void) -#else -__Pyx_PyMODINIT_FUNC PyInit_cares(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC PyInit_cares(void) -#if CYTHON_PEP489_MULTI_PHASE_INIT -{ - return PyModuleDef_Init(&__pyx_moduledef); -} -static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) { - PyObject *value = PyObject_GetAttrString(spec, from_name); - int result = 0; - if (likely(value)) { - result = PyDict_SetItemString(moddict, to_name, value); - Py_DECREF(value); - } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Clear(); - } else { - result = -1; - } - return result; -} -static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) { - PyObject *module = NULL, *moddict, *modname; - if (__pyx_m) - return __Pyx_NewRef(__pyx_m); - modname = PyObject_GetAttrString(spec, "name"); - if (unlikely(!modname)) goto bad; - module = PyModule_NewObject(modname); - Py_DECREF(modname); - if (unlikely(!module)) goto bad; - moddict = PyModule_GetDict(module); - if (unlikely(!moddict)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__") < 0)) goto bad; - return module; -bad: - Py_XDECREF(module); - return NULL; -} - - -static int __pyx_pymod_exec_cares(PyObject *__pyx_pyinit_module) -#endif -#endif -{ - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - PyObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; - PyObject *__pyx_t_13 = NULL; - PyObject *__pyx_t_14 = NULL; - PyObject *__pyx_t_15 = NULL; - PyObject *__pyx_t_16 = NULL; - PyObject *__pyx_t_17 = NULL; - PyObject *__pyx_t_18 = NULL; - PyObject *__pyx_t_19 = NULL; - PyObject *__pyx_t_20 = NULL; - PyObject *__pyx_t_21 = NULL; - PyObject *__pyx_t_22 = NULL; - PyObject *__pyx_t_23 = NULL; - PyObject *__pyx_t_24 = NULL; - PyObject *__pyx_t_25 = NULL; - PyObject *__pyx_t_26 = NULL; - PyObject *__pyx_t_27 = NULL; - __Pyx_RefNannyDeclarations - #if CYTHON_PEP489_MULTI_PHASE_INIT - if (__pyx_m && __pyx_m == __pyx_pyinit_module) return 0; - #elif PY_MAJOR_VERSION >= 3 - if (__pyx_m) return __Pyx_NewRef(__pyx_m); - #endif - #if CYTHON_REFNANNY -__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); -if (!__Pyx_RefNanny) { - PyErr_Clear(); - __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); - if (!__Pyx_RefNanny) - Py_FatalError("failed to import 'refnanny' module"); -} -#endif - __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_cares(void)", 0); - if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) - #ifdef __Pyx_CyFunction_USED - if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_FusedFunction_USED - if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Coroutine_USED - if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Generator_USED - if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_AsyncGen_USED - if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_StopAsyncIteration_USED - if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - /*--- Library function declarations ---*/ - /*--- Threads initialization code ---*/ - #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS - #ifdef WITH_THREAD /* Python build with threading support? */ - PyEval_InitThreads(); - #endif - #endif - /*--- Module creation code ---*/ - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_m = __pyx_pyinit_module; - Py_INCREF(__pyx_m); - #else - #if PY_MAJOR_VERSION < 3 - __pyx_m = Py_InitModule4("cares", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); - #else - __pyx_m = PyModule_Create(&__pyx_moduledef); - #endif - if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) - Py_INCREF(__pyx_d); - __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) - #if CYTHON_COMPILING_IN_PYPY - Py_INCREF(__pyx_b); - #endif - if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - /*--- Initialize various global constants etc. ---*/ - if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) - if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - if (__pyx_module_is_main_gevent__resolver__cares) { - if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - } - #if PY_MAJOR_VERSION >= 3 - { - PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) - if (!PyDict_GetItemString(modules, "gevent.resolver.cares")) { - if (unlikely(PyDict_SetItemString(modules, "gevent.resolver.cares", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) - } - } - #endif - /*--- Builtin init code ---*/ - if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Constants init code ---*/ - if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Global type/function init code ---*/ - (void)__Pyx_modinit_global_init_code(); - (void)__Pyx_modinit_variable_export_code(); - (void)__Pyx_modinit_function_export_code(); - if (unlikely(__Pyx_modinit_type_init_code() != 0)) goto __pyx_L1_error; - if (unlikely(__Pyx_modinit_type_import_code() != 0)) goto __pyx_L1_error; - (void)__Pyx_modinit_variable_import_code(); - (void)__Pyx_modinit_function_import_code(); - /*--- Execution code ---*/ - #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) - if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - - /* "gevent/resolver/cares.pyx":8 - * # cython: auto_pickle=False - * cimport libcares as cares - * import sys # <<<<<<<<<<<<<< - * - * from cpython.ref cimport Py_INCREF - */ - __pyx_t_1 = __Pyx_Import(__pyx_n_s_sys, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_1) < 0) __PYX_ERR(0, 8, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "gevent/resolver/cares.pyx":15 - * from cpython.mem cimport PyMem_Free - * - * from _socket import gaierror # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_gaierror); - __Pyx_GIVEREF(__pyx_n_s_gaierror); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_gaierror); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_socket, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_gaierror); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_gaierror, __pyx_t_1) < 0) __PYX_ERR(0, 15, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":18 - * - * - * __all__ = ['channel'] # <<<<<<<<<<<<<< - * - * cdef object string_types - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 18, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_channel); - __Pyx_GIVEREF(__pyx_n_s_channel); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_channel); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_all, __pyx_t_2) < 0) __PYX_ERR(0, 18, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":23 - * cdef object text_type - * - * if sys.version_info[0] >= 3: # <<<<<<<<<<<<<< - * string_types = str, - * text_type = str - */ - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 23, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_version_info); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 23, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyObject_RichCompare(__pyx_t_2, __pyx_int_3, Py_GE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 23, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (__pyx_t_3) { - - /* "gevent/resolver/cares.pyx":24 - * - * if sys.version_info[0] >= 3: - * string_types = str, # <<<<<<<<<<<<<< - * text_type = str - * else: - */ - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 24, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(((PyObject *)(&PyString_Type))); - __Pyx_GIVEREF(((PyObject *)(&PyString_Type))); - PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)(&PyString_Type))); - __Pyx_XGOTREF(__pyx_v_6gevent_8resolver_5cares_string_types); - __Pyx_DECREF_SET(__pyx_v_6gevent_8resolver_5cares_string_types, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __pyx_t_1 = 0; - - /* "gevent/resolver/cares.pyx":25 - * if sys.version_info[0] >= 3: - * string_types = str, - * text_type = str # <<<<<<<<<<<<<< - * else: - * string_types = __builtins__.basestring, - */ - __Pyx_INCREF(((PyObject *)(&PyString_Type))); - __Pyx_XGOTREF(__pyx_v_6gevent_8resolver_5cares_text_type); - __Pyx_DECREF_SET(__pyx_v_6gevent_8resolver_5cares_text_type, ((PyObject *)(&PyString_Type))); - __Pyx_GIVEREF(((PyObject *)(&PyString_Type))); - - /* "gevent/resolver/cares.pyx":23 - * cdef object text_type - * - * if sys.version_info[0] >= 3: # <<<<<<<<<<<<<< - * string_types = str, - * text_type = str - */ - goto __pyx_L2; - } - - /* "gevent/resolver/cares.pyx":27 - * text_type = str - * else: - * string_types = __builtins__.basestring, # <<<<<<<<<<<<<< - * text_type = __builtins__.unicode - * - */ - /*else*/ { - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_builtins); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 27, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_basestring); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 27, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 27, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __pyx_t_2 = 0; - __Pyx_XGOTREF(__pyx_v_6gevent_8resolver_5cares_string_types); - __Pyx_DECREF_SET(__pyx_v_6gevent_8resolver_5cares_string_types, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __pyx_t_1 = 0; - - /* "gevent/resolver/cares.pyx":28 - * else: - * string_types = __builtins__.basestring, - * text_type = __builtins__.unicode # <<<<<<<<<<<<<< - * - * TIMEOUT = 1 - */ - __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_builtins); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 28, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 28, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XGOTREF(__pyx_v_6gevent_8resolver_5cares_text_type); - __Pyx_DECREF_SET(__pyx_v_6gevent_8resolver_5cares_text_type, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; - } - __pyx_L2:; - - /* "gevent/resolver/cares.pyx":30 - * text_type = __builtins__.unicode - * - * TIMEOUT = 1 # <<<<<<<<<<<<<< - * - * DEF EV_READ = 1 - */ - if (PyDict_SetItem(__pyx_d, __pyx_n_s_TIMEOUT, __pyx_int_1) < 0) __PYX_ERR(0, 30, __pyx_L1_error) - - /* "gevent/resolver/cares.pyx":67 - * - * - * ARES_SUCCESS = cares.ARES_SUCCESS # <<<<<<<<<<<<<< - * ARES_ENODATA = cares.ARES_ENODATA - * ARES_EFORMERR = cares.ARES_EFORMERR - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_SUCCESS); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 67, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ARES_SUCCESS, __pyx_t_2) < 0) __PYX_ERR(0, 67, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":68 - * - * ARES_SUCCESS = cares.ARES_SUCCESS - * ARES_ENODATA = cares.ARES_ENODATA # <<<<<<<<<<<<<< - * ARES_EFORMERR = cares.ARES_EFORMERR - * ARES_ESERVFAIL = cares.ARES_ESERVFAIL - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_ENODATA); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 68, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ARES_ENODATA, __pyx_t_2) < 0) __PYX_ERR(0, 68, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":69 - * ARES_SUCCESS = cares.ARES_SUCCESS - * ARES_ENODATA = cares.ARES_ENODATA - * ARES_EFORMERR = cares.ARES_EFORMERR # <<<<<<<<<<<<<< - * ARES_ESERVFAIL = cares.ARES_ESERVFAIL - * ARES_ENOTFOUND = cares.ARES_ENOTFOUND - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_EFORMERR); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 69, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ARES_EFORMERR, __pyx_t_2) < 0) __PYX_ERR(0, 69, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":70 - * ARES_ENODATA = cares.ARES_ENODATA - * ARES_EFORMERR = cares.ARES_EFORMERR - * ARES_ESERVFAIL = cares.ARES_ESERVFAIL # <<<<<<<<<<<<<< - * ARES_ENOTFOUND = cares.ARES_ENOTFOUND - * ARES_ENOTIMP = cares.ARES_ENOTIMP - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_ESERVFAIL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 70, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ARES_ESERVFAIL, __pyx_t_2) < 0) __PYX_ERR(0, 70, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":71 - * ARES_EFORMERR = cares.ARES_EFORMERR - * ARES_ESERVFAIL = cares.ARES_ESERVFAIL - * ARES_ENOTFOUND = cares.ARES_ENOTFOUND # <<<<<<<<<<<<<< - * ARES_ENOTIMP = cares.ARES_ENOTIMP - * ARES_EREFUSED = cares.ARES_EREFUSED - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_ENOTFOUND); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 71, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ARES_ENOTFOUND, __pyx_t_2) < 0) __PYX_ERR(0, 71, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":72 - * ARES_ESERVFAIL = cares.ARES_ESERVFAIL - * ARES_ENOTFOUND = cares.ARES_ENOTFOUND - * ARES_ENOTIMP = cares.ARES_ENOTIMP # <<<<<<<<<<<<<< - * ARES_EREFUSED = cares.ARES_EREFUSED - * ARES_EBADQUERY = cares.ARES_EBADQUERY - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_ENOTIMP); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 72, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ARES_ENOTIMP, __pyx_t_2) < 0) __PYX_ERR(0, 72, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":73 - * ARES_ENOTFOUND = cares.ARES_ENOTFOUND - * ARES_ENOTIMP = cares.ARES_ENOTIMP - * ARES_EREFUSED = cares.ARES_EREFUSED # <<<<<<<<<<<<<< - * ARES_EBADQUERY = cares.ARES_EBADQUERY - * ARES_EBADNAME = cares.ARES_EBADNAME - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_EREFUSED); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 73, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ARES_EREFUSED, __pyx_t_2) < 0) __PYX_ERR(0, 73, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":74 - * ARES_ENOTIMP = cares.ARES_ENOTIMP - * ARES_EREFUSED = cares.ARES_EREFUSED - * ARES_EBADQUERY = cares.ARES_EBADQUERY # <<<<<<<<<<<<<< - * ARES_EBADNAME = cares.ARES_EBADNAME - * ARES_EBADFAMILY = cares.ARES_EBADFAMILY - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_EBADQUERY); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 74, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ARES_EBADQUERY, __pyx_t_2) < 0) __PYX_ERR(0, 74, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":75 - * ARES_EREFUSED = cares.ARES_EREFUSED - * ARES_EBADQUERY = cares.ARES_EBADQUERY - * ARES_EBADNAME = cares.ARES_EBADNAME # <<<<<<<<<<<<<< - * ARES_EBADFAMILY = cares.ARES_EBADFAMILY - * ARES_EBADRESP = cares.ARES_EBADRESP - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_EBADNAME); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 75, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ARES_EBADNAME, __pyx_t_2) < 0) __PYX_ERR(0, 75, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":76 - * ARES_EBADQUERY = cares.ARES_EBADQUERY - * ARES_EBADNAME = cares.ARES_EBADNAME - * ARES_EBADFAMILY = cares.ARES_EBADFAMILY # <<<<<<<<<<<<<< - * ARES_EBADRESP = cares.ARES_EBADRESP - * ARES_ECONNREFUSED = cares.ARES_ECONNREFUSED - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_EBADFAMILY); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 76, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ARES_EBADFAMILY, __pyx_t_2) < 0) __PYX_ERR(0, 76, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":77 - * ARES_EBADNAME = cares.ARES_EBADNAME - * ARES_EBADFAMILY = cares.ARES_EBADFAMILY - * ARES_EBADRESP = cares.ARES_EBADRESP # <<<<<<<<<<<<<< - * ARES_ECONNREFUSED = cares.ARES_ECONNREFUSED - * ARES_ETIMEOUT = cares.ARES_ETIMEOUT - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_EBADRESP); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 77, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ARES_EBADRESP, __pyx_t_2) < 0) __PYX_ERR(0, 77, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":78 - * ARES_EBADFAMILY = cares.ARES_EBADFAMILY - * ARES_EBADRESP = cares.ARES_EBADRESP - * ARES_ECONNREFUSED = cares.ARES_ECONNREFUSED # <<<<<<<<<<<<<< - * ARES_ETIMEOUT = cares.ARES_ETIMEOUT - * ARES_EOF = cares.ARES_EOF - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_ECONNREFUSED); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 78, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ARES_ECONNREFUSED, __pyx_t_2) < 0) __PYX_ERR(0, 78, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":79 - * ARES_EBADRESP = cares.ARES_EBADRESP - * ARES_ECONNREFUSED = cares.ARES_ECONNREFUSED - * ARES_ETIMEOUT = cares.ARES_ETIMEOUT # <<<<<<<<<<<<<< - * ARES_EOF = cares.ARES_EOF - * ARES_EFILE = cares.ARES_EFILE - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_ETIMEOUT); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 79, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ARES_ETIMEOUT, __pyx_t_2) < 0) __PYX_ERR(0, 79, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":80 - * ARES_ECONNREFUSED = cares.ARES_ECONNREFUSED - * ARES_ETIMEOUT = cares.ARES_ETIMEOUT - * ARES_EOF = cares.ARES_EOF # <<<<<<<<<<<<<< - * ARES_EFILE = cares.ARES_EFILE - * ARES_ENOMEM = cares.ARES_ENOMEM - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_EOF); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 80, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ARES_EOF, __pyx_t_2) < 0) __PYX_ERR(0, 80, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":81 - * ARES_ETIMEOUT = cares.ARES_ETIMEOUT - * ARES_EOF = cares.ARES_EOF - * ARES_EFILE = cares.ARES_EFILE # <<<<<<<<<<<<<< - * ARES_ENOMEM = cares.ARES_ENOMEM - * ARES_EDESTRUCTION = cares.ARES_EDESTRUCTION - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_EFILE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 81, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ARES_EFILE, __pyx_t_2) < 0) __PYX_ERR(0, 81, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":82 - * ARES_EOF = cares.ARES_EOF - * ARES_EFILE = cares.ARES_EFILE - * ARES_ENOMEM = cares.ARES_ENOMEM # <<<<<<<<<<<<<< - * ARES_EDESTRUCTION = cares.ARES_EDESTRUCTION - * ARES_EBADSTR = cares.ARES_EBADSTR - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_ENOMEM); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 82, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ARES_ENOMEM, __pyx_t_2) < 0) __PYX_ERR(0, 82, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":83 - * ARES_EFILE = cares.ARES_EFILE - * ARES_ENOMEM = cares.ARES_ENOMEM - * ARES_EDESTRUCTION = cares.ARES_EDESTRUCTION # <<<<<<<<<<<<<< - * ARES_EBADSTR = cares.ARES_EBADSTR - * ARES_EBADFLAGS = cares.ARES_EBADFLAGS - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_EDESTRUCTION); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 83, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ARES_EDESTRUCTION, __pyx_t_2) < 0) __PYX_ERR(0, 83, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":84 - * ARES_ENOMEM = cares.ARES_ENOMEM - * ARES_EDESTRUCTION = cares.ARES_EDESTRUCTION - * ARES_EBADSTR = cares.ARES_EBADSTR # <<<<<<<<<<<<<< - * ARES_EBADFLAGS = cares.ARES_EBADFLAGS - * ARES_ENONAME = cares.ARES_ENONAME - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_EBADSTR); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 84, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ARES_EBADSTR, __pyx_t_2) < 0) __PYX_ERR(0, 84, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":85 - * ARES_EDESTRUCTION = cares.ARES_EDESTRUCTION - * ARES_EBADSTR = cares.ARES_EBADSTR - * ARES_EBADFLAGS = cares.ARES_EBADFLAGS # <<<<<<<<<<<<<< - * ARES_ENONAME = cares.ARES_ENONAME - * ARES_EBADHINTS = cares.ARES_EBADHINTS - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_EBADFLAGS); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 85, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ARES_EBADFLAGS, __pyx_t_2) < 0) __PYX_ERR(0, 85, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":86 - * ARES_EBADSTR = cares.ARES_EBADSTR - * ARES_EBADFLAGS = cares.ARES_EBADFLAGS - * ARES_ENONAME = cares.ARES_ENONAME # <<<<<<<<<<<<<< - * ARES_EBADHINTS = cares.ARES_EBADHINTS - * ARES_ENOTINITIALIZED = cares.ARES_ENOTINITIALIZED - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_ENONAME); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 86, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ARES_ENONAME, __pyx_t_2) < 0) __PYX_ERR(0, 86, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":87 - * ARES_EBADFLAGS = cares.ARES_EBADFLAGS - * ARES_ENONAME = cares.ARES_ENONAME - * ARES_EBADHINTS = cares.ARES_EBADHINTS # <<<<<<<<<<<<<< - * ARES_ENOTINITIALIZED = cares.ARES_ENOTINITIALIZED - * ARES_ELOADIPHLPAPI = cares.ARES_ELOADIPHLPAPI - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_EBADHINTS); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 87, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ARES_EBADHINTS, __pyx_t_2) < 0) __PYX_ERR(0, 87, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":88 - * ARES_ENONAME = cares.ARES_ENONAME - * ARES_EBADHINTS = cares.ARES_EBADHINTS - * ARES_ENOTINITIALIZED = cares.ARES_ENOTINITIALIZED # <<<<<<<<<<<<<< - * ARES_ELOADIPHLPAPI = cares.ARES_ELOADIPHLPAPI - * ARES_EADDRGETNETWORKPARAMS = cares.ARES_EADDRGETNETWORKPARAMS - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_ENOTINITIALIZED); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 88, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ARES_ENOTINITIALIZED, __pyx_t_2) < 0) __PYX_ERR(0, 88, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":89 - * ARES_EBADHINTS = cares.ARES_EBADHINTS - * ARES_ENOTINITIALIZED = cares.ARES_ENOTINITIALIZED - * ARES_ELOADIPHLPAPI = cares.ARES_ELOADIPHLPAPI # <<<<<<<<<<<<<< - * ARES_EADDRGETNETWORKPARAMS = cares.ARES_EADDRGETNETWORKPARAMS - * ARES_ECANCELLED = cares.ARES_ECANCELLED - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_ELOADIPHLPAPI); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 89, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ARES_ELOADIPHLPAPI, __pyx_t_2) < 0) __PYX_ERR(0, 89, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":90 - * ARES_ENOTINITIALIZED = cares.ARES_ENOTINITIALIZED - * ARES_ELOADIPHLPAPI = cares.ARES_ELOADIPHLPAPI - * ARES_EADDRGETNETWORKPARAMS = cares.ARES_EADDRGETNETWORKPARAMS # <<<<<<<<<<<<<< - * ARES_ECANCELLED = cares.ARES_ECANCELLED - * - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_EADDRGETNETWORKPARAMS); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 90, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ARES_EADDRGETNETWORKPARAMS, __pyx_t_2) < 0) __PYX_ERR(0, 90, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":91 - * ARES_ELOADIPHLPAPI = cares.ARES_ELOADIPHLPAPI - * ARES_EADDRGETNETWORKPARAMS = cares.ARES_EADDRGETNETWORKPARAMS - * ARES_ECANCELLED = cares.ARES_ECANCELLED # <<<<<<<<<<<<<< - * - * ARES_FLAG_USEVC = cares.ARES_FLAG_USEVC - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_ECANCELLED); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 91, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ARES_ECANCELLED, __pyx_t_2) < 0) __PYX_ERR(0, 91, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":93 - * ARES_ECANCELLED = cares.ARES_ECANCELLED - * - * ARES_FLAG_USEVC = cares.ARES_FLAG_USEVC # <<<<<<<<<<<<<< - * ARES_FLAG_PRIMARY = cares.ARES_FLAG_PRIMARY - * ARES_FLAG_IGNTC = cares.ARES_FLAG_IGNTC - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_FLAG_USEVC); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 93, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ARES_FLAG_USEVC, __pyx_t_2) < 0) __PYX_ERR(0, 93, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":94 - * - * ARES_FLAG_USEVC = cares.ARES_FLAG_USEVC - * ARES_FLAG_PRIMARY = cares.ARES_FLAG_PRIMARY # <<<<<<<<<<<<<< - * ARES_FLAG_IGNTC = cares.ARES_FLAG_IGNTC - * ARES_FLAG_NORECURSE = cares.ARES_FLAG_NORECURSE - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_FLAG_PRIMARY); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 94, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ARES_FLAG_PRIMARY, __pyx_t_2) < 0) __PYX_ERR(0, 94, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":95 - * ARES_FLAG_USEVC = cares.ARES_FLAG_USEVC - * ARES_FLAG_PRIMARY = cares.ARES_FLAG_PRIMARY - * ARES_FLAG_IGNTC = cares.ARES_FLAG_IGNTC # <<<<<<<<<<<<<< - * ARES_FLAG_NORECURSE = cares.ARES_FLAG_NORECURSE - * ARES_FLAG_STAYOPEN = cares.ARES_FLAG_STAYOPEN - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_FLAG_IGNTC); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 95, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ARES_FLAG_IGNTC, __pyx_t_2) < 0) __PYX_ERR(0, 95, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":96 - * ARES_FLAG_PRIMARY = cares.ARES_FLAG_PRIMARY - * ARES_FLAG_IGNTC = cares.ARES_FLAG_IGNTC - * ARES_FLAG_NORECURSE = cares.ARES_FLAG_NORECURSE # <<<<<<<<<<<<<< - * ARES_FLAG_STAYOPEN = cares.ARES_FLAG_STAYOPEN - * ARES_FLAG_NOSEARCH = cares.ARES_FLAG_NOSEARCH - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_FLAG_NORECURSE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 96, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ARES_FLAG_NORECURSE, __pyx_t_2) < 0) __PYX_ERR(0, 96, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":97 - * ARES_FLAG_IGNTC = cares.ARES_FLAG_IGNTC - * ARES_FLAG_NORECURSE = cares.ARES_FLAG_NORECURSE - * ARES_FLAG_STAYOPEN = cares.ARES_FLAG_STAYOPEN # <<<<<<<<<<<<<< - * ARES_FLAG_NOSEARCH = cares.ARES_FLAG_NOSEARCH - * ARES_FLAG_NOALIASES = cares.ARES_FLAG_NOALIASES - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_FLAG_STAYOPEN); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 97, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ARES_FLAG_STAYOPEN, __pyx_t_2) < 0) __PYX_ERR(0, 97, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":98 - * ARES_FLAG_NORECURSE = cares.ARES_FLAG_NORECURSE - * ARES_FLAG_STAYOPEN = cares.ARES_FLAG_STAYOPEN - * ARES_FLAG_NOSEARCH = cares.ARES_FLAG_NOSEARCH # <<<<<<<<<<<<<< - * ARES_FLAG_NOALIASES = cares.ARES_FLAG_NOALIASES - * ARES_FLAG_NOCHECKRESP = cares.ARES_FLAG_NOCHECKRESP - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_FLAG_NOSEARCH); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 98, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ARES_FLAG_NOSEARCH, __pyx_t_2) < 0) __PYX_ERR(0, 98, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":99 - * ARES_FLAG_STAYOPEN = cares.ARES_FLAG_STAYOPEN - * ARES_FLAG_NOSEARCH = cares.ARES_FLAG_NOSEARCH - * ARES_FLAG_NOALIASES = cares.ARES_FLAG_NOALIASES # <<<<<<<<<<<<<< - * ARES_FLAG_NOCHECKRESP = cares.ARES_FLAG_NOCHECKRESP - * - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_FLAG_NOALIASES); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 99, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ARES_FLAG_NOALIASES, __pyx_t_2) < 0) __PYX_ERR(0, 99, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":100 - * ARES_FLAG_NOSEARCH = cares.ARES_FLAG_NOSEARCH - * ARES_FLAG_NOALIASES = cares.ARES_FLAG_NOALIASES - * ARES_FLAG_NOCHECKRESP = cares.ARES_FLAG_NOCHECKRESP # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_FLAG_NOCHECKRESP); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 100, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ARES_FLAG_NOCHECKRESP, __pyx_t_2) < 0) __PYX_ERR(0, 100, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":104 - * - * _ares_errors = dict([ - * (cares.ARES_SUCCESS, 'ARES_SUCCESS'), # <<<<<<<<<<<<<< - * (cares.ARES_ENODATA, 'ARES_ENODATA'), - * (cares.ARES_EFORMERR, 'ARES_EFORMERR'), - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_SUCCESS); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 104, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 104, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_ARES_SUCCESS); - __Pyx_GIVEREF(__pyx_n_s_ARES_SUCCESS); - PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_ARES_SUCCESS); - __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":105 - * _ares_errors = dict([ - * (cares.ARES_SUCCESS, 'ARES_SUCCESS'), - * (cares.ARES_ENODATA, 'ARES_ENODATA'), # <<<<<<<<<<<<<< - * (cares.ARES_EFORMERR, 'ARES_EFORMERR'), - * (cares.ARES_ESERVFAIL, 'ARES_ESERVFAIL'), - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_ENODATA); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 105, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 105, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_ARES_ENODATA); - __Pyx_GIVEREF(__pyx_n_s_ARES_ENODATA); - PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_n_s_ARES_ENODATA); - __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":106 - * (cares.ARES_SUCCESS, 'ARES_SUCCESS'), - * (cares.ARES_ENODATA, 'ARES_ENODATA'), - * (cares.ARES_EFORMERR, 'ARES_EFORMERR'), # <<<<<<<<<<<<<< - * (cares.ARES_ESERVFAIL, 'ARES_ESERVFAIL'), - * (cares.ARES_ENOTFOUND, 'ARES_ENOTFOUND'), - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_EFORMERR); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 106, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 106, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_ARES_EFORMERR); - __Pyx_GIVEREF(__pyx_n_s_ARES_EFORMERR); - PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_n_s_ARES_EFORMERR); - __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":107 - * (cares.ARES_ENODATA, 'ARES_ENODATA'), - * (cares.ARES_EFORMERR, 'ARES_EFORMERR'), - * (cares.ARES_ESERVFAIL, 'ARES_ESERVFAIL'), # <<<<<<<<<<<<<< - * (cares.ARES_ENOTFOUND, 'ARES_ENOTFOUND'), - * (cares.ARES_ENOTIMP, 'ARES_ENOTIMP'), - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_ESERVFAIL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 107, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 107, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_ARES_ESERVFAIL); - __Pyx_GIVEREF(__pyx_n_s_ARES_ESERVFAIL); - PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_n_s_ARES_ESERVFAIL); - __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":108 - * (cares.ARES_EFORMERR, 'ARES_EFORMERR'), - * (cares.ARES_ESERVFAIL, 'ARES_ESERVFAIL'), - * (cares.ARES_ENOTFOUND, 'ARES_ENOTFOUND'), # <<<<<<<<<<<<<< - * (cares.ARES_ENOTIMP, 'ARES_ENOTIMP'), - * (cares.ARES_EREFUSED, 'ARES_EREFUSED'), - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_ENOTFOUND); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 108, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 108, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_ARES_ENOTFOUND); - __Pyx_GIVEREF(__pyx_n_s_ARES_ENOTFOUND); - PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_n_s_ARES_ENOTFOUND); - __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":109 - * (cares.ARES_ESERVFAIL, 'ARES_ESERVFAIL'), - * (cares.ARES_ENOTFOUND, 'ARES_ENOTFOUND'), - * (cares.ARES_ENOTIMP, 'ARES_ENOTIMP'), # <<<<<<<<<<<<<< - * (cares.ARES_EREFUSED, 'ARES_EREFUSED'), - * (cares.ARES_EBADQUERY, 'ARES_EBADQUERY'), - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_ENOTIMP); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 109, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 109, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_ARES_ENOTIMP); - __Pyx_GIVEREF(__pyx_n_s_ARES_ENOTIMP); - PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_n_s_ARES_ENOTIMP); - __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":110 - * (cares.ARES_ENOTFOUND, 'ARES_ENOTFOUND'), - * (cares.ARES_ENOTIMP, 'ARES_ENOTIMP'), - * (cares.ARES_EREFUSED, 'ARES_EREFUSED'), # <<<<<<<<<<<<<< - * (cares.ARES_EBADQUERY, 'ARES_EBADQUERY'), - * (cares.ARES_EBADNAME, 'ARES_EBADNAME'), - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_EREFUSED); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 110, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 110, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_ARES_EREFUSED); - __Pyx_GIVEREF(__pyx_n_s_ARES_EREFUSED); - PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_n_s_ARES_EREFUSED); - __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":111 - * (cares.ARES_ENOTIMP, 'ARES_ENOTIMP'), - * (cares.ARES_EREFUSED, 'ARES_EREFUSED'), - * (cares.ARES_EBADQUERY, 'ARES_EBADQUERY'), # <<<<<<<<<<<<<< - * (cares.ARES_EBADNAME, 'ARES_EBADNAME'), - * (cares.ARES_EBADFAMILY, 'ARES_EBADFAMILY'), - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_EBADQUERY); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 111, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 111, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_10); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_ARES_EBADQUERY); - __Pyx_GIVEREF(__pyx_n_s_ARES_EBADQUERY); - PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_n_s_ARES_EBADQUERY); - __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":112 - * (cares.ARES_EREFUSED, 'ARES_EREFUSED'), - * (cares.ARES_EBADQUERY, 'ARES_EBADQUERY'), - * (cares.ARES_EBADNAME, 'ARES_EBADNAME'), # <<<<<<<<<<<<<< - * (cares.ARES_EBADFAMILY, 'ARES_EBADFAMILY'), - * (cares.ARES_EBADRESP, 'ARES_EBADRESP'), - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_EBADNAME); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 112, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 112, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_11); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_ARES_EBADNAME); - __Pyx_GIVEREF(__pyx_n_s_ARES_EBADNAME); - PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_n_s_ARES_EBADNAME); - __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":113 - * (cares.ARES_EBADQUERY, 'ARES_EBADQUERY'), - * (cares.ARES_EBADNAME, 'ARES_EBADNAME'), - * (cares.ARES_EBADFAMILY, 'ARES_EBADFAMILY'), # <<<<<<<<<<<<<< - * (cares.ARES_EBADRESP, 'ARES_EBADRESP'), - * (cares.ARES_ECONNREFUSED, 'ARES_ECONNREFUSED'), - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_EBADFAMILY); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 113, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 113, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_ARES_EBADFAMILY); - __Pyx_GIVEREF(__pyx_n_s_ARES_EBADFAMILY); - PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_n_s_ARES_EBADFAMILY); - __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":114 - * (cares.ARES_EBADNAME, 'ARES_EBADNAME'), - * (cares.ARES_EBADFAMILY, 'ARES_EBADFAMILY'), - * (cares.ARES_EBADRESP, 'ARES_EBADRESP'), # <<<<<<<<<<<<<< - * (cares.ARES_ECONNREFUSED, 'ARES_ECONNREFUSED'), - * (cares.ARES_ETIMEOUT, 'ARES_ETIMEOUT'), - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_EBADRESP); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 114, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_13 = PyTuple_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 114, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_13); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_ARES_EBADRESP); - __Pyx_GIVEREF(__pyx_n_s_ARES_EBADRESP); - PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_n_s_ARES_EBADRESP); - __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":115 - * (cares.ARES_EBADFAMILY, 'ARES_EBADFAMILY'), - * (cares.ARES_EBADRESP, 'ARES_EBADRESP'), - * (cares.ARES_ECONNREFUSED, 'ARES_ECONNREFUSED'), # <<<<<<<<<<<<<< - * (cares.ARES_ETIMEOUT, 'ARES_ETIMEOUT'), - * (cares.ARES_EOF, 'ARES_EOF'), - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_ECONNREFUSED); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 115, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_14 = PyTuple_New(2); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 115, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_14); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_ARES_ECONNREFUSED); - __Pyx_GIVEREF(__pyx_n_s_ARES_ECONNREFUSED); - PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_n_s_ARES_ECONNREFUSED); - __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":116 - * (cares.ARES_EBADRESP, 'ARES_EBADRESP'), - * (cares.ARES_ECONNREFUSED, 'ARES_ECONNREFUSED'), - * (cares.ARES_ETIMEOUT, 'ARES_ETIMEOUT'), # <<<<<<<<<<<<<< - * (cares.ARES_EOF, 'ARES_EOF'), - * (cares.ARES_EFILE, 'ARES_EFILE'), - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_ETIMEOUT); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 116, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_15 = PyTuple_New(2); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 116, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_15); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_ARES_ETIMEOUT); - __Pyx_GIVEREF(__pyx_n_s_ARES_ETIMEOUT); - PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_n_s_ARES_ETIMEOUT); - __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":117 - * (cares.ARES_ECONNREFUSED, 'ARES_ECONNREFUSED'), - * (cares.ARES_ETIMEOUT, 'ARES_ETIMEOUT'), - * (cares.ARES_EOF, 'ARES_EOF'), # <<<<<<<<<<<<<< - * (cares.ARES_EFILE, 'ARES_EFILE'), - * (cares.ARES_ENOMEM, 'ARES_ENOMEM'), - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_EOF); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 117, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_16 = PyTuple_New(2); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 117, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_16); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_ARES_EOF); - __Pyx_GIVEREF(__pyx_n_s_ARES_EOF); - PyTuple_SET_ITEM(__pyx_t_16, 1, __pyx_n_s_ARES_EOF); - __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":118 - * (cares.ARES_ETIMEOUT, 'ARES_ETIMEOUT'), - * (cares.ARES_EOF, 'ARES_EOF'), - * (cares.ARES_EFILE, 'ARES_EFILE'), # <<<<<<<<<<<<<< - * (cares.ARES_ENOMEM, 'ARES_ENOMEM'), - * (cares.ARES_EDESTRUCTION, 'ARES_EDESTRUCTION'), - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_EFILE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 118, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_17 = PyTuple_New(2); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 118, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_17); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_ARES_EFILE); - __Pyx_GIVEREF(__pyx_n_s_ARES_EFILE); - PyTuple_SET_ITEM(__pyx_t_17, 1, __pyx_n_s_ARES_EFILE); - __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":119 - * (cares.ARES_EOF, 'ARES_EOF'), - * (cares.ARES_EFILE, 'ARES_EFILE'), - * (cares.ARES_ENOMEM, 'ARES_ENOMEM'), # <<<<<<<<<<<<<< - * (cares.ARES_EDESTRUCTION, 'ARES_EDESTRUCTION'), - * (cares.ARES_EBADSTR, 'ARES_EBADSTR'), - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_ENOMEM); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 119, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_18 = PyTuple_New(2); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 119, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_18); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_ARES_ENOMEM); - __Pyx_GIVEREF(__pyx_n_s_ARES_ENOMEM); - PyTuple_SET_ITEM(__pyx_t_18, 1, __pyx_n_s_ARES_ENOMEM); - __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":120 - * (cares.ARES_EFILE, 'ARES_EFILE'), - * (cares.ARES_ENOMEM, 'ARES_ENOMEM'), - * (cares.ARES_EDESTRUCTION, 'ARES_EDESTRUCTION'), # <<<<<<<<<<<<<< - * (cares.ARES_EBADSTR, 'ARES_EBADSTR'), - * (cares.ARES_EBADFLAGS, 'ARES_EBADFLAGS'), - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_EDESTRUCTION); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 120, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_19 = PyTuple_New(2); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 120, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_19); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_19, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_ARES_EDESTRUCTION); - __Pyx_GIVEREF(__pyx_n_s_ARES_EDESTRUCTION); - PyTuple_SET_ITEM(__pyx_t_19, 1, __pyx_n_s_ARES_EDESTRUCTION); - __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":121 - * (cares.ARES_ENOMEM, 'ARES_ENOMEM'), - * (cares.ARES_EDESTRUCTION, 'ARES_EDESTRUCTION'), - * (cares.ARES_EBADSTR, 'ARES_EBADSTR'), # <<<<<<<<<<<<<< - * (cares.ARES_EBADFLAGS, 'ARES_EBADFLAGS'), - * (cares.ARES_ENONAME, 'ARES_ENONAME'), - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_EBADSTR); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 121, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_20 = PyTuple_New(2); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 121, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_20); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_20, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_ARES_EBADSTR); - __Pyx_GIVEREF(__pyx_n_s_ARES_EBADSTR); - PyTuple_SET_ITEM(__pyx_t_20, 1, __pyx_n_s_ARES_EBADSTR); - __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":122 - * (cares.ARES_EDESTRUCTION, 'ARES_EDESTRUCTION'), - * (cares.ARES_EBADSTR, 'ARES_EBADSTR'), - * (cares.ARES_EBADFLAGS, 'ARES_EBADFLAGS'), # <<<<<<<<<<<<<< - * (cares.ARES_ENONAME, 'ARES_ENONAME'), - * (cares.ARES_EBADHINTS, 'ARES_EBADHINTS'), - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_EBADFLAGS); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 122, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_21 = PyTuple_New(2); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 122, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_21); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_21, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_ARES_EBADFLAGS); - __Pyx_GIVEREF(__pyx_n_s_ARES_EBADFLAGS); - PyTuple_SET_ITEM(__pyx_t_21, 1, __pyx_n_s_ARES_EBADFLAGS); - __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":123 - * (cares.ARES_EBADSTR, 'ARES_EBADSTR'), - * (cares.ARES_EBADFLAGS, 'ARES_EBADFLAGS'), - * (cares.ARES_ENONAME, 'ARES_ENONAME'), # <<<<<<<<<<<<<< - * (cares.ARES_EBADHINTS, 'ARES_EBADHINTS'), - * (cares.ARES_ENOTINITIALIZED, 'ARES_ENOTINITIALIZED'), - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_ENONAME); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 123, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_22 = PyTuple_New(2); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 123, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_22); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_22, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_ARES_ENONAME); - __Pyx_GIVEREF(__pyx_n_s_ARES_ENONAME); - PyTuple_SET_ITEM(__pyx_t_22, 1, __pyx_n_s_ARES_ENONAME); - __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":124 - * (cares.ARES_EBADFLAGS, 'ARES_EBADFLAGS'), - * (cares.ARES_ENONAME, 'ARES_ENONAME'), - * (cares.ARES_EBADHINTS, 'ARES_EBADHINTS'), # <<<<<<<<<<<<<< - * (cares.ARES_ENOTINITIALIZED, 'ARES_ENOTINITIALIZED'), - * (cares.ARES_ELOADIPHLPAPI, 'ARES_ELOADIPHLPAPI'), - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_EBADHINTS); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_23 = PyTuple_New(2); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 124, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_23); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_23, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_ARES_EBADHINTS); - __Pyx_GIVEREF(__pyx_n_s_ARES_EBADHINTS); - PyTuple_SET_ITEM(__pyx_t_23, 1, __pyx_n_s_ARES_EBADHINTS); - __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":125 - * (cares.ARES_ENONAME, 'ARES_ENONAME'), - * (cares.ARES_EBADHINTS, 'ARES_EBADHINTS'), - * (cares.ARES_ENOTINITIALIZED, 'ARES_ENOTINITIALIZED'), # <<<<<<<<<<<<<< - * (cares.ARES_ELOADIPHLPAPI, 'ARES_ELOADIPHLPAPI'), - * (cares.ARES_EADDRGETNETWORKPARAMS, 'ARES_EADDRGETNETWORKPARAMS'), - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_ENOTINITIALIZED); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 125, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_24 = PyTuple_New(2); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 125, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_24); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_24, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_ARES_ENOTINITIALIZED); - __Pyx_GIVEREF(__pyx_n_s_ARES_ENOTINITIALIZED); - PyTuple_SET_ITEM(__pyx_t_24, 1, __pyx_n_s_ARES_ENOTINITIALIZED); - __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":126 - * (cares.ARES_EBADHINTS, 'ARES_EBADHINTS'), - * (cares.ARES_ENOTINITIALIZED, 'ARES_ENOTINITIALIZED'), - * (cares.ARES_ELOADIPHLPAPI, 'ARES_ELOADIPHLPAPI'), # <<<<<<<<<<<<<< - * (cares.ARES_EADDRGETNETWORKPARAMS, 'ARES_EADDRGETNETWORKPARAMS'), - * (cares.ARES_ECANCELLED, 'ARES_ECANCELLED')]) - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_ELOADIPHLPAPI); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 126, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_25 = PyTuple_New(2); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 126, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_25); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_ARES_ELOADIPHLPAPI); - __Pyx_GIVEREF(__pyx_n_s_ARES_ELOADIPHLPAPI); - PyTuple_SET_ITEM(__pyx_t_25, 1, __pyx_n_s_ARES_ELOADIPHLPAPI); - __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":127 - * (cares.ARES_ENOTINITIALIZED, 'ARES_ENOTINITIALIZED'), - * (cares.ARES_ELOADIPHLPAPI, 'ARES_ELOADIPHLPAPI'), - * (cares.ARES_EADDRGETNETWORKPARAMS, 'ARES_EADDRGETNETWORKPARAMS'), # <<<<<<<<<<<<<< - * (cares.ARES_ECANCELLED, 'ARES_ECANCELLED')]) - * - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_EADDRGETNETWORKPARAMS); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 127, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_26 = PyTuple_New(2); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 127, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_26); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_26, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_ARES_EADDRGETNETWORKPARAMS); - __Pyx_GIVEREF(__pyx_n_s_ARES_EADDRGETNETWORKPARAMS); - PyTuple_SET_ITEM(__pyx_t_26, 1, __pyx_n_s_ARES_EADDRGETNETWORKPARAMS); - __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":128 - * (cares.ARES_ELOADIPHLPAPI, 'ARES_ELOADIPHLPAPI'), - * (cares.ARES_EADDRGETNETWORKPARAMS, 'ARES_EADDRGETNETWORKPARAMS'), - * (cares.ARES_ECANCELLED, 'ARES_ECANCELLED')]) # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_2 = __Pyx_PyInt_From_int(ARES_ECANCELLED); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 128, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_27 = PyTuple_New(2); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 128, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_27); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_27, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_n_s_ARES_ECANCELLED); - __Pyx_GIVEREF(__pyx_n_s_ARES_ECANCELLED); - PyTuple_SET_ITEM(__pyx_t_27, 1, __pyx_n_s_ARES_ECANCELLED); - __pyx_t_2 = 0; - - /* "gevent/resolver/cares.pyx":103 - * - * - * _ares_errors = dict([ # <<<<<<<<<<<<<< - * (cares.ARES_SUCCESS, 'ARES_SUCCESS'), - * (cares.ARES_ENODATA, 'ARES_ENODATA'), - */ - __pyx_t_2 = PyList_New(25); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 103, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_1); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_4); - PyList_SET_ITEM(__pyx_t_2, 1, __pyx_t_4); - __Pyx_GIVEREF(__pyx_t_5); - PyList_SET_ITEM(__pyx_t_2, 2, __pyx_t_5); - __Pyx_GIVEREF(__pyx_t_6); - PyList_SET_ITEM(__pyx_t_2, 3, __pyx_t_6); - __Pyx_GIVEREF(__pyx_t_7); - PyList_SET_ITEM(__pyx_t_2, 4, __pyx_t_7); - __Pyx_GIVEREF(__pyx_t_8); - PyList_SET_ITEM(__pyx_t_2, 5, __pyx_t_8); - __Pyx_GIVEREF(__pyx_t_9); - PyList_SET_ITEM(__pyx_t_2, 6, __pyx_t_9); - __Pyx_GIVEREF(__pyx_t_10); - PyList_SET_ITEM(__pyx_t_2, 7, __pyx_t_10); - __Pyx_GIVEREF(__pyx_t_11); - PyList_SET_ITEM(__pyx_t_2, 8, __pyx_t_11); - __Pyx_GIVEREF(__pyx_t_12); - PyList_SET_ITEM(__pyx_t_2, 9, __pyx_t_12); - __Pyx_GIVEREF(__pyx_t_13); - PyList_SET_ITEM(__pyx_t_2, 10, __pyx_t_13); - __Pyx_GIVEREF(__pyx_t_14); - PyList_SET_ITEM(__pyx_t_2, 11, __pyx_t_14); - __Pyx_GIVEREF(__pyx_t_15); - PyList_SET_ITEM(__pyx_t_2, 12, __pyx_t_15); - __Pyx_GIVEREF(__pyx_t_16); - PyList_SET_ITEM(__pyx_t_2, 13, __pyx_t_16); - __Pyx_GIVEREF(__pyx_t_17); - PyList_SET_ITEM(__pyx_t_2, 14, __pyx_t_17); - __Pyx_GIVEREF(__pyx_t_18); - PyList_SET_ITEM(__pyx_t_2, 15, __pyx_t_18); - __Pyx_GIVEREF(__pyx_t_19); - PyList_SET_ITEM(__pyx_t_2, 16, __pyx_t_19); - __Pyx_GIVEREF(__pyx_t_20); - PyList_SET_ITEM(__pyx_t_2, 17, __pyx_t_20); - __Pyx_GIVEREF(__pyx_t_21); - PyList_SET_ITEM(__pyx_t_2, 18, __pyx_t_21); - __Pyx_GIVEREF(__pyx_t_22); - PyList_SET_ITEM(__pyx_t_2, 19, __pyx_t_22); - __Pyx_GIVEREF(__pyx_t_23); - PyList_SET_ITEM(__pyx_t_2, 20, __pyx_t_23); - __Pyx_GIVEREF(__pyx_t_24); - PyList_SET_ITEM(__pyx_t_2, 21, __pyx_t_24); - __Pyx_GIVEREF(__pyx_t_25); - PyList_SET_ITEM(__pyx_t_2, 22, __pyx_t_25); - __Pyx_GIVEREF(__pyx_t_26); - PyList_SET_ITEM(__pyx_t_2, 23, __pyx_t_26); - __Pyx_GIVEREF(__pyx_t_27); - PyList_SET_ITEM(__pyx_t_2, 24, __pyx_t_27); - __pyx_t_1 = 0; - __pyx_t_4 = 0; - __pyx_t_5 = 0; - __pyx_t_6 = 0; - __pyx_t_7 = 0; - __pyx_t_8 = 0; - __pyx_t_9 = 0; - __pyx_t_10 = 0; - __pyx_t_11 = 0; - __pyx_t_12 = 0; - __pyx_t_13 = 0; - __pyx_t_14 = 0; - __pyx_t_15 = 0; - __pyx_t_16 = 0; - __pyx_t_17 = 0; - __pyx_t_18 = 0; - __pyx_t_19 = 0; - __pyx_t_20 = 0; - __pyx_t_21 = 0; - __pyx_t_22 = 0; - __pyx_t_23 = 0; - __pyx_t_24 = 0; - __pyx_t_25 = 0; - __pyx_t_26 = 0; - __pyx_t_27 = 0; - __pyx_t_27 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), __pyx_t_2); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 103, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_27); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ares_errors, __pyx_t_27) < 0) __PYX_ERR(0, 103, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0; - - /* "gevent/resolver/cares.pyx":132 - * - * # maps c-ares flag to _socket module flag - * _cares_flag_map = None # <<<<<<<<<<<<<< - * - * - */ - if (PyDict_SetItem(__pyx_d, __pyx_n_s_cares_flag_map, Py_None) < 0) __PYX_ERR(0, 132, __pyx_L1_error) - - /* "gevent/resolver/cares.pyx":146 - * - * - * cpdef _convert_cares_flags(int flags, int default=cares.ARES_NI_LOOKUPHOST|cares.ARES_NI_LOOKUPSERVICE): # <<<<<<<<<<<<<< - * if _cares_flag_map is None: - * _prepare_cares_flag_map() - */ - __pyx_k_ = (ARES_NI_LOOKUPHOST | ARES_NI_LOOKUPSERVICE); - __pyx_k_ = (ARES_NI_LOOKUPHOST | ARES_NI_LOOKUPSERVICE); - - /* "gevent/resolver/cares.pyx":162 - * - * - * class InvalidIP(ValueError): # <<<<<<<<<<<<<< - * pass - * - */ - __pyx_t_27 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__6); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 162, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_27); - __pyx_t_2 = __Pyx_Py3MetaclassPrepare(__pyx_t_27, __pyx_tuple__6, __pyx_n_s_InvalidIP, __pyx_n_s_InvalidIP, (PyObject *) NULL, __pyx_n_s_gevent_resolver_cares, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 162, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_26 = __Pyx_Py3ClassCreate(__pyx_t_27, __pyx_n_s_InvalidIP, __pyx_tuple__6, __pyx_t_2, NULL, 0, 1); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 162, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_26); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_InvalidIP, __pyx_t_26) < 0) __PYX_ERR(0, 162, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0; - - /* "gevent/resolver/cares.pyx":199 - * - * - * class ares_host_result(tuple): # <<<<<<<<<<<<<< - * - * def __new__(cls, family, iterable): - */ - __pyx_t_27 = PyTuple_New(1); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 199, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_27); - __Pyx_INCREF(((PyObject *)(&PyTuple_Type))); - __Pyx_GIVEREF(((PyObject *)(&PyTuple_Type))); - PyTuple_SET_ITEM(__pyx_t_27, 0, ((PyObject *)(&PyTuple_Type))); - __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_27); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 199, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_26 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_27, __pyx_n_s_ares_host_result, __pyx_n_s_ares_host_result, (PyObject *) NULL, __pyx_n_s_gevent_resolver_cares, (PyObject *) NULL); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 199, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_26); - - /* "gevent/resolver/cares.pyx":201 - * class ares_host_result(tuple): - * - * def __new__(cls, family, iterable): # <<<<<<<<<<<<<< - * cdef object self = tuple.__new__(cls, iterable) - * self.family = family - */ - __pyx_t_25 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_8resolver_5cares_16ares_host_result_1__new__, __Pyx_CYFUNCTION_STATICMETHOD, __pyx_n_s_ares_host_result___new, NULL, __pyx_n_s_gevent_resolver_cares, __pyx_d, ((PyObject *)__pyx_codeobj__8)); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 201, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_25); - if (__Pyx_SetNameInClass(__pyx_t_26, __pyx_n_s_new, __pyx_t_25) < 0) __PYX_ERR(0, 201, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0; - - /* "gevent/resolver/cares.pyx":206 - * return self - * - * def __getnewargs__(self): # <<<<<<<<<<<<<< - * return (self.family, tuple(self)) - * - */ - __pyx_t_25 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6gevent_8resolver_5cares_16ares_host_result_3__getnewargs__, 0, __pyx_n_s_ares_host_result___getnewargs, NULL, __pyx_n_s_gevent_resolver_cares, __pyx_d, ((PyObject *)__pyx_codeobj__10)); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 206, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_25); - if (__Pyx_SetNameInClass(__pyx_t_26, __pyx_n_s_getnewargs, __pyx_t_25) < 0) __PYX_ERR(0, 206, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0; - - /* "gevent/resolver/cares.pyx":199 - * - * - * class ares_host_result(tuple): # <<<<<<<<<<<<<< - * - * def __new__(cls, family, iterable): - */ - __pyx_t_25 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_ares_host_result, __pyx_t_27, __pyx_t_26, NULL, 0, 1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 199, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_25); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_ares_host_result, __pyx_t_25) < 0) __PYX_ERR(0, 199, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0; - __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0; - - /* "gevent/resolver/cares.pyx":410 - * cares.ares_process_fd(self.channel, read_fd, write_fd) - * - * def gethostbyname(self, object callback, char* name, int family=AF_INET): # <<<<<<<<<<<<<< - * if not self.channel: - * raise gaierror(cares.ARES_EDESTRUCTION, 'this ares channel has been destroyed') - */ - __pyx_k__5 = AF_INET; - - /* "gevent/resolver/cares.pyx":1 - * # Copyright (c) 2011-2012 Denis Bilenko. See LICENSE for details. # <<<<<<<<<<<<<< - * # Automatic pickling of cdef classes was added in 0.26. Unfortunately it - * # seems to be buggy (at least for the `result` class) and produces code that - */ - __pyx_t_27 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_27); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_27) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0; - - /*--- Wrapped vars code ---*/ - - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_XDECREF(__pyx_t_9); - __Pyx_XDECREF(__pyx_t_10); - __Pyx_XDECREF(__pyx_t_11); - __Pyx_XDECREF(__pyx_t_12); - __Pyx_XDECREF(__pyx_t_13); - __Pyx_XDECREF(__pyx_t_14); - __Pyx_XDECREF(__pyx_t_15); - __Pyx_XDECREF(__pyx_t_16); - __Pyx_XDECREF(__pyx_t_17); - __Pyx_XDECREF(__pyx_t_18); - __Pyx_XDECREF(__pyx_t_19); - __Pyx_XDECREF(__pyx_t_20); - __Pyx_XDECREF(__pyx_t_21); - __Pyx_XDECREF(__pyx_t_22); - __Pyx_XDECREF(__pyx_t_23); - __Pyx_XDECREF(__pyx_t_24); - __Pyx_XDECREF(__pyx_t_25); - __Pyx_XDECREF(__pyx_t_26); - __Pyx_XDECREF(__pyx_t_27); - if (__pyx_m) { - if (__pyx_d) { - __Pyx_AddTraceback("init gevent.resolver.cares", 0, __pyx_lineno, __pyx_filename); - } - Py_DECREF(__pyx_m); __pyx_m = 0; - } else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_ImportError, "init gevent.resolver.cares"); - } - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - #if CYTHON_PEP489_MULTI_PHASE_INIT - return (__pyx_m != NULL) ? 0 : -1; - #elif PY_MAJOR_VERSION >= 3 - return __pyx_m; - #else - return; - #endif -} - -/* --- Runtime support code --- */ -/* Refnanny */ -#if CYTHON_REFNANNY -static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { - PyObject *m = NULL, *p = NULL; - void *r = NULL; - m = PyImport_ImportModule((char *)modname); - if (!m) goto end; - p = PyObject_GetAttrString(m, (char *)"RefNannyAPI"); - if (!p) goto end; - r = PyLong_AsVoidPtr(p); -end: - Py_XDECREF(p); - Py_XDECREF(m); - return (__Pyx_RefNannyAPIStruct *)r; -} -#endif - -/* PyObjectGetAttrStr */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_getattro)) - return tp->tp_getattro(obj, attr_name); -#if PY_MAJOR_VERSION < 3 - if (likely(tp->tp_getattr)) - return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); -#endif - return PyObject_GetAttr(obj, attr_name); -} -#endif - -/* GetBuiltinName */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name) { - PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); - if (unlikely(!result)) { - PyErr_Format(PyExc_NameError, -#if PY_MAJOR_VERSION >= 3 - "name '%U' is not defined", name); -#else - "name '%.200s' is not defined", PyString_AS_STRING(name)); -#endif - } - return result; -} - -/* Import */ -static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { - PyObject *empty_list = 0; - PyObject *module = 0; - PyObject *global_dict = 0; - PyObject *empty_dict = 0; - PyObject *list; - #if PY_MAJOR_VERSION < 3 - PyObject *py_import; - py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); - if (!py_import) - goto bad; - #endif - if (from_list) - list = from_list; - else { - empty_list = PyList_New(0); - if (!empty_list) - goto bad; - list = empty_list; - } - global_dict = PyModule_GetDict(__pyx_m); - if (!global_dict) - goto bad; - empty_dict = PyDict_New(); - if (!empty_dict) - goto bad; - { - #if PY_MAJOR_VERSION >= 3 - if (level == -1) { - if (strchr(__Pyx_MODULE_NAME, '.')) { - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, 1); - if (!module) { - if (!PyErr_ExceptionMatches(PyExc_ImportError)) - goto bad; - PyErr_Clear(); - } - } - level = 0; - } - #endif - if (!module) { - #if PY_MAJOR_VERSION < 3 - PyObject *py_level = PyInt_FromLong(level); - if (!py_level) - goto bad; - module = PyObject_CallFunctionObjArgs(py_import, - name, global_dict, empty_dict, list, py_level, NULL); - Py_DECREF(py_level); - #else - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, level); - #endif - } - } -bad: - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(py_import); - #endif - Py_XDECREF(empty_list); - Py_XDECREF(empty_dict); - return module; -} - -/* PyErrExceptionMatches */ -#if CYTHON_FAST_THREAD_STATE -static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; i<n; i++) { - if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1; - } -#endif - for (i=0; i<n; i++) { - if (__Pyx_PyErr_GivenExceptionMatches(exc_type, PyTuple_GET_ITEM(tuple, i))) return 1; - } - return 0; -} -static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) { - PyObject *exc_type = tstate->curexc_type; - if (exc_type == err) return 1; - if (unlikely(!exc_type)) return 0; - if (unlikely(PyTuple_Check(err))) - return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); - return __Pyx_PyErr_GivenExceptionMatches(exc_type, err); -} -#endif - -/* PyErrFetchRestore */ -#if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - tmp_type = tstate->curexc_type; - tmp_value = tstate->curexc_value; - tmp_tb = tstate->curexc_traceback; - tstate->curexc_type = type; - tstate->curexc_value = value; - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - *type = tstate->curexc_type; - *value = tstate->curexc_value; - *tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -} -#endif - -/* GetAttr */ -static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) { -#if CYTHON_USE_TYPE_SLOTS -#if PY_MAJOR_VERSION >= 3 - if (likely(PyUnicode_Check(n))) -#else - if (likely(PyString_Check(n))) -#endif - return __Pyx_PyObject_GetAttrStr(o, n); -#endif - return PyObject_GetAttr(o, n); -} - -/* GetAttr3 */ -static PyObject *__Pyx_GetAttr3Default(PyObject *d) { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) - return NULL; - __Pyx_PyErr_Clear(); - Py_INCREF(d); - return d; -} -static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) { - PyObject *r = __Pyx_GetAttr(o, n); - return (likely(r)) ? r : __Pyx_GetAttr3Default(d); -} - -/* GetModuleGlobalName */ -static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { - PyObject *result; -#if !CYTHON_AVOID_BORROWED_REFS -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 - result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); - if (likely(result)) { - Py_INCREF(result); - } else if (unlikely(PyErr_Occurred())) { - result = NULL; - } else { -#else - result = PyDict_GetItem(__pyx_d, name); - if (likely(result)) { - Py_INCREF(result); - } else { -#endif -#else - result = PyObject_GetItem(__pyx_d, name); - if (!result) { - PyErr_Clear(); -#endif - result = __Pyx_GetBuiltinName(name); - } - return result; -} - -/* RaiseTooManyValuesToUnpack */ - static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { - PyErr_Format(PyExc_ValueError, - "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); -} - -/* RaiseNeedMoreValuesToUnpack */ - static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { - PyErr_Format(PyExc_ValueError, - "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", - index, (index == 1) ? "" : "s"); -} - -/* IterFinish */ - static CYTHON_INLINE int __Pyx_IterFinish(void) { -#if CYTHON_FAST_THREAD_STATE - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject* exc_type = tstate->curexc_type; - if (unlikely(exc_type)) { - if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) { - PyObject *exc_value, *exc_tb; - exc_value = tstate->curexc_value; - exc_tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; - Py_DECREF(exc_type); - Py_XDECREF(exc_value); - Py_XDECREF(exc_tb); - return 0; - } else { - return -1; - } - } - return 0; -#else - if (unlikely(PyErr_Occurred())) { - if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) { - PyErr_Clear(); - return 0; - } else { - return -1; - } - } - return 0; -#endif -} - -/* UnpackItemEndCheck */ - static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { - if (unlikely(retval)) { - Py_DECREF(retval); - __Pyx_RaiseTooManyValuesError(expected); - return -1; - } else { - return __Pyx_IterFinish(); - } - return 0; -} - -/* PyFunctionFastCall */ - #if CYTHON_FAST_PYCALL -#include "frameobject.h" -static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, - PyObject *globals) { - PyFrameObject *f; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject **fastlocals; - Py_ssize_t i; - PyObject *result; - assert(globals != NULL); - /* XXX Perhaps we should create a specialized - PyFrame_New() that doesn't take locals, but does - take builtins without sanity checking them. - */ - assert(tstate != NULL); - f = PyFrame_New(tstate, co, globals, NULL); - if (f == NULL) { - return NULL; - } - fastlocals = f->f_localsplus; - for (i = 0; i < na; i++) { - Py_INCREF(*args); - fastlocals[i] = *args++; - } - result = PyEval_EvalFrameEx(f,0); - ++tstate->recursion_depth; - Py_DECREF(f); - --tstate->recursion_depth; - return result; -} -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs) { - PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); - PyObject *globals = PyFunction_GET_GLOBALS(func); - PyObject *argdefs = PyFunction_GET_DEFAULTS(func); - PyObject *closure; -#if PY_MAJOR_VERSION >= 3 - PyObject *kwdefs; -#endif - PyObject *kwtuple, **k; - PyObject **d; - Py_ssize_t nd; - Py_ssize_t nk; - PyObject *result; - assert(kwargs == NULL || PyDict_Check(kwargs)); - nk = kwargs ? PyDict_Size(kwargs) : 0; - if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { - return NULL; - } - if ( -#if PY_MAJOR_VERSION >= 3 - co->co_kwonlyargcount == 0 && -#endif - likely(kwargs == NULL || nk == 0) && - co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { - if (argdefs == NULL && co->co_argcount == nargs) { - result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); - goto done; - } - else if (nargs == 0 && argdefs != NULL - && co->co_argcount == Py_SIZE(argdefs)) { - /* function called with no arguments, but all parameters have - a default value: use default values as arguments .*/ - args = &PyTuple_GET_ITEM(argdefs, 0); - result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); - goto done; - } - } - if (kwargs != NULL) { - Py_ssize_t pos, i; - kwtuple = PyTuple_New(2 * nk); - if (kwtuple == NULL) { - result = NULL; - goto done; - } - k = &PyTuple_GET_ITEM(kwtuple, 0); - pos = i = 0; - while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { - Py_INCREF(k[i]); - Py_INCREF(k[i+1]); - i += 2; - } - nk = i / 2; - } - else { - kwtuple = NULL; - k = NULL; - } - closure = PyFunction_GET_CLOSURE(func); -#if PY_MAJOR_VERSION >= 3 - kwdefs = PyFunction_GET_KW_DEFAULTS(func); -#endif - if (argdefs != NULL) { - d = &PyTuple_GET_ITEM(argdefs, 0); - nd = Py_SIZE(argdefs); - } - else { - d = NULL; - nd = 0; - } -#if PY_MAJOR_VERSION >= 3 - result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, - args, nargs, - k, (int)nk, - d, (int)nd, kwdefs, closure); -#else - result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, - args, nargs, - k, (int)nk, - d, (int)nd, closure); -#endif - Py_XDECREF(kwtuple); -done: - Py_LeaveRecursiveCall(); - return result; -} -#endif -#endif - -/* PyCFunctionFastCall */ - #if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { - PyCFunctionObject *func = (PyCFunctionObject*)func_obj; - PyCFunction meth = PyCFunction_GET_FUNCTION(func); - PyObject *self = PyCFunction_GET_SELF(func); - int flags = PyCFunction_GET_FLAGS(func); - assert(PyCFunction_Check(func)); - assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))); - assert(nargs >= 0); - assert(nargs == 0 || args != NULL); - /* _PyCFunction_FastCallDict() must not be called with an exception set, - because it may clear it (directly or indirectly) and so the - caller loses its exception */ - assert(!PyErr_Occurred()); - if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { - return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL); - } else { - return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs); - } -} -#endif - -/* PyObjectCall */ - #if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { - PyObject *result; - ternaryfunc call = func->ob_type->tp_call; - if (unlikely(!call)) - return PyObject_Call(func, arg, kw); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = (*call)(func, arg, kw); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* RaiseException */ - #if PY_MAJOR_VERSION < 3 -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, - CYTHON_UNUSED PyObject *cause) { - __Pyx_PyThreadState_declare - Py_XINCREF(type); - if (!value || value == Py_None) - value = NULL; - else - Py_INCREF(value); - if (!tb || tb == Py_None) - tb = NULL; - else { - Py_INCREF(tb); - if (!PyTraceBack_Check(tb)) { - PyErr_SetString(PyExc_TypeError, - "raise: arg 3 must be a traceback or None"); - goto raise_error; - } - } - if (PyType_Check(type)) { -#if CYTHON_COMPILING_IN_PYPY - if (!value) { - Py_INCREF(Py_None); - value = Py_None; - } -#endif - PyErr_NormalizeException(&type, &value, &tb); - } else { - if (value) { - PyErr_SetString(PyExc_TypeError, - "instance exception may not have a separate value"); - goto raise_error; - } - value = type; - type = (PyObject*) Py_TYPE(type); - Py_INCREF(type); - if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { - PyErr_SetString(PyExc_TypeError, - "raise: exception class must be a subclass of BaseException"); - goto raise_error; - } - } - __Pyx_PyThreadState_assign - __Pyx_ErrRestore(type, value, tb); - return; -raise_error: - Py_XDECREF(value); - Py_XDECREF(type); - Py_XDECREF(tb); - return; -} -#else -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { - PyObject* owned_instance = NULL; - if (tb == Py_None) { - tb = 0; - } else if (tb && !PyTraceBack_Check(tb)) { - PyErr_SetString(PyExc_TypeError, - "raise: arg 3 must be a traceback or None"); - goto bad; - } - if (value == Py_None) - value = 0; - if (PyExceptionInstance_Check(type)) { - if (value) { - PyErr_SetString(PyExc_TypeError, - "instance exception may not have a separate value"); - goto bad; - } - value = type; - type = (PyObject*) Py_TYPE(value); - } else if (PyExceptionClass_Check(type)) { - PyObject *instance_class = NULL; - if (value && PyExceptionInstance_Check(value)) { - instance_class = (PyObject*) Py_TYPE(value); - if (instance_class != type) { - int is_subclass = PyObject_IsSubclass(instance_class, type); - if (!is_subclass) { - instance_class = NULL; - } else if (unlikely(is_subclass == -1)) { - goto bad; - } else { - type = instance_class; - } - } - } - if (!instance_class) { - PyObject *args; - if (!value) - args = PyTuple_New(0); - else if (PyTuple_Check(value)) { - Py_INCREF(value); - args = value; - } else - args = PyTuple_Pack(1, value); - if (!args) - goto bad; - owned_instance = PyObject_Call(type, args, NULL); - Py_DECREF(args); - if (!owned_instance) - goto bad; - value = owned_instance; - if (!PyExceptionInstance_Check(value)) { - PyErr_Format(PyExc_TypeError, - "calling %R should have returned an instance of " - "BaseException, not %R", - type, Py_TYPE(value)); - goto bad; - } - } - } else { - PyErr_SetString(PyExc_TypeError, - "raise: exception class must be a subclass of BaseException"); - goto bad; - } - if (cause) { - PyObject *fixed_cause; - if (cause == Py_None) { - fixed_cause = NULL; - } else if (PyExceptionClass_Check(cause)) { - fixed_cause = PyObject_CallObject(cause, NULL); - if (fixed_cause == NULL) - goto bad; - } else if (PyExceptionInstance_Check(cause)) { - fixed_cause = cause; - Py_INCREF(fixed_cause); - } else { - PyErr_SetString(PyExc_TypeError, - "exception causes must derive from " - "BaseException"); - goto bad; - } - PyException_SetCause(value, fixed_cause); - } - PyErr_SetObject(type, value); - if (tb) { -#if CYTHON_COMPILING_IN_PYPY - PyObject *tmp_type, *tmp_value, *tmp_tb; - PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); - Py_INCREF(tb); - PyErr_Restore(tmp_type, tmp_value, tb); - Py_XDECREF(tmp_tb); -#else - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject* tmp_tb = tstate->curexc_traceback; - if (tb != tmp_tb) { - Py_INCREF(tb); - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_tb); - } -#endif - } -bad: - Py_XDECREF(owned_instance); - return; -} -#endif - -/* RaiseDoubleKeywords */ - static void __Pyx_RaiseDoubleKeywordsError( - const char* func_name, - PyObject* kw_name) -{ - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION >= 3 - "%s() got multiple values for keyword argument '%U'", func_name, kw_name); - #else - "%s() got multiple values for keyword argument '%s'", func_name, - PyString_AsString(kw_name)); - #endif -} - -/* ParseKeywords */ - static int __Pyx_ParseOptionalKeywords( - PyObject *kwds, - PyObject **argnames[], - PyObject *kwds2, - PyObject *values[], - Py_ssize_t num_pos_args, - const char* function_name) -{ - PyObject *key = 0, *value = 0; - Py_ssize_t pos = 0; - PyObject*** name; - PyObject*** first_kw_arg = argnames + num_pos_args; - while (PyDict_Next(kwds, &pos, &key, &value)) { - name = first_kw_arg; - while (*name && (**name != key)) name++; - if (*name) { - values[name-argnames] = value; - continue; - } - name = first_kw_arg; - #if PY_MAJOR_VERSION < 3 - if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) { - while (*name) { - if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) - && _PyString_Eq(**name, key)) { - values[name-argnames] = value; - break; - } - name++; - } - if (*name) continue; - else { - PyObject*** argname = argnames; - while (argname != first_kw_arg) { - if ((**argname == key) || ( - (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) - && _PyString_Eq(**argname, key))) { - goto arg_passed_twice; - } - argname++; - } - } - } else - #endif - if (likely(PyUnicode_Check(key))) { - while (*name) { - int cmp = (**name == key) ? 0 : - #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 : - #endif - PyUnicode_Compare(**name, key); - if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; - if (cmp == 0) { - values[name-argnames] = value; - break; - } - name++; - } - if (*name) continue; - else { - PyObject*** argname = argnames; - while (argname != first_kw_arg) { - int cmp = (**argname == key) ? 0 : - #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 : - #endif - PyUnicode_Compare(**argname, key); - if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; - if (cmp == 0) goto arg_passed_twice; - argname++; - } - } - } else - goto invalid_keyword_type; - if (kwds2) { - if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; - } else { - goto invalid_keyword; - } - } - return 0; -arg_passed_twice: - __Pyx_RaiseDoubleKeywordsError(function_name, key); - goto bad; -invalid_keyword_type: - PyErr_Format(PyExc_TypeError, - "%.200s() keywords must be strings", function_name); - goto bad; -invalid_keyword: - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION < 3 - "%.200s() got an unexpected keyword argument '%.200s'", - function_name, PyString_AsString(key)); - #else - "%s() got an unexpected keyword argument '%U'", - function_name, key); - #endif -bad: - return -1; -} - -/* RaiseArgTupleInvalid */ - static void __Pyx_RaiseArgtupleInvalid( - const char* func_name, - int exact, - Py_ssize_t num_min, - Py_ssize_t num_max, - Py_ssize_t num_found) -{ - Py_ssize_t num_expected; - const char *more_or_less; - if (num_found < num_min) { - num_expected = num_min; - more_or_less = "at least"; - } else { - num_expected = num_max; - more_or_less = "at most"; - } - if (exact) { - more_or_less = "exactly"; - } - PyErr_Format(PyExc_TypeError, - "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", - func_name, more_or_less, num_expected, - (num_expected == 1) ? "" : "s", num_found); -} - -/* PyObjectCallMethO */ - #if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { - PyObject *self, *result; - PyCFunction cfunc; - cfunc = PyCFunction_GET_FUNCTION(func); - self = PyCFunction_GET_SELF(func); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = cfunc(self, arg); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCallOneArg */ - #if CYTHON_COMPILING_IN_CPYTHON -static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_New(1); - if (unlikely(!args)) return NULL; - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 0, arg); - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, &arg, 1); - } -#endif - if (likely(PyCFunction_Check(func))) { - if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { - return __Pyx_PyObject_CallMethO(func, arg); -#if CYTHON_FAST_PYCCALL - } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { - return __Pyx_PyCFunction_FastCall(func, &arg, 1); -#endif - } - } - return __Pyx__PyObject_CallOneArg(func, arg); -} -#else -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_Pack(1, arg); - if (unlikely(!args)) return NULL; - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -#endif - -/* WriteUnraisableException */ - static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, - CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename, - int full_traceback, CYTHON_UNUSED int nogil) { - PyObject *old_exc, *old_val, *old_tb; - PyObject *ctx; - __Pyx_PyThreadState_declare -#ifdef WITH_THREAD - PyGILState_STATE state; - if (nogil) - state = PyGILState_Ensure(); -#ifdef _MSC_VER - else state = (PyGILState_STATE)-1; -#endif -#endif - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&old_exc, &old_val, &old_tb); - if (full_traceback) { - Py_XINCREF(old_exc); - Py_XINCREF(old_val); - Py_XINCREF(old_tb); - __Pyx_ErrRestore(old_exc, old_val, old_tb); - PyErr_PrintEx(1); - } - #if PY_MAJOR_VERSION < 3 - ctx = PyString_FromString(name); - #else - ctx = PyUnicode_FromString(name); - #endif - __Pyx_ErrRestore(old_exc, old_val, old_tb); - if (!ctx) { - PyErr_WriteUnraisable(Py_None); - } else { - PyErr_WriteUnraisable(ctx); - Py_DECREF(ctx); - } -#ifdef WITH_THREAD - if (nogil) - PyGILState_Release(state); -#endif -} - -/* PyObjectSetAttrStr */ - #if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_setattro)) - return tp->tp_setattro(obj, attr_name, value); -#if PY_MAJOR_VERSION < 3 - if (likely(tp->tp_setattr)) - return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value); -#endif - return PyObject_SetAttr(obj, attr_name, value); -} -#endif - -/* RaiseNoneIterError */ - static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); -} - -/* ExtTypeTest */ - static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { - if (unlikely(!type)) { - PyErr_SetString(PyExc_SystemError, "Missing type object"); - return 0; - } - if (likely(__Pyx_TypeCheck(obj, type))) - return 1; - PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s", - Py_TYPE(obj)->tp_name, type->tp_name); - return 0; -} - -/* SaveResetException */ - #if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - #if PY_VERSION_HEX >= 0x030700A3 - *type = tstate->exc_state.exc_type; - *value = tstate->exc_state.exc_value; - *tb = tstate->exc_state.exc_traceback; - #else - *type = tstate->exc_type; - *value = tstate->exc_value; - *tb = tstate->exc_traceback; - #endif - Py_XINCREF(*type); - Py_XINCREF(*value); - Py_XINCREF(*tb); -} -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - #if PY_VERSION_HEX >= 0x030700A3 - tmp_type = tstate->exc_state.exc_type; - tmp_value = tstate->exc_state.exc_value; - tmp_tb = tstate->exc_state.exc_traceback; - tstate->exc_state.exc_type = type; - tstate->exc_state.exc_value = value; - tstate->exc_state.exc_traceback = tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = type; - tstate->exc_value = value; - tstate->exc_traceback = tb; - #endif - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} -#endif - -/* GetException */ - #if CYTHON_FAST_THREAD_STATE -static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { -#else -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) { -#endif - PyObject *local_type, *local_value, *local_tb; -#if CYTHON_FAST_THREAD_STATE - PyObject *tmp_type, *tmp_value, *tmp_tb; - local_type = tstate->curexc_type; - local_value = tstate->curexc_value; - local_tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -#else - PyErr_Fetch(&local_type, &local_value, &local_tb); -#endif - PyErr_NormalizeException(&local_type, &local_value, &local_tb); -#if CYTHON_FAST_THREAD_STATE - if (unlikely(tstate->curexc_type)) -#else - if (unlikely(PyErr_Occurred())) -#endif - goto bad; - #if PY_MAJOR_VERSION >= 3 - if (local_tb) { - if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) - goto bad; - } - #endif - Py_XINCREF(local_tb); - Py_XINCREF(local_type); - Py_XINCREF(local_value); - *type = local_type; - *value = local_value; - *tb = local_tb; -#if CYTHON_FAST_THREAD_STATE - #if PY_VERSION_HEX >= 0x030700A3 - tmp_type = tstate->exc_state.exc_type; - tmp_value = tstate->exc_state.exc_value; - tmp_tb = tstate->exc_state.exc_traceback; - tstate->exc_state.exc_type = local_type; - tstate->exc_state.exc_value = local_value; - tstate->exc_state.exc_traceback = local_tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = local_type; - tstate->exc_value = local_value; - tstate->exc_traceback = local_tb; - #endif - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -#else - PyErr_SetExcInfo(local_type, local_value, local_tb); -#endif - return 0; -bad: - *type = 0; - *value = 0; - *tb = 0; - Py_XDECREF(local_type); - Py_XDECREF(local_value); - Py_XDECREF(local_tb); - return -1; -} - -/* PyObjectCallNoArg */ - #if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, NULL, 0); - } -#endif -#ifdef __Pyx_CyFunction_USED - if (likely(PyCFunction_Check(func) || __Pyx_TypeCheck(func, __pyx_CyFunctionType))) { -#else - if (likely(PyCFunction_Check(func))) { -#endif - if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { - return __Pyx_PyObject_CallMethO(func, NULL); - } - } - return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL); -} -#endif - -/* GetItemInt */ - static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { - PyObject *r; - if (!j) return NULL; - r = PyObject_GetItem(o, j); - Py_DECREF(j); - return r; -} -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - Py_ssize_t wrapped_i = i; - if (wraparound & unlikely(i < 0)) { - wrapped_i += PyList_GET_SIZE(o); - } - if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyList_GET_SIZE(o)))) { - PyObject *r = PyList_GET_ITEM(o, wrapped_i); - Py_INCREF(r); - return r; - } - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -#else - return PySequence_GetItem(o, i); -#endif -} -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - Py_ssize_t wrapped_i = i; - if (wraparound & unlikely(i < 0)) { - wrapped_i += PyTuple_GET_SIZE(o); - } - if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyTuple_GET_SIZE(o)))) { - PyObject *r = PyTuple_GET_ITEM(o, wrapped_i); - Py_INCREF(r); - return r; - } - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -#else - return PySequence_GetItem(o, i); -#endif -} -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS - if (is_list || PyList_CheckExact(o)) { - Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); - if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) { - PyObject *r = PyList_GET_ITEM(o, n); - Py_INCREF(r); - return r; - } - } - else if (PyTuple_CheckExact(o)) { - Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); - if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) { - PyObject *r = PyTuple_GET_ITEM(o, n); - Py_INCREF(r); - return r; - } - } else { - PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; - if (likely(m && m->sq_item)) { - if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { - Py_ssize_t l = m->sq_length(o); - if (likely(l >= 0)) { - i += l; - } else { - if (!PyErr_ExceptionMatches(PyExc_OverflowError)) - return NULL; - PyErr_Clear(); - } - } - return m->sq_item(o, i); - } - } -#else - if (is_list || PySequence_Check(o)) { - return PySequence_GetItem(o, i); - } -#endif - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -} - -/* pyobject_as_double */ - static double __Pyx__PyObject_AsDouble(PyObject* obj) { - PyObject* float_value; -#if !CYTHON_USE_TYPE_SLOTS - float_value = PyNumber_Float(obj); if (0) goto bad; -#else - PyNumberMethods *nb = Py_TYPE(obj)->tp_as_number; - if (likely(nb) && likely(nb->nb_float)) { - float_value = nb->nb_float(obj); - if (likely(float_value) && unlikely(!PyFloat_Check(float_value))) { - PyErr_Format(PyExc_TypeError, - "__float__ returned non-float (type %.200s)", - Py_TYPE(float_value)->tp_name); - Py_DECREF(float_value); - goto bad; - } - } else if (PyUnicode_CheckExact(obj) || PyBytes_CheckExact(obj)) { -#if PY_MAJOR_VERSION >= 3 - float_value = PyFloat_FromString(obj); -#else - float_value = PyFloat_FromString(obj, 0); -#endif - } else { - PyObject* args = PyTuple_New(1); - if (unlikely(!args)) goto bad; - PyTuple_SET_ITEM(args, 0, obj); - float_value = PyObject_Call((PyObject*)&PyFloat_Type, args, 0); - PyTuple_SET_ITEM(args, 0, 0); - Py_DECREF(args); - } -#endif - if (likely(float_value)) { - double value = PyFloat_AS_DOUBLE(float_value); - Py_DECREF(float_value); - return value; - } -bad: - return (double)-1; -} - -/* SwapException */ - #if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - #if PY_VERSION_HEX >= 0x030700A3 - tmp_type = tstate->exc_state.exc_type; - tmp_value = tstate->exc_state.exc_value; - tmp_tb = tstate->exc_state.exc_traceback; - tstate->exc_state.exc_type = *type; - tstate->exc_state.exc_value = *value; - tstate->exc_state.exc_traceback = *tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = *type; - tstate->exc_value = *value; - tstate->exc_traceback = *tb; - #endif - *type = tmp_type; - *value = tmp_value; - *tb = tmp_tb; -} -#else -static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); - PyErr_SetExcInfo(*type, *value, *tb); - *type = tmp_type; - *value = tmp_value; - *tb = tmp_tb; -} -#endif - -/* UnpackUnboundCMethod */ - static int __Pyx_TryUnpackUnboundCMethod(__Pyx_CachedCFunction* target) { - PyObject *method; - method = __Pyx_PyObject_GetAttrStr(target->type, *target->method_name); - if (unlikely(!method)) - return -1; - target->method = method; -#if CYTHON_COMPILING_IN_CPYTHON - #if PY_MAJOR_VERSION >= 3 - if (likely(__Pyx_TypeCheck(method, &PyMethodDescr_Type))) - #endif - { - PyMethodDescrObject *descr = (PyMethodDescrObject*) method; - target->func = descr->d_method->ml_meth; - target->flag = descr->d_method->ml_flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST); - } -#endif - return 0; -} - -/* CallUnboundCMethod1 */ - #if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg) { - if (likely(cfunc->func)) { - int flag = cfunc->flag; - if (flag == METH_O) { - return (*(cfunc->func))(self, arg); - } else if (PY_VERSION_HEX >= 0x030600B1 && flag == METH_FASTCALL) { - if (PY_VERSION_HEX >= 0x030700A0) { - return (*(__Pyx_PyCFunctionFast)cfunc->func)(self, &arg, 1); - } else { - return (*(__Pyx_PyCFunctionFastWithKeywords)cfunc->func)(self, &arg, 1, NULL); - } - } else if (PY_VERSION_HEX >= 0x030700A0 && flag == (METH_FASTCALL | METH_KEYWORDS)) { - return (*(__Pyx_PyCFunctionFastWithKeywords)cfunc->func)(self, &arg, 1, NULL); - } - } - return __Pyx__CallUnboundCMethod1(cfunc, self, arg); -} -#endif -static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg){ - PyObject *args, *result = NULL; - if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL; -#if CYTHON_COMPILING_IN_CPYTHON - if (cfunc->func && (cfunc->flag & METH_VARARGS)) { - args = PyTuple_New(1); - if (unlikely(!args)) goto bad; - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 0, arg); - if (cfunc->flag & METH_KEYWORDS) - result = (*(PyCFunctionWithKeywords)cfunc->func)(self, args, NULL); - else - result = (*cfunc->func)(self, args); - } else { - args = PyTuple_New(2); - if (unlikely(!args)) goto bad; - Py_INCREF(self); - PyTuple_SET_ITEM(args, 0, self); - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 1, arg); - result = __Pyx_PyObject_Call(cfunc->method, args, NULL); - } -#else - args = PyTuple_Pack(2, self, arg); - if (unlikely(!args)) goto bad; - result = __Pyx_PyObject_Call(cfunc->method, args, NULL); -#endif -bad: - Py_XDECREF(args); - return result; -} - -/* CallUnboundCMethod2 */ - #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030600B1 -static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2) { - if (likely(cfunc->func)) { - PyObject *args[2] = {arg1, arg2}; - if (cfunc->flag == METH_FASTCALL) { - #if PY_VERSION_HEX >= 0x030700A0 - return (*(__Pyx_PyCFunctionFast)cfunc->func)(self, args, 2); - #else - return (*(__Pyx_PyCFunctionFastWithKeywords)cfunc->func)(self, args, 2, NULL); - #endif - } - #if PY_VERSION_HEX >= 0x030700A0 - if (cfunc->flag == (METH_FASTCALL | METH_KEYWORDS)) - return (*(__Pyx_PyCFunctionFastWithKeywords)cfunc->func)(self, args, 2, NULL); - #endif - } - return __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2); -} -#endif -static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2){ - PyObject *args, *result = NULL; - if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL; -#if CYTHON_COMPILING_IN_CPYTHON - if (cfunc->func && (cfunc->flag & METH_VARARGS)) { - args = PyTuple_New(2); - if (unlikely(!args)) goto bad; - Py_INCREF(arg1); - PyTuple_SET_ITEM(args, 0, arg1); - Py_INCREF(arg2); - PyTuple_SET_ITEM(args, 1, arg2); - if (cfunc->flag & METH_KEYWORDS) - result = (*(PyCFunctionWithKeywords)cfunc->func)(self, args, NULL); - else - result = (*cfunc->func)(self, args); - } else { - args = PyTuple_New(3); - if (unlikely(!args)) goto bad; - Py_INCREF(self); - PyTuple_SET_ITEM(args, 0, self); - Py_INCREF(arg1); - PyTuple_SET_ITEM(args, 1, arg1); - Py_INCREF(arg2); - PyTuple_SET_ITEM(args, 2, arg2); - result = __Pyx_PyObject_Call(cfunc->method, args, NULL); - } -#else - args = PyTuple_Pack(3, self, arg1, arg2); - if (unlikely(!args)) goto bad; - result = __Pyx_PyObject_Call(cfunc->method, args, NULL); -#endif -bad: - Py_XDECREF(args); - return result; -} - -/* dict_getitem_default */ - static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value) { - PyObject* value; -#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY - value = PyDict_GetItemWithError(d, key); - if (unlikely(!value)) { - if (unlikely(PyErr_Occurred())) - return NULL; - value = default_value; - } - Py_INCREF(value); - if ((1)); -#else - if (PyString_CheckExact(key) || PyUnicode_CheckExact(key) || PyInt_CheckExact(key)) { - value = PyDict_GetItem(d, key); - if (unlikely(!value)) { - value = default_value; - } - Py_INCREF(value); - } -#endif - else { - if (default_value == Py_None) - value = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyDict_Type_get, d, key); - else - value = __Pyx_CallUnboundCMethod2(&__pyx_umethod_PyDict_Type_get, d, key, default_value); - } - return value; -} - -/* py_dict_pop */ - static CYTHON_INLINE PyObject *__Pyx_PyDict_Pop(PyObject *d, PyObject *key, PyObject *default_value) { -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX > 0x030600B3 - if ((1)) { - return _PyDict_Pop(d, key, default_value); - } else -#endif - if (default_value) { - return __Pyx_CallUnboundCMethod2(&__pyx_umethod_PyDict_Type_pop, d, key, default_value); - } else { - return __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyDict_Type_pop, d, key); - } -} - -/* ArgTypeTest */ - static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact) -{ - if (unlikely(!type)) { - PyErr_SetString(PyExc_SystemError, "Missing type object"); - return 0; - } - else if (exact) { - #if PY_MAJOR_VERSION == 2 - if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1; - #endif - } - else { - if (likely(__Pyx_TypeCheck(obj, type))) return 1; - } - PyErr_Format(PyExc_TypeError, - "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)", - name, type->tp_name, Py_TYPE(obj)->tp_name); - return 0; -} - -/* FastTypeChecks */ - #if CYTHON_COMPILING_IN_CPYTHON -static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { - while (a) { - a = a->tp_base; - if (a == b) - return 1; - } - return b == &PyBaseObject_Type; -} -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { - PyObject *mro; - if (a == b) return 1; - mro = a->tp_mro; - if (likely(mro)) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(mro); - for (i = 0; i < n; i++) { - if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) - return 1; - } - return 0; - } - return __Pyx_InBases(a, b); -} -#if PY_MAJOR_VERSION == 2 -static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { - PyObject *exception, *value, *tb; - int res; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&exception, &value, &tb); - res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - if (!res) { - res = PyObject_IsSubclass(err, exc_type2); - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - } - __Pyx_ErrRestore(exception, value, tb); - return res; -} -#else -static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { - int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0; - if (!res) { - res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); - } - return res; -} -#endif -static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - assert(PyExceptionClass_Check(exc_type)); - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; i<n; i++) { - if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1; - } -#endif - for (i=0; i<n; i++) { - PyObject *t = PyTuple_GET_ITEM(tuple, i); - #if PY_MAJOR_VERSION < 3 - if (likely(exc_type == t)) return 1; - #endif - if (likely(PyExceptionClass_Check(t))) { - if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1; - } else { - } - } - return 0; -} -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) { - if (likely(err == exc_type)) return 1; - if (likely(PyExceptionClass_Check(err))) { - if (likely(PyExceptionClass_Check(exc_type))) { - return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type); - } else if (likely(PyTuple_Check(exc_type))) { - return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type); - } else { - } - } - return PyErr_GivenExceptionMatches(err, exc_type); -} -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) { - assert(PyExceptionClass_Check(exc_type1)); - assert(PyExceptionClass_Check(exc_type2)); - if (likely(err == exc_type1 || err == exc_type2)) return 1; - if (likely(PyExceptionClass_Check(err))) { - return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2); - } - return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2)); -} -#endif - -/* PyObject_GenericGetAttrNoDict */ - #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { - PyErr_Format(PyExc_AttributeError, -#if PY_MAJOR_VERSION >= 3 - "'%.50s' object has no attribute '%U'", - tp->tp_name, attr_name); -#else - "'%.50s' object has no attribute '%.400s'", - tp->tp_name, PyString_AS_STRING(attr_name)); -#endif - return NULL; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { - PyObject *descr; - PyTypeObject *tp = Py_TYPE(obj); - if (unlikely(!PyString_Check(attr_name))) { - return PyObject_GenericGetAttr(obj, attr_name); - } - assert(!tp->tp_dictoffset); - descr = _PyType_Lookup(tp, attr_name); - if (unlikely(!descr)) { - return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); - } - Py_INCREF(descr); - #if PY_MAJOR_VERSION < 3 - if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) - #endif - { - descrgetfunc f = Py_TYPE(descr)->tp_descr_get; - if (unlikely(f)) { - PyObject *res = f(descr, obj, (PyObject *)tp); - Py_DECREF(descr); - return res; - } - } - return descr; -} -#endif - -/* PyObject_GenericGetAttr */ - #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) { - if (unlikely(Py_TYPE(obj)->tp_dictoffset)) { - return PyObject_GenericGetAttr(obj, attr_name); - } - return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name); -} -#endif - -/* SetVTable */ - static int __Pyx_SetVtable(PyObject *dict, void *vtable) { -#if PY_VERSION_HEX >= 0x02070000 - PyObject *ob = PyCapsule_New(vtable, 0, 0); -#else - PyObject *ob = PyCObject_FromVoidPtr(vtable, 0); -#endif - if (!ob) - goto bad; - if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0) - goto bad; - Py_DECREF(ob); - return 0; -bad: - Py_XDECREF(ob); - return -1; -} - -/* ImportFrom */ - static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { - PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); - if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Format(PyExc_ImportError, - #if PY_MAJOR_VERSION < 3 - "cannot import name %.230s", PyString_AS_STRING(name)); - #else - "cannot import name %S", name); - #endif - } - return value; -} - -/* CalculateMetaclass */ - static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) { - Py_ssize_t i, nbases = PyTuple_GET_SIZE(bases); - for (i=0; i < nbases; i++) { - PyTypeObject *tmptype; - PyObject *tmp = PyTuple_GET_ITEM(bases, i); - tmptype = Py_TYPE(tmp); -#if PY_MAJOR_VERSION < 3 - if (tmptype == &PyClass_Type) - continue; -#endif - if (!metaclass) { - metaclass = tmptype; - continue; - } - if (PyType_IsSubtype(metaclass, tmptype)) - continue; - if (PyType_IsSubtype(tmptype, metaclass)) { - metaclass = tmptype; - continue; - } - PyErr_SetString(PyExc_TypeError, - "metaclass conflict: " - "the metaclass of a derived class " - "must be a (non-strict) subclass " - "of the metaclasses of all its bases"); - return NULL; - } - if (!metaclass) { -#if PY_MAJOR_VERSION < 3 - metaclass = &PyClass_Type; -#else - metaclass = &PyType_Type; -#endif - } - Py_INCREF((PyObject*) metaclass); - return (PyObject*) metaclass; -} - -/* Py3ClassCreate */ - static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, - PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) { - PyObject *ns; - if (metaclass) { - PyObject *prep = __Pyx_PyObject_GetAttrStr(metaclass, __pyx_n_s_prepare); - if (prep) { - PyObject *pargs = PyTuple_Pack(2, name, bases); - if (unlikely(!pargs)) { - Py_DECREF(prep); - return NULL; - } - ns = PyObject_Call(prep, pargs, mkw); - Py_DECREF(prep); - Py_DECREF(pargs); - } else { - if (unlikely(!PyErr_ExceptionMatches(PyExc_AttributeError))) - return NULL; - PyErr_Clear(); - ns = PyDict_New(); - } - } else { - ns = PyDict_New(); - } - if (unlikely(!ns)) - return NULL; - if (unlikely(PyObject_SetItem(ns, __pyx_n_s_module, modname) < 0)) goto bad; - if (unlikely(PyObject_SetItem(ns, __pyx_n_s_qualname, qualname) < 0)) goto bad; - if (unlikely(doc && PyObject_SetItem(ns, __pyx_n_s_doc, doc) < 0)) goto bad; - return ns; -bad: - Py_DECREF(ns); - return NULL; -} -static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, - PyObject *dict, PyObject *mkw, - int calculate_metaclass, int allow_py2_metaclass) { - PyObject *result, *margs; - PyObject *owned_metaclass = NULL; - if (allow_py2_metaclass) { - owned_metaclass = PyObject_GetItem(dict, __pyx_n_s_metaclass); - if (owned_metaclass) { - metaclass = owned_metaclass; - } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) { - PyErr_Clear(); - } else { - return NULL; - } - } - if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) { - metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases); - Py_XDECREF(owned_metaclass); - if (unlikely(!metaclass)) - return NULL; - owned_metaclass = metaclass; - } - margs = PyTuple_Pack(3, name, bases, dict); - if (unlikely(!margs)) { - result = NULL; - } else { - result = PyObject_Call(metaclass, margs, mkw); - Py_DECREF(margs); - } - Py_XDECREF(owned_metaclass); - return result; -} - -/* FetchCommonType */ - static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { - PyObject* fake_module; - PyTypeObject* cached_type = NULL; - fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI); - if (!fake_module) return NULL; - Py_INCREF(fake_module); - cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name); - if (cached_type) { - if (!PyType_Check((PyObject*)cached_type)) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s is not a type object", - type->tp_name); - goto bad; - } - if (cached_type->tp_basicsize != type->tp_basicsize) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s has the wrong size, try recompiling", - type->tp_name); - goto bad; - } - } else { - if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; - PyErr_Clear(); - if (PyType_Ready(type) < 0) goto bad; - if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0) - goto bad; - Py_INCREF(type); - cached_type = type; - } -done: - Py_DECREF(fake_module); - return cached_type; -bad: - Py_XDECREF(cached_type); - cached_type = NULL; - goto done; -} - -/* CythonFunction */ - #include <structmember.h> -static PyObject * -__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure) -{ - if (unlikely(op->func_doc == NULL)) { - if (op->func.m_ml->ml_doc) { -#if PY_MAJOR_VERSION >= 3 - op->func_doc = PyUnicode_FromString(op->func.m_ml->ml_doc); -#else - op->func_doc = PyString_FromString(op->func.m_ml->ml_doc); -#endif - if (unlikely(op->func_doc == NULL)) - return NULL; - } else { - Py_INCREF(Py_None); - return Py_None; - } - } - Py_INCREF(op->func_doc); - return op->func_doc; -} -static int -__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp = op->func_doc; - if (value == NULL) { - value = Py_None; - } - Py_INCREF(value); - op->func_doc = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op) -{ - if (unlikely(op->func_name == NULL)) { -#if PY_MAJOR_VERSION >= 3 - op->func_name = PyUnicode_InternFromString(op->func.m_ml->ml_name); -#else - op->func_name = PyString_InternFromString(op->func.m_ml->ml_name); -#endif - if (unlikely(op->func_name == NULL)) - return NULL; - } - Py_INCREF(op->func_name); - return op->func_name; -} -static int -__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; -#if PY_MAJOR_VERSION >= 3 - if (unlikely(value == NULL || !PyUnicode_Check(value))) { -#else - if (unlikely(value == NULL || !PyString_Check(value))) { -#endif - PyErr_SetString(PyExc_TypeError, - "__name__ must be set to a string object"); - return -1; - } - tmp = op->func_name; - Py_INCREF(value); - op->func_name = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op) -{ - Py_INCREF(op->func_qualname); - return op->func_qualname; -} -static int -__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; -#if PY_MAJOR_VERSION >= 3 - if (unlikely(value == NULL || !PyUnicode_Check(value))) { -#else - if (unlikely(value == NULL || !PyString_Check(value))) { -#endif - PyErr_SetString(PyExc_TypeError, - "__qualname__ must be set to a string object"); - return -1; - } - tmp = op->func_qualname; - Py_INCREF(value); - op->func_qualname = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure) -{ - PyObject *self; - self = m->func_closure; - if (self == NULL) - self = Py_None; - Py_INCREF(self); - return self; -} -static PyObject * -__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op) -{ - if (unlikely(op->func_dict == NULL)) { - op->func_dict = PyDict_New(); - if (unlikely(op->func_dict == NULL)) - return NULL; - } - Py_INCREF(op->func_dict); - return op->func_dict; -} -static int -__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value) -{ - PyObject *tmp; - if (unlikely(value == NULL)) { - PyErr_SetString(PyExc_TypeError, - "function's dictionary may not be deleted"); - return -1; - } - if (unlikely(!PyDict_Check(value))) { - PyErr_SetString(PyExc_TypeError, - "setting function's dictionary to a non-dict"); - return -1; - } - tmp = op->func_dict; - Py_INCREF(value); - op->func_dict = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op) -{ - Py_INCREF(op->func_globals); - return op->func_globals; -} -static PyObject * -__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op) -{ - Py_INCREF(Py_None); - return Py_None; -} -static PyObject * -__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op) -{ - PyObject* result = (op->func_code) ? op->func_code : Py_None; - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { - int result = 0; - PyObject *res = op->defaults_getter((PyObject *) op); - if (unlikely(!res)) - return -1; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - op->defaults_tuple = PyTuple_GET_ITEM(res, 0); - Py_INCREF(op->defaults_tuple); - op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); - Py_INCREF(op->defaults_kwdict); - #else - op->defaults_tuple = PySequence_ITEM(res, 0); - if (unlikely(!op->defaults_tuple)) result = -1; - else { - op->defaults_kwdict = PySequence_ITEM(res, 1); - if (unlikely(!op->defaults_kwdict)) result = -1; - } - #endif - Py_DECREF(res); - return result; -} -static int -__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value) { - value = Py_None; - } else if (value != Py_None && !PyTuple_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__defaults__ must be set to a tuple object"); - return -1; - } - Py_INCREF(value); - tmp = op->defaults_tuple; - op->defaults_tuple = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) { - PyObject* result = op->defaults_tuple; - if (unlikely(!result)) { - if (op->defaults_getter) { - if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; - result = op->defaults_tuple; - } else { - result = Py_None; - } - } - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value) { - value = Py_None; - } else if (value != Py_None && !PyDict_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__kwdefaults__ must be set to a dict object"); - return -1; - } - Py_INCREF(value); - tmp = op->defaults_kwdict; - op->defaults_kwdict = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) { - PyObject* result = op->defaults_kwdict; - if (unlikely(!result)) { - if (op->defaults_getter) { - if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; - result = op->defaults_kwdict; - } else { - result = Py_None; - } - } - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) { - PyObject* tmp; - if (!value || value == Py_None) { - value = NULL; - } else if (!PyDict_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__annotations__ must be set to a dict object"); - return -1; - } - Py_XINCREF(value); - tmp = op->func_annotations; - op->func_annotations = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op) { - PyObject* result = op->func_annotations; - if (unlikely(!result)) { - result = PyDict_New(); - if (unlikely(!result)) return NULL; - op->func_annotations = result; - } - Py_INCREF(result); - return result; -} -static PyGetSetDef __pyx_CyFunction_getsets[] = { - {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, - {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, - {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, - {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, - {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, - {(char *) "__self__", (getter)__Pyx_CyFunction_get_self, 0, 0, 0}, - {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, - {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, - {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, - {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, - {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, - {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, - {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, - {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, - {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, - {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, - {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, - {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, - {0, 0, 0, 0, 0} -}; -static PyMemberDef __pyx_CyFunction_members[] = { - {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), PY_WRITE_RESTRICTED, 0}, - {0, 0, 0, 0, 0} -}; -static PyObject * -__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args) -{ -#if PY_MAJOR_VERSION >= 3 - return PyUnicode_FromString(m->func.m_ml->ml_name); -#else - return PyString_FromString(m->func.m_ml->ml_name); -#endif -} -static PyMethodDef __pyx_CyFunction_methods[] = { - {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, - {0, 0, 0, 0} -}; -#if PY_VERSION_HEX < 0x030500A0 -#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) -#else -#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func.m_weakreflist) -#endif -static PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *ml, int flags, PyObject* qualname, - PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { - __pyx_CyFunctionObject *op = PyObject_GC_New(__pyx_CyFunctionObject, type); - if (op == NULL) - return NULL; - op->flags = flags; - __Pyx_CyFunction_weakreflist(op) = NULL; - op->func.m_ml = ml; - op->func.m_self = (PyObject *) op; - Py_XINCREF(closure); - op->func_closure = closure; - Py_XINCREF(module); - op->func.m_module = module; - op->func_dict = NULL; - op->func_name = NULL; - Py_INCREF(qualname); - op->func_qualname = qualname; - op->func_doc = NULL; - op->func_classobj = NULL; - op->func_globals = globals; - Py_INCREF(op->func_globals); - Py_XINCREF(code); - op->func_code = code; - op->defaults_pyobjects = 0; - op->defaults = NULL; - op->defaults_tuple = NULL; - op->defaults_kwdict = NULL; - op->defaults_getter = NULL; - op->func_annotations = NULL; - PyObject_GC_Track(op); - return (PyObject *) op; -} -static int -__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) -{ - Py_CLEAR(m->func_closure); - Py_CLEAR(m->func.m_module); - Py_CLEAR(m->func_dict); - Py_CLEAR(m->func_name); - Py_CLEAR(m->func_qualname); - Py_CLEAR(m->func_doc); - Py_CLEAR(m->func_globals); - Py_CLEAR(m->func_code); - Py_CLEAR(m->func_classobj); - Py_CLEAR(m->defaults_tuple); - Py_CLEAR(m->defaults_kwdict); - Py_CLEAR(m->func_annotations); - if (m->defaults) { - PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); - int i; - for (i = 0; i < m->defaults_pyobjects; i++) - Py_XDECREF(pydefaults[i]); - PyObject_Free(m->defaults); - m->defaults = NULL; - } - return 0; -} -static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) -{ - if (__Pyx_CyFunction_weakreflist(m) != NULL) - PyObject_ClearWeakRefs((PyObject *) m); - __Pyx_CyFunction_clear(m); - PyObject_GC_Del(m); -} -static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) -{ - PyObject_GC_UnTrack(m); - __Pyx__CyFunction_dealloc(m); -} -static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) -{ - Py_VISIT(m->func_closure); - Py_VISIT(m->func.m_module); - Py_VISIT(m->func_dict); - Py_VISIT(m->func_name); - Py_VISIT(m->func_qualname); - Py_VISIT(m->func_doc); - Py_VISIT(m->func_globals); - Py_VISIT(m->func_code); - Py_VISIT(m->func_classobj); - Py_VISIT(m->defaults_tuple); - Py_VISIT(m->defaults_kwdict); - if (m->defaults) { - PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); - int i; - for (i = 0; i < m->defaults_pyobjects; i++) - Py_VISIT(pydefaults[i]); - } - return 0; -} -static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type) -{ - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) { - Py_INCREF(func); - return func; - } - if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) { - if (type == NULL) - type = (PyObject *)(Py_TYPE(obj)); - return __Pyx_PyMethod_New(func, type, (PyObject *)(Py_TYPE(type))); - } - if (obj == Py_None) - obj = NULL; - return __Pyx_PyMethod_New(func, obj, type); -} -static PyObject* -__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) -{ -#if PY_MAJOR_VERSION >= 3 - return PyUnicode_FromFormat("<cyfunction %U at %p>", - op->func_qualname, (void *)op); -#else - return PyString_FromFormat("<cyfunction %s at %p>", - PyString_AsString(op->func_qualname), (void *)op); -#endif -} -static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { - PyCFunctionObject* f = (PyCFunctionObject*)func; - PyCFunction meth = f->m_ml->ml_meth; - Py_ssize_t size; - switch (f->m_ml->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { - case METH_VARARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) - return (*meth)(self, arg); - break; - case METH_VARARGS | METH_KEYWORDS: - return (*(PyCFunctionWithKeywords)meth)(self, arg, kw); - case METH_NOARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { - size = PyTuple_GET_SIZE(arg); - if (likely(size == 0)) - return (*meth)(self, NULL); - PyErr_Format(PyExc_TypeError, - "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", - f->m_ml->ml_name, size); - return NULL; - } - break; - case METH_O: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { - size = PyTuple_GET_SIZE(arg); - if (likely(size == 1)) { - PyObject *result, *arg0; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - arg0 = PyTuple_GET_ITEM(arg, 0); - #else - arg0 = PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; - #endif - result = (*meth)(self, arg0); - #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) - Py_DECREF(arg0); - #endif - return result; - } - PyErr_Format(PyExc_TypeError, - "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", - f->m_ml->ml_name, size); - return NULL; - } - break; - default: - PyErr_SetString(PyExc_SystemError, "Bad call flags in " - "__Pyx_CyFunction_Call. METH_OLDARGS is no " - "longer supported!"); - return NULL; - } - PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", - f->m_ml->ml_name); - return NULL; -} -static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { - return __Pyx_CyFunction_CallMethod(func, ((PyCFunctionObject*)func)->m_self, arg, kw); -} -static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { - PyObject *result; - __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; - if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { - Py_ssize_t argc; - PyObject *new_args; - PyObject *self; - argc = PyTuple_GET_SIZE(args); - new_args = PyTuple_GetSlice(args, 1, argc); - if (unlikely(!new_args)) - return NULL; - self = PyTuple_GetItem(args, 0); - if (unlikely(!self)) { - Py_DECREF(new_args); - return NULL; - } - result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); - Py_DECREF(new_args); - } else { - result = __Pyx_CyFunction_Call(func, args, kw); - } - return result; -} -static PyTypeObject __pyx_CyFunctionType_type = { - PyVarObject_HEAD_INIT(0, 0) - "cython_function_or_method", - sizeof(__pyx_CyFunctionObject), - 0, - (destructor) __Pyx_CyFunction_dealloc, - 0, - 0, - 0, -#if PY_MAJOR_VERSION < 3 - 0, -#else - 0, -#endif - (reprfunc) __Pyx_CyFunction_repr, - 0, - 0, - 0, - 0, - __Pyx_CyFunction_CallAsMethod, - 0, - 0, - 0, - 0, - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, - 0, - (traverseproc) __Pyx_CyFunction_traverse, - (inquiry) __Pyx_CyFunction_clear, - 0, -#if PY_VERSION_HEX < 0x030500A0 - offsetof(__pyx_CyFunctionObject, func_weakreflist), -#else - offsetof(PyCFunctionObject, m_weakreflist), -#endif - 0, - 0, - __pyx_CyFunction_methods, - __pyx_CyFunction_members, - __pyx_CyFunction_getsets, - 0, - 0, - __Pyx_CyFunction_descr_get, - 0, - offsetof(__pyx_CyFunctionObject, func_dict), - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, -#if PY_VERSION_HEX >= 0x030400a1 - 0, -#endif -}; -static int __pyx_CyFunction_init(void) { - __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); - if (unlikely(__pyx_CyFunctionType == NULL)) { - return -1; - } - return 0; -} -static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults = PyObject_Malloc(size); - if (unlikely(!m->defaults)) - return PyErr_NoMemory(); - memset(m->defaults, 0, size); - m->defaults_pyobjects = pyobjects; - return m->defaults; -} -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults_tuple = tuple; - Py_INCREF(tuple); -} -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults_kwdict = dict; - Py_INCREF(dict); -} -static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->func_annotations = dict; - Py_INCREF(dict); -} - -/* CLineInTraceback */ - #ifndef CYTHON_CLINE_IN_TRACEBACK -static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) { - PyObject *use_cline; - PyObject *ptype, *pvalue, *ptraceback; -#if CYTHON_COMPILING_IN_CPYTHON - PyObject **cython_runtime_dict; -#endif - if (unlikely(!__pyx_cython_runtime)) { - return c_line; - } - __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); -#if CYTHON_COMPILING_IN_CPYTHON - cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); - if (likely(cython_runtime_dict)) { - use_cline = __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback); - } else -#endif - { - PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); - if (use_cline_obj) { - use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; - Py_DECREF(use_cline_obj); - } else { - PyErr_Clear(); - use_cline = NULL; - } - } - if (!use_cline) { - c_line = 0; - PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); - } - else if (PyObject_Not(use_cline) != 0) { - c_line = 0; - } - __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); - return c_line; -} -#endif - -/* CodeObjectCache */ - static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { - int start = 0, mid = 0, end = count - 1; - if (end >= 0 && code_line > entries[end].code_line) { - return count; - } - while (start < end) { - mid = start + (end - start) / 2; - if (code_line < entries[mid].code_line) { - end = mid; - } else if (code_line > entries[mid].code_line) { - start = mid + 1; - } else { - return mid; - } - } - if (code_line <= entries[mid].code_line) { - return mid; - } else { - return mid + 1; - } -} -static PyCodeObject *__pyx_find_code_object(int code_line) { - PyCodeObject* code_object; - int pos; - if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { - return NULL; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { - return NULL; - } - code_object = __pyx_code_cache.entries[pos].code_object; - Py_INCREF(code_object); - return code_object; -} -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { - int pos, i; - __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; - if (unlikely(!code_line)) { - return; - } - if (unlikely(!entries)) { - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); - if (likely(entries)) { - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = 64; - __pyx_code_cache.count = 1; - entries[0].code_line = code_line; - entries[0].code_object = code_object; - Py_INCREF(code_object); - } - return; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { - PyCodeObject* tmp = entries[pos].code_object; - entries[pos].code_object = code_object; - Py_DECREF(tmp); - return; - } - if (__pyx_code_cache.count == __pyx_code_cache.max_count) { - int new_max = __pyx_code_cache.max_count + 64; - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( - __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry)); - if (unlikely(!entries)) { - return; - } - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = new_max; - } - for (i=__pyx_code_cache.count; i>pos; i--) { - entries[i] = entries[i-1]; - } - entries[pos].code_line = code_line; - entries[pos].code_object = code_object; - __pyx_code_cache.count++; - Py_INCREF(code_object); -} - -/* AddTraceback */ - #include "compile.h" -#include "frameobject.h" -#include "traceback.h" -static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( - const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyObject *py_srcfile = 0; - PyObject *py_funcname = 0; - #if PY_MAJOR_VERSION < 3 - py_srcfile = PyString_FromString(filename); - #else - py_srcfile = PyUnicode_FromString(filename); - #endif - if (!py_srcfile) goto bad; - if (c_line) { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #else - py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #endif - } - else { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromString(funcname); - #else - py_funcname = PyUnicode_FromString(funcname); - #endif - } - if (!py_funcname) goto bad; - py_code = __Pyx_PyCode_New( - 0, - 0, - 0, - 0, - 0, - __pyx_empty_bytes, /*PyObject *code,*/ - __pyx_empty_tuple, /*PyObject *consts,*/ - __pyx_empty_tuple, /*PyObject *names,*/ - __pyx_empty_tuple, /*PyObject *varnames,*/ - __pyx_empty_tuple, /*PyObject *freevars,*/ - __pyx_empty_tuple, /*PyObject *cellvars,*/ - py_srcfile, /*PyObject *filename,*/ - py_funcname, /*PyObject *name,*/ - py_line, - __pyx_empty_bytes /*PyObject *lnotab*/ - ); - Py_DECREF(py_srcfile); - Py_DECREF(py_funcname); - return py_code; -bad: - Py_XDECREF(py_srcfile); - Py_XDECREF(py_funcname); - return NULL; -} -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyFrameObject *py_frame = 0; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - if (c_line) { - c_line = __Pyx_CLineForTraceback(tstate, c_line); - } - py_code = __pyx_find_code_object(c_line ? -c_line : py_line); - if (!py_code) { - py_code = __Pyx_CreateCodeObjectForTraceback( - funcname, c_line, py_line, filename); - if (!py_code) goto bad; - __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); - } - py_frame = PyFrame_New( - tstate, /*PyThreadState *tstate,*/ - py_code, /*PyCodeObject *code,*/ - __pyx_d, /*PyObject *globals,*/ - 0 /*PyObject *locals*/ - ); - if (!py_frame) goto bad; - __Pyx_PyFrame_SetLineNumber(py_frame, py_line); - PyTraceBack_Here(py_frame); -bad: - Py_XDECREF(py_code); - Py_XDECREF(py_frame); -} - -/* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { - const long neg_one = (long) -1, const_zero = (long) 0; - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(long) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(long) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -#endif - } - } else { - if (sizeof(long) <= sizeof(long)) { - return PyInt_FromLong((long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); -#endif - } - } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; - return _PyLong_FromByteArray(bytes, sizeof(long), - little, !is_unsigned); - } -} - -/* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { - const int neg_one = (int) -1, const_zero = (int) 0; - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(int) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(int) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -#endif - } - } else { - if (sizeof(int) <= sizeof(long)) { - return PyInt_FromLong((long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); -#endif - } - } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; - return _PyLong_FromByteArray(bytes, sizeof(int), - little, !is_unsigned); - } -} - -/* CIntFromPyVerify */ - #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) -#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) -#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ - {\ - func_type value = func_value;\ - if (sizeof(target_type) < sizeof(func_type)) {\ - if (unlikely(value != (func_type) (target_type) value)) {\ - func_type zero = 0;\ - if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ - return (target_type) -1;\ - if (is_unsigned && unlikely(value < zero))\ - goto raise_neg_overflow;\ - else\ - goto raise_overflow;\ - }\ - }\ - return (target_type) value;\ - } - -/* CIntFromPy */ - static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { - const int neg_one = (int) -1, const_zero = (int) 0; - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(int) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (int) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (int) 0; - case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { - return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { - return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { - return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (int) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(int) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (int) 0; - case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) - case -2: - if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - } -#endif - if (sizeof(int) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - int val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (int) -1; - } - } else { - int val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (int) -1; - val = __Pyx_PyInt_As_int(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to int"); - return (int) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to int"); - return (int) -1; -} - -/* CIntFromPy */ - static CYTHON_INLINE unsigned short __Pyx_PyInt_As_unsigned_short(PyObject *x) { - const unsigned short neg_one = (unsigned short) -1, const_zero = (unsigned short) 0; - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(unsigned short) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(unsigned short, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (unsigned short) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (unsigned short) 0; - case 1: __PYX_VERIFY_RETURN_INT(unsigned short, digit, digits[0]) - case 2: - if (8 * sizeof(unsigned short) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(unsigned short, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(unsigned short) >= 2 * PyLong_SHIFT) { - return (unsigned short) (((((unsigned short)digits[1]) << PyLong_SHIFT) | (unsigned short)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(unsigned short) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(unsigned short, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(unsigned short) >= 3 * PyLong_SHIFT) { - return (unsigned short) (((((((unsigned short)digits[2]) << PyLong_SHIFT) | (unsigned short)digits[1]) << PyLong_SHIFT) | (unsigned short)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(unsigned short) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(unsigned short, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(unsigned short) >= 4 * PyLong_SHIFT) { - return (unsigned short) (((((((((unsigned short)digits[3]) << PyLong_SHIFT) | (unsigned short)digits[2]) << PyLong_SHIFT) | (unsigned short)digits[1]) << PyLong_SHIFT) | (unsigned short)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (unsigned short) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(unsigned short) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(unsigned short, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(unsigned short) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(unsigned short, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (unsigned short) 0; - case -1: __PYX_VERIFY_RETURN_INT(unsigned short, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(unsigned short, digit, +digits[0]) - case -2: - if (8 * sizeof(unsigned short) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(unsigned short, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(unsigned short) - 1 > 2 * PyLong_SHIFT) { - return (unsigned short) (((unsigned short)-1)*(((((unsigned short)digits[1]) << PyLong_SHIFT) | (unsigned short)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(unsigned short) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(unsigned short, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(unsigned short) - 1 > 2 * PyLong_SHIFT) { - return (unsigned short) ((((((unsigned short)digits[1]) << PyLong_SHIFT) | (unsigned short)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(unsigned short) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(unsigned short, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(unsigned short) - 1 > 3 * PyLong_SHIFT) { - return (unsigned short) (((unsigned short)-1)*(((((((unsigned short)digits[2]) << PyLong_SHIFT) | (unsigned short)digits[1]) << PyLong_SHIFT) | (unsigned short)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(unsigned short) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(unsigned short, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(unsigned short) - 1 > 3 * PyLong_SHIFT) { - return (unsigned short) ((((((((unsigned short)digits[2]) << PyLong_SHIFT) | (unsigned short)digits[1]) << PyLong_SHIFT) | (unsigned short)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(unsigned short) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(unsigned short, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(unsigned short) - 1 > 4 * PyLong_SHIFT) { - return (unsigned short) (((unsigned short)-1)*(((((((((unsigned short)digits[3]) << PyLong_SHIFT) | (unsigned short)digits[2]) << PyLong_SHIFT) | (unsigned short)digits[1]) << PyLong_SHIFT) | (unsigned short)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(unsigned short) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(unsigned short, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(unsigned short) - 1 > 4 * PyLong_SHIFT) { - return (unsigned short) ((((((((((unsigned short)digits[3]) << PyLong_SHIFT) | (unsigned short)digits[2]) << PyLong_SHIFT) | (unsigned short)digits[1]) << PyLong_SHIFT) | (unsigned short)digits[0]))); - } - } - break; - } -#endif - if (sizeof(unsigned short) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(unsigned short, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(unsigned short) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(unsigned short, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - unsigned short val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (unsigned short) -1; - } - } else { - unsigned short val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (unsigned short) -1; - val = __Pyx_PyInt_As_unsigned_short(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to unsigned short"); - return (unsigned short) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to unsigned short"); - return (unsigned short) -1; -} - -/* CIntFromPy */ - static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { - const long neg_one = (long) -1, const_zero = (long) 0; - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(long) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (long) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { - return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { - return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { - return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (long) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(long) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) - case -2: - if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - } -#endif - if (sizeof(long) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - long val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (long) -1; - } - } else { - long val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (long) -1; - val = __Pyx_PyInt_As_long(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to long"); - return (long) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to long"); - return (long) -1; -} - -/* CheckBinaryVersion */ - static int __Pyx_check_binary_version(void) { - char ctversion[4], rtversion[4]; - PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); - PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); - if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) { - char message[200]; - PyOS_snprintf(message, sizeof(message), - "compiletime version %s of module '%.100s' " - "does not match runtime version %s", - ctversion, __Pyx_MODULE_NAME, rtversion); - return PyErr_WarnEx(NULL, message, 1); - } - return 0; -} - -/* ModuleImport */ - #ifndef __PYX_HAVE_RT_ImportModule -#define __PYX_HAVE_RT_ImportModule -static PyObject *__Pyx_ImportModule(const char *name) { - PyObject *py_name = 0; - PyObject *py_module = 0; - py_name = __Pyx_PyIdentifier_FromString(name); - if (!py_name) - goto bad; - py_module = PyImport_Import(py_name); - Py_DECREF(py_name); - return py_module; -bad: - Py_XDECREF(py_name); - return 0; -} -#endif - -/* TypeImport */ - #ifndef __PYX_HAVE_RT_ImportType -#define __PYX_HAVE_RT_ImportType -static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, - size_t size, int strict) -{ - PyObject *py_module = 0; - PyObject *result = 0; - PyObject *py_name = 0; - char warning[200]; - Py_ssize_t basicsize; -#ifdef Py_LIMITED_API - PyObject *py_basicsize; -#endif - py_module = __Pyx_ImportModule(module_name); - if (!py_module) - goto bad; - py_name = __Pyx_PyIdentifier_FromString(class_name); - if (!py_name) - goto bad; - result = PyObject_GetAttr(py_module, py_name); - Py_DECREF(py_name); - py_name = 0; - Py_DECREF(py_module); - py_module = 0; - if (!result) - goto bad; - if (!PyType_Check(result)) { - PyErr_Format(PyExc_TypeError, - "%.200s.%.200s is not a type object", - module_name, class_name); - goto bad; - } -#ifndef Py_LIMITED_API - basicsize = ((PyTypeObject *)result)->tp_basicsize; -#else - py_basicsize = PyObject_GetAttrString(result, "__basicsize__"); - if (!py_basicsize) - goto bad; - basicsize = PyLong_AsSsize_t(py_basicsize); - Py_DECREF(py_basicsize); - py_basicsize = 0; - if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred()) - goto bad; -#endif - if (!strict && (size_t)basicsize > size) { - PyOS_snprintf(warning, sizeof(warning), - "%s.%s size changed, may indicate binary incompatibility. Expected %zd, got %zd", - module_name, class_name, basicsize, size); - if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad; - } - else if ((size_t)basicsize != size) { - PyErr_Format(PyExc_ValueError, - "%.200s.%.200s has the wrong size, try recompiling. Expected %zd, got %zd", - module_name, class_name, basicsize, size); - goto bad; - } - return (PyTypeObject *)result; -bad: - Py_XDECREF(py_module); - Py_XDECREF(result); - return NULL; -} -#endif - -/* InitStrings */ - static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { - while (t->p) { - #if PY_MAJOR_VERSION < 3 - if (t->is_unicode) { - *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); - } else if (t->intern) { - *t->p = PyString_InternFromString(t->s); - } else { - *t->p = PyString_FromStringAndSize(t->s, t->n - 1); - } - #else - if (t->is_unicode | t->is_str) { - if (t->intern) { - *t->p = PyUnicode_InternFromString(t->s); - } else if (t->encoding) { - *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL); - } else { - *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1); - } - } else { - *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1); - } - #endif - if (!*t->p) - return -1; - if (PyObject_Hash(*t->p) == -1) - return -1; - ++t; - } - return 0; -} - -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { - return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); -} -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { - Py_ssize_t ignore; - return __Pyx_PyObject_AsStringAndSize(o, &ignore); -} -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -#if !CYTHON_PEP393_ENABLED -static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - char* defenc_c; - PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); - if (!defenc) return NULL; - defenc_c = PyBytes_AS_STRING(defenc); -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - { - char* end = defenc_c + PyBytes_GET_SIZE(defenc); - char* c; - for (c = defenc_c; c < end; c++) { - if ((unsigned char) (*c) >= 128) { - PyUnicode_AsASCIIString(o); - return NULL; - } - } - } -#endif - *length = PyBytes_GET_SIZE(defenc); - return defenc_c; -} -#else -static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - if (likely(PyUnicode_IS_ASCII(o))) { - *length = PyUnicode_GET_LENGTH(o); - return PyUnicode_AsUTF8(o); - } else { - PyUnicode_AsASCIIString(o); - return NULL; - } -#else - return PyUnicode_AsUTF8AndSize(o, length); -#endif -} -#endif -#endif -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT - if ( -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - __Pyx_sys_getdefaultencoding_not_ascii && -#endif - PyUnicode_Check(o)) { - return __Pyx_PyUnicode_AsStringAndSize(o, length); - } else -#endif -#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) - if (PyByteArray_Check(o)) { - *length = PyByteArray_GET_SIZE(o); - return PyByteArray_AS_STRING(o); - } else -#endif - { - char* result; - int r = PyBytes_AsStringAndSize(o, &result, length); - if (unlikely(r < 0)) { - return NULL; - } else { - return result; - } - } -} -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { - int is_true = x == Py_True; - if (is_true | (x == Py_False) | (x == Py_None)) return is_true; - else return PyObject_IsTrue(x); -} -static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { -#if PY_MAJOR_VERSION >= 3 - if (PyLong_Check(result)) { - if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, - "__int__ returned non-int (type %.200s). " - "The ability to return an instance of a strict subclass of int " - "is deprecated, and may be removed in a future version of Python.", - Py_TYPE(result)->tp_name)) { - Py_DECREF(result); - return NULL; - } - return result; - } -#endif - PyErr_Format(PyExc_TypeError, - "__%.4s__ returned non-%.4s (type %.200s)", - type_name, type_name, Py_TYPE(result)->tp_name); - Py_DECREF(result); - return NULL; -} -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { -#if CYTHON_USE_TYPE_SLOTS - PyNumberMethods *m; -#endif - const char *name = NULL; - PyObject *res = NULL; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x) || PyLong_Check(x))) -#else - if (likely(PyLong_Check(x))) -#endif - return __Pyx_NewRef(x); -#if CYTHON_USE_TYPE_SLOTS - m = Py_TYPE(x)->tp_as_number; - #if PY_MAJOR_VERSION < 3 - if (m && m->nb_int) { - name = "int"; - res = m->nb_int(x); - } - else if (m && m->nb_long) { - name = "long"; - res = m->nb_long(x); - } - #else - if (likely(m && m->nb_int)) { - name = "int"; - res = m->nb_int(x); - } - #endif -#else - if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { - res = PyNumber_Int(x); - } -#endif - if (likely(res)) { -#if PY_MAJOR_VERSION < 3 - if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { -#else - if (unlikely(!PyLong_CheckExact(res))) { -#endif - return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); - } - } - else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_TypeError, - "an integer is required"); - } - return res; -} -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { - Py_ssize_t ival; - PyObject *x; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(b))) { - if (sizeof(Py_ssize_t) >= sizeof(long)) - return PyInt_AS_LONG(b); - else - return PyInt_AsSsize_t(x); - } -#endif - if (likely(PyLong_CheckExact(b))) { - #if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)b)->ob_digit; - const Py_ssize_t size = Py_SIZE(b); - if (likely(__Pyx_sst_abs(size) <= 1)) { - ival = likely(size) ? digits[0] : 0; - if (size == -1) ival = -ival; - return ival; - } else { - switch (size) { - case 2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - } - } - #endif - return PyLong_AsSsize_t(b); - } - x = PyNumber_Index(b); - if (!x) return -1; - ival = PyInt_AsSsize_t(x); - Py_DECREF(x); - return ival; -} -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { - return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); -} -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { - return PyInt_FromSize_t(ival); -} - - -#endif /* Py_PYTHON_H */ diff --git a/python/gevent/resolver/cares.cp36-win32.pyd b/python/gevent/resolver/cares.cp36-win32.pyd deleted file mode 100644 index af58514606bc3e098cc21da488977b26a3a82f4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 154112 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 I|Irip53nt7asU7T diff --git a/python/gevent/resolver/cares.pyx b/python/gevent/resolver/cares.pyx deleted file mode 100644 index cc43c13..0000000 --- a/python/gevent/resolver/cares.pyx +++ /dev/null @@ -1,464 +0,0 @@ -# Copyright (c) 2011-2012 Denis Bilenko. See LICENSE for details. -# Automatic pickling of cdef classes was added in 0.26. Unfortunately it -# seems to be buggy (at least for the `result` class) and produces code that -# can't compile ("local variable 'result' referenced before assignment"). -# See https://github.com/cython/cython/issues/1786 -# cython: auto_pickle=False -cimport libcares as cares -import sys - -from cpython.ref cimport Py_INCREF -from cpython.ref cimport Py_DECREF -from cpython.mem cimport PyMem_Malloc -from cpython.mem cimport PyMem_Free - -from _socket import gaierror - - -__all__ = ['channel'] - -cdef object string_types -cdef object text_type - -if sys.version_info[0] >= 3: - string_types = str, - text_type = str -else: - string_types = __builtins__.basestring, - text_type = __builtins__.unicode - -TIMEOUT = 1 - -DEF EV_READ = 1 -DEF EV_WRITE = 2 - - -cdef extern from "dnshelper.c": - int AF_INET - int AF_INET6 - - struct hostent: - char* h_name - int h_addrtype - - struct sockaddr_t "sockaddr": - pass - - struct ares_channeldata: - pass - - object parse_h_name(hostent*) - object parse_h_aliases(hostent*) - object parse_h_addr_list(hostent*) - void* create_object_from_hostent(void*) - - # this imports _socket lazily - object PyUnicode_FromString(char*) - int PyTuple_Check(object) - int PyArg_ParseTuple(object, char*, ...) except 0 - struct sockaddr_in6: - pass - int gevent_make_sockaddr(char* hostp, int port, int flowinfo, int scope_id, sockaddr_in6* sa6) - - - void memset(void*, int, int) - - -ARES_SUCCESS = cares.ARES_SUCCESS -ARES_ENODATA = cares.ARES_ENODATA -ARES_EFORMERR = cares.ARES_EFORMERR -ARES_ESERVFAIL = cares.ARES_ESERVFAIL -ARES_ENOTFOUND = cares.ARES_ENOTFOUND -ARES_ENOTIMP = cares.ARES_ENOTIMP -ARES_EREFUSED = cares.ARES_EREFUSED -ARES_EBADQUERY = cares.ARES_EBADQUERY -ARES_EBADNAME = cares.ARES_EBADNAME -ARES_EBADFAMILY = cares.ARES_EBADFAMILY -ARES_EBADRESP = cares.ARES_EBADRESP -ARES_ECONNREFUSED = cares.ARES_ECONNREFUSED -ARES_ETIMEOUT = cares.ARES_ETIMEOUT -ARES_EOF = cares.ARES_EOF -ARES_EFILE = cares.ARES_EFILE -ARES_ENOMEM = cares.ARES_ENOMEM -ARES_EDESTRUCTION = cares.ARES_EDESTRUCTION -ARES_EBADSTR = cares.ARES_EBADSTR -ARES_EBADFLAGS = cares.ARES_EBADFLAGS -ARES_ENONAME = cares.ARES_ENONAME -ARES_EBADHINTS = cares.ARES_EBADHINTS -ARES_ENOTINITIALIZED = cares.ARES_ENOTINITIALIZED -ARES_ELOADIPHLPAPI = cares.ARES_ELOADIPHLPAPI -ARES_EADDRGETNETWORKPARAMS = cares.ARES_EADDRGETNETWORKPARAMS -ARES_ECANCELLED = cares.ARES_ECANCELLED - -ARES_FLAG_USEVC = cares.ARES_FLAG_USEVC -ARES_FLAG_PRIMARY = cares.ARES_FLAG_PRIMARY -ARES_FLAG_IGNTC = cares.ARES_FLAG_IGNTC -ARES_FLAG_NORECURSE = cares.ARES_FLAG_NORECURSE -ARES_FLAG_STAYOPEN = cares.ARES_FLAG_STAYOPEN -ARES_FLAG_NOSEARCH = cares.ARES_FLAG_NOSEARCH -ARES_FLAG_NOALIASES = cares.ARES_FLAG_NOALIASES -ARES_FLAG_NOCHECKRESP = cares.ARES_FLAG_NOCHECKRESP - - -_ares_errors = dict([ - (cares.ARES_SUCCESS, 'ARES_SUCCESS'), - (cares.ARES_ENODATA, 'ARES_ENODATA'), - (cares.ARES_EFORMERR, 'ARES_EFORMERR'), - (cares.ARES_ESERVFAIL, 'ARES_ESERVFAIL'), - (cares.ARES_ENOTFOUND, 'ARES_ENOTFOUND'), - (cares.ARES_ENOTIMP, 'ARES_ENOTIMP'), - (cares.ARES_EREFUSED, 'ARES_EREFUSED'), - (cares.ARES_EBADQUERY, 'ARES_EBADQUERY'), - (cares.ARES_EBADNAME, 'ARES_EBADNAME'), - (cares.ARES_EBADFAMILY, 'ARES_EBADFAMILY'), - (cares.ARES_EBADRESP, 'ARES_EBADRESP'), - (cares.ARES_ECONNREFUSED, 'ARES_ECONNREFUSED'), - (cares.ARES_ETIMEOUT, 'ARES_ETIMEOUT'), - (cares.ARES_EOF, 'ARES_EOF'), - (cares.ARES_EFILE, 'ARES_EFILE'), - (cares.ARES_ENOMEM, 'ARES_ENOMEM'), - (cares.ARES_EDESTRUCTION, 'ARES_EDESTRUCTION'), - (cares.ARES_EBADSTR, 'ARES_EBADSTR'), - (cares.ARES_EBADFLAGS, 'ARES_EBADFLAGS'), - (cares.ARES_ENONAME, 'ARES_ENONAME'), - (cares.ARES_EBADHINTS, 'ARES_EBADHINTS'), - (cares.ARES_ENOTINITIALIZED, 'ARES_ENOTINITIALIZED'), - (cares.ARES_ELOADIPHLPAPI, 'ARES_ELOADIPHLPAPI'), - (cares.ARES_EADDRGETNETWORKPARAMS, 'ARES_EADDRGETNETWORKPARAMS'), - (cares.ARES_ECANCELLED, 'ARES_ECANCELLED')]) - - -# maps c-ares flag to _socket module flag -_cares_flag_map = None - - -cdef _prepare_cares_flag_map(): - global _cares_flag_map - import _socket - _cares_flag_map = [ - (getattr(_socket, 'NI_NUMERICHOST', 1), cares.ARES_NI_NUMERICHOST), - (getattr(_socket, 'NI_NUMERICSERV', 2), cares.ARES_NI_NUMERICSERV), - (getattr(_socket, 'NI_NOFQDN', 4), cares.ARES_NI_NOFQDN), - (getattr(_socket, 'NI_NAMEREQD', 8), cares.ARES_NI_NAMEREQD), - (getattr(_socket, 'NI_DGRAM', 16), cares.ARES_NI_DGRAM)] - - -cpdef _convert_cares_flags(int flags, int default=cares.ARES_NI_LOOKUPHOST|cares.ARES_NI_LOOKUPSERVICE): - if _cares_flag_map is None: - _prepare_cares_flag_map() - for socket_flag, cares_flag in _cares_flag_map: - if socket_flag & flags: - default |= cares_flag - flags &= ~socket_flag - if not flags: - return default - raise gaierror(-1, "Bad value for ai_flags: 0x%x" % flags) - - -cpdef strerror(code): - return '%s: %s' % (_ares_errors.get(code) or code, cares.ares_strerror(code)) - - -class InvalidIP(ValueError): - pass - - -cdef void gevent_sock_state_callback(void *data, int s, int read, int write): - if not data: - return - cdef channel ch = <channel>data - ch._sock_state_callback(s, read, write) - - -cdef class result: - cdef public object value - cdef public object exception - - def __init__(self, object value=None, object exception=None): - self.value = value - self.exception = exception - - def __repr__(self): - if self.exception is None: - return '%s(%r)' % (self.__class__.__name__, self.value) - elif self.value is None: - return '%s(exception=%r)' % (self.__class__.__name__, self.exception) - else: - return '%s(value=%r, exception=%r)' % (self.__class__.__name__, self.value, self.exception) - # add repr_recursive precaution - - def successful(self): - return self.exception is None - - def get(self): - if self.exception is not None: - raise self.exception - return self.value - - -class ares_host_result(tuple): - - def __new__(cls, family, iterable): - cdef object self = tuple.__new__(cls, iterable) - self.family = family - return self - - def __getnewargs__(self): - return (self.family, tuple(self)) - - -cdef void gevent_ares_host_callback(void *arg, int status, int timeouts, hostent* host): - cdef channel channel - cdef object callback - channel, callback = <tuple>arg - Py_DECREF(<tuple>arg) - cdef object host_result - try: - if status or not host: - callback(result(None, gaierror(status, strerror(status)))) - else: - try: - host_result = ares_host_result(host.h_addrtype, (parse_h_name(host), parse_h_aliases(host), parse_h_addr_list(host))) - except: - callback(result(None, sys.exc_info()[1])) - else: - callback(result(host_result)) - except: - channel.loop.handle_error(callback, *sys.exc_info()) - - -cdef void gevent_ares_nameinfo_callback(void *arg, int status, int timeouts, char *c_node, char *c_service): - cdef channel channel - cdef object callback - channel, callback = <tuple>arg - Py_DECREF(<tuple>arg) - cdef object node - cdef object service - try: - if status: - callback(result(None, gaierror(status, strerror(status)))) - else: - if c_node: - node = PyUnicode_FromString(c_node) - else: - node = None - if c_service: - service = PyUnicode_FromString(c_service) - else: - service = None - callback(result((node, service))) - except: - channel.loop.handle_error(callback, *sys.exc_info()) - - -cdef class channel: - - cdef public object loop - cdef ares_channeldata* channel - cdef public dict _watchers - cdef public object _timer - - def __init__(self, object loop, flags=None, timeout=None, tries=None, ndots=None, - udp_port=None, tcp_port=None, servers=None): - cdef ares_channeldata* channel = NULL - cdef cares.ares_options options - memset(&options, 0, sizeof(cares.ares_options)) - cdef int optmask = cares.ARES_OPT_SOCK_STATE_CB - options.sock_state_cb = <void*>gevent_sock_state_callback - options.sock_state_cb_data = <void*>self - if flags is not None: - options.flags = int(flags) - optmask |= cares.ARES_OPT_FLAGS - if timeout is not None: - options.timeout = int(float(timeout) * 1000) - optmask |= cares.ARES_OPT_TIMEOUTMS - if tries is not None: - options.tries = int(tries) - optmask |= cares.ARES_OPT_TRIES - if ndots is not None: - options.ndots = int(ndots) - optmask |= cares.ARES_OPT_NDOTS - if udp_port is not None: - options.udp_port = int(udp_port) - optmask |= cares.ARES_OPT_UDP_PORT - if tcp_port is not None: - options.tcp_port = int(tcp_port) - optmask |= cares.ARES_OPT_TCP_PORT - cdef int result = cares.ares_library_init(cares.ARES_LIB_INIT_ALL) # ARES_LIB_INIT_WIN32 -DUSE_WINSOCK? - if result: - raise gaierror(result, strerror(result)) - result = cares.ares_init_options(&channel, &options, optmask) - if result: - raise gaierror(result, strerror(result)) - self._timer = loop.timer(TIMEOUT, TIMEOUT) - self._watchers = {} - self.channel = channel - try: - if servers is not None: - self.set_servers(servers) - self.loop = loop - except: - self.destroy() - raise - - def __repr__(self): - args = (self.__class__.__name__, id(self), self._timer, len(self._watchers)) - return '<%s at 0x%x _timer=%r _watchers[%s]>' % args - - def destroy(self): - if self.channel: - # XXX ares_library_cleanup? - cares.ares_destroy(self.channel) - self.channel = NULL - self._watchers.clear() - self._timer.stop() - self.loop = None - - def __dealloc__(self): - if self.channel: - # XXX ares_library_cleanup? - cares.ares_destroy(self.channel) - self.channel = NULL - - cpdef set_servers(self, servers=None): - if not self.channel: - raise gaierror(cares.ARES_EDESTRUCTION, 'this ares channel has been destroyed') - if not servers: - servers = [] - if isinstance(servers, string_types): - servers = servers.split(',') - cdef int length = len(servers) - cdef int result, index - cdef char* string - cdef cares.ares_addr_node* c_servers - if length <= 0: - result = cares.ares_set_servers(self.channel, NULL) - else: - c_servers = <cares.ares_addr_node*>PyMem_Malloc(sizeof(cares.ares_addr_node) * length) - if not c_servers: - raise MemoryError - try: - index = 0 - for server in servers: - if isinstance(server, unicode): - server = server.encode('ascii') - string = <char*?>server - if cares.ares_inet_pton(AF_INET, string, &c_servers[index].addr) > 0: - c_servers[index].family = AF_INET - elif cares.ares_inet_pton(AF_INET6, string, &c_servers[index].addr) > 0: - c_servers[index].family = AF_INET6 - else: - raise InvalidIP(repr(string)) - c_servers[index].next = &c_servers[index] + 1 - index += 1 - if index >= length: - break - c_servers[length - 1].next = NULL - index = cares.ares_set_servers(self.channel, c_servers) - if index: - raise ValueError(strerror(index)) - finally: - PyMem_Free(c_servers) - - # this crashes c-ares - #def cancel(self): - # cares.ares_cancel(self.channel) - - cdef _sock_state_callback(self, int socket, int read, int write): - if not self.channel: - return - cdef object watcher = self._watchers.get(socket) - cdef int events = 0 - if read: - events |= EV_READ - if write: - events |= EV_WRITE - if watcher is None: - if not events: - return - watcher = self.loop.io(socket, events) - self._watchers[socket] = watcher - elif events: - if watcher.events == events: - return - watcher.stop() - watcher.events = events - else: - watcher.stop() - watcher.close() - self._watchers.pop(socket, None) - if not self._watchers: - self._timer.stop() - return - watcher.start(self._process_fd, watcher, pass_events=True) - self._timer.again(self._on_timer) - - def _on_timer(self): - cares.ares_process_fd(self.channel, cares.ARES_SOCKET_BAD, cares.ARES_SOCKET_BAD) - - def _process_fd(self, int events, object watcher): - if not self.channel: - return - cdef int read_fd = watcher.fd - cdef int write_fd = read_fd - if not (events & EV_READ): - read_fd = cares.ARES_SOCKET_BAD - if not (events & EV_WRITE): - write_fd = cares.ARES_SOCKET_BAD - cares.ares_process_fd(self.channel, read_fd, write_fd) - - def gethostbyname(self, object callback, char* name, int family=AF_INET): - if not self.channel: - raise gaierror(cares.ARES_EDESTRUCTION, 'this ares channel has been destroyed') - # note that for file lookups still AF_INET can be returned for AF_INET6 request - cdef object arg = (self, callback) - Py_INCREF(arg) - cares.ares_gethostbyname(self.channel, name, family, <void*>gevent_ares_host_callback, <void*>arg) - - def gethostbyaddr(self, object callback, char* addr): - if not self.channel: - raise gaierror(cares.ARES_EDESTRUCTION, 'this ares channel has been destroyed') - # will guess the family - cdef char addr_packed[16] - cdef int family - cdef int length - if cares.ares_inet_pton(AF_INET, addr, addr_packed) > 0: - family = AF_INET - length = 4 - elif cares.ares_inet_pton(AF_INET6, addr, addr_packed) > 0: - family = AF_INET6 - length = 16 - else: - raise InvalidIP(repr(addr)) - cdef object arg = (self, callback) - Py_INCREF(arg) - cares.ares_gethostbyaddr(self.channel, addr_packed, length, family, <void*>gevent_ares_host_callback, <void*>arg) - - cpdef _getnameinfo(self, object callback, tuple sockaddr, int flags): - if not self.channel: - raise gaierror(cares.ARES_EDESTRUCTION, 'this ares channel has been destroyed') - cdef char* hostp = NULL - cdef int port = 0 - cdef int flowinfo = 0 - cdef int scope_id = 0 - cdef sockaddr_in6 sa6 - if not PyTuple_Check(sockaddr): - raise TypeError('expected a tuple, got %r' % (sockaddr, )) - PyArg_ParseTuple(sockaddr, "si|ii", &hostp, &port, &flowinfo, &scope_id) - if port < 0 or port > 65535: - raise gaierror(-8, 'Invalid value for port: %r' % port) - cdef int length = gevent_make_sockaddr(hostp, port, flowinfo, scope_id, &sa6) - if length <= 0: - raise InvalidIP(repr(hostp)) - cdef object arg = (self, callback) - Py_INCREF(arg) - cdef sockaddr_t* x = <sockaddr_t*>&sa6 - cares.ares_getnameinfo(self.channel, x, length, flags, <void*>gevent_ares_nameinfo_callback, <void*>arg) - - def getnameinfo(self, object callback, tuple sockaddr, int flags): - try: - flags = _convert_cares_flags(flags) - except gaierror: - # The stdlib just ignores bad flags - flags = 0 - return self._getnameinfo(callback, sockaddr, flags) diff --git a/python/gevent/resolver/cares_ntop.h b/python/gevent/resolver/cares_ntop.h deleted file mode 100644 index 9ffc9dd..0000000 --- a/python/gevent/resolver/cares_ntop.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifdef CARES_EMBED -#include "ares_setup.h" -#include "ares.h" -#else -#include <arpa/inet.h> -#define ares_inet_ntop(w,x,y,z) inet_ntop(w,x,y,z) -#endif diff --git a/python/gevent/resolver/cares_pton.h b/python/gevent/resolver/cares_pton.h deleted file mode 100644 index 85af403..0000000 --- a/python/gevent/resolver/cares_pton.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifdef CARES_EMBED -#include "ares_setup.h" -#include "ares_inet_net_pton.h" -#else -#include <arpa/inet.h> -#define ares_inet_pton(x,y,z) inet_pton(x,y,z) -#define ares_inet_net_pton(w,x,y,z) inet_net_pton(w,x,y,z) -#endif diff --git a/python/gevent/resolver/dnshelper.c b/python/gevent/resolver/dnshelper.c deleted file mode 100644 index 3befb69..0000000 --- a/python/gevent/resolver/dnshelper.c +++ /dev/null @@ -1,159 +0,0 @@ -/* Copyright (c) 2011 Denis Bilenko. See LICENSE for details. */ -#include "Python.h" -#ifdef CARES_EMBED -#include "ares_setup.h" -#endif - -#ifdef HAVE_NETDB_H -#include <netdb.h> -#endif - -#include "ares.h" - -#include "cares_ntop.h" -#include "cares_pton.h" - -#if PY_VERSION_HEX < 0x02060000 - #define PyUnicode_FromString PyString_FromString -#elif PY_MAJOR_VERSION < 3 - #define PyUnicode_FromString PyBytes_FromString -#endif - - -static PyObject* _socket_error = 0; - -static PyObject* -get_socket_object(PyObject** pobject, const char* name) -{ - if (!*pobject) { - PyObject* _socket; - _socket = PyImport_ImportModule("_socket"); - if (_socket) { - *pobject = PyObject_GetAttrString(_socket, name); - if (!*pobject) { - PyErr_WriteUnraisable(Py_None); - } - Py_DECREF(_socket); - } - else { - PyErr_WriteUnraisable(Py_None); - } - if (!*pobject) { - *pobject = PyExc_IOError; - } - } - return *pobject; -} - - -static int -gevent_append_addr(PyObject* list, int family, void* src, char* tmpbuf, size_t tmpsize) { - int status = -1; - PyObject* tmp; - if (ares_inet_ntop(family, src, tmpbuf, tmpsize)) { - tmp = PyUnicode_FromString(tmpbuf); - if (tmp) { - status = PyList_Append(list, tmp); - Py_DECREF(tmp); - } - } - return status; -} - - -static PyObject* -parse_h_name(struct hostent *h) -{ - return PyUnicode_FromString(h->h_name); -} - - -static PyObject* -parse_h_aliases(struct hostent *h) -{ - char **pch; - PyObject *result = NULL; - PyObject *tmp; - - result = PyList_New(0); - - if (result && h->h_aliases) { - for (pch = h->h_aliases; *pch != NULL; pch++) { - if (*pch != h->h_name && strcmp(*pch, h->h_name)) { - int status; - tmp = PyUnicode_FromString(*pch); - if (tmp == NULL) { - break; - } - - status = PyList_Append(result, tmp); - Py_DECREF(tmp); - - if (status) { - break; - } - } - } - } - - return result; -} - - -static PyObject * -parse_h_addr_list(struct hostent *h) -{ - char **pch; - PyObject *result = NULL; - - result = PyList_New(0); - - if (result) { - switch (h->h_addrtype) { - case AF_INET: - { - char tmpbuf[sizeof "255.255.255.255"]; - for (pch = h->h_addr_list; *pch != NULL; pch++) { - if (gevent_append_addr(result, AF_INET, *pch, tmpbuf, sizeof(tmpbuf))) { - break; - } - } - break; - } - case AF_INET6: - { - char tmpbuf[sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255")]; - for (pch = h->h_addr_list; *pch != NULL; pch++) { - if (gevent_append_addr(result, AF_INET6, *pch, tmpbuf, sizeof(tmpbuf))) { - break; - } - } - break; - } - default: - PyErr_SetString(get_socket_object(&_socket_error, "error"), "unsupported address family"); - Py_DECREF(result); - result = NULL; - } - } - - return result; -} - - -static int -gevent_make_sockaddr(char* hostp, int port, int flowinfo, int scope_id, struct sockaddr_in6* sa6) { - if ( ares_inet_pton(AF_INET, hostp, &((struct sockaddr_in*)sa6)->sin_addr.s_addr) > 0 ) { - ((struct sockaddr_in*)sa6)->sin_family = AF_INET; - ((struct sockaddr_in*)sa6)->sin_port = htons(port); - return sizeof(struct sockaddr_in); - } - else if ( ares_inet_pton(AF_INET6, hostp, &sa6->sin6_addr.s6_addr) > 0 ) { - sa6->sin6_family = AF_INET6; - sa6->sin6_port = htons(port); - sa6->sin6_flowinfo = flowinfo; - sa6->sin6_scope_id = scope_id; - return sizeof(struct sockaddr_in6); - } - return -1; -} diff --git a/python/gevent/resolver/dnspython.py b/python/gevent/resolver/dnspython.py deleted file mode 100644 index c2ae73b..0000000 --- a/python/gevent/resolver/dnspython.py +++ /dev/null @@ -1,662 +0,0 @@ -# Copyright (c) 2018 gevent contributors. See LICENSE for details. - -# Portions of this code taken from the gogreen project: -# http://github.com/slideinc/gogreen -# -# Copyright (c) 2005-2010 Slide, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided -# with the distribution. -# * Neither the name of the author nor the names of other -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# Portions of this code taken from the eventlet project: -# https://github.com/eventlet/eventlet/blob/master/eventlet/support/greendns.py - -# Unless otherwise noted, the files in Eventlet are under the following MIT license: - -# Copyright (c) 2005-2006, Bob Ippolito -# Copyright (c) 2007-2010, Linden Research, Inc. -# Copyright (c) 2008-2010, Eventlet Contributors (see AUTHORS) - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -from __future__ import absolute_import, print_function, division - -import time -import re -import os -import sys - -import _socket -from _socket import AI_NUMERICHOST -from _socket import error -from _socket import NI_NUMERICSERV -from _socket import AF_INET -from _socket import AF_INET6 -from _socket import AF_UNSPEC - -import socket - -from . import AbstractResolver -from . import hostname_types - -from gevent._compat import string_types -from gevent._compat import iteritems -from gevent._patcher import import_patched -from gevent._config import config - -__all__ = [ - 'Resolver', -] - -# Import the DNS packages to use the gevent modules, -# even if the system is not monkey-patched. -def _patch_dns(): - top = import_patched('dns') - for pkg in ('dns', - 'dns.rdtypes', - 'dns.rdtypes.IN', - 'dns.rdtypes.ANY'): - mod = import_patched(pkg) - for name in mod.__all__: - setattr(mod, name, import_patched(pkg + '.' + name)) - return top - -dns = _patch_dns() - -def _dns_import_patched(name): - assert name.startswith('dns') - import_patched(name) - return dns - -# This module tries to dynamically import classes -# using __import__, and it's important that they match -# the ones we just created, otherwise exceptions won't be caught -# as expected. It uses a one-arg __import__ statement and then -# tries to walk down the sub-modules using getattr, so we can't -# directly use import_patched as-is. -dns.rdata.__import__ = _dns_import_patched - -resolver = dns.resolver -dTimeout = dns.resolver.Timeout - -_exc_clear = getattr(sys, 'exc_clear', lambda: None) - -# This is a copy of resolver._getaddrinfo with the crucial change that it -# doesn't have a bare except:, because that breaks Timeout and KeyboardInterrupt -# A secondary change is that calls to sys.exc_clear() have been inserted to avoid -# failing tests in test__refcount.py (timeouts). -# See https://github.com/rthalley/dnspython/pull/300 -def _getaddrinfo(host=None, service=None, family=AF_UNSPEC, socktype=0, - proto=0, flags=0): - # pylint:disable=too-many-locals,broad-except,too-many-statements - # pylint:disable=too-many-branches - # pylint:disable=redefined-argument-from-local - # pylint:disable=consider-using-in - if flags & (socket.AI_ADDRCONFIG | socket.AI_V4MAPPED) != 0: - raise NotImplementedError - if host is None and service is None: - raise socket.gaierror(socket.EAI_NONAME) - v6addrs = [] - v4addrs = [] - canonical_name = None - try: - # Is host None or a V6 address literal? - if host is None: - canonical_name = 'localhost' - if flags & socket.AI_PASSIVE != 0: - v6addrs.append('::') - v4addrs.append('0.0.0.0') - else: - v6addrs.append('::1') - v4addrs.append('127.0.0.1') - else: - parts = host.split('%') - if len(parts) == 2: - ahost = parts[0] - else: - ahost = host - addr = dns.ipv6.inet_aton(ahost) - v6addrs.append(host) - canonical_name = host - except Exception: - _exc_clear() - try: - # Is it a V4 address literal? - addr = dns.ipv4.inet_aton(host) - v4addrs.append(host) - canonical_name = host - except Exception: - _exc_clear() - if flags & socket.AI_NUMERICHOST == 0: - try: - if family == socket.AF_INET6 or family == socket.AF_UNSPEC: - v6 = resolver._resolver.query(host, dns.rdatatype.AAAA, - raise_on_no_answer=False) - # Note that setting host ensures we query the same name - # for A as we did for AAAA. - host = v6.qname - canonical_name = v6.canonical_name.to_text(True) - if v6.rrset is not None: - for rdata in v6.rrset: - v6addrs.append(rdata.address) - if family == socket.AF_INET or family == socket.AF_UNSPEC: - v4 = resolver._resolver.query(host, dns.rdatatype.A, - raise_on_no_answer=False) - host = v4.qname - canonical_name = v4.canonical_name.to_text(True) - if v4.rrset is not None: - for rdata in v4.rrset: - v4addrs.append(rdata.address) - except dns.resolver.NXDOMAIN: - _exc_clear() - raise socket.gaierror(socket.EAI_NONAME) - except Exception: - _exc_clear() - raise socket.gaierror(socket.EAI_SYSTEM) - port = None - try: - # Is it a port literal? - if service is None: - port = 0 - else: - port = int(service) - except Exception: - _exc_clear() - if flags & socket.AI_NUMERICSERV == 0: - try: - port = socket.getservbyname(service) - except Exception: - _exc_clear() - - if port is None: - raise socket.gaierror(socket.EAI_NONAME) - tuples = [] - if socktype == 0: - socktypes = [socket.SOCK_DGRAM, socket.SOCK_STREAM] - else: - socktypes = [socktype] - if flags & socket.AI_CANONNAME != 0: - cname = canonical_name - else: - cname = '' - if family == socket.AF_INET6 or family == socket.AF_UNSPEC: - for addr in v6addrs: - for socktype in socktypes: - for proto in resolver._protocols_for_socktype[socktype]: - tuples.append((socket.AF_INET6, socktype, proto, - cname, (addr, port, 0, 0))) # XXX: gevent: this can get the scopeid wrong - if family == socket.AF_INET or family == socket.AF_UNSPEC: - for addr in v4addrs: - for socktype in socktypes: - for proto in resolver._protocols_for_socktype[socktype]: - tuples.append((socket.AF_INET, socktype, proto, - cname, (addr, port))) - if len(tuples) == 0: # pylint:disable=len-as-condition - raise socket.gaierror(socket.EAI_NONAME) - return tuples - - -resolver._getaddrinfo = _getaddrinfo - -HOSTS_TTL = 300.0 - -def _is_addr(host, parse=dns.ipv4.inet_aton): - if not host: - return False - assert isinstance(host, hostname_types), repr(host) - try: - parse(host) - except dns.exception.SyntaxError: - return False - else: - return True - -# Return True if host is a valid IPv4 address -_is_ipv4_addr = _is_addr - - -def _is_ipv6_addr(host): - # Return True if host is a valid IPv6 address - if host: - s = '%' if isinstance(host, str) else b'%' - host = host.split(s, 1)[0] - return _is_addr(host, dns.ipv6.inet_aton) - -class HostsFile(object): - """ - A class to read the contents of a hosts file (/etc/hosts). - """ - - LINES_RE = re.compile(r""" - \s* # Leading space - ([^\r\n#]+?) # The actual match, non-greedy so as not to include trailing space - \s* # Trailing space - (?:[#][^\r\n]+)? # Comments - (?:$|[\r\n]+) # EOF or newline - """, re.VERBOSE) - - def __init__(self, fname=None): - self.v4 = {} # name -> ipv4 - self.v6 = {} # name -> ipv6 - self.aliases = {} # name -> canonical_name - self.reverse = {} # ip addr -> some name - if fname is None: - if os.name == 'posix': - fname = '/etc/hosts' - elif os.name == 'nt': # pragma: no cover - fname = os.path.expandvars( - r'%SystemRoot%\system32\drivers\etc\hosts') - self.fname = fname - assert self.fname - self._last_load = 0 - - - def _readlines(self): - # Read the contents of the hosts file. - # - # Return list of lines, comment lines and empty lines are - # excluded. Note that this performs disk I/O so can be - # blocking. - with open(self.fname, 'rb') as fp: - fdata = fp.read() - - - # XXX: Using default decoding. Is that correct? - udata = fdata.decode(errors='ignore') if not isinstance(fdata, str) else fdata - - return self.LINES_RE.findall(udata) - - def load(self): # pylint:disable=too-many-locals - # Load hosts file - - # This will (re)load the data from the hosts - # file if it has changed. - - try: - load_time = os.stat(self.fname).st_mtime - needs_load = load_time > self._last_load - except (IOError, OSError): - from gevent import get_hub - get_hub().handle_error(self, *sys.exc_info()) - needs_load = False - - if not needs_load: - return - - v4 = {} - v6 = {} - aliases = {} - reverse = {} - - for line in self._readlines(): - parts = line.split() - if len(parts) < 2: - continue - ip = parts.pop(0) - if _is_ipv4_addr(ip): - ipmap = v4 - elif _is_ipv6_addr(ip): - if ip.startswith('fe80'): - # Do not use link-local addresses, OSX stores these here - continue - ipmap = v6 - else: - continue - cname = parts.pop(0).lower() - ipmap[cname] = ip - for alias in parts: - alias = alias.lower() - ipmap[alias] = ip - aliases[alias] = cname - - # XXX: This is wrong for ipv6 - if ipmap is v4: - ptr = '.'.join(reversed(ip.split('.'))) + '.in-addr.arpa' - else: - ptr = ip + '.ip6.arpa.' - if ptr not in reverse: - reverse[ptr] = cname - - self._last_load = load_time - self.v4 = v4 - self.v6 = v6 - self.aliases = aliases - self.reverse = reverse - - def iter_all_host_addr_pairs(self): - self.load() - for name, addr in iteritems(self.v4): - yield name, addr - for name, addr in iteritems(self.v6): - yield name, addr - -class _HostsAnswer(dns.resolver.Answer): - # Answer class for HostsResolver object - - def __init__(self, qname, rdtype, rdclass, rrset, raise_on_no_answer=True): - self.response = None - self.qname = qname - self.rdtype = rdtype - self.rdclass = rdclass - self.canonical_name = qname - if not rrset and raise_on_no_answer: - raise dns.resolver.NoAnswer() - self.rrset = rrset - self.expiration = (time.time() + - rrset.ttl if hasattr(rrset, 'ttl') else 0) - - -class _HostsResolver(object): - """ - Class to parse the hosts file - """ - - def __init__(self, fname=None, interval=HOSTS_TTL): - self.hosts_file = HostsFile(fname) - self.interval = interval - self._last_load = 0 - - def query(self, qname, rdtype=dns.rdatatype.A, rdclass=dns.rdataclass.IN, - tcp=False, source=None, raise_on_no_answer=True): # pylint:disable=unused-argument - # Query the hosts file - # - # The known rdtypes are dns.rdatatype.A, dns.rdatatype.AAAA and - # dns.rdatatype.CNAME. - # The ``rdclass`` parameter must be dns.rdataclass.IN while the - # ``tcp`` and ``source`` parameters are ignored. - # Return a HostAnswer instance or raise a dns.resolver.NoAnswer - # exception. - - now = time.time() - hosts_file = self.hosts_file - if self._last_load + self.interval < now: - self._last_load = now - hosts_file.load() - - rdclass = dns.rdataclass.IN # Always - if isinstance(qname, string_types): - name = qname - qname = dns.name.from_text(qname) - else: - name = str(qname) - - name = name.lower() - rrset = dns.rrset.RRset(qname, rdclass, rdtype) - rrset.ttl = self._last_load + self.interval - now - - if rdtype == dns.rdatatype.A: - mapping = hosts_file.v4 - kind = dns.rdtypes.IN.A.A - elif rdtype == dns.rdatatype.AAAA: - mapping = hosts_file.v6 - kind = dns.rdtypes.IN.AAAA.AAAA - elif rdtype == dns.rdatatype.CNAME: - mapping = hosts_file.aliases - kind = lambda c, t, addr: dns.rdtypes.ANY.CNAME.CNAME(c, t, dns.name.from_text(addr)) - elif rdtype == dns.rdatatype.PTR: - mapping = hosts_file.reverse - kind = lambda c, t, addr: dns.rdtypes.ANY.PTR.PTR(c, t, dns.name.from_text(addr)) - - - addr = mapping.get(name) - if not addr and qname.is_absolute(): - addr = mapping.get(name[:-1]) - if addr: - rrset.add(kind(rdclass, rdtype, addr)) - return _HostsAnswer(qname, rdtype, rdclass, rrset, raise_on_no_answer) - - def getaliases(self, hostname): - # Return a list of all the aliases of a given cname - - # Due to the way store aliases this is a bit inefficient, this - # clearly was an afterthought. But this is only used by - # gethostbyname_ex so it's probably fine. - aliases = self.hosts_file.aliases - result = [] - if hostname in aliases: - cannon = aliases[hostname] - else: - cannon = hostname - result.append(cannon) - for alias, cname in iteritems(aliases): - if cannon == cname: - result.append(alias) - result.remove(hostname) - return result - -class _DualResolver(object): - - def __init__(self): - self.hosts_resolver = _HostsResolver() - self.network_resolver = resolver.get_default_resolver() - self.network_resolver.cache = resolver.LRUCache() - - def query(self, qname, rdtype=dns.rdatatype.A, rdclass=dns.rdataclass.IN, - tcp=False, source=None, raise_on_no_answer=True, - _hosts_rdtypes=(dns.rdatatype.A, dns.rdatatype.AAAA, dns.rdatatype.PTR)): - # Query the resolver, using /etc/hosts - - # Behavior: - # 1. if hosts is enabled and contains answer, return it now - # 2. query nameservers for qname - if qname is None: - qname = '0.0.0.0' - - if not isinstance(qname, string_types): - if isinstance(qname, bytes): - qname = qname.decode("idna") - - if isinstance(qname, string_types): - qname = dns.name.from_text(qname, None) - - if isinstance(rdtype, string_types): - rdtype = dns.rdatatype.from_text(rdtype) - - if rdclass == dns.rdataclass.IN and rdtype in _hosts_rdtypes: - try: - answer = self.hosts_resolver.query(qname, rdtype, raise_on_no_answer=False) - except Exception: # pylint: disable=broad-except - from gevent import get_hub - get_hub().handle_error(self, *sys.exc_info()) - else: - if answer.rrset: - return answer - - return self.network_resolver.query(qname, rdtype, rdclass, - tcp, source, raise_on_no_answer=raise_on_no_answer) - -def _family_to_rdtype(family): - if family == socket.AF_INET: - rdtype = dns.rdatatype.A - elif family == socket.AF_INET6: - rdtype = dns.rdatatype.AAAA - else: - raise socket.gaierror(socket.EAI_FAMILY, - 'Address family not supported') - return rdtype - -class Resolver(AbstractResolver): - """ - An *experimental* resolver that uses `dnspython`_. - - This is typically slower than the default threaded resolver - (unless there's a cache hit, in which case it can be much faster). - It is usually much faster than the c-ares resolver. It tends to - scale well as more concurrent resolutions are attempted. - - Under Python 2, if the ``idna`` package is installed, this - resolver can resolve Unicode host names that the system resolver - cannot. - - .. note:: - - This **does not** use dnspython's default resolver object, or share any - classes with ``import dns``. A separate copy of the objects is imported to - be able to function in a non monkey-patched process. The documentation for the resolver - object still applies. - - The resolver that we use is available as the :attr:`resolver` attribute - of this object (typically ``gevent.get_hub().resolver.resolver``). - - .. caution:: - - Many of the same caveats about DNS results apply here as are documented - for :class:`gevent.resolver.ares.Resolver`. - - .. caution:: - - This resolver is experimental. It may be removed or modified in - the future. As always, feedback is welcome. - - .. versionadded:: 1.3a2 - - .. _dnspython: http://www.dnspython.org - """ - - def __init__(self, hub=None): # pylint: disable=unused-argument - if resolver._resolver is None: - _resolver = resolver._resolver = _DualResolver() - if config.resolver_nameservers: - _resolver.network_resolver.nameservers[:] = config.resolver_nameservers - if config.resolver_timeout: - _resolver.network_resolver.lifetime = config.resolver_timeout - # Different hubs in different threads could be sharing the same - # resolver. - assert isinstance(resolver._resolver, _DualResolver) - self._resolver = resolver._resolver - - @property - def resolver(self): - """ - The dnspython resolver object we use. - - This object has several useful attributes that can be used to - adjust the behaviour of the DNS system: - - * ``cache`` is a :class:`dns.resolver.LRUCache`. Its maximum size - can be configured by calling :meth:`resolver.cache.set_max_size` - * ``nameservers`` controls which nameservers to talk to - * ``lifetime`` configures a timeout for each individual query. - """ - return self._resolver.network_resolver - - def close(self): - pass - - def _getaliases(self, hostname, family): - if not isinstance(hostname, str): - if isinstance(hostname, bytes): - hostname = hostname.decode("idna") - aliases = self._resolver.hosts_resolver.getaliases(hostname) - net_resolver = self._resolver.network_resolver - rdtype = _family_to_rdtype(family) - while True: - try: - ans = net_resolver.query(hostname, dns.rdatatype.CNAME, rdtype) - except (dns.resolver.NoAnswer, dns.resolver.NXDOMAIN, dns.resolver.NoNameservers): - break - except dTimeout: - break - else: - aliases.extend(str(rr.target) for rr in ans.rrset) - hostname = ans[0].target - return aliases - - def getaddrinfo(self, host, port, family=0, socktype=0, proto=0, flags=0): - if ((host in (u'localhost', b'localhost') - or (_is_ipv6_addr(host) and host.startswith('fe80'))) - or not isinstance(host, str) or (flags & AI_NUMERICHOST)): - # this handles cases which do not require network access - # 1) host is None - # 2) host is of an invalid type - # 3) host is localhost or a link-local ipv6; dnspython returns the wrong - # scope-id for those. - # 3) AI_NUMERICHOST flag is set - - return _socket.getaddrinfo(host, port, family, socktype, proto, flags) - - if family == AF_UNSPEC: - # This tends to raise in the case that a v6 address did not exist - # but a v4 does. So we break it into two parts. - - # Note that if there is no ipv6 in the hosts file, but there *is* - # an ipv4, and there *is* an ipv6 in the nameservers, we will return - # both (from the first call). The system resolver on OS X only returns - # the results from the hosts file. doubleclick.com is one example. - - # See also https://github.com/gevent/gevent/issues/1012 - try: - return _getaddrinfo(host, port, family, socktype, proto, flags) - except socket.gaierror: - try: - return _getaddrinfo(host, port, AF_INET6, socktype, proto, flags) - except socket.gaierror: - return _getaddrinfo(host, port, AF_INET, socktype, proto, flags) - else: - return _getaddrinfo(host, port, family, socktype, proto, flags) - - def getnameinfo(self, sockaddr, flags): - if (sockaddr - and isinstance(sockaddr, (list, tuple)) - and sockaddr[0] in ('::1', '127.0.0.1', 'localhost')): - return _socket.getnameinfo(sockaddr, flags) - if isinstance(sockaddr, (list, tuple)) and not isinstance(sockaddr[0], hostname_types): - raise TypeError("getnameinfo(): illegal sockaddr argument") - try: - return resolver._getnameinfo(sockaddr, flags) - except error: - if not flags: - # dnspython doesn't like getting ports it can't resolve. - # We have one test, test__socket_dns.py:Test_getnameinfo_geventorg.test_port_zero - # that does this. We conservatively fix it here; this could be expanded later. - return resolver._getnameinfo(sockaddr, NI_NUMERICSERV) - - def gethostbyaddr(self, ip_address): - if ip_address in (u'127.0.0.1', u'::1', - b'127.0.0.1', b'::1', - 'localhost'): - return _socket.gethostbyaddr(ip_address) - - if not isinstance(ip_address, hostname_types): - raise TypeError("argument 1 must be str, bytes or bytearray, not %s" % (type(ip_address),)) - - return resolver._gethostbyaddr(ip_address) diff --git a/python/gevent/resolver/libcares.pxd b/python/gevent/resolver/libcares.pxd deleted file mode 100644 index 7b551a7..0000000 --- a/python/gevent/resolver/libcares.pxd +++ /dev/null @@ -1,109 +0,0 @@ -cdef extern from "ares.h": - struct ares_options: - int flags - void* sock_state_cb - void* sock_state_cb_data - int timeout - int tries - int ndots - unsigned short udp_port - unsigned short tcp_port - char **domains - int ndomains - char* lookups - - int ARES_OPT_FLAGS - int ARES_OPT_SOCK_STATE_CB - int ARES_OPT_TIMEOUTMS - int ARES_OPT_TRIES - int ARES_OPT_NDOTS - int ARES_OPT_TCP_PORT - int ARES_OPT_UDP_PORT - int ARES_OPT_SERVERS - int ARES_OPT_DOMAINS - int ARES_OPT_LOOKUPS - - int ARES_FLAG_USEVC - int ARES_FLAG_PRIMARY - int ARES_FLAG_IGNTC - int ARES_FLAG_NORECURSE - int ARES_FLAG_STAYOPEN - int ARES_FLAG_NOSEARCH - int ARES_FLAG_NOALIASES - int ARES_FLAG_NOCHECKRESP - - int ARES_LIB_INIT_ALL - int ARES_SOCKET_BAD - - int ARES_SUCCESS - int ARES_ENODATA - int ARES_EFORMERR - int ARES_ESERVFAIL - int ARES_ENOTFOUND - int ARES_ENOTIMP - int ARES_EREFUSED - int ARES_EBADQUERY - int ARES_EBADNAME - int ARES_EBADFAMILY - int ARES_EBADRESP - int ARES_ECONNREFUSED - int ARES_ETIMEOUT - int ARES_EOF - int ARES_EFILE - int ARES_ENOMEM - int ARES_EDESTRUCTION - int ARES_EBADSTR - int ARES_EBADFLAGS - int ARES_ENONAME - int ARES_EBADHINTS - int ARES_ENOTINITIALIZED - int ARES_ELOADIPHLPAPI - int ARES_EADDRGETNETWORKPARAMS - int ARES_ECANCELLED - - int ARES_NI_NOFQDN - int ARES_NI_NUMERICHOST - int ARES_NI_NAMEREQD - int ARES_NI_NUMERICSERV - int ARES_NI_DGRAM - int ARES_NI_TCP - int ARES_NI_UDP - int ARES_NI_SCTP - int ARES_NI_DCCP - int ARES_NI_NUMERICSCOPE - int ARES_NI_LOOKUPHOST - int ARES_NI_LOOKUPSERVICE - - - int ares_library_init(int flags) - void ares_library_cleanup() - int ares_init_options(void *channelptr, ares_options *options, int) - int ares_init(void *channelptr) - void ares_destroy(void *channelptr) - void ares_gethostbyname(void* channel, char *name, int family, void* callback, void *arg) - void ares_gethostbyaddr(void* channel, void *addr, int addrlen, int family, void* callback, void *arg) - void ares_process_fd(void* channel, int read_fd, int write_fd) - char* ares_strerror(int code) - void ares_cancel(void* channel) - void ares_getnameinfo(void* channel, void* sa, int salen, int flags, void* callback, void *arg) - - struct in_addr: - pass - - struct ares_in6_addr: - pass - - struct addr_union: - in_addr addr4 - ares_in6_addr addr6 - - struct ares_addr_node: - ares_addr_node *next - int family - addr_union addr - - int ares_set_servers(void* channel, ares_addr_node *servers) - - -cdef extern from "cares_pton.h": - int ares_inet_pton(int af, char *src, void *dst) diff --git a/python/gevent/resolver/thread.py b/python/gevent/resolver/thread.py deleted file mode 100644 index df71706..0000000 --- a/python/gevent/resolver/thread.py +++ /dev/null @@ -1,71 +0,0 @@ -# Copyright (c) 2012-2015 Denis Bilenko. See LICENSE for details. -""" -Native thread-based hostname resolver. -""" -import _socket - -from gevent.hub import get_hub - - -__all__ = ['Resolver'] - - -# trigger import of encodings.idna to avoid https://github.com/gevent/gevent/issues/349 -u'foo'.encode('idna') - - -class Resolver(object): - """ - Implementation of the resolver API using native threads and native resolution - functions. - - Using the native resolution mechanisms ensures the highest - compatibility with what a non-gevent program would return - including good support for platform specific configuration - mechanisms. The use of native (non-greenlet) threads ensures that - a caller doesn't block other greenlets. - - This implementation also has the benefit of being very simple in comparison to - :class:`gevent.resolver_ares.Resolver`. - - .. tip:: - - Most users find this resolver to be quite reliable in a - properly monkey-patched environment. However, there have been - some reports of long delays, slow performance or even hangs, - particularly in long-lived programs that make many, many DNS - requests. If you suspect that may be happening to you, try the - dnspython or ares resolver (and submit a bug report). - """ - def __init__(self, hub=None): - if hub is None: - hub = get_hub() - self.pool = hub.threadpool - if _socket.gaierror not in hub.NOT_ERROR: - # Do not cause lookup failures to get printed by the default - # error handler. This can be very noisy. - hub.NOT_ERROR += (_socket.gaierror, _socket.herror) - - def __repr__(self): - return '<gevent.resolver_thread.Resolver at 0x%x pool=%r>' % (id(self), self.pool) - - def close(self): - pass - - # from briefly reading socketmodule.c, it seems that all of the functions - # below are thread-safe in Python, even if they are not thread-safe in C. - - def gethostbyname(self, *args): - return self.pool.apply(_socket.gethostbyname, args) - - def gethostbyname_ex(self, *args): - return self.pool.apply(_socket.gethostbyname_ex, args) - - def getaddrinfo(self, *args, **kwargs): - return self.pool.apply(_socket.getaddrinfo, args, kwargs) - - def gethostbyaddr(self, *args, **kwargs): - return self.pool.apply(_socket.gethostbyaddr, args, kwargs) - - def getnameinfo(self, *args, **kwargs): - return self.pool.apply(_socket.getnameinfo, args, kwargs) diff --git a/python/gevent/resolver_ares.py b/python/gevent/resolver_ares.py deleted file mode 100644 index f3c992d..0000000 --- a/python/gevent/resolver_ares.py +++ /dev/null @@ -1,10 +0,0 @@ -"""Backwards compatibility alias for :mod:`gevent.resolver.ares`. - -.. deprecated:: 1.3 - Use :mod:`gevent.resolver.ares` -""" - -from gevent.resolver.ares import * # pylint:disable=wildcard-import,unused-wildcard-import -import gevent.resolver.ares as _ares -__all__ = _ares.__all__ -del _ares diff --git a/python/gevent/resolver_thread.py b/python/gevent/resolver_thread.py deleted file mode 100644 index a8687e7..0000000 --- a/python/gevent/resolver_thread.py +++ /dev/null @@ -1,10 +0,0 @@ -"""Backwards compatibility alias for :mod:`gevent.resolver.thread`. - -.. deprecated:: 1.3 - Use :mod:`gevent.resolver.cares` -""" - -from gevent.resolver.thread import * # pylint:disable=wildcard-import,unused-wildcard-import -import gevent.resolver.thread as _thread -__all__ = _thread.__all__ -del _thread diff --git a/python/gevent/select.py b/python/gevent/select.py deleted file mode 100644 index a4c182c..0000000 --- a/python/gevent/select.py +++ /dev/null @@ -1,286 +0,0 @@ -# Copyright (c) 2009-2011 Denis Bilenko. See LICENSE for details. -""" -Waiting for I/O completion. -""" -from __future__ import absolute_import, division, print_function - -import sys - -from gevent.event import Event -from gevent.hub import _get_hub_noargs as get_hub -from gevent.hub import sleep as _g_sleep -from gevent._compat import integer_types -from gevent._compat import iteritems -from gevent._util import copy_globals -from gevent._util import _NONE - -from errno import EINTR -from select import select as _real_original_select -if sys.platform.startswith('win32'): - def _original_select(r, w, x, t): - # windows cant handle three empty lists, but we've always - # accepted that - if not r and not w and not x: - return ((), (), ()) - return _real_original_select(r, w, x, t) -else: - _original_select = _real_original_select - - -try: - from select import poll as original_poll - from select import POLLIN, POLLOUT, POLLNVAL - __implements__ = ['select', 'poll'] -except ImportError: - original_poll = None - __implements__ = ['select'] - -__all__ = ['error'] + __implements__ - -import select as __select__ - -error = __select__.error - -__imports__ = copy_globals(__select__, globals(), - names_to_ignore=__all__, - dunder_names_to_keep=()) - -_EV_READ = 1 -_EV_WRITE = 2 - -def get_fileno(obj): - try: - fileno_f = obj.fileno - except AttributeError: - if not isinstance(obj, integer_types): - raise TypeError('argument must be an int, or have a fileno() method: %r' % (obj,)) - return obj - else: - return fileno_f() - - -class SelectResult(object): - __slots__ = ('read', 'write', 'event') - - def __init__(self): - self.read = [] - self.write = [] - self.event = Event() - - def add_read(self, socket): - self.read.append(socket) - self.event.set() - - add_read.event = _EV_READ - - def add_write(self, socket): - self.write.append(socket) - self.event.set() - - add_write.event = _EV_WRITE - - def __add_watchers(self, watchers, fdlist, callback, io, pri): - for fd in fdlist: - watcher = io(get_fileno(fd), callback.event) - watcher.priority = pri - watchers.append(watcher) - watcher.start(callback, fd) - - def _make_watchers(self, watchers, rlist, wlist): - loop = get_hub().loop - io = loop.io - MAXPRI = loop.MAXPRI - - try: - self.__add_watchers(watchers, rlist, self.add_read, io, MAXPRI) - self.__add_watchers(watchers, wlist, self.add_write, io, MAXPRI) - except IOError as ex: - raise error(*ex.args) - - def _closeall(self, watchers): - for watcher in watchers: - watcher.stop() - watcher.close() - del watchers[:] - - def select(self, rlist, wlist, timeout): - watchers = [] - try: - self._make_watchers(watchers, rlist, wlist) - self.event.wait(timeout=timeout) - return self.read, self.write, [] - finally: - self._closeall(watchers) - - -def select(rlist, wlist, xlist, timeout=None): # pylint:disable=unused-argument - """An implementation of :meth:`select.select` that blocks only the current greenlet. - - .. caution:: *xlist* is ignored. - - .. versionchanged:: 1.2a1 - Raise a :exc:`ValueError` if timeout is negative. This matches Python 3's - behaviour (Python 2 would raise a ``select.error``). Previously gevent had - undefined behaviour. - .. versionchanged:: 1.2a1 - Raise an exception if any of the file descriptors are invalid. - """ - if timeout is not None and timeout < 0: - # Raise an error like the real implementation; which error - # depends on the version. Python 3, where select.error is OSError, - # raises a ValueError (which makes sense). Older pythons raise - # the error from the select syscall...but we don't actually get there. - # We choose to just raise the ValueError as it makes more sense and is - # forward compatible - raise ValueError("timeout must be non-negative") - - # First, do a poll with the original select system call. This - # is the most efficient way to check to see if any of the file descriptors - # have previously been closed and raise the correct corresponding exception. - # (Because libev tends to just return them as ready...) - # We accept the *xlist* here even though we can't below because this is all about - # error handling. - sel_results = ((), (), ()) - try: - sel_results = _original_select(rlist, wlist, xlist, 0) - except error as e: - enumber = getattr(e, 'errno', None) or e.args[0] - if enumber != EINTR: - # Ignore interrupted syscalls - raise - - if sel_results[0] or sel_results[1] or sel_results[2] or (timeout is not None and timeout == 0): - # If we actually had stuff ready, go ahead and return it. No need - # to go through the trouble of doing our own stuff. - - # Likewise, if the timeout is 0, we already did a 0 timeout - # select and we don't need to do it again. Note that in libuv, - # zero duration timers may be called immediately, without - # cycling the event loop at all. 2.7/test_telnetlib.py "hangs" - # calling zero-duration timers if we go to the loop here. - - # However, because this is typically a place where scheduling switches - # can occur, we need to make sure that's still the case; otherwise a single - # consumer could monopolize the thread. (shows up in test_ftplib.) - _g_sleep() - return sel_results - - result = SelectResult() - return result.select(rlist, wlist, timeout) - - -if original_poll is not None: - class PollResult(object): - __slots__ = ('events', 'event') - - def __init__(self): - self.events = set() - self.event = Event() - - def add_event(self, events, fd): - if events < 0: - result_flags = POLLNVAL - else: - result_flags = 0 - if events & _EV_READ: - result_flags = POLLIN - if events & _EV_WRITE: - result_flags |= POLLOUT - - self.events.add((fd, result_flags)) - self.event.set() - - class poll(object): - """ - An implementation of :class:`select.poll` that blocks only the current greenlet. - - .. caution:: ``POLLPRI`` data is not supported. - - .. versionadded:: 1.1b1 - """ - def __init__(self): - # {int -> flags} - # We can't keep watcher objects in here because people commonly - # just drop the poll object when they're done, without calling - # unregister(). dnspython does this. - self.fds = {} - self.loop = get_hub().loop - - def register(self, fd, eventmask=_NONE): - if eventmask is _NONE: - flags = _EV_READ | _EV_WRITE - else: - flags = 0 - if eventmask & POLLIN: - flags = _EV_READ - if eventmask & POLLOUT: - flags |= _EV_WRITE - # If they ask for POLLPRI, we can't support - # that. Should we raise an error? - - fileno = get_fileno(fd) - self.fds[fileno] = flags - - def modify(self, fd, eventmask): - self.register(fd, eventmask) - - def poll(self, timeout=None): - """ - poll the registered fds. - - .. versionchanged:: 1.2a1 - File descriptors that are closed are reported with POLLNVAL. - - .. versionchanged:: 1.3a2 - Under libuv, interpret *timeout* values less than 0 the same as *None*, - i.e., block. This was always the case with libev. - """ - result = PollResult() - watchers = [] - io = self.loop.io - MAXPRI = self.loop.MAXPRI - try: - for fd, flags in iteritems(self.fds): - watcher = io(fd, flags) - watchers.append(watcher) - watcher.priority = MAXPRI - watcher.start(result.add_event, fd, pass_events=True) - if timeout is not None: - if timeout < 0: - # The docs for python say that an omitted timeout, - # a negative timeout and a timeout of None are all - # supposed to block forever. Many, but not all - # OS's accept any negative number to mean that. Some - # OS's raise errors for anything negative but not -1. - # Python 3.7 changes to always pass exactly -1 in that - # case from selectors. - - # Our Timeout class currently does not have a defined behaviour - # for negative values. On libuv, it uses a check watcher and effectively - # doesn't block. On libev, it seems to block. In either case, we - # *want* to block, so turn this into the sure fire block request. - timeout = None - elif timeout: - # The docs for poll.poll say timeout is in - # milliseconds. Our result objects work in - # seconds, so this should be *=, shouldn't it? - timeout /= 1000.0 - result.event.wait(timeout=timeout) - return list(result.events) - finally: - for awatcher in watchers: - awatcher.stop() - awatcher.close() - - def unregister(self, fd): - """ - Unregister the *fd*. - - .. versionchanged:: 1.2a1 - Raise a `KeyError` if *fd* was not registered, like the standard - library. Previously gevent did nothing. - """ - fileno = get_fileno(fd) - del self.fds[fileno] - -del original_poll diff --git a/python/gevent/server.py b/python/gevent/server.py deleted file mode 100644 index 4c48bd3..0000000 --- a/python/gevent/server.py +++ /dev/null @@ -1,282 +0,0 @@ -# Copyright (c) 2009-2012 Denis Bilenko. See LICENSE for details. -"""TCP/SSL server""" - -from contextlib import closing - -import sys - -from _socket import error as SocketError -from _socket import SOL_SOCKET -from _socket import SO_REUSEADDR -from _socket import AF_INET -from _socket import SOCK_DGRAM - -from gevent.baseserver import BaseServer -from gevent.socket import EWOULDBLOCK -from gevent.socket import socket as GeventSocket -from gevent._compat import PYPY, PY3 - -__all__ = ['StreamServer', 'DatagramServer'] - - -if sys.platform == 'win32': - # SO_REUSEADDR on Windows does not mean the same thing as on *nix (issue #217) - DEFAULT_REUSE_ADDR = None -else: - DEFAULT_REUSE_ADDR = 1 - - -if PY3: - # sockets and SSL sockets are context managers on Python 3 - def _closing_socket(sock): - return sock -else: - # but they are not guaranteed to be so on Python 2 - _closing_socket = closing - - -class StreamServer(BaseServer): - """ - A generic TCP server. - - Accepts connections on a listening socket and spawns user-provided - *handle* function for each connection with 2 arguments: the client - socket and the client address. - - Note that although the errors in a successfully spawned handler - will not affect the server or other connections, the errors raised - by :func:`accept` and *spawn* cause the server to stop accepting - for a short amount of time. The exact period depends on the values - of :attr:`min_delay` and :attr:`max_delay` attributes. - - The delay starts with :attr:`min_delay` and doubles with each - successive error until it reaches :attr:`max_delay`. A successful - :func:`accept` resets the delay to :attr:`min_delay` again. - - See :class:`~gevent.baseserver.BaseServer` for information on defining the *handle* - function and important restrictions on it. - - **SSL Support** - - The server can optionally work in SSL mode when given the correct - keyword arguments. (That is, the presence of any keyword arguments - will trigger SSL mode.) On Python 2.7.9 and later (any Python - version that supports the :class:`ssl.SSLContext`), this can be - done with a configured ``SSLContext``. On any Python version, it - can be done by passing the appropriate arguments for - :func:`ssl.wrap_socket`. - - The incoming socket will be wrapped into an SSL socket before - being passed to the *handle* function. - - If the *ssl_context* keyword argument is present, it should - contain an :class:`ssl.SSLContext`. The remaining keyword - arguments are passed to the :meth:`ssl.SSLContext.wrap_socket` - method of that object. Depending on the Python version, supported arguments - may include: - - - server_hostname - - suppress_ragged_eofs - - do_handshake_on_connect - - .. caution:: When using an SSLContext, it should either be - imported from :mod:`gevent.ssl`, or the process needs to be monkey-patched. - If the process is not monkey-patched and you pass the standard library - SSLContext, the resulting client sockets will not cooperate with gevent. - - Otherwise, keyword arguments are assumed to apply to :func:`ssl.wrap_socket`. - These keyword arguments may include: - - - keyfile - - certfile - - cert_reqs - - ssl_version - - ca_certs - - suppress_ragged_eofs - - do_handshake_on_connect - - ciphers - - .. versionchanged:: 1.2a2 - Add support for the *ssl_context* keyword argument. - - """ - # the default backlog to use if none was provided in __init__ - backlog = 256 - - reuse_addr = DEFAULT_REUSE_ADDR - - def __init__(self, listener, handle=None, backlog=None, spawn='default', **ssl_args): - BaseServer.__init__(self, listener, handle=handle, spawn=spawn) - try: - if ssl_args: - ssl_args.setdefault('server_side', True) - if 'ssl_context' in ssl_args: - ssl_context = ssl_args.pop('ssl_context') - self.wrap_socket = ssl_context.wrap_socket - self.ssl_args = ssl_args - else: - from gevent.ssl import wrap_socket - self.wrap_socket = wrap_socket - self.ssl_args = ssl_args - else: - self.ssl_args = None - if backlog is not None: - if hasattr(self, 'socket'): - raise TypeError('backlog must be None when a socket instance is passed') - self.backlog = backlog - except: - self.close() - raise - - @property - def ssl_enabled(self): - return self.ssl_args is not None - - def set_listener(self, listener): - BaseServer.set_listener(self, listener) - try: - self.socket = self.socket._sock - except AttributeError: - pass - - def init_socket(self): - if not hasattr(self, 'socket'): - # FIXME: clean up the socket lifetime - # pylint:disable=attribute-defined-outside-init - self.socket = self.get_listener(self.address, self.backlog, self.family) - self.address = self.socket.getsockname() - if self.ssl_args: - self._handle = self.wrap_socket_and_handle - else: - self._handle = self.handle - - @classmethod - def get_listener(cls, address, backlog=None, family=None): - if backlog is None: - backlog = cls.backlog - return _tcp_listener(address, backlog=backlog, reuse_addr=cls.reuse_addr, family=family) - - if PY3: - - def do_read(self): - sock = self.socket - try: - fd, address = sock._accept() - except BlockingIOError: # python 2: pylint: disable=undefined-variable - if not sock.timeout: - return - raise - - sock = GeventSocket(sock.family, sock.type, sock.proto, fileno=fd) - # XXX Python issue #7995? - return sock, address - - else: - - def do_read(self): - try: - client_socket, address = self.socket.accept() - except SocketError as err: - if err.args[0] == EWOULDBLOCK: - return - raise - # XXX: When would this not be the case? In Python 3 it makes sense - # because we're using the low-level _accept method, - # but not in Python 2. - if not isinstance(client_socket, GeventSocket): - # This leads to a leak of the watchers in client_socket - sockobj = GeventSocket(_sock=client_socket) - if PYPY: - client_socket._drop() - else: - sockobj = client_socket - return sockobj, address - - def do_close(self, sock, *args): - # pylint:disable=arguments-differ - sock.close() - - def wrap_socket_and_handle(self, client_socket, address): - # used in case of ssl sockets - with _closing_socket(self.wrap_socket(client_socket, **self.ssl_args)) as ssl_socket: - return self.handle(ssl_socket, address) - - -class DatagramServer(BaseServer): - """A UDP server""" - - reuse_addr = DEFAULT_REUSE_ADDR - - def __init__(self, *args, **kwargs): - # The raw (non-gevent) socket, if possible - self._socket = None - BaseServer.__init__(self, *args, **kwargs) - from gevent.lock import Semaphore - self._writelock = Semaphore() - - def init_socket(self): - if not hasattr(self, 'socket'): - # FIXME: clean up the socket lifetime - # pylint:disable=attribute-defined-outside-init - self.socket = self.get_listener(self.address, self.family) - self.address = self.socket.getsockname() - self._socket = self.socket - try: - self._socket = self._socket._sock - except AttributeError: - pass - - @classmethod - def get_listener(cls, address, family=None): - return _udp_socket(address, reuse_addr=cls.reuse_addr, family=family) - - def do_read(self): - try: - data, address = self._socket.recvfrom(8192) - except SocketError as err: - if err.args[0] == EWOULDBLOCK: - return - raise - return data, address - - def sendto(self, *args): - self._writelock.acquire() - try: - self.socket.sendto(*args) - finally: - self._writelock.release() - - -def _tcp_listener(address, backlog=50, reuse_addr=None, family=AF_INET): - """A shortcut to create a TCP socket, bind it and put it into listening state.""" - sock = GeventSocket(family=family) - if reuse_addr is not None: - sock.setsockopt(SOL_SOCKET, SO_REUSEADDR, reuse_addr) - try: - sock.bind(address) - except SocketError as ex: - strerror = getattr(ex, 'strerror', None) - if strerror is not None: - ex.strerror = strerror + ': ' + repr(address) - raise - sock.listen(backlog) - sock.setblocking(0) - return sock - - -def _udp_socket(address, backlog=50, reuse_addr=None, family=AF_INET): - # backlog argument for compat with tcp_listener - # pylint:disable=unused-argument - - # we want gevent.socket.socket here - sock = GeventSocket(family=family, type=SOCK_DGRAM) - if reuse_addr is not None: - sock.setsockopt(SOL_SOCKET, SO_REUSEADDR, reuse_addr) - try: - sock.bind(address) - except SocketError as ex: - strerror = getattr(ex, 'strerror', None) - if strerror is not None: - ex.strerror = strerror + ': ' + repr(address) - raise - return sock diff --git a/python/gevent/signal.py b/python/gevent/signal.py deleted file mode 100644 index 0954af8..0000000 --- a/python/gevent/signal.py +++ /dev/null @@ -1,137 +0,0 @@ -""" -Cooperative implementation of special cases of :func:`signal.signal`. - -This module is designed to work with libev's child watchers, as used -by default in :func:`gevent.os.fork` Note that each ``SIGCHLD`` handler -will be run in a new greenlet when the signal is delivered (just like -:class:`gevent.hub.signal`) - -The implementations in this module are only monkey patched if -:func:`gevent.os.waitpid` is being used (the default) and if -:const:`signal.SIGCHLD` is available; see :func:`gevent.os.fork` for -information on configuring this not to be the case for advanced uses. - -.. versionadded:: 1.1b4 -""" - -from __future__ import absolute_import - -from gevent._util import _NONE as _INITIAL -from gevent._util import copy_globals - -import signal as _signal - -__implements__ = [] -__extensions__ = [] - - -_child_handler = _INITIAL - -_signal_signal = _signal.signal -_signal_getsignal = _signal.getsignal - - -def getsignal(signalnum): - """ - Exactly the same as :func:`signal.getsignal` except where - :const:`signal.SIGCHLD` is concerned. - - For :const:`signal.SIGCHLD`, this cooperates with :func:`signal` - to provide consistent answers. - """ - if signalnum != _signal.SIGCHLD: - return _signal_getsignal(signalnum) - - global _child_handler - if _child_handler is _INITIAL: - _child_handler = _signal_getsignal(_signal.SIGCHLD) - - return _child_handler - - -def signal(signalnum, handler): - """ - Exactly the same as :func:`signal.signal` except where - :const:`signal.SIGCHLD` is concerned. - - .. note:: - - A :const:`signal.SIGCHLD` handler installed with this function - will only be triggered for children that are forked using - :func:`gevent.os.fork` (:func:`gevent.os.fork_and_watch`); - children forked before monkey patching, or otherwise by the raw - :func:`os.fork`, will not trigger the handler installed by this - function. (It's unlikely that a SIGCHLD handler installed with - the builtin :func:`signal.signal` would be triggered either; - libev typically overwrites such a handler at the C level. At - the very least, it's full of race conditions.) - - .. note:: - - Use of ``SIG_IGN`` and ``SIG_DFL`` may also have race conditions - with libev child watchers and the :mod:`gevent.subprocess` module. - - .. versionchanged:: 1.2a1 - If ``SIG_IGN`` or ``SIG_DFL`` are used to ignore ``SIGCHLD``, a - future use of ``gevent.subprocess`` and libev child watchers - will once again work. However, on Python 2, use of ``os.popen`` - will fail. - - .. versionchanged:: 1.1rc2 - Allow using ``SIG_IGN`` and ``SIG_DFL`` to reset and ignore ``SIGCHLD``. - However, this allows the possibility of a race condition if ``gevent.subprocess`` - had already been used. - """ - if signalnum != _signal.SIGCHLD: - return _signal_signal(signalnum, handler) - - # TODO: raise value error if not called from the main - # greenlet, just like threads - - if handler != _signal.SIG_IGN and handler != _signal.SIG_DFL and not callable(handler): - # exact same error message raised by the stdlib - raise TypeError("signal handler must be signal.SIG_IGN, signal.SIG_DFL, or a callable object") - - old_handler = getsignal(signalnum) - global _child_handler - _child_handler = handler - if handler in (_signal.SIG_IGN, _signal.SIG_DFL): - # Allow resetting/ignoring this signal at the process level. - # Note that this conflicts with gevent.subprocess and other users - # of child watchers, until the next time gevent.subprocess/loop.install_sigchld() - # is called. - from gevent.hub import get_hub # Are we always safe to import here? - _signal_signal(signalnum, handler) - get_hub().loop.reset_sigchld() - return old_handler - - -def _on_child_hook(): - # This is called in the hub greenlet. To let the function - # do more useful work, like use blocking functions, - # we run it in a new greenlet; see gevent.hub.signal - if callable(_child_handler): - # None is a valid value for the frame argument - from gevent import Greenlet - greenlet = Greenlet(_child_handler, _signal.SIGCHLD, None) - greenlet.switch() - - -import gevent.os - -if 'waitpid' in gevent.os.__implements__ and hasattr(_signal, 'SIGCHLD'): - # Tightly coupled here to gevent.os and its waitpid implementation; only use these - # if necessary. - gevent.os._on_child_hook = _on_child_hook - __implements__.append("signal") - __implements__.append("getsignal") -else: - # XXX: This breaks test__all__ on windows - __extensions__.append("signal") - __extensions__.append("getsignal") - -__imports__ = copy_globals(_signal, globals(), - names_to_ignore=__implements__ + __extensions__, - dunder_names_to_keep=()) - -__all__ = __implements__ + __extensions__ diff --git a/python/gevent/socket.py b/python/gevent/socket.py deleted file mode 100644 index 1bb039e..0000000 --- a/python/gevent/socket.py +++ /dev/null @@ -1,129 +0,0 @@ -# Copyright (c) 2009-2014 Denis Bilenko and gevent contributors. See LICENSE for details. - -"""Cooperative low-level networking interface. - -This module provides socket operations and some related functions. -The API of the functions and classes matches the API of the corresponding -items in the standard :mod:`socket` module exactly, but the synchronous functions -in this module only block the current greenlet and let the others run. - -For convenience, exceptions (like :class:`error <socket.error>` and :class:`timeout <socket.timeout>`) -as well as the constants from the :mod:`socket` module are imported into this module. -""" -# Our import magic sadly makes this warning useless -# pylint: disable=undefined-variable - -from gevent._compat import PY3 -from gevent._compat import exc_clear -from gevent._util import copy_globals - - -if PY3: - from gevent import _socket3 as _source # python 2: pylint:disable=no-name-in-module -else: - from gevent import _socket2 as _source - -# define some things we're expecting to overwrite; each module -# needs to define these -__implements__ = __dns__ = __all__ = __extensions__ = __imports__ = () - - -class error(Exception): - errno = None - - -def getfqdn(*args): - # pylint:disable=unused-argument - raise NotImplementedError() - -copy_globals(_source, globals(), - dunder_names_to_keep=('__implements__', '__dns__', '__all__', - '__extensions__', '__imports__', '__socket__'), - cleanup_globs=False) - -# The _socket2 and _socket3 don't import things defined in -# __extensions__, to help avoid confusing reference cycles in the -# documentation and to prevent importing from the wrong place, but we -# *do* need to expose them here. (NOTE: This may lead to some sphinx -# warnings like: -# WARNING: missing attribute mentioned in :members: or __all__: -# module gevent._socket2, attribute cancel_wait -# These can be ignored.) -from gevent import _socketcommon -copy_globals(_socketcommon, globals(), - only_names=_socketcommon.__extensions__) - -try: - _GLOBAL_DEFAULT_TIMEOUT = __socket__._GLOBAL_DEFAULT_TIMEOUT -except AttributeError: - _GLOBAL_DEFAULT_TIMEOUT = object() - - -def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT, source_address=None): - """ - create_connection(address, timeout=None, source_address=None) -> socket - - Connect to *address* and return the :class:`gevent.socket.socket` - object. - - Convenience function. Connect to *address* (a 2-tuple ``(host, - port)``) and return the socket object. Passing the optional - *timeout* parameter will set the timeout on the socket instance - before attempting to connect. If no *timeout* is supplied, the - global default timeout setting returned by - :func:`getdefaulttimeout` is used. If *source_address* is set it - must be a tuple of (host, port) for the socket to bind as a source - address before making the connection. A host of '' or port 0 tells - the OS to use the default. - """ - - host, port = address - # getaddrinfo is documented as returning a list, but our interface - # is pluggable, so be sure it does. - addrs = list(getaddrinfo(host, port, 0, SOCK_STREAM)) - if not addrs: - raise error("getaddrinfo returns an empty list") - - for res in addrs: - af, socktype, proto, _, sa = res - sock = None - try: - sock = socket(af, socktype, proto) - if timeout is not _GLOBAL_DEFAULT_TIMEOUT: - sock.settimeout(timeout) - if source_address: - sock.bind(source_address) - sock.connect(sa) - except error: - if sock is not None: - sock.close() - sock = None - if res is addrs[-1]: - raise - # without exc_clear(), if connect() fails once, the socket - # is referenced by the frame in exc_info and the next - # bind() fails (see test__socket.TestCreateConnection) - # that does not happen with regular sockets though, - # because _socket.socket.connect() is a built-in. this is - # similar to "getnameinfo loses a reference" failure in - # test_socket.py - exc_clear() - except BaseException: - # Things like GreenletExit, Timeout and KeyboardInterrupt. - # These get raised immediately, being sure to - # close the socket - if sock is not None: - sock.close() - sock = None - raise - else: - try: - return sock - finally: - sock = None - - -# This is promised to be in the __all__ of the _source, but, for circularity reasons, -# we implement it in this module. Mostly for documentation purposes, put it -# in the _source too. -_source.create_connection = create_connection diff --git a/python/gevent/ssl.py b/python/gevent/ssl.py deleted file mode 100644 index 42f2b1b..0000000 --- a/python/gevent/ssl.py +++ /dev/null @@ -1,26 +0,0 @@ -""" -Secure Sockets Layer (SSL/TLS) module. -""" -from gevent._compat import PY2 -from gevent._util import copy_globals - -# things we expect to override, here for static analysis -def wrap_socket(_sock, **_kwargs): - # pylint:disable=unused-argument - raise NotImplementedError() - -if PY2: - if hasattr(__import__('ssl'), 'SSLContext'): - # It's not sufficient to check for >= 2.7.9; some distributions - # have backported most of PEP 466. Try to accommodate them. See Issue #702. - # We're just about to import ssl anyway so it's fine to import it here, just - # don't pollute the namespace - from gevent import _sslgte279 as _source - else: - from gevent import _ssl2 as _source # pragma: no cover -else: - # Py3 - from gevent import _ssl3 as _source # pragma: no cover - - -copy_globals(_source, globals()) diff --git a/python/gevent/subprocess.py b/python/gevent/subprocess.py deleted file mode 100644 index e1e28ef..0000000 --- a/python/gevent/subprocess.py +++ /dev/null @@ -1,1672 +0,0 @@ -""" -Cooperative ``subprocess`` module. - -.. caution:: On POSIX platforms, this module is not usable from native - threads other than the main thread; attempting to do so will raise - a :exc:`TypeError`. This module depends on libev's fork watchers. - On POSIX systems, fork watchers are implemented using signals, and - the thread to which process-directed signals are delivered `is not - defined`_. Because each native thread has its own gevent/libev - loop, this means that a fork watcher registered with one loop - (thread) may never see the signal about a child it spawned if the - signal is sent to a different thread. - -.. note:: The interface of this module is intended to match that of - the standard library :mod:`subprocess` module (with many backwards - compatible extensions from Python 3 backported to Python 2). There - are some small differences between the Python 2 and Python 3 - versions of that module (the Python 2 ``TimeoutExpired`` exception, - notably, extends ``Timeout`` and there is no ``SubprocessError``) and between the - POSIX and Windows versions. The HTML documentation here can only - describe one version; for definitive documentation, see the - standard library or the source code. - -.. _is not defined: http://www.linuxprogrammingblog.com/all-about-linux-signals?page=11 -""" -from __future__ import absolute_import, print_function -# Can we split this up to make it cleaner? See https://github.com/gevent/gevent/issues/748 -# pylint: disable=too-many-lines -# Import magic -# pylint: disable=undefined-all-variable,undefined-variable -# Most of this we inherit from the standard lib -# pylint: disable=bare-except,too-many-locals,too-many-statements,attribute-defined-outside-init -# pylint: disable=too-many-branches,too-many-instance-attributes -# Most of this is cross-platform -# pylint: disable=no-member,expression-not-assigned,unused-argument,unused-variable -import errno -import gc -import os -import signal -import sys -import traceback -from gevent.event import AsyncResult -from gevent.hub import _get_hub_noargs as get_hub -from gevent.hub import linkproxy -from gevent.hub import sleep -from gevent.hub import getcurrent -from gevent._compat import integer_types, string_types, xrange -from gevent._compat import PY3 -from gevent._compat import reraise -from gevent._compat import fspath -from gevent._compat import fsencode -from gevent._util import _NONE -from gevent._util import copy_globals -from gevent.fileobject import FileObject -from gevent.greenlet import Greenlet, joinall -spawn = Greenlet.spawn -import subprocess as __subprocess__ - - -# Standard functions and classes that this module re-implements in a gevent-aware way. -__implements__ = [ - 'Popen', - 'call', - 'check_call', - 'check_output', -] -if PY3 and not sys.platform.startswith('win32'): - __implements__.append("_posixsubprocess") - _posixsubprocess = None - -# Some symbols we define that we expect to export; -# useful for static analysis -PIPE = "PIPE should be imported" - -# Standard functions and classes that this module re-imports. -__imports__ = [ - 'PIPE', - 'STDOUT', - 'CalledProcessError', - # Windows: - 'CREATE_NEW_CONSOLE', - 'CREATE_NEW_PROCESS_GROUP', - 'STD_INPUT_HANDLE', - 'STD_OUTPUT_HANDLE', - 'STD_ERROR_HANDLE', - 'SW_HIDE', - 'STARTF_USESTDHANDLES', - 'STARTF_USESHOWWINDOW', -] - - -__extra__ = [ - 'MAXFD', - '_eintr_retry_call', - 'STARTUPINFO', - 'pywintypes', - 'list2cmdline', - '_subprocess', - '_winapi', - # Python 2.5 does not have _subprocess, so we don't use it - # XXX We don't run on Py 2.5 anymore; can/could/should we use _subprocess? - # It's only used on mswindows - 'WAIT_OBJECT_0', - 'WaitForSingleObject', - 'GetExitCodeProcess', - 'GetStdHandle', - 'CreatePipe', - 'DuplicateHandle', - 'GetCurrentProcess', - 'DUPLICATE_SAME_ACCESS', - 'GetModuleFileName', - 'GetVersion', - 'CreateProcess', - 'INFINITE', - 'TerminateProcess', - 'STILL_ACTIVE', - - # These were added for 3.5, but we make them available everywhere. - 'run', - 'CompletedProcess', -] - -if sys.version_info[:2] >= (3, 3): - __imports__ += [ - 'DEVNULL', - 'getstatusoutput', - 'getoutput', - 'SubprocessError', - 'TimeoutExpired', - ] -else: - __extra__.append("TimeoutExpired") - - -if sys.version_info[:2] >= (3, 5): - __extra__.remove('run') - __extra__.remove('CompletedProcess') - __implements__.append('run') - __implements__.append('CompletedProcess') - - # Removed in Python 3.5; this is the exact code that was removed: - # https://hg.python.org/cpython/rev/f98b0a5e5ef5 - __extra__.remove('MAXFD') - try: - MAXFD = os.sysconf("SC_OPEN_MAX") - except: - MAXFD = 256 - -if sys.version_info[:2] >= (3, 6): - # This was added to __all__ for windows in 3.6 - __extra__.remove('STARTUPINFO') - __imports__.append('STARTUPINFO') - -if sys.version_info[:2] >= (3, 7): - __imports__.extend([ - 'ABOVE_NORMAL_PRIORITY_CLASS', 'BELOW_NORMAL_PRIORITY_CLASS', - 'HIGH_PRIORITY_CLASS', 'IDLE_PRIORITY_CLASS', - 'NORMAL_PRIORITY_CLASS', - 'REALTIME_PRIORITY_CLASS', - 'CREATE_NO_WINDOW', 'DETACHED_PROCESS', - 'CREATE_DEFAULT_ERROR_MODE', - 'CREATE_BREAKAWAY_FROM_JOB' - ]) - -actually_imported = copy_globals(__subprocess__, globals(), - only_names=__imports__, - ignore_missing_names=True) -# anything we couldn't import from here we may need to find -# elsewhere -__extra__.extend(set(__imports__).difference(set(actually_imported))) -__imports__ = actually_imported -del actually_imported - - -# In Python 3 on Windows, a lot of the functions previously -# in _subprocess moved to _winapi -_subprocess = getattr(__subprocess__, '_subprocess', _NONE) -_winapi = getattr(__subprocess__, '_winapi', _NONE) - -_attr_resolution_order = [__subprocess__, _subprocess, _winapi] - -for name in list(__extra__): - if name in globals(): - continue - value = _NONE - for place in _attr_resolution_order: - value = getattr(place, name, _NONE) - if value is not _NONE: - break - - if value is _NONE: - __extra__.remove(name) - else: - globals()[name] = value - -del _attr_resolution_order -__all__ = __implements__ + __imports__ -# Some other things we want to document -for _x in ('run', 'CompletedProcess', 'TimeoutExpired'): - if _x not in __all__: - __all__.append(_x) - - -mswindows = sys.platform == 'win32' -if mswindows: - import msvcrt # pylint: disable=import-error - if PY3: - class Handle(int): - closed = False - - def Close(self): - if not self.closed: - self.closed = True - _winapi.CloseHandle(self) - - def Detach(self): - if not self.closed: - self.closed = True - return int(self) - raise ValueError("already closed") - - def __repr__(self): - return "Handle(%d)" % int(self) - - __del__ = Close - __str__ = __repr__ -else: - import fcntl - import pickle - from gevent import monkey - fork = monkey.get_original('os', 'fork') - from gevent.os import fork_and_watch - -def call(*popenargs, **kwargs): - """ - call(args, *, stdin=None, stdout=None, stderr=None, shell=False, timeout=None) -> returncode - - Run command with arguments. Wait for command to complete or - timeout, then return the returncode attribute. - - The arguments are the same as for the Popen constructor. Example:: - - retcode = call(["ls", "-l"]) - - .. versionchanged:: 1.2a1 - The ``timeout`` keyword argument is now accepted on all supported - versions of Python (not just Python 3) and if it expires will raise a - :exc:`TimeoutExpired` exception (under Python 2 this is a subclass of :exc:`~.Timeout`). - """ - timeout = kwargs.pop('timeout', None) - with Popen(*popenargs, **kwargs) as p: - try: - return p.wait(timeout=timeout, _raise_exc=True) - except: - p.kill() - p.wait() - raise - -def check_call(*popenargs, **kwargs): - """ - check_call(args, *, stdin=None, stdout=None, stderr=None, shell=False, timeout=None) -> 0 - - Run command with arguments. Wait for command to complete. If - the exit code was zero then return, otherwise raise - :exc:`CalledProcessError`. The ``CalledProcessError`` object will have the - return code in the returncode attribute. - - The arguments are the same as for the Popen constructor. Example:: - - retcode = check_call(["ls", "-l"]) - """ - retcode = call(*popenargs, **kwargs) - if retcode: - cmd = kwargs.get("args") - if cmd is None: - cmd = popenargs[0] - raise CalledProcessError(retcode, cmd) - return 0 - -def check_output(*popenargs, **kwargs): - r""" - check_output(args, *, input=None, stdin=None, stderr=None, shell=False, universal_newlines=False, timeout=None) -> output - - Run command with arguments and return its output. - - If the exit code was non-zero it raises a :exc:`CalledProcessError`. The - ``CalledProcessError`` object will have the return code in the returncode - attribute and output in the output attribute. - - - The arguments are the same as for the Popen constructor. Example:: - - >>> check_output(["ls", "-1", "/dev/null"]) - '/dev/null\n' - - The ``stdout`` argument is not allowed as it is used internally. - - To capture standard error in the result, use ``stderr=STDOUT``:: - - >>> check_output(["/bin/sh", "-c", - ... "ls -l non_existent_file ; exit 0"], - ... stderr=STDOUT) - 'ls: non_existent_file: No such file or directory\n' - - There is an additional optional argument, "input", allowing you to - pass a string to the subprocess's stdin. If you use this argument - you may not also use the Popen constructor's "stdin" argument, as - it too will be used internally. Example:: - - >>> check_output(["sed", "-e", "s/foo/bar/"], - ... input=b"when in the course of fooman events\n") - 'when in the course of barman events\n' - - If ``universal_newlines=True`` is passed, the return value will be a - string rather than bytes. - - .. versionchanged:: 1.2a1 - The ``timeout`` keyword argument is now accepted on all supported - versions of Python (not just Python 3) and if it expires will raise a - :exc:`TimeoutExpired` exception (under Python 2 this is a subclass of :exc:`~.Timeout`). - .. versionchanged:: 1.2a1 - The ``input`` keyword argument is now accepted on all supported - versions of Python, not just Python 3 - """ - timeout = kwargs.pop('timeout', None) - if 'stdout' in kwargs: - raise ValueError('stdout argument not allowed, it will be overridden.') - if 'input' in kwargs: - if 'stdin' in kwargs: - raise ValueError('stdin and input arguments may not both be used.') - inputdata = kwargs['input'] - del kwargs['input'] - kwargs['stdin'] = PIPE - else: - inputdata = None - with Popen(*popenargs, stdout=PIPE, **kwargs) as process: - try: - output, unused_err = process.communicate(inputdata, timeout=timeout) - except TimeoutExpired: - process.kill() - output, unused_err = process.communicate() - raise TimeoutExpired(process.args, timeout, output=output) - except: - process.kill() - process.wait() - raise - retcode = process.poll() - if retcode: - raise CalledProcessError(retcode, process.args, output=output) - return output - -_PLATFORM_DEFAULT_CLOSE_FDS = object() - -if 'TimeoutExpired' not in globals(): - # Python 2 - - # Make TimeoutExpired inherit from _Timeout so it can be caught - # the way we used to throw things (except Timeout), but make sure it doesn't - # init a timer. Note that we can't have a fake 'SubprocessError' that inherits - # from exception, because we need TimeoutExpired to just be a BaseException for - # bwc. - from gevent.timeout import Timeout as _Timeout - - class TimeoutExpired(_Timeout): - """ - This exception is raised when the timeout expires while waiting for - a child process in `communicate`. - - Under Python 2, this is a gevent extension with the same name as the - Python 3 class for source-code forward compatibility. However, it extends - :class:`gevent.timeout.Timeout` for backwards compatibility (because - we used to just raise a plain ``Timeout``); note that ``Timeout`` is a - ``BaseException``, *not* an ``Exception``. - - .. versionadded:: 1.2a1 - """ - - def __init__(self, cmd, timeout, output=None): - _Timeout.__init__(self, None) - self.cmd = cmd - self.seconds = timeout - self.output = output - - @property - def timeout(self): - return self.seconds - - def __str__(self): - return ("Command '%s' timed out after %s seconds" % - (self.cmd, self.timeout)) - - -if hasattr(os, 'set_inheritable'): - _set_inheritable = os.set_inheritable -else: - _set_inheritable = lambda i, v: True - - -class Popen(object): - """ - The underlying process creation and management in this module is - handled by the Popen class. It offers a lot of flexibility so that - developers are able to handle the less common cases not covered by - the convenience functions. - - .. seealso:: :class:`subprocess.Popen` - This class should have the same interface as the standard library class. - - .. versionchanged:: 1.2a1 - Instances can now be used as context managers under Python 2.7. Previously - this was restricted to Python 3. - - .. versionchanged:: 1.2a1 - Instances now save the ``args`` attribute under Python 2.7. Previously this was - restricted to Python 3. - - .. versionchanged:: 1.2b1 - Add the ``encoding`` and ``errors`` parameters for Python 3. - - .. versionchanged:: 1.3a1 - Accept "path-like" objects for the *cwd* parameter on all platforms. - This was added to Python 3.6. Previously with gevent, it only worked - on POSIX platforms on 3.6. - - .. versionchanged:: 1.3a1 - Add the ``text`` argument as a synonym for ``universal_newlines``, - as added on Python 3.7. - - .. versionchanged:: 1.3a2 - Allow the same keyword arguments under Python 2 as Python 3: - ``pass_fds``, ``start_new_session``, ``restore_signals``, ``encoding`` - and ``errors``. Under Python 2, ``encoding`` and ``errors`` are ignored - because native handling of universal newlines is used. - - .. versionchanged:: 1.3a2 - Under Python 2, ``restore_signals`` defaults to ``False``. Previously it - defaulted to ``True``, the same as it did in Python 3. - """ - - # The value returned from communicate() when there was nothing to read. - # Changes if we're in text mode or universal newlines mode. - _communicate_empty_value = b'' - - def __init__(self, args, - bufsize=-1 if PY3 else 0, - executable=None, - stdin=None, stdout=None, stderr=None, - preexec_fn=None, close_fds=_PLATFORM_DEFAULT_CLOSE_FDS, shell=False, - cwd=None, env=None, universal_newlines=None, - startupinfo=None, creationflags=0, - restore_signals=PY3, start_new_session=False, - pass_fds=(), - # Added in 3.6. These are kept as ivars - encoding=None, errors=None, - # Added in 3.7. Not an ivar directly. - text=None, - # gevent additions - threadpool=None): - - self.encoding = encoding - self.errors = errors - - hub = get_hub() - - if bufsize is None: - # Python 2 doesn't allow None at all, but Python 3 treats - # it the same as the default. We do as well. - bufsize = -1 if PY3 else 0 - if not isinstance(bufsize, integer_types): - raise TypeError("bufsize must be an integer") - - if mswindows: - if preexec_fn is not None: - raise ValueError("preexec_fn is not supported on Windows " - "platforms") - if sys.version_info[:2] >= (3, 7): - if close_fds is _PLATFORM_DEFAULT_CLOSE_FDS: - close_fds = True - else: - any_stdio_set = (stdin is not None or stdout is not None or - stderr is not None) - if close_fds is _PLATFORM_DEFAULT_CLOSE_FDS: - if any_stdio_set: - close_fds = False - else: - close_fds = True - elif close_fds and any_stdio_set: - raise ValueError("close_fds is not supported on Windows " - "platforms if you redirect stdin/stdout/stderr") - if threadpool is None: - threadpool = hub.threadpool - self.threadpool = threadpool - self._waiting = False - else: - # POSIX - if close_fds is _PLATFORM_DEFAULT_CLOSE_FDS: - # close_fds has different defaults on Py3/Py2 - if PY3: # pylint: disable=simplifiable-if-statement - close_fds = True - else: - close_fds = False - - if pass_fds and not close_fds: - import warnings - warnings.warn("pass_fds overriding close_fds.", RuntimeWarning) - close_fds = True - if startupinfo is not None: - raise ValueError("startupinfo is only supported on Windows " - "platforms") - if creationflags != 0: - raise ValueError("creationflags is only supported on Windows " - "platforms") - assert threadpool is None - self._loop = hub.loop - - # Validate the combinations of text and universal_newlines - if (text is not None and universal_newlines is not None - and bool(universal_newlines) != bool(text)): - raise SubprocessError('Cannot disambiguate when both text ' - 'and universal_newlines are supplied but ' - 'different. Pass one or the other.') - - self.args = args # Previously this was Py3 only. - self.stdin = None - self.stdout = None - self.stderr = None - self.pid = None - self.returncode = None - self.universal_newlines = universal_newlines - self.result = AsyncResult() - - # Input and output objects. The general principle is like - # this: - # - # Parent Child - # ------ ----- - # p2cwrite ---stdin---> p2cread - # c2pread <--stdout--- c2pwrite - # errread <--stderr--- errwrite - # - # On POSIX, the child objects are file descriptors. On - # Windows, these are Windows file handles. The parent objects - # are file descriptors on both platforms. The parent objects - # are -1 when not using PIPEs. The child objects are -1 - # when not redirecting. - - (p2cread, p2cwrite, - c2pread, c2pwrite, - errread, errwrite) = self._get_handles(stdin, stdout, stderr) - - # We wrap OS handles *before* launching the child, otherwise a - # quickly terminating child could make our fds unwrappable - # (see #8458). - if mswindows: - if p2cwrite != -1: - p2cwrite = msvcrt.open_osfhandle(p2cwrite.Detach(), 0) - if c2pread != -1: - c2pread = msvcrt.open_osfhandle(c2pread.Detach(), 0) - if errread != -1: - errread = msvcrt.open_osfhandle(errread.Detach(), 0) - - text_mode = PY3 and (self.encoding or self.errors or universal_newlines or text) - if text_mode or universal_newlines: - # Always a native str in universal_newlines mode, even when that - # str type is bytes. Additionally, text_mode is only true under - # Python 3, so it's actually a unicode str - self._communicate_empty_value = '' - - if p2cwrite != -1: - if PY3 and text_mode: - # Under Python 3, if we left on the 'b' we'd get different results - # depending on whether we used FileObjectPosix or FileObjectThread - self.stdin = FileObject(p2cwrite, 'wb', bufsize) - self.stdin.translate_newlines(None, - write_through=True, - line_buffering=(bufsize == 1), - encoding=self.encoding, errors=self.errors) - else: - self.stdin = FileObject(p2cwrite, 'wb', bufsize) - if c2pread != -1: - if universal_newlines or text_mode: - if PY3: - # FileObjectThread doesn't support the 'U' qualifier - # with a bufsize of 0 - self.stdout = FileObject(c2pread, 'rb', bufsize) - # NOTE: Universal Newlines are broken on Windows/Py3, at least - # in some cases. This is true in the stdlib subprocess module - # as well; the following line would fix the test cases in - # test__subprocess.py that depend on python_universal_newlines, - # but would be inconsistent with the stdlib: - #msvcrt.setmode(self.stdout.fileno(), os.O_TEXT) - self.stdout.translate_newlines('r', encoding=self.encoding, errors=self.errors) - else: - self.stdout = FileObject(c2pread, 'rU', bufsize) - else: - self.stdout = FileObject(c2pread, 'rb', bufsize) - if errread != -1: - if universal_newlines or text_mode: - if PY3: - self.stderr = FileObject(errread, 'rb', bufsize) - self.stderr.translate_newlines(None, encoding=encoding, errors=errors) - else: - self.stderr = FileObject(errread, 'rU', bufsize) - else: - self.stderr = FileObject(errread, 'rb', bufsize) - - self._closed_child_pipe_fds = False - # Convert here for the sake of all platforms. os.chdir accepts - # path-like objects natively under 3.6, but CreateProcess - # doesn't. - cwd = fspath(cwd) if cwd is not None else None - try: - self._execute_child(args, executable, preexec_fn, close_fds, - pass_fds, cwd, env, universal_newlines, - startupinfo, creationflags, shell, - p2cread, p2cwrite, - c2pread, c2pwrite, - errread, errwrite, - restore_signals, start_new_session) - except: - # Cleanup if the child failed starting. - # (gevent: New in python3, but reported as gevent bug in #347. - # Note that under Py2, any error raised below will replace the - # original error so we have to use reraise) - if not PY3: - exc_info = sys.exc_info() - for f in filter(None, (self.stdin, self.stdout, self.stderr)): - try: - f.close() - except (OSError, IOError): - pass # Ignore EBADF or other errors. - - if not self._closed_child_pipe_fds: - to_close = [] - if stdin == PIPE: - to_close.append(p2cread) - if stdout == PIPE: - to_close.append(c2pwrite) - if stderr == PIPE: - to_close.append(errwrite) - if hasattr(self, '_devnull'): - to_close.append(self._devnull) - for fd in to_close: - try: - os.close(fd) - except (OSError, IOError): - pass - if not PY3: - try: - reraise(*exc_info) - finally: - del exc_info - raise - - def __repr__(self): - return '<%s at 0x%x pid=%r returncode=%r>' % (self.__class__.__name__, id(self), self.pid, self.returncode) - - def _on_child(self, watcher): - watcher.stop() - status = watcher.rstatus - if os.WIFSIGNALED(status): - self.returncode = -os.WTERMSIG(status) - else: - self.returncode = os.WEXITSTATUS(status) - self.result.set(self.returncode) - - def _get_devnull(self): - if not hasattr(self, '_devnull'): - self._devnull = os.open(os.devnull, os.O_RDWR) - return self._devnull - - _stdout_buffer = None - _stderr_buffer = None - - def communicate(self, input=None, timeout=None): - """Interact with process: Send data to stdin. Read data from - stdout and stderr, until end-of-file is reached. Wait for - process to terminate. The optional input argument should be a - string to be sent to the child process, or None, if no data - should be sent to the child. - - communicate() returns a tuple (stdout, stderr). - - :keyword timeout: Under Python 2, this is a gevent extension; if - given and it expires, we will raise :exc:`TimeoutExpired`, which - extends :exc:`gevent.timeout.Timeout` (note that this only extends :exc:`BaseException`, - *not* :exc:`Exception`) - Under Python 3, this raises the standard :exc:`TimeoutExpired` exception. - - .. versionchanged:: 1.1a2 - Under Python 2, if the *timeout* elapses, raise the :exc:`gevent.timeout.Timeout` - exception. Previously, we silently returned. - .. versionchanged:: 1.1b5 - Honor a *timeout* even if there's no way to communicate with the child - (stdin, stdout, and stderr are not pipes). - """ - greenlets = [] - if self.stdin: - greenlets.append(spawn(write_and_close, self.stdin, input)) - - # If the timeout parameter is used, and the caller calls back after - # getting a TimeoutExpired exception, we can wind up with multiple - # greenlets trying to run and read from and close stdout/stderr. - # That's bad because it can lead to 'RuntimeError: reentrant call in io.BufferedReader'. - # We can't just kill the previous greenlets when a timeout happens, - # though, because we risk losing the output collected by that greenlet - # (and Python 3, where timeout is an official parameter, explicitly says - # that no output should be lost in the event of a timeout.) Instead, we're - # watching for the exception and ignoring it. It's not elegant, - # but it works - def _make_pipe_reader(pipe_name): - pipe = getattr(self, pipe_name) - buf_name = '_' + pipe_name + '_buffer' - - def _read(): - try: - data = pipe.read() - except RuntimeError: - return - if not data: - return - the_buffer = getattr(self, buf_name) - if the_buffer: - the_buffer.append(data) - else: - setattr(self, buf_name, [data]) - return _read - - if self.stdout: - _read_out = _make_pipe_reader('stdout') - stdout = spawn(_read_out) - greenlets.append(stdout) - else: - stdout = None - - if self.stderr: - _read_err = _make_pipe_reader('stderr') - stderr = spawn(_read_err) - greenlets.append(stderr) - else: - stderr = None - - # If we were given stdin=stdout=stderr=None, we have no way to - # communicate with the child, and thus no greenlets to wait - # on. This is a nonsense case, but it comes up in the test - # case for Python 3.5 (test_subprocess.py - # RunFuncTestCase.test_timeout). Instead, we go directly to - # self.wait - if not greenlets and timeout is not None: - self.wait(timeout=timeout, _raise_exc=True) - - done = joinall(greenlets, timeout=timeout) - if timeout is not None and len(done) != len(greenlets): - raise TimeoutExpired(self.args, timeout) - - for pipe in (self.stdout, self.stderr): - if pipe: - try: - pipe.close() - except RuntimeError: - pass - - self.wait() - - def _get_output_value(pipe_name): - buf_name = '_' + pipe_name + '_buffer' - buf_value = getattr(self, buf_name) - setattr(self, buf_name, None) - if buf_value: - buf_value = self._communicate_empty_value.join(buf_value) - else: - buf_value = self._communicate_empty_value - return buf_value - - stdout_value = _get_output_value('stdout') - stderr_value = _get_output_value('stderr') - - return (None if stdout is None else stdout_value, - None if stderr is None else stderr_value) - - def poll(self): - """Check if child process has terminated. Set and return :attr:`returncode` attribute.""" - return self._internal_poll() - - def __enter__(self): - return self - - def __exit__(self, t, v, tb): - if self.stdout: - self.stdout.close() - if self.stderr: - self.stderr.close() - try: # Flushing a BufferedWriter may raise an error - if self.stdin: - self.stdin.close() - finally: - # Wait for the process to terminate, to avoid zombies. - # JAM: gevent: If the process never terminates, this - # blocks forever. - self.wait() - - def _gevent_result_wait(self, timeout=None, raise_exc=PY3): - result = self.result.wait(timeout=timeout) - if raise_exc and timeout is not None and not self.result.ready(): - raise TimeoutExpired(self.args, timeout) - return result - - - if mswindows: - # - # Windows methods - # - def _get_handles(self, stdin, stdout, stderr): - """Construct and return tuple with IO objects: - p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite - """ - if stdin is None and stdout is None and stderr is None: - return (-1, -1, -1, -1, -1, -1) - - p2cread, p2cwrite = -1, -1 - c2pread, c2pwrite = -1, -1 - errread, errwrite = -1, -1 - - try: - DEVNULL - except NameError: - _devnull = object() - else: - _devnull = DEVNULL - - if stdin is None: - p2cread = GetStdHandle(STD_INPUT_HANDLE) - if p2cread is None: - p2cread, _ = CreatePipe(None, 0) - if PY3: - p2cread = Handle(p2cread) - _winapi.CloseHandle(_) - elif stdin == PIPE: - p2cread, p2cwrite = CreatePipe(None, 0) - if PY3: - p2cread, p2cwrite = Handle(p2cread), Handle(p2cwrite) - elif stdin == _devnull: - p2cread = msvcrt.get_osfhandle(self._get_devnull()) - elif isinstance(stdin, int): - p2cread = msvcrt.get_osfhandle(stdin) - else: - # Assuming file-like object - p2cread = msvcrt.get_osfhandle(stdin.fileno()) - p2cread = self._make_inheritable(p2cread) - - if stdout is None: - c2pwrite = GetStdHandle(STD_OUTPUT_HANDLE) - if c2pwrite is None: - _, c2pwrite = CreatePipe(None, 0) - if PY3: - c2pwrite = Handle(c2pwrite) - _winapi.CloseHandle(_) - elif stdout == PIPE: - c2pread, c2pwrite = CreatePipe(None, 0) - if PY3: - c2pread, c2pwrite = Handle(c2pread), Handle(c2pwrite) - elif stdout == _devnull: - c2pwrite = msvcrt.get_osfhandle(self._get_devnull()) - elif isinstance(stdout, int): - c2pwrite = msvcrt.get_osfhandle(stdout) - else: - # Assuming file-like object - c2pwrite = msvcrt.get_osfhandle(stdout.fileno()) - c2pwrite = self._make_inheritable(c2pwrite) - - if stderr is None: - errwrite = GetStdHandle(STD_ERROR_HANDLE) - if errwrite is None: - _, errwrite = CreatePipe(None, 0) - if PY3: - errwrite = Handle(errwrite) - _winapi.CloseHandle(_) - elif stderr == PIPE: - errread, errwrite = CreatePipe(None, 0) - if PY3: - errread, errwrite = Handle(errread), Handle(errwrite) - elif stderr == STDOUT: - errwrite = c2pwrite - elif stderr == _devnull: - errwrite = msvcrt.get_osfhandle(self._get_devnull()) - elif isinstance(stderr, int): - errwrite = msvcrt.get_osfhandle(stderr) - else: - # Assuming file-like object - errwrite = msvcrt.get_osfhandle(stderr.fileno()) - errwrite = self._make_inheritable(errwrite) - - return (p2cread, p2cwrite, - c2pread, c2pwrite, - errread, errwrite) - - def _make_inheritable(self, handle): - """Return a duplicate of handle, which is inheritable""" - return DuplicateHandle(GetCurrentProcess(), - handle, GetCurrentProcess(), 0, 1, - DUPLICATE_SAME_ACCESS) - - def _find_w9xpopen(self): - """Find and return absolute path to w9xpopen.exe""" - w9xpopen = os.path.join(os.path.dirname(GetModuleFileName(0)), - "w9xpopen.exe") - if not os.path.exists(w9xpopen): - # Eeek - file-not-found - possibly an embedding - # situation - see if we can locate it in sys.exec_prefix - w9xpopen = os.path.join(os.path.dirname(sys.exec_prefix), - "w9xpopen.exe") - if not os.path.exists(w9xpopen): - raise RuntimeError("Cannot locate w9xpopen.exe, which is " - "needed for Popen to work with your " - "shell or platform.") - return w9xpopen - - - def _filter_handle_list(self, handle_list): - """Filter out console handles that can't be used - in lpAttributeList["handle_list"] and make sure the list - isn't empty. This also removes duplicate handles.""" - # An handle with it's lowest two bits set might be a special console - # handle that if passed in lpAttributeList["handle_list"], will - # cause it to fail. - # Only works on 3.7+ - return list({handle for handle in handle_list - if handle & 0x3 != 0x3 - or _winapi.GetFileType(handle) != - _winapi.FILE_TYPE_CHAR}) - - - def _execute_child(self, args, executable, preexec_fn, close_fds, - pass_fds, cwd, env, universal_newlines, - startupinfo, creationflags, shell, - p2cread, p2cwrite, - c2pread, c2pwrite, - errread, errwrite, - unused_restore_signals, unused_start_new_session): - """Execute program (MS Windows version)""" - - assert not pass_fds, "pass_fds not supported on Windows." - - if not isinstance(args, string_types): - args = list2cmdline(args) - - # Process startup details - if startupinfo is None: - startupinfo = STARTUPINFO() - use_std_handles = -1 not in (p2cread, c2pwrite, errwrite) - if use_std_handles: - startupinfo.dwFlags |= STARTF_USESTDHANDLES - startupinfo.hStdInput = p2cread - startupinfo.hStdOutput = c2pwrite - startupinfo.hStdError = errwrite - - if hasattr(startupinfo, 'lpAttributeList'): - # Support for Python >= 3.7 - - attribute_list = startupinfo.lpAttributeList - have_handle_list = bool(attribute_list and - "handle_list" in attribute_list and - attribute_list["handle_list"]) - - # If we were given an handle_list or need to create one - if have_handle_list or (use_std_handles and close_fds): - if attribute_list is None: - attribute_list = startupinfo.lpAttributeList = {} - handle_list = attribute_list["handle_list"] = \ - list(attribute_list.get("handle_list", [])) - - if use_std_handles: - handle_list += [int(p2cread), int(c2pwrite), int(errwrite)] - - handle_list[:] = self._filter_handle_list(handle_list) - - if handle_list: - if not close_fds: - import warnings - warnings.warn("startupinfo.lpAttributeList['handle_list'] " - "overriding close_fds", RuntimeWarning) - - # When using the handle_list we always request to inherit - # handles but the only handles that will be inherited are - # the ones in the handle_list - close_fds = False - - if shell: - startupinfo.dwFlags |= STARTF_USESHOWWINDOW - startupinfo.wShowWindow = SW_HIDE - comspec = os.environ.get("COMSPEC", "cmd.exe") - args = '{} /c "{}"'.format(comspec, args) - if GetVersion() >= 0x80000000 or os.path.basename(comspec).lower() == "command.com": - # Win9x, or using command.com on NT. We need to - # use the w9xpopen intermediate program. For more - # information, see KB Q150956 - # (http://web.archive.org/web/20011105084002/http://support.microsoft.com/support/kb/articles/Q150/9/56.asp) - w9xpopen = self._find_w9xpopen() - args = '"%s" %s' % (w9xpopen, args) - # Not passing CREATE_NEW_CONSOLE has been known to - # cause random failures on win9x. Specifically a - # dialog: "Your program accessed mem currently in - # use at xxx" and a hopeful warning about the - # stability of your system. Cost is Ctrl+C wont - # kill children. - creationflags |= CREATE_NEW_CONSOLE - - # Start the process - try: - hp, ht, pid, tid = CreateProcess(executable, args, - # no special security - None, None, - int(not close_fds), - creationflags, - env, - cwd, - startupinfo) - except IOError as e: # From 2.6 on, pywintypes.error was defined as IOError - # Translate pywintypes.error to WindowsError, which is - # a subclass of OSError. FIXME: We should really - # translate errno using _sys_errlist (or similar), but - # how can this be done from Python? - if PY3: - raise # don't remap here - raise WindowsError(*e.args) - finally: - # Child is launched. Close the parent's copy of those pipe - # handles that only the child should have open. You need - # to make sure that no handles to the write end of the - # output pipe are maintained in this process or else the - # pipe will not close when the child process exits and the - # ReadFile will hang. - def _close(x): - if x is not None and x != -1: - if hasattr(x, 'Close'): - x.Close() - else: - _winapi.CloseHandle(x) - - _close(p2cread) - _close(c2pwrite) - _close(errwrite) - if hasattr(self, '_devnull'): - os.close(self._devnull) - - # Retain the process handle, but close the thread handle - self._child_created = True - self._handle = Handle(hp) if not hasattr(hp, 'Close') else hp - self.pid = pid - _winapi.CloseHandle(ht) if not hasattr(ht, 'Close') else ht.Close() - - def _internal_poll(self): - """Check if child process has terminated. Returns returncode - attribute. - """ - if self.returncode is None: - if WaitForSingleObject(self._handle, 0) == WAIT_OBJECT_0: - self.returncode = GetExitCodeProcess(self._handle) - self.result.set(self.returncode) - return self.returncode - - def rawlink(self, callback): - if not self.result.ready() and not self._waiting: - self._waiting = True - Greenlet.spawn(self._wait) - self.result.rawlink(linkproxy(callback, self)) - # XXX unlink - - def _blocking_wait(self): - WaitForSingleObject(self._handle, INFINITE) - self.returncode = GetExitCodeProcess(self._handle) - return self.returncode - - def _wait(self): - self.threadpool.spawn(self._blocking_wait).rawlink(self.result) - - def wait(self, timeout=None, _raise_exc=PY3): - """Wait for child process to terminate. Returns returncode - attribute.""" - if self.returncode is None: - if not self._waiting: - self._waiting = True - self._wait() - return self._gevent_result_wait(timeout, _raise_exc) - - def send_signal(self, sig): - """Send a signal to the process - """ - if sig == signal.SIGTERM: - self.terminate() - elif sig == signal.CTRL_C_EVENT: - os.kill(self.pid, signal.CTRL_C_EVENT) - elif sig == signal.CTRL_BREAK_EVENT: - os.kill(self.pid, signal.CTRL_BREAK_EVENT) - else: - raise ValueError("Unsupported signal: {}".format(sig)) - - def terminate(self): - """Terminates the process - """ - # Don't terminate a process that we know has already died. - if self.returncode is not None: - return - try: - TerminateProcess(self._handle, 1) - except OSError as e: - # ERROR_ACCESS_DENIED (winerror 5) is received when the - # process already died. - if e.winerror != 5: - raise - rc = GetExitCodeProcess(self._handle) - if rc == STILL_ACTIVE: - raise - self.returncode = rc - self.result.set(self.returncode) - - kill = terminate - - else: - # - # POSIX methods - # - - def rawlink(self, callback): - # Not public documented, part of the link protocol - self.result.rawlink(linkproxy(callback, self)) - # XXX unlink - - def _get_handles(self, stdin, stdout, stderr): - """Construct and return tuple with IO objects: - p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite - """ - p2cread, p2cwrite = -1, -1 - c2pread, c2pwrite = -1, -1 - errread, errwrite = -1, -1 - - try: - DEVNULL - except NameError: - _devnull = object() - else: - _devnull = DEVNULL - - if stdin is None: - pass - elif stdin == PIPE: - p2cread, p2cwrite = self.pipe_cloexec() - elif stdin == _devnull: - p2cread = self._get_devnull() - elif isinstance(stdin, int): - p2cread = stdin - else: - # Assuming file-like object - p2cread = stdin.fileno() - - if stdout is None: - pass - elif stdout == PIPE: - c2pread, c2pwrite = self.pipe_cloexec() - elif stdout == _devnull: - c2pwrite = self._get_devnull() - elif isinstance(stdout, int): - c2pwrite = stdout - else: - # Assuming file-like object - c2pwrite = stdout.fileno() - - if stderr is None: - pass - elif stderr == PIPE: - errread, errwrite = self.pipe_cloexec() - elif stderr == STDOUT: - if c2pwrite != -1: - errwrite = c2pwrite - else: # child's stdout is not set, use parent's stdout - errwrite = sys.__stdout__.fileno() - elif stderr == _devnull: - errwrite = self._get_devnull() - elif isinstance(stderr, int): - errwrite = stderr - else: - # Assuming file-like object - errwrite = stderr.fileno() - - return (p2cread, p2cwrite, - c2pread, c2pwrite, - errread, errwrite) - - def _set_cloexec_flag(self, fd, cloexec=True): - try: - cloexec_flag = fcntl.FD_CLOEXEC - except AttributeError: - cloexec_flag = 1 - - old = fcntl.fcntl(fd, fcntl.F_GETFD) - if cloexec: - fcntl.fcntl(fd, fcntl.F_SETFD, old | cloexec_flag) - else: - fcntl.fcntl(fd, fcntl.F_SETFD, old & ~cloexec_flag) - - def _remove_nonblock_flag(self, fd): - flags = fcntl.fcntl(fd, fcntl.F_GETFL) & (~os.O_NONBLOCK) - fcntl.fcntl(fd, fcntl.F_SETFL, flags) - - def pipe_cloexec(self): - """Create a pipe with FDs set CLOEXEC.""" - # Pipes' FDs are set CLOEXEC by default because we don't want them - # to be inherited by other subprocesses: the CLOEXEC flag is removed - # from the child's FDs by _dup2(), between fork() and exec(). - # This is not atomic: we would need the pipe2() syscall for that. - r, w = os.pipe() - self._set_cloexec_flag(r) - self._set_cloexec_flag(w) - return r, w - - _POSSIBLE_FD_DIRS = ( - '/proc/self/fd', # Linux - '/dev/fd', # BSD, including macOS - ) - - @classmethod - def _close_fds(cls, keep, errpipe_write): - # From the C code: - # errpipe_write is part of keep. It must be closed at - # exec(), but kept open in the child process until exec() is - # called. - for path in cls._POSSIBLE_FD_DIRS: - if os.path.isdir(path): - return cls._close_fds_from_path(path, keep, errpipe_write) - return cls._close_fds_brute_force(keep, errpipe_write) - - @classmethod - def _close_fds_from_path(cls, path, keep, errpipe_write): - # path names a directory whose only entries have - # names that are ascii strings of integers in base10, - # corresponding to the fds the current process has open - try: - fds = [int(fname) for fname in os.listdir(path)] - except (ValueError, OSError): - cls._close_fds_brute_force(keep, errpipe_write) - else: - for i in keep: - if i == errpipe_write: - continue - _set_inheritable(i, True) - - for fd in fds: - if fd in keep or fd < 3: - continue - try: - os.close(fd) - except: - pass - - @classmethod - def _close_fds_brute_force(cls, keep, errpipe_write): - # `keep` is a set of fds, so we - # use os.closerange from 3 to min(keep) - # and then from max(keep + 1) to MAXFD and - # loop through filling in the gaps. - - # Under new python versions, we need to explicitly set - # passed fds to be inheritable or they will go away on exec - - # XXX: Bug: We implicitly rely on errpipe_write being the largest open - # FD so that we don't change its cloexec flag. - - assert hasattr(os, 'closerange') # Added in 2.7 - keep = sorted(keep) - min_keep = min(keep) - max_keep = max(keep) - os.closerange(3, min_keep) - os.closerange(max_keep + 1, MAXFD) - - for i in xrange(min_keep, max_keep): - if i in keep: - _set_inheritable(i, True) - continue - - try: - os.close(i) - except: - pass - - def _execute_child(self, args, executable, preexec_fn, close_fds, - pass_fds, cwd, env, universal_newlines, - startupinfo, creationflags, shell, - p2cread, p2cwrite, - c2pread, c2pwrite, - errread, errwrite, - restore_signals, start_new_session): - """Execute program (POSIX version)""" - - if PY3 and isinstance(args, (str, bytes)): - args = [args] - elif not PY3 and isinstance(args, string_types): - args = [args] - else: - try: - args = list(args) - except TypeError: # os.PathLike instead of a sequence? - args = [fsencode(args)] # os.PathLike -> [str] - - if shell: - args = ["/bin/sh", "-c"] + args - if executable: - args[0] = executable - - if executable is None: - executable = args[0] - - self._loop.install_sigchld() - - # For transferring possible exec failure from child to parent - # The first char specifies the exception type: 0 means - # OSError, 1 means some other error. - errpipe_read, errpipe_write = self.pipe_cloexec() - # errpipe_write must not be in the standard io 0, 1, or 2 fd range. - low_fds_to_close = [] - while errpipe_write < 3: - low_fds_to_close.append(errpipe_write) - errpipe_write = os.dup(errpipe_write) - for low_fd in low_fds_to_close: - os.close(low_fd) - try: - try: - gc_was_enabled = gc.isenabled() - # Disable gc to avoid bug where gc -> file_dealloc -> - # write to stderr -> hang. http://bugs.python.org/issue1336 - gc.disable() - try: - self.pid = fork_and_watch(self._on_child, self._loop, True, fork) - except: - if gc_was_enabled: - gc.enable() - raise - if self.pid == 0: - # Child - - # XXX: Technically we're doing a lot of stuff here that - # may not be safe to do before a exec(), depending on the OS. - # CPython 3 goes to great lengths to precompute a lot - # of this info before the fork and pass it all to C functions that - # try hard not to call things like malloc(). (Of course, - # CPython 2 pretty much did what we're doing.) - try: - # Close parent's pipe ends - if p2cwrite != -1: - os.close(p2cwrite) - if c2pread != -1: - os.close(c2pread) - if errread != -1: - os.close(errread) - os.close(errpipe_read) - - # When duping fds, if there arises a situation - # where one of the fds is either 0, 1 or 2, it - # is possible that it is overwritten (#12607). - if c2pwrite == 0: - c2pwrite = os.dup(c2pwrite) - while errwrite in (0, 1): - errwrite = os.dup(errwrite) - - # Dup fds for child - def _dup2(existing, desired): - # dup2() removes the CLOEXEC flag but - # we must do it ourselves if dup2() - # would be a no-op (issue #10806). - if existing == desired: - self._set_cloexec_flag(existing, False) - elif existing != -1: - os.dup2(existing, desired) - try: - self._remove_nonblock_flag(desired) - except OSError: - # Ignore EBADF, it may not actually be - # open yet. - # Tested beginning in 3.7.0b3 test_subprocess.py - pass - _dup2(p2cread, 0) - _dup2(c2pwrite, 1) - _dup2(errwrite, 2) - - # Close pipe fds. Make sure we don't close the - # same fd more than once, or standard fds. - closed = set([None]) - for fd in [p2cread, c2pwrite, errwrite]: - if fd not in closed and fd > 2: - os.close(fd) - closed.add(fd) - - if cwd is not None: - try: - os.chdir(cwd) - except OSError as e: - e._failed_chdir = True - raise - - if preexec_fn: - preexec_fn() - - # Close all other fds, if asked for. This must be done - # after preexec_fn runs. - if close_fds: - fds_to_keep = set(pass_fds) - fds_to_keep.add(errpipe_write) - self._close_fds(fds_to_keep, errpipe_write) - - if restore_signals: - # restore the documented signals back to sig_dfl; - # not all will be defined on every platform - for sig in 'SIGPIPE', 'SIGXFZ', 'SIGXFSZ': - sig = getattr(signal, sig, None) - if sig is not None: - signal.signal(sig, signal.SIG_DFL) - - if start_new_session: - os.setsid() - - if env is None: - os.execvp(executable, args) - else: - if PY3: - # Python 3.6 started testing for - # bytes values in the env; it also - # started encoding strs using - # fsencode and using a lower-level - # API that takes a list of keys - # and values. We don't have access - # to that API, so we go the reverse direction. - env = {os.fsdecode(k) if isinstance(k, bytes) else k: - os.fsdecode(v) if isinstance(v, bytes) else v - for k, v in env.items()} - os.execvpe(executable, args, env) - - except: - exc_type, exc_value, tb = sys.exc_info() - # Save the traceback and attach it to the exception object - exc_lines = traceback.format_exception(exc_type, - exc_value, - tb) - exc_value.child_traceback = ''.join(exc_lines) - os.write(errpipe_write, pickle.dumps(exc_value)) - - finally: - # Make sure that the process exits no matter what. - # The return code does not matter much as it won't be - # reported to the application - os._exit(1) - - # Parent - self._child_created = True - if gc_was_enabled: - gc.enable() - finally: - # be sure the FD is closed no matter what - os.close(errpipe_write) - - # self._devnull is not always defined. - devnull_fd = getattr(self, '_devnull', None) - if p2cread != -1 and p2cwrite != -1 and p2cread != devnull_fd: - os.close(p2cread) - if c2pwrite != -1 and c2pread != -1 and c2pwrite != devnull_fd: - os.close(c2pwrite) - if errwrite != -1 and errread != -1 and errwrite != devnull_fd: - os.close(errwrite) - if devnull_fd is not None: - os.close(devnull_fd) - # Prevent a double close of these fds from __init__ on error. - self._closed_child_pipe_fds = True - - # Wait for exec to fail or succeed; possibly raising exception - errpipe_read = FileObject(errpipe_read, 'rb') - data = errpipe_read.read() - finally: - if hasattr(errpipe_read, 'close'): - errpipe_read.close() - else: - os.close(errpipe_read) - - if data != b"": - self.wait() - child_exception = pickle.loads(data) - for fd in (p2cwrite, c2pread, errread): - if fd is not None and fd != -1: - os.close(fd) - if isinstance(child_exception, OSError): - child_exception.filename = executable - if hasattr(child_exception, '_failed_chdir'): - child_exception.filename = cwd - raise child_exception - - def _handle_exitstatus(self, sts): - if os.WIFSIGNALED(sts): - self.returncode = -os.WTERMSIG(sts) - elif os.WIFEXITED(sts): - self.returncode = os.WEXITSTATUS(sts) - else: - # Should never happen - raise RuntimeError("Unknown child exit status!") - - def _internal_poll(self): - """Check if child process has terminated. Returns returncode - attribute. - """ - if self.returncode is None: - if get_hub() is not getcurrent(): - sig_pending = getattr(self._loop, 'sig_pending', True) - if sig_pending: - sleep(0.00001) - return self.returncode - - def wait(self, timeout=None, _raise_exc=PY3): - """ - Wait for child process to terminate. Returns :attr:`returncode` - attribute. - - :keyword timeout: The floating point number of seconds to - wait. Under Python 2, this is a gevent extension, and - we simply return if it expires. Under Python 3, if - this time elapses without finishing the process, - :exc:`TimeoutExpired` is raised. - """ - return self._gevent_result_wait(timeout, _raise_exc) - - def send_signal(self, sig): - """Send a signal to the process - """ - # Skip signalling a process that we know has already died. - if self.returncode is None: - os.kill(self.pid, sig) - - def terminate(self): - """Terminate the process with SIGTERM - """ - self.send_signal(signal.SIGTERM) - - def kill(self): - """Kill the process with SIGKILL - """ - self.send_signal(signal.SIGKILL) - - -def write_and_close(fobj, data): - try: - if data: - fobj.write(data) - if hasattr(fobj, 'flush'): - # 3.6 started expecting flush to be called. - fobj.flush() - except (OSError, IOError) as ex: - if ex.errno != errno.EPIPE and ex.errno != errno.EINVAL: - raise - finally: - try: - fobj.close() - except EnvironmentError: - pass - -def _with_stdout_stderr(exc, stderr): - # Prior to Python 3.5, most exceptions didn't have stdout - # and stderr attributes and can't take the stderr attribute in their - # constructor - exc.stdout = exc.output - exc.stderr = stderr - return exc - -class CompletedProcess(object): - """ - A process that has finished running. - - This is returned by run(). - - Attributes: - - args: The list or str args passed to run(). - - returncode: The exit code of the process, negative for signals. - - stdout: The standard output (None if not captured). - - stderr: The standard error (None if not captured). - - .. versionadded:: 1.2a1 - This first appeared in Python 3.5 and is available to all - Python versions in gevent. - """ - def __init__(self, args, returncode, stdout=None, stderr=None): - self.args = args - self.returncode = returncode - self.stdout = stdout - self.stderr = stderr - - def __repr__(self): - args = ['args={!r}'.format(self.args), - 'returncode={!r}'.format(self.returncode)] - if self.stdout is not None: - args.append('stdout={!r}'.format(self.stdout)) - if self.stderr is not None: - args.append('stderr={!r}'.format(self.stderr)) - return "{}({})".format(type(self).__name__, ', '.join(args)) - - def check_returncode(self): - """Raise CalledProcessError if the exit code is non-zero.""" - if self.returncode: - raise _with_stdout_stderr(CalledProcessError(self.returncode, self.args, self.stdout), self.stderr) - - -def run(*popenargs, **kwargs): - """ - run(args, *, stdin=None, input=None, stdout=None, stderr=None, shell=False, timeout=None, check=False) -> CompletedProcess - - Run command with arguments and return a CompletedProcess instance. - - The returned instance will have attributes args, returncode, stdout and - stderr. By default, stdout and stderr are not captured, and those attributes - will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. - If check is True and the exit code was non-zero, it raises a - CalledProcessError. The CalledProcessError object will have the return code - in the returncode attribute, and output & stderr attributes if those streams - were captured. - - If timeout is given, and the process takes too long, a TimeoutExpired - exception will be raised. - - There is an optional argument "input", allowing you to - pass a string to the subprocess's stdin. If you use this argument - you may not also use the Popen constructor's "stdin" argument, as - it will be used internally. - The other arguments are the same as for the Popen constructor. - If universal_newlines=True is passed, the "input" argument must be a - string and stdout/stderr in the returned object will be strings rather than - bytes. - - .. versionadded:: 1.2a1 - This function first appeared in Python 3.5. It is available on all Python - versions gevent supports. - - .. versionchanged:: 1.3a2 - Add the ``capture_output`` argument from Python 3.7. It automatically sets - ``stdout`` and ``stderr`` to ``PIPE``. It is an error to pass either - of those arguments along with ``capture_output``. - """ - input = kwargs.pop('input', None) - timeout = kwargs.pop('timeout', None) - check = kwargs.pop('check', False) - capture_output = kwargs.pop('capture_output', False) - - if input is not None: - if 'stdin' in kwargs: - raise ValueError('stdin and input arguments may not both be used.') - kwargs['stdin'] = PIPE - - if capture_output: - if ('stdout' in kwargs) or ('stderr' in kwargs): - raise ValueError('stdout and stderr arguments may not be used ' - 'with capture_output.') - kwargs['stdout'] = PIPE - kwargs['stderr'] = PIPE - - with Popen(*popenargs, **kwargs) as process: - try: - stdout, stderr = process.communicate(input, timeout=timeout) - except TimeoutExpired: - process.kill() - stdout, stderr = process.communicate() - raise _with_stdout_stderr(TimeoutExpired(process.args, timeout, output=stdout), stderr) - except: - process.kill() - process.wait() - raise - retcode = process.poll() - if check and retcode: - raise _with_stdout_stderr(CalledProcessError(retcode, process.args, stdout), stderr) - - return CompletedProcess(process.args, retcode, stdout, stderr) diff --git a/python/gevent/thread.py b/python/gevent/thread.py deleted file mode 100644 index cceaf48..0000000 --- a/python/gevent/thread.py +++ /dev/null @@ -1,114 +0,0 @@ -""" -Implementation of the standard :mod:`thread` module that spawns greenlets. - -.. note:: - - This module is a helper for :mod:`gevent.monkey` and is not - intended to be used directly. For spawning greenlets in your - applications, prefer higher level constructs like - :class:`gevent.Greenlet` class or :func:`gevent.spawn`. -""" -from __future__ import absolute_import -import sys - -__implements__ = ['allocate_lock', - 'get_ident', - 'exit', - 'LockType', - 'stack_size', - 'start_new_thread', - '_local'] - -__imports__ = ['error'] -if sys.version_info[0] <= 2: - import thread as __thread__ # pylint:disable=import-error -else: - import _thread as __thread__ # pylint:disable=import-error - __target__ = '_thread' - __imports__ += ['RLock', - 'TIMEOUT_MAX', - 'allocate', - 'exit_thread', - 'interrupt_main', - 'start_new'] -error = __thread__.error -from gevent._compat import PY3 -from gevent._compat import PYPY -from gevent._util import copy_globals -from gevent.hub import getcurrent, GreenletExit -from gevent.greenlet import Greenlet -from gevent.lock import BoundedSemaphore -from gevent.local import local as _local - - -def get_ident(gr=None): - if gr is None: - gr = getcurrent() - return id(gr) - - -def start_new_thread(function, args=(), kwargs=None): - if kwargs is not None: - greenlet = Greenlet.spawn(function, *args, **kwargs) - else: - greenlet = Greenlet.spawn(function, *args) - return get_ident(greenlet) - - -class LockType(BoundedSemaphore): - # Change the ValueError into the appropriate thread error - # and any other API changes we need to make to match behaviour - _OVER_RELEASE_ERROR = __thread__.error - - if PYPY and PY3: - _OVER_RELEASE_ERROR = RuntimeError - - if PY3: - _TIMEOUT_MAX = __thread__.TIMEOUT_MAX # python 2: pylint:disable=no-member - - def acquire(self, blocking=True, timeout=-1): - # Transform the default -1 argument into the None that our - # semaphore implementation expects, and raise the same error - # the stdlib implementation does. - if timeout == -1: - timeout = None - if not blocking and timeout is not None: - raise ValueError("can't specify a timeout for a non-blocking call") - if timeout is not None: - if timeout < 0: - # in C: if(timeout < 0 && timeout != -1) - raise ValueError("timeout value must be strictly positive") - if timeout > self._TIMEOUT_MAX: - raise OverflowError('timeout value is too large') - - return BoundedSemaphore.acquire(self, blocking, timeout) - -allocate_lock = LockType - - -def exit(): - raise GreenletExit - - -if hasattr(__thread__, 'stack_size'): - _original_stack_size = __thread__.stack_size - - def stack_size(size=None): - if size is None: - return _original_stack_size() - if size > _original_stack_size(): - return _original_stack_size(size) - # not going to decrease stack_size, because otherwise other - # greenlets in this thread will suffer -else: - __implements__.remove('stack_size') - -__imports__ = copy_globals(__thread__, globals(), - only_names=__imports__, - ignore_missing_names=True) - -__all__ = __implements__ + __imports__ -__all__.remove('_local') - -# XXX interrupt_main -# XXX _count() diff --git a/python/gevent/threading.py b/python/gevent/threading.py deleted file mode 100644 index 570ccd6..0000000 --- a/python/gevent/threading.py +++ /dev/null @@ -1,235 +0,0 @@ -""" -Implementation of the standard :mod:`threading` using greenlets. - -.. note:: - - This module is a helper for :mod:`gevent.monkey` and is not - intended to be used directly. For spawning greenlets in your - applications, prefer higher level constructs like - :class:`gevent.Greenlet` class or :func:`gevent.spawn`. Attributes - in this module like ``__threading__`` are implementation artifacts subject - to change at any time. - -.. versionchanged:: 1.2.3 - - Defer adjusting the stdlib's list of active threads until we are - monkey patched. Previously this was done at import time. We are - documented to only be used as a helper for monkey patching, so this should - functionally be the same, but some applications ignore the documentation and - directly import this module anyway. - - A positive consequence is that ``import gevent.threading, - threading; threading.current_thread()`` will no longer return a DummyThread - before monkey-patching. -""" -from __future__ import absolute_import - - -__implements__ = [ - 'local', - '_start_new_thread', - '_allocate_lock', - 'Lock', - '_get_ident', - '_sleep', - '_DummyThread', -] - - -import threading as __threading__ -_DummyThread_ = __threading__._DummyThread -from gevent.local import local -from gevent.thread import start_new_thread as _start_new_thread, allocate_lock as _allocate_lock, get_ident as _get_ident -from gevent.hub import sleep as _sleep, getcurrent - -# Exports, prevent unused import warnings -local = local -start_new_thread = _start_new_thread -allocate_lock = _allocate_lock -_get_ident = _get_ident -_sleep = _sleep -getcurrent = getcurrent - -Lock = _allocate_lock - - -def _cleanup(g): - __threading__._active.pop(_get_ident(g), None) - -def _make_cleanup_id(gid): - def _(_r): - __threading__._active.pop(gid, None) - return _ - -_weakref = None - -class _DummyThread(_DummyThread_): - # We avoid calling the superclass constructor. This makes us about - # twice as fast (1.16 vs 0.68usec on PyPy, 29.3 vs 17.7usec on - # CPython 2.7), and has the important effect of avoiding - # allocation and then immediate deletion of _Thread__block, a - # lock. This is especially important on PyPy where locks go - # through the cpyext API and Cython, which is known to be slow and - # potentially buggy (e.g., - # https://bitbucket.org/pypy/pypy/issues/2149/memory-leak-for-python-subclass-of-cpyext#comment-22347393) - - # These objects are constructed quite frequently in some cases, so - # the optimization matters: for example, in gunicorn, which uses - # pywsgi.WSGIServer, every request is handled in a new greenlet, - # and every request uses a logging.Logger to write the access log, - # and every call to a log method captures the current thread (by - # default). - # - # (Obviously we have to duplicate the effects of the constructor, - # at least for external state purposes, which is potentially - # slightly fragile.) - - # For the same reason, instances of this class will cleanup their own entry - # in ``threading._active`` - - # This class also solves a problem forking process with subprocess: after forking, - # Thread.__stop is called, which throws an exception when __block doesn't - # exist. - - # Capture the static things as class vars to save on memory/ - # construction time. - # In Py2, they're all private; in Py3, they become protected - _Thread__stopped = _is_stopped = _stopped = False - _Thread__initialized = _initialized = True - _Thread__daemonic = _daemonic = True - _Thread__args = _args = () - _Thread__kwargs = _kwargs = None - _Thread__target = _target = None - _Thread_ident = _ident = None - _Thread__started = _started = __threading__.Event() - _Thread__started.set() - _tstate_lock = None - - def __init__(self): # pylint:disable=super-init-not-called - #_DummyThread_.__init__(self) - - # It'd be nice to use a pattern like "greenlet-%d", but maybe somebody out - # there is checking thread names... - self._name = self._Thread__name = __threading__._newname("DummyThread-%d") - # All dummy threads in the same native thread share the same ident - # (that of the native thread) - self._set_ident() - - g = getcurrent() - gid = _get_ident(g) - __threading__._active[gid] = self - rawlink = getattr(g, 'rawlink', None) - if rawlink is not None: - # raw greenlet.greenlet greenlets don't - # have rawlink... - rawlink(_cleanup) - else: - # ... so for them we use weakrefs. - # See https://github.com/gevent/gevent/issues/918 - global _weakref - if _weakref is None: - _weakref = __import__('weakref') - ref = _weakref.ref(g, _make_cleanup_id(gid)) - self.__raw_ref = ref - - def _Thread__stop(self): - pass - - _stop = _Thread__stop # py3 - - def _wait_for_tstate_lock(self, *args, **kwargs): - # pylint:disable=arguments-differ - pass - -if hasattr(__threading__, 'main_thread'): # py 3.4+ - def main_native_thread(): - return __threading__.main_thread() # pylint:disable=no-member -else: - def main_native_thread(): - main_threads = [v for v in __threading__._active.values() - if isinstance(v, __threading__._MainThread)] - assert len(main_threads) == 1, "Too many main threads" - - return main_threads[0] - -import sys -if sys.version_info[:2] >= (3, 4): - # XXX: Issue 18808 breaks us on Python 3.4. - # Thread objects now expect a callback from the interpreter itself - # (threadmodule.c:release_sentinel). Because this never happens - # when a greenlet exits, join() and friends will block forever. - # The solution below involves capturing the greenlet when it is - # started and deferring the known broken methods to it. - - class Thread(__threading__.Thread): - _greenlet = None - - def is_alive(self): - return bool(self._greenlet) - - isAlive = is_alive - - def _set_tstate_lock(self): - self._greenlet = getcurrent() - - def run(self): - try: - super(Thread, self).run() - finally: - # avoid ref cycles, but keep in __dict__ so we can - # distinguish the started/never-started case - self._greenlet = None - self._stop() # mark as finished - - def join(self, timeout=None): - if '_greenlet' not in self.__dict__: - raise RuntimeError("Cannot join an inactive thread") - if self._greenlet is None: - return - self._greenlet.join(timeout=timeout) - - def _wait_for_tstate_lock(self, *args, **kwargs): - # pylint:disable=arguments-differ - raise NotImplementedError() - - __implements__.append('Thread') - - class Timer(Thread, __threading__.Timer): # pylint:disable=abstract-method,inherit-non-class - pass - - __implements__.append('Timer') - - # The main thread is patched up with more care - # in _gevent_will_monkey_patch - -if sys.version_info[:2] >= (3, 3): - __implements__.remove('_get_ident') - __implements__.append('get_ident') - get_ident = _get_ident - __implements__.remove('_sleep') - - # Python 3 changed the implementation of threading.RLock - # Previously it was a factory function around threading._RLock - # which in turn used _allocate_lock. Now, it wants to use - # threading._CRLock, which is imported from _thread.RLock and as such - # is implemented in C. So it bypasses our _allocate_lock function. - # Fortunately they left the Python fallback in place - assert hasattr(__threading__, '_CRLock'), "Unsupported Python version" - _CRLock = None - __implements__.append('_CRLock') - -def _gevent_will_monkey_patch(native_module, items, warn): # pylint:disable=unused-argument - # Make sure the MainThread can be found by our current greenlet ID, - # otherwise we get a new DummyThread, which cannot be joined. - # Fixes tests in test_threading_2 under PyPy. - main_thread = main_native_thread() - if __threading__.current_thread() != main_thread: - warn("Monkey-patching outside the main native thread. Some APIs " - "will not be available. Expect a KeyError to be printed at shutdown.") - return - - if _get_ident() not in __threading__._active: - main_id = main_thread.ident - del __threading__._active[main_id] - main_thread._ident = main_thread._Thread__ident = _get_ident() - __threading__._active[_get_ident()] = main_thread diff --git a/python/gevent/threadpool.py b/python/gevent/threadpool.py deleted file mode 100644 index c983390..0000000 --- a/python/gevent/threadpool.py +++ /dev/null @@ -1,580 +0,0 @@ -# Copyright (c) 2012 Denis Bilenko. See LICENSE for details. -from __future__ import absolute_import -import sys -import os - -from weakref import ref as wref - -from greenlet import greenlet as RawGreenlet - -from gevent._compat import integer_types -from gevent.hub import _get_hub_noargs as get_hub -from gevent.hub import getcurrent -from gevent.hub import sleep -from gevent.hub import _get_hub -from gevent.event import AsyncResult -from gevent.greenlet import Greenlet -from gevent.pool import GroupMappingMixin -from gevent.lock import Semaphore - -from gevent._threading import Lock -from gevent._threading import Queue -from gevent._threading import start_new_thread -from gevent._threading import get_thread_ident - - -__all__ = [ - 'ThreadPool', - 'ThreadResult', -] - - -class _WorkerGreenlet(RawGreenlet): - # Exists to produce a more useful repr for worker pool - # threads/greenlets. - - def __init__(self, threadpool): - RawGreenlet.__init__(self, threadpool._worker) - self.thread_ident = get_thread_ident() - self._threadpool_wref = wref(threadpool) - - # Inform the gevent.util.GreenletTree that this should be - # considered the root (for printing purposes) and to - # ignore the parent attribute. (We can't set parent to None.) - self.greenlet_tree_is_root = True - self.parent.greenlet_tree_is_ignored = True - - def __repr__(self): - return "<ThreadPoolWorker at 0x%x thread_ident=0x%x %s>" % ( - id(self), - self.thread_ident, - self._threadpool_wref()) - -class ThreadPool(GroupMappingMixin): - """ - .. note:: The method :meth:`apply_async` will always return a new - greenlet, bypassing the threadpool entirely. - .. caution:: Instances of this class are only true if they have - unfinished tasks. - """ - - def __init__(self, maxsize, hub=None): - if hub is None: - hub = get_hub() - self.hub = hub - self._maxsize = 0 - self.manager = None - self.pid = os.getpid() - self.fork_watcher = hub.loop.fork(ref=False) - try: - self._init(maxsize) - except: - self.fork_watcher.close() - raise - - def _set_maxsize(self, maxsize): - if not isinstance(maxsize, integer_types): - raise TypeError('maxsize must be integer: %r' % (maxsize, )) - if maxsize < 0: - raise ValueError('maxsize must not be negative: %r' % (maxsize, )) - difference = maxsize - self._maxsize - self._semaphore.counter += difference - self._maxsize = maxsize - self.adjust() - # make sure all currently blocking spawn() start unlocking if maxsize increased - self._semaphore._start_notify() - - def _get_maxsize(self): - return self._maxsize - - maxsize = property(_get_maxsize, _set_maxsize) - - def __repr__(self): - return '<%s at 0x%x %s/%s/%s hub=<%s at 0x%x thread_ident=0x%s>>' % ( - self.__class__.__name__, - id(self), - len(self), self.size, self.maxsize, - self.hub.__class__.__name__, id(self.hub), self.hub.thread_ident) - - def __len__(self): - # XXX just do unfinished_tasks property - # Note that this becomes the boolean value of this class, - # that's probably not what we want! - return self.task_queue.unfinished_tasks - - def _get_size(self): - return self._size - - def _set_size(self, size): - if size < 0: - raise ValueError('Size of the pool cannot be negative: %r' % (size, )) - if size > self._maxsize: - raise ValueError('Size of the pool cannot be bigger than maxsize: %r > %r' % (size, self._maxsize)) - if self.manager: - self.manager.kill() - while self._size < size: - self._add_thread() - delay = getattr(self.hub.loop, 'min_sleep_time', 0.0001) # For libuv - while self._size > size: - while self._size - size > self.task_queue.unfinished_tasks: - self.task_queue.put(None) - if getcurrent() is self.hub: - break - sleep(delay) - delay = min(delay * 2, .05) - if self._size: - self.fork_watcher.start(self._on_fork) - else: - self.fork_watcher.stop() - - size = property(_get_size, _set_size) - - def _init(self, maxsize): - self._size = 0 - self._semaphore = Semaphore(1) - self._lock = Lock() - self.task_queue = Queue() - self._set_maxsize(maxsize) - - def _on_fork(self): - # fork() only leaves one thread; also screws up locks; - # let's re-create locks and threads. - # NOTE: See comment in gevent.hub.reinit. - pid = os.getpid() - if pid != self.pid: - self.pid = pid - # Do not mix fork() and threads; since fork() only copies one thread - # all objects referenced by other threads has refcount that will never - # go down to 0. - self._init(self._maxsize) - - def join(self): - """Waits until all outstanding tasks have been completed.""" - delay = 0.0005 - while self.task_queue.unfinished_tasks > 0: - sleep(delay) - delay = min(delay * 2, .05) - - def kill(self): - self.size = 0 - self.fork_watcher.close() - - def _adjust_step(self): - # if there is a possibility & necessity for adding a thread, do it - while self._size < self._maxsize and self.task_queue.unfinished_tasks > self._size: - self._add_thread() - # while the number of threads is more than maxsize, kill one - # we do not check what's already in task_queue - it could be all Nones - while self._size - self._maxsize > self.task_queue.unfinished_tasks: - self.task_queue.put(None) - if self._size: - self.fork_watcher.start(self._on_fork) - else: - self.fork_watcher.stop() - - def _adjust_wait(self): - delay = 0.0001 - while True: - self._adjust_step() - if self._size <= self._maxsize: - return - sleep(delay) - delay = min(delay * 2, .05) - - def adjust(self): - self._adjust_step() - if not self.manager and self._size > self._maxsize: - # might need to feed more Nones into the pool - self.manager = Greenlet.spawn(self._adjust_wait) - - def _add_thread(self): - with self._lock: - self._size += 1 - try: - start_new_thread(self.__trampoline, ()) - except: - with self._lock: - self._size -= 1 - raise - - def spawn(self, func, *args, **kwargs): - """ - Add a new task to the threadpool that will run ``func(*args, **kwargs)``. - - Waits until a slot is available. Creates a new thread if necessary. - - :return: A :class:`gevent.event.AsyncResult`. - """ - while 1: - semaphore = self._semaphore - semaphore.acquire() - if semaphore is self._semaphore: - break - - thread_result = None - try: - task_queue = self.task_queue - result = AsyncResult() - # XXX We're calling the semaphore release function in the hub, otherwise - # we get LoopExit (why?). Previously it was done with a rawlink on the - # AsyncResult and the comment that it is "competing for order with get(); this is not - # good, just make ThreadResult release the semaphore before doing anything else" - thread_result = ThreadResult(result, self.hub, semaphore.release) - task_queue.put((func, args, kwargs, thread_result)) - self.adjust() - except: - if thread_result is not None: - thread_result.destroy() - semaphore.release() - raise - return result - - def _decrease_size(self): - if sys is None: - return - _lock = getattr(self, '_lock', None) - if _lock is not None: - with _lock: - self._size -= 1 - - # XXX: This used to be false by default. It really seems like - # it should be true to avoid leaking resources. - _destroy_worker_hub = True - - - def __ignore_current_greenlet_blocking(self, hub): - if hub is not None and hub.periodic_monitoring_thread is not None: - hub.periodic_monitoring_thread.ignore_current_greenlet_blocking() - - def __trampoline(self): - # The target that we create new threads with. It exists - # solely to create the _WorkerGreenlet and switch to it. - # (the __class__ of a raw greenlet cannot be changed.) - g = _WorkerGreenlet(self) - g.switch() - - def _worker(self): - # pylint:disable=too-many-branches - need_decrease = True - try: - while 1: # tiny bit faster than True on Py2 - h = _get_hub() - if h is not None: - h.name = 'ThreadPool Worker Hub' - task_queue = self.task_queue - # While we block, don't let the monitoring thread, if any, - # report us as blocked. Indeed, so long as we never - # try to switch greenlets, don't report us as blocked--- - # the threadpool is *meant* to run blocking tasks - self.__ignore_current_greenlet_blocking(h) - task = task_queue.get() - try: - if task is None: - need_decrease = False - self._decrease_size() - # we want first to decrease size, then decrease unfinished_tasks - # otherwise, _adjust might think there's one more idle thread that - # needs to be killed - return - func, args, kwargs, thread_result = task - try: - value = func(*args, **kwargs) - except: # pylint:disable=bare-except - exc_info = getattr(sys, 'exc_info', None) - if exc_info is None: - return - thread_result.handle_error((self, func), exc_info()) - else: - if sys is None: - return - thread_result.set(value) - del value - finally: - del func, args, kwargs, thread_result, task - finally: - if sys is None: - return # pylint:disable=lost-exception - task_queue.task_done() - finally: - if need_decrease: - self._decrease_size() - if sys is not None and self._destroy_worker_hub: - hub = _get_hub() - if hub is not None: - hub.destroy(True) - del hub - - def apply_e(self, expected_errors, function, args=None, kwargs=None): - """ - .. deprecated:: 1.1a2 - Identical to :meth:`apply`; the ``expected_errors`` argument is ignored. - """ - # pylint:disable=unused-argument - # Deprecated but never documented. In the past, before - # self.apply() allowed all errors to be raised to the caller, - # expected_errors allowed a caller to specify a set of errors - # they wanted to be raised, through the wrap_errors function. - # In practice, it always took the value Exception or - # BaseException. - return self.apply(function, args, kwargs) - - def _apply_immediately(self): - # If we're being called from a different thread than the one that - # created us, e.g., because a worker task is trying to use apply() - # recursively, we have no choice but to run the task immediately; - # if we try to AsyncResult.get() in the worker thread, it's likely to have - # nothing to switch to and lead to a LoopExit. - return get_hub() is not self.hub - - def _apply_async_cb_spawn(self, callback, result): - callback(result) - - def _apply_async_use_greenlet(self): - # Always go to Greenlet because our self.spawn uses threads - return True - -class _FakeAsync(object): - - def send(self): - pass - close = stop = send - - def __call_(self, result): - "fake out for 'receiver'" - - def __bool__(self): - return False - - __nonzero__ = __bool__ - -_FakeAsync = _FakeAsync() - -class ThreadResult(object): - - # Using slots here helps to debug reference cycles/leaks - __slots__ = ('exc_info', 'async_watcher', '_call_when_ready', 'value', - 'context', 'hub', 'receiver') - - def __init__(self, receiver, hub, call_when_ready): - self.receiver = receiver - self.hub = hub - self.context = None - self.value = None - self.exc_info = () - self.async_watcher = hub.loop.async_() - self._call_when_ready = call_when_ready - self.async_watcher.start(self._on_async) - - @property - def exception(self): - return self.exc_info[1] if self.exc_info else None - - def _on_async(self): - self.async_watcher.stop() - self.async_watcher.close() - - # Typically this is pool.semaphore.release and we have to - # call this in the Hub; if we don't we get the dreaded - # LoopExit (XXX: Why?) - self._call_when_ready() - - try: - if self.exc_info: - self.hub.handle_error(self.context, *self.exc_info) - self.context = None - self.async_watcher = _FakeAsync - self.hub = None - self._call_when_ready = _FakeAsync - - self.receiver(self) - finally: - self.receiver = _FakeAsync - self.value = None - if self.exc_info: - self.exc_info = (self.exc_info[0], self.exc_info[1], None) - - def destroy(self): - self.async_watcher.stop() - self.async_watcher.close() - self.async_watcher = _FakeAsync - - self.context = None - self.hub = None - self._call_when_ready = _FakeAsync - self.receiver = _FakeAsync - - def set(self, value): - self.value = value - self.async_watcher.send() - - def handle_error(self, context, exc_info): - self.context = context - self.exc_info = exc_info - self.async_watcher.send() - - # link protocol: - def successful(self): - return self.exception is None - - -def wrap_errors(errors, function, args, kwargs): - """ - .. deprecated:: 1.1a2 - Previously used by ThreadPool.apply_e. - """ - try: - return True, function(*args, **kwargs) - except errors as ex: - return False, ex - -try: - import concurrent.futures -except ImportError: - pass -else: - __all__.append("ThreadPoolExecutor") - - from gevent.timeout import Timeout as GTimeout - from gevent._util import Lazy - from concurrent.futures import _base as cfb - - def _wrap_error(future, fn): - def cbwrap(_): - del _ - # we're called with the async result, but - # be sure to pass in ourself. Also automatically - # unlink ourself so that we don't get called multiple - # times. - try: - fn(future) - except Exception: # pylint: disable=broad-except - future.hub.print_exception((fn, future), *sys.exc_info()) - cbwrap.auto_unlink = True - return cbwrap - - def _wrap(future, fn): - def f(_): - fn(future) - f.auto_unlink = True - return f - - class _FutureProxy(object): - def __init__(self, asyncresult): - self.asyncresult = asyncresult - - # Internal implementation details of a c.f.Future - - @Lazy - def _condition(self): - from gevent import monkey - if monkey.is_module_patched('threading') or self.done(): - import threading - return threading.Condition() - # We can only properly work with conditions - # when we've been monkey-patched. This is necessary - # for the wait/as_completed module functions. - raise AttributeError("_condition") - - @Lazy - def _waiters(self): - self.asyncresult.rawlink(self.__when_done) - return [] - - def __when_done(self, _): - # We should only be called when _waiters has - # already been accessed. - waiters = getattr(self, '_waiters') - for w in waiters: # pylint:disable=not-an-iterable - if self.successful(): - w.add_result(self) - else: - w.add_exception(self) - - __when_done.auto_unlink = True - - @property - def _state(self): - if self.done(): - return cfb.FINISHED - return cfb.RUNNING - - def set_running_or_notify_cancel(self): - # Does nothing, not even any consistency checks. It's - # meant to be internal to the executor and we don't use it. - return - - def result(self, timeout=None): - try: - return self.asyncresult.result(timeout=timeout) - except GTimeout: - # XXX: Theoretically this could be a completely - # unrelated timeout instance. Do we care about that? - raise concurrent.futures.TimeoutError() - - def exception(self, timeout=None): - try: - self.asyncresult.get(timeout=timeout) - return self.asyncresult.exception - except GTimeout: - raise concurrent.futures.TimeoutError() - - def add_done_callback(self, fn): - if self.done(): - fn(self) - else: - self.asyncresult.rawlink(_wrap_error(self, fn)) - - def rawlink(self, fn): - self.asyncresult.rawlink(_wrap(self, fn)) - - def __str__(self): - return str(self.asyncresult) - - def __getattr__(self, name): - return getattr(self.asyncresult, name) - - class ThreadPoolExecutor(concurrent.futures.ThreadPoolExecutor): - """ - A version of :class:`concurrent.futures.ThreadPoolExecutor` that - always uses native threads, even when threading is monkey-patched. - - The ``Future`` objects returned from this object can be used - with gevent waiting primitives like :func:`gevent.wait`. - - .. caution:: If threading is *not* monkey-patched, then the ``Future`` - objects returned by this object are not guaranteed to work with - :func:`~concurrent.futures.as_completed` and :func:`~concurrent.futures.wait`. - The individual blocking methods like :meth:`~concurrent.futures.Future.result` - and :meth:`~concurrent.futures.Future.exception` will always work. - - .. versionadded:: 1.2a1 - This is a provisional API. - """ - - def __init__(self, max_workers): - super(ThreadPoolExecutor, self).__init__(max_workers) - self._threadpool = ThreadPool(max_workers) - self._threadpool._destroy_worker_hub = True - - def submit(self, fn, *args, **kwargs): - with self._shutdown_lock: # pylint:disable=not-context-manager - if self._shutdown: - raise RuntimeError('cannot schedule new futures after shutdown') - - future = self._threadpool.spawn(fn, *args, **kwargs) - return _FutureProxy(future) - - def shutdown(self, wait=True): - super(ThreadPoolExecutor, self).shutdown(wait) - # XXX: We don't implement wait properly - kill = getattr(self._threadpool, 'kill', None) - if kill: # pylint:disable=using-constant-test - self._threadpool.kill() - self._threadpool = None - - kill = shutdown # greentest compat - - def _adjust_thread_count(self): - # Does nothing. We don't want to spawn any "threads", - # let the threadpool handle that. - pass diff --git a/python/gevent/time.py b/python/gevent/time.py deleted file mode 100644 index 34abf85..0000000 --- a/python/gevent/time.py +++ /dev/null @@ -1,27 +0,0 @@ -# Copyright (c) 2018 gevent. See LICENSE for details. -""" -The standard library :mod:`time` module, but :func:`sleep` is -gevent-aware. - -.. versionadded:: 1.3a2 -""" - -from __future__ import absolute_import - -__implements__ = [ - 'sleep', -] - -__all__ = __implements__ - -import time as __time__ - -from gevent._util import copy_globals - -__imports__ = copy_globals(__time__, globals(), - names_to_ignore=__implements__) - - - -from gevent.hub import sleep -sleep = sleep # pylint diff --git a/python/gevent/timeout.py b/python/gevent/timeout.py deleted file mode 100644 index 1cc05e4..0000000 --- a/python/gevent/timeout.py +++ /dev/null @@ -1,373 +0,0 @@ -# Copyright (c) 2009-2010 Denis Bilenko. See LICENSE for details. -""" -Timeouts. - -Many functions in :mod:`gevent` have a *timeout* argument that allows -limiting the time the function will block. When that is not available, -the :class:`Timeout` class and :func:`with_timeout` function in this -module add timeouts to arbitrary code. - -.. warning:: - - Timeouts can only work when the greenlet switches to the hub. - If a blocking function is called or an intense calculation is ongoing during - which no switches occur, :class:`Timeout` is powerless. -""" -from __future__ import absolute_import, print_function, division - -from gevent._compat import string_types -from gevent._util import _NONE - -from greenlet import getcurrent -from gevent._hub_local import get_hub_noargs as get_hub - -__all__ = [ - 'Timeout', - 'with_timeout', -] - - -class _FakeTimer(object): - # An object that mimics the API of get_hub().loop.timer, but - # without allocating any native resources. This is useful for timeouts - # that will never expire. - # Also partially mimics the API of Timeout itself for use in _start_new_or_dummy - - # This object is used as a singleton, so it should be - # immutable. - __slots__ = () - - @property - def pending(self): - return False - - active = pending - - @property - def seconds(self): - return None - - timer = exception = seconds - - def start(self, *args, **kwargs): - # pylint:disable=unused-argument - raise AssertionError("non-expiring timer cannot be started") - - def stop(self): - return - - cancel = stop - - stop = close = cancel - - def __enter__(self): - return self - - def __exit__(self, _t, _v, _tb): - return - -_FakeTimer = _FakeTimer() - - -class Timeout(BaseException): - """ - Timeout(seconds=None, exception=None, ref=True, priority=-1) - - Raise *exception* in the current greenlet after *seconds* - have elapsed:: - - timeout = Timeout(seconds, exception) - timeout.start() - try: - ... # exception will be raised here, after *seconds* passed since start() call - finally: - timeout.close() - - .. note:: - - If the code that the timeout was protecting finishes - executing before the timeout elapses, be sure to ``close`` the - timeout so it is not unexpectedly raised in the future. Even if it - is raised, it is a best practice to close it. This ``try/finally`` - construct or a ``with`` statement is a recommended pattern. (If - the timeout object will be started again, use ``cancel`` instead - of ``close``; this is rare.) - - When *exception* is omitted or ``None``, the ``Timeout`` instance - itself is raised:: - - >>> import gevent - >>> gevent.Timeout(0.1).start() - >>> gevent.sleep(0.2) #doctest: +IGNORE_EXCEPTION_DETAIL - Traceback (most recent call last): - ... - Timeout: 0.1 seconds - - If the *seconds* argument is not given or is ``None`` (e.g., - ``Timeout()``), then the timeout will never expire and never raise - *exception*. This is convenient for creating functions which take - an optional timeout parameter of their own. (Note that this is **not** - the same thing as a *seconds* value of ``0``.) - - :: - - def function(args, timeout=None): - "A function with an optional timeout." - timer = Timeout(timeout) - with timer: - ... - - .. caution:: - - A *seconds* value less than ``0.0`` (e.g., ``-1``) is poorly defined. In the future, - support for negative values is likely to do the same thing as a value - of ``None`` or ``0`` - - A *seconds* value of ``0`` requests that the event loop spin and poll for I/O; - it will immediately expire as soon as control returns to the event loop. - - .. rubric:: Use As A Context Manager - - To simplify starting and canceling timeouts, the ``with`` - statement can be used:: - - with gevent.Timeout(seconds, exception) as timeout: - pass # ... code block ... - - This is equivalent to the try/finally block above with one - additional feature: if *exception* is the literal ``False``, the - timeout is still raised, but the context manager suppresses it, so - the code outside the with-block won't see it. - - This is handy for adding a timeout to the functions that don't - support a *timeout* parameter themselves:: - - data = None - with gevent.Timeout(5, False): - data = mysock.makefile().readline() - if data is None: - ... # 5 seconds passed without reading a line - else: - ... # a line was read within 5 seconds - - .. caution:: - - If ``readline()`` above catches and doesn't re-raise - :exc:`BaseException` (for example, with a bare ``except:``), then - your timeout will fail to function and control won't be returned - to you when you expect. - - .. rubric:: Catching Timeouts - - When catching timeouts, keep in mind that the one you catch may - not be the one you have set (a calling function may have set its - own timeout); if you going to silence a timeout, always check that - it's the instance you need:: - - timeout = Timeout(1) - timeout.start() - try: - ... - except Timeout as t: - if t is not timeout: - raise # not my timeout - finally: - timeout.close() - - - .. versionchanged:: 1.1b2 - - If *seconds* is not given or is ``None``, no longer allocate a - native timer object that will never be started. - - .. versionchanged:: 1.1 - - Add warning about negative *seconds* values. - - .. versionchanged:: 1.3a1 - - Timeout objects now have a :meth:`close` - method that must be called when the timeout will no longer be - used to properly clean up native resources. - The ``with`` statement does this automatically. - - """ - - # We inherit a __dict__ from BaseException, so __slots__ actually - # makes us larger. - - def __init__(self, seconds=None, exception=None, ref=True, priority=-1, - _one_shot=False): - BaseException.__init__(self) - self.seconds = seconds - self.exception = exception - self._one_shot = _one_shot - if seconds is None: - # Avoid going through the timer codepath if no timeout is - # desired; this avoids some CFFI interactions on PyPy that can lead to a - # RuntimeError if this implementation is used during an `import` statement. See - # https://bitbucket.org/pypy/pypy/issues/2089/crash-in-pypy-260-linux64-with-gevent-11b1 - # and https://github.com/gevent/gevent/issues/618. - # Plus, in general, it should be more efficient - - self.timer = _FakeTimer - else: - # XXX: A timer <= 0 could cause libuv to block the loop; we catch - # that case in libuv/loop.py - self.timer = get_hub().loop.timer(seconds or 0.0, ref=ref, priority=priority) - - def start(self): - """Schedule the timeout.""" - if self.pending: - raise AssertionError('%r is already started; to restart it, cancel it first' % self) - - if self.seconds is None: - # "fake" timeout (never expires) - return - - if self.exception is None or self.exception is False or isinstance(self.exception, string_types): - # timeout that raises self - throws = self - else: - # regular timeout with user-provided exception - throws = self.exception - - # Make sure the timer updates the current time so that we don't - # expire prematurely. - self.timer.start(getcurrent().throw, throws, update=True) - - @classmethod - def start_new(cls, timeout=None, exception=None, ref=True, _one_shot=False): - """Create a started :class:`Timeout`. - - This is a shortcut, the exact action depends on *timeout*'s type: - - * If *timeout* is a :class:`Timeout`, then call its :meth:`start` method - if it's not already begun. - * Otherwise, create a new :class:`Timeout` instance, passing (*timeout*, *exception*) as - arguments, then call its :meth:`start` method. - - Returns the :class:`Timeout` instance. - """ - if isinstance(timeout, Timeout): - if not timeout.pending: - timeout.start() - return timeout - timeout = cls(timeout, exception, ref=ref, _one_shot=_one_shot) - timeout.start() - return timeout - - @staticmethod - def _start_new_or_dummy(timeout, exception=None, ref=True): - # Internal use only in 1.1 - # Return an object with a 'cancel' method; if timeout is None, - # this will be a shared instance object that does nothing. Otherwise, - # return an actual Timeout. Because negative values are hard to reason about, - # and are often used as sentinels in Python APIs, in the future it's likely - # that a negative timeout will also return the shared instance. - # This saves the previously common idiom of 'timer = Timeout.start_new(t) if t is not None else None' - # followed by 'if timer is not None: timer.cancel()'. - # That idiom was used to avoid any object allocations. - # A staticmethod is slightly faster under CPython, compared to a classmethod; - # under PyPy in synthetic benchmarks it makes no difference. - if timeout is None: - return _FakeTimer - return Timeout.start_new(timeout, exception, ref, _one_shot=True) - - @property - def pending(self): - """True if the timeout is scheduled to be raised.""" - return self.timer.pending or self.timer.active - - def cancel(self): - """ - If the timeout is pending, cancel it. Otherwise, do nothing. - - The timeout object can be :meth:`started <start>` again. If - you will not start the timeout again, you should use - :meth:`close` instead. - """ - self.timer.stop() - if self._one_shot: - self.close() - - def close(self): - """ - Close the timeout and free resources. The timer cannot be started again - after this method has been used. - """ - self.timer.stop() - self.timer.close() - self.timer = _FakeTimer - - def __repr__(self): - classname = type(self).__name__ - if self.pending: - pending = ' pending' - else: - pending = '' - if self.exception is None: - exception = '' - else: - exception = ' exception=%r' % self.exception - return '<%s at %s seconds=%s%s%s>' % (classname, hex(id(self)), self.seconds, exception, pending) - - def __str__(self): - """ - >>> raise Timeout #doctest: +IGNORE_EXCEPTION_DETAIL - Traceback (most recent call last): - ... - Timeout - """ - if self.seconds is None: - return '' - - suffix = '' if self.seconds == 1 else 's' - - if self.exception is None: - return '%s second%s' % (self.seconds, suffix) - if self.exception is False: - return '%s second%s (silent)' % (self.seconds, suffix) - return '%s second%s: %s' % (self.seconds, suffix, self.exception) - - def __enter__(self): - """ - Start and return the timer. If the timer is already started, just return it. - """ - if not self.pending: - self.start() - return self - - def __exit__(self, typ, value, tb): - """ - Stop the timer. - - .. versionchanged:: 1.3a1 - The underlying native timer is also stopped. This object cannot be - used again. - """ - self.close() - if value is self and self.exception is False: - return True # Suppress the exception - - -def with_timeout(seconds, function, *args, **kwds): - """Wrap a call to *function* with a timeout; if the called - function fails to return before the timeout, cancel it and return a - flag value, provided by *timeout_value* keyword argument. - - If timeout expires but *timeout_value* is not provided, raise :class:`Timeout`. - - Keyword argument *timeout_value* is not passed to *function*. - """ - timeout_value = kwds.pop("timeout_value", _NONE) - timeout = Timeout.start_new(seconds, _one_shot=True) - try: - try: - return function(*args, **kwds) - except Timeout as ex: - if ex is timeout and timeout_value is not _NONE: - return timeout_value - raise - finally: - timeout.cancel() diff --git a/python/gevent/util.py b/python/gevent/util.py deleted file mode 100644 index f15bd07..0000000 --- a/python/gevent/util.py +++ /dev/null @@ -1,592 +0,0 @@ -# Copyright (c) 2009 Denis Bilenko. See LICENSE for details. -""" -Low-level utilities. -""" - -from __future__ import absolute_import, print_function, division - -import functools -import gc -import pprint -import sys -import traceback - -from greenlet import getcurrent -from greenlet import greenlet as RawGreenlet - -from gevent._compat import PYPY -from gevent._compat import thread_mod_name -from gevent._util import _NONE - -__all__ = [ - 'format_run_info', - 'print_run_info', - 'GreenletTree', - 'wrap_errors', - 'assert_switches', -] - -# PyPy is very slow at formatting stacks -# for some reason. -_STACK_LIMIT = 20 if PYPY else None - - -def _noop(): - return None - -def _ready(): - return False - -class wrap_errors(object): - """ - Helper to make function return an exception, rather than raise it. - - Because every exception that is unhandled by greenlet will be logged, - it is desirable to prevent non-error exceptions from leaving a greenlet. - This can done with a simple ``try/except`` construct:: - - def wrapped_func(*args, **kwargs): - try: - return func(*args, **kwargs) - except (TypeError, ValueError, AttributeError) as ex: - return ex - - This class provides a shortcut to write that in one line:: - - wrapped_func = wrap_errors((TypeError, ValueError, AttributeError), func) - - It also preserves ``__str__`` and ``__repr__`` of the original function. - """ - # QQQ could also support using wrap_errors as a decorator - - def __init__(self, errors, func): - """ - Calling this makes a new function from *func*, such that it catches *errors* (an - :exc:`BaseException` subclass, or a tuple of :exc:`BaseException` subclasses) and - return it as a value. - """ - self.__errors = errors - self.__func = func - # Set __doc__, __wrapped__, etc, especially useful on Python 3. - functools.update_wrapper(self, func) - - def __call__(self, *args, **kwargs): - func = self.__func - try: - return func(*args, **kwargs) - except self.__errors as ex: - return ex - - def __str__(self): - return str(self.__func) - - def __repr__(self): - return repr(self.__func) - - def __getattr__(self, name): - return getattr(self.__func, name) - - -def print_run_info(thread_stacks=True, greenlet_stacks=True, limit=_NONE, file=None): - """ - Call `format_run_info` and print the results to *file*. - - If *file* is not given, `sys.stderr` will be used. - - .. versionadded:: 1.3b1 - """ - lines = format_run_info(thread_stacks=thread_stacks, - greenlet_stacks=greenlet_stacks, - limit=limit) - file = sys.stderr if file is None else file - for l in lines: - print(l, file=file) - - -def format_run_info(thread_stacks=True, - greenlet_stacks=True, - limit=_NONE, - current_thread_ident=None): - """ - format_run_info(thread_stacks=True, greenlet_stacks=True, limit=None) -> [str] - - Request information about the running threads of the current process. - - This is a debugging utility. Its output has no guarantees other than being - intended for human consumption. - - :keyword bool thread_stacks: If true, then include the stacks for - running threads. - :keyword bool greenlet_stacks: If true, then include the stacks for - running greenlets. (Spawning stacks will always be printed.) - Setting this to False can reduce the output volume considerably - without reducing the overall information if *thread_stacks* is true - and you can associate a greenlet to a thread (using ``thread_ident`` - printed values). - :keyword int limit: If given, passed directly to `traceback.format_stack`. - If not given, this defaults to the whole stack under CPython, and a - smaller stack under PyPy. - - :return: A sequence of text lines detailing the stacks of running - threads and greenlets. (One greenlet will duplicate one thread, - the current thread and greenlet. If there are multiple running threads, - the stack for the current greenlet may be incorrectly duplicated in multiple - greenlets.) - Extra information about - :class:`gevent.Greenlet` object will also be returned. - - .. versionadded:: 1.3a1 - .. versionchanged:: 1.3a2 - Renamed from ``dump_stacks`` to reflect the fact that this - prints additional information about greenlets, including their - spawning stack, parent, locals, and any spawn tree locals. - .. versionchanged:: 1.3b1 - Added the *thread_stacks*, *greenlet_stacks*, and *limit* params. - """ - if current_thread_ident is None: - from gevent import monkey - current_thread_ident = monkey.get_original(thread_mod_name, 'get_ident')() - - lines = [] - - limit = _STACK_LIMIT if limit is _NONE else limit - _format_thread_info(lines, thread_stacks, limit, current_thread_ident) - _format_greenlet_info(lines, greenlet_stacks, limit) - return lines - - -def _format_thread_info(lines, thread_stacks, limit, current_thread_ident): - import threading - - threads = {th.ident: th for th in threading.enumerate()} - - lines.append('*' * 80) - lines.append('* Threads') - - thread = None - frame = None - for thread_ident, frame in sys._current_frames().items(): - lines.append("*" * 80) - thread = threads.get(thread_ident) - name = thread.name if thread else None - if getattr(thread, 'gevent_monitoring_thread', None): - name = repr(thread.gevent_monitoring_thread()) - if current_thread_ident == thread_ident: - name = '%s) (CURRENT' % (name,) - lines.append('Thread 0x%x (%s)\n' % (thread_ident, name)) - if thread_stacks: - lines.append(''.join(traceback.format_stack(frame, limit))) - else: - lines.append('\t...stack elided...') - - # We may have captured our own frame, creating a reference - # cycle, so clear it out. - del thread - del frame - del lines - del threads - -def _format_greenlet_info(lines, greenlet_stacks, limit): - # Use the gc module to inspect all objects to find the greenlets - # since there isn't a global registry - lines.append('*' * 80) - lines.append('* Greenlets') - lines.append('*' * 80) - for tree in GreenletTree.forest(): - lines.extend(tree.format_lines(details={ - 'running_stacks': greenlet_stacks, - 'running_stack_limit': limit, - })) - - del lines - -dump_stacks = format_run_info - -def _line(f): - @functools.wraps(f) - def w(self, *args, **kwargs): - r = f(self, *args, **kwargs) - self.lines.append(r) - - return w - -class _TreeFormatter(object): - UP_AND_RIGHT = '+' - HORIZONTAL = '-' - VERTICAL = '|' - VERTICAL_AND_RIGHT = '+' - DATA = ':' - - label_space = 1 - horiz_width = 3 - indent = 1 - - def __init__(self, details, depth=0): - self.lines = [] - self.depth = depth - self.details = details - if not details: - self.child_data = lambda *args, **kwargs: None - - def deeper(self): - return type(self)(self.details, self.depth + 1) - - @_line - def node_label(self, text): - return text - - @_line - def child_head(self, label, right=VERTICAL_AND_RIGHT): - return ( - ' ' * self.indent - + right - + self.HORIZONTAL * self.horiz_width - + ' ' * self.label_space - + label - ) - - def last_child_head(self, label): - return self.child_head(label, self.UP_AND_RIGHT) - - @_line - def child_tail(self, line, vertical=VERTICAL): - return ( - ' ' * self.indent - + vertical - + ' ' * self.horiz_width - + line - ) - - def last_child_tail(self, line): - return self.child_tail(line, vertical=' ' * len(self.VERTICAL)) - - @_line - def child_data(self, data, data_marker=DATA): # pylint:disable=method-hidden - return (( - ' ' * self.indent - + (data_marker if not self.depth else ' ') - + ' ' * self.horiz_width - + ' ' * self.label_space - + data - ),) - - def last_child_data(self, data): - return self.child_data(data, ' ') - - def child_multidata(self, data): - # Remove embedded newlines - for l in data.splitlines(): - self.child_data(l) - - -class GreenletTree(object): - """ - Represents a tree of greenlets. - - In gevent, the *parent* of a greenlet is usually the hub, so this - tree is primarily arganized along the *spawning_greenlet* dimension. - - This object has a small str form showing this hierarchy. The `format` - method can output more details. The exact output is unspecified but is - intended to be human readable. - - Use the `forest` method to get the root greenlet trees for - all threads, and the `current_tree` to get the root greenlet tree for - the current thread. - """ - - #: The greenlet this tree represents. - greenlet = None - - - def __init__(self, greenlet): - self.greenlet = greenlet - self.child_trees = [] - - def add_child(self, tree): - if tree is self: - return - self.child_trees.append(tree) - - @property - def root(self): - return self.greenlet.parent is None - - def __getattr__(self, name): - return getattr(self.greenlet, name) - - DEFAULT_DETAILS = { - 'running_stacks': True, - 'running_stack_limit': _STACK_LIMIT, - 'spawning_stacks': True, - 'locals': True, - } - - def format_lines(self, details=True): - """ - Return a sequence of lines for the greenlet tree. - - :keyword bool details: If true (the default), - then include more informative details in the output. - """ - if not isinstance(details, dict): - if not details: - details = {} - else: - details = self.DEFAULT_DETAILS.copy() - else: - params = details - details = self.DEFAULT_DETAILS.copy() - details.update(params) - tree = _TreeFormatter(details, depth=0) - lines = [l[0] if isinstance(l, tuple) else l - for l in self._render(tree)] - return lines - - def format(self, details=True): - """ - Like `format_lines` but returns a string. - """ - lines = self.format_lines(details) - return '\n'.join(lines) - - def __str__(self): - return self.format(False) - - @staticmethod - def __render_tb(tree, label, frame, limit): - tree.child_data(label) - tb = ''.join(traceback.format_stack(frame, limit)) - tree.child_multidata(tb) - - @staticmethod - def __spawning_parent(greenlet): - return (getattr(greenlet, 'spawning_greenlet', None) or _noop)() - - def __render_locals(self, tree): - # Defer the import to avoid cycles - from gevent.local import all_local_dicts_for_greenlet - - gr_locals = all_local_dicts_for_greenlet(self.greenlet) - if gr_locals: - tree.child_data("Greenlet Locals:") - for (kind, idl), vals in gr_locals: - tree.child_data(" Local %s at %s" % (kind, hex(idl))) - tree.child_multidata(" " + pprint.pformat(vals)) - - def _render(self, tree): - label = repr(self.greenlet) - if not self.greenlet: # Not running or dead - # raw greenlets do not have ready - if getattr(self.greenlet, 'ready', _ready)(): - label += '; finished' - if self.greenlet.value is not None: - label += ' with value ' + repr(self.greenlet.value)[:30] - elif getattr(self.greenlet, 'exception', None) is not None: - label += ' with exception ' + repr(self.greenlet.exception) - else: - label += '; not running' - tree.node_label(label) - - tree.child_data('Parent: ' + repr(self.greenlet.parent)) - - if getattr(self.greenlet, 'gevent_monitoring_thread', None) is not None: - tree.child_data('Monitoring Thread:' + repr(self.greenlet.gevent_monitoring_thread())) - - if self.greenlet and tree.details and tree.details['running_stacks']: - self.__render_tb(tree, 'Running:', self.greenlet.gr_frame, - tree.details['running_stack_limit']) - - - spawning_stack = getattr(self.greenlet, 'spawning_stack', None) - if spawning_stack and tree.details and tree.details['spawning_stacks']: - # We already placed a limit on the spawning stack when we captured it. - self.__render_tb(tree, 'Spawned at:', spawning_stack, None) - - spawning_parent = self.__spawning_parent(self.greenlet) - tree_locals = getattr(self.greenlet, 'spawn_tree_locals', None) - if tree_locals and tree_locals is not getattr(spawning_parent, 'spawn_tree_locals', None): - tree.child_data('Spawn Tree Locals') - tree.child_multidata(pprint.pformat(tree_locals)) - - self.__render_locals(tree) - self.__render_children(tree) - return tree.lines - - def __render_children(self, tree): - children = sorted(self.child_trees, - key=lambda c: ( - # raw greenlets first - getattr(c, 'minimal_ident', -1), - # running greenlets first - getattr(c, 'ready', _ready)(), - id(c.parent))) - for n, child in enumerate(children): - child_tree = child._render(tree.deeper()) - - head = tree.child_head - tail = tree.child_tail - data = tree.child_data - - if n == len(children) - 1: - # last child does not get the line drawn - head = tree.last_child_head - tail = tree.last_child_tail - data = tree.last_child_data - - head(child_tree.pop(0)) - for child_data in child_tree: - if isinstance(child_data, tuple): - data(child_data[0]) - else: - tail(child_data) - - return tree.lines - - - @staticmethod - def _root_greenlet(greenlet): - while greenlet.parent is not None and not getattr(greenlet, 'greenlet_tree_is_root', False): - greenlet = greenlet.parent - return greenlet - - @classmethod - def _forest(cls): - main_greenlet = cls._root_greenlet(getcurrent()) - - trees = {} - roots = {} - current_tree = roots[main_greenlet] = trees[main_greenlet] = cls(main_greenlet) - - - - for ob in gc.get_objects(): - if not isinstance(ob, RawGreenlet): - continue - if getattr(ob, 'greenlet_tree_is_ignored', False): - continue - - spawn_parent = cls.__spawning_parent(ob) - - if spawn_parent is None: - root = cls._root_greenlet(ob) - try: - tree = roots[root] - except KeyError: # pragma: no cover - tree = GreenletTree(root) - roots[root] = trees[root] = tree - else: - try: - tree = trees[spawn_parent] - except KeyError: # pragma: no cover - tree = trees[spawn_parent] = cls(spawn_parent) - - try: - child_tree = trees[ob] - except KeyError: - trees[ob] = child_tree = cls(ob) - tree.add_child(child_tree) - - return roots, current_tree - - @classmethod - def forest(cls): - """ - forest() -> sequence - - Return a sequence of `GreenletTree`, one for each running - native thread. - """ - - return list(cls._forest()[0].values()) - - @classmethod - def current_tree(cls): - """ - current_tree() -> GreenletTree - - Returns the `GreenletTree` for the current thread. - """ - return cls._forest()[1] - -class _FailedToSwitch(AssertionError): - pass - -class assert_switches(object): - """ - A context manager for ensuring a block of code switches greenlets. - - This performs a similar function as the :doc:`monitoring thread - </monitoring>`, but the scope is limited to the body of the with - statement. If the code within the body doesn't yield to the hub - (and doesn't raise an exception), then upon exiting the - context manager an :exc:`AssertionError` will be raised. - - This is useful in unit tests and for debugging purposes. - - :keyword float max_blocking_time: If given, the body is allowed - to block for up to this many fractional seconds before - an error is raised. - :keyword bool hub_only: If True, then *max_blocking_time* only - refers to the amount of time spent between switches into the - hub. If False, then it refers to the maximum time between - *any* switches. If *max_blocking_time* is not given, has no - effect. - - Example:: - - # This will always raise an exception: nothing switched - with assert_switches(): - pass - - # This will never raise an exception; nothing switched, - # but it happened very fast - with assert_switches(max_blocking_time=1.0): - pass - - .. versionadded:: 1.3 - """ - - hub = None - tracer = None - - - def __init__(self, max_blocking_time=None, hub_only=False): - self.max_blocking_time = max_blocking_time - self.hub_only = hub_only - - def __enter__(self): - from gevent import get_hub - from gevent import _tracer - - self.hub = hub = get_hub() - - # TODO: We could optimize this to use the GreenletTracer - # installed by the monitoring thread, if there is one. - # As it is, we will chain trace calls back to it. - if not self.max_blocking_time: - self.tracer = _tracer.GreenletTracer() - elif self.hub_only: - self.tracer = _tracer.HubSwitchTracer(hub, self.max_blocking_time) - else: - self.tracer = _tracer.MaxSwitchTracer(hub, self.max_blocking_time) - - self.tracer.monitor_current_greenlet_blocking() - return self - - def __exit__(self, t, v, tb): - self.tracer.kill() - hub = self.hub; self.hub = None - tracer = self.tracer; self.tracer = None - - # Only check if there was no exception raised, we - # don't want to hide anything - if t is not None: - return - - - did_block = tracer.did_block_hub(hub) - if did_block: - active_greenlet = did_block[1] - report_lines = tracer.did_block_hub_report(hub, active_greenlet, {}) - raise _FailedToSwitch('\n'.join(report_lines)) diff --git a/python/gevent/win32util.py b/python/gevent/win32util.py deleted file mode 100644 index 7158d69..0000000 --- a/python/gevent/win32util.py +++ /dev/null @@ -1,98 +0,0 @@ -# Copyright (c) 2001-2007 Twisted Matrix Laboratories. -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -"""Error formatting function for Windows. - -The code is taken from twisted.python.win32 module. -""" - -from __future__ import absolute_import -import os - - -__all__ = ['formatError'] - - -class _ErrorFormatter(object): - """ - Formatter for Windows error messages. - - @ivar winError: A callable which takes one integer error number argument - and returns an L{exceptions.WindowsError} instance for that error (like - L{ctypes.WinError}). - - @ivar formatMessage: A callable which takes one integer error number - argument and returns a C{str} giving the message for that error (like - L{win32api.FormatMessage}). - - @ivar errorTab: A mapping from integer error numbers to C{str} messages - which correspond to those errors (like L{socket.errorTab}). - """ - def __init__(self, WinError, FormatMessage, errorTab): - self.winError = WinError - self.formatMessage = FormatMessage - self.errorTab = errorTab - - @classmethod - def fromEnvironment(cls): - """ - Get as many of the platform-specific error translation objects as - possible and return an instance of C{cls} created with them. - """ - try: - from ctypes import WinError - except ImportError: - WinError = None - try: - from win32api import FormatMessage - except ImportError: - FormatMessage = None - try: - from socket import errorTab - except ImportError: - errorTab = None - return cls(WinError, FormatMessage, errorTab) - - def formatError(self, errorcode): - """ - Returns the string associated with a Windows error message, such as the - ones found in socket.error. - - Attempts direct lookup against the win32 API via ctypes and then - pywin32 if available), then in the error table in the socket module, - then finally defaulting to C{os.strerror}. - - @param errorcode: the Windows error code - @type errorcode: C{int} - - @return: The error message string - @rtype: C{str} - """ - if self.winError is not None: - return str(self.winError(errorcode)) - if self.formatMessage is not None: - return self.formatMessage(errorcode) - if self.errorTab is not None: - result = self.errorTab.get(errorcode) - if result is not None: - return result - return os.strerror(errorcode) - -formatError = _ErrorFormatter.fromEnvironment().formatError diff --git a/python/greenlet.cp36-win32.pyd b/python/greenlet.cp36-win32.pyd deleted file mode 100644 index 256390d5ca108bf56bc01ceff822f9b8e71f798f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22528 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%0Ar{h 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 diff --git a/python/itsdangerous/__init__.py b/python/itsdangerous/__init__.py deleted file mode 100644 index 0fcd8c1..0000000 --- a/python/itsdangerous/__init__.py +++ /dev/null @@ -1,22 +0,0 @@ -from ._json import json -from .encoding import base64_decode -from .encoding import base64_encode -from .encoding import want_bytes -from .exc import BadData -from .exc import BadHeader -from .exc import BadPayload -from .exc import BadSignature -from .exc import BadTimeSignature -from .exc import SignatureExpired -from .jws import JSONWebSignatureSerializer -from .jws import TimedJSONWebSignatureSerializer -from .serializer import Serializer -from .signer import HMACAlgorithm -from .signer import NoneAlgorithm -from .signer import Signer -from .timed import TimedSerializer -from .timed import TimestampSigner -from .url_safe import URLSafeSerializer -from .url_safe import URLSafeTimedSerializer - -__version__ = "1.1.0" diff --git a/python/itsdangerous/_compat.py b/python/itsdangerous/_compat.py deleted file mode 100644 index 2291bce..0000000 --- a/python/itsdangerous/_compat.py +++ /dev/null @@ -1,46 +0,0 @@ -import decimal -import hmac -import numbers -import sys - -PY2 = sys.version_info[0] == 2 - -if PY2: - from itertools import izip - - text_type = unicode # noqa: 821 -else: - izip = zip - text_type = str - -number_types = (numbers.Real, decimal.Decimal) - - -def _constant_time_compare(val1, val2): - """Return ``True`` if the two strings are equal, ``False`` - otherwise. - - The time taken is independent of the number of characters that - match. Do not use this function for anything else than comparision - with known length targets. - - This is should be implemented in C in order to get it completely - right. - - This is an alias of :func:`hmac.compare_digest` on Python>=2.7,3.3. - """ - len_eq = len(val1) == len(val2) - if len_eq: - result = 0 - left = val1 - else: - result = 1 - left = val2 - for x, y in izip(bytearray(left), bytearray(val2)): - result |= x ^ y - return result == 0 - - -# Starting with 2.7/3.3 the standard library has a c-implementation for -# constant time string compares. -constant_time_compare = getattr(hmac, "compare_digest", _constant_time_compare) diff --git a/python/itsdangerous/_json.py b/python/itsdangerous/_json.py deleted file mode 100644 index 426b36e..0000000 --- a/python/itsdangerous/_json.py +++ /dev/null @@ -1,18 +0,0 @@ -try: - import simplejson as json -except ImportError: - import json - - -class _CompactJSON(object): - """Wrapper around json module that strips whitespace.""" - - @staticmethod - def loads(payload): - return json.loads(payload) - - @staticmethod - def dumps(obj, **kwargs): - kwargs.setdefault("ensure_ascii", False) - kwargs.setdefault("separators", (",", ":")) - return json.dumps(obj, **kwargs) diff --git a/python/itsdangerous/encoding.py b/python/itsdangerous/encoding.py deleted file mode 100644 index 1e28969..0000000 --- a/python/itsdangerous/encoding.py +++ /dev/null @@ -1,49 +0,0 @@ -import base64 -import string -import struct - -from ._compat import text_type -from .exc import BadData - - -def want_bytes(s, encoding="utf-8", errors="strict"): - if isinstance(s, text_type): - s = s.encode(encoding, errors) - return s - - -def base64_encode(string): - """Base64 encode a string of bytes or text. The resulting bytes are - safe to use in URLs. - """ - string = want_bytes(string) - return base64.urlsafe_b64encode(string).rstrip(b"=") - - -def base64_decode(string): - """Base64 decode a URL-safe string of bytes or text. The result is - bytes. - """ - string = want_bytes(string, encoding="ascii", errors="ignore") - string += b"=" * (-len(string) % 4) - - try: - return base64.urlsafe_b64decode(string) - except (TypeError, ValueError): - raise BadData("Invalid base64-encoded data") - - -# The alphabet used by base64.urlsafe_* -_base64_alphabet = (string.ascii_letters + string.digits + "-_=").encode("ascii") - -_int64_struct = struct.Struct(">Q") -_int_to_bytes = _int64_struct.pack -_bytes_to_int = _int64_struct.unpack - - -def int_to_bytes(num): - return _int_to_bytes(num).lstrip(b"\x00") - - -def bytes_to_int(bytestr): - return _bytes_to_int(bytestr.rjust(8, b"\x00"))[0] diff --git a/python/itsdangerous/exc.py b/python/itsdangerous/exc.py deleted file mode 100644 index 287d691..0000000 --- a/python/itsdangerous/exc.py +++ /dev/null @@ -1,98 +0,0 @@ -from ._compat import PY2 -from ._compat import text_type - - -class BadData(Exception): - """Raised if bad data of any sort was encountered. This is the base - for all exceptions that itsdangerous defines. - - .. versionadded:: 0.15 - """ - - message = None - - def __init__(self, message): - super(BadData, self).__init__(self, message) - self.message = message - - def __str__(self): - return text_type(self.message) - - if PY2: - __unicode__ = __str__ - - def __str__(self): - return self.__unicode__().encode("utf-8") - - -class BadSignature(BadData): - """Raised if a signature does not match.""" - - def __init__(self, message, payload=None): - BadData.__init__(self, message) - - #: The payload that failed the signature test. In some - #: situations you might still want to inspect this, even if - #: you know it was tampered with. - #: - #: .. versionadded:: 0.14 - self.payload = payload - - -class BadTimeSignature(BadSignature): - """Raised if a time-based signature is invalid. This is a subclass - of :class:`BadSignature`. - """ - - def __init__(self, message, payload=None, date_signed=None): - BadSignature.__init__(self, message, payload) - - #: If the signature expired this exposes the date of when the - #: signature was created. This can be helpful in order to - #: tell the user how long a link has been gone stale. - #: - #: .. versionadded:: 0.14 - self.date_signed = date_signed - - -class SignatureExpired(BadTimeSignature): - """Raised if a signature timestamp is older than ``max_age``. This - is a subclass of :exc:`BadTimeSignature`. - """ - - -class BadHeader(BadSignature): - """Raised if a signed header is invalid in some form. This only - happens for serializers that have a header that goes with the - signature. - - .. versionadded:: 0.24 - """ - - def __init__(self, message, payload=None, header=None, original_error=None): - BadSignature.__init__(self, message, payload) - - #: If the header is actually available but just malformed it - #: might be stored here. - self.header = header - - #: If available, the error that indicates why the payload was - #: not valid. This might be ``None``. - self.original_error = original_error - - -class BadPayload(BadData): - """Raised if a payload is invalid. This could happen if the payload - is loaded despite an invalid signature, or if there is a mismatch - between the serializer and deserializer. The original exception - that occurred during loading is stored on as :attr:`original_error`. - - .. versionadded:: 0.15 - """ - - def __init__(self, message, original_error=None): - BadData.__init__(self, message) - - #: If available, the error that indicates why the payload was - #: not valid. This might be ``None``. - self.original_error = original_error diff --git a/python/itsdangerous/jws.py b/python/itsdangerous/jws.py deleted file mode 100644 index 92e9ec8..0000000 --- a/python/itsdangerous/jws.py +++ /dev/null @@ -1,218 +0,0 @@ -import hashlib -import time -from datetime import datetime - -from ._compat import number_types -from ._json import _CompactJSON -from ._json import json -from .encoding import base64_decode -from .encoding import base64_encode -from .encoding import want_bytes -from .exc import BadData -from .exc import BadHeader -from .exc import BadPayload -from .exc import BadSignature -from .exc import SignatureExpired -from .serializer import Serializer -from .signer import HMACAlgorithm -from .signer import NoneAlgorithm - - -class JSONWebSignatureSerializer(Serializer): - """This serializer implements JSON Web Signature (JWS) support. Only - supports the JWS Compact Serialization. - """ - - jws_algorithms = { - "HS256": HMACAlgorithm(hashlib.sha256), - "HS384": HMACAlgorithm(hashlib.sha384), - "HS512": HMACAlgorithm(hashlib.sha512), - "none": NoneAlgorithm(), - } - - #: The default algorithm to use for signature generation - default_algorithm = "HS512" - - default_serializer = _CompactJSON - - def __init__( - self, - secret_key, - salt=None, - serializer=None, - serializer_kwargs=None, - signer=None, - signer_kwargs=None, - algorithm_name=None, - ): - Serializer.__init__( - self, - secret_key=secret_key, - salt=salt, - serializer=serializer, - serializer_kwargs=serializer_kwargs, - signer=signer, - signer_kwargs=signer_kwargs, - ) - if algorithm_name is None: - algorithm_name = self.default_algorithm - self.algorithm_name = algorithm_name - self.algorithm = self.make_algorithm(algorithm_name) - - def load_payload(self, payload, serializer=None, return_header=False): - payload = want_bytes(payload) - if b"." not in payload: - raise BadPayload('No "." found in value') - base64d_header, base64d_payload = payload.split(b".", 1) - try: - json_header = base64_decode(base64d_header) - except Exception as e: - raise BadHeader( - "Could not base64 decode the header because of an exception", - original_error=e, - ) - try: - json_payload = base64_decode(base64d_payload) - except Exception as e: - raise BadPayload( - "Could not base64 decode the payload because of an exception", - original_error=e, - ) - try: - header = Serializer.load_payload(self, json_header, serializer=json) - except BadData as e: - raise BadHeader( - "Could not unserialize header because it was malformed", - original_error=e, - ) - if not isinstance(header, dict): - raise BadHeader("Header payload is not a JSON object", header=header) - payload = Serializer.load_payload(self, json_payload, serializer=serializer) - if return_header: - return payload, header - return payload - - def dump_payload(self, header, obj): - base64d_header = base64_encode( - self.serializer.dumps(header, **self.serializer_kwargs) - ) - base64d_payload = base64_encode( - self.serializer.dumps(obj, **self.serializer_kwargs) - ) - return base64d_header + b"." + base64d_payload - - def make_algorithm(self, algorithm_name): - try: - return self.jws_algorithms[algorithm_name] - except KeyError: - raise NotImplementedError("Algorithm not supported") - - def make_signer(self, salt=None, algorithm=None): - if salt is None: - salt = self.salt - key_derivation = "none" if salt is None else None - if algorithm is None: - algorithm = self.algorithm - return self.signer( - self.secret_key, - salt=salt, - sep=".", - key_derivation=key_derivation, - algorithm=algorithm, - ) - - def make_header(self, header_fields): - header = header_fields.copy() if header_fields else {} - header["alg"] = self.algorithm_name - return header - - def dumps(self, obj, salt=None, header_fields=None): - """Like :meth:`.Serializer.dumps` but creates a JSON Web - Signature. It also allows for specifying additional fields to be - included in the JWS header. - """ - header = self.make_header(header_fields) - signer = self.make_signer(salt, self.algorithm) - return signer.sign(self.dump_payload(header, obj)) - - def loads(self, s, salt=None, return_header=False): - """Reverse of :meth:`dumps`. If requested via ``return_header`` - it will return a tuple of payload and header. - """ - payload, header = self.load_payload( - self.make_signer(salt, self.algorithm).unsign(want_bytes(s)), - return_header=True, - ) - if header.get("alg") != self.algorithm_name: - raise BadHeader("Algorithm mismatch", header=header, payload=payload) - if return_header: - return payload, header - return payload - - def loads_unsafe(self, s, salt=None, return_header=False): - kwargs = {"return_header": return_header} - return self._loads_unsafe_impl(s, salt, kwargs, kwargs) - - -class TimedJSONWebSignatureSerializer(JSONWebSignatureSerializer): - """Works like the regular :class:`JSONWebSignatureSerializer` but - also records the time of the signing and can be used to expire - signatures. - - JWS currently does not specify this behavior but it mentions a - possible extension like this in the spec. Expiry date is encoded - into the header similar to what's specified in `draft-ietf-oauth - -json-web-token <http://self-issued.info/docs/draft-ietf-oauth-json - -web-token.html#expDef>`_. - """ - - DEFAULT_EXPIRES_IN = 3600 - - def __init__(self, secret_key, expires_in=None, **kwargs): - JSONWebSignatureSerializer.__init__(self, secret_key, **kwargs) - if expires_in is None: - expires_in = self.DEFAULT_EXPIRES_IN - self.expires_in = expires_in - - def make_header(self, header_fields): - header = JSONWebSignatureSerializer.make_header(self, header_fields) - iat = self.now() - exp = iat + self.expires_in - header["iat"] = iat - header["exp"] = exp - return header - - def loads(self, s, salt=None, return_header=False): - payload, header = JSONWebSignatureSerializer.loads( - self, s, salt, return_header=True - ) - - if "exp" not in header: - raise BadSignature("Missing expiry date", payload=payload) - - int_date_error = BadHeader("Expiry date is not an IntDate", payload=payload) - try: - header["exp"] = int(header["exp"]) - except ValueError: - raise int_date_error - if header["exp"] < 0: - raise int_date_error - - if header["exp"] < self.now(): - raise SignatureExpired( - "Signature expired", - payload=payload, - date_signed=self.get_issue_date(header), - ) - - if return_header: - return payload, header - return payload - - def get_issue_date(self, header): - rv = header.get("iat") - if isinstance(rv, number_types): - return datetime.utcfromtimestamp(int(rv)) - - def now(self): - return int(time.time()) diff --git a/python/itsdangerous/serializer.py b/python/itsdangerous/serializer.py deleted file mode 100644 index 12c20f4..0000000 --- a/python/itsdangerous/serializer.py +++ /dev/null @@ -1,233 +0,0 @@ -import hashlib - -from ._compat import text_type -from ._json import json -from .encoding import want_bytes -from .exc import BadPayload -from .exc import BadSignature -from .signer import Signer - - -def is_text_serializer(serializer): - """Checks whether a serializer generates text or binary.""" - return isinstance(serializer.dumps({}), text_type) - - -class Serializer(object): - """This class provides a serialization interface on top of the - signer. It provides a similar API to json/pickle and other modules - but is structured differently internally. If you want to change the - underlying implementation for parsing and loading you have to - override the :meth:`load_payload` and :meth:`dump_payload` - functions. - - This implementation uses simplejson if available for dumping and - loading and will fall back to the standard library's json module if - it's not available. - - You do not need to subclass this class in order to switch out or - customize the :class:`.Signer`. You can instead pass a different - class to the constructor as well as keyword arguments as a dict that - should be forwarded. - - .. code-block:: python - - s = Serializer(signer_kwargs={'key_derivation': 'hmac'}) - - You may want to upgrade the signing parameters without invalidating - existing signatures that are in use. Fallback signatures can be - given that will be tried if unsigning with the current signer fails. - - Fallback signers can be defined by providing a list of - ``fallback_signers``. Each item can be one of the following: a - signer class (which is instantiated with ``signer_kwargs``, - ``salt``, and ``secret_key``), a tuple - ``(signer_class, signer_kwargs)``, or a dict of ``signer_kwargs``. - - For example, this is a serializer that signs using SHA-512, but will - unsign using either SHA-512 or SHA1: - - .. code-block:: python - - s = Serializer( - signer_kwargs={"digest_method": hashlib.sha512}, - fallback_signers=[{"digest_method": hashlib.sha1}] - ) - - .. versionchanged:: 0.14: - The ``signer`` and ``signer_kwargs`` parameters were added to - the constructor. - - .. versionchanged:: 1.1.0: - Added support for ``fallback_signers`` and configured a default - SHA-512 fallback. This fallback is for users who used the yanked - 1.0.0 release which defaulted to SHA-512. - """ - - #: If a serializer module or class is not passed to the constructor - #: this one is picked up. This currently defaults to :mod:`json`. - default_serializer = json - - #: The default :class:`Signer` class that is being used by this - #: serializer. - #: - #: .. versionadded:: 0.14 - default_signer = Signer - - #: The default fallback signers. - default_fallback_signers = [{"digest_method": hashlib.sha512}] - - def __init__( - self, - secret_key, - salt=b"itsdangerous", - serializer=None, - serializer_kwargs=None, - signer=None, - signer_kwargs=None, - fallback_signers=None, - ): - self.secret_key = want_bytes(secret_key) - self.salt = want_bytes(salt) - if serializer is None: - serializer = self.default_serializer - self.serializer = serializer - self.is_text_serializer = is_text_serializer(serializer) - if signer is None: - signer = self.default_signer - self.signer = signer - self.signer_kwargs = signer_kwargs or {} - if fallback_signers is None: - fallback_signers = list(self.default_fallback_signers or ()) - self.fallback_signers = fallback_signers - self.serializer_kwargs = serializer_kwargs or {} - - def load_payload(self, payload, serializer=None): - """Loads the encoded object. This function raises - :class:`.BadPayload` if the payload is not valid. The - ``serializer`` parameter can be used to override the serializer - stored on the class. The encoded ``payload`` should always be - bytes. - """ - if serializer is None: - serializer = self.serializer - is_text = self.is_text_serializer - else: - is_text = is_text_serializer(serializer) - try: - if is_text: - payload = payload.decode("utf-8") - return serializer.loads(payload) - except Exception as e: - raise BadPayload( - "Could not load the payload because an exception" - " occurred on unserializing the data.", - original_error=e, - ) - - def dump_payload(self, obj): - """Dumps the encoded object. The return value is always bytes. - If the internal serializer returns text, the value will be - encoded as UTF-8. - """ - return want_bytes(self.serializer.dumps(obj, **self.serializer_kwargs)) - - def make_signer(self, salt=None): - """Creates a new instance of the signer to be used. The default - implementation uses the :class:`.Signer` base class. - """ - if salt is None: - salt = self.salt - return self.signer(self.secret_key, salt=salt, **self.signer_kwargs) - - def iter_unsigners(self, salt=None): - """Iterates over all signers to be tried for unsigning. Starts - with the configured signer, then constructs each signer - specified in ``fallback_signers``. - """ - if salt is None: - salt = self.salt - yield self.make_signer(salt) - for fallback in self.fallback_signers: - if type(fallback) is dict: - kwargs = fallback - fallback = self.signer - elif type(fallback) is tuple: - fallback, kwargs = fallback - else: - kwargs = self.signer_kwargs - yield fallback(self.secret_key, salt=salt, **kwargs) - - def dumps(self, obj, salt=None): - """Returns a signed string serialized with the internal - serializer. The return value can be either a byte or unicode - string depending on the format of the internal serializer. - """ - payload = want_bytes(self.dump_payload(obj)) - rv = self.make_signer(salt).sign(payload) - if self.is_text_serializer: - rv = rv.decode("utf-8") - return rv - - def dump(self, obj, f, salt=None): - """Like :meth:`dumps` but dumps into a file. The file handle has - to be compatible with what the internal serializer expects. - """ - f.write(self.dumps(obj, salt)) - - def loads(self, s, salt=None): - """Reverse of :meth:`dumps`. Raises :exc:`.BadSignature` if the - signature validation fails. - """ - s = want_bytes(s) - last_exception = None - for signer in self.iter_unsigners(salt): - try: - return self.load_payload(signer.unsign(s)) - except BadSignature as err: - last_exception = err - raise last_exception - - def load(self, f, salt=None): - """Like :meth:`loads` but loads from a file.""" - return self.loads(f.read(), salt) - - def loads_unsafe(self, s, salt=None): - """Like :meth:`loads` but without verifying the signature. This - is potentially very dangerous to use depending on how your - serializer works. The return value is ``(signature_valid, - payload)`` instead of just the payload. The first item will be a - boolean that indicates if the signature is valid. This function - never fails. - - Use it for debugging only and if you know that your serializer - module is not exploitable (for example, do not use it with a - pickle serializer). - - .. versionadded:: 0.15 - """ - return self._loads_unsafe_impl(s, salt) - - def _loads_unsafe_impl(self, s, salt, load_kwargs=None, load_payload_kwargs=None): - """Low level helper function to implement :meth:`loads_unsafe` - in serializer subclasses. - """ - try: - return True, self.loads(s, salt=salt, **(load_kwargs or {})) - except BadSignature as e: - if e.payload is None: - return False, None - try: - return ( - False, - self.load_payload(e.payload, **(load_payload_kwargs or {})), - ) - except BadPayload: - return False, None - - def load_unsafe(self, f, *args, **kwargs): - """Like :meth:`loads_unsafe` but loads from a file. - - .. versionadded:: 0.15 - """ - return self.loads_unsafe(f.read(), *args, **kwargs) diff --git a/python/itsdangerous/signer.py b/python/itsdangerous/signer.py deleted file mode 100644 index 6bddc03..0000000 --- a/python/itsdangerous/signer.py +++ /dev/null @@ -1,179 +0,0 @@ -import hashlib -import hmac - -from ._compat import constant_time_compare -from .encoding import _base64_alphabet -from .encoding import base64_decode -from .encoding import base64_encode -from .encoding import want_bytes -from .exc import BadSignature - - -class SigningAlgorithm(object): - """Subclasses must implement :meth:`get_signature` to provide - signature generation functionality. - """ - - def get_signature(self, key, value): - """Returns the signature for the given key and value.""" - raise NotImplementedError() - - def verify_signature(self, key, value, sig): - """Verifies the given signature matches the expected - signature. - """ - return constant_time_compare(sig, self.get_signature(key, value)) - - -class NoneAlgorithm(SigningAlgorithm): - """Provides an algorithm that does not perform any signing and - returns an empty signature. - """ - - def get_signature(self, key, value): - return b"" - - -class HMACAlgorithm(SigningAlgorithm): - """Provides signature generation using HMACs.""" - - #: The digest method to use with the MAC algorithm. This defaults to - #: SHA1, but can be changed to any other function in the hashlib - #: module. - default_digest_method = staticmethod(hashlib.sha1) - - def __init__(self, digest_method=None): - if digest_method is None: - digest_method = self.default_digest_method - self.digest_method = digest_method - - def get_signature(self, key, value): - mac = hmac.new(key, msg=value, digestmod=self.digest_method) - return mac.digest() - - -class Signer(object): - """This class can sign and unsign bytes, validating the signature - provided. - - Salt can be used to namespace the hash, so that a signed string is - only valid for a given namespace. Leaving this at the default value - or re-using a salt value across different parts of your application - where the same signed value in one part can mean something different - in another part is a security risk. - - See :ref:`the-salt` for an example of what the salt is doing and how - you can utilize it. - - .. versionadded:: 0.14 - ``key_derivation`` and ``digest_method`` were added as arguments - to the class constructor. - - .. versionadded:: 0.18 - ``algorithm`` was added as an argument to the class constructor. - """ - - #: The digest method to use for the signer. This defaults to - #: SHA1 but can be changed to any other function in the hashlib - #: module. - #: - #: .. versionadded:: 0.14 - default_digest_method = staticmethod(hashlib.sha1) - - #: Controls how the key is derived. The default is Django-style - #: concatenation. Possible values are ``concat``, ``django-concat`` - #: and ``hmac``. This is used for deriving a key from the secret key - #: with an added salt. - #: - #: .. versionadded:: 0.14 - default_key_derivation = "django-concat" - - def __init__( - self, - secret_key, - salt=None, - sep=".", - key_derivation=None, - digest_method=None, - algorithm=None, - ): - self.secret_key = want_bytes(secret_key) - self.sep = want_bytes(sep) - if self.sep in _base64_alphabet: - raise ValueError( - "The given separator cannot be used because it may be" - " contained in the signature itself. Alphanumeric" - " characters and `-_=` must not be used." - ) - self.salt = "itsdangerous.Signer" if salt is None else salt - if key_derivation is None: - key_derivation = self.default_key_derivation - self.key_derivation = key_derivation - if digest_method is None: - digest_method = self.default_digest_method - self.digest_method = digest_method - if algorithm is None: - algorithm = HMACAlgorithm(self.digest_method) - self.algorithm = algorithm - - def derive_key(self): - """This method is called to derive the key. The default key - derivation choices can be overridden here. Key derivation is not - intended to be used as a security method to make a complex key - out of a short password. Instead you should use large random - secret keys. - """ - salt = want_bytes(self.salt) - if self.key_derivation == "concat": - return self.digest_method(salt + self.secret_key).digest() - elif self.key_derivation == "django-concat": - return self.digest_method(salt + b"signer" + self.secret_key).digest() - elif self.key_derivation == "hmac": - mac = hmac.new(self.secret_key, digestmod=self.digest_method) - mac.update(salt) - return mac.digest() - elif self.key_derivation == "none": - return self.secret_key - else: - raise TypeError("Unknown key derivation method") - - def get_signature(self, value): - """Returns the signature for the given value.""" - value = want_bytes(value) - key = self.derive_key() - sig = self.algorithm.get_signature(key, value) - return base64_encode(sig) - - def sign(self, value): - """Signs the given string.""" - return want_bytes(value) + want_bytes(self.sep) + self.get_signature(value) - - def verify_signature(self, value, sig): - """Verifies the signature for the given value.""" - key = self.derive_key() - try: - sig = base64_decode(sig) - except Exception: - return False - return self.algorithm.verify_signature(key, value, sig) - - def unsign(self, signed_value): - """Unsigns the given string.""" - signed_value = want_bytes(signed_value) - sep = want_bytes(self.sep) - if sep not in signed_value: - raise BadSignature("No %r found in value" % self.sep) - value, sig = signed_value.rsplit(sep, 1) - if self.verify_signature(value, sig): - return value - raise BadSignature("Signature %r does not match" % sig, payload=value) - - def validate(self, signed_value): - """Only validates the given signed value. Returns ``True`` if - the signature exists and is valid. - """ - try: - self.unsign(signed_value) - return True - except BadSignature: - return False diff --git a/python/itsdangerous/timed.py b/python/itsdangerous/timed.py deleted file mode 100644 index 4c117e4..0000000 --- a/python/itsdangerous/timed.py +++ /dev/null @@ -1,147 +0,0 @@ -import time -from datetime import datetime - -from ._compat import text_type -from .encoding import base64_decode -from .encoding import base64_encode -from .encoding import bytes_to_int -from .encoding import int_to_bytes -from .encoding import want_bytes -from .exc import BadSignature -from .exc import BadTimeSignature -from .exc import SignatureExpired -from .serializer import Serializer -from .signer import Signer - - -class TimestampSigner(Signer): - """Works like the regular :class:`.Signer` but also records the time - of the signing and can be used to expire signatures. The - :meth:`unsign` method can raise :exc:`.SignatureExpired` if the - unsigning failed because the signature is expired. - """ - - def get_timestamp(self): - """Returns the current timestamp. The function must return an - integer. - """ - return int(time.time()) - - def timestamp_to_datetime(self, ts): - """Used to convert the timestamp from :meth:`get_timestamp` into - a datetime object. - """ - return datetime.utcfromtimestamp(ts) - - def sign(self, value): - """Signs the given string and also attaches time information.""" - value = want_bytes(value) - timestamp = base64_encode(int_to_bytes(self.get_timestamp())) - sep = want_bytes(self.sep) - value = value + sep + timestamp - return value + sep + self.get_signature(value) - - def unsign(self, value, max_age=None, return_timestamp=False): - """Works like the regular :meth:`.Signer.unsign` but can also - validate the time. See the base docstring of the class for - the general behavior. If ``return_timestamp`` is ``True`` the - timestamp of the signature will be returned as a naive - :class:`datetime.datetime` object in UTC. - """ - try: - result = Signer.unsign(self, value) - sig_error = None - except BadSignature as e: - sig_error = e - result = e.payload or b"" - sep = want_bytes(self.sep) - - # If there is no timestamp in the result there is something - # seriously wrong. In case there was a signature error, we raise - # that one directly, otherwise we have a weird situation in - # which we shouldn't have come except someone uses a time-based - # serializer on non-timestamp data, so catch that. - if sep not in result: - if sig_error: - raise sig_error - raise BadTimeSignature("timestamp missing", payload=result) - - value, timestamp = result.rsplit(sep, 1) - try: - timestamp = bytes_to_int(base64_decode(timestamp)) - except Exception: - timestamp = None - - # Signature is *not* okay. Raise a proper error now that we have - # split the value and the timestamp. - if sig_error is not None: - raise BadTimeSignature( - text_type(sig_error), payload=value, date_signed=timestamp - ) - - # Signature was okay but the timestamp is actually not there or - # malformed. Should not happen, but we handle it anyway. - if timestamp is None: - raise BadTimeSignature("Malformed timestamp", payload=value) - - # Check timestamp is not older than max_age - if max_age is not None: - age = self.get_timestamp() - timestamp - if age > max_age: - raise SignatureExpired( - "Signature age %s > %s seconds" % (age, max_age), - payload=value, - date_signed=self.timestamp_to_datetime(timestamp), - ) - - if return_timestamp: - return value, self.timestamp_to_datetime(timestamp) - return value - - def validate(self, signed_value, max_age=None): - """Only validates the given signed value. Returns ``True`` if - the signature exists and is valid.""" - try: - self.unsign(signed_value, max_age=max_age) - return True - except BadSignature: - return False - - -class TimedSerializer(Serializer): - """Uses :class:`TimestampSigner` instead of the default - :class:`.Signer`. - """ - - default_signer = TimestampSigner - - def loads(self, s, max_age=None, return_timestamp=False, salt=None): - """Reverse of :meth:`dumps`, raises :exc:`.BadSignature` if the - signature validation fails. If a ``max_age`` is provided it will - ensure the signature is not older than that time in seconds. In - case the signature is outdated, :exc:`.SignatureExpired` is - raised. All arguments are forwarded to the signer's - :meth:`~TimestampSigner.unsign` method. - """ - s = want_bytes(s) - last_exception = None - for signer in self.iter_unsigners(salt): - try: - base64d, timestamp = signer.unsign(s, max_age, return_timestamp=True) - payload = self.load_payload(base64d) - if return_timestamp: - return payload, timestamp - return payload - # If we get a signature expired it means we could read the - # signature but it's invalid. In that case we do not want to - # try the next signer. - except SignatureExpired: - raise - except BadSignature as err: - last_exception = err - raise last_exception - - def loads_unsafe(self, s, max_age=None, salt=None): - load_kwargs = {"max_age": max_age} - load_payload_kwargs = {} - return self._loads_unsafe_impl(s, salt, load_kwargs, load_payload_kwargs) diff --git a/python/itsdangerous/url_safe.py b/python/itsdangerous/url_safe.py deleted file mode 100644 index fcaa011..0000000 --- a/python/itsdangerous/url_safe.py +++ /dev/null @@ -1,65 +0,0 @@ -import zlib - -from ._json import _CompactJSON -from .encoding import base64_decode -from .encoding import base64_encode -from .exc import BadPayload -from .serializer import Serializer -from .timed import TimedSerializer - - -class URLSafeSerializerMixin(object): - """Mixed in with a regular serializer it will attempt to zlib - compress the string to make it shorter if necessary. It will also - base64 encode the string so that it can safely be placed in a URL. - """ - - default_serializer = _CompactJSON - - def load_payload(self, payload, *args, **kwargs): - decompress = False - if payload.startswith(b"."): - payload = payload[1:] - decompress = True - try: - json = base64_decode(payload) - except Exception as e: - raise BadPayload( - "Could not base64 decode the payload because of an exception", - original_error=e, - ) - if decompress: - try: - json = zlib.decompress(json) - except Exception as e: - raise BadPayload( - "Could not zlib decompress the payload before decoding the payload", - original_error=e, - ) - return super(URLSafeSerializerMixin, self).load_payload(json, *args, **kwargs) - - def dump_payload(self, obj): - json = super(URLSafeSerializerMixin, self).dump_payload(obj) - is_compressed = False - compressed = zlib.compress(json) - if len(compressed) < (len(json) - 1): - json = compressed - is_compressed = True - base64d = base64_encode(json) - if is_compressed: - base64d = b"." + base64d - return base64d - - -class URLSafeSerializer(URLSafeSerializerMixin, Serializer): - """Works like :class:`.Serializer` but dumps and loads into a URL - safe string consisting of the upper and lowercase character of the - alphabet as well as ``'_'``, ``'-'`` and ``'.'``. - """ - - -class URLSafeTimedSerializer(URLSafeSerializerMixin, TimedSerializer): - """Works like :class:`.TimedSerializer` but dumps and loads into a - URL safe string consisting of the upper and lowercase character of - the alphabet as well as ``'_'``, ``'-'`` and ``'.'``. - """ diff --git a/python/jinja2/__init__.py b/python/jinja2/__init__.py deleted file mode 100644 index 15e13b6..0000000 --- a/python/jinja2/__init__.py +++ /dev/null @@ -1,83 +0,0 @@ -# -*- coding: utf-8 -*- -""" - jinja2 - ~~~~~~ - - Jinja2 is a template engine written in pure Python. It provides a - Django inspired non-XML syntax but supports inline expressions and - an optional sandboxed environment. - - Nutshell - -------- - - Here a small example of a Jinja2 template:: - - {% extends 'base.html' %} - {% block title %}Memberlist{% endblock %} - {% block content %} - <ul> - {% for user in users %} - <li><a href="{{ user.url }}">{{ user.username }}</a></li> - {% endfor %} - </ul> - {% endblock %} - - - :copyright: (c) 2017 by the Jinja Team. - :license: BSD, see LICENSE for more details. -""" -__docformat__ = 'restructuredtext en' -__version__ = '2.10.1' - -# high level interface -from jinja2.environment import Environment, Template - -# loaders -from jinja2.loaders import BaseLoader, FileSystemLoader, PackageLoader, \ - DictLoader, FunctionLoader, PrefixLoader, ChoiceLoader, \ - ModuleLoader - -# bytecode caches -from jinja2.bccache import BytecodeCache, FileSystemBytecodeCache, \ - MemcachedBytecodeCache - -# undefined types -from jinja2.runtime import Undefined, DebugUndefined, StrictUndefined, \ - make_logging_undefined - -# exceptions -from jinja2.exceptions import TemplateError, UndefinedError, \ - TemplateNotFound, TemplatesNotFound, TemplateSyntaxError, \ - TemplateAssertionError, TemplateRuntimeError - -# decorators and public utilities -from jinja2.filters import environmentfilter, contextfilter, \ - evalcontextfilter -from jinja2.utils import Markup, escape, clear_caches, \ - environmentfunction, evalcontextfunction, contextfunction, \ - is_undefined, select_autoescape - -__all__ = [ - 'Environment', 'Template', 'BaseLoader', 'FileSystemLoader', - 'PackageLoader', 'DictLoader', 'FunctionLoader', 'PrefixLoader', - 'ChoiceLoader', 'BytecodeCache', 'FileSystemBytecodeCache', - 'MemcachedBytecodeCache', 'Undefined', 'DebugUndefined', - 'StrictUndefined', 'TemplateError', 'UndefinedError', 'TemplateNotFound', - 'TemplatesNotFound', 'TemplateSyntaxError', 'TemplateAssertionError', - 'TemplateRuntimeError', - 'ModuleLoader', 'environmentfilter', 'contextfilter', 'Markup', 'escape', - 'environmentfunction', 'contextfunction', 'clear_caches', 'is_undefined', - 'evalcontextfilter', 'evalcontextfunction', 'make_logging_undefined', - 'select_autoescape', -] - - -def _patch_async(): - from jinja2.utils import have_async_gen - if have_async_gen: - from jinja2.asyncsupport import patch_all - patch_all() - - -_patch_async() -del _patch_async diff --git a/python/jinja2/_compat.py b/python/jinja2/_compat.py deleted file mode 100644 index 61d8530..0000000 --- a/python/jinja2/_compat.py +++ /dev/null @@ -1,99 +0,0 @@ -# -*- coding: utf-8 -*- -""" - jinja2._compat - ~~~~~~~~~~~~~~ - - Some py2/py3 compatibility support based on a stripped down - version of six so we don't have to depend on a specific version - of it. - - :copyright: Copyright 2013 by the Jinja team, see AUTHORS. - :license: BSD, see LICENSE for details. -""" -import sys - -PY2 = sys.version_info[0] == 2 -PYPY = hasattr(sys, 'pypy_translation_info') -_identity = lambda x: x - - -if not PY2: - unichr = chr - range_type = range - text_type = str - string_types = (str,) - integer_types = (int,) - - iterkeys = lambda d: iter(d.keys()) - itervalues = lambda d: iter(d.values()) - iteritems = lambda d: iter(d.items()) - - import pickle - from io import BytesIO, StringIO - NativeStringIO = StringIO - - def reraise(tp, value, tb=None): - if value.__traceback__ is not tb: - raise value.with_traceback(tb) - raise value - - ifilter = filter - imap = map - izip = zip - intern = sys.intern - - implements_iterator = _identity - implements_to_string = _identity - encode_filename = _identity - -else: - unichr = unichr - text_type = unicode - range_type = xrange - string_types = (str, unicode) - integer_types = (int, long) - - iterkeys = lambda d: d.iterkeys() - itervalues = lambda d: d.itervalues() - iteritems = lambda d: d.iteritems() - - import cPickle as pickle - from cStringIO import StringIO as BytesIO, StringIO - NativeStringIO = BytesIO - - exec('def reraise(tp, value, tb=None):\n raise tp, value, tb') - - from itertools import imap, izip, ifilter - intern = intern - - def implements_iterator(cls): - cls.next = cls.__next__ - del cls.__next__ - return cls - - def implements_to_string(cls): - cls.__unicode__ = cls.__str__ - cls.__str__ = lambda x: x.__unicode__().encode('utf-8') - return cls - - def encode_filename(filename): - if isinstance(filename, unicode): - return filename.encode('utf-8') - return filename - - -def with_metaclass(meta, *bases): - """Create a base class with a metaclass.""" - # This requires a bit of explanation: the basic idea is to make a - # dummy metaclass for one level of class instantiation that replaces - # itself with the actual metaclass. - class metaclass(type): - def __new__(cls, name, this_bases, d): - return meta(name, bases, d) - return type.__new__(metaclass, 'temporary_class', (), {}) - - -try: - from urllib.parse import quote_from_bytes as url_quote -except ImportError: - from urllib import quote as url_quote diff --git a/python/jinja2/_identifier.py b/python/jinja2/_identifier.py deleted file mode 100644 index 2eac35d..0000000 --- a/python/jinja2/_identifier.py +++ /dev/null @@ -1,2 +0,0 @@ -# generated by scripts/generate_identifier_pattern.py -pattern = '·̀-ͯ·҃-֑҇-ׇֽֿׁׂׅׄؐ-ًؚ-ٰٟۖ-ۜ۟-۪ۤۧۨ-ܑۭܰ-݊ަ-ް߫-߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛ࣔ-ࣣ࣡-ःऺ-़ा-ॏ॑-ॗॢॣঁ-ঃ়া-ৄেৈো-্ৗৢৣਁ-ਃ਼ਾ-ੂੇੈੋ-੍ੑੰੱੵઁ-ઃ઼ા-ૅે-ૉો-્ૢૣଁ-ଃ଼ା-ୄେୈୋ-୍ୖୗୢୣஂா-ூெ-ைொ-்ௗఀ-ఃా-ౄె-ైొ-్ౕౖౢౣಁ-ಃ಼ಾ-ೄೆ-ೈೊ-್ೕೖೢೣഁ-ഃാ-ൄെ-ൈൊ-്ൗൢൣංඃ්ා-ුූෘ-ෟෲෳัิ-ฺ็-๎ັິ-ູົຼ່-ໍ༹༘༙༵༷༾༿ཱ-྄྆྇ྍ-ྗྙ-ྼ࿆ါ-ှၖ-ၙၞ-ၠၢ-ၤၧ-ၭၱ-ၴႂ-ႍႏႚ-ႝ፝-፟ᜒ-᜔ᜲ-᜴ᝒᝓᝲᝳ឴-៓៝᠋-᠍ᢅᢆᢩᤠ-ᤫᤰ-᤻ᨗ-ᨛᩕ-ᩞ᩠-᩿᩼᪰-᪽ᬀ-ᬄ᬴-᭄᭫-᭳ᮀ-ᮂᮡ-ᮭ᯦-᯳ᰤ-᰷᳐-᳔᳒-᳨᳭ᳲ-᳴᳸᳹᷀-᷵᷻-᷿‿⁀⁔⃐-⃥⃜⃡-⃰℘℮⳯-⵿⳱ⷠ-〪ⷿ-゙゚〯꙯ꙴ-꙽ꚞꚟ꛰꛱ꠂ꠆ꠋꠣ-ꠧꢀꢁꢴ-ꣅ꣠-꣱ꤦ-꤭ꥇ-꥓ꦀ-ꦃ꦳-꧀ꧥꨩ-ꨶꩃꩌꩍꩻ-ꩽꪰꪲ-ꪴꪷꪸꪾ꪿꫁ꫫ-ꫯꫵ꫶ꯣ-ꯪ꯬꯭ﬞ︀-️︠-︯︳︴﹍-﹏_𐇽𐋠𐍶-𐍺𐨁-𐨃𐨅𐨆𐨌-𐨏𐨸-𐨿𐨺𐫦𐫥𑀀-𑀂𑀸-𑁆𑁿-𑂂𑂰-𑂺𑄀-𑄂𑄧-𑅳𑄴𑆀-𑆂𑆳-𑇊𑇀-𑇌𑈬-𑈷𑈾𑋟-𑋪𑌀-𑌃𑌼𑌾-𑍄𑍇𑍈𑍋-𑍍𑍗𑍢𑍣𑍦-𑍬𑍰-𑍴𑐵-𑑆𑒰-𑓃𑖯-𑖵𑖸-𑗀𑗜𑗝𑘰-𑙀𑚫-𑚷𑜝-𑜫𑰯-𑰶𑰸-𑰿𑲒-𑲧𑲩-𑲶𖫰-𖫴𖬰-𖬶𖽑-𖽾𖾏-𖾒𛲝𛲞𝅥-𝅩𝅭-𝅲𝅻-𝆂𝆅-𝆋𝆪-𝆭𝉂-𝉄𝨀-𝨶𝨻-𝩬𝩵𝪄𝪛-𝪟𝪡-𝪯𞀀-𞀆𞀈-𞀘𞀛-𞀡𞀣𞀤𞀦-𞣐𞀪-𞣖𞥄-𞥊󠄀-󠇯' diff --git a/python/jinja2/asyncfilters.py b/python/jinja2/asyncfilters.py deleted file mode 100644 index 5c1f46d..0000000 --- a/python/jinja2/asyncfilters.py +++ /dev/null @@ -1,146 +0,0 @@ -from functools import wraps - -from jinja2.asyncsupport import auto_aiter -from jinja2 import filters - - -async def auto_to_seq(value): - seq = [] - if hasattr(value, '__aiter__'): - async for item in value: - seq.append(item) - else: - for item in value: - seq.append(item) - return seq - - -async def async_select_or_reject(args, kwargs, modfunc, lookup_attr): - seq, func = filters.prepare_select_or_reject( - args, kwargs, modfunc, lookup_attr) - if seq: - async for item in auto_aiter(seq): - if func(item): - yield item - - -def dualfilter(normal_filter, async_filter): - wrap_evalctx = False - if getattr(normal_filter, 'environmentfilter', False): - is_async = lambda args: args[0].is_async - wrap_evalctx = False - else: - if not getattr(normal_filter, 'evalcontextfilter', False) and \ - not getattr(normal_filter, 'contextfilter', False): - wrap_evalctx = True - is_async = lambda args: args[0].environment.is_async - - @wraps(normal_filter) - def wrapper(*args, **kwargs): - b = is_async(args) - if wrap_evalctx: - args = args[1:] - if b: - return async_filter(*args, **kwargs) - return normal_filter(*args, **kwargs) - - if wrap_evalctx: - wrapper.evalcontextfilter = True - - wrapper.asyncfiltervariant = True - - return wrapper - - -def asyncfiltervariant(original): - def decorator(f): - return dualfilter(original, f) - return decorator - - -@asyncfiltervariant(filters.do_first) -async def do_first(environment, seq): - try: - return await auto_aiter(seq).__anext__() - except StopAsyncIteration: - return environment.undefined('No first item, sequence was empty.') - - -@asyncfiltervariant(filters.do_groupby) -async def do_groupby(environment, value, attribute): - expr = filters.make_attrgetter(environment, attribute) - return [filters._GroupTuple(key, await auto_to_seq(values)) - for key, values in filters.groupby(sorted( - await auto_to_seq(value), key=expr), expr)] - - -@asyncfiltervariant(filters.do_join) -async def do_join(eval_ctx, value, d=u'', attribute=None): - return filters.do_join(eval_ctx, await auto_to_seq(value), d, attribute) - - -@asyncfiltervariant(filters.do_list) -async def do_list(value): - return await auto_to_seq(value) - - -@asyncfiltervariant(filters.do_reject) -async def do_reject(*args, **kwargs): - return async_select_or_reject(args, kwargs, lambda x: not x, False) - - -@asyncfiltervariant(filters.do_rejectattr) -async def do_rejectattr(*args, **kwargs): - return async_select_or_reject(args, kwargs, lambda x: not x, True) - - -@asyncfiltervariant(filters.do_select) -async def do_select(*args, **kwargs): - return async_select_or_reject(args, kwargs, lambda x: x, False) - - -@asyncfiltervariant(filters.do_selectattr) -async def do_selectattr(*args, **kwargs): - return async_select_or_reject(args, kwargs, lambda x: x, True) - - -@asyncfiltervariant(filters.do_map) -async def do_map(*args, **kwargs): - seq, func = filters.prepare_map(args, kwargs) - if seq: - async for item in auto_aiter(seq): - yield func(item) - - -@asyncfiltervariant(filters.do_sum) -async def do_sum(environment, iterable, attribute=None, start=0): - rv = start - if attribute is not None: - func = filters.make_attrgetter(environment, attribute) - else: - func = lambda x: x - async for item in auto_aiter(iterable): - rv += func(item) - return rv - - -@asyncfiltervariant(filters.do_slice) -async def do_slice(value, slices, fill_with=None): - return filters.do_slice(await auto_to_seq(value), slices, fill_with) - - -ASYNC_FILTERS = { - 'first': do_first, - 'groupby': do_groupby, - 'join': do_join, - 'list': do_list, - # we intentionally do not support do_last because that would be - # ridiculous - 'reject': do_reject, - 'rejectattr': do_rejectattr, - 'map': do_map, - 'select': do_select, - 'selectattr': do_selectattr, - 'sum': do_sum, - 'slice': do_slice, -} diff --git a/python/jinja2/asyncsupport.py b/python/jinja2/asyncsupport.py deleted file mode 100644 index b1e7b5c..0000000 --- a/python/jinja2/asyncsupport.py +++ /dev/null @@ -1,256 +0,0 @@ -# -*- coding: utf-8 -*- -""" - jinja2.asyncsupport - ~~~~~~~~~~~~~~~~~~~ - - Has all the code for async support which is implemented as a patch - for supported Python versions. - - :copyright: (c) 2017 by the Jinja Team. - :license: BSD, see LICENSE for more details. -""" -import sys -import asyncio -import inspect -from functools import update_wrapper - -from jinja2.utils import concat, internalcode, Markup -from jinja2.environment import TemplateModule -from jinja2.runtime import LoopContextBase, _last_iteration - - -async def concat_async(async_gen): - rv = [] - async def collect(): - async for event in async_gen: - rv.append(event) - await collect() - return concat(rv) - - -async def generate_async(self, *args, **kwargs): - vars = dict(*args, **kwargs) - try: - async for event in self.root_render_func(self.new_context(vars)): - yield event - except Exception: - exc_info = sys.exc_info() - else: - return - yield self.environment.handle_exception(exc_info, True) - - -def wrap_generate_func(original_generate): - def _convert_generator(self, loop, args, kwargs): - async_gen = self.generate_async(*args, **kwargs) - try: - while 1: - yield loop.run_until_complete(async_gen.__anext__()) - except StopAsyncIteration: - pass - def generate(self, *args, **kwargs): - if not self.environment.is_async: - return original_generate(self, *args, **kwargs) - return _convert_generator(self, asyncio.get_event_loop(), args, kwargs) - return update_wrapper(generate, original_generate) - - -async def render_async(self, *args, **kwargs): - if not self.environment.is_async: - raise RuntimeError('The environment was not created with async mode ' - 'enabled.') - - vars = dict(*args, **kwargs) - ctx = self.new_context(vars) - - try: - return await concat_async(self.root_render_func(ctx)) - except Exception: - exc_info = sys.exc_info() - return self.environment.handle_exception(exc_info, True) - - -def wrap_render_func(original_render): - def render(self, *args, **kwargs): - if not self.environment.is_async: - return original_render(self, *args, **kwargs) - loop = asyncio.get_event_loop() - return loop.run_until_complete(self.render_async(*args, **kwargs)) - return update_wrapper(render, original_render) - - -def wrap_block_reference_call(original_call): - @internalcode - async def async_call(self): - rv = await concat_async(self._stack[self._depth](self._context)) - if self._context.eval_ctx.autoescape: - rv = Markup(rv) - return rv - - @internalcode - def __call__(self): - if not self._context.environment.is_async: - return original_call(self) - return async_call(self) - - return update_wrapper(__call__, original_call) - - -def wrap_macro_invoke(original_invoke): - @internalcode - async def async_invoke(self, arguments, autoescape): - rv = await self._func(*arguments) - if autoescape: - rv = Markup(rv) - return rv - - @internalcode - def _invoke(self, arguments, autoescape): - if not self._environment.is_async: - return original_invoke(self, arguments, autoescape) - return async_invoke(self, arguments, autoescape) - return update_wrapper(_invoke, original_invoke) - - -@internalcode -async def get_default_module_async(self): - if self._module is not None: - return self._module - self._module = rv = await self.make_module_async() - return rv - - -def wrap_default_module(original_default_module): - @internalcode - def _get_default_module(self): - if self.environment.is_async: - raise RuntimeError('Template module attribute is unavailable ' - 'in async mode') - return original_default_module(self) - return _get_default_module - - -async def make_module_async(self, vars=None, shared=False, locals=None): - context = self.new_context(vars, shared, locals) - body_stream = [] - async for item in self.root_render_func(context): - body_stream.append(item) - return TemplateModule(self, context, body_stream) - - -def patch_template(): - from jinja2 import Template - Template.generate = wrap_generate_func(Template.generate) - Template.generate_async = update_wrapper( - generate_async, Template.generate_async) - Template.render_async = update_wrapper( - render_async, Template.render_async) - Template.render = wrap_render_func(Template.render) - Template._get_default_module = wrap_default_module( - Template._get_default_module) - Template._get_default_module_async = get_default_module_async - Template.make_module_async = update_wrapper( - make_module_async, Template.make_module_async) - - -def patch_runtime(): - from jinja2.runtime import BlockReference, Macro - BlockReference.__call__ = wrap_block_reference_call( - BlockReference.__call__) - Macro._invoke = wrap_macro_invoke(Macro._invoke) - - -def patch_filters(): - from jinja2.filters import FILTERS - from jinja2.asyncfilters import ASYNC_FILTERS - FILTERS.update(ASYNC_FILTERS) - - -def patch_all(): - patch_template() - patch_runtime() - patch_filters() - - -async def auto_await(value): - if inspect.isawaitable(value): - return await value - return value - - -async def auto_aiter(iterable): - if hasattr(iterable, '__aiter__'): - async for item in iterable: - yield item - return - for item in iterable: - yield item - - -class AsyncLoopContext(LoopContextBase): - - def __init__(self, async_iterator, undefined, after, length, recurse=None, - depth0=0): - LoopContextBase.__init__(self, undefined, recurse, depth0) - self._async_iterator = async_iterator - self._after = after - self._length = length - - @property - def length(self): - if self._length is None: - raise TypeError('Loop length for some iterators cannot be ' - 'lazily calculated in async mode') - return self._length - - def __aiter__(self): - return AsyncLoopContextIterator(self) - - -class AsyncLoopContextIterator(object): - __slots__ = ('context',) - - def __init__(self, context): - self.context = context - - def __aiter__(self): - return self - - async def __anext__(self): - ctx = self.context - ctx.index0 += 1 - if ctx._after is _last_iteration: - raise StopAsyncIteration() - ctx._before = ctx._current - ctx._current = ctx._after - try: - ctx._after = await ctx._async_iterator.__anext__() - except StopAsyncIteration: - ctx._after = _last_iteration - return ctx._current, ctx - - -async def make_async_loop_context(iterable, undefined, recurse=None, depth0=0): - # Length is more complicated and less efficient in async mode. The - # reason for this is that we cannot know if length will be used - # upfront but because length is a property we cannot lazily execute it - # later. This means that we need to buffer it up and measure :( - # - # We however only do this for actual iterators, not for async - # iterators as blocking here does not seem like the best idea in the - # world. - try: - length = len(iterable) - except (TypeError, AttributeError): - if not hasattr(iterable, '__aiter__'): - iterable = tuple(iterable) - length = len(iterable) - else: - length = None - async_iterator = auto_aiter(iterable) - try: - after = await async_iterator.__anext__() - except StopAsyncIteration: - after = _last_iteration - return AsyncLoopContext(async_iterator, undefined, after, length, recurse, - depth0) diff --git a/python/jinja2/bccache.py b/python/jinja2/bccache.py deleted file mode 100644 index 080e527..0000000 --- a/python/jinja2/bccache.py +++ /dev/null @@ -1,362 +0,0 @@ -# -*- coding: utf-8 -*- -""" - jinja2.bccache - ~~~~~~~~~~~~~~ - - This module implements the bytecode cache system Jinja is optionally - using. This is useful if you have very complex template situations and - the compiliation of all those templates slow down your application too - much. - - Situations where this is useful are often forking web applications that - are initialized on the first request. - - :copyright: (c) 2017 by the Jinja Team. - :license: BSD. -""" -from os import path, listdir -import os -import sys -import stat -import errno -import marshal -import tempfile -import fnmatch -from hashlib import sha1 -from jinja2.utils import open_if_exists -from jinja2._compat import BytesIO, pickle, PY2, text_type - - -# marshal works better on 3.x, one hack less required -if not PY2: - marshal_dump = marshal.dump - marshal_load = marshal.load -else: - - def marshal_dump(code, f): - if isinstance(f, file): - marshal.dump(code, f) - else: - f.write(marshal.dumps(code)) - - def marshal_load(f): - if isinstance(f, file): - return marshal.load(f) - return marshal.loads(f.read()) - - -bc_version = 3 - -# magic version used to only change with new jinja versions. With 2.6 -# we change this to also take Python version changes into account. The -# reason for this is that Python tends to segfault if fed earlier bytecode -# versions because someone thought it would be a good idea to reuse opcodes -# or make Python incompatible with earlier versions. -bc_magic = 'j2'.encode('ascii') + \ - pickle.dumps(bc_version, 2) + \ - pickle.dumps((sys.version_info[0] << 24) | sys.version_info[1]) - - -class Bucket(object): - """Buckets are used to store the bytecode for one template. It's created - and initialized by the bytecode cache and passed to the loading functions. - - The buckets get an internal checksum from the cache assigned and use this - to automatically reject outdated cache material. Individual bytecode - cache subclasses don't have to care about cache invalidation. - """ - - def __init__(self, environment, key, checksum): - self.environment = environment - self.key = key - self.checksum = checksum - self.reset() - - def reset(self): - """Resets the bucket (unloads the bytecode).""" - self.code = None - - def load_bytecode(self, f): - """Loads bytecode from a file or file like object.""" - # make sure the magic header is correct - magic = f.read(len(bc_magic)) - if magic != bc_magic: - self.reset() - return - # the source code of the file changed, we need to reload - checksum = pickle.load(f) - if self.checksum != checksum: - self.reset() - return - # if marshal_load fails then we need to reload - try: - self.code = marshal_load(f) - except (EOFError, ValueError, TypeError): - self.reset() - return - - def write_bytecode(self, f): - """Dump the bytecode into the file or file like object passed.""" - if self.code is None: - raise TypeError('can\'t write empty bucket') - f.write(bc_magic) - pickle.dump(self.checksum, f, 2) - marshal_dump(self.code, f) - - def bytecode_from_string(self, string): - """Load bytecode from a string.""" - self.load_bytecode(BytesIO(string)) - - def bytecode_to_string(self): - """Return the bytecode as string.""" - out = BytesIO() - self.write_bytecode(out) - return out.getvalue() - - -class BytecodeCache(object): - """To implement your own bytecode cache you have to subclass this class - and override :meth:`load_bytecode` and :meth:`dump_bytecode`. Both of - these methods are passed a :class:`~jinja2.bccache.Bucket`. - - A very basic bytecode cache that saves the bytecode on the file system:: - - from os import path - - class MyCache(BytecodeCache): - - def __init__(self, directory): - self.directory = directory - - def load_bytecode(self, bucket): - filename = path.join(self.directory, bucket.key) - if path.exists(filename): - with open(filename, 'rb') as f: - bucket.load_bytecode(f) - - def dump_bytecode(self, bucket): - filename = path.join(self.directory, bucket.key) - with open(filename, 'wb') as f: - bucket.write_bytecode(f) - - A more advanced version of a filesystem based bytecode cache is part of - Jinja2. - """ - - def load_bytecode(self, bucket): - """Subclasses have to override this method to load bytecode into a - bucket. If they are not able to find code in the cache for the - bucket, it must not do anything. - """ - raise NotImplementedError() - - def dump_bytecode(self, bucket): - """Subclasses have to override this method to write the bytecode - from a bucket back to the cache. If it unable to do so it must not - fail silently but raise an exception. - """ - raise NotImplementedError() - - def clear(self): - """Clears the cache. This method is not used by Jinja2 but should be - implemented to allow applications to clear the bytecode cache used - by a particular environment. - """ - - def get_cache_key(self, name, filename=None): - """Returns the unique hash key for this template name.""" - hash = sha1(name.encode('utf-8')) - if filename is not None: - filename = '|' + filename - if isinstance(filename, text_type): - filename = filename.encode('utf-8') - hash.update(filename) - return hash.hexdigest() - - def get_source_checksum(self, source): - """Returns a checksum for the source.""" - return sha1(source.encode('utf-8')).hexdigest() - - def get_bucket(self, environment, name, filename, source): - """Return a cache bucket for the given template. All arguments are - mandatory but filename may be `None`. - """ - key = self.get_cache_key(name, filename) - checksum = self.get_source_checksum(source) - bucket = Bucket(environment, key, checksum) - self.load_bytecode(bucket) - return bucket - - def set_bucket(self, bucket): - """Put the bucket into the cache.""" - self.dump_bytecode(bucket) - - -class FileSystemBytecodeCache(BytecodeCache): - """A bytecode cache that stores bytecode on the filesystem. It accepts - two arguments: The directory where the cache items are stored and a - pattern string that is used to build the filename. - - If no directory is specified a default cache directory is selected. On - Windows the user's temp directory is used, on UNIX systems a directory - is created for the user in the system temp directory. - - The pattern can be used to have multiple separate caches operate on the - same directory. The default pattern is ``'__jinja2_%s.cache'``. ``%s`` - is replaced with the cache key. - - >>> bcc = FileSystemBytecodeCache('/tmp/jinja_cache', '%s.cache') - - This bytecode cache supports clearing of the cache using the clear method. - """ - - def __init__(self, directory=None, pattern='__jinja2_%s.cache'): - if directory is None: - directory = self._get_default_cache_dir() - self.directory = directory - self.pattern = pattern - - def _get_default_cache_dir(self): - def _unsafe_dir(): - raise RuntimeError('Cannot determine safe temp directory. You ' - 'need to explicitly provide one.') - - tmpdir = tempfile.gettempdir() - - # On windows the temporary directory is used specific unless - # explicitly forced otherwise. We can just use that. - if os.name == 'nt': - return tmpdir - if not hasattr(os, 'getuid'): - _unsafe_dir() - - dirname = '_jinja2-cache-%d' % os.getuid() - actual_dir = os.path.join(tmpdir, dirname) - - try: - os.mkdir(actual_dir, stat.S_IRWXU) - except OSError as e: - if e.errno != errno.EEXIST: - raise - try: - os.chmod(actual_dir, stat.S_IRWXU) - actual_dir_stat = os.lstat(actual_dir) - if actual_dir_stat.st_uid != os.getuid() \ - or not stat.S_ISDIR(actual_dir_stat.st_mode) \ - or stat.S_IMODE(actual_dir_stat.st_mode) != stat.S_IRWXU: - _unsafe_dir() - except OSError as e: - if e.errno != errno.EEXIST: - raise - - actual_dir_stat = os.lstat(actual_dir) - if actual_dir_stat.st_uid != os.getuid() \ - or not stat.S_ISDIR(actual_dir_stat.st_mode) \ - or stat.S_IMODE(actual_dir_stat.st_mode) != stat.S_IRWXU: - _unsafe_dir() - - return actual_dir - - def _get_cache_filename(self, bucket): - return path.join(self.directory, self.pattern % bucket.key) - - def load_bytecode(self, bucket): - f = open_if_exists(self._get_cache_filename(bucket), 'rb') - if f is not None: - try: - bucket.load_bytecode(f) - finally: - f.close() - - def dump_bytecode(self, bucket): - f = open(self._get_cache_filename(bucket), 'wb') - try: - bucket.write_bytecode(f) - finally: - f.close() - - def clear(self): - # imported lazily here because google app-engine doesn't support - # write access on the file system and the function does not exist - # normally. - from os import remove - files = fnmatch.filter(listdir(self.directory), self.pattern % '*') - for filename in files: - try: - remove(path.join(self.directory, filename)) - except OSError: - pass - - -class MemcachedBytecodeCache(BytecodeCache): - """This class implements a bytecode cache that uses a memcache cache for - storing the information. It does not enforce a specific memcache library - (tummy's memcache or cmemcache) but will accept any class that provides - the minimal interface required. - - Libraries compatible with this class: - - - `werkzeug <http://werkzeug.pocoo.org/>`_.contrib.cache - - `python-memcached <https://www.tummy.com/Community/software/python-memcached/>`_ - - `cmemcache <http://gijsbert.org/cmemcache/>`_ - - (Unfortunately the django cache interface is not compatible because it - does not support storing binary data, only unicode. You can however pass - the underlying cache client to the bytecode cache which is available - as `django.core.cache.cache._client`.) - - The minimal interface for the client passed to the constructor is this: - - .. class:: MinimalClientInterface - - .. method:: set(key, value[, timeout]) - - Stores the bytecode in the cache. `value` is a string and - `timeout` the timeout of the key. If timeout is not provided - a default timeout or no timeout should be assumed, if it's - provided it's an integer with the number of seconds the cache - item should exist. - - .. method:: get(key) - - Returns the value for the cache key. If the item does not - exist in the cache the return value must be `None`. - - The other arguments to the constructor are the prefix for all keys that - is added before the actual cache key and the timeout for the bytecode in - the cache system. We recommend a high (or no) timeout. - - This bytecode cache does not support clearing of used items in the cache. - The clear method is a no-operation function. - - .. versionadded:: 2.7 - Added support for ignoring memcache errors through the - `ignore_memcache_errors` parameter. - """ - - def __init__(self, client, prefix='jinja2/bytecode/', timeout=None, - ignore_memcache_errors=True): - self.client = client - self.prefix = prefix - self.timeout = timeout - self.ignore_memcache_errors = ignore_memcache_errors - - def load_bytecode(self, bucket): - try: - code = self.client.get(self.prefix + bucket.key) - except Exception: - if not self.ignore_memcache_errors: - raise - code = None - if code is not None: - bucket.bytecode_from_string(code) - - def dump_bytecode(self, bucket): - args = (self.prefix + bucket.key, bucket.bytecode_to_string()) - if self.timeout is not None: - args += (self.timeout,) - try: - self.client.set(*args) - except Exception: - if not self.ignore_memcache_errors: - raise diff --git a/python/jinja2/compiler.py b/python/jinja2/compiler.py deleted file mode 100644 index d534a82..0000000 --- a/python/jinja2/compiler.py +++ /dev/null @@ -1,1721 +0,0 @@ -# -*- coding: utf-8 -*- -""" - jinja2.compiler - ~~~~~~~~~~~~~~~ - - Compiles nodes into python code. - - :copyright: (c) 2017 by the Jinja Team. - :license: BSD, see LICENSE for more details. -""" -from itertools import chain -from copy import deepcopy -from keyword import iskeyword as is_python_keyword -from functools import update_wrapper -from jinja2 import nodes -from jinja2.nodes import EvalContext -from jinja2.visitor import NodeVisitor -from jinja2.optimizer import Optimizer -from jinja2.exceptions import TemplateAssertionError -from jinja2.utils import Markup, concat, escape -from jinja2._compat import range_type, text_type, string_types, \ - iteritems, NativeStringIO, imap, izip -from jinja2.idtracking import Symbols, VAR_LOAD_PARAMETER, \ - VAR_LOAD_RESOLVE, VAR_LOAD_ALIAS, VAR_LOAD_UNDEFINED - - -operators = { - 'eq': '==', - 'ne': '!=', - 'gt': '>', - 'gteq': '>=', - 'lt': '<', - 'lteq': '<=', - 'in': 'in', - 'notin': 'not in' -} - -# what method to iterate over items do we want to use for dict iteration -# in generated code? on 2.x let's go with iteritems, on 3.x with items -if hasattr(dict, 'iteritems'): - dict_item_iter = 'iteritems' -else: - dict_item_iter = 'items' - -code_features = ['division'] - -# does this python version support generator stops? (PEP 0479) -try: - exec('from __future__ import generator_stop') - code_features.append('generator_stop') -except SyntaxError: - pass - -# does this python version support yield from? -try: - exec('def f(): yield from x()') -except SyntaxError: - supports_yield_from = False -else: - supports_yield_from = True - - -def optimizeconst(f): - def new_func(self, node, frame, **kwargs): - # Only optimize if the frame is not volatile - if self.optimized and not frame.eval_ctx.volatile: - new_node = self.optimizer.visit(node, frame.eval_ctx) - if new_node != node: - return self.visit(new_node, frame) - return f(self, node, frame, **kwargs) - return update_wrapper(new_func, f) - - -def generate(node, environment, name, filename, stream=None, - defer_init=False, optimized=True): - """Generate the python source for a node tree.""" - if not isinstance(node, nodes.Template): - raise TypeError('Can\'t compile non template nodes') - generator = environment.code_generator_class(environment, name, filename, - stream, defer_init, - optimized) - generator.visit(node) - if stream is None: - return generator.stream.getvalue() - - -def has_safe_repr(value): - """Does the node have a safe representation?""" - if value is None or value is NotImplemented or value is Ellipsis: - return True - if type(value) in (bool, int, float, complex, range_type, Markup) + string_types: - return True - if type(value) in (tuple, list, set, frozenset): - for item in value: - if not has_safe_repr(item): - return False - return True - elif type(value) is dict: - for key, value in iteritems(value): - if not has_safe_repr(key): - return False - if not has_safe_repr(value): - return False - return True - return False - - -def find_undeclared(nodes, names): - """Check if the names passed are accessed undeclared. The return value - is a set of all the undeclared names from the sequence of names found. - """ - visitor = UndeclaredNameVisitor(names) - try: - for node in nodes: - visitor.visit(node) - except VisitorExit: - pass - return visitor.undeclared - - -class MacroRef(object): - - def __init__(self, node): - self.node = node - self.accesses_caller = False - self.accesses_kwargs = False - self.accesses_varargs = False - - -class Frame(object): - """Holds compile time information for us.""" - - def __init__(self, eval_ctx, parent=None, level=None): - self.eval_ctx = eval_ctx - self.symbols = Symbols(parent and parent.symbols or None, - level=level) - - # a toplevel frame is the root + soft frames such as if conditions. - self.toplevel = False - - # the root frame is basically just the outermost frame, so no if - # conditions. This information is used to optimize inheritance - # situations. - self.rootlevel = False - - # in some dynamic inheritance situations the compiler needs to add - # write tests around output statements. - self.require_output_check = parent and parent.require_output_check - - # inside some tags we are using a buffer rather than yield statements. - # this for example affects {% filter %} or {% macro %}. If a frame - # is buffered this variable points to the name of the list used as - # buffer. - self.buffer = None - - # the name of the block we're in, otherwise None. - self.block = parent and parent.block or None - - # the parent of this frame - self.parent = parent - - if parent is not None: - self.buffer = parent.buffer - - def copy(self): - """Create a copy of the current one.""" - rv = object.__new__(self.__class__) - rv.__dict__.update(self.__dict__) - rv.symbols = self.symbols.copy() - return rv - - def inner(self, isolated=False): - """Return an inner frame.""" - if isolated: - return Frame(self.eval_ctx, level=self.symbols.level + 1) - return Frame(self.eval_ctx, self) - - def soft(self): - """Return a soft frame. A soft frame may not be modified as - standalone thing as it shares the resources with the frame it - was created of, but it's not a rootlevel frame any longer. - - This is only used to implement if-statements. - """ - rv = self.copy() - rv.rootlevel = False - return rv - - __copy__ = copy - - -class VisitorExit(RuntimeError): - """Exception used by the `UndeclaredNameVisitor` to signal a stop.""" - - -class DependencyFinderVisitor(NodeVisitor): - """A visitor that collects filter and test calls.""" - - def __init__(self): - self.filters = set() - self.tests = set() - - def visit_Filter(self, node): - self.generic_visit(node) - self.filters.add(node.name) - - def visit_Test(self, node): - self.generic_visit(node) - self.tests.add(node.name) - - def visit_Block(self, node): - """Stop visiting at blocks.""" - - -class UndeclaredNameVisitor(NodeVisitor): - """A visitor that checks if a name is accessed without being - declared. This is different from the frame visitor as it will - not stop at closure frames. - """ - - def __init__(self, names): - self.names = set(names) - self.undeclared = set() - - def visit_Name(self, node): - if node.ctx == 'load' and node.name in self.names: - self.undeclared.add(node.name) - if self.undeclared == self.names: - raise VisitorExit() - else: - self.names.discard(node.name) - - def visit_Block(self, node): - """Stop visiting a blocks.""" - - -class CompilerExit(Exception): - """Raised if the compiler encountered a situation where it just - doesn't make sense to further process the code. Any block that - raises such an exception is not further processed. - """ - - -class CodeGenerator(NodeVisitor): - - def __init__(self, environment, name, filename, stream=None, - defer_init=False, optimized=True): - if stream is None: - stream = NativeStringIO() - self.environment = environment - self.name = name - self.filename = filename - self.stream = stream - self.created_block_context = False - self.defer_init = defer_init - self.optimized = optimized - if optimized: - self.optimizer = Optimizer(environment) - - # aliases for imports - self.import_aliases = {} - - # a registry for all blocks. Because blocks are moved out - # into the global python scope they are registered here - self.blocks = {} - - # the number of extends statements so far - self.extends_so_far = 0 - - # some templates have a rootlevel extends. In this case we - # can safely assume that we're a child template and do some - # more optimizations. - self.has_known_extends = False - - # the current line number - self.code_lineno = 1 - - # registry of all filters and tests (global, not block local) - self.tests = {} - self.filters = {} - - # the debug information - self.debug_info = [] - self._write_debug_info = None - - # the number of new lines before the next write() - self._new_lines = 0 - - # the line number of the last written statement - self._last_line = 0 - - # true if nothing was written so far. - self._first_write = True - - # used by the `temporary_identifier` method to get new - # unique, temporary identifier - self._last_identifier = 0 - - # the current indentation - self._indentation = 0 - - # Tracks toplevel assignments - self._assign_stack = [] - - # Tracks parameter definition blocks - self._param_def_block = [] - - # Tracks the current context. - self._context_reference_stack = ['context'] - - # -- Various compilation helpers - - def fail(self, msg, lineno): - """Fail with a :exc:`TemplateAssertionError`.""" - raise TemplateAssertionError(msg, lineno, self.name, self.filename) - - def temporary_identifier(self): - """Get a new unique identifier.""" - self._last_identifier += 1 - return 't_%d' % self._last_identifier - - def buffer(self, frame): - """Enable buffering for the frame from that point onwards.""" - frame.buffer = self.temporary_identifier() - self.writeline('%s = []' % frame.buffer) - - def return_buffer_contents(self, frame, force_unescaped=False): - """Return the buffer contents of the frame.""" - if not force_unescaped: - if frame.eval_ctx.volatile: - self.writeline('if context.eval_ctx.autoescape:') - self.indent() - self.writeline('return Markup(concat(%s))' % frame.buffer) - self.outdent() - self.writeline('else:') - self.indent() - self.writeline('return concat(%s)' % frame.buffer) - self.outdent() - return - elif frame.eval_ctx.autoescape: - self.writeline('return Markup(concat(%s))' % frame.buffer) - return - self.writeline('return concat(%s)' % frame.buffer) - - def indent(self): - """Indent by one.""" - self._indentation += 1 - - def outdent(self, step=1): - """Outdent by step.""" - self._indentation -= step - - def start_write(self, frame, node=None): - """Yield or write into the frame buffer.""" - if frame.buffer is None: - self.writeline('yield ', node) - else: - self.writeline('%s.append(' % frame.buffer, node) - - def end_write(self, frame): - """End the writing process started by `start_write`.""" - if frame.buffer is not None: - self.write(')') - - def simple_write(self, s, frame, node=None): - """Simple shortcut for start_write + write + end_write.""" - self.start_write(frame, node) - self.write(s) - self.end_write(frame) - - def blockvisit(self, nodes, frame): - """Visit a list of nodes as block in a frame. If the current frame - is no buffer a dummy ``if 0: yield None`` is written automatically. - """ - try: - self.writeline('pass') - for node in nodes: - self.visit(node, frame) - except CompilerExit: - pass - - def write(self, x): - """Write a string into the output stream.""" - if self._new_lines: - if not self._first_write: - self.stream.write('\n' * self._new_lines) - self.code_lineno += self._new_lines - if self._write_debug_info is not None: - self.debug_info.append((self._write_debug_info, - self.code_lineno)) - self._write_debug_info = None - self._first_write = False - self.stream.write(' ' * self._indentation) - self._new_lines = 0 - self.stream.write(x) - - def writeline(self, x, node=None, extra=0): - """Combination of newline and write.""" - self.newline(node, extra) - self.write(x) - - def newline(self, node=None, extra=0): - """Add one or more newlines before the next write.""" - self._new_lines = max(self._new_lines, 1 + extra) - if node is not None and node.lineno != self._last_line: - self._write_debug_info = node.lineno - self._last_line = node.lineno - - def signature(self, node, frame, extra_kwargs=None): - """Writes a function call to the stream for the current node. - A leading comma is added automatically. The extra keyword - arguments may not include python keywords otherwise a syntax - error could occour. The extra keyword arguments should be given - as python dict. - """ - # if any of the given keyword arguments is a python keyword - # we have to make sure that no invalid call is created. - kwarg_workaround = False - for kwarg in chain((x.key for x in node.kwargs), extra_kwargs or ()): - if is_python_keyword(kwarg): - kwarg_workaround = True - break - - for arg in node.args: - self.write(', ') - self.visit(arg, frame) - - if not kwarg_workaround: - for kwarg in node.kwargs: - self.write(', ') - self.visit(kwarg, frame) - if extra_kwargs is not None: - for key, value in iteritems(extra_kwargs): - self.write(', %s=%s' % (key, value)) - if node.dyn_args: - self.write(', *') - self.visit(node.dyn_args, frame) - - if kwarg_workaround: - if node.dyn_kwargs is not None: - self.write(', **dict({') - else: - self.write(', **{') - for kwarg in node.kwargs: - self.write('%r: ' % kwarg.key) - self.visit(kwarg.value, frame) - self.write(', ') - if extra_kwargs is not None: - for key, value in iteritems(extra_kwargs): - self.write('%r: %s, ' % (key, value)) - if node.dyn_kwargs is not None: - self.write('}, **') - self.visit(node.dyn_kwargs, frame) - self.write(')') - else: - self.write('}') - - elif node.dyn_kwargs is not None: - self.write(', **') - self.visit(node.dyn_kwargs, frame) - - def pull_dependencies(self, nodes): - """Pull all the dependencies.""" - visitor = DependencyFinderVisitor() - for node in nodes: - visitor.visit(node) - for dependency in 'filters', 'tests': - mapping = getattr(self, dependency) - for name in getattr(visitor, dependency): - if name not in mapping: - mapping[name] = self.temporary_identifier() - self.writeline('%s = environment.%s[%r]' % - (mapping[name], dependency, name)) - - def enter_frame(self, frame): - undefs = [] - for target, (action, param) in iteritems(frame.symbols.loads): - if action == VAR_LOAD_PARAMETER: - pass - elif action == VAR_LOAD_RESOLVE: - self.writeline('%s = %s(%r)' % - (target, self.get_resolve_func(), param)) - elif action == VAR_LOAD_ALIAS: - self.writeline('%s = %s' % (target, param)) - elif action == VAR_LOAD_UNDEFINED: - undefs.append(target) - else: - raise NotImplementedError('unknown load instruction') - if undefs: - self.writeline('%s = missing' % ' = '.join(undefs)) - - def leave_frame(self, frame, with_python_scope=False): - if not with_python_scope: - undefs = [] - for target, _ in iteritems(frame.symbols.loads): - undefs.append(target) - if undefs: - self.writeline('%s = missing' % ' = '.join(undefs)) - - def func(self, name): - if self.environment.is_async: - return 'async def %s' % name - return 'def %s' % name - - def macro_body(self, node, frame): - """Dump the function def of a macro or call block.""" - frame = frame.inner() - frame.symbols.analyze_node(node) - macro_ref = MacroRef(node) - - explicit_caller = None - skip_special_params = set() - args = [] - for idx, arg in enumerate(node.args): - if arg.name == 'caller': - explicit_caller = idx - if arg.name in ('kwargs', 'varargs'): - skip_special_params.add(arg.name) - args.append(frame.symbols.ref(arg.name)) - - undeclared = find_undeclared(node.body, ('caller', 'kwargs', 'varargs')) - - if 'caller' in undeclared: - # In older Jinja2 versions there was a bug that allowed caller - # to retain the special behavior even if it was mentioned in - # the argument list. However thankfully this was only really - # working if it was the last argument. So we are explicitly - # checking this now and error out if it is anywhere else in - # the argument list. - if explicit_caller is not None: - try: - node.defaults[explicit_caller - len(node.args)] - except IndexError: - self.fail('When defining macros or call blocks the ' - 'special "caller" argument must be omitted ' - 'or be given a default.', node.lineno) - else: - args.append(frame.symbols.declare_parameter('caller')) - macro_ref.accesses_caller = True - if 'kwargs' in undeclared and not 'kwargs' in skip_special_params: - args.append(frame.symbols.declare_parameter('kwargs')) - macro_ref.accesses_kwargs = True - if 'varargs' in undeclared and not 'varargs' in skip_special_params: - args.append(frame.symbols.declare_parameter('varargs')) - macro_ref.accesses_varargs = True - - # macros are delayed, they never require output checks - frame.require_output_check = False - frame.symbols.analyze_node(node) - self.writeline('%s(%s):' % (self.func('macro'), ', '.join(args)), node) - self.indent() - - self.buffer(frame) - self.enter_frame(frame) - - self.push_parameter_definitions(frame) - for idx, arg in enumerate(node.args): - ref = frame.symbols.ref(arg.name) - self.writeline('if %s is missing:' % ref) - self.indent() - try: - default = node.defaults[idx - len(node.args)] - except IndexError: - self.writeline('%s = undefined(%r, name=%r)' % ( - ref, - 'parameter %r was not provided' % arg.name, - arg.name)) - else: - self.writeline('%s = ' % ref) - self.visit(default, frame) - self.mark_parameter_stored(ref) - self.outdent() - self.pop_parameter_definitions() - - self.blockvisit(node.body, frame) - self.return_buffer_contents(frame, force_unescaped=True) - self.leave_frame(frame, with_python_scope=True) - self.outdent() - - return frame, macro_ref - - def macro_def(self, macro_ref, frame): - """Dump the macro definition for the def created by macro_body.""" - arg_tuple = ', '.join(repr(x.name) for x in macro_ref.node.args) - name = getattr(macro_ref.node, 'name', None) - if len(macro_ref.node.args) == 1: - arg_tuple += ',' - self.write('Macro(environment, macro, %r, (%s), %r, %r, %r, ' - 'context.eval_ctx.autoescape)' % - (name, arg_tuple, macro_ref.accesses_kwargs, - macro_ref.accesses_varargs, macro_ref.accesses_caller)) - - def position(self, node): - """Return a human readable position for the node.""" - rv = 'line %d' % node.lineno - if self.name is not None: - rv += ' in ' + repr(self.name) - return rv - - def dump_local_context(self, frame): - return '{%s}' % ', '.join( - '%r: %s' % (name, target) for name, target - in iteritems(frame.symbols.dump_stores())) - - def write_commons(self): - """Writes a common preamble that is used by root and block functions. - Primarily this sets up common local helpers and enforces a generator - through a dead branch. - """ - self.writeline('resolve = context.resolve_or_missing') - self.writeline('undefined = environment.undefined') - self.writeline('if 0: yield None') - - def push_parameter_definitions(self, frame): - """Pushes all parameter targets from the given frame into a local - stack that permits tracking of yet to be assigned parameters. In - particular this enables the optimization from `visit_Name` to skip - undefined expressions for parameters in macros as macros can reference - otherwise unbound parameters. - """ - self._param_def_block.append(frame.symbols.dump_param_targets()) - - def pop_parameter_definitions(self): - """Pops the current parameter definitions set.""" - self._param_def_block.pop() - - def mark_parameter_stored(self, target): - """Marks a parameter in the current parameter definitions as stored. - This will skip the enforced undefined checks. - """ - if self._param_def_block: - self._param_def_block[-1].discard(target) - - def push_context_reference(self, target): - self._context_reference_stack.append(target) - - def pop_context_reference(self): - self._context_reference_stack.pop() - - def get_context_ref(self): - return self._context_reference_stack[-1] - - def get_resolve_func(self): - target = self._context_reference_stack[-1] - if target == 'context': - return 'resolve' - return '%s.resolve' % target - - def derive_context(self, frame): - return '%s.derived(%s)' % ( - self.get_context_ref(), - self.dump_local_context(frame), - ) - - def parameter_is_undeclared(self, target): - """Checks if a given target is an undeclared parameter.""" - if not self._param_def_block: - return False - return target in self._param_def_block[-1] - - def push_assign_tracking(self): - """Pushes a new layer for assignment tracking.""" - self._assign_stack.append(set()) - - def pop_assign_tracking(self, frame): - """Pops the topmost level for assignment tracking and updates the - context variables if necessary. - """ - vars = self._assign_stack.pop() - if not frame.toplevel or not vars: - return - public_names = [x for x in vars if x[:1] != '_'] - if len(vars) == 1: - name = next(iter(vars)) - ref = frame.symbols.ref(name) - self.writeline('context.vars[%r] = %s' % (name, ref)) - else: - self.writeline('context.vars.update({') - for idx, name in enumerate(vars): - if idx: - self.write(', ') - ref = frame.symbols.ref(name) - self.write('%r: %s' % (name, ref)) - self.write('})') - if public_names: - if len(public_names) == 1: - self.writeline('context.exported_vars.add(%r)' % - public_names[0]) - else: - self.writeline('context.exported_vars.update((%s))' % - ', '.join(imap(repr, public_names))) - - # -- Statement Visitors - - def visit_Template(self, node, frame=None): - assert frame is None, 'no root frame allowed' - eval_ctx = EvalContext(self.environment, self.name) - - from jinja2.runtime import __all__ as exported - self.writeline('from __future__ import %s' % ', '.join(code_features)) - self.writeline('from jinja2.runtime import ' + ', '.join(exported)) - - if self.environment.is_async: - self.writeline('from jinja2.asyncsupport import auto_await, ' - 'auto_aiter, make_async_loop_context') - - # if we want a deferred initialization we cannot move the - # environment into a local name - envenv = not self.defer_init and ', environment=environment' or '' - - # do we have an extends tag at all? If not, we can save some - # overhead by just not processing any inheritance code. - have_extends = node.find(nodes.Extends) is not None - - # find all blocks - for block in node.find_all(nodes.Block): - if block.name in self.blocks: - self.fail('block %r defined twice' % block.name, block.lineno) - self.blocks[block.name] = block - - # find all imports and import them - for import_ in node.find_all(nodes.ImportedName): - if import_.importname not in self.import_aliases: - imp = import_.importname - self.import_aliases[imp] = alias = self.temporary_identifier() - if '.' in imp: - module, obj = imp.rsplit('.', 1) - self.writeline('from %s import %s as %s' % - (module, obj, alias)) - else: - self.writeline('import %s as %s' % (imp, alias)) - - # add the load name - self.writeline('name = %r' % self.name) - - # generate the root render function. - self.writeline('%s(context, missing=missing%s):' % - (self.func('root'), envenv), extra=1) - self.indent() - self.write_commons() - - # process the root - frame = Frame(eval_ctx) - if 'self' in find_undeclared(node.body, ('self',)): - ref = frame.symbols.declare_parameter('self') - self.writeline('%s = TemplateReference(context)' % ref) - frame.symbols.analyze_node(node) - frame.toplevel = frame.rootlevel = True - frame.require_output_check = have_extends and not self.has_known_extends - if have_extends: - self.writeline('parent_template = None') - self.enter_frame(frame) - self.pull_dependencies(node.body) - self.blockvisit(node.body, frame) - self.leave_frame(frame, with_python_scope=True) - self.outdent() - - # make sure that the parent root is called. - if have_extends: - if not self.has_known_extends: - self.indent() - self.writeline('if parent_template is not None:') - self.indent() - if supports_yield_from and not self.environment.is_async: - self.writeline('yield from parent_template.' - 'root_render_func(context)') - else: - self.writeline('%sfor event in parent_template.' - 'root_render_func(context):' % - (self.environment.is_async and 'async ' or '')) - self.indent() - self.writeline('yield event') - self.outdent() - self.outdent(1 + (not self.has_known_extends)) - - # at this point we now have the blocks collected and can visit them too. - for name, block in iteritems(self.blocks): - self.writeline('%s(context, missing=missing%s):' % - (self.func('block_' + name), envenv), - block, 1) - self.indent() - self.write_commons() - # It's important that we do not make this frame a child of the - # toplevel template. This would cause a variety of - # interesting issues with identifier tracking. - block_frame = Frame(eval_ctx) - undeclared = find_undeclared(block.body, ('self', 'super')) - if 'self' in undeclared: - ref = block_frame.symbols.declare_parameter('self') - self.writeline('%s = TemplateReference(context)' % ref) - if 'super' in undeclared: - ref = block_frame.symbols.declare_parameter('super') - self.writeline('%s = context.super(%r, ' - 'block_%s)' % (ref, name, name)) - block_frame.symbols.analyze_node(block) - block_frame.block = name - self.enter_frame(block_frame) - self.pull_dependencies(block.body) - self.blockvisit(block.body, block_frame) - self.leave_frame(block_frame, with_python_scope=True) - self.outdent() - - self.writeline('blocks = {%s}' % ', '.join('%r: block_%s' % (x, x) - for x in self.blocks), - extra=1) - - # add a function that returns the debug info - self.writeline('debug_info = %r' % '&'.join('%s=%s' % x for x - in self.debug_info)) - - def visit_Block(self, node, frame): - """Call a block and register it for the template.""" - level = 0 - if frame.toplevel: - # if we know that we are a child template, there is no need to - # check if we are one - if self.has_known_extends: - return - if self.extends_so_far > 0: - self.writeline('if parent_template is None:') - self.indent() - level += 1 - - if node.scoped: - context = self.derive_context(frame) - else: - context = self.get_context_ref() - - if supports_yield_from and not self.environment.is_async and \ - frame.buffer is None: - self.writeline('yield from context.blocks[%r][0](%s)' % ( - node.name, context), node) - else: - loop = self.environment.is_async and 'async for' or 'for' - self.writeline('%s event in context.blocks[%r][0](%s):' % ( - loop, node.name, context), node) - self.indent() - self.simple_write('event', frame) - self.outdent() - - self.outdent(level) - - def visit_Extends(self, node, frame): - """Calls the extender.""" - if not frame.toplevel: - self.fail('cannot use extend from a non top-level scope', - node.lineno) - - # if the number of extends statements in general is zero so - # far, we don't have to add a check if something extended - # the template before this one. - if self.extends_so_far > 0: - - # if we have a known extends we just add a template runtime - # error into the generated code. We could catch that at compile - # time too, but i welcome it not to confuse users by throwing the - # same error at different times just "because we can". - if not self.has_known_extends: - self.writeline('if parent_template is not None:') - self.indent() - self.writeline('raise TemplateRuntimeError(%r)' % - 'extended multiple times') - - # if we have a known extends already we don't need that code here - # as we know that the template execution will end here. - if self.has_known_extends: - raise CompilerExit() - else: - self.outdent() - - self.writeline('parent_template = environment.get_template(', node) - self.visit(node.template, frame) - self.write(', %r)' % self.name) - self.writeline('for name, parent_block in parent_template.' - 'blocks.%s():' % dict_item_iter) - self.indent() - self.writeline('context.blocks.setdefault(name, []).' - 'append(parent_block)') - self.outdent() - - # if this extends statement was in the root level we can take - # advantage of that information and simplify the generated code - # in the top level from this point onwards - if frame.rootlevel: - self.has_known_extends = True - - # and now we have one more - self.extends_so_far += 1 - - def visit_Include(self, node, frame): - """Handles includes.""" - if node.ignore_missing: - self.writeline('try:') - self.indent() - - func_name = 'get_or_select_template' - if isinstance(node.template, nodes.Const): - if isinstance(node.template.value, string_types): - func_name = 'get_template' - elif isinstance(node.template.value, (tuple, list)): - func_name = 'select_template' - elif isinstance(node.template, (nodes.Tuple, nodes.List)): - func_name = 'select_template' - - self.writeline('template = environment.%s(' % func_name, node) - self.visit(node.template, frame) - self.write(', %r)' % self.name) - if node.ignore_missing: - self.outdent() - self.writeline('except TemplateNotFound:') - self.indent() - self.writeline('pass') - self.outdent() - self.writeline('else:') - self.indent() - - skip_event_yield = False - if node.with_context: - loop = self.environment.is_async and 'async for' or 'for' - self.writeline('%s event in template.root_render_func(' - 'template.new_context(context.get_all(), True, ' - '%s)):' % (loop, self.dump_local_context(frame))) - elif self.environment.is_async: - self.writeline('for event in (await ' - 'template._get_default_module_async())' - '._body_stream:') - else: - if supports_yield_from: - self.writeline('yield from template._get_default_module()' - '._body_stream') - skip_event_yield = True - else: - self.writeline('for event in template._get_default_module()' - '._body_stream:') - - if not skip_event_yield: - self.indent() - self.simple_write('event', frame) - self.outdent() - - if node.ignore_missing: - self.outdent() - - def visit_Import(self, node, frame): - """Visit regular imports.""" - self.writeline('%s = ' % frame.symbols.ref(node.target), node) - if frame.toplevel: - self.write('context.vars[%r] = ' % node.target) - if self.environment.is_async: - self.write('await ') - self.write('environment.get_template(') - self.visit(node.template, frame) - self.write(', %r).' % self.name) - if node.with_context: - self.write('make_module%s(context.get_all(), True, %s)' - % (self.environment.is_async and '_async' or '', - self.dump_local_context(frame))) - elif self.environment.is_async: - self.write('_get_default_module_async()') - else: - self.write('_get_default_module()') - if frame.toplevel and not node.target.startswith('_'): - self.writeline('context.exported_vars.discard(%r)' % node.target) - - def visit_FromImport(self, node, frame): - """Visit named imports.""" - self.newline(node) - self.write('included_template = %senvironment.get_template(' - % (self.environment.is_async and 'await ' or '')) - self.visit(node.template, frame) - self.write(', %r).' % self.name) - if node.with_context: - self.write('make_module%s(context.get_all(), True, %s)' - % (self.environment.is_async and '_async' or '', - self.dump_local_context(frame))) - elif self.environment.is_async: - self.write('_get_default_module_async()') - else: - self.write('_get_default_module()') - - var_names = [] - discarded_names = [] - for name in node.names: - if isinstance(name, tuple): - name, alias = name - else: - alias = name - self.writeline('%s = getattr(included_template, ' - '%r, missing)' % (frame.symbols.ref(alias), name)) - self.writeline('if %s is missing:' % frame.symbols.ref(alias)) - self.indent() - self.writeline('%s = undefined(%r %% ' - 'included_template.__name__, ' - 'name=%r)' % - (frame.symbols.ref(alias), - 'the template %%r (imported on %s) does ' - 'not export the requested name %s' % ( - self.position(node), - repr(name) - ), name)) - self.outdent() - if frame.toplevel: - var_names.append(alias) - if not alias.startswith('_'): - discarded_names.append(alias) - - if var_names: - if len(var_names) == 1: - name = var_names[0] - self.writeline('context.vars[%r] = %s' % - (name, frame.symbols.ref(name))) - else: - self.writeline('context.vars.update({%s})' % ', '.join( - '%r: %s' % (name, frame.symbols.ref(name)) for name in var_names - )) - if discarded_names: - if len(discarded_names) == 1: - self.writeline('context.exported_vars.discard(%r)' % - discarded_names[0]) - else: - self.writeline('context.exported_vars.difference_' - 'update((%s))' % ', '.join(imap(repr, discarded_names))) - - def visit_For(self, node, frame): - loop_frame = frame.inner() - test_frame = frame.inner() - else_frame = frame.inner() - - # try to figure out if we have an extended loop. An extended loop - # is necessary if the loop is in recursive mode if the special loop - # variable is accessed in the body. - extended_loop = node.recursive or 'loop' in \ - find_undeclared(node.iter_child_nodes( - only=('body',)), ('loop',)) - - loop_ref = None - if extended_loop: - loop_ref = loop_frame.symbols.declare_parameter('loop') - - loop_frame.symbols.analyze_node(node, for_branch='body') - if node.else_: - else_frame.symbols.analyze_node(node, for_branch='else') - - if node.test: - loop_filter_func = self.temporary_identifier() - test_frame.symbols.analyze_node(node, for_branch='test') - self.writeline('%s(fiter):' % self.func(loop_filter_func), node.test) - self.indent() - self.enter_frame(test_frame) - self.writeline(self.environment.is_async and 'async for ' or 'for ') - self.visit(node.target, loop_frame) - self.write(' in ') - self.write(self.environment.is_async and 'auto_aiter(fiter)' or 'fiter') - self.write(':') - self.indent() - self.writeline('if ', node.test) - self.visit(node.test, test_frame) - self.write(':') - self.indent() - self.writeline('yield ') - self.visit(node.target, loop_frame) - self.outdent(3) - self.leave_frame(test_frame, with_python_scope=True) - - # if we don't have an recursive loop we have to find the shadowed - # variables at that point. Because loops can be nested but the loop - # variable is a special one we have to enforce aliasing for it. - if node.recursive: - self.writeline('%s(reciter, loop_render_func, depth=0):' % - self.func('loop'), node) - self.indent() - self.buffer(loop_frame) - - # Use the same buffer for the else frame - else_frame.buffer = loop_frame.buffer - - # make sure the loop variable is a special one and raise a template - # assertion error if a loop tries to write to loop - if extended_loop: - self.writeline('%s = missing' % loop_ref) - - for name in node.find_all(nodes.Name): - if name.ctx == 'store' and name.name == 'loop': - self.fail('Can\'t assign to special loop variable ' - 'in for-loop target', name.lineno) - - if node.else_: - iteration_indicator = self.temporary_identifier() - self.writeline('%s = 1' % iteration_indicator) - - self.writeline(self.environment.is_async and 'async for ' or 'for ', node) - self.visit(node.target, loop_frame) - if extended_loop: - if self.environment.is_async: - self.write(', %s in await make_async_loop_context(' % loop_ref) - else: - self.write(', %s in LoopContext(' % loop_ref) - else: - self.write(' in ') - - if node.test: - self.write('%s(' % loop_filter_func) - if node.recursive: - self.write('reciter') - else: - if self.environment.is_async and not extended_loop: - self.write('auto_aiter(') - self.visit(node.iter, frame) - if self.environment.is_async and not extended_loop: - self.write(')') - if node.test: - self.write(')') - - if node.recursive: - self.write(', undefined, loop_render_func, depth):') - else: - self.write(extended_loop and ', undefined):' or ':') - - self.indent() - self.enter_frame(loop_frame) - - self.blockvisit(node.body, loop_frame) - if node.else_: - self.writeline('%s = 0' % iteration_indicator) - self.outdent() - self.leave_frame(loop_frame, with_python_scope=node.recursive - and not node.else_) - - if node.else_: - self.writeline('if %s:' % iteration_indicator) - self.indent() - self.enter_frame(else_frame) - self.blockvisit(node.else_, else_frame) - self.leave_frame(else_frame) - self.outdent() - - # if the node was recursive we have to return the buffer contents - # and start the iteration code - if node.recursive: - self.return_buffer_contents(loop_frame) - self.outdent() - self.start_write(frame, node) - if self.environment.is_async: - self.write('await ') - self.write('loop(') - if self.environment.is_async: - self.write('auto_aiter(') - self.visit(node.iter, frame) - if self.environment.is_async: - self.write(')') - self.write(', loop)') - self.end_write(frame) - - def visit_If(self, node, frame): - if_frame = frame.soft() - self.writeline('if ', node) - self.visit(node.test, if_frame) - self.write(':') - self.indent() - self.blockvisit(node.body, if_frame) - self.outdent() - for elif_ in node.elif_: - self.writeline('elif ', elif_) - self.visit(elif_.test, if_frame) - self.write(':') - self.indent() - self.blockvisit(elif_.body, if_frame) - self.outdent() - if node.else_: - self.writeline('else:') - self.indent() - self.blockvisit(node.else_, if_frame) - self.outdent() - - def visit_Macro(self, node, frame): - macro_frame, macro_ref = self.macro_body(node, frame) - self.newline() - if frame.toplevel: - if not node.name.startswith('_'): - self.write('context.exported_vars.add(%r)' % node.name) - ref = frame.symbols.ref(node.name) - self.writeline('context.vars[%r] = ' % node.name) - self.write('%s = ' % frame.symbols.ref(node.name)) - self.macro_def(macro_ref, macro_frame) - - def visit_CallBlock(self, node, frame): - call_frame, macro_ref = self.macro_body(node, frame) - self.writeline('caller = ') - self.macro_def(macro_ref, call_frame) - self.start_write(frame, node) - self.visit_Call(node.call, frame, forward_caller=True) - self.end_write(frame) - - def visit_FilterBlock(self, node, frame): - filter_frame = frame.inner() - filter_frame.symbols.analyze_node(node) - self.enter_frame(filter_frame) - self.buffer(filter_frame) - self.blockvisit(node.body, filter_frame) - self.start_write(frame, node) - self.visit_Filter(node.filter, filter_frame) - self.end_write(frame) - self.leave_frame(filter_frame) - - def visit_With(self, node, frame): - with_frame = frame.inner() - with_frame.symbols.analyze_node(node) - self.enter_frame(with_frame) - for idx, (target, expr) in enumerate(izip(node.targets, node.values)): - self.newline() - self.visit(target, with_frame) - self.write(' = ') - self.visit(expr, frame) - self.blockvisit(node.body, with_frame) - self.leave_frame(with_frame) - - def visit_ExprStmt(self, node, frame): - self.newline(node) - self.visit(node.node, frame) - - def visit_Output(self, node, frame): - # if we have a known extends statement, we don't output anything - # if we are in a require_output_check section - if self.has_known_extends and frame.require_output_check: - return - - allow_constant_finalize = True - if self.environment.finalize: - func = self.environment.finalize - if getattr(func, 'contextfunction', False) or \ - getattr(func, 'evalcontextfunction', False): - allow_constant_finalize = False - elif getattr(func, 'environmentfunction', False): - finalize = lambda x: text_type( - self.environment.finalize(self.environment, x)) - else: - finalize = lambda x: text_type(self.environment.finalize(x)) - else: - finalize = text_type - - # if we are inside a frame that requires output checking, we do so - outdent_later = False - if frame.require_output_check: - self.writeline('if parent_template is None:') - self.indent() - outdent_later = True - - # try to evaluate as many chunks as possible into a static - # string at compile time. - body = [] - for child in node.nodes: - try: - if not allow_constant_finalize: - raise nodes.Impossible() - const = child.as_const(frame.eval_ctx) - except nodes.Impossible: - body.append(child) - continue - # the frame can't be volatile here, becaus otherwise the - # as_const() function would raise an Impossible exception - # at that point. - try: - if frame.eval_ctx.autoescape: - if hasattr(const, '__html__'): - const = const.__html__() - else: - const = escape(const) - const = finalize(const) - except Exception: - # if something goes wrong here we evaluate the node - # at runtime for easier debugging - body.append(child) - continue - if body and isinstance(body[-1], list): - body[-1].append(const) - else: - body.append([const]) - - # if we have less than 3 nodes or a buffer we yield or extend/append - if len(body) < 3 or frame.buffer is not None: - if frame.buffer is not None: - # for one item we append, for more we extend - if len(body) == 1: - self.writeline('%s.append(' % frame.buffer) - else: - self.writeline('%s.extend((' % frame.buffer) - self.indent() - for item in body: - if isinstance(item, list): - val = repr(concat(item)) - if frame.buffer is None: - self.writeline('yield ' + val) - else: - self.writeline(val + ',') - else: - if frame.buffer is None: - self.writeline('yield ', item) - else: - self.newline(item) - close = 1 - if frame.eval_ctx.volatile: - self.write('(escape if context.eval_ctx.autoescape' - ' else to_string)(') - elif frame.eval_ctx.autoescape: - self.write('escape(') - else: - self.write('to_string(') - if self.environment.finalize is not None: - self.write('environment.finalize(') - if getattr(self.environment.finalize, - "contextfunction", False): - self.write('context, ') - close += 1 - self.visit(item, frame) - self.write(')' * close) - if frame.buffer is not None: - self.write(',') - if frame.buffer is not None: - # close the open parentheses - self.outdent() - self.writeline(len(body) == 1 and ')' or '))') - - # otherwise we create a format string as this is faster in that case - else: - format = [] - arguments = [] - for item in body: - if isinstance(item, list): - format.append(concat(item).replace('%', '%%')) - else: - format.append('%s') - arguments.append(item) - self.writeline('yield ') - self.write(repr(concat(format)) + ' % (') - self.indent() - for argument in arguments: - self.newline(argument) - close = 0 - if frame.eval_ctx.volatile: - self.write('(escape if context.eval_ctx.autoescape else' - ' to_string)(') - close += 1 - elif frame.eval_ctx.autoescape: - self.write('escape(') - close += 1 - if self.environment.finalize is not None: - self.write('environment.finalize(') - if getattr(self.environment.finalize, - 'contextfunction', False): - self.write('context, ') - elif getattr(self.environment.finalize, - 'evalcontextfunction', False): - self.write('context.eval_ctx, ') - elif getattr(self.environment.finalize, - 'environmentfunction', False): - self.write('environment, ') - close += 1 - self.visit(argument, frame) - self.write(')' * close + ', ') - self.outdent() - self.writeline(')') - - if outdent_later: - self.outdent() - - def visit_Assign(self, node, frame): - self.push_assign_tracking() - self.newline(node) - self.visit(node.target, frame) - self.write(' = ') - self.visit(node.node, frame) - self.pop_assign_tracking(frame) - - def visit_AssignBlock(self, node, frame): - self.push_assign_tracking() - block_frame = frame.inner() - # This is a special case. Since a set block always captures we - # will disable output checks. This way one can use set blocks - # toplevel even in extended templates. - block_frame.require_output_check = False - block_frame.symbols.analyze_node(node) - self.enter_frame(block_frame) - self.buffer(block_frame) - self.blockvisit(node.body, block_frame) - self.newline(node) - self.visit(node.target, frame) - self.write(' = (Markup if context.eval_ctx.autoescape ' - 'else identity)(') - if node.filter is not None: - self.visit_Filter(node.filter, block_frame) - else: - self.write('concat(%s)' % block_frame.buffer) - self.write(')') - self.pop_assign_tracking(frame) - self.leave_frame(block_frame) - - # -- Expression Visitors - - def visit_Name(self, node, frame): - if node.ctx == 'store' and frame.toplevel: - if self._assign_stack: - self._assign_stack[-1].add(node.name) - ref = frame.symbols.ref(node.name) - - # If we are looking up a variable we might have to deal with the - # case where it's undefined. We can skip that case if the load - # instruction indicates a parameter which are always defined. - if node.ctx == 'load': - load = frame.symbols.find_load(ref) - if not (load is not None and load[0] == VAR_LOAD_PARAMETER and \ - not self.parameter_is_undeclared(ref)): - self.write('(undefined(name=%r) if %s is missing else %s)' % - (node.name, ref, ref)) - return - - self.write(ref) - - def visit_NSRef(self, node, frame): - # NSRefs can only be used to store values; since they use the normal - # `foo.bar` notation they will be parsed as a normal attribute access - # when used anywhere but in a `set` context - ref = frame.symbols.ref(node.name) - self.writeline('if not isinstance(%s, Namespace):' % ref) - self.indent() - self.writeline('raise TemplateRuntimeError(%r)' % - 'cannot assign attribute on non-namespace object') - self.outdent() - self.writeline('%s[%r]' % (ref, node.attr)) - - def visit_Const(self, node, frame): - val = node.as_const(frame.eval_ctx) - if isinstance(val, float): - self.write(str(val)) - else: - self.write(repr(val)) - - def visit_TemplateData(self, node, frame): - try: - self.write(repr(node.as_const(frame.eval_ctx))) - except nodes.Impossible: - self.write('(Markup if context.eval_ctx.autoescape else identity)(%r)' - % node.data) - - def visit_Tuple(self, node, frame): - self.write('(') - idx = -1 - for idx, item in enumerate(node.items): - if idx: - self.write(', ') - self.visit(item, frame) - self.write(idx == 0 and ',)' or ')') - - def visit_List(self, node, frame): - self.write('[') - for idx, item in enumerate(node.items): - if idx: - self.write(', ') - self.visit(item, frame) - self.write(']') - - def visit_Dict(self, node, frame): - self.write('{') - for idx, item in enumerate(node.items): - if idx: - self.write(', ') - self.visit(item.key, frame) - self.write(': ') - self.visit(item.value, frame) - self.write('}') - - def binop(operator, interceptable=True): - @optimizeconst - def visitor(self, node, frame): - if self.environment.sandboxed and \ - operator in self.environment.intercepted_binops: - self.write('environment.call_binop(context, %r, ' % operator) - self.visit(node.left, frame) - self.write(', ') - self.visit(node.right, frame) - else: - self.write('(') - self.visit(node.left, frame) - self.write(' %s ' % operator) - self.visit(node.right, frame) - self.write(')') - return visitor - - def uaop(operator, interceptable=True): - @optimizeconst - def visitor(self, node, frame): - if self.environment.sandboxed and \ - operator in self.environment.intercepted_unops: - self.write('environment.call_unop(context, %r, ' % operator) - self.visit(node.node, frame) - else: - self.write('(' + operator) - self.visit(node.node, frame) - self.write(')') - return visitor - - visit_Add = binop('+') - visit_Sub = binop('-') - visit_Mul = binop('*') - visit_Div = binop('/') - visit_FloorDiv = binop('//') - visit_Pow = binop('**') - visit_Mod = binop('%') - visit_And = binop('and', interceptable=False) - visit_Or = binop('or', interceptable=False) - visit_Pos = uaop('+') - visit_Neg = uaop('-') - visit_Not = uaop('not ', interceptable=False) - del binop, uaop - - @optimizeconst - def visit_Concat(self, node, frame): - if frame.eval_ctx.volatile: - func_name = '(context.eval_ctx.volatile and' \ - ' markup_join or unicode_join)' - elif frame.eval_ctx.autoescape: - func_name = 'markup_join' - else: - func_name = 'unicode_join' - self.write('%s((' % func_name) - for arg in node.nodes: - self.visit(arg, frame) - self.write(', ') - self.write('))') - - @optimizeconst - def visit_Compare(self, node, frame): - self.visit(node.expr, frame) - for op in node.ops: - self.visit(op, frame) - - def visit_Operand(self, node, frame): - self.write(' %s ' % operators[node.op]) - self.visit(node.expr, frame) - - @optimizeconst - def visit_Getattr(self, node, frame): - self.write('environment.getattr(') - self.visit(node.node, frame) - self.write(', %r)' % node.attr) - - @optimizeconst - def visit_Getitem(self, node, frame): - # slices bypass the environment getitem method. - if isinstance(node.arg, nodes.Slice): - self.visit(node.node, frame) - self.write('[') - self.visit(node.arg, frame) - self.write(']') - else: - self.write('environment.getitem(') - self.visit(node.node, frame) - self.write(', ') - self.visit(node.arg, frame) - self.write(')') - - def visit_Slice(self, node, frame): - if node.start is not None: - self.visit(node.start, frame) - self.write(':') - if node.stop is not None: - self.visit(node.stop, frame) - if node.step is not None: - self.write(':') - self.visit(node.step, frame) - - @optimizeconst - def visit_Filter(self, node, frame): - if self.environment.is_async: - self.write('await auto_await(') - self.write(self.filters[node.name] + '(') - func = self.environment.filters.get(node.name) - if func is None: - self.fail('no filter named %r' % node.name, node.lineno) - if getattr(func, 'contextfilter', False): - self.write('context, ') - elif getattr(func, 'evalcontextfilter', False): - self.write('context.eval_ctx, ') - elif getattr(func, 'environmentfilter', False): - self.write('environment, ') - - # if the filter node is None we are inside a filter block - # and want to write to the current buffer - if node.node is not None: - self.visit(node.node, frame) - elif frame.eval_ctx.volatile: - self.write('(context.eval_ctx.autoescape and' - ' Markup(concat(%s)) or concat(%s))' % - (frame.buffer, frame.buffer)) - elif frame.eval_ctx.autoescape: - self.write('Markup(concat(%s))' % frame.buffer) - else: - self.write('concat(%s)' % frame.buffer) - self.signature(node, frame) - self.write(')') - if self.environment.is_async: - self.write(')') - - @optimizeconst - def visit_Test(self, node, frame): - self.write(self.tests[node.name] + '(') - if node.name not in self.environment.tests: - self.fail('no test named %r' % node.name, node.lineno) - self.visit(node.node, frame) - self.signature(node, frame) - self.write(')') - - @optimizeconst - def visit_CondExpr(self, node, frame): - def write_expr2(): - if node.expr2 is not None: - return self.visit(node.expr2, frame) - self.write('undefined(%r)' % ('the inline if-' - 'expression on %s evaluated to false and ' - 'no else section was defined.' % self.position(node))) - - self.write('(') - self.visit(node.expr1, frame) - self.write(' if ') - self.visit(node.test, frame) - self.write(' else ') - write_expr2() - self.write(')') - - @optimizeconst - def visit_Call(self, node, frame, forward_caller=False): - if self.environment.is_async: - self.write('await auto_await(') - if self.environment.sandboxed: - self.write('environment.call(context, ') - else: - self.write('context.call(') - self.visit(node.node, frame) - extra_kwargs = forward_caller and {'caller': 'caller'} or None - self.signature(node, frame, extra_kwargs) - self.write(')') - if self.environment.is_async: - self.write(')') - - def visit_Keyword(self, node, frame): - self.write(node.key + '=') - self.visit(node.value, frame) - - # -- Unused nodes for extensions - - def visit_MarkSafe(self, node, frame): - self.write('Markup(') - self.visit(node.expr, frame) - self.write(')') - - def visit_MarkSafeIfAutoescape(self, node, frame): - self.write('(context.eval_ctx.autoescape and Markup or identity)(') - self.visit(node.expr, frame) - self.write(')') - - def visit_EnvironmentAttribute(self, node, frame): - self.write('environment.' + node.name) - - def visit_ExtensionAttribute(self, node, frame): - self.write('environment.extensions[%r].%s' % (node.identifier, node.name)) - - def visit_ImportedName(self, node, frame): - self.write(self.import_aliases[node.importname]) - - def visit_InternalName(self, node, frame): - self.write(node.name) - - def visit_ContextReference(self, node, frame): - self.write('context') - - def visit_Continue(self, node, frame): - self.writeline('continue', node) - - def visit_Break(self, node, frame): - self.writeline('break', node) - - def visit_Scope(self, node, frame): - scope_frame = frame.inner() - scope_frame.symbols.analyze_node(node) - self.enter_frame(scope_frame) - self.blockvisit(node.body, scope_frame) - self.leave_frame(scope_frame) - - def visit_OverlayScope(self, node, frame): - ctx = self.temporary_identifier() - self.writeline('%s = %s' % (ctx, self.derive_context(frame))) - self.writeline('%s.vars = ' % ctx) - self.visit(node.context, frame) - self.push_context_reference(ctx) - - scope_frame = frame.inner(isolated=True) - scope_frame.symbols.analyze_node(node) - self.enter_frame(scope_frame) - self.blockvisit(node.body, scope_frame) - self.leave_frame(scope_frame) - self.pop_context_reference() - - def visit_EvalContextModifier(self, node, frame): - for keyword in node.options: - self.writeline('context.eval_ctx.%s = ' % keyword.key) - self.visit(keyword.value, frame) - try: - val = keyword.value.as_const(frame.eval_ctx) - except nodes.Impossible: - frame.eval_ctx.volatile = True - else: - setattr(frame.eval_ctx, keyword.key, val) - - def visit_ScopedEvalContextModifier(self, node, frame): - old_ctx_name = self.temporary_identifier() - saved_ctx = frame.eval_ctx.save() - self.writeline('%s = context.eval_ctx.save()' % old_ctx_name) - self.visit_EvalContextModifier(node, frame) - for child in node.body: - self.visit(child, frame) - frame.eval_ctx.revert(saved_ctx) - self.writeline('context.eval_ctx.revert(%s)' % old_ctx_name) diff --git a/python/jinja2/constants.py b/python/jinja2/constants.py deleted file mode 100644 index 11efd1e..0000000 --- a/python/jinja2/constants.py +++ /dev/null @@ -1,32 +0,0 @@ -# -*- coding: utf-8 -*- -""" - jinja.constants - ~~~~~~~~~~~~~~~ - - Various constants. - - :copyright: (c) 2017 by the Jinja Team. - :license: BSD, see LICENSE for more details. -""" - - -#: list of lorem ipsum words used by the lipsum() helper function -LOREM_IPSUM_WORDS = u'''\ -a ac accumsan ad adipiscing aenean aliquam aliquet amet ante aptent arcu at -auctor augue bibendum blandit class commodo condimentum congue consectetuer -consequat conubia convallis cras cubilia cum curabitur curae cursus dapibus -diam dictum dictumst dignissim dis dolor donec dui duis egestas eget eleifend -elementum elit enim erat eros est et etiam eu euismod facilisi facilisis fames -faucibus felis fermentum feugiat fringilla fusce gravida habitant habitasse hac -hendrerit hymenaeos iaculis id imperdiet in inceptos integer interdum ipsum -justo lacinia lacus laoreet lectus leo libero ligula litora lobortis lorem -luctus maecenas magna magnis malesuada massa mattis mauris metus mi molestie -mollis montes morbi mus nam nascetur natoque nec neque netus nibh nisi nisl non -nonummy nostra nulla nullam nunc odio orci ornare parturient pede pellentesque -penatibus per pharetra phasellus placerat platea porta porttitor posuere -potenti praesent pretium primis proin pulvinar purus quam quis quisque rhoncus -ridiculus risus rutrum sagittis sapien scelerisque sed sem semper senectus sit -sociis sociosqu sodales sollicitudin suscipit suspendisse taciti tellus tempor -tempus tincidunt torquent tortor tristique turpis ullamcorper ultrices -ultricies urna ut varius vehicula vel velit venenatis vestibulum vitae vivamus -viverra volutpat vulputate''' diff --git a/python/jinja2/debug.py b/python/jinja2/debug.py deleted file mode 100644 index b61139f..0000000 --- a/python/jinja2/debug.py +++ /dev/null @@ -1,372 +0,0 @@ -# -*- coding: utf-8 -*- -""" - jinja2.debug - ~~~~~~~~~~~~ - - Implements the debug interface for Jinja. This module does some pretty - ugly stuff with the Python traceback system in order to achieve tracebacks - with correct line numbers, locals and contents. - - :copyright: (c) 2017 by the Jinja Team. - :license: BSD, see LICENSE for more details. -""" -import sys -import traceback -from types import TracebackType, CodeType -from jinja2.utils import missing, internal_code -from jinja2.exceptions import TemplateSyntaxError -from jinja2._compat import iteritems, reraise, PY2 - -# on pypy we can take advantage of transparent proxies -try: - from __pypy__ import tproxy -except ImportError: - tproxy = None - - -# how does the raise helper look like? -try: - exec("raise TypeError, 'foo'") -except SyntaxError: - raise_helper = 'raise __jinja_exception__[1]' -except TypeError: - raise_helper = 'raise __jinja_exception__[0], __jinja_exception__[1]' - - -class TracebackFrameProxy(object): - """Proxies a traceback frame.""" - - def __init__(self, tb): - self.tb = tb - self._tb_next = None - - @property - def tb_next(self): - return self._tb_next - - def set_next(self, next): - if tb_set_next is not None: - try: - tb_set_next(self.tb, next and next.tb or None) - except Exception: - # this function can fail due to all the hackery it does - # on various python implementations. We just catch errors - # down and ignore them if necessary. - pass - self._tb_next = next - - @property - def is_jinja_frame(self): - return '__jinja_template__' in self.tb.tb_frame.f_globals - - def __getattr__(self, name): - return getattr(self.tb, name) - - -def make_frame_proxy(frame): - proxy = TracebackFrameProxy(frame) - if tproxy is None: - return proxy - def operation_handler(operation, *args, **kwargs): - if operation in ('__getattribute__', '__getattr__'): - return getattr(proxy, args[0]) - elif operation == '__setattr__': - proxy.__setattr__(*args, **kwargs) - else: - return getattr(proxy, operation)(*args, **kwargs) - return tproxy(TracebackType, operation_handler) - - -class ProcessedTraceback(object): - """Holds a Jinja preprocessed traceback for printing or reraising.""" - - def __init__(self, exc_type, exc_value, frames): - assert frames, 'no frames for this traceback?' - self.exc_type = exc_type - self.exc_value = exc_value - self.frames = frames - - # newly concatenate the frames (which are proxies) - prev_tb = None - for tb in self.frames: - if prev_tb is not None: - prev_tb.set_next(tb) - prev_tb = tb - prev_tb.set_next(None) - - def render_as_text(self, limit=None): - """Return a string with the traceback.""" - lines = traceback.format_exception(self.exc_type, self.exc_value, - self.frames[0], limit=limit) - return ''.join(lines).rstrip() - - def render_as_html(self, full=False): - """Return a unicode string with the traceback as rendered HTML.""" - from jinja2.debugrenderer import render_traceback - return u'%s\n\n<!--\n%s\n-->' % ( - render_traceback(self, full=full), - self.render_as_text().decode('utf-8', 'replace') - ) - - @property - def is_template_syntax_error(self): - """`True` if this is a template syntax error.""" - return isinstance(self.exc_value, TemplateSyntaxError) - - @property - def exc_info(self): - """Exception info tuple with a proxy around the frame objects.""" - return self.exc_type, self.exc_value, self.frames[0] - - @property - def standard_exc_info(self): - """Standard python exc_info for re-raising""" - tb = self.frames[0] - # the frame will be an actual traceback (or transparent proxy) if - # we are on pypy or a python implementation with support for tproxy - if type(tb) is not TracebackType: - tb = tb.tb - return self.exc_type, self.exc_value, tb - - -def make_traceback(exc_info, source_hint=None): - """Creates a processed traceback object from the exc_info.""" - exc_type, exc_value, tb = exc_info - if isinstance(exc_value, TemplateSyntaxError): - exc_info = translate_syntax_error(exc_value, source_hint) - initial_skip = 0 - else: - initial_skip = 1 - return translate_exception(exc_info, initial_skip) - - -def translate_syntax_error(error, source=None): - """Rewrites a syntax error to please traceback systems.""" - error.source = source - error.translated = True - exc_info = (error.__class__, error, None) - filename = error.filename - if filename is None: - filename = '<unknown>' - return fake_exc_info(exc_info, filename, error.lineno) - - -def translate_exception(exc_info, initial_skip=0): - """If passed an exc_info it will automatically rewrite the exceptions - all the way down to the correct line numbers and frames. - """ - tb = exc_info[2] - frames = [] - - # skip some internal frames if wanted - for x in range(initial_skip): - if tb is not None: - tb = tb.tb_next - initial_tb = tb - - while tb is not None: - # skip frames decorated with @internalcode. These are internal - # calls we can't avoid and that are useless in template debugging - # output. - if tb.tb_frame.f_code in internal_code: - tb = tb.tb_next - continue - - # save a reference to the next frame if we override the current - # one with a faked one. - next = tb.tb_next - - # fake template exceptions - template = tb.tb_frame.f_globals.get('__jinja_template__') - if template is not None: - lineno = template.get_corresponding_lineno(tb.tb_lineno) - tb = fake_exc_info(exc_info[:2] + (tb,), template.filename, - lineno)[2] - - frames.append(make_frame_proxy(tb)) - tb = next - - # if we don't have any exceptions in the frames left, we have to - # reraise it unchanged. - # XXX: can we backup here? when could this happen? - if not frames: - reraise(exc_info[0], exc_info[1], exc_info[2]) - - return ProcessedTraceback(exc_info[0], exc_info[1], frames) - - -def get_jinja_locals(real_locals): - ctx = real_locals.get('context') - if ctx: - locals = ctx.get_all().copy() - else: - locals = {} - - local_overrides = {} - - for name, value in iteritems(real_locals): - if not name.startswith('l_') or value is missing: - continue - try: - _, depth, name = name.split('_', 2) - depth = int(depth) - except ValueError: - continue - cur_depth = local_overrides.get(name, (-1,))[0] - if cur_depth < depth: - local_overrides[name] = (depth, value) - - for name, (_, value) in iteritems(local_overrides): - if value is missing: - locals.pop(name, None) - else: - locals[name] = value - - return locals - - -def fake_exc_info(exc_info, filename, lineno): - """Helper for `translate_exception`.""" - exc_type, exc_value, tb = exc_info - - # figure the real context out - if tb is not None: - locals = get_jinja_locals(tb.tb_frame.f_locals) - - # if there is a local called __jinja_exception__, we get - # rid of it to not break the debug functionality. - locals.pop('__jinja_exception__', None) - else: - locals = {} - - # assamble fake globals we need - globals = { - '__name__': filename, - '__file__': filename, - '__jinja_exception__': exc_info[:2], - - # we don't want to keep the reference to the template around - # to not cause circular dependencies, but we mark it as Jinja - # frame for the ProcessedTraceback - '__jinja_template__': None - } - - # and fake the exception - code = compile('\n' * (lineno - 1) + raise_helper, filename, 'exec') - - # if it's possible, change the name of the code. This won't work - # on some python environments such as google appengine - try: - if tb is None: - location = 'template' - else: - function = tb.tb_frame.f_code.co_name - if function == 'root': - location = 'top-level template code' - elif function.startswith('block_'): - location = 'block "%s"' % function[6:] - else: - location = 'template' - - if PY2: - code = CodeType(0, code.co_nlocals, code.co_stacksize, - code.co_flags, code.co_code, code.co_consts, - code.co_names, code.co_varnames, filename, - location, code.co_firstlineno, - code.co_lnotab, (), ()) - else: - code = CodeType(0, code.co_kwonlyargcount, - code.co_nlocals, code.co_stacksize, - code.co_flags, code.co_code, code.co_consts, - code.co_names, code.co_varnames, filename, - location, code.co_firstlineno, - code.co_lnotab, (), ()) - except Exception as e: - pass - - # execute the code and catch the new traceback - try: - exec(code, globals, locals) - except: - exc_info = sys.exc_info() - new_tb = exc_info[2].tb_next - - # return without this frame - return exc_info[:2] + (new_tb,) - - -def _init_ugly_crap(): - """This function implements a few ugly things so that we can patch the - traceback objects. The function returned allows resetting `tb_next` on - any python traceback object. Do not attempt to use this on non cpython - interpreters - """ - import ctypes - from types import TracebackType - - if PY2: - # figure out size of _Py_ssize_t for Python 2: - if hasattr(ctypes.pythonapi, 'Py_InitModule4_64'): - _Py_ssize_t = ctypes.c_int64 - else: - _Py_ssize_t = ctypes.c_int - else: - # platform ssize_t on Python 3 - _Py_ssize_t = ctypes.c_ssize_t - - # regular python - class _PyObject(ctypes.Structure): - pass - _PyObject._fields_ = [ - ('ob_refcnt', _Py_ssize_t), - ('ob_type', ctypes.POINTER(_PyObject)) - ] - - # python with trace - if hasattr(sys, 'getobjects'): - class _PyObject(ctypes.Structure): - pass - _PyObject._fields_ = [ - ('_ob_next', ctypes.POINTER(_PyObject)), - ('_ob_prev', ctypes.POINTER(_PyObject)), - ('ob_refcnt', _Py_ssize_t), - ('ob_type', ctypes.POINTER(_PyObject)) - ] - - class _Traceback(_PyObject): - pass - _Traceback._fields_ = [ - ('tb_next', ctypes.POINTER(_Traceback)), - ('tb_frame', ctypes.POINTER(_PyObject)), - ('tb_lasti', ctypes.c_int), - ('tb_lineno', ctypes.c_int) - ] - - def tb_set_next(tb, next): - """Set the tb_next attribute of a traceback object.""" - if not (isinstance(tb, TracebackType) and - (next is None or isinstance(next, TracebackType))): - raise TypeError('tb_set_next arguments must be traceback objects') - obj = _Traceback.from_address(id(tb)) - if tb.tb_next is not None: - old = _Traceback.from_address(id(tb.tb_next)) - old.ob_refcnt -= 1 - if next is None: - obj.tb_next = ctypes.POINTER(_Traceback)() - else: - next = _Traceback.from_address(id(next)) - next.ob_refcnt += 1 - obj.tb_next = ctypes.pointer(next) - - return tb_set_next - - -# try to get a tb_set_next implementation if we don't have transparent -# proxies. -tb_set_next = None -if tproxy is None: - try: - tb_set_next = _init_ugly_crap() - except: - pass - del _init_ugly_crap diff --git a/python/jinja2/defaults.py b/python/jinja2/defaults.py deleted file mode 100644 index 7c93dec..0000000 --- a/python/jinja2/defaults.py +++ /dev/null @@ -1,56 +0,0 @@ -# -*- coding: utf-8 -*- -""" - jinja2.defaults - ~~~~~~~~~~~~~~~ - - Jinja default filters and tags. - - :copyright: (c) 2017 by the Jinja Team. - :license: BSD, see LICENSE for more details. -""" -from jinja2._compat import range_type -from jinja2.utils import generate_lorem_ipsum, Cycler, Joiner, Namespace - - -# defaults for the parser / lexer -BLOCK_START_STRING = '{%' -BLOCK_END_STRING = '%}' -VARIABLE_START_STRING = '{{' -VARIABLE_END_STRING = '}}' -COMMENT_START_STRING = '{#' -COMMENT_END_STRING = '#}' -LINE_STATEMENT_PREFIX = None -LINE_COMMENT_PREFIX = None -TRIM_BLOCKS = False -LSTRIP_BLOCKS = False -NEWLINE_SEQUENCE = '\n' -KEEP_TRAILING_NEWLINE = False - - -# default filters, tests and namespace -from jinja2.filters import FILTERS as DEFAULT_FILTERS -from jinja2.tests import TESTS as DEFAULT_TESTS -DEFAULT_NAMESPACE = { - 'range': range_type, - 'dict': dict, - 'lipsum': generate_lorem_ipsum, - 'cycler': Cycler, - 'joiner': Joiner, - 'namespace': Namespace -} - - -# default policies -DEFAULT_POLICIES = { - 'compiler.ascii_str': True, - 'urlize.rel': 'noopener', - 'urlize.target': None, - 'truncate.leeway': 5, - 'json.dumps_function': None, - 'json.dumps_kwargs': {'sort_keys': True}, - 'ext.i18n.trimmed': False, -} - - -# export all constants -__all__ = tuple(x for x in locals().keys() if x.isupper()) diff --git a/python/jinja2/environment.py b/python/jinja2/environment.py deleted file mode 100644 index 549d9af..0000000 --- a/python/jinja2/environment.py +++ /dev/null @@ -1,1276 +0,0 @@ -# -*- coding: utf-8 -*- -""" - jinja2.environment - ~~~~~~~~~~~~~~~~~~ - - Provides a class that holds runtime and parsing time options. - - :copyright: (c) 2017 by the Jinja Team. - :license: BSD, see LICENSE for more details. -""" -import os -import sys -import weakref -from functools import reduce, partial -from jinja2 import nodes -from jinja2.defaults import BLOCK_START_STRING, \ - BLOCK_END_STRING, VARIABLE_START_STRING, VARIABLE_END_STRING, \ - COMMENT_START_STRING, COMMENT_END_STRING, LINE_STATEMENT_PREFIX, \ - LINE_COMMENT_PREFIX, TRIM_BLOCKS, NEWLINE_SEQUENCE, \ - DEFAULT_FILTERS, DEFAULT_TESTS, DEFAULT_NAMESPACE, \ - DEFAULT_POLICIES, KEEP_TRAILING_NEWLINE, LSTRIP_BLOCKS -from jinja2.lexer import get_lexer, TokenStream -from jinja2.parser import Parser -from jinja2.nodes import EvalContext -from jinja2.compiler import generate, CodeGenerator -from jinja2.runtime import Undefined, new_context, Context -from jinja2.exceptions import TemplateSyntaxError, TemplateNotFound, \ - TemplatesNotFound, TemplateRuntimeError -from jinja2.utils import import_string, LRUCache, Markup, missing, \ - concat, consume, internalcode, have_async_gen -from jinja2._compat import imap, ifilter, string_types, iteritems, \ - text_type, reraise, implements_iterator, implements_to_string, \ - encode_filename, PY2, PYPY - - -# for direct template usage we have up to ten living environments -_spontaneous_environments = LRUCache(10) - -# the function to create jinja traceback objects. This is dynamically -# imported on the first exception in the exception handler. -_make_traceback = None - - -def get_spontaneous_environment(*args): - """Return a new spontaneous environment. A spontaneous environment is an - unnamed and unaccessible (in theory) environment that is used for - templates generated from a string and not from the file system. - """ - try: - env = _spontaneous_environments.get(args) - except TypeError: - return Environment(*args) - if env is not None: - return env - _spontaneous_environments[args] = env = Environment(*args) - env.shared = True - return env - - -def create_cache(size): - """Return the cache class for the given size.""" - if size == 0: - return None - if size < 0: - return {} - return LRUCache(size) - - -def copy_cache(cache): - """Create an empty copy of the given cache.""" - if cache is None: - return None - elif type(cache) is dict: - return {} - return LRUCache(cache.capacity) - - -def load_extensions(environment, extensions): - """Load the extensions from the list and bind it to the environment. - Returns a dict of instantiated environments. - """ - result = {} - for extension in extensions: - if isinstance(extension, string_types): - extension = import_string(extension) - result[extension.identifier] = extension(environment) - return result - - -def fail_for_missing_callable(string, name): - msg = string % name - if isinstance(name, Undefined): - try: - name._fail_with_undefined_error() - except Exception as e: - msg = '%s (%s; did you forget to quote the callable name?)' % (msg, e) - raise TemplateRuntimeError(msg) - - -def _environment_sanity_check(environment): - """Perform a sanity check on the environment.""" - assert issubclass(environment.undefined, Undefined), 'undefined must ' \ - 'be a subclass of undefined because filters depend on it.' - assert environment.block_start_string != \ - environment.variable_start_string != \ - environment.comment_start_string, 'block, variable and comment ' \ - 'start strings must be different' - assert environment.newline_sequence in ('\r', '\r\n', '\n'), \ - 'newline_sequence set to unknown line ending string.' - return environment - - -class Environment(object): - r"""The core component of Jinja is the `Environment`. It contains - important shared variables like configuration, filters, tests, - globals and others. Instances of this class may be modified if - they are not shared and if no template was loaded so far. - Modifications on environments after the first template was loaded - will lead to surprising effects and undefined behavior. - - Here are the possible initialization parameters: - - `block_start_string` - The string marking the beginning of a block. Defaults to ``'{%'``. - - `block_end_string` - The string marking the end of a block. Defaults to ``'%}'``. - - `variable_start_string` - The string marking the beginning of a print statement. - Defaults to ``'{{'``. - - `variable_end_string` - The string marking the end of a print statement. Defaults to - ``'}}'``. - - `comment_start_string` - The string marking the beginning of a comment. Defaults to ``'{#'``. - - `comment_end_string` - The string marking the end of a comment. Defaults to ``'#}'``. - - `line_statement_prefix` - If given and a string, this will be used as prefix for line based - statements. See also :ref:`line-statements`. - - `line_comment_prefix` - If given and a string, this will be used as prefix for line based - comments. See also :ref:`line-statements`. - - .. versionadded:: 2.2 - - `trim_blocks` - If this is set to ``True`` the first newline after a block is - removed (block, not variable tag!). Defaults to `False`. - - `lstrip_blocks` - If this is set to ``True`` leading spaces and tabs are stripped - from the start of a line to a block. Defaults to `False`. - - `newline_sequence` - The sequence that starts a newline. Must be one of ``'\r'``, - ``'\n'`` or ``'\r\n'``. The default is ``'\n'`` which is a - useful default for Linux and OS X systems as well as web - applications. - - `keep_trailing_newline` - Preserve the trailing newline when rendering templates. - The default is ``False``, which causes a single newline, - if present, to be stripped from the end of the template. - - .. versionadded:: 2.7 - - `extensions` - List of Jinja extensions to use. This can either be import paths - as strings or extension classes. For more information have a - look at :ref:`the extensions documentation <jinja-extensions>`. - - `optimized` - should the optimizer be enabled? Default is ``True``. - - `undefined` - :class:`Undefined` or a subclass of it that is used to represent - undefined values in the template. - - `finalize` - A callable that can be used to process the result of a variable - expression before it is output. For example one can convert - ``None`` implicitly into an empty string here. - - `autoescape` - If set to ``True`` the XML/HTML autoescaping feature is enabled by - default. For more details about autoescaping see - :class:`~jinja2.utils.Markup`. As of Jinja 2.4 this can also - be a callable that is passed the template name and has to - return ``True`` or ``False`` depending on autoescape should be - enabled by default. - - .. versionchanged:: 2.4 - `autoescape` can now be a function - - `loader` - The template loader for this environment. - - `cache_size` - The size of the cache. Per default this is ``400`` which means - that if more than 400 templates are loaded the loader will clean - out the least recently used template. If the cache size is set to - ``0`` templates are recompiled all the time, if the cache size is - ``-1`` the cache will not be cleaned. - - .. versionchanged:: 2.8 - The cache size was increased to 400 from a low 50. - - `auto_reload` - Some loaders load templates from locations where the template - sources may change (ie: file system or database). If - ``auto_reload`` is set to ``True`` (default) every time a template is - requested the loader checks if the source changed and if yes, it - will reload the template. For higher performance it's possible to - disable that. - - `bytecode_cache` - If set to a bytecode cache object, this object will provide a - cache for the internal Jinja bytecode so that templates don't - have to be parsed if they were not changed. - - See :ref:`bytecode-cache` for more information. - - `enable_async` - If set to true this enables async template execution which allows - you to take advantage of newer Python features. This requires - Python 3.6 or later. - """ - - #: if this environment is sandboxed. Modifying this variable won't make - #: the environment sandboxed though. For a real sandboxed environment - #: have a look at jinja2.sandbox. This flag alone controls the code - #: generation by the compiler. - sandboxed = False - - #: True if the environment is just an overlay - overlayed = False - - #: the environment this environment is linked to if it is an overlay - linked_to = None - - #: shared environments have this set to `True`. A shared environment - #: must not be modified - shared = False - - #: these are currently EXPERIMENTAL undocumented features. - exception_handler = None - exception_formatter = None - - #: the class that is used for code generation. See - #: :class:`~jinja2.compiler.CodeGenerator` for more information. - code_generator_class = CodeGenerator - - #: the context class thatis used for templates. See - #: :class:`~jinja2.runtime.Context` for more information. - context_class = Context - - def __init__(self, - block_start_string=BLOCK_START_STRING, - block_end_string=BLOCK_END_STRING, - variable_start_string=VARIABLE_START_STRING, - variable_end_string=VARIABLE_END_STRING, - comment_start_string=COMMENT_START_STRING, - comment_end_string=COMMENT_END_STRING, - line_statement_prefix=LINE_STATEMENT_PREFIX, - line_comment_prefix=LINE_COMMENT_PREFIX, - trim_blocks=TRIM_BLOCKS, - lstrip_blocks=LSTRIP_BLOCKS, - newline_sequence=NEWLINE_SEQUENCE, - keep_trailing_newline=KEEP_TRAILING_NEWLINE, - extensions=(), - optimized=True, - undefined=Undefined, - finalize=None, - autoescape=False, - loader=None, - cache_size=400, - auto_reload=True, - bytecode_cache=None, - enable_async=False): - # !!Important notice!! - # The constructor accepts quite a few arguments that should be - # passed by keyword rather than position. However it's important to - # not change the order of arguments because it's used at least - # internally in those cases: - # - spontaneous environments (i18n extension and Template) - # - unittests - # If parameter changes are required only add parameters at the end - # and don't change the arguments (or the defaults!) of the arguments - # existing already. - - # lexer / parser information - self.block_start_string = block_start_string - self.block_end_string = block_end_string - self.variable_start_string = variable_start_string - self.variable_end_string = variable_end_string - self.comment_start_string = comment_start_string - self.comment_end_string = comment_end_string - self.line_statement_prefix = line_statement_prefix - self.line_comment_prefix = line_comment_prefix - self.trim_blocks = trim_blocks - self.lstrip_blocks = lstrip_blocks - self.newline_sequence = newline_sequence - self.keep_trailing_newline = keep_trailing_newline - - # runtime information - self.undefined = undefined - self.optimized = optimized - self.finalize = finalize - self.autoescape = autoescape - - # defaults - self.filters = DEFAULT_FILTERS.copy() - self.tests = DEFAULT_TESTS.copy() - self.globals = DEFAULT_NAMESPACE.copy() - - # set the loader provided - self.loader = loader - self.cache = create_cache(cache_size) - self.bytecode_cache = bytecode_cache - self.auto_reload = auto_reload - - # configurable policies - self.policies = DEFAULT_POLICIES.copy() - - # load extensions - self.extensions = load_extensions(self, extensions) - - self.enable_async = enable_async - self.is_async = self.enable_async and have_async_gen - - _environment_sanity_check(self) - - def add_extension(self, extension): - """Adds an extension after the environment was created. - - .. versionadded:: 2.5 - """ - self.extensions.update(load_extensions(self, [extension])) - - def extend(self, **attributes): - """Add the items to the instance of the environment if they do not exist - yet. This is used by :ref:`extensions <writing-extensions>` to register - callbacks and configuration values without breaking inheritance. - """ - for key, value in iteritems(attributes): - if not hasattr(self, key): - setattr(self, key, value) - - def overlay(self, block_start_string=missing, block_end_string=missing, - variable_start_string=missing, variable_end_string=missing, - comment_start_string=missing, comment_end_string=missing, - line_statement_prefix=missing, line_comment_prefix=missing, - trim_blocks=missing, lstrip_blocks=missing, - extensions=missing, optimized=missing, - undefined=missing, finalize=missing, autoescape=missing, - loader=missing, cache_size=missing, auto_reload=missing, - bytecode_cache=missing): - """Create a new overlay environment that shares all the data with the - current environment except for cache and the overridden attributes. - Extensions cannot be removed for an overlayed environment. An overlayed - environment automatically gets all the extensions of the environment it - is linked to plus optional extra extensions. - - Creating overlays should happen after the initial environment was set - up completely. Not all attributes are truly linked, some are just - copied over so modifications on the original environment may not shine - through. - """ - args = dict(locals()) - del args['self'], args['cache_size'], args['extensions'] - - rv = object.__new__(self.__class__) - rv.__dict__.update(self.__dict__) - rv.overlayed = True - rv.linked_to = self - - for key, value in iteritems(args): - if value is not missing: - setattr(rv, key, value) - - if cache_size is not missing: - rv.cache = create_cache(cache_size) - else: - rv.cache = copy_cache(self.cache) - - rv.extensions = {} - for key, value in iteritems(self.extensions): - rv.extensions[key] = value.bind(rv) - if extensions is not missing: - rv.extensions.update(load_extensions(rv, extensions)) - - return _environment_sanity_check(rv) - - lexer = property(get_lexer, doc="The lexer for this environment.") - - def iter_extensions(self): - """Iterates over the extensions by priority.""" - return iter(sorted(self.extensions.values(), - key=lambda x: x.priority)) - - def getitem(self, obj, argument): - """Get an item or attribute of an object but prefer the item.""" - try: - return obj[argument] - except (AttributeError, TypeError, LookupError): - if isinstance(argument, string_types): - try: - attr = str(argument) - except Exception: - pass - else: - try: - return getattr(obj, attr) - except AttributeError: - pass - return self.undefined(obj=obj, name=argument) - - def getattr(self, obj, attribute): - """Get an item or attribute of an object but prefer the attribute. - Unlike :meth:`getitem` the attribute *must* be a bytestring. - """ - try: - return getattr(obj, attribute) - except AttributeError: - pass - try: - return obj[attribute] - except (TypeError, LookupError, AttributeError): - return self.undefined(obj=obj, name=attribute) - - def call_filter(self, name, value, args=None, kwargs=None, - context=None, eval_ctx=None): - """Invokes a filter on a value the same way the compiler does it. - - Note that on Python 3 this might return a coroutine in case the - filter is running from an environment in async mode and the filter - supports async execution. It's your responsibility to await this - if needed. - - .. versionadded:: 2.7 - """ - func = self.filters.get(name) - if func is None: - fail_for_missing_callable('no filter named %r', name) - args = [value] + list(args or ()) - if getattr(func, 'contextfilter', False): - if context is None: - raise TemplateRuntimeError('Attempted to invoke context ' - 'filter without context') - args.insert(0, context) - elif getattr(func, 'evalcontextfilter', False): - if eval_ctx is None: - if context is not None: - eval_ctx = context.eval_ctx - else: - eval_ctx = EvalContext(self) - args.insert(0, eval_ctx) - elif getattr(func, 'environmentfilter', False): - args.insert(0, self) - return func(*args, **(kwargs or {})) - - def call_test(self, name, value, args=None, kwargs=None): - """Invokes a test on a value the same way the compiler does it. - - .. versionadded:: 2.7 - """ - func = self.tests.get(name) - if func is None: - fail_for_missing_callable('no test named %r', name) - return func(value, *(args or ()), **(kwargs or {})) - - @internalcode - def parse(self, source, name=None, filename=None): - """Parse the sourcecode and return the abstract syntax tree. This - tree of nodes is used by the compiler to convert the template into - executable source- or bytecode. This is useful for debugging or to - extract information from templates. - - If you are :ref:`developing Jinja2 extensions <writing-extensions>` - this gives you a good overview of the node tree generated. - """ - try: - return self._parse(source, name, filename) - except TemplateSyntaxError: - exc_info = sys.exc_info() - self.handle_exception(exc_info, source_hint=source) - - def _parse(self, source, name, filename): - """Internal parsing function used by `parse` and `compile`.""" - return Parser(self, source, name, encode_filename(filename)).parse() - - def lex(self, source, name=None, filename=None): - """Lex the given sourcecode and return a generator that yields - tokens as tuples in the form ``(lineno, token_type, value)``. - This can be useful for :ref:`extension development <writing-extensions>` - and debugging templates. - - This does not perform preprocessing. If you want the preprocessing - of the extensions to be applied you have to filter source through - the :meth:`preprocess` method. - """ - source = text_type(source) - try: - return self.lexer.tokeniter(source, name, filename) - except TemplateSyntaxError: - exc_info = sys.exc_info() - self.handle_exception(exc_info, source_hint=source) - - def preprocess(self, source, name=None, filename=None): - """Preprocesses the source with all extensions. This is automatically - called for all parsing and compiling methods but *not* for :meth:`lex` - because there you usually only want the actual source tokenized. - """ - return reduce(lambda s, e: e.preprocess(s, name, filename), - self.iter_extensions(), text_type(source)) - - def _tokenize(self, source, name, filename=None, state=None): - """Called by the parser to do the preprocessing and filtering - for all the extensions. Returns a :class:`~jinja2.lexer.TokenStream`. - """ - source = self.preprocess(source, name, filename) - stream = self.lexer.tokenize(source, name, filename, state) - for ext in self.iter_extensions(): - stream = ext.filter_stream(stream) - if not isinstance(stream, TokenStream): - stream = TokenStream(stream, name, filename) - return stream - - def _generate(self, source, name, filename, defer_init=False): - """Internal hook that can be overridden to hook a different generate - method in. - - .. versionadded:: 2.5 - """ - return generate(source, self, name, filename, defer_init=defer_init, - optimized=self.optimized) - - def _compile(self, source, filename): - """Internal hook that can be overridden to hook a different compile - method in. - - .. versionadded:: 2.5 - """ - return compile(source, filename, 'exec') - - @internalcode - def compile(self, source, name=None, filename=None, raw=False, - defer_init=False): - """Compile a node or template source code. The `name` parameter is - the load name of the template after it was joined using - :meth:`join_path` if necessary, not the filename on the file system. - the `filename` parameter is the estimated filename of the template on - the file system. If the template came from a database or memory this - can be omitted. - - The return value of this method is a python code object. If the `raw` - parameter is `True` the return value will be a string with python - code equivalent to the bytecode returned otherwise. This method is - mainly used internally. - - `defer_init` is use internally to aid the module code generator. This - causes the generated code to be able to import without the global - environment variable to be set. - - .. versionadded:: 2.4 - `defer_init` parameter added. - """ - source_hint = None - try: - if isinstance(source, string_types): - source_hint = source - source = self._parse(source, name, filename) - source = self._generate(source, name, filename, - defer_init=defer_init) - if raw: - return source - if filename is None: - filename = '<template>' - else: - filename = encode_filename(filename) - return self._compile(source, filename) - except TemplateSyntaxError: - exc_info = sys.exc_info() - self.handle_exception(exc_info, source_hint=source_hint) - - def compile_expression(self, source, undefined_to_none=True): - """A handy helper method that returns a callable that accepts keyword - arguments that appear as variables in the expression. If called it - returns the result of the expression. - - This is useful if applications want to use the same rules as Jinja - in template "configuration files" or similar situations. - - Example usage: - - >>> env = Environment() - >>> expr = env.compile_expression('foo == 42') - >>> expr(foo=23) - False - >>> expr(foo=42) - True - - Per default the return value is converted to `None` if the - expression returns an undefined value. This can be changed - by setting `undefined_to_none` to `False`. - - >>> env.compile_expression('var')() is None - True - >>> env.compile_expression('var', undefined_to_none=False)() - Undefined - - .. versionadded:: 2.1 - """ - parser = Parser(self, source, state='variable') - exc_info = None - try: - expr = parser.parse_expression() - if not parser.stream.eos: - raise TemplateSyntaxError('chunk after expression', - parser.stream.current.lineno, - None, None) - expr.set_environment(self) - except TemplateSyntaxError: - exc_info = sys.exc_info() - if exc_info is not None: - self.handle_exception(exc_info, source_hint=source) - body = [nodes.Assign(nodes.Name('result', 'store'), expr, lineno=1)] - template = self.from_string(nodes.Template(body, lineno=1)) - return TemplateExpression(template, undefined_to_none) - - def compile_templates(self, target, extensions=None, filter_func=None, - zip='deflated', log_function=None, - ignore_errors=True, py_compile=False): - """Finds all the templates the loader can find, compiles them - and stores them in `target`. If `zip` is `None`, instead of in a - zipfile, the templates will be stored in a directory. - By default a deflate zip algorithm is used. To switch to - the stored algorithm, `zip` can be set to ``'stored'``. - - `extensions` and `filter_func` are passed to :meth:`list_templates`. - Each template returned will be compiled to the target folder or - zipfile. - - By default template compilation errors are ignored. In case a - log function is provided, errors are logged. If you want template - syntax errors to abort the compilation you can set `ignore_errors` - to `False` and you will get an exception on syntax errors. - - If `py_compile` is set to `True` .pyc files will be written to the - target instead of standard .py files. This flag does not do anything - on pypy and Python 3 where pyc files are not picked up by itself and - don't give much benefit. - - .. versionadded:: 2.4 - """ - from jinja2.loaders import ModuleLoader - - if log_function is None: - log_function = lambda x: None - - if py_compile: - if not PY2 or PYPY: - from warnings import warn - warn(Warning('py_compile has no effect on pypy or Python 3')) - py_compile = False - else: - import imp - import marshal - py_header = imp.get_magic() + \ - u'\xff\xff\xff\xff'.encode('iso-8859-15') - - # Python 3.3 added a source filesize to the header - if sys.version_info >= (3, 3): - py_header += u'\x00\x00\x00\x00'.encode('iso-8859-15') - - def write_file(filename, data, mode): - if zip: - info = ZipInfo(filename) - info.external_attr = 0o755 << 16 - zip_file.writestr(info, data) - else: - f = open(os.path.join(target, filename), mode) - try: - f.write(data) - finally: - f.close() - - if zip is not None: - from zipfile import ZipFile, ZipInfo, ZIP_DEFLATED, ZIP_STORED - zip_file = ZipFile(target, 'w', dict(deflated=ZIP_DEFLATED, - stored=ZIP_STORED)[zip]) - log_function('Compiling into Zip archive "%s"' % target) - else: - if not os.path.isdir(target): - os.makedirs(target) - log_function('Compiling into folder "%s"' % target) - - try: - for name in self.list_templates(extensions, filter_func): - source, filename, _ = self.loader.get_source(self, name) - try: - code = self.compile(source, name, filename, True, True) - except TemplateSyntaxError as e: - if not ignore_errors: - raise - log_function('Could not compile "%s": %s' % (name, e)) - continue - - filename = ModuleLoader.get_module_filename(name) - - if py_compile: - c = self._compile(code, encode_filename(filename)) - write_file(filename + 'c', py_header + - marshal.dumps(c), 'wb') - log_function('Byte-compiled "%s" as %s' % - (name, filename + 'c')) - else: - write_file(filename, code, 'w') - log_function('Compiled "%s" as %s' % (name, filename)) - finally: - if zip: - zip_file.close() - - log_function('Finished compiling templates') - - def list_templates(self, extensions=None, filter_func=None): - """Returns a list of templates for this environment. This requires - that the loader supports the loader's - :meth:`~BaseLoader.list_templates` method. - - If there are other files in the template folder besides the - actual templates, the returned list can be filtered. There are two - ways: either `extensions` is set to a list of file extensions for - templates, or a `filter_func` can be provided which is a callable that - is passed a template name and should return `True` if it should end up - in the result list. - - If the loader does not support that, a :exc:`TypeError` is raised. - - .. versionadded:: 2.4 - """ - x = self.loader.list_templates() - if extensions is not None: - if filter_func is not None: - raise TypeError('either extensions or filter_func ' - 'can be passed, but not both') - filter_func = lambda x: '.' in x and \ - x.rsplit('.', 1)[1] in extensions - if filter_func is not None: - x = list(ifilter(filter_func, x)) - return x - - def handle_exception(self, exc_info=None, rendered=False, source_hint=None): - """Exception handling helper. This is used internally to either raise - rewritten exceptions or return a rendered traceback for the template. - """ - global _make_traceback - if exc_info is None: - exc_info = sys.exc_info() - - # the debugging module is imported when it's used for the first time. - # we're doing a lot of stuff there and for applications that do not - # get any exceptions in template rendering there is no need to load - # all of that. - if _make_traceback is None: - from jinja2.debug import make_traceback as _make_traceback - traceback = _make_traceback(exc_info, source_hint) - if rendered and self.exception_formatter is not None: - return self.exception_formatter(traceback) - if self.exception_handler is not None: - self.exception_handler(traceback) - exc_type, exc_value, tb = traceback.standard_exc_info - reraise(exc_type, exc_value, tb) - - def join_path(self, template, parent): - """Join a template with the parent. By default all the lookups are - relative to the loader root so this method returns the `template` - parameter unchanged, but if the paths should be relative to the - parent template, this function can be used to calculate the real - template name. - - Subclasses may override this method and implement template path - joining here. - """ - return template - - @internalcode - def _load_template(self, name, globals): - if self.loader is None: - raise TypeError('no loader for this environment specified') - cache_key = (weakref.ref(self.loader), name) - if self.cache is not None: - template = self.cache.get(cache_key) - if template is not None and (not self.auto_reload or - template.is_up_to_date): - return template - template = self.loader.load(self, name, globals) - if self.cache is not None: - self.cache[cache_key] = template - return template - - @internalcode - def get_template(self, name, parent=None, globals=None): - """Load a template from the loader. If a loader is configured this - method asks the loader for the template and returns a :class:`Template`. - If the `parent` parameter is not `None`, :meth:`join_path` is called - to get the real template name before loading. - - The `globals` parameter can be used to provide template wide globals. - These variables are available in the context at render time. - - If the template does not exist a :exc:`TemplateNotFound` exception is - raised. - - .. versionchanged:: 2.4 - If `name` is a :class:`Template` object it is returned from the - function unchanged. - """ - if isinstance(name, Template): - return name - if parent is not None: - name = self.join_path(name, parent) - return self._load_template(name, self.make_globals(globals)) - - @internalcode - def select_template(self, names, parent=None, globals=None): - """Works like :meth:`get_template` but tries a number of templates - before it fails. If it cannot find any of the templates, it will - raise a :exc:`TemplatesNotFound` exception. - - .. versionadded:: 2.3 - - .. versionchanged:: 2.4 - If `names` contains a :class:`Template` object it is returned - from the function unchanged. - """ - if not names: - raise TemplatesNotFound(message=u'Tried to select from an empty list ' - u'of templates.') - globals = self.make_globals(globals) - for name in names: - if isinstance(name, Template): - return name - if parent is not None: - name = self.join_path(name, parent) - try: - return self._load_template(name, globals) - except TemplateNotFound: - pass - raise TemplatesNotFound(names) - - @internalcode - def get_or_select_template(self, template_name_or_list, - parent=None, globals=None): - """Does a typecheck and dispatches to :meth:`select_template` - if an iterable of template names is given, otherwise to - :meth:`get_template`. - - .. versionadded:: 2.3 - """ - if isinstance(template_name_or_list, string_types): - return self.get_template(template_name_or_list, parent, globals) - elif isinstance(template_name_or_list, Template): - return template_name_or_list - return self.select_template(template_name_or_list, parent, globals) - - def from_string(self, source, globals=None, template_class=None): - """Load a template from a string. This parses the source given and - returns a :class:`Template` object. - """ - globals = self.make_globals(globals) - cls = template_class or self.template_class - return cls.from_code(self, self.compile(source), globals, None) - - def make_globals(self, d): - """Return a dict for the globals.""" - if not d: - return self.globals - return dict(self.globals, **d) - - -class Template(object): - """The central template object. This class represents a compiled template - and is used to evaluate it. - - Normally the template object is generated from an :class:`Environment` but - it also has a constructor that makes it possible to create a template - instance directly using the constructor. It takes the same arguments as - the environment constructor but it's not possible to specify a loader. - - Every template object has a few methods and members that are guaranteed - to exist. However it's important that a template object should be - considered immutable. Modifications on the object are not supported. - - Template objects created from the constructor rather than an environment - do have an `environment` attribute that points to a temporary environment - that is probably shared with other templates created with the constructor - and compatible settings. - - >>> template = Template('Hello {{ name }}!') - >>> template.render(name='John Doe') == u'Hello John Doe!' - True - >>> stream = template.stream(name='John Doe') - >>> next(stream) == u'Hello John Doe!' - True - >>> next(stream) - Traceback (most recent call last): - ... - StopIteration - """ - - def __new__(cls, source, - block_start_string=BLOCK_START_STRING, - block_end_string=BLOCK_END_STRING, - variable_start_string=VARIABLE_START_STRING, - variable_end_string=VARIABLE_END_STRING, - comment_start_string=COMMENT_START_STRING, - comment_end_string=COMMENT_END_STRING, - line_statement_prefix=LINE_STATEMENT_PREFIX, - line_comment_prefix=LINE_COMMENT_PREFIX, - trim_blocks=TRIM_BLOCKS, - lstrip_blocks=LSTRIP_BLOCKS, - newline_sequence=NEWLINE_SEQUENCE, - keep_trailing_newline=KEEP_TRAILING_NEWLINE, - extensions=(), - optimized=True, - undefined=Undefined, - finalize=None, - autoescape=False, - enable_async=False): - env = get_spontaneous_environment( - block_start_string, block_end_string, variable_start_string, - variable_end_string, comment_start_string, comment_end_string, - line_statement_prefix, line_comment_prefix, trim_blocks, - lstrip_blocks, newline_sequence, keep_trailing_newline, - frozenset(extensions), optimized, undefined, finalize, autoescape, - None, 0, False, None, enable_async) - return env.from_string(source, template_class=cls) - - @classmethod - def from_code(cls, environment, code, globals, uptodate=None): - """Creates a template object from compiled code and the globals. This - is used by the loaders and environment to create a template object. - """ - namespace = { - 'environment': environment, - '__file__': code.co_filename - } - exec(code, namespace) - rv = cls._from_namespace(environment, namespace, globals) - rv._uptodate = uptodate - return rv - - @classmethod - def from_module_dict(cls, environment, module_dict, globals): - """Creates a template object from a module. This is used by the - module loader to create a template object. - - .. versionadded:: 2.4 - """ - return cls._from_namespace(environment, module_dict, globals) - - @classmethod - def _from_namespace(cls, environment, namespace, globals): - t = object.__new__(cls) - t.environment = environment - t.globals = globals - t.name = namespace['name'] - t.filename = namespace['__file__'] - t.blocks = namespace['blocks'] - - # render function and module - t.root_render_func = namespace['root'] - t._module = None - - # debug and loader helpers - t._debug_info = namespace['debug_info'] - t._uptodate = None - - # store the reference - namespace['environment'] = environment - namespace['__jinja_template__'] = t - - return t - - def render(self, *args, **kwargs): - """This method accepts the same arguments as the `dict` constructor: - A dict, a dict subclass or some keyword arguments. If no arguments - are given the context will be empty. These two calls do the same:: - - template.render(knights='that say nih') - template.render({'knights': 'that say nih'}) - - This will return the rendered template as unicode string. - """ - vars = dict(*args, **kwargs) - try: - return concat(self.root_render_func(self.new_context(vars))) - except Exception: - exc_info = sys.exc_info() - return self.environment.handle_exception(exc_info, True) - - def render_async(self, *args, **kwargs): - """This works similar to :meth:`render` but returns a coroutine - that when awaited returns the entire rendered template string. This - requires the async feature to be enabled. - - Example usage:: - - await template.render_async(knights='that say nih; asynchronously') - """ - # see asyncsupport for the actual implementation - raise NotImplementedError('This feature is not available for this ' - 'version of Python') - - def stream(self, *args, **kwargs): - """Works exactly like :meth:`generate` but returns a - :class:`TemplateStream`. - """ - return TemplateStream(self.generate(*args, **kwargs)) - - def generate(self, *args, **kwargs): - """For very large templates it can be useful to not render the whole - template at once but evaluate each statement after another and yield - piece for piece. This method basically does exactly that and returns - a generator that yields one item after another as unicode strings. - - It accepts the same arguments as :meth:`render`. - """ - vars = dict(*args, **kwargs) - try: - for event in self.root_render_func(self.new_context(vars)): - yield event - except Exception: - exc_info = sys.exc_info() - else: - return - yield self.environment.handle_exception(exc_info, True) - - def generate_async(self, *args, **kwargs): - """An async version of :meth:`generate`. Works very similarly but - returns an async iterator instead. - """ - # see asyncsupport for the actual implementation - raise NotImplementedError('This feature is not available for this ' - 'version of Python') - - def new_context(self, vars=None, shared=False, locals=None): - """Create a new :class:`Context` for this template. The vars - provided will be passed to the template. Per default the globals - are added to the context. If shared is set to `True` the data - is passed as it to the context without adding the globals. - - `locals` can be a dict of local variables for internal usage. - """ - return new_context(self.environment, self.name, self.blocks, - vars, shared, self.globals, locals) - - def make_module(self, vars=None, shared=False, locals=None): - """This method works like the :attr:`module` attribute when called - without arguments but it will evaluate the template on every call - rather than caching it. It's also possible to provide - a dict which is then used as context. The arguments are the same - as for the :meth:`new_context` method. - """ - return TemplateModule(self, self.new_context(vars, shared, locals)) - - def make_module_async(self, vars=None, shared=False, locals=None): - """As template module creation can invoke template code for - asynchronous exections this method must be used instead of the - normal :meth:`make_module` one. Likewise the module attribute - becomes unavailable in async mode. - """ - # see asyncsupport for the actual implementation - raise NotImplementedError('This feature is not available for this ' - 'version of Python') - - @internalcode - def _get_default_module(self): - if self._module is not None: - return self._module - self._module = rv = self.make_module() - return rv - - @property - def module(self): - """The template as module. This is used for imports in the - template runtime but is also useful if one wants to access - exported template variables from the Python layer: - - >>> t = Template('{% macro foo() %}42{% endmacro %}23') - >>> str(t.module) - '23' - >>> t.module.foo() == u'42' - True - - This attribute is not available if async mode is enabled. - """ - return self._get_default_module() - - def get_corresponding_lineno(self, lineno): - """Return the source line number of a line number in the - generated bytecode as they are not in sync. - """ - for template_line, code_line in reversed(self.debug_info): - if code_line <= lineno: - return template_line - return 1 - - @property - def is_up_to_date(self): - """If this variable is `False` there is a newer version available.""" - if self._uptodate is None: - return True - return self._uptodate() - - @property - def debug_info(self): - """The debug info mapping.""" - return [tuple(imap(int, x.split('='))) for x in - self._debug_info.split('&')] - - def __repr__(self): - if self.name is None: - name = 'memory:%x' % id(self) - else: - name = repr(self.name) - return '<%s %s>' % (self.__class__.__name__, name) - - -@implements_to_string -class TemplateModule(object): - """Represents an imported template. All the exported names of the - template are available as attributes on this object. Additionally - converting it into an unicode- or bytestrings renders the contents. - """ - - def __init__(self, template, context, body_stream=None): - if body_stream is None: - if context.environment.is_async: - raise RuntimeError('Async mode requires a body stream ' - 'to be passed to a template module. Use ' - 'the async methods of the API you are ' - 'using.') - body_stream = list(template.root_render_func(context)) - self._body_stream = body_stream - self.__dict__.update(context.get_exported()) - self.__name__ = template.name - - def __html__(self): - return Markup(concat(self._body_stream)) - - def __str__(self): - return concat(self._body_stream) - - def __repr__(self): - if self.__name__ is None: - name = 'memory:%x' % id(self) - else: - name = repr(self.__name__) - return '<%s %s>' % (self.__class__.__name__, name) - - -class TemplateExpression(object): - """The :meth:`jinja2.Environment.compile_expression` method returns an - instance of this object. It encapsulates the expression-like access - to the template with an expression it wraps. - """ - - def __init__(self, template, undefined_to_none): - self._template = template - self._undefined_to_none = undefined_to_none - - def __call__(self, *args, **kwargs): - context = self._template.new_context(dict(*args, **kwargs)) - consume(self._template.root_render_func(context)) - rv = context.vars['result'] - if self._undefined_to_none and isinstance(rv, Undefined): - rv = None - return rv - - -@implements_iterator -class TemplateStream(object): - """A template stream works pretty much like an ordinary python generator - but it can buffer multiple items to reduce the number of total iterations. - Per default the output is unbuffered which means that for every unbuffered - instruction in the template one unicode string is yielded. - - If buffering is enabled with a buffer size of 5, five items are combined - into a new unicode string. This is mainly useful if you are streaming - big templates to a client via WSGI which flushes after each iteration. - """ - - def __init__(self, gen): - self._gen = gen - self.disable_buffering() - - def dump(self, fp, encoding=None, errors='strict'): - """Dump the complete stream into a file or file-like object. - Per default unicode strings are written, if you want to encode - before writing specify an `encoding`. - - Example usage:: - - Template('Hello {{ name }}!').stream(name='foo').dump('hello.html') - """ - close = False - if isinstance(fp, string_types): - if encoding is None: - encoding = 'utf-8' - fp = open(fp, 'wb') - close = True - try: - if encoding is not None: - iterable = (x.encode(encoding, errors) for x in self) - else: - iterable = self - if hasattr(fp, 'writelines'): - fp.writelines(iterable) - else: - for item in iterable: - fp.write(item) - finally: - if close: - fp.close() - - def disable_buffering(self): - """Disable the output buffering.""" - self._next = partial(next, self._gen) - self.buffered = False - - def _buffered_generator(self, size): - buf = [] - c_size = 0 - push = buf.append - - while 1: - try: - while c_size < size: - c = next(self._gen) - push(c) - if c: - c_size += 1 - except StopIteration: - if not c_size: - return - yield concat(buf) - del buf[:] - c_size = 0 - - def enable_buffering(self, size=5): - """Enable buffering. Buffer `size` items before yielding them.""" - if size <= 1: - raise ValueError('buffer size too small') - - self.buffered = True - self._next = partial(next, self._buffered_generator(size)) - - def __iter__(self): - return self - - def __next__(self): - return self._next() - - -# hook in default template class. if anyone reads this comment: ignore that -# it's possible to use custom templates ;-) -Environment.template_class = Template diff --git a/python/jinja2/exceptions.py b/python/jinja2/exceptions.py deleted file mode 100644 index c018a33..0000000 --- a/python/jinja2/exceptions.py +++ /dev/null @@ -1,146 +0,0 @@ -# -*- coding: utf-8 -*- -""" - jinja2.exceptions - ~~~~~~~~~~~~~~~~~ - - Jinja exceptions. - - :copyright: (c) 2017 by the Jinja Team. - :license: BSD, see LICENSE for more details. -""" -from jinja2._compat import imap, text_type, PY2, implements_to_string - - -class TemplateError(Exception): - """Baseclass for all template errors.""" - - if PY2: - def __init__(self, message=None): - if message is not None: - message = text_type(message).encode('utf-8') - Exception.__init__(self, message) - - @property - def message(self): - if self.args: - message = self.args[0] - if message is not None: - return message.decode('utf-8', 'replace') - - def __unicode__(self): - return self.message or u'' - else: - def __init__(self, message=None): - Exception.__init__(self, message) - - @property - def message(self): - if self.args: - message = self.args[0] - if message is not None: - return message - - -@implements_to_string -class TemplateNotFound(IOError, LookupError, TemplateError): - """Raised if a template does not exist.""" - - # looks weird, but removes the warning descriptor that just - # bogusly warns us about message being deprecated - message = None - - def __init__(self, name, message=None): - IOError.__init__(self) - if message is None: - message = name - self.message = message - self.name = name - self.templates = [name] - - def __str__(self): - return self.message - - -class TemplatesNotFound(TemplateNotFound): - """Like :class:`TemplateNotFound` but raised if multiple templates - are selected. This is a subclass of :class:`TemplateNotFound` - exception, so just catching the base exception will catch both. - - .. versionadded:: 2.2 - """ - - def __init__(self, names=(), message=None): - if message is None: - message = u'none of the templates given were found: ' + \ - u', '.join(imap(text_type, names)) - TemplateNotFound.__init__(self, names and names[-1] or None, message) - self.templates = list(names) - - -@implements_to_string -class TemplateSyntaxError(TemplateError): - """Raised to tell the user that there is a problem with the template.""" - - def __init__(self, message, lineno, name=None, filename=None): - TemplateError.__init__(self, message) - self.lineno = lineno - self.name = name - self.filename = filename - self.source = None - - # this is set to True if the debug.translate_syntax_error - # function translated the syntax error into a new traceback - self.translated = False - - def __str__(self): - # for translated errors we only return the message - if self.translated: - return self.message - - # otherwise attach some stuff - location = 'line %d' % self.lineno - name = self.filename or self.name - if name: - location = 'File "%s", %s' % (name, location) - lines = [self.message, ' ' + location] - - # if the source is set, add the line to the output - if self.source is not None: - try: - line = self.source.splitlines()[self.lineno - 1] - except IndexError: - line = None - if line: - lines.append(' ' + line.strip()) - - return u'\n'.join(lines) - - -class TemplateAssertionError(TemplateSyntaxError): - """Like a template syntax error, but covers cases where something in the - template caused an error at compile time that wasn't necessarily caused - by a syntax error. However it's a direct subclass of - :exc:`TemplateSyntaxError` and has the same attributes. - """ - - -class TemplateRuntimeError(TemplateError): - """A generic runtime error in the template engine. Under some situations - Jinja may raise this exception. - """ - - -class UndefinedError(TemplateRuntimeError): - """Raised if a template tries to operate on :class:`Undefined`.""" - - -class SecurityError(TemplateRuntimeError): - """Raised if a template tries to do something insecure if the - sandbox is enabled. - """ - - -class FilterArgumentError(TemplateRuntimeError): - """This error is raised if a filter was called with inappropriate - arguments - """ diff --git a/python/jinja2/ext.py b/python/jinja2/ext.py deleted file mode 100644 index 0734a84..0000000 --- a/python/jinja2/ext.py +++ /dev/null @@ -1,627 +0,0 @@ -# -*- coding: utf-8 -*- -""" - jinja2.ext - ~~~~~~~~~~ - - Jinja extensions allow to add custom tags similar to the way django custom - tags work. By default two example extensions exist: an i18n and a cache - extension. - - :copyright: (c) 2017 by the Jinja Team. - :license: BSD. -""" -import re - -from jinja2 import nodes -from jinja2.defaults import BLOCK_START_STRING, \ - BLOCK_END_STRING, VARIABLE_START_STRING, VARIABLE_END_STRING, \ - COMMENT_START_STRING, COMMENT_END_STRING, LINE_STATEMENT_PREFIX, \ - LINE_COMMENT_PREFIX, TRIM_BLOCKS, NEWLINE_SEQUENCE, \ - KEEP_TRAILING_NEWLINE, LSTRIP_BLOCKS -from jinja2.environment import Environment -from jinja2.runtime import concat -from jinja2.exceptions import TemplateAssertionError, TemplateSyntaxError -from jinja2.utils import contextfunction, import_string, Markup -from jinja2._compat import with_metaclass, string_types, iteritems - - -# the only real useful gettext functions for a Jinja template. Note -# that ugettext must be assigned to gettext as Jinja doesn't support -# non unicode strings. -GETTEXT_FUNCTIONS = ('_', 'gettext', 'ngettext') - - -class ExtensionRegistry(type): - """Gives the extension an unique identifier.""" - - def __new__(cls, name, bases, d): - rv = type.__new__(cls, name, bases, d) - rv.identifier = rv.__module__ + '.' + rv.__name__ - return rv - - -class Extension(with_metaclass(ExtensionRegistry, object)): - """Extensions can be used to add extra functionality to the Jinja template - system at the parser level. Custom extensions are bound to an environment - but may not store environment specific data on `self`. The reason for - this is that an extension can be bound to another environment (for - overlays) by creating a copy and reassigning the `environment` attribute. - - As extensions are created by the environment they cannot accept any - arguments for configuration. One may want to work around that by using - a factory function, but that is not possible as extensions are identified - by their import name. The correct way to configure the extension is - storing the configuration values on the environment. Because this way the - environment ends up acting as central configuration storage the - attributes may clash which is why extensions have to ensure that the names - they choose for configuration are not too generic. ``prefix`` for example - is a terrible name, ``fragment_cache_prefix`` on the other hand is a good - name as includes the name of the extension (fragment cache). - """ - - #: if this extension parses this is the list of tags it's listening to. - tags = set() - - #: the priority of that extension. This is especially useful for - #: extensions that preprocess values. A lower value means higher - #: priority. - #: - #: .. versionadded:: 2.4 - priority = 100 - - def __init__(self, environment): - self.environment = environment - - def bind(self, environment): - """Create a copy of this extension bound to another environment.""" - rv = object.__new__(self.__class__) - rv.__dict__.update(self.__dict__) - rv.environment = environment - return rv - - def preprocess(self, source, name, filename=None): - """This method is called before the actual lexing and can be used to - preprocess the source. The `filename` is optional. The return value - must be the preprocessed source. - """ - return source - - def filter_stream(self, stream): - """It's passed a :class:`~jinja2.lexer.TokenStream` that can be used - to filter tokens returned. This method has to return an iterable of - :class:`~jinja2.lexer.Token`\\s, but it doesn't have to return a - :class:`~jinja2.lexer.TokenStream`. - - In the `ext` folder of the Jinja2 source distribution there is a file - called `inlinegettext.py` which implements a filter that utilizes this - method. - """ - return stream - - def parse(self, parser): - """If any of the :attr:`tags` matched this method is called with the - parser as first argument. The token the parser stream is pointing at - is the name token that matched. This method has to return one or a - list of multiple nodes. - """ - raise NotImplementedError() - - def attr(self, name, lineno=None): - """Return an attribute node for the current extension. This is useful - to pass constants on extensions to generated template code. - - :: - - self.attr('_my_attribute', lineno=lineno) - """ - return nodes.ExtensionAttribute(self.identifier, name, lineno=lineno) - - def call_method(self, name, args=None, kwargs=None, dyn_args=None, - dyn_kwargs=None, lineno=None): - """Call a method of the extension. This is a shortcut for - :meth:`attr` + :class:`jinja2.nodes.Call`. - """ - if args is None: - args = [] - if kwargs is None: - kwargs = [] - return nodes.Call(self.attr(name, lineno=lineno), args, kwargs, - dyn_args, dyn_kwargs, lineno=lineno) - - -@contextfunction -def _gettext_alias(__context, *args, **kwargs): - return __context.call(__context.resolve('gettext'), *args, **kwargs) - - -def _make_new_gettext(func): - @contextfunction - def gettext(__context, __string, **variables): - rv = __context.call(func, __string) - if __context.eval_ctx.autoescape: - rv = Markup(rv) - return rv % variables - return gettext - - -def _make_new_ngettext(func): - @contextfunction - def ngettext(__context, __singular, __plural, __num, **variables): - variables.setdefault('num', __num) - rv = __context.call(func, __singular, __plural, __num) - if __context.eval_ctx.autoescape: - rv = Markup(rv) - return rv % variables - return ngettext - - -class InternationalizationExtension(Extension): - """This extension adds gettext support to Jinja2.""" - tags = set(['trans']) - - # TODO: the i18n extension is currently reevaluating values in a few - # situations. Take this example: - # {% trans count=something() %}{{ count }} foo{% pluralize - # %}{{ count }} fooss{% endtrans %} - # something is called twice here. One time for the gettext value and - # the other time for the n-parameter of the ngettext function. - - def __init__(self, environment): - Extension.__init__(self, environment) - environment.globals['_'] = _gettext_alias - environment.extend( - install_gettext_translations=self._install, - install_null_translations=self._install_null, - install_gettext_callables=self._install_callables, - uninstall_gettext_translations=self._uninstall, - extract_translations=self._extract, - newstyle_gettext=False - ) - - def _install(self, translations, newstyle=None): - gettext = getattr(translations, 'ugettext', None) - if gettext is None: - gettext = translations.gettext - ngettext = getattr(translations, 'ungettext', None) - if ngettext is None: - ngettext = translations.ngettext - self._install_callables(gettext, ngettext, newstyle) - - def _install_null(self, newstyle=None): - self._install_callables( - lambda x: x, - lambda s, p, n: (n != 1 and (p,) or (s,))[0], - newstyle - ) - - def _install_callables(self, gettext, ngettext, newstyle=None): - if newstyle is not None: - self.environment.newstyle_gettext = newstyle - if self.environment.newstyle_gettext: - gettext = _make_new_gettext(gettext) - ngettext = _make_new_ngettext(ngettext) - self.environment.globals.update( - gettext=gettext, - ngettext=ngettext - ) - - def _uninstall(self, translations): - for key in 'gettext', 'ngettext': - self.environment.globals.pop(key, None) - - def _extract(self, source, gettext_functions=GETTEXT_FUNCTIONS): - if isinstance(source, string_types): - source = self.environment.parse(source) - return extract_from_ast(source, gettext_functions) - - def parse(self, parser): - """Parse a translatable tag.""" - lineno = next(parser.stream).lineno - num_called_num = False - - # find all the variables referenced. Additionally a variable can be - # defined in the body of the trans block too, but this is checked at - # a later state. - plural_expr = None - plural_expr_assignment = None - variables = {} - trimmed = None - while parser.stream.current.type != 'block_end': - if variables: - parser.stream.expect('comma') - - # skip colon for python compatibility - if parser.stream.skip_if('colon'): - break - - name = parser.stream.expect('name') - if name.value in variables: - parser.fail('translatable variable %r defined twice.' % - name.value, name.lineno, - exc=TemplateAssertionError) - - # expressions - if parser.stream.current.type == 'assign': - next(parser.stream) - variables[name.value] = var = parser.parse_expression() - elif trimmed is None and name.value in ('trimmed', 'notrimmed'): - trimmed = name.value == 'trimmed' - continue - else: - variables[name.value] = var = nodes.Name(name.value, 'load') - - if plural_expr is None: - if isinstance(var, nodes.Call): - plural_expr = nodes.Name('_trans', 'load') - variables[name.value] = plural_expr - plural_expr_assignment = nodes.Assign( - nodes.Name('_trans', 'store'), var) - else: - plural_expr = var - num_called_num = name.value == 'num' - - parser.stream.expect('block_end') - - plural = None - have_plural = False - referenced = set() - - # now parse until endtrans or pluralize - singular_names, singular = self._parse_block(parser, True) - if singular_names: - referenced.update(singular_names) - if plural_expr is None: - plural_expr = nodes.Name(singular_names[0], 'load') - num_called_num = singular_names[0] == 'num' - - # if we have a pluralize block, we parse that too - if parser.stream.current.test('name:pluralize'): - have_plural = True - next(parser.stream) - if parser.stream.current.type != 'block_end': - name = parser.stream.expect('name') - if name.value not in variables: - parser.fail('unknown variable %r for pluralization' % - name.value, name.lineno, - exc=TemplateAssertionError) - plural_expr = variables[name.value] - num_called_num = name.value == 'num' - parser.stream.expect('block_end') - plural_names, plural = self._parse_block(parser, False) - next(parser.stream) - referenced.update(plural_names) - else: - next(parser.stream) - - # register free names as simple name expressions - for var in referenced: - if var not in variables: - variables[var] = nodes.Name(var, 'load') - - if not have_plural: - plural_expr = None - elif plural_expr is None: - parser.fail('pluralize without variables', lineno) - - if trimmed is None: - trimmed = self.environment.policies['ext.i18n.trimmed'] - if trimmed: - singular = self._trim_whitespace(singular) - if plural: - plural = self._trim_whitespace(plural) - - node = self._make_node(singular, plural, variables, plural_expr, - bool(referenced), - num_called_num and have_plural) - node.set_lineno(lineno) - if plural_expr_assignment is not None: - return [plural_expr_assignment, node] - else: - return node - - def _trim_whitespace(self, string, _ws_re=re.compile(r'\s*\n\s*')): - return _ws_re.sub(' ', string.strip()) - - def _parse_block(self, parser, allow_pluralize): - """Parse until the next block tag with a given name.""" - referenced = [] - buf = [] - while 1: - if parser.stream.current.type == 'data': - buf.append(parser.stream.current.value.replace('%', '%%')) - next(parser.stream) - elif parser.stream.current.type == 'variable_begin': - next(parser.stream) - name = parser.stream.expect('name').value - referenced.append(name) - buf.append('%%(%s)s' % name) - parser.stream.expect('variable_end') - elif parser.stream.current.type == 'block_begin': - next(parser.stream) - if parser.stream.current.test('name:endtrans'): - break - elif parser.stream.current.test('name:pluralize'): - if allow_pluralize: - break - parser.fail('a translatable section can have only one ' - 'pluralize section') - parser.fail('control structures in translatable sections are ' - 'not allowed') - elif parser.stream.eos: - parser.fail('unclosed translation block') - else: - assert False, 'internal parser error' - - return referenced, concat(buf) - - def _make_node(self, singular, plural, variables, plural_expr, - vars_referenced, num_called_num): - """Generates a useful node from the data provided.""" - # no variables referenced? no need to escape for old style - # gettext invocations only if there are vars. - if not vars_referenced and not self.environment.newstyle_gettext: - singular = singular.replace('%%', '%') - if plural: - plural = plural.replace('%%', '%') - - # singular only: - if plural_expr is None: - gettext = nodes.Name('gettext', 'load') - node = nodes.Call(gettext, [nodes.Const(singular)], - [], None, None) - - # singular and plural - else: - ngettext = nodes.Name('ngettext', 'load') - node = nodes.Call(ngettext, [ - nodes.Const(singular), - nodes.Const(plural), - plural_expr - ], [], None, None) - - # in case newstyle gettext is used, the method is powerful - # enough to handle the variable expansion and autoescape - # handling itself - if self.environment.newstyle_gettext: - for key, value in iteritems(variables): - # the function adds that later anyways in case num was - # called num, so just skip it. - if num_called_num and key == 'num': - continue - node.kwargs.append(nodes.Keyword(key, value)) - - # otherwise do that here - else: - # mark the return value as safe if we are in an - # environment with autoescaping turned on - node = nodes.MarkSafeIfAutoescape(node) - if variables: - node = nodes.Mod(node, nodes.Dict([ - nodes.Pair(nodes.Const(key), value) - for key, value in variables.items() - ])) - return nodes.Output([node]) - - -class ExprStmtExtension(Extension): - """Adds a `do` tag to Jinja2 that works like the print statement just - that it doesn't print the return value. - """ - tags = set(['do']) - - def parse(self, parser): - node = nodes.ExprStmt(lineno=next(parser.stream).lineno) - node.node = parser.parse_tuple() - return node - - -class LoopControlExtension(Extension): - """Adds break and continue to the template engine.""" - tags = set(['break', 'continue']) - - def parse(self, parser): - token = next(parser.stream) - if token.value == 'break': - return nodes.Break(lineno=token.lineno) - return nodes.Continue(lineno=token.lineno) - - -class WithExtension(Extension): - pass - - -class AutoEscapeExtension(Extension): - pass - - -def extract_from_ast(node, gettext_functions=GETTEXT_FUNCTIONS, - babel_style=True): - """Extract localizable strings from the given template node. Per - default this function returns matches in babel style that means non string - parameters as well as keyword arguments are returned as `None`. This - allows Babel to figure out what you really meant if you are using - gettext functions that allow keyword arguments for placeholder expansion. - If you don't want that behavior set the `babel_style` parameter to `False` - which causes only strings to be returned and parameters are always stored - in tuples. As a consequence invalid gettext calls (calls without a single - string parameter or string parameters after non-string parameters) are - skipped. - - This example explains the behavior: - - >>> from jinja2 import Environment - >>> env = Environment() - >>> node = env.parse('{{ (_("foo"), _(), ngettext("foo", "bar", 42)) }}') - >>> list(extract_from_ast(node)) - [(1, '_', 'foo'), (1, '_', ()), (1, 'ngettext', ('foo', 'bar', None))] - >>> list(extract_from_ast(node, babel_style=False)) - [(1, '_', ('foo',)), (1, 'ngettext', ('foo', 'bar'))] - - For every string found this function yields a ``(lineno, function, - message)`` tuple, where: - - * ``lineno`` is the number of the line on which the string was found, - * ``function`` is the name of the ``gettext`` function used (if the - string was extracted from embedded Python code), and - * ``message`` is the string itself (a ``unicode`` object, or a tuple - of ``unicode`` objects for functions with multiple string arguments). - - This extraction function operates on the AST and is because of that unable - to extract any comments. For comment support you have to use the babel - extraction interface or extract comments yourself. - """ - for node in node.find_all(nodes.Call): - if not isinstance(node.node, nodes.Name) or \ - node.node.name not in gettext_functions: - continue - - strings = [] - for arg in node.args: - if isinstance(arg, nodes.Const) and \ - isinstance(arg.value, string_types): - strings.append(arg.value) - else: - strings.append(None) - - for arg in node.kwargs: - strings.append(None) - if node.dyn_args is not None: - strings.append(None) - if node.dyn_kwargs is not None: - strings.append(None) - - if not babel_style: - strings = tuple(x for x in strings if x is not None) - if not strings: - continue - else: - if len(strings) == 1: - strings = strings[0] - else: - strings = tuple(strings) - yield node.lineno, node.node.name, strings - - -class _CommentFinder(object): - """Helper class to find comments in a token stream. Can only - find comments for gettext calls forwards. Once the comment - from line 4 is found, a comment for line 1 will not return a - usable value. - """ - - def __init__(self, tokens, comment_tags): - self.tokens = tokens - self.comment_tags = comment_tags - self.offset = 0 - self.last_lineno = 0 - - def find_backwards(self, offset): - try: - for _, token_type, token_value in \ - reversed(self.tokens[self.offset:offset]): - if token_type in ('comment', 'linecomment'): - try: - prefix, comment = token_value.split(None, 1) - except ValueError: - continue - if prefix in self.comment_tags: - return [comment.rstrip()] - return [] - finally: - self.offset = offset - - def find_comments(self, lineno): - if not self.comment_tags or self.last_lineno > lineno: - return [] - for idx, (token_lineno, _, _) in enumerate(self.tokens[self.offset:]): - if token_lineno > lineno: - return self.find_backwards(self.offset + idx) - return self.find_backwards(len(self.tokens)) - - -def babel_extract(fileobj, keywords, comment_tags, options): - """Babel extraction method for Jinja templates. - - .. versionchanged:: 2.3 - Basic support for translation comments was added. If `comment_tags` - is now set to a list of keywords for extraction, the extractor will - try to find the best preceeding comment that begins with one of the - keywords. For best results, make sure to not have more than one - gettext call in one line of code and the matching comment in the - same line or the line before. - - .. versionchanged:: 2.5.1 - The `newstyle_gettext` flag can be set to `True` to enable newstyle - gettext calls. - - .. versionchanged:: 2.7 - A `silent` option can now be provided. If set to `False` template - syntax errors are propagated instead of being ignored. - - :param fileobj: the file-like object the messages should be extracted from - :param keywords: a list of keywords (i.e. function names) that should be - recognized as translation functions - :param comment_tags: a list of translator tags to search for and include - in the results. - :param options: a dictionary of additional options (optional) - :return: an iterator over ``(lineno, funcname, message, comments)`` tuples. - (comments will be empty currently) - """ - extensions = set() - for extension in options.get('extensions', '').split(','): - extension = extension.strip() - if not extension: - continue - extensions.add(import_string(extension)) - if InternationalizationExtension not in extensions: - extensions.add(InternationalizationExtension) - - def getbool(options, key, default=False): - return options.get(key, str(default)).lower() in \ - ('1', 'on', 'yes', 'true') - - silent = getbool(options, 'silent', True) - environment = Environment( - options.get('block_start_string', BLOCK_START_STRING), - options.get('block_end_string', BLOCK_END_STRING), - options.get('variable_start_string', VARIABLE_START_STRING), - options.get('variable_end_string', VARIABLE_END_STRING), - options.get('comment_start_string', COMMENT_START_STRING), - options.get('comment_end_string', COMMENT_END_STRING), - options.get('line_statement_prefix') or LINE_STATEMENT_PREFIX, - options.get('line_comment_prefix') or LINE_COMMENT_PREFIX, - getbool(options, 'trim_blocks', TRIM_BLOCKS), - getbool(options, 'lstrip_blocks', LSTRIP_BLOCKS), - NEWLINE_SEQUENCE, - getbool(options, 'keep_trailing_newline', KEEP_TRAILING_NEWLINE), - frozenset(extensions), - cache_size=0, - auto_reload=False - ) - - if getbool(options, 'trimmed'): - environment.policies['ext.i18n.trimmed'] = True - if getbool(options, 'newstyle_gettext'): - environment.newstyle_gettext = True - - source = fileobj.read().decode(options.get('encoding', 'utf-8')) - try: - node = environment.parse(source) - tokens = list(environment.lex(environment.preprocess(source))) - except TemplateSyntaxError as e: - if not silent: - raise - # skip templates with syntax errors - return - - finder = _CommentFinder(tokens, comment_tags) - for lineno, func, message in extract_from_ast(node, keywords): - yield lineno, func, message, finder.find_comments(lineno) - - -#: nicer import names -i18n = InternationalizationExtension -do = ExprStmtExtension -loopcontrols = LoopControlExtension -with_ = WithExtension -autoescape = AutoEscapeExtension diff --git a/python/jinja2/filters.py b/python/jinja2/filters.py deleted file mode 100644 index 267dddd..0000000 --- a/python/jinja2/filters.py +++ /dev/null @@ -1,1190 +0,0 @@ -# -*- coding: utf-8 -*- -""" - jinja2.filters - ~~~~~~~~~~~~~~ - - Bundled jinja filters. - - :copyright: (c) 2017 by the Jinja Team. - :license: BSD, see LICENSE for more details. -""" -import re -import math -import random -import warnings - -from itertools import groupby, chain -from collections import namedtuple -from jinja2.utils import Markup, escape, pformat, urlize, soft_unicode, \ - unicode_urlencode, htmlsafe_json_dumps -from jinja2.runtime import Undefined -from jinja2.exceptions import FilterArgumentError -from jinja2._compat import imap, string_types, text_type, iteritems, PY2 - - -_word_re = re.compile(r'\w+', re.UNICODE) -_word_beginning_split_re = re.compile(r'([-\s\(\{\[\<]+)', re.UNICODE) - - -def contextfilter(f): - """Decorator for marking context dependent filters. The current - :class:`Context` will be passed as first argument. - """ - f.contextfilter = True - return f - - -def evalcontextfilter(f): - """Decorator for marking eval-context dependent filters. An eval - context object is passed as first argument. For more information - about the eval context, see :ref:`eval-context`. - - .. versionadded:: 2.4 - """ - f.evalcontextfilter = True - return f - - -def environmentfilter(f): - """Decorator for marking environment dependent filters. The current - :class:`Environment` is passed to the filter as first argument. - """ - f.environmentfilter = True - return f - - -def ignore_case(value): - """For use as a postprocessor for :func:`make_attrgetter`. Converts strings - to lowercase and returns other types as-is.""" - return value.lower() if isinstance(value, string_types) else value - - -def make_attrgetter(environment, attribute, postprocess=None): - """Returns a callable that looks up the given attribute from a - passed object with the rules of the environment. Dots are allowed - to access attributes of attributes. Integer parts in paths are - looked up as integers. - """ - if attribute is None: - attribute = [] - elif isinstance(attribute, string_types): - attribute = [int(x) if x.isdigit() else x for x in attribute.split('.')] - else: - attribute = [attribute] - - def attrgetter(item): - for part in attribute: - item = environment.getitem(item, part) - - if postprocess is not None: - item = postprocess(item) - - return item - - return attrgetter - - -def do_forceescape(value): - """Enforce HTML escaping. This will probably double escape variables.""" - if hasattr(value, '__html__'): - value = value.__html__() - return escape(text_type(value)) - - -def do_urlencode(value): - """Escape strings for use in URLs (uses UTF-8 encoding). It accepts both - dictionaries and regular strings as well as pairwise iterables. - - .. versionadded:: 2.7 - """ - itemiter = None - if isinstance(value, dict): - itemiter = iteritems(value) - elif not isinstance(value, string_types): - try: - itemiter = iter(value) - except TypeError: - pass - if itemiter is None: - return unicode_urlencode(value) - return u'&'.join(unicode_urlencode(k) + '=' + - unicode_urlencode(v, for_qs=True) - for k, v in itemiter) - - -@evalcontextfilter -def do_replace(eval_ctx, s, old, new, count=None): - """Return a copy of the value with all occurrences of a substring - replaced with a new one. The first argument is the substring - that should be replaced, the second is the replacement string. - If the optional third argument ``count`` is given, only the first - ``count`` occurrences are replaced: - - .. sourcecode:: jinja - - {{ "Hello World"|replace("Hello", "Goodbye") }} - -> Goodbye World - - {{ "aaaaargh"|replace("a", "d'oh, ", 2) }} - -> d'oh, d'oh, aaargh - """ - if count is None: - count = -1 - if not eval_ctx.autoescape: - return text_type(s).replace(text_type(old), text_type(new), count) - if hasattr(old, '__html__') or hasattr(new, '__html__') and \ - not hasattr(s, '__html__'): - s = escape(s) - else: - s = soft_unicode(s) - return s.replace(soft_unicode(old), soft_unicode(new), count) - - -def do_upper(s): - """Convert a value to uppercase.""" - return soft_unicode(s).upper() - - -def do_lower(s): - """Convert a value to lowercase.""" - return soft_unicode(s).lower() - - -@evalcontextfilter -def do_xmlattr(_eval_ctx, d, autospace=True): - """Create an SGML/XML attribute string based on the items in a dict. - All values that are neither `none` nor `undefined` are automatically - escaped: - - .. sourcecode:: html+jinja - - <ul{{ {'class': 'my_list', 'missing': none, - 'id': 'list-%d'|format(variable)}|xmlattr }}> - ... - </ul> - - Results in something like this: - - .. sourcecode:: html - - <ul class="my_list" id="list-42"> - ... - </ul> - - As you can see it automatically prepends a space in front of the item - if the filter returned something unless the second parameter is false. - """ - rv = u' '.join( - u'%s="%s"' % (escape(key), escape(value)) - for key, value in iteritems(d) - if value is not None and not isinstance(value, Undefined) - ) - if autospace and rv: - rv = u' ' + rv - if _eval_ctx.autoescape: - rv = Markup(rv) - return rv - - -def do_capitalize(s): - """Capitalize a value. The first character will be uppercase, all others - lowercase. - """ - return soft_unicode(s).capitalize() - - -def do_title(s): - """Return a titlecased version of the value. I.e. words will start with - uppercase letters, all remaining characters are lowercase. - """ - return ''.join( - [item[0].upper() + item[1:].lower() - for item in _word_beginning_split_re.split(soft_unicode(s)) - if item]) - - -def do_dictsort(value, case_sensitive=False, by='key', reverse=False): - """Sort a dict and yield (key, value) pairs. Because python dicts are - unsorted you may want to use this function to order them by either - key or value: - - .. sourcecode:: jinja - - {% for item in mydict|dictsort %} - sort the dict by key, case insensitive - - {% for item in mydict|dictsort(reverse=true) %} - sort the dict by key, case insensitive, reverse order - - {% for item in mydict|dictsort(true) %} - sort the dict by key, case sensitive - - {% for item in mydict|dictsort(false, 'value') %} - sort the dict by value, case insensitive - """ - if by == 'key': - pos = 0 - elif by == 'value': - pos = 1 - else: - raise FilterArgumentError( - 'You can only sort by either "key" or "value"' - ) - - def sort_func(item): - value = item[pos] - - if not case_sensitive: - value = ignore_case(value) - - return value - - return sorted(value.items(), key=sort_func, reverse=reverse) - - -@environmentfilter -def do_sort( - environment, value, reverse=False, case_sensitive=False, attribute=None -): - """Sort an iterable. Per default it sorts ascending, if you pass it - true as first argument it will reverse the sorting. - - If the iterable is made of strings the third parameter can be used to - control the case sensitiveness of the comparison which is disabled by - default. - - .. sourcecode:: jinja - - {% for item in iterable|sort %} - ... - {% endfor %} - - It is also possible to sort by an attribute (for example to sort - by the date of an object) by specifying the `attribute` parameter: - - .. sourcecode:: jinja - - {% for item in iterable|sort(attribute='date') %} - ... - {% endfor %} - - .. versionchanged:: 2.6 - The `attribute` parameter was added. - """ - key_func = make_attrgetter( - environment, attribute, - postprocess=ignore_case if not case_sensitive else None - ) - return sorted(value, key=key_func, reverse=reverse) - - -@environmentfilter -def do_unique(environment, value, case_sensitive=False, attribute=None): - """Returns a list of unique items from the the given iterable. - - .. sourcecode:: jinja - - {{ ['foo', 'bar', 'foobar', 'FooBar']|unique }} - -> ['foo', 'bar', 'foobar'] - - The unique items are yielded in the same order as their first occurrence in - the iterable passed to the filter. - - :param case_sensitive: Treat upper and lower case strings as distinct. - :param attribute: Filter objects with unique values for this attribute. - """ - getter = make_attrgetter( - environment, attribute, - postprocess=ignore_case if not case_sensitive else None - ) - seen = set() - - for item in value: - key = getter(item) - - if key not in seen: - seen.add(key) - yield item - - -def _min_or_max(environment, value, func, case_sensitive, attribute): - it = iter(value) - - try: - first = next(it) - except StopIteration: - return environment.undefined('No aggregated item, sequence was empty.') - - key_func = make_attrgetter( - environment, attribute, - ignore_case if not case_sensitive else None - ) - return func(chain([first], it), key=key_func) - - -@environmentfilter -def do_min(environment, value, case_sensitive=False, attribute=None): - """Return the smallest item from the sequence. - - .. sourcecode:: jinja - - {{ [1, 2, 3]|min }} - -> 1 - - :param case_sensitive: Treat upper and lower case strings as distinct. - :param attribute: Get the object with the max value of this attribute. - """ - return _min_or_max(environment, value, min, case_sensitive, attribute) - - -@environmentfilter -def do_max(environment, value, case_sensitive=False, attribute=None): - """Return the largest item from the sequence. - - .. sourcecode:: jinja - - {{ [1, 2, 3]|max }} - -> 3 - - :param case_sensitive: Treat upper and lower case strings as distinct. - :param attribute: Get the object with the max value of this attribute. - """ - return _min_or_max(environment, value, max, case_sensitive, attribute) - - -def do_default(value, default_value=u'', boolean=False): - """If the value is undefined it will return the passed default value, - otherwise the value of the variable: - - .. sourcecode:: jinja - - {{ my_variable|default('my_variable is not defined') }} - - This will output the value of ``my_variable`` if the variable was - defined, otherwise ``'my_variable is not defined'``. If you want - to use default with variables that evaluate to false you have to - set the second parameter to `true`: - - .. sourcecode:: jinja - - {{ ''|default('the string was empty', true) }} - """ - if isinstance(value, Undefined) or (boolean and not value): - return default_value - return value - - -@evalcontextfilter -def do_join(eval_ctx, value, d=u'', attribute=None): - """Return a string which is the concatenation of the strings in the - sequence. The separator between elements is an empty string per - default, you can define it with the optional parameter: - - .. sourcecode:: jinja - - {{ [1, 2, 3]|join('|') }} - -> 1|2|3 - - {{ [1, 2, 3]|join }} - -> 123 - - It is also possible to join certain attributes of an object: - - .. sourcecode:: jinja - - {{ users|join(', ', attribute='username') }} - - .. versionadded:: 2.6 - The `attribute` parameter was added. - """ - if attribute is not None: - value = imap(make_attrgetter(eval_ctx.environment, attribute), value) - - # no automatic escaping? joining is a lot eaiser then - if not eval_ctx.autoescape: - return text_type(d).join(imap(text_type, value)) - - # if the delimiter doesn't have an html representation we check - # if any of the items has. If yes we do a coercion to Markup - if not hasattr(d, '__html__'): - value = list(value) - do_escape = False - for idx, item in enumerate(value): - if hasattr(item, '__html__'): - do_escape = True - else: - value[idx] = text_type(item) - if do_escape: - d = escape(d) - else: - d = text_type(d) - return d.join(value) - - # no html involved, to normal joining - return soft_unicode(d).join(imap(soft_unicode, value)) - - -def do_center(value, width=80): - """Centers the value in a field of a given width.""" - return text_type(value).center(width) - - -@environmentfilter -def do_first(environment, seq): - """Return the first item of a sequence.""" - try: - return next(iter(seq)) - except StopIteration: - return environment.undefined('No first item, sequence was empty.') - - -@environmentfilter -def do_last(environment, seq): - """Return the last item of a sequence.""" - try: - return next(iter(reversed(seq))) - except StopIteration: - return environment.undefined('No last item, sequence was empty.') - - -@contextfilter -def do_random(context, seq): - """Return a random item from the sequence.""" - try: - return random.choice(seq) - except IndexError: - return context.environment.undefined('No random item, sequence was empty.') - - -def do_filesizeformat(value, binary=False): - """Format the value like a 'human-readable' file size (i.e. 13 kB, - 4.1 MB, 102 Bytes, etc). Per default decimal prefixes are used (Mega, - Giga, etc.), if the second parameter is set to `True` the binary - prefixes are used (Mebi, Gibi). - """ - bytes = float(value) - base = binary and 1024 or 1000 - prefixes = [ - (binary and 'KiB' or 'kB'), - (binary and 'MiB' or 'MB'), - (binary and 'GiB' or 'GB'), - (binary and 'TiB' or 'TB'), - (binary and 'PiB' or 'PB'), - (binary and 'EiB' or 'EB'), - (binary and 'ZiB' or 'ZB'), - (binary and 'YiB' or 'YB') - ] - if bytes == 1: - return '1 Byte' - elif bytes < base: - return '%d Bytes' % bytes - else: - for i, prefix in enumerate(prefixes): - unit = base ** (i + 2) - if bytes < unit: - return '%.1f %s' % ((base * bytes / unit), prefix) - return '%.1f %s' % ((base * bytes / unit), prefix) - - -def do_pprint(value, verbose=False): - """Pretty print a variable. Useful for debugging. - - With Jinja 1.2 onwards you can pass it a parameter. If this parameter - is truthy the output will be more verbose (this requires `pretty`) - """ - return pformat(value, verbose=verbose) - - -@evalcontextfilter -def do_urlize(eval_ctx, value, trim_url_limit=None, nofollow=False, - target=None, rel=None): - """Converts URLs in plain text into clickable links. - - If you pass the filter an additional integer it will shorten the urls - to that number. Also a third argument exists that makes the urls - "nofollow": - - .. sourcecode:: jinja - - {{ mytext|urlize(40, true) }} - links are shortened to 40 chars and defined with rel="nofollow" - - If *target* is specified, the ``target`` attribute will be added to the - ``<a>`` tag: - - .. sourcecode:: jinja - - {{ mytext|urlize(40, target='_blank') }} - - .. versionchanged:: 2.8+ - The *target* parameter was added. - """ - policies = eval_ctx.environment.policies - rel = set((rel or '').split() or []) - if nofollow: - rel.add('nofollow') - rel.update((policies['urlize.rel'] or '').split()) - if target is None: - target = policies['urlize.target'] - rel = ' '.join(sorted(rel)) or None - rv = urlize(value, trim_url_limit, rel=rel, target=target) - if eval_ctx.autoescape: - rv = Markup(rv) - return rv - - -def do_indent( - s, width=4, first=False, blank=False, indentfirst=None -): - """Return a copy of the string with each line indented by 4 spaces. The - first line and blank lines are not indented by default. - - :param width: Number of spaces to indent by. - :param first: Don't skip indenting the first line. - :param blank: Don't skip indenting empty lines. - - .. versionchanged:: 2.10 - Blank lines are not indented by default. - - Rename the ``indentfirst`` argument to ``first``. - """ - if indentfirst is not None: - warnings.warn(DeprecationWarning( - 'The "indentfirst" argument is renamed to "first".' - ), stacklevel=2) - first = indentfirst - - s += u'\n' # this quirk is necessary for splitlines method - indention = u' ' * width - - if blank: - rv = (u'\n' + indention).join(s.splitlines()) - else: - lines = s.splitlines() - rv = lines.pop(0) - - if lines: - rv += u'\n' + u'\n'.join( - indention + line if line else line for line in lines - ) - - if first: - rv = indention + rv - - return rv - - -@environmentfilter -def do_truncate(env, s, length=255, killwords=False, end='...', leeway=None): - """Return a truncated copy of the string. The length is specified - with the first parameter which defaults to ``255``. If the second - parameter is ``true`` the filter will cut the text at length. Otherwise - it will discard the last word. If the text was in fact - truncated it will append an ellipsis sign (``"..."``). If you want a - different ellipsis sign than ``"..."`` you can specify it using the - third parameter. Strings that only exceed the length by the tolerance - margin given in the fourth parameter will not be truncated. - - .. sourcecode:: jinja - - {{ "foo bar baz qux"|truncate(9) }} - -> "foo..." - {{ "foo bar baz qux"|truncate(9, True) }} - -> "foo ba..." - {{ "foo bar baz qux"|truncate(11) }} - -> "foo bar baz qux" - {{ "foo bar baz qux"|truncate(11, False, '...', 0) }} - -> "foo bar..." - - The default leeway on newer Jinja2 versions is 5 and was 0 before but - can be reconfigured globally. - """ - if leeway is None: - leeway = env.policies['truncate.leeway'] - assert length >= len(end), 'expected length >= %s, got %s' % (len(end), length) - assert leeway >= 0, 'expected leeway >= 0, got %s' % leeway - if len(s) <= length + leeway: - return s - if killwords: - return s[:length - len(end)] + end - result = s[:length - len(end)].rsplit(' ', 1)[0] - return result + end - - -@environmentfilter -def do_wordwrap(environment, s, width=79, break_long_words=True, - wrapstring=None): - """ - Return a copy of the string passed to the filter wrapped after - ``79`` characters. You can override this default using the first - parameter. If you set the second parameter to `false` Jinja will not - split words apart if they are longer than `width`. By default, the newlines - will be the default newlines for the environment, but this can be changed - using the wrapstring keyword argument. - - .. versionadded:: 2.7 - Added support for the `wrapstring` parameter. - """ - if not wrapstring: - wrapstring = environment.newline_sequence - import textwrap - return wrapstring.join(textwrap.wrap(s, width=width, expand_tabs=False, - replace_whitespace=False, - break_long_words=break_long_words)) - - -def do_wordcount(s): - """Count the words in that string.""" - return len(_word_re.findall(s)) - - -def do_int(value, default=0, base=10): - """Convert the value into an integer. If the - conversion doesn't work it will return ``0``. You can - override this default using the first parameter. You - can also override the default base (10) in the second - parameter, which handles input with prefixes such as - 0b, 0o and 0x for bases 2, 8 and 16 respectively. - The base is ignored for decimal numbers and non-string values. - """ - try: - if isinstance(value, string_types): - return int(value, base) - return int(value) - except (TypeError, ValueError): - # this quirk is necessary so that "42.23"|int gives 42. - try: - return int(float(value)) - except (TypeError, ValueError): - return default - - -def do_float(value, default=0.0): - """Convert the value into a floating point number. If the - conversion doesn't work it will return ``0.0``. You can - override this default using the first parameter. - """ - try: - return float(value) - except (TypeError, ValueError): - return default - - -def do_format(value, *args, **kwargs): - """ - Apply python string formatting on an object: - - .. sourcecode:: jinja - - {{ "%s - %s"|format("Hello?", "Foo!") }} - -> Hello? - Foo! - """ - if args and kwargs: - raise FilterArgumentError('can\'t handle positional and keyword ' - 'arguments at the same time') - return soft_unicode(value) % (kwargs or args) - - -def do_trim(value): - """Strip leading and trailing whitespace.""" - return soft_unicode(value).strip() - - -def do_striptags(value): - """Strip SGML/XML tags and replace adjacent whitespace by one space. - """ - if hasattr(value, '__html__'): - value = value.__html__() - return Markup(text_type(value)).striptags() - - -def do_slice(value, slices, fill_with=None): - """Slice an iterator and return a list of lists containing - those items. Useful if you want to create a div containing - three ul tags that represent columns: - - .. sourcecode:: html+jinja - - <div class="columwrapper"> - {%- for column in items|slice(3) %} - <ul class="column-{{ loop.index }}"> - {%- for item in column %} - <li>{{ item }}</li> - {%- endfor %} - </ul> - {%- endfor %} - </div> - - If you pass it a second argument it's used to fill missing - values on the last iteration. - """ - seq = list(value) - length = len(seq) - items_per_slice = length // slices - slices_with_extra = length % slices - offset = 0 - for slice_number in range(slices): - start = offset + slice_number * items_per_slice - if slice_number < slices_with_extra: - offset += 1 - end = offset + (slice_number + 1) * items_per_slice - tmp = seq[start:end] - if fill_with is not None and slice_number >= slices_with_extra: - tmp.append(fill_with) - yield tmp - - -def do_batch(value, linecount, fill_with=None): - """ - A filter that batches items. It works pretty much like `slice` - just the other way round. It returns a list of lists with the - given number of items. If you provide a second parameter this - is used to fill up missing items. See this example: - - .. sourcecode:: html+jinja - - <table> - {%- for row in items|batch(3, '&nbsp;') %} - <tr> - {%- for column in row %} - <td>{{ column }}</td> - {%- endfor %} - </tr> - {%- endfor %} - </table> - """ - tmp = [] - for item in value: - if len(tmp) == linecount: - yield tmp - tmp = [] - tmp.append(item) - if tmp: - if fill_with is not None and len(tmp) < linecount: - tmp += [fill_with] * (linecount - len(tmp)) - yield tmp - - -def do_round(value, precision=0, method='common'): - """Round the number to a given precision. The first - parameter specifies the precision (default is ``0``), the - second the rounding method: - - - ``'common'`` rounds either up or down - - ``'ceil'`` always rounds up - - ``'floor'`` always rounds down - - If you don't specify a method ``'common'`` is used. - - .. sourcecode:: jinja - - {{ 42.55|round }} - -> 43.0 - {{ 42.55|round(1, 'floor') }} - -> 42.5 - - Note that even if rounded to 0 precision, a float is returned. If - you need a real integer, pipe it through `int`: - - .. sourcecode:: jinja - - {{ 42.55|round|int }} - -> 43 - """ - if not method in ('common', 'ceil', 'floor'): - raise FilterArgumentError('method must be common, ceil or floor') - if method == 'common': - return round(value, precision) - func = getattr(math, method) - return func(value * (10 ** precision)) / (10 ** precision) - - -# Use a regular tuple repr here. This is what we did in the past and we -# really want to hide this custom type as much as possible. In particular -# we do not want to accidentally expose an auto generated repr in case -# people start to print this out in comments or something similar for -# debugging. -_GroupTuple = namedtuple('_GroupTuple', ['grouper', 'list']) -_GroupTuple.__repr__ = tuple.__repr__ -_GroupTuple.__str__ = tuple.__str__ - -@environmentfilter -def do_groupby(environment, value, attribute): - """Group a sequence of objects by a common attribute. - - If you for example have a list of dicts or objects that represent persons - with `gender`, `first_name` and `last_name` attributes and you want to - group all users by genders you can do something like the following - snippet: - - .. sourcecode:: html+jinja - - <ul> - {% for group in persons|groupby('gender') %} - <li>{{ group.grouper }}<ul> - {% for person in group.list %} - <li>{{ person.first_name }} {{ person.last_name }}</li> - {% endfor %}</ul></li> - {% endfor %} - </ul> - - Additionally it's possible to use tuple unpacking for the grouper and - list: - - .. sourcecode:: html+jinja - - <ul> - {% for grouper, list in persons|groupby('gender') %} - ... - {% endfor %} - </ul> - - As you can see the item we're grouping by is stored in the `grouper` - attribute and the `list` contains all the objects that have this grouper - in common. - - .. versionchanged:: 2.6 - It's now possible to use dotted notation to group by the child - attribute of another attribute. - """ - expr = make_attrgetter(environment, attribute) - return [_GroupTuple(key, list(values)) for key, values - in groupby(sorted(value, key=expr), expr)] - - -@environmentfilter -def do_sum(environment, iterable, attribute=None, start=0): - """Returns the sum of a sequence of numbers plus the value of parameter - 'start' (which defaults to 0). When the sequence is empty it returns - start. - - It is also possible to sum up only certain attributes: - - .. sourcecode:: jinja - - Total: {{ items|sum(attribute='price') }} - - .. versionchanged:: 2.6 - The `attribute` parameter was added to allow suming up over - attributes. Also the `start` parameter was moved on to the right. - """ - if attribute is not None: - iterable = imap(make_attrgetter(environment, attribute), iterable) - return sum(iterable, start) - - -def do_list(value): - """Convert the value into a list. If it was a string the returned list - will be a list of characters. - """ - return list(value) - - -def do_mark_safe(value): - """Mark the value as safe which means that in an environment with automatic - escaping enabled this variable will not be escaped. - """ - return Markup(value) - - -def do_mark_unsafe(value): - """Mark a value as unsafe. This is the reverse operation for :func:`safe`.""" - return text_type(value) - - -def do_reverse(value): - """Reverse the object or return an iterator that iterates over it the other - way round. - """ - if isinstance(value, string_types): - return value[::-1] - try: - return reversed(value) - except TypeError: - try: - rv = list(value) - rv.reverse() - return rv - except TypeError: - raise FilterArgumentError('argument must be iterable') - - -@environmentfilter -def do_attr(environment, obj, name): - """Get an attribute of an object. ``foo|attr("bar")`` works like - ``foo.bar`` just that always an attribute is returned and items are not - looked up. - - See :ref:`Notes on subscriptions <notes-on-subscriptions>` for more details. - """ - try: - name = str(name) - except UnicodeError: - pass - else: - try: - value = getattr(obj, name) - except AttributeError: - pass - else: - if environment.sandboxed and not \ - environment.is_safe_attribute(obj, name, value): - return environment.unsafe_undefined(obj, name) - return value - return environment.undefined(obj=obj, name=name) - - -@contextfilter -def do_map(*args, **kwargs): - """Applies a filter on a sequence of objects or looks up an attribute. - This is useful when dealing with lists of objects but you are really - only interested in a certain value of it. - - The basic usage is mapping on an attribute. Imagine you have a list - of users but you are only interested in a list of usernames: - - .. sourcecode:: jinja - - Users on this page: {{ users|map(attribute='username')|join(', ') }} - - Alternatively you can let it invoke a filter by passing the name of the - filter and the arguments afterwards. A good example would be applying a - text conversion filter on a sequence: - - .. sourcecode:: jinja - - Users on this page: {{ titles|map('lower')|join(', ') }} - - .. versionadded:: 2.7 - """ - seq, func = prepare_map(args, kwargs) - if seq: - for item in seq: - yield func(item) - - -@contextfilter -def do_select(*args, **kwargs): - """Filters a sequence of objects by applying a test to each object, - and only selecting the objects with the test succeeding. - - If no test is specified, each object will be evaluated as a boolean. - - Example usage: - - .. sourcecode:: jinja - - {{ numbers|select("odd") }} - {{ numbers|select("odd") }} - {{ numbers|select("divisibleby", 3) }} - {{ numbers|select("lessthan", 42) }} - {{ strings|select("equalto", "mystring") }} - - .. versionadded:: 2.7 - """ - return select_or_reject(args, kwargs, lambda x: x, False) - - -@contextfilter -def do_reject(*args, **kwargs): - """Filters a sequence of objects by applying a test to each object, - and rejecting the objects with the test succeeding. - - If no test is specified, each object will be evaluated as a boolean. - - Example usage: - - .. sourcecode:: jinja - - {{ numbers|reject("odd") }} - - .. versionadded:: 2.7 - """ - return select_or_reject(args, kwargs, lambda x: not x, False) - - -@contextfilter -def do_selectattr(*args, **kwargs): - """Filters a sequence of objects by applying a test to the specified - attribute of each object, and only selecting the objects with the - test succeeding. - - If no test is specified, the attribute's value will be evaluated as - a boolean. - - Example usage: - - .. sourcecode:: jinja - - {{ users|selectattr("is_active") }} - {{ users|selectattr("email", "none") }} - - .. versionadded:: 2.7 - """ - return select_or_reject(args, kwargs, lambda x: x, True) - - -@contextfilter -def do_rejectattr(*args, **kwargs): - """Filters a sequence of objects by applying a test to the specified - attribute of each object, and rejecting the objects with the test - succeeding. - - If no test is specified, the attribute's value will be evaluated as - a boolean. - - .. sourcecode:: jinja - - {{ users|rejectattr("is_active") }} - {{ users|rejectattr("email", "none") }} - - .. versionadded:: 2.7 - """ - return select_or_reject(args, kwargs, lambda x: not x, True) - - -@evalcontextfilter -def do_tojson(eval_ctx, value, indent=None): - """Dumps a structure to JSON so that it's safe to use in ``<script>`` - tags. It accepts the same arguments and returns a JSON string. Note that - this is available in templates through the ``|tojson`` filter which will - also mark the result as safe. Due to how this function escapes certain - characters this is safe even if used outside of ``<script>`` tags. - - The following characters are escaped in strings: - - - ``<`` - - ``>`` - - ``&`` - - ``'`` - - This makes it safe to embed such strings in any place in HTML with the - notable exception of double quoted attributes. In that case single - quote your attributes or HTML escape it in addition. - - The indent parameter can be used to enable pretty printing. Set it to - the number of spaces that the structures should be indented with. - - Note that this filter is for use in HTML contexts only. - - .. versionadded:: 2.9 - """ - policies = eval_ctx.environment.policies - dumper = policies['json.dumps_function'] - options = policies['json.dumps_kwargs'] - if indent is not None: - options = dict(options) - options['indent'] = indent - return htmlsafe_json_dumps(value, dumper=dumper, **options) - - -def prepare_map(args, kwargs): - context = args[0] - seq = args[1] - - if len(args) == 2 and 'attribute' in kwargs: - attribute = kwargs.pop('attribute') - if kwargs: - raise FilterArgumentError('Unexpected keyword argument %r' % - next(iter(kwargs))) - func = make_attrgetter(context.environment, attribute) - else: - try: - name = args[2] - args = args[3:] - except LookupError: - raise FilterArgumentError('map requires a filter argument') - func = lambda item: context.environment.call_filter( - name, item, args, kwargs, context=context) - - return seq, func - - -def prepare_select_or_reject(args, kwargs, modfunc, lookup_attr): - context = args[0] - seq = args[1] - if lookup_attr: - try: - attr = args[2] - except LookupError: - raise FilterArgumentError('Missing parameter for attribute name') - transfunc = make_attrgetter(context.environment, attr) - off = 1 - else: - off = 0 - transfunc = lambda x: x - - try: - name = args[2 + off] - args = args[3 + off:] - func = lambda item: context.environment.call_test( - name, item, args, kwargs) - except LookupError: - func = bool - - return seq, lambda item: modfunc(func(transfunc(item))) - - -def select_or_reject(args, kwargs, modfunc, lookup_attr): - seq, func = prepare_select_or_reject(args, kwargs, modfunc, lookup_attr) - if seq: - for item in seq: - if func(item): - yield item - - -FILTERS = { - 'abs': abs, - 'attr': do_attr, - 'batch': do_batch, - 'capitalize': do_capitalize, - 'center': do_center, - 'count': len, - 'd': do_default, - 'default': do_default, - 'dictsort': do_dictsort, - 'e': escape, - 'escape': escape, - 'filesizeformat': do_filesizeformat, - 'first': do_first, - 'float': do_float, - 'forceescape': do_forceescape, - 'format': do_format, - 'groupby': do_groupby, - 'indent': do_indent, - 'int': do_int, - 'join': do_join, - 'last': do_last, - 'length': len, - 'list': do_list, - 'lower': do_lower, - 'map': do_map, - 'min': do_min, - 'max': do_max, - 'pprint': do_pprint, - 'random': do_random, - 'reject': do_reject, - 'rejectattr': do_rejectattr, - 'replace': do_replace, - 'reverse': do_reverse, - 'round': do_round, - 'safe': do_mark_safe, - 'select': do_select, - 'selectattr': do_selectattr, - 'slice': do_slice, - 'sort': do_sort, - 'string': soft_unicode, - 'striptags': do_striptags, - 'sum': do_sum, - 'title': do_title, - 'trim': do_trim, - 'truncate': do_truncate, - 'unique': do_unique, - 'upper': do_upper, - 'urlencode': do_urlencode, - 'urlize': do_urlize, - 'wordcount': do_wordcount, - 'wordwrap': do_wordwrap, - 'xmlattr': do_xmlattr, - 'tojson': do_tojson, -} diff --git a/python/jinja2/idtracking.py b/python/jinja2/idtracking.py deleted file mode 100644 index 491bfe0..0000000 --- a/python/jinja2/idtracking.py +++ /dev/null @@ -1,286 +0,0 @@ -from jinja2.visitor import NodeVisitor -from jinja2._compat import iteritems - - -VAR_LOAD_PARAMETER = 'param' -VAR_LOAD_RESOLVE = 'resolve' -VAR_LOAD_ALIAS = 'alias' -VAR_LOAD_UNDEFINED = 'undefined' - - -def find_symbols(nodes, parent_symbols=None): - sym = Symbols(parent=parent_symbols) - visitor = FrameSymbolVisitor(sym) - for node in nodes: - visitor.visit(node) - return sym - - -def symbols_for_node(node, parent_symbols=None): - sym = Symbols(parent=parent_symbols) - sym.analyze_node(node) - return sym - - -class Symbols(object): - - def __init__(self, parent=None, level=None): - if level is None: - if parent is None: - level = 0 - else: - level = parent.level + 1 - self.level = level - self.parent = parent - self.refs = {} - self.loads = {} - self.stores = set() - - def analyze_node(self, node, **kwargs): - visitor = RootVisitor(self) - visitor.visit(node, **kwargs) - - def _define_ref(self, name, load=None): - ident = 'l_%d_%s' % (self.level, name) - self.refs[name] = ident - if load is not None: - self.loads[ident] = load - return ident - - def find_load(self, target): - if target in self.loads: - return self.loads[target] - if self.parent is not None: - return self.parent.find_load(target) - - def find_ref(self, name): - if name in self.refs: - return self.refs[name] - if self.parent is not None: - return self.parent.find_ref(name) - - def ref(self, name): - rv = self.find_ref(name) - if rv is None: - raise AssertionError('Tried to resolve a name to a reference that ' - 'was unknown to the frame (%r)' % name) - return rv - - def copy(self): - rv = object.__new__(self.__class__) - rv.__dict__.update(self.__dict__) - rv.refs = self.refs.copy() - rv.loads = self.loads.copy() - rv.stores = self.stores.copy() - return rv - - def store(self, name): - self.stores.add(name) - - # If we have not see the name referenced yet, we need to figure - # out what to set it to. - if name not in self.refs: - # If there is a parent scope we check if the name has a - # reference there. If it does it means we might have to alias - # to a variable there. - if self.parent is not None: - outer_ref = self.parent.find_ref(name) - if outer_ref is not None: - self._define_ref(name, load=(VAR_LOAD_ALIAS, outer_ref)) - return - - # Otherwise we can just set it to undefined. - self._define_ref(name, load=(VAR_LOAD_UNDEFINED, None)) - - def declare_parameter(self, name): - self.stores.add(name) - return self._define_ref(name, load=(VAR_LOAD_PARAMETER, None)) - - def load(self, name): - target = self.find_ref(name) - if target is None: - self._define_ref(name, load=(VAR_LOAD_RESOLVE, name)) - - def branch_update(self, branch_symbols): - stores = {} - for branch in branch_symbols: - for target in branch.stores: - if target in self.stores: - continue - stores[target] = stores.get(target, 0) + 1 - - for sym in branch_symbols: - self.refs.update(sym.refs) - self.loads.update(sym.loads) - self.stores.update(sym.stores) - - for name, branch_count in iteritems(stores): - if branch_count == len(branch_symbols): - continue - target = self.find_ref(name) - assert target is not None, 'should not happen' - - if self.parent is not None: - outer_target = self.parent.find_ref(name) - if outer_target is not None: - self.loads[target] = (VAR_LOAD_ALIAS, outer_target) - continue - self.loads[target] = (VAR_LOAD_RESOLVE, name) - - def dump_stores(self): - rv = {} - node = self - while node is not None: - for name in node.stores: - if name not in rv: - rv[name] = self.find_ref(name) - node = node.parent - return rv - - def dump_param_targets(self): - rv = set() - node = self - while node is not None: - for target, (instr, _) in iteritems(self.loads): - if instr == VAR_LOAD_PARAMETER: - rv.add(target) - node = node.parent - return rv - - -class RootVisitor(NodeVisitor): - - def __init__(self, symbols): - self.sym_visitor = FrameSymbolVisitor(symbols) - - def _simple_visit(self, node, **kwargs): - for child in node.iter_child_nodes(): - self.sym_visitor.visit(child) - - visit_Template = visit_Block = visit_Macro = visit_FilterBlock = \ - visit_Scope = visit_If = visit_ScopedEvalContextModifier = \ - _simple_visit - - def visit_AssignBlock(self, node, **kwargs): - for child in node.body: - self.sym_visitor.visit(child) - - def visit_CallBlock(self, node, **kwargs): - for child in node.iter_child_nodes(exclude=('call',)): - self.sym_visitor.visit(child) - - def visit_OverlayScope(self, node, **kwargs): - for child in node.body: - self.sym_visitor.visit(child) - - def visit_For(self, node, for_branch='body', **kwargs): - if for_branch == 'body': - self.sym_visitor.visit(node.target, store_as_param=True) - branch = node.body - elif for_branch == 'else': - branch = node.else_ - elif for_branch == 'test': - self.sym_visitor.visit(node.target, store_as_param=True) - if node.test is not None: - self.sym_visitor.visit(node.test) - return - else: - raise RuntimeError('Unknown for branch') - for item in branch or (): - self.sym_visitor.visit(item) - - def visit_With(self, node, **kwargs): - for target in node.targets: - self.sym_visitor.visit(target) - for child in node.body: - self.sym_visitor.visit(child) - - def generic_visit(self, node, *args, **kwargs): - raise NotImplementedError('Cannot find symbols for %r' % - node.__class__.__name__) - - -class FrameSymbolVisitor(NodeVisitor): - """A visitor for `Frame.inspect`.""" - - def __init__(self, symbols): - self.symbols = symbols - - def visit_Name(self, node, store_as_param=False, **kwargs): - """All assignments to names go through this function.""" - if store_as_param or node.ctx == 'param': - self.symbols.declare_parameter(node.name) - elif node.ctx == 'store': - self.symbols.store(node.name) - elif node.ctx == 'load': - self.symbols.load(node.name) - - def visit_NSRef(self, node, **kwargs): - self.symbols.load(node.name) - - def visit_If(self, node, **kwargs): - self.visit(node.test, **kwargs) - - original_symbols = self.symbols - - def inner_visit(nodes): - self.symbols = rv = original_symbols.copy() - for subnode in nodes: - self.visit(subnode, **kwargs) - self.symbols = original_symbols - return rv - - body_symbols = inner_visit(node.body) - elif_symbols = inner_visit(node.elif_) - else_symbols = inner_visit(node.else_ or ()) - - self.symbols.branch_update([body_symbols, elif_symbols, else_symbols]) - - def visit_Macro(self, node, **kwargs): - self.symbols.store(node.name) - - def visit_Import(self, node, **kwargs): - self.generic_visit(node, **kwargs) - self.symbols.store(node.target) - - def visit_FromImport(self, node, **kwargs): - self.generic_visit(node, **kwargs) - for name in node.names: - if isinstance(name, tuple): - self.symbols.store(name[1]) - else: - self.symbols.store(name) - - def visit_Assign(self, node, **kwargs): - """Visit assignments in the correct order.""" - self.visit(node.node, **kwargs) - self.visit(node.target, **kwargs) - - def visit_For(self, node, **kwargs): - """Visiting stops at for blocks. However the block sequence - is visited as part of the outer scope. - """ - self.visit(node.iter, **kwargs) - - def visit_CallBlock(self, node, **kwargs): - self.visit(node.call, **kwargs) - - def visit_FilterBlock(self, node, **kwargs): - self.visit(node.filter, **kwargs) - - def visit_With(self, node, **kwargs): - for target in node.values: - self.visit(target) - - def visit_AssignBlock(self, node, **kwargs): - """Stop visiting at block assigns.""" - self.visit(node.target, **kwargs) - - def visit_Scope(self, node, **kwargs): - """Stop visiting at scopes.""" - - def visit_Block(self, node, **kwargs): - """Stop visiting at blocks.""" - - def visit_OverlayScope(self, node, **kwargs): - """Do not visit into overlay scopes.""" diff --git a/python/jinja2/lexer.py b/python/jinja2/lexer.py deleted file mode 100644 index 6fd135d..0000000 --- a/python/jinja2/lexer.py +++ /dev/null @@ -1,739 +0,0 @@ -# -*- coding: utf-8 -*- -""" - jinja2.lexer - ~~~~~~~~~~~~ - - This module implements a Jinja / Python combination lexer. The - `Lexer` class provided by this module is used to do some preprocessing - for Jinja. - - On the one hand it filters out invalid operators like the bitshift - operators we don't allow in templates. On the other hand it separates - template code and python code in expressions. - - :copyright: (c) 2017 by the Jinja Team. - :license: BSD, see LICENSE for more details. -""" -import re -from collections import deque -from operator import itemgetter - -from jinja2._compat import implements_iterator, intern, iteritems, text_type -from jinja2.exceptions import TemplateSyntaxError -from jinja2.utils import LRUCache - -# cache for the lexers. Exists in order to be able to have multiple -# environments with the same lexer -_lexer_cache = LRUCache(50) - -# static regular expressions -whitespace_re = re.compile(r'\s+', re.U) -string_re = re.compile(r"('([^'\\]*(?:\\.[^'\\]*)*)'" - r'|"([^"\\]*(?:\\.[^"\\]*)*)")', re.S) -integer_re = re.compile(r'\d+') - -try: - # check if this Python supports Unicode identifiers - compile('föö', '<unknown>', 'eval') -except SyntaxError: - # no Unicode support, use ASCII identifiers - name_re = re.compile(r'[a-zA-Z_][a-zA-Z0-9_]*') - check_ident = False -else: - # Unicode support, build a pattern to match valid characters, and set flag - # to use str.isidentifier to validate during lexing - from jinja2 import _identifier - name_re = re.compile(r'[\w{0}]+'.format(_identifier.pattern)) - check_ident = True - # remove the pattern from memory after building the regex - import sys - del sys.modules['jinja2._identifier'] - import jinja2 - del jinja2._identifier - del _identifier - -float_re = re.compile(r'(?<!\.)\d+\.\d+') -newline_re = re.compile(r'(\r\n|\r|\n)') - -# internal the tokens and keep references to them -TOKEN_ADD = intern('add') -TOKEN_ASSIGN = intern('assign') -TOKEN_COLON = intern('colon') -TOKEN_COMMA = intern('comma') -TOKEN_DIV = intern('div') -TOKEN_DOT = intern('dot') -TOKEN_EQ = intern('eq') -TOKEN_FLOORDIV = intern('floordiv') -TOKEN_GT = intern('gt') -TOKEN_GTEQ = intern('gteq') -TOKEN_LBRACE = intern('lbrace') -TOKEN_LBRACKET = intern('lbracket') -TOKEN_LPAREN = intern('lparen') -TOKEN_LT = intern('lt') -TOKEN_LTEQ = intern('lteq') -TOKEN_MOD = intern('mod') -TOKEN_MUL = intern('mul') -TOKEN_NE = intern('ne') -TOKEN_PIPE = intern('pipe') -TOKEN_POW = intern('pow') -TOKEN_RBRACE = intern('rbrace') -TOKEN_RBRACKET = intern('rbracket') -TOKEN_RPAREN = intern('rparen') -TOKEN_SEMICOLON = intern('semicolon') -TOKEN_SUB = intern('sub') -TOKEN_TILDE = intern('tilde') -TOKEN_WHITESPACE = intern('whitespace') -TOKEN_FLOAT = intern('float') -TOKEN_INTEGER = intern('integer') -TOKEN_NAME = intern('name') -TOKEN_STRING = intern('string') -TOKEN_OPERATOR = intern('operator') -TOKEN_BLOCK_BEGIN = intern('block_begin') -TOKEN_BLOCK_END = intern('block_end') -TOKEN_VARIABLE_BEGIN = intern('variable_begin') -TOKEN_VARIABLE_END = intern('variable_end') -TOKEN_RAW_BEGIN = intern('raw_begin') -TOKEN_RAW_END = intern('raw_end') -TOKEN_COMMENT_BEGIN = intern('comment_begin') -TOKEN_COMMENT_END = intern('comment_end') -TOKEN_COMMENT = intern('comment') -TOKEN_LINESTATEMENT_BEGIN = intern('linestatement_begin') -TOKEN_LINESTATEMENT_END = intern('linestatement_end') -TOKEN_LINECOMMENT_BEGIN = intern('linecomment_begin') -TOKEN_LINECOMMENT_END = intern('linecomment_end') -TOKEN_LINECOMMENT = intern('linecomment') -TOKEN_DATA = intern('data') -TOKEN_INITIAL = intern('initial') -TOKEN_EOF = intern('eof') - -# bind operators to token types -operators = { - '+': TOKEN_ADD, - '-': TOKEN_SUB, - '/': TOKEN_DIV, - '//': TOKEN_FLOORDIV, - '*': TOKEN_MUL, - '%': TOKEN_MOD, - '**': TOKEN_POW, - '~': TOKEN_TILDE, - '[': TOKEN_LBRACKET, - ']': TOKEN_RBRACKET, - '(': TOKEN_LPAREN, - ')': TOKEN_RPAREN, - '{': TOKEN_LBRACE, - '}': TOKEN_RBRACE, - '==': TOKEN_EQ, - '!=': TOKEN_NE, - '>': TOKEN_GT, - '>=': TOKEN_GTEQ, - '<': TOKEN_LT, - '<=': TOKEN_LTEQ, - '=': TOKEN_ASSIGN, - '.': TOKEN_DOT, - ':': TOKEN_COLON, - '|': TOKEN_PIPE, - ',': TOKEN_COMMA, - ';': TOKEN_SEMICOLON -} - -reverse_operators = dict([(v, k) for k, v in iteritems(operators)]) -assert len(operators) == len(reverse_operators), 'operators dropped' -operator_re = re.compile('(%s)' % '|'.join(re.escape(x) for x in - sorted(operators, key=lambda x: -len(x)))) - -ignored_tokens = frozenset([TOKEN_COMMENT_BEGIN, TOKEN_COMMENT, - TOKEN_COMMENT_END, TOKEN_WHITESPACE, - TOKEN_LINECOMMENT_BEGIN, TOKEN_LINECOMMENT_END, - TOKEN_LINECOMMENT]) -ignore_if_empty = frozenset([TOKEN_WHITESPACE, TOKEN_DATA, - TOKEN_COMMENT, TOKEN_LINECOMMENT]) - - -def _describe_token_type(token_type): - if token_type in reverse_operators: - return reverse_operators[token_type] - return { - TOKEN_COMMENT_BEGIN: 'begin of comment', - TOKEN_COMMENT_END: 'end of comment', - TOKEN_COMMENT: 'comment', - TOKEN_LINECOMMENT: 'comment', - TOKEN_BLOCK_BEGIN: 'begin of statement block', - TOKEN_BLOCK_END: 'end of statement block', - TOKEN_VARIABLE_BEGIN: 'begin of print statement', - TOKEN_VARIABLE_END: 'end of print statement', - TOKEN_LINESTATEMENT_BEGIN: 'begin of line statement', - TOKEN_LINESTATEMENT_END: 'end of line statement', - TOKEN_DATA: 'template data / text', - TOKEN_EOF: 'end of template' - }.get(token_type, token_type) - - -def describe_token(token): - """Returns a description of the token.""" - if token.type == 'name': - return token.value - return _describe_token_type(token.type) - - -def describe_token_expr(expr): - """Like `describe_token` but for token expressions.""" - if ':' in expr: - type, value = expr.split(':', 1) - if type == 'name': - return value - else: - type = expr - return _describe_token_type(type) - - -def count_newlines(value): - """Count the number of newline characters in the string. This is - useful for extensions that filter a stream. - """ - return len(newline_re.findall(value)) - - -def compile_rules(environment): - """Compiles all the rules from the environment into a list of rules.""" - e = re.escape - rules = [ - (len(environment.comment_start_string), 'comment', - e(environment.comment_start_string)), - (len(environment.block_start_string), 'block', - e(environment.block_start_string)), - (len(environment.variable_start_string), 'variable', - e(environment.variable_start_string)) - ] - - if environment.line_statement_prefix is not None: - rules.append((len(environment.line_statement_prefix), 'linestatement', - r'^[ \t\v]*' + e(environment.line_statement_prefix))) - if environment.line_comment_prefix is not None: - rules.append((len(environment.line_comment_prefix), 'linecomment', - r'(?:^|(?<=\S))[^\S\r\n]*' + - e(environment.line_comment_prefix))) - - return [x[1:] for x in sorted(rules, reverse=True)] - - -class Failure(object): - """Class that raises a `TemplateSyntaxError` if called. - Used by the `Lexer` to specify known errors. - """ - - def __init__(self, message, cls=TemplateSyntaxError): - self.message = message - self.error_class = cls - - def __call__(self, lineno, filename): - raise self.error_class(self.message, lineno, filename) - - -class Token(tuple): - """Token class.""" - __slots__ = () - lineno, type, value = (property(itemgetter(x)) for x in range(3)) - - def __new__(cls, lineno, type, value): - return tuple.__new__(cls, (lineno, intern(str(type)), value)) - - def __str__(self): - if self.type in reverse_operators: - return reverse_operators[self.type] - elif self.type == 'name': - return self.value - return self.type - - def test(self, expr): - """Test a token against a token expression. This can either be a - token type or ``'token_type:token_value'``. This can only test - against string values and types. - """ - # here we do a regular string equality check as test_any is usually - # passed an iterable of not interned strings. - if self.type == expr: - return True - elif ':' in expr: - return expr.split(':', 1) == [self.type, self.value] - return False - - def test_any(self, *iterable): - """Test against multiple token expressions.""" - for expr in iterable: - if self.test(expr): - return True - return False - - def __repr__(self): - return 'Token(%r, %r, %r)' % ( - self.lineno, - self.type, - self.value - ) - - -@implements_iterator -class TokenStreamIterator(object): - """The iterator for tokenstreams. Iterate over the stream - until the eof token is reached. - """ - - def __init__(self, stream): - self.stream = stream - - def __iter__(self): - return self - - def __next__(self): - token = self.stream.current - if token.type is TOKEN_EOF: - self.stream.close() - raise StopIteration() - next(self.stream) - return token - - -@implements_iterator -class TokenStream(object): - """A token stream is an iterable that yields :class:`Token`\\s. The - parser however does not iterate over it but calls :meth:`next` to go - one token ahead. The current active token is stored as :attr:`current`. - """ - - def __init__(self, generator, name, filename): - self._iter = iter(generator) - self._pushed = deque() - self.name = name - self.filename = filename - self.closed = False - self.current = Token(1, TOKEN_INITIAL, '') - next(self) - - def __iter__(self): - return TokenStreamIterator(self) - - def __bool__(self): - return bool(self._pushed) or self.current.type is not TOKEN_EOF - __nonzero__ = __bool__ # py2 - - eos = property(lambda x: not x, doc="Are we at the end of the stream?") - - def push(self, token): - """Push a token back to the stream.""" - self._pushed.append(token) - - def look(self): - """Look at the next token.""" - old_token = next(self) - result = self.current - self.push(result) - self.current = old_token - return result - - def skip(self, n=1): - """Got n tokens ahead.""" - for x in range(n): - next(self) - - def next_if(self, expr): - """Perform the token test and return the token if it matched. - Otherwise the return value is `None`. - """ - if self.current.test(expr): - return next(self) - - def skip_if(self, expr): - """Like :meth:`next_if` but only returns `True` or `False`.""" - return self.next_if(expr) is not None - - def __next__(self): - """Go one token ahead and return the old one. - - Use the built-in :func:`next` instead of calling this directly. - """ - rv = self.current - if self._pushed: - self.current = self._pushed.popleft() - elif self.current.type is not TOKEN_EOF: - try: - self.current = next(self._iter) - except StopIteration: - self.close() - return rv - - def close(self): - """Close the stream.""" - self.current = Token(self.current.lineno, TOKEN_EOF, '') - self._iter = None - self.closed = True - - def expect(self, expr): - """Expect a given token type and return it. This accepts the same - argument as :meth:`jinja2.lexer.Token.test`. - """ - if not self.current.test(expr): - expr = describe_token_expr(expr) - if self.current.type is TOKEN_EOF: - raise TemplateSyntaxError('unexpected end of template, ' - 'expected %r.' % expr, - self.current.lineno, - self.name, self.filename) - raise TemplateSyntaxError("expected token %r, got %r" % - (expr, describe_token(self.current)), - self.current.lineno, - self.name, self.filename) - try: - return self.current - finally: - next(self) - - -def get_lexer(environment): - """Return a lexer which is probably cached.""" - key = (environment.block_start_string, - environment.block_end_string, - environment.variable_start_string, - environment.variable_end_string, - environment.comment_start_string, - environment.comment_end_string, - environment.line_statement_prefix, - environment.line_comment_prefix, - environment.trim_blocks, - environment.lstrip_blocks, - environment.newline_sequence, - environment.keep_trailing_newline) - lexer = _lexer_cache.get(key) - if lexer is None: - lexer = Lexer(environment) - _lexer_cache[key] = lexer - return lexer - - -class Lexer(object): - """Class that implements a lexer for a given environment. Automatically - created by the environment class, usually you don't have to do that. - - Note that the lexer is not automatically bound to an environment. - Multiple environments can share the same lexer. - """ - - def __init__(self, environment): - # shortcuts - c = lambda x: re.compile(x, re.M | re.S) - e = re.escape - - # lexing rules for tags - tag_rules = [ - (whitespace_re, TOKEN_WHITESPACE, None), - (float_re, TOKEN_FLOAT, None), - (integer_re, TOKEN_INTEGER, None), - (name_re, TOKEN_NAME, None), - (string_re, TOKEN_STRING, None), - (operator_re, TOKEN_OPERATOR, None) - ] - - # assemble the root lexing rule. because "|" is ungreedy - # we have to sort by length so that the lexer continues working - # as expected when we have parsing rules like <% for block and - # <%= for variables. (if someone wants asp like syntax) - # variables are just part of the rules if variable processing - # is required. - root_tag_rules = compile_rules(environment) - - # block suffix if trimming is enabled - block_suffix_re = environment.trim_blocks and '\\n?' or '' - - # strip leading spaces if lstrip_blocks is enabled - prefix_re = {} - if environment.lstrip_blocks: - # use '{%+' to manually disable lstrip_blocks behavior - no_lstrip_re = e('+') - # detect overlap between block and variable or comment strings - block_diff = c(r'^%s(.*)' % e(environment.block_start_string)) - # make sure we don't mistake a block for a variable or a comment - m = block_diff.match(environment.comment_start_string) - no_lstrip_re += m and r'|%s' % e(m.group(1)) or '' - m = block_diff.match(environment.variable_start_string) - no_lstrip_re += m and r'|%s' % e(m.group(1)) or '' - - # detect overlap between comment and variable strings - comment_diff = c(r'^%s(.*)' % e(environment.comment_start_string)) - m = comment_diff.match(environment.variable_start_string) - no_variable_re = m and r'(?!%s)' % e(m.group(1)) or '' - - lstrip_re = r'^[ \t]*' - block_prefix_re = r'%s%s(?!%s)|%s\+?' % ( - lstrip_re, - e(environment.block_start_string), - no_lstrip_re, - e(environment.block_start_string), - ) - comment_prefix_re = r'%s%s%s|%s\+?' % ( - lstrip_re, - e(environment.comment_start_string), - no_variable_re, - e(environment.comment_start_string), - ) - prefix_re['block'] = block_prefix_re - prefix_re['comment'] = comment_prefix_re - else: - block_prefix_re = '%s' % e(environment.block_start_string) - - self.newline_sequence = environment.newline_sequence - self.keep_trailing_newline = environment.keep_trailing_newline - - # global lexing rules - self.rules = { - 'root': [ - # directives - (c('(.*?)(?:%s)' % '|'.join( - [r'(?P<raw_begin>(?:\s*%s\-|%s)\s*raw\s*(?:\-%s\s*|%s))' % ( - e(environment.block_start_string), - block_prefix_re, - e(environment.block_end_string), - e(environment.block_end_string) - )] + [ - r'(?P<%s_begin>\s*%s\-|%s)' % (n, r, prefix_re.get(n,r)) - for n, r in root_tag_rules - ])), (TOKEN_DATA, '#bygroup'), '#bygroup'), - # data - (c('.+'), TOKEN_DATA, None) - ], - # comments - TOKEN_COMMENT_BEGIN: [ - (c(r'(.*?)((?:\-%s\s*|%s)%s)' % ( - e(environment.comment_end_string), - e(environment.comment_end_string), - block_suffix_re - )), (TOKEN_COMMENT, TOKEN_COMMENT_END), '#pop'), - (c('(.)'), (Failure('Missing end of comment tag'),), None) - ], - # blocks - TOKEN_BLOCK_BEGIN: [ - (c(r'(?:\-%s\s*|%s)%s' % ( - e(environment.block_end_string), - e(environment.block_end_string), - block_suffix_re - )), TOKEN_BLOCK_END, '#pop'), - ] + tag_rules, - # variables - TOKEN_VARIABLE_BEGIN: [ - (c(r'\-%s\s*|%s' % ( - e(environment.variable_end_string), - e(environment.variable_end_string) - )), TOKEN_VARIABLE_END, '#pop') - ] + tag_rules, - # raw block - TOKEN_RAW_BEGIN: [ - (c(r'(.*?)((?:\s*%s\-|%s)\s*endraw\s*(?:\-%s\s*|%s%s))' % ( - e(environment.block_start_string), - block_prefix_re, - e(environment.block_end_string), - e(environment.block_end_string), - block_suffix_re - )), (TOKEN_DATA, TOKEN_RAW_END), '#pop'), - (c('(.)'), (Failure('Missing end of raw directive'),), None) - ], - # line statements - TOKEN_LINESTATEMENT_BEGIN: [ - (c(r'\s*(\n|$)'), TOKEN_LINESTATEMENT_END, '#pop') - ] + tag_rules, - # line comments - TOKEN_LINECOMMENT_BEGIN: [ - (c(r'(.*?)()(?=\n|$)'), (TOKEN_LINECOMMENT, - TOKEN_LINECOMMENT_END), '#pop') - ] - } - - def _normalize_newlines(self, value): - """Called for strings and template data to normalize it to unicode.""" - return newline_re.sub(self.newline_sequence, value) - - def tokenize(self, source, name=None, filename=None, state=None): - """Calls tokeniter + tokenize and wraps it in a token stream. - """ - stream = self.tokeniter(source, name, filename, state) - return TokenStream(self.wrap(stream, name, filename), name, filename) - - def wrap(self, stream, name=None, filename=None): - """This is called with the stream as returned by `tokenize` and wraps - every token in a :class:`Token` and converts the value. - """ - for lineno, token, value in stream: - if token in ignored_tokens: - continue - elif token == 'linestatement_begin': - token = 'block_begin' - elif token == 'linestatement_end': - token = 'block_end' - # we are not interested in those tokens in the parser - elif token in ('raw_begin', 'raw_end'): - continue - elif token == 'data': - value = self._normalize_newlines(value) - elif token == 'keyword': - token = value - elif token == 'name': - value = str(value) - if check_ident and not value.isidentifier(): - raise TemplateSyntaxError( - 'Invalid character in identifier', - lineno, name, filename) - elif token == 'string': - # try to unescape string - try: - value = self._normalize_newlines(value[1:-1]) \ - .encode('ascii', 'backslashreplace') \ - .decode('unicode-escape') - except Exception as e: - msg = str(e).split(':')[-1].strip() - raise TemplateSyntaxError(msg, lineno, name, filename) - elif token == 'integer': - value = int(value) - elif token == 'float': - value = float(value) - elif token == 'operator': - token = operators[value] - yield Token(lineno, token, value) - - def tokeniter(self, source, name, filename=None, state=None): - """This method tokenizes the text and returns the tokens in a - generator. Use this method if you just want to tokenize a template. - """ - source = text_type(source) - lines = source.splitlines() - if self.keep_trailing_newline and source: - for newline in ('\r\n', '\r', '\n'): - if source.endswith(newline): - lines.append('') - break - source = '\n'.join(lines) - pos = 0 - lineno = 1 - stack = ['root'] - if state is not None and state != 'root': - assert state in ('variable', 'block'), 'invalid state' - stack.append(state + '_begin') - else: - state = 'root' - statetokens = self.rules[stack[-1]] - source_length = len(source) - - balancing_stack = [] - - while 1: - # tokenizer loop - for regex, tokens, new_state in statetokens: - m = regex.match(source, pos) - # if no match we try again with the next rule - if m is None: - continue - - # we only match blocks and variables if braces / parentheses - # are balanced. continue parsing with the lower rule which - # is the operator rule. do this only if the end tags look - # like operators - if balancing_stack and \ - tokens in ('variable_end', 'block_end', - 'linestatement_end'): - continue - - # tuples support more options - if isinstance(tokens, tuple): - for idx, token in enumerate(tokens): - # failure group - if token.__class__ is Failure: - raise token(lineno, filename) - # bygroup is a bit more complex, in that case we - # yield for the current token the first named - # group that matched - elif token == '#bygroup': - for key, value in iteritems(m.groupdict()): - if value is not None: - yield lineno, key, value - lineno += value.count('\n') - break - else: - raise RuntimeError('%r wanted to resolve ' - 'the token dynamically' - ' but no group matched' - % regex) - # normal group - else: - data = m.group(idx + 1) - if data or token not in ignore_if_empty: - yield lineno, token, data - lineno += data.count('\n') - - # strings as token just are yielded as it. - else: - data = m.group() - # update brace/parentheses balance - if tokens == 'operator': - if data == '{': - balancing_stack.append('}') - elif data == '(': - balancing_stack.append(')') - elif data == '[': - balancing_stack.append(']') - elif data in ('}', ')', ']'): - if not balancing_stack: - raise TemplateSyntaxError('unexpected \'%s\'' % - data, lineno, name, - filename) - expected_op = balancing_stack.pop() - if expected_op != data: - raise TemplateSyntaxError('unexpected \'%s\', ' - 'expected \'%s\'' % - (data, expected_op), - lineno, name, - filename) - # yield items - if data or tokens not in ignore_if_empty: - yield lineno, tokens, data - lineno += data.count('\n') - - # fetch new position into new variable so that we can check - # if there is a internal parsing error which would result - # in an infinite loop - pos2 = m.end() - - # handle state changes - if new_state is not None: - # remove the uppermost state - if new_state == '#pop': - stack.pop() - # resolve the new state by group checking - elif new_state == '#bygroup': - for key, value in iteritems(m.groupdict()): - if value is not None: - stack.append(key) - break - else: - raise RuntimeError('%r wanted to resolve the ' - 'new state dynamically but' - ' no group matched' % - regex) - # direct state name given - else: - stack.append(new_state) - statetokens = self.rules[stack[-1]] - # we are still at the same position and no stack change. - # this means a loop without break condition, avoid that and - # raise error - elif pos2 == pos: - raise RuntimeError('%r yielded empty string without ' - 'stack change' % regex) - # publish new function and start again - pos = pos2 - break - # if loop terminated without break we haven't found a single match - # either we are at the end of the file or we have a problem - else: - # end of text - if pos >= source_length: - return - # something went wrong - raise TemplateSyntaxError('unexpected char %r at %d' % - (source[pos], pos), lineno, - name, filename) diff --git a/python/jinja2/loaders.py b/python/jinja2/loaders.py deleted file mode 100644 index 4c79793..0000000 --- a/python/jinja2/loaders.py +++ /dev/null @@ -1,481 +0,0 @@ -# -*- coding: utf-8 -*- -""" - jinja2.loaders - ~~~~~~~~~~~~~~ - - Jinja loader classes. - - :copyright: (c) 2017 by the Jinja Team. - :license: BSD, see LICENSE for more details. -""" -import os -import sys -import weakref -from types import ModuleType -from os import path -from hashlib import sha1 -from jinja2.exceptions import TemplateNotFound -from jinja2.utils import open_if_exists, internalcode -from jinja2._compat import string_types, iteritems - - -def split_template_path(template): - """Split a path into segments and perform a sanity check. If it detects - '..' in the path it will raise a `TemplateNotFound` error. - """ - pieces = [] - for piece in template.split('/'): - if path.sep in piece \ - or (path.altsep and path.altsep in piece) or \ - piece == path.pardir: - raise TemplateNotFound(template) - elif piece and piece != '.': - pieces.append(piece) - return pieces - - -class BaseLoader(object): - """Baseclass for all loaders. Subclass this and override `get_source` to - implement a custom loading mechanism. The environment provides a - `get_template` method that calls the loader's `load` method to get the - :class:`Template` object. - - A very basic example for a loader that looks up templates on the file - system could look like this:: - - from jinja2 import BaseLoader, TemplateNotFound - from os.path import join, exists, getmtime - - class MyLoader(BaseLoader): - - def __init__(self, path): - self.path = path - - def get_source(self, environment, template): - path = join(self.path, template) - if not exists(path): - raise TemplateNotFound(template) - mtime = getmtime(path) - with file(path) as f: - source = f.read().decode('utf-8') - return source, path, lambda: mtime == getmtime(path) - """ - - #: if set to `False` it indicates that the loader cannot provide access - #: to the source of templates. - #: - #: .. versionadded:: 2.4 - has_source_access = True - - def get_source(self, environment, template): - """Get the template source, filename and reload helper for a template. - It's passed the environment and template name and has to return a - tuple in the form ``(source, filename, uptodate)`` or raise a - `TemplateNotFound` error if it can't locate the template. - - The source part of the returned tuple must be the source of the - template as unicode string or a ASCII bytestring. The filename should - be the name of the file on the filesystem if it was loaded from there, - otherwise `None`. The filename is used by python for the tracebacks - if no loader extension is used. - - The last item in the tuple is the `uptodate` function. If auto - reloading is enabled it's always called to check if the template - changed. No arguments are passed so the function must store the - old state somewhere (for example in a closure). If it returns `False` - the template will be reloaded. - """ - if not self.has_source_access: - raise RuntimeError('%s cannot provide access to the source' % - self.__class__.__name__) - raise TemplateNotFound(template) - - def list_templates(self): - """Iterates over all templates. If the loader does not support that - it should raise a :exc:`TypeError` which is the default behavior. - """ - raise TypeError('this loader cannot iterate over all templates') - - @internalcode - def load(self, environment, name, globals=None): - """Loads a template. This method looks up the template in the cache - or loads one by calling :meth:`get_source`. Subclasses should not - override this method as loaders working on collections of other - loaders (such as :class:`PrefixLoader` or :class:`ChoiceLoader`) - will not call this method but `get_source` directly. - """ - code = None - if globals is None: - globals = {} - - # first we try to get the source for this template together - # with the filename and the uptodate function. - source, filename, uptodate = self.get_source(environment, name) - - # try to load the code from the bytecode cache if there is a - # bytecode cache configured. - bcc = environment.bytecode_cache - if bcc is not None: - bucket = bcc.get_bucket(environment, name, filename, source) - code = bucket.code - - # if we don't have code so far (not cached, no longer up to - # date) etc. we compile the template - if code is None: - code = environment.compile(source, name, filename) - - # if the bytecode cache is available and the bucket doesn't - # have a code so far, we give the bucket the new code and put - # it back to the bytecode cache. - if bcc is not None and bucket.code is None: - bucket.code = code - bcc.set_bucket(bucket) - - return environment.template_class.from_code(environment, code, - globals, uptodate) - - -class FileSystemLoader(BaseLoader): - """Loads templates from the file system. This loader can find templates - in folders on the file system and is the preferred way to load them. - - The loader takes the path to the templates as string, or if multiple - locations are wanted a list of them which is then looked up in the - given order:: - - >>> loader = FileSystemLoader('/path/to/templates') - >>> loader = FileSystemLoader(['/path/to/templates', '/other/path']) - - Per default the template encoding is ``'utf-8'`` which can be changed - by setting the `encoding` parameter to something else. - - To follow symbolic links, set the *followlinks* parameter to ``True``:: - - >>> loader = FileSystemLoader('/path/to/templates', followlinks=True) - - .. versionchanged:: 2.8+ - The *followlinks* parameter was added. - """ - - def __init__(self, searchpath, encoding='utf-8', followlinks=False): - if isinstance(searchpath, string_types): - searchpath = [searchpath] - self.searchpath = list(searchpath) - self.encoding = encoding - self.followlinks = followlinks - - def get_source(self, environment, template): - pieces = split_template_path(template) - for searchpath in self.searchpath: - filename = path.join(searchpath, *pieces) - f = open_if_exists(filename) - if f is None: - continue - try: - contents = f.read().decode(self.encoding) - finally: - f.close() - - mtime = path.getmtime(filename) - - def uptodate(): - try: - return path.getmtime(filename) == mtime - except OSError: - return False - return contents, filename, uptodate - raise TemplateNotFound(template) - - def list_templates(self): - found = set() - for searchpath in self.searchpath: - walk_dir = os.walk(searchpath, followlinks=self.followlinks) - for dirpath, dirnames, filenames in walk_dir: - for filename in filenames: - template = os.path.join(dirpath, filename) \ - [len(searchpath):].strip(os.path.sep) \ - .replace(os.path.sep, '/') - if template[:2] == './': - template = template[2:] - if template not in found: - found.add(template) - return sorted(found) - - -class PackageLoader(BaseLoader): - """Load templates from python eggs or packages. It is constructed with - the name of the python package and the path to the templates in that - package:: - - loader = PackageLoader('mypackage', 'views') - - If the package path is not given, ``'templates'`` is assumed. - - Per default the template encoding is ``'utf-8'`` which can be changed - by setting the `encoding` parameter to something else. Due to the nature - of eggs it's only possible to reload templates if the package was loaded - from the file system and not a zip file. - """ - - def __init__(self, package_name, package_path='templates', - encoding='utf-8'): - from pkg_resources import DefaultProvider, ResourceManager, \ - get_provider - provider = get_provider(package_name) - self.encoding = encoding - self.manager = ResourceManager() - self.filesystem_bound = isinstance(provider, DefaultProvider) - self.provider = provider - self.package_path = package_path - - def get_source(self, environment, template): - pieces = split_template_path(template) - p = '/'.join((self.package_path,) + tuple(pieces)) - if not self.provider.has_resource(p): - raise TemplateNotFound(template) - - filename = uptodate = None - if self.filesystem_bound: - filename = self.provider.get_resource_filename(self.manager, p) - mtime = path.getmtime(filename) - def uptodate(): - try: - return path.getmtime(filename) == mtime - except OSError: - return False - - source = self.provider.get_resource_string(self.manager, p) - return source.decode(self.encoding), filename, uptodate - - def list_templates(self): - path = self.package_path - if path[:2] == './': - path = path[2:] - elif path == '.': - path = '' - offset = len(path) - results = [] - def _walk(path): - for filename in self.provider.resource_listdir(path): - fullname = path + '/' + filename - if self.provider.resource_isdir(fullname): - _walk(fullname) - else: - results.append(fullname[offset:].lstrip('/')) - _walk(path) - results.sort() - return results - - -class DictLoader(BaseLoader): - """Loads a template from a python dict. It's passed a dict of unicode - strings bound to template names. This loader is useful for unittesting: - - >>> loader = DictLoader({'index.html': 'source here'}) - - Because auto reloading is rarely useful this is disabled per default. - """ - - def __init__(self, mapping): - self.mapping = mapping - - def get_source(self, environment, template): - if template in self.mapping: - source = self.mapping[template] - return source, None, lambda: source == self.mapping.get(template) - raise TemplateNotFound(template) - - def list_templates(self): - return sorted(self.mapping) - - -class FunctionLoader(BaseLoader): - """A loader that is passed a function which does the loading. The - function receives the name of the template and has to return either - an unicode string with the template source, a tuple in the form ``(source, - filename, uptodatefunc)`` or `None` if the template does not exist. - - >>> def load_template(name): - ... if name == 'index.html': - ... return '...' - ... - >>> loader = FunctionLoader(load_template) - - The `uptodatefunc` is a function that is called if autoreload is enabled - and has to return `True` if the template is still up to date. For more - details have a look at :meth:`BaseLoader.get_source` which has the same - return value. - """ - - def __init__(self, load_func): - self.load_func = load_func - - def get_source(self, environment, template): - rv = self.load_func(template) - if rv is None: - raise TemplateNotFound(template) - elif isinstance(rv, string_types): - return rv, None, None - return rv - - -class PrefixLoader(BaseLoader): - """A loader that is passed a dict of loaders where each loader is bound - to a prefix. The prefix is delimited from the template by a slash per - default, which can be changed by setting the `delimiter` argument to - something else:: - - loader = PrefixLoader({ - 'app1': PackageLoader('mypackage.app1'), - 'app2': PackageLoader('mypackage.app2') - }) - - By loading ``'app1/index.html'`` the file from the app1 package is loaded, - by loading ``'app2/index.html'`` the file from the second. - """ - - def __init__(self, mapping, delimiter='/'): - self.mapping = mapping - self.delimiter = delimiter - - def get_loader(self, template): - try: - prefix, name = template.split(self.delimiter, 1) - loader = self.mapping[prefix] - except (ValueError, KeyError): - raise TemplateNotFound(template) - return loader, name - - def get_source(self, environment, template): - loader, name = self.get_loader(template) - try: - return loader.get_source(environment, name) - except TemplateNotFound: - # re-raise the exception with the correct filename here. - # (the one that includes the prefix) - raise TemplateNotFound(template) - - @internalcode - def load(self, environment, name, globals=None): - loader, local_name = self.get_loader(name) - try: - return loader.load(environment, local_name, globals) - except TemplateNotFound: - # re-raise the exception with the correct filename here. - # (the one that includes the prefix) - raise TemplateNotFound(name) - - def list_templates(self): - result = [] - for prefix, loader in iteritems(self.mapping): - for template in loader.list_templates(): - result.append(prefix + self.delimiter + template) - return result - - -class ChoiceLoader(BaseLoader): - """This loader works like the `PrefixLoader` just that no prefix is - specified. If a template could not be found by one loader the next one - is tried. - - >>> loader = ChoiceLoader([ - ... FileSystemLoader('/path/to/user/templates'), - ... FileSystemLoader('/path/to/system/templates') - ... ]) - - This is useful if you want to allow users to override builtin templates - from a different location. - """ - - def __init__(self, loaders): - self.loaders = loaders - - def get_source(self, environment, template): - for loader in self.loaders: - try: - return loader.get_source(environment, template) - except TemplateNotFound: - pass - raise TemplateNotFound(template) - - @internalcode - def load(self, environment, name, globals=None): - for loader in self.loaders: - try: - return loader.load(environment, name, globals) - except TemplateNotFound: - pass - raise TemplateNotFound(name) - - def list_templates(self): - found = set() - for loader in self.loaders: - found.update(loader.list_templates()) - return sorted(found) - - -class _TemplateModule(ModuleType): - """Like a normal module but with support for weak references""" - - -class ModuleLoader(BaseLoader): - """This loader loads templates from precompiled templates. - - Example usage: - - >>> loader = ChoiceLoader([ - ... ModuleLoader('/path/to/compiled/templates'), - ... FileSystemLoader('/path/to/templates') - ... ]) - - Templates can be precompiled with :meth:`Environment.compile_templates`. - """ - - has_source_access = False - - def __init__(self, path): - package_name = '_jinja2_module_templates_%x' % id(self) - - # create a fake module that looks for the templates in the - # path given. - mod = _TemplateModule(package_name) - if isinstance(path, string_types): - path = [path] - else: - path = list(path) - mod.__path__ = path - - sys.modules[package_name] = weakref.proxy(mod, - lambda x: sys.modules.pop(package_name, None)) - - # the only strong reference, the sys.modules entry is weak - # so that the garbage collector can remove it once the - # loader that created it goes out of business. - self.module = mod - self.package_name = package_name - - @staticmethod - def get_template_key(name): - return 'tmpl_' + sha1(name.encode('utf-8')).hexdigest() - - @staticmethod - def get_module_filename(name): - return ModuleLoader.get_template_key(name) + '.py' - - @internalcode - def load(self, environment, name, globals=None): - key = self.get_template_key(name) - module = '%s.%s' % (self.package_name, key) - mod = getattr(self.module, module, None) - if mod is None: - try: - mod = __import__(module, None, None, ['root']) - except ImportError: - raise TemplateNotFound(name) - - # remove the entry from sys.modules, we only want the attribute - # on the module object we have stored on the loader. - sys.modules.pop(module, None) - - return environment.template_class.from_module_dict( - environment, mod.__dict__, globals) diff --git a/python/jinja2/meta.py b/python/jinja2/meta.py deleted file mode 100644 index 7421914..0000000 --- a/python/jinja2/meta.py +++ /dev/null @@ -1,106 +0,0 @@ -# -*- coding: utf-8 -*- -""" - jinja2.meta - ~~~~~~~~~~~ - - This module implements various functions that exposes information about - templates that might be interesting for various kinds of applications. - - :copyright: (c) 2017 by the Jinja Team, see AUTHORS for more details. - :license: BSD, see LICENSE for more details. -""" -from jinja2 import nodes -from jinja2.compiler import CodeGenerator -from jinja2._compat import string_types, iteritems - - -class TrackingCodeGenerator(CodeGenerator): - """We abuse the code generator for introspection.""" - - def __init__(self, environment): - CodeGenerator.__init__(self, environment, '<introspection>', - '<introspection>') - self.undeclared_identifiers = set() - - def write(self, x): - """Don't write.""" - - def enter_frame(self, frame): - """Remember all undeclared identifiers.""" - CodeGenerator.enter_frame(self, frame) - for _, (action, param) in iteritems(frame.symbols.loads): - if action == 'resolve': - self.undeclared_identifiers.add(param) - - -def find_undeclared_variables(ast): - """Returns a set of all variables in the AST that will be looked up from - the context at runtime. Because at compile time it's not known which - variables will be used depending on the path the execution takes at - runtime, all variables are returned. - - >>> from jinja2 import Environment, meta - >>> env = Environment() - >>> ast = env.parse('{% set foo = 42 %}{{ bar + foo }}') - >>> meta.find_undeclared_variables(ast) == set(['bar']) - True - - .. admonition:: Implementation - - Internally the code generator is used for finding undeclared variables. - This is good to know because the code generator might raise a - :exc:`TemplateAssertionError` during compilation and as a matter of - fact this function can currently raise that exception as well. - """ - codegen = TrackingCodeGenerator(ast.environment) - codegen.visit(ast) - return codegen.undeclared_identifiers - - -def find_referenced_templates(ast): - """Finds all the referenced templates from the AST. This will return an - iterator over all the hardcoded template extensions, inclusions and - imports. If dynamic inheritance or inclusion is used, `None` will be - yielded. - - >>> from jinja2 import Environment, meta - >>> env = Environment() - >>> ast = env.parse('{% extends "layout.html" %}{% include helper %}') - >>> list(meta.find_referenced_templates(ast)) - ['layout.html', None] - - This function is useful for dependency tracking. For example if you want - to rebuild parts of the website after a layout template has changed. - """ - for node in ast.find_all((nodes.Extends, nodes.FromImport, nodes.Import, - nodes.Include)): - if not isinstance(node.template, nodes.Const): - # a tuple with some non consts in there - if isinstance(node.template, (nodes.Tuple, nodes.List)): - for template_name in node.template.items: - # something const, only yield the strings and ignore - # non-string consts that really just make no sense - if isinstance(template_name, nodes.Const): - if isinstance(template_name.value, string_types): - yield template_name.value - # something dynamic in there - else: - yield None - # something dynamic we don't know about here - else: - yield None - continue - # constant is a basestring, direct template name - if isinstance(node.template.value, string_types): - yield node.template.value - # a tuple or list (latter *should* not happen) made of consts, - # yield the consts that are strings. We could warn here for - # non string values - elif isinstance(node, nodes.Include) and \ - isinstance(node.template.value, (tuple, list)): - for template_name in node.template.value: - if isinstance(template_name, string_types): - yield template_name - # something else we don't care about, we could warn here - else: - yield None diff --git a/python/jinja2/nativetypes.py b/python/jinja2/nativetypes.py deleted file mode 100644 index fe17e41..0000000 --- a/python/jinja2/nativetypes.py +++ /dev/null @@ -1,220 +0,0 @@ -import sys -from ast import literal_eval -from itertools import islice, chain -from jinja2 import nodes -from jinja2._compat import text_type -from jinja2.compiler import CodeGenerator, has_safe_repr -from jinja2.environment import Environment, Template -from jinja2.utils import concat, escape - - -def native_concat(nodes): - """Return a native Python type from the list of compiled nodes. If the - result is a single node, its value is returned. Otherwise, the nodes are - concatenated as strings. If the result can be parsed with - :func:`ast.literal_eval`, the parsed value is returned. Otherwise, the - string is returned. - """ - head = list(islice(nodes, 2)) - - if not head: - return None - - if len(head) == 1: - out = head[0] - else: - out = u''.join([text_type(v) for v in chain(head, nodes)]) - - try: - return literal_eval(out) - except (ValueError, SyntaxError, MemoryError): - return out - - -class NativeCodeGenerator(CodeGenerator): - """A code generator which avoids injecting ``to_string()`` calls around the - internal code Jinja uses to render templates. - """ - - def visit_Output(self, node, frame): - """Same as :meth:`CodeGenerator.visit_Output`, but do not call - ``to_string`` on output nodes in generated code. - """ - if self.has_known_extends and frame.require_output_check: - return - - finalize = self.environment.finalize - finalize_context = getattr(finalize, 'contextfunction', False) - finalize_eval = getattr(finalize, 'evalcontextfunction', False) - finalize_env = getattr(finalize, 'environmentfunction', False) - - if finalize is not None: - if finalize_context or finalize_eval: - const_finalize = None - elif finalize_env: - def const_finalize(x): - return finalize(self.environment, x) - else: - const_finalize = finalize - else: - def const_finalize(x): - return x - - # If we are inside a frame that requires output checking, we do so. - outdent_later = False - - if frame.require_output_check: - self.writeline('if parent_template is None:') - self.indent() - outdent_later = True - - # Try to evaluate as many chunks as possible into a static string at - # compile time. - body = [] - - for child in node.nodes: - try: - if const_finalize is None: - raise nodes.Impossible() - - const = child.as_const(frame.eval_ctx) - if not has_safe_repr(const): - raise nodes.Impossible() - except nodes.Impossible: - body.append(child) - continue - - # the frame can't be volatile here, because otherwise the as_const - # function would raise an Impossible exception at that point - try: - if frame.eval_ctx.autoescape: - if hasattr(const, '__html__'): - const = const.__html__() - else: - const = escape(const) - - const = const_finalize(const) - except Exception: - # if something goes wrong here we evaluate the node at runtime - # for easier debugging - body.append(child) - continue - - if body and isinstance(body[-1], list): - body[-1].append(const) - else: - body.append([const]) - - # if we have less than 3 nodes or a buffer we yield or extend/append - if len(body) < 3 or frame.buffer is not None: - if frame.buffer is not None: - # for one item we append, for more we extend - if len(body) == 1: - self.writeline('%s.append(' % frame.buffer) - else: - self.writeline('%s.extend((' % frame.buffer) - - self.indent() - - for item in body: - if isinstance(item, list): - val = repr(native_concat(item)) - - if frame.buffer is None: - self.writeline('yield ' + val) - else: - self.writeline(val + ',') - else: - if frame.buffer is None: - self.writeline('yield ', item) - else: - self.newline(item) - - close = 0 - - if finalize is not None: - self.write('environment.finalize(') - - if finalize_context: - self.write('context, ') - - close += 1 - - self.visit(item, frame) - - if close > 0: - self.write(')' * close) - - if frame.buffer is not None: - self.write(',') - - if frame.buffer is not None: - # close the open parentheses - self.outdent() - self.writeline(len(body) == 1 and ')' or '))') - - # otherwise we create a format string as this is faster in that case - else: - format = [] - arguments = [] - - for item in body: - if isinstance(item, list): - format.append(native_concat(item).replace('%', '%%')) - else: - format.append('%s') - arguments.append(item) - - self.writeline('yield ') - self.write(repr(concat(format)) + ' % (') - self.indent() - - for argument in arguments: - self.newline(argument) - close = 0 - - if finalize is not None: - self.write('environment.finalize(') - - if finalize_context: - self.write('context, ') - elif finalize_eval: - self.write('context.eval_ctx, ') - elif finalize_env: - self.write('environment, ') - - close += 1 - - self.visit(argument, frame) - self.write(')' * close + ', ') - - self.outdent() - self.writeline(')') - - if outdent_later: - self.outdent() - - -class NativeTemplate(Template): - def render(self, *args, **kwargs): - """Render the template to produce a native Python type. If the result - is a single node, its value is returned. Otherwise, the nodes are - concatenated as strings. If the result can be parsed with - :func:`ast.literal_eval`, the parsed value is returned. Otherwise, the - string is returned. - """ - vars = dict(*args, **kwargs) - - try: - return native_concat(self.root_render_func(self.new_context(vars))) - except Exception: - exc_info = sys.exc_info() - - return self.environment.handle_exception(exc_info, True) - - -class NativeEnvironment(Environment): - """An environment that renders templates to native Python types.""" - - code_generator_class = NativeCodeGenerator - template_class = NativeTemplate diff --git a/python/jinja2/nodes.py b/python/jinja2/nodes.py deleted file mode 100644 index 4d9a01a..0000000 --- a/python/jinja2/nodes.py +++ /dev/null @@ -1,999 +0,0 @@ -# -*- coding: utf-8 -*- -""" - jinja2.nodes - ~~~~~~~~~~~~ - - This module implements additional nodes derived from the ast base node. - - It also provides some node tree helper functions like `in_lineno` and - `get_nodes` used by the parser and translator in order to normalize - python and jinja nodes. - - :copyright: (c) 2017 by the Jinja Team. - :license: BSD, see LICENSE for more details. -""" -import types -import operator - -from collections import deque -from jinja2.utils import Markup -from jinja2._compat import izip, with_metaclass, text_type, PY2 - - -#: the types we support for context functions -_context_function_types = (types.FunctionType, types.MethodType) - - -_binop_to_func = { - '*': operator.mul, - '/': operator.truediv, - '//': operator.floordiv, - '**': operator.pow, - '%': operator.mod, - '+': operator.add, - '-': operator.sub -} - -_uaop_to_func = { - 'not': operator.not_, - '+': operator.pos, - '-': operator.neg -} - -_cmpop_to_func = { - 'eq': operator.eq, - 'ne': operator.ne, - 'gt': operator.gt, - 'gteq': operator.ge, - 'lt': operator.lt, - 'lteq': operator.le, - 'in': lambda a, b: a in b, - 'notin': lambda a, b: a not in b -} - - -class Impossible(Exception): - """Raised if the node could not perform a requested action.""" - - -class NodeType(type): - """A metaclass for nodes that handles the field and attribute - inheritance. fields and attributes from the parent class are - automatically forwarded to the child.""" - - def __new__(cls, name, bases, d): - for attr in 'fields', 'attributes': - storage = [] - storage.extend(getattr(bases[0], attr, ())) - storage.extend(d.get(attr, ())) - assert len(bases) == 1, 'multiple inheritance not allowed' - assert len(storage) == len(set(storage)), 'layout conflict' - d[attr] = tuple(storage) - d.setdefault('abstract', False) - return type.__new__(cls, name, bases, d) - - -class EvalContext(object): - """Holds evaluation time information. Custom attributes can be attached - to it in extensions. - """ - - def __init__(self, environment, template_name=None): - self.environment = environment - if callable(environment.autoescape): - self.autoescape = environment.autoescape(template_name) - else: - self.autoescape = environment.autoescape - self.volatile = False - - def save(self): - return self.__dict__.copy() - - def revert(self, old): - self.__dict__.clear() - self.__dict__.update(old) - - -def get_eval_context(node, ctx): - if ctx is None: - if node.environment is None: - raise RuntimeError('if no eval context is passed, the ' - 'node must have an attached ' - 'environment.') - return EvalContext(node.environment) - return ctx - - -class Node(with_metaclass(NodeType, object)): - """Baseclass for all Jinja2 nodes. There are a number of nodes available - of different types. There are four major types: - - - :class:`Stmt`: statements - - :class:`Expr`: expressions - - :class:`Helper`: helper nodes - - :class:`Template`: the outermost wrapper node - - All nodes have fields and attributes. Fields may be other nodes, lists, - or arbitrary values. Fields are passed to the constructor as regular - positional arguments, attributes as keyword arguments. Each node has - two attributes: `lineno` (the line number of the node) and `environment`. - The `environment` attribute is set at the end of the parsing process for - all nodes automatically. - """ - fields = () - attributes = ('lineno', 'environment') - abstract = True - - def __init__(self, *fields, **attributes): - if self.abstract: - raise TypeError('abstract nodes are not instanciable') - if fields: - if len(fields) != len(self.fields): - if not self.fields: - raise TypeError('%r takes 0 arguments' % - self.__class__.__name__) - raise TypeError('%r takes 0 or %d argument%s' % ( - self.__class__.__name__, - len(self.fields), - len(self.fields) != 1 and 's' or '' - )) - for name, arg in izip(self.fields, fields): - setattr(self, name, arg) - for attr in self.attributes: - setattr(self, attr, attributes.pop(attr, None)) - if attributes: - raise TypeError('unknown attribute %r' % - next(iter(attributes))) - - def iter_fields(self, exclude=None, only=None): - """This method iterates over all fields that are defined and yields - ``(key, value)`` tuples. Per default all fields are returned, but - it's possible to limit that to some fields by providing the `only` - parameter or to exclude some using the `exclude` parameter. Both - should be sets or tuples of field names. - """ - for name in self.fields: - if (exclude is only is None) or \ - (exclude is not None and name not in exclude) or \ - (only is not None and name in only): - try: - yield name, getattr(self, name) - except AttributeError: - pass - - def iter_child_nodes(self, exclude=None, only=None): - """Iterates over all direct child nodes of the node. This iterates - over all fields and yields the values of they are nodes. If the value - of a field is a list all the nodes in that list are returned. - """ - for field, item in self.iter_fields(exclude, only): - if isinstance(item, list): - for n in item: - if isinstance(n, Node): - yield n - elif isinstance(item, Node): - yield item - - def find(self, node_type): - """Find the first node of a given type. If no such node exists the - return value is `None`. - """ - for result in self.find_all(node_type): - return result - - def find_all(self, node_type): - """Find all the nodes of a given type. If the type is a tuple, - the check is performed for any of the tuple items. - """ - for child in self.iter_child_nodes(): - if isinstance(child, node_type): - yield child - for result in child.find_all(node_type): - yield result - - def set_ctx(self, ctx): - """Reset the context of a node and all child nodes. Per default the - parser will all generate nodes that have a 'load' context as it's the - most common one. This method is used in the parser to set assignment - targets and other nodes to a store context. - """ - todo = deque([self]) - while todo: - node = todo.popleft() - if 'ctx' in node.fields: - node.ctx = ctx - todo.extend(node.iter_child_nodes()) - return self - - def set_lineno(self, lineno, override=False): - """Set the line numbers of the node and children.""" - todo = deque([self]) - while todo: - node = todo.popleft() - if 'lineno' in node.attributes: - if node.lineno is None or override: - node.lineno = lineno - todo.extend(node.iter_child_nodes()) - return self - - def set_environment(self, environment): - """Set the environment for all nodes.""" - todo = deque([self]) - while todo: - node = todo.popleft() - node.environment = environment - todo.extend(node.iter_child_nodes()) - return self - - def __eq__(self, other): - return type(self) is type(other) and \ - tuple(self.iter_fields()) == tuple(other.iter_fields()) - - def __ne__(self, other): - return not self.__eq__(other) - - # Restore Python 2 hashing behavior on Python 3 - __hash__ = object.__hash__ - - def __repr__(self): - return '%s(%s)' % ( - self.__class__.__name__, - ', '.join('%s=%r' % (arg, getattr(self, arg, None)) for - arg in self.fields) - ) - - def dump(self): - def _dump(node): - if not isinstance(node, Node): - buf.append(repr(node)) - return - - buf.append('nodes.%s(' % node.__class__.__name__) - if not node.fields: - buf.append(')') - return - for idx, field in enumerate(node.fields): - if idx: - buf.append(', ') - value = getattr(node, field) - if isinstance(value, list): - buf.append('[') - for idx, item in enumerate(value): - if idx: - buf.append(', ') - _dump(item) - buf.append(']') - else: - _dump(value) - buf.append(')') - buf = [] - _dump(self) - return ''.join(buf) - - - -class Stmt(Node): - """Base node for all statements.""" - abstract = True - - -class Helper(Node): - """Nodes that exist in a specific context only.""" - abstract = True - - -class Template(Node): - """Node that represents a template. This must be the outermost node that - is passed to the compiler. - """ - fields = ('body',) - - -class Output(Stmt): - """A node that holds multiple expressions which are then printed out. - This is used both for the `print` statement and the regular template data. - """ - fields = ('nodes',) - - -class Extends(Stmt): - """Represents an extends statement.""" - fields = ('template',) - - -class For(Stmt): - """The for loop. `target` is the target for the iteration (usually a - :class:`Name` or :class:`Tuple`), `iter` the iterable. `body` is a list - of nodes that are used as loop-body, and `else_` a list of nodes for the - `else` block. If no else node exists it has to be an empty list. - - For filtered nodes an expression can be stored as `test`, otherwise `None`. - """ - fields = ('target', 'iter', 'body', 'else_', 'test', 'recursive') - - -class If(Stmt): - """If `test` is true, `body` is rendered, else `else_`.""" - fields = ('test', 'body', 'elif_', 'else_') - - -class Macro(Stmt): - """A macro definition. `name` is the name of the macro, `args` a list of - arguments and `defaults` a list of defaults if there are any. `body` is - a list of nodes for the macro body. - """ - fields = ('name', 'args', 'defaults', 'body') - - -class CallBlock(Stmt): - """Like a macro without a name but a call instead. `call` is called with - the unnamed macro as `caller` argument this node holds. - """ - fields = ('call', 'args', 'defaults', 'body') - - -class FilterBlock(Stmt): - """Node for filter sections.""" - fields = ('body', 'filter') - - -class With(Stmt): - """Specific node for with statements. In older versions of Jinja the - with statement was implemented on the base of the `Scope` node instead. - - .. versionadded:: 2.9.3 - """ - fields = ('targets', 'values', 'body') - - -class Block(Stmt): - """A node that represents a block.""" - fields = ('name', 'body', 'scoped') - - -class Include(Stmt): - """A node that represents the include tag.""" - fields = ('template', 'with_context', 'ignore_missing') - - -class Import(Stmt): - """A node that represents the import tag.""" - fields = ('template', 'target', 'with_context') - - -class FromImport(Stmt): - """A node that represents the from import tag. It's important to not - pass unsafe names to the name attribute. The compiler translates the - attribute lookups directly into getattr calls and does *not* use the - subscript callback of the interface. As exported variables may not - start with double underscores (which the parser asserts) this is not a - problem for regular Jinja code, but if this node is used in an extension - extra care must be taken. - - The list of names may contain tuples if aliases are wanted. - """ - fields = ('template', 'names', 'with_context') - - -class ExprStmt(Stmt): - """A statement that evaluates an expression and discards the result.""" - fields = ('node',) - - -class Assign(Stmt): - """Assigns an expression to a target.""" - fields = ('target', 'node') - - -class AssignBlock(Stmt): - """Assigns a block to a target.""" - fields = ('target', 'filter', 'body') - - -class Expr(Node): - """Baseclass for all expressions.""" - abstract = True - - def as_const(self, eval_ctx=None): - """Return the value of the expression as constant or raise - :exc:`Impossible` if this was not possible. - - An :class:`EvalContext` can be provided, if none is given - a default context is created which requires the nodes to have - an attached environment. - - .. versionchanged:: 2.4 - the `eval_ctx` parameter was added. - """ - raise Impossible() - - def can_assign(self): - """Check if it's possible to assign something to this node.""" - return False - - -class BinExpr(Expr): - """Baseclass for all binary expressions.""" - fields = ('left', 'right') - operator = None - abstract = True - - def as_const(self, eval_ctx=None): - eval_ctx = get_eval_context(self, eval_ctx) - # intercepted operators cannot be folded at compile time - if self.environment.sandboxed and \ - self.operator in self.environment.intercepted_binops: - raise Impossible() - f = _binop_to_func[self.operator] - try: - return f(self.left.as_const(eval_ctx), self.right.as_const(eval_ctx)) - except Exception: - raise Impossible() - - -class UnaryExpr(Expr): - """Baseclass for all unary expressions.""" - fields = ('node',) - operator = None - abstract = True - - def as_const(self, eval_ctx=None): - eval_ctx = get_eval_context(self, eval_ctx) - # intercepted operators cannot be folded at compile time - if self.environment.sandboxed and \ - self.operator in self.environment.intercepted_unops: - raise Impossible() - f = _uaop_to_func[self.operator] - try: - return f(self.node.as_const(eval_ctx)) - except Exception: - raise Impossible() - - -class Name(Expr): - """Looks up a name or stores a value in a name. - The `ctx` of the node can be one of the following values: - - - `store`: store a value in the name - - `load`: load that name - - `param`: like `store` but if the name was defined as function parameter. - """ - fields = ('name', 'ctx') - - def can_assign(self): - return self.name not in ('true', 'false', 'none', - 'True', 'False', 'None') - - -class NSRef(Expr): - """Reference to a namespace value assignment""" - fields = ('name', 'attr') - - def can_assign(self): - # We don't need any special checks here; NSRef assignments have a - # runtime check to ensure the target is a namespace object which will - # have been checked already as it is created using a normal assignment - # which goes through a `Name` node. - return True - - -class Literal(Expr): - """Baseclass for literals.""" - abstract = True - - -class Const(Literal): - """All constant values. The parser will return this node for simple - constants such as ``42`` or ``"foo"`` but it can be used to store more - complex values such as lists too. Only constants with a safe - representation (objects where ``eval(repr(x)) == x`` is true). - """ - fields = ('value',) - - def as_const(self, eval_ctx=None): - rv = self.value - if PY2 and type(rv) is text_type and \ - self.environment.policies['compiler.ascii_str']: - try: - rv = rv.encode('ascii') - except UnicodeError: - pass - return rv - - @classmethod - def from_untrusted(cls, value, lineno=None, environment=None): - """Return a const object if the value is representable as - constant value in the generated code, otherwise it will raise - an `Impossible` exception. - """ - from .compiler import has_safe_repr - if not has_safe_repr(value): - raise Impossible() - return cls(value, lineno=lineno, environment=environment) - - -class TemplateData(Literal): - """A constant template string.""" - fields = ('data',) - - def as_const(self, eval_ctx=None): - eval_ctx = get_eval_context(self, eval_ctx) - if eval_ctx.volatile: - raise Impossible() - if eval_ctx.autoescape: - return Markup(self.data) - return self.data - - -class Tuple(Literal): - """For loop unpacking and some other things like multiple arguments - for subscripts. Like for :class:`Name` `ctx` specifies if the tuple - is used for loading the names or storing. - """ - fields = ('items', 'ctx') - - def as_const(self, eval_ctx=None): - eval_ctx = get_eval_context(self, eval_ctx) - return tuple(x.as_const(eval_ctx) for x in self.items) - - def can_assign(self): - for item in self.items: - if not item.can_assign(): - return False - return True - - -class List(Literal): - """Any list literal such as ``[1, 2, 3]``""" - fields = ('items',) - - def as_const(self, eval_ctx=None): - eval_ctx = get_eval_context(self, eval_ctx) - return [x.as_const(eval_ctx) for x in self.items] - - -class Dict(Literal): - """Any dict literal such as ``{1: 2, 3: 4}``. The items must be a list of - :class:`Pair` nodes. - """ - fields = ('items',) - - def as_const(self, eval_ctx=None): - eval_ctx = get_eval_context(self, eval_ctx) - return dict(x.as_const(eval_ctx) for x in self.items) - - -class Pair(Helper): - """A key, value pair for dicts.""" - fields = ('key', 'value') - - def as_const(self, eval_ctx=None): - eval_ctx = get_eval_context(self, eval_ctx) - return self.key.as_const(eval_ctx), self.value.as_const(eval_ctx) - - -class Keyword(Helper): - """A key, value pair for keyword arguments where key is a string.""" - fields = ('key', 'value') - - def as_const(self, eval_ctx=None): - eval_ctx = get_eval_context(self, eval_ctx) - return self.key, self.value.as_const(eval_ctx) - - -class CondExpr(Expr): - """A conditional expression (inline if expression). (``{{ - foo if bar else baz }}``) - """ - fields = ('test', 'expr1', 'expr2') - - def as_const(self, eval_ctx=None): - eval_ctx = get_eval_context(self, eval_ctx) - if self.test.as_const(eval_ctx): - return self.expr1.as_const(eval_ctx) - - # if we evaluate to an undefined object, we better do that at runtime - if self.expr2 is None: - raise Impossible() - - return self.expr2.as_const(eval_ctx) - - -def args_as_const(node, eval_ctx): - args = [x.as_const(eval_ctx) for x in node.args] - kwargs = dict(x.as_const(eval_ctx) for x in node.kwargs) - - if node.dyn_args is not None: - try: - args.extend(node.dyn_args.as_const(eval_ctx)) - except Exception: - raise Impossible() - - if node.dyn_kwargs is not None: - try: - kwargs.update(node.dyn_kwargs.as_const(eval_ctx)) - except Exception: - raise Impossible() - - return args, kwargs - - -class Filter(Expr): - """This node applies a filter on an expression. `name` is the name of - the filter, the rest of the fields are the same as for :class:`Call`. - - If the `node` of a filter is `None` the contents of the last buffer are - filtered. Buffers are created by macros and filter blocks. - """ - - fields = ('node', 'name', 'args', 'kwargs', 'dyn_args', 'dyn_kwargs') - - def as_const(self, eval_ctx=None): - eval_ctx = get_eval_context(self, eval_ctx) - - if eval_ctx.volatile or self.node is None: - raise Impossible() - - # we have to be careful here because we call filter_ below. - # if this variable would be called filter, 2to3 would wrap the - # call in a list beause it is assuming we are talking about the - # builtin filter function here which no longer returns a list in - # python 3. because of that, do not rename filter_ to filter! - filter_ = self.environment.filters.get(self.name) - - if filter_ is None or getattr(filter_, 'contextfilter', False): - raise Impossible() - - # We cannot constant handle async filters, so we need to make sure - # to not go down this path. - if ( - eval_ctx.environment.is_async - and getattr(filter_, 'asyncfiltervariant', False) - ): - raise Impossible() - - args, kwargs = args_as_const(self, eval_ctx) - args.insert(0, self.node.as_const(eval_ctx)) - - if getattr(filter_, 'evalcontextfilter', False): - args.insert(0, eval_ctx) - elif getattr(filter_, 'environmentfilter', False): - args.insert(0, self.environment) - - try: - return filter_(*args, **kwargs) - except Exception: - raise Impossible() - - -class Test(Expr): - """Applies a test on an expression. `name` is the name of the test, the - rest of the fields are the same as for :class:`Call`. - """ - - fields = ('node', 'name', 'args', 'kwargs', 'dyn_args', 'dyn_kwargs') - - def as_const(self, eval_ctx=None): - test = self.environment.tests.get(self.name) - - if test is None: - raise Impossible() - - eval_ctx = get_eval_context(self, eval_ctx) - args, kwargs = args_as_const(self, eval_ctx) - args.insert(0, self.node.as_const(eval_ctx)) - - try: - return test(*args, **kwargs) - except Exception: - raise Impossible() - - -class Call(Expr): - """Calls an expression. `args` is a list of arguments, `kwargs` a list - of keyword arguments (list of :class:`Keyword` nodes), and `dyn_args` - and `dyn_kwargs` has to be either `None` or a node that is used as - node for dynamic positional (``*args``) or keyword (``**kwargs``) - arguments. - """ - fields = ('node', 'args', 'kwargs', 'dyn_args', 'dyn_kwargs') - - -class Getitem(Expr): - """Get an attribute or item from an expression and prefer the item.""" - fields = ('node', 'arg', 'ctx') - - def as_const(self, eval_ctx=None): - eval_ctx = get_eval_context(self, eval_ctx) - if self.ctx != 'load': - raise Impossible() - try: - return self.environment.getitem(self.node.as_const(eval_ctx), - self.arg.as_const(eval_ctx)) - except Exception: - raise Impossible() - - def can_assign(self): - return False - - -class Getattr(Expr): - """Get an attribute or item from an expression that is a ascii-only - bytestring and prefer the attribute. - """ - fields = ('node', 'attr', 'ctx') - - def as_const(self, eval_ctx=None): - if self.ctx != 'load': - raise Impossible() - try: - eval_ctx = get_eval_context(self, eval_ctx) - return self.environment.getattr(self.node.as_const(eval_ctx), - self.attr) - except Exception: - raise Impossible() - - def can_assign(self): - return False - - -class Slice(Expr): - """Represents a slice object. This must only be used as argument for - :class:`Subscript`. - """ - fields = ('start', 'stop', 'step') - - def as_const(self, eval_ctx=None): - eval_ctx = get_eval_context(self, eval_ctx) - def const(obj): - if obj is None: - return None - return obj.as_const(eval_ctx) - return slice(const(self.start), const(self.stop), const(self.step)) - - -class Concat(Expr): - """Concatenates the list of expressions provided after converting them to - unicode. - """ - fields = ('nodes',) - - def as_const(self, eval_ctx=None): - eval_ctx = get_eval_context(self, eval_ctx) - return ''.join(text_type(x.as_const(eval_ctx)) for x in self.nodes) - - -class Compare(Expr): - """Compares an expression with some other expressions. `ops` must be a - list of :class:`Operand`\\s. - """ - fields = ('expr', 'ops') - - def as_const(self, eval_ctx=None): - eval_ctx = get_eval_context(self, eval_ctx) - result = value = self.expr.as_const(eval_ctx) - try: - for op in self.ops: - new_value = op.expr.as_const(eval_ctx) - result = _cmpop_to_func[op.op](value, new_value) - value = new_value - except Exception: - raise Impossible() - return result - - -class Operand(Helper): - """Holds an operator and an expression.""" - fields = ('op', 'expr') - -if __debug__: - Operand.__doc__ += '\nThe following operators are available: ' + \ - ', '.join(sorted('``%s``' % x for x in set(_binop_to_func) | - set(_uaop_to_func) | set(_cmpop_to_func))) - - -class Mul(BinExpr): - """Multiplies the left with the right node.""" - operator = '*' - - -class Div(BinExpr): - """Divides the left by the right node.""" - operator = '/' - - -class FloorDiv(BinExpr): - """Divides the left by the right node and truncates conver the - result into an integer by truncating. - """ - operator = '//' - - -class Add(BinExpr): - """Add the left to the right node.""" - operator = '+' - - -class Sub(BinExpr): - """Subtract the right from the left node.""" - operator = '-' - - -class Mod(BinExpr): - """Left modulo right.""" - operator = '%' - - -class Pow(BinExpr): - """Left to the power of right.""" - operator = '**' - - -class And(BinExpr): - """Short circuited AND.""" - operator = 'and' - - def as_const(self, eval_ctx=None): - eval_ctx = get_eval_context(self, eval_ctx) - return self.left.as_const(eval_ctx) and self.right.as_const(eval_ctx) - - -class Or(BinExpr): - """Short circuited OR.""" - operator = 'or' - - def as_const(self, eval_ctx=None): - eval_ctx = get_eval_context(self, eval_ctx) - return self.left.as_const(eval_ctx) or self.right.as_const(eval_ctx) - - -class Not(UnaryExpr): - """Negate the expression.""" - operator = 'not' - - -class Neg(UnaryExpr): - """Make the expression negative.""" - operator = '-' - - -class Pos(UnaryExpr): - """Make the expression positive (noop for most expressions)""" - operator = '+' - - -# Helpers for extensions - - -class EnvironmentAttribute(Expr): - """Loads an attribute from the environment object. This is useful for - extensions that want to call a callback stored on the environment. - """ - fields = ('name',) - - -class ExtensionAttribute(Expr): - """Returns the attribute of an extension bound to the environment. - The identifier is the identifier of the :class:`Extension`. - - This node is usually constructed by calling the - :meth:`~jinja2.ext.Extension.attr` method on an extension. - """ - fields = ('identifier', 'name') - - -class ImportedName(Expr): - """If created with an import name the import name is returned on node - access. For example ``ImportedName('cgi.escape')`` returns the `escape` - function from the cgi module on evaluation. Imports are optimized by the - compiler so there is no need to assign them to local variables. - """ - fields = ('importname',) - - -class InternalName(Expr): - """An internal name in the compiler. You cannot create these nodes - yourself but the parser provides a - :meth:`~jinja2.parser.Parser.free_identifier` method that creates - a new identifier for you. This identifier is not available from the - template and is not threated specially by the compiler. - """ - fields = ('name',) - - def __init__(self): - raise TypeError('Can\'t create internal names. Use the ' - '`free_identifier` method on a parser.') - - -class MarkSafe(Expr): - """Mark the wrapped expression as safe (wrap it as `Markup`).""" - fields = ('expr',) - - def as_const(self, eval_ctx=None): - eval_ctx = get_eval_context(self, eval_ctx) - return Markup(self.expr.as_const(eval_ctx)) - - -class MarkSafeIfAutoescape(Expr): - """Mark the wrapped expression as safe (wrap it as `Markup`) but - only if autoescaping is active. - - .. versionadded:: 2.5 - """ - fields = ('expr',) - - def as_const(self, eval_ctx=None): - eval_ctx = get_eval_context(self, eval_ctx) - if eval_ctx.volatile: - raise Impossible() - expr = self.expr.as_const(eval_ctx) - if eval_ctx.autoescape: - return Markup(expr) - return expr - - -class ContextReference(Expr): - """Returns the current template context. It can be used like a - :class:`Name` node, with a ``'load'`` ctx and will return the - current :class:`~jinja2.runtime.Context` object. - - Here an example that assigns the current template name to a - variable named `foo`:: - - Assign(Name('foo', ctx='store'), - Getattr(ContextReference(), 'name')) - """ - - -class Continue(Stmt): - """Continue a loop.""" - - -class Break(Stmt): - """Break a loop.""" - - -class Scope(Stmt): - """An artificial scope.""" - fields = ('body',) - - -class OverlayScope(Stmt): - """An overlay scope for extensions. This is a largely unoptimized scope - that however can be used to introduce completely arbitrary variables into - a sub scope from a dictionary or dictionary like object. The `context` - field has to evaluate to a dictionary object. - - Example usage:: - - OverlayScope(context=self.call_method('get_context'), - body=[...]) - - .. versionadded:: 2.10 - """ - fields = ('context', 'body') - - -class EvalContextModifier(Stmt): - """Modifies the eval context. For each option that should be modified, - a :class:`Keyword` has to be added to the :attr:`options` list. - - Example to change the `autoescape` setting:: - - EvalContextModifier(options=[Keyword('autoescape', Const(True))]) - """ - fields = ('options',) - - -class ScopedEvalContextModifier(EvalContextModifier): - """Modifies the eval context and reverts it later. Works exactly like - :class:`EvalContextModifier` but will only modify the - :class:`~jinja2.nodes.EvalContext` for nodes in the :attr:`body`. - """ - fields = ('body',) - - -# make sure nobody creates custom nodes -def _failing_new(*args, **kwargs): - raise TypeError('can\'t create custom node types') -NodeType.__new__ = staticmethod(_failing_new); del _failing_new diff --git a/python/jinja2/optimizer.py b/python/jinja2/optimizer.py deleted file mode 100644 index 65ab3ce..0000000 --- a/python/jinja2/optimizer.py +++ /dev/null @@ -1,49 +0,0 @@ -# -*- coding: utf-8 -*- -""" - jinja2.optimizer - ~~~~~~~~~~~~~~~~ - - The jinja optimizer is currently trying to constant fold a few expressions - and modify the AST in place so that it should be easier to evaluate it. - - Because the AST does not contain all the scoping information and the - compiler has to find that out, we cannot do all the optimizations we - want. For example loop unrolling doesn't work because unrolled loops would - have a different scoping. - - The solution would be a second syntax tree that has the scoping rules stored. - - :copyright: (c) 2017 by the Jinja Team. - :license: BSD. -""" -from jinja2 import nodes -from jinja2.visitor import NodeTransformer - - -def optimize(node, environment): - """The context hint can be used to perform an static optimization - based on the context given.""" - optimizer = Optimizer(environment) - return optimizer.visit(node) - - -class Optimizer(NodeTransformer): - - def __init__(self, environment): - self.environment = environment - - def fold(self, node, eval_ctx=None): - """Do constant folding.""" - node = self.generic_visit(node) - try: - return nodes.Const.from_untrusted(node.as_const(eval_ctx), - lineno=node.lineno, - environment=self.environment) - except nodes.Impossible: - return node - - visit_Add = visit_Sub = visit_Mul = visit_Div = visit_FloorDiv = \ - visit_Pow = visit_Mod = visit_And = visit_Or = visit_Pos = visit_Neg = \ - visit_Not = visit_Compare = visit_Getitem = visit_Getattr = visit_Call = \ - visit_Filter = visit_Test = visit_CondExpr = fold - del fold diff --git a/python/jinja2/parser.py b/python/jinja2/parser.py deleted file mode 100644 index ed00d97..0000000 --- a/python/jinja2/parser.py +++ /dev/null @@ -1,903 +0,0 @@ -# -*- coding: utf-8 -*- -""" - jinja2.parser - ~~~~~~~~~~~~~ - - Implements the template parser. - - :copyright: (c) 2017 by the Jinja Team. - :license: BSD, see LICENSE for more details. -""" -from jinja2 import nodes -from jinja2.exceptions import TemplateSyntaxError, TemplateAssertionError -from jinja2.lexer import describe_token, describe_token_expr -from jinja2._compat import imap - - -_statement_keywords = frozenset(['for', 'if', 'block', 'extends', 'print', - 'macro', 'include', 'from', 'import', - 'set', 'with', 'autoescape']) -_compare_operators = frozenset(['eq', 'ne', 'lt', 'lteq', 'gt', 'gteq']) - -_math_nodes = { - 'add': nodes.Add, - 'sub': nodes.Sub, - 'mul': nodes.Mul, - 'div': nodes.Div, - 'floordiv': nodes.FloorDiv, - 'mod': nodes.Mod, -} - - -class Parser(object): - """This is the central parsing class Jinja2 uses. It's passed to - extensions and can be used to parse expressions or statements. - """ - - def __init__(self, environment, source, name=None, filename=None, - state=None): - self.environment = environment - self.stream = environment._tokenize(source, name, filename, state) - self.name = name - self.filename = filename - self.closed = False - self.extensions = {} - for extension in environment.iter_extensions(): - for tag in extension.tags: - self.extensions[tag] = extension.parse - self._last_identifier = 0 - self._tag_stack = [] - self._end_token_stack = [] - - def fail(self, msg, lineno=None, exc=TemplateSyntaxError): - """Convenience method that raises `exc` with the message, passed - line number or last line number as well as the current name and - filename. - """ - if lineno is None: - lineno = self.stream.current.lineno - raise exc(msg, lineno, self.name, self.filename) - - def _fail_ut_eof(self, name, end_token_stack, lineno): - expected = [] - for exprs in end_token_stack: - expected.extend(imap(describe_token_expr, exprs)) - if end_token_stack: - currently_looking = ' or '.join( - "'%s'" % describe_token_expr(expr) - for expr in end_token_stack[-1]) - else: - currently_looking = None - - if name is None: - message = ['Unexpected end of template.'] - else: - message = ['Encountered unknown tag \'%s\'.' % name] - - if currently_looking: - if name is not None and name in expected: - message.append('You probably made a nesting mistake. Jinja ' - 'is expecting this tag, but currently looking ' - 'for %s.' % currently_looking) - else: - message.append('Jinja was looking for the following tags: ' - '%s.' % currently_looking) - - if self._tag_stack: - message.append('The innermost block that needs to be ' - 'closed is \'%s\'.' % self._tag_stack[-1]) - - self.fail(' '.join(message), lineno) - - def fail_unknown_tag(self, name, lineno=None): - """Called if the parser encounters an unknown tag. Tries to fail - with a human readable error message that could help to identify - the problem. - """ - return self._fail_ut_eof(name, self._end_token_stack, lineno) - - def fail_eof(self, end_tokens=None, lineno=None): - """Like fail_unknown_tag but for end of template situations.""" - stack = list(self._end_token_stack) - if end_tokens is not None: - stack.append(end_tokens) - return self._fail_ut_eof(None, stack, lineno) - - def is_tuple_end(self, extra_end_rules=None): - """Are we at the end of a tuple?""" - if self.stream.current.type in ('variable_end', 'block_end', 'rparen'): - return True - elif extra_end_rules is not None: - return self.stream.current.test_any(extra_end_rules) - return False - - def free_identifier(self, lineno=None): - """Return a new free identifier as :class:`~jinja2.nodes.InternalName`.""" - self._last_identifier += 1 - rv = object.__new__(nodes.InternalName) - nodes.Node.__init__(rv, 'fi%d' % self._last_identifier, lineno=lineno) - return rv - - def parse_statement(self): - """Parse a single statement.""" - token = self.stream.current - if token.type != 'name': - self.fail('tag name expected', token.lineno) - self._tag_stack.append(token.value) - pop_tag = True - try: - if token.value in _statement_keywords: - return getattr(self, 'parse_' + self.stream.current.value)() - if token.value == 'call': - return self.parse_call_block() - if token.value == 'filter': - return self.parse_filter_block() - ext = self.extensions.get(token.value) - if ext is not None: - return ext(self) - - # did not work out, remove the token we pushed by accident - # from the stack so that the unknown tag fail function can - # produce a proper error message. - self._tag_stack.pop() - pop_tag = False - self.fail_unknown_tag(token.value, token.lineno) - finally: - if pop_tag: - self._tag_stack.pop() - - def parse_statements(self, end_tokens, drop_needle=False): - """Parse multiple statements into a list until one of the end tokens - is reached. This is used to parse the body of statements as it also - parses template data if appropriate. The parser checks first if the - current token is a colon and skips it if there is one. Then it checks - for the block end and parses until if one of the `end_tokens` is - reached. Per default the active token in the stream at the end of - the call is the matched end token. If this is not wanted `drop_needle` - can be set to `True` and the end token is removed. - """ - # the first token may be a colon for python compatibility - self.stream.skip_if('colon') - - # in the future it would be possible to add whole code sections - # by adding some sort of end of statement token and parsing those here. - self.stream.expect('block_end') - result = self.subparse(end_tokens) - - # we reached the end of the template too early, the subparser - # does not check for this, so we do that now - if self.stream.current.type == 'eof': - self.fail_eof(end_tokens) - - if drop_needle: - next(self.stream) - return result - - def parse_set(self): - """Parse an assign statement.""" - lineno = next(self.stream).lineno - target = self.parse_assign_target(with_namespace=True) - if self.stream.skip_if('assign'): - expr = self.parse_tuple() - return nodes.Assign(target, expr, lineno=lineno) - filter_node = self.parse_filter(None) - body = self.parse_statements(('name:endset',), - drop_needle=True) - return nodes.AssignBlock(target, filter_node, body, lineno=lineno) - - def parse_for(self): - """Parse a for loop.""" - lineno = self.stream.expect('name:for').lineno - target = self.parse_assign_target(extra_end_rules=('name:in',)) - self.stream.expect('name:in') - iter = self.parse_tuple(with_condexpr=False, - extra_end_rules=('name:recursive',)) - test = None - if self.stream.skip_if('name:if'): - test = self.parse_expression() - recursive = self.stream.skip_if('name:recursive') - body = self.parse_statements(('name:endfor', 'name:else')) - if next(self.stream).value == 'endfor': - else_ = [] - else: - else_ = self.parse_statements(('name:endfor',), drop_needle=True) - return nodes.For(target, iter, body, else_, test, - recursive, lineno=lineno) - - def parse_if(self): - """Parse an if construct.""" - node = result = nodes.If(lineno=self.stream.expect('name:if').lineno) - while 1: - node.test = self.parse_tuple(with_condexpr=False) - node.body = self.parse_statements(('name:elif', 'name:else', - 'name:endif')) - node.elif_ = [] - node.else_ = [] - token = next(self.stream) - if token.test('name:elif'): - node = nodes.If(lineno=self.stream.current.lineno) - result.elif_.append(node) - continue - elif token.test('name:else'): - result.else_ = self.parse_statements(('name:endif',), - drop_needle=True) - break - return result - - def parse_with(self): - node = nodes.With(lineno=next(self.stream).lineno) - targets = [] - values = [] - while self.stream.current.type != 'block_end': - lineno = self.stream.current.lineno - if targets: - self.stream.expect('comma') - target = self.parse_assign_target() - target.set_ctx('param') - targets.append(target) - self.stream.expect('assign') - values.append(self.parse_expression()) - node.targets = targets - node.values = values - node.body = self.parse_statements(('name:endwith',), - drop_needle=True) - return node - - def parse_autoescape(self): - node = nodes.ScopedEvalContextModifier(lineno=next(self.stream).lineno) - node.options = [ - nodes.Keyword('autoescape', self.parse_expression()) - ] - node.body = self.parse_statements(('name:endautoescape',), - drop_needle=True) - return nodes.Scope([node]) - - def parse_block(self): - node = nodes.Block(lineno=next(self.stream).lineno) - node.name = self.stream.expect('name').value - node.scoped = self.stream.skip_if('name:scoped') - - # common problem people encounter when switching from django - # to jinja. we do not support hyphens in block names, so let's - # raise a nicer error message in that case. - if self.stream.current.type == 'sub': - self.fail('Block names in Jinja have to be valid Python ' - 'identifiers and may not contain hyphens, use an ' - 'underscore instead.') - - node.body = self.parse_statements(('name:endblock',), drop_needle=True) - self.stream.skip_if('name:' + node.name) - return node - - def parse_extends(self): - node = nodes.Extends(lineno=next(self.stream).lineno) - node.template = self.parse_expression() - return node - - def parse_import_context(self, node, default): - if self.stream.current.test_any('name:with', 'name:without') and \ - self.stream.look().test('name:context'): - node.with_context = next(self.stream).value == 'with' - self.stream.skip() - else: - node.with_context = default - return node - - def parse_include(self): - node = nodes.Include(lineno=next(self.stream).lineno) - node.template = self.parse_expression() - if self.stream.current.test('name:ignore') and \ - self.stream.look().test('name:missing'): - node.ignore_missing = True - self.stream.skip(2) - else: - node.ignore_missing = False - return self.parse_import_context(node, True) - - def parse_import(self): - node = nodes.Import(lineno=next(self.stream).lineno) - node.template = self.parse_expression() - self.stream.expect('name:as') - node.target = self.parse_assign_target(name_only=True).name - return self.parse_import_context(node, False) - - def parse_from(self): - node = nodes.FromImport(lineno=next(self.stream).lineno) - node.template = self.parse_expression() - self.stream.expect('name:import') - node.names = [] - - def parse_context(): - if self.stream.current.value in ('with', 'without') and \ - self.stream.look().test('name:context'): - node.with_context = next(self.stream).value == 'with' - self.stream.skip() - return True - return False - - while 1: - if node.names: - self.stream.expect('comma') - if self.stream.current.type == 'name': - if parse_context(): - break - target = self.parse_assign_target(name_only=True) - if target.name.startswith('_'): - self.fail('names starting with an underline can not ' - 'be imported', target.lineno, - exc=TemplateAssertionError) - if self.stream.skip_if('name:as'): - alias = self.parse_assign_target(name_only=True) - node.names.append((target.name, alias.name)) - else: - node.names.append(target.name) - if parse_context() or self.stream.current.type != 'comma': - break - else: - self.stream.expect('name') - if not hasattr(node, 'with_context'): - node.with_context = False - return node - - def parse_signature(self, node): - node.args = args = [] - node.defaults = defaults = [] - self.stream.expect('lparen') - while self.stream.current.type != 'rparen': - if args: - self.stream.expect('comma') - arg = self.parse_assign_target(name_only=True) - arg.set_ctx('param') - if self.stream.skip_if('assign'): - defaults.append(self.parse_expression()) - elif defaults: - self.fail('non-default argument follows default argument') - args.append(arg) - self.stream.expect('rparen') - - def parse_call_block(self): - node = nodes.CallBlock(lineno=next(self.stream).lineno) - if self.stream.current.type == 'lparen': - self.parse_signature(node) - else: - node.args = [] - node.defaults = [] - - node.call = self.parse_expression() - if not isinstance(node.call, nodes.Call): - self.fail('expected call', node.lineno) - node.body = self.parse_statements(('name:endcall',), drop_needle=True) - return node - - def parse_filter_block(self): - node = nodes.FilterBlock(lineno=next(self.stream).lineno) - node.filter = self.parse_filter(None, start_inline=True) - node.body = self.parse_statements(('name:endfilter',), - drop_needle=True) - return node - - def parse_macro(self): - node = nodes.Macro(lineno=next(self.stream).lineno) - node.name = self.parse_assign_target(name_only=True).name - self.parse_signature(node) - node.body = self.parse_statements(('name:endmacro',), - drop_needle=True) - return node - - def parse_print(self): - node = nodes.Output(lineno=next(self.stream).lineno) - node.nodes = [] - while self.stream.current.type != 'block_end': - if node.nodes: - self.stream.expect('comma') - node.nodes.append(self.parse_expression()) - return node - - def parse_assign_target(self, with_tuple=True, name_only=False, - extra_end_rules=None, with_namespace=False): - """Parse an assignment target. As Jinja2 allows assignments to - tuples, this function can parse all allowed assignment targets. Per - default assignments to tuples are parsed, that can be disable however - by setting `with_tuple` to `False`. If only assignments to names are - wanted `name_only` can be set to `True`. The `extra_end_rules` - parameter is forwarded to the tuple parsing function. If - `with_namespace` is enabled, a namespace assignment may be parsed. - """ - if with_namespace and self.stream.look().type == 'dot': - token = self.stream.expect('name') - next(self.stream) # dot - attr = self.stream.expect('name') - target = nodes.NSRef(token.value, attr.value, lineno=token.lineno) - elif name_only: - token = self.stream.expect('name') - target = nodes.Name(token.value, 'store', lineno=token.lineno) - else: - if with_tuple: - target = self.parse_tuple(simplified=True, - extra_end_rules=extra_end_rules) - else: - target = self.parse_primary() - target.set_ctx('store') - if not target.can_assign(): - self.fail('can\'t assign to %r' % target.__class__. - __name__.lower(), target.lineno) - return target - - def parse_expression(self, with_condexpr=True): - """Parse an expression. Per default all expressions are parsed, if - the optional `with_condexpr` parameter is set to `False` conditional - expressions are not parsed. - """ - if with_condexpr: - return self.parse_condexpr() - return self.parse_or() - - def parse_condexpr(self): - lineno = self.stream.current.lineno - expr1 = self.parse_or() - while self.stream.skip_if('name:if'): - expr2 = self.parse_or() - if self.stream.skip_if('name:else'): - expr3 = self.parse_condexpr() - else: - expr3 = None - expr1 = nodes.CondExpr(expr2, expr1, expr3, lineno=lineno) - lineno = self.stream.current.lineno - return expr1 - - def parse_or(self): - lineno = self.stream.current.lineno - left = self.parse_and() - while self.stream.skip_if('name:or'): - right = self.parse_and() - left = nodes.Or(left, right, lineno=lineno) - lineno = self.stream.current.lineno - return left - - def parse_and(self): - lineno = self.stream.current.lineno - left = self.parse_not() - while self.stream.skip_if('name:and'): - right = self.parse_not() - left = nodes.And(left, right, lineno=lineno) - lineno = self.stream.current.lineno - return left - - def parse_not(self): - if self.stream.current.test('name:not'): - lineno = next(self.stream).lineno - return nodes.Not(self.parse_not(), lineno=lineno) - return self.parse_compare() - - def parse_compare(self): - lineno = self.stream.current.lineno - expr = self.parse_math1() - ops = [] - while 1: - token_type = self.stream.current.type - if token_type in _compare_operators: - next(self.stream) - ops.append(nodes.Operand(token_type, self.parse_math1())) - elif self.stream.skip_if('name:in'): - ops.append(nodes.Operand('in', self.parse_math1())) - elif (self.stream.current.test('name:not') and - self.stream.look().test('name:in')): - self.stream.skip(2) - ops.append(nodes.Operand('notin', self.parse_math1())) - else: - break - lineno = self.stream.current.lineno - if not ops: - return expr - return nodes.Compare(expr, ops, lineno=lineno) - - def parse_math1(self): - lineno = self.stream.current.lineno - left = self.parse_concat() - while self.stream.current.type in ('add', 'sub'): - cls = _math_nodes[self.stream.current.type] - next(self.stream) - right = self.parse_concat() - left = cls(left, right, lineno=lineno) - lineno = self.stream.current.lineno - return left - - def parse_concat(self): - lineno = self.stream.current.lineno - args = [self.parse_math2()] - while self.stream.current.type == 'tilde': - next(self.stream) - args.append(self.parse_math2()) - if len(args) == 1: - return args[0] - return nodes.Concat(args, lineno=lineno) - - def parse_math2(self): - lineno = self.stream.current.lineno - left = self.parse_pow() - while self.stream.current.type in ('mul', 'div', 'floordiv', 'mod'): - cls = _math_nodes[self.stream.current.type] - next(self.stream) - right = self.parse_pow() - left = cls(left, right, lineno=lineno) - lineno = self.stream.current.lineno - return left - - def parse_pow(self): - lineno = self.stream.current.lineno - left = self.parse_unary() - while self.stream.current.type == 'pow': - next(self.stream) - right = self.parse_unary() - left = nodes.Pow(left, right, lineno=lineno) - lineno = self.stream.current.lineno - return left - - def parse_unary(self, with_filter=True): - token_type = self.stream.current.type - lineno = self.stream.current.lineno - if token_type == 'sub': - next(self.stream) - node = nodes.Neg(self.parse_unary(False), lineno=lineno) - elif token_type == 'add': - next(self.stream) - node = nodes.Pos(self.parse_unary(False), lineno=lineno) - else: - node = self.parse_primary() - node = self.parse_postfix(node) - if with_filter: - node = self.parse_filter_expr(node) - return node - - def parse_primary(self): - token = self.stream.current - if token.type == 'name': - if token.value in ('true', 'false', 'True', 'False'): - node = nodes.Const(token.value in ('true', 'True'), - lineno=token.lineno) - elif token.value in ('none', 'None'): - node = nodes.Const(None, lineno=token.lineno) - else: - node = nodes.Name(token.value, 'load', lineno=token.lineno) - next(self.stream) - elif token.type == 'string': - next(self.stream) - buf = [token.value] - lineno = token.lineno - while self.stream.current.type == 'string': - buf.append(self.stream.current.value) - next(self.stream) - node = nodes.Const(''.join(buf), lineno=lineno) - elif token.type in ('integer', 'float'): - next(self.stream) - node = nodes.Const(token.value, lineno=token.lineno) - elif token.type == 'lparen': - next(self.stream) - node = self.parse_tuple(explicit_parentheses=True) - self.stream.expect('rparen') - elif token.type == 'lbracket': - node = self.parse_list() - elif token.type == 'lbrace': - node = self.parse_dict() - else: - self.fail("unexpected '%s'" % describe_token(token), token.lineno) - return node - - def parse_tuple(self, simplified=False, with_condexpr=True, - extra_end_rules=None, explicit_parentheses=False): - """Works like `parse_expression` but if multiple expressions are - delimited by a comma a :class:`~jinja2.nodes.Tuple` node is created. - This method could also return a regular expression instead of a tuple - if no commas where found. - - The default parsing mode is a full tuple. If `simplified` is `True` - only names and literals are parsed. The `no_condexpr` parameter is - forwarded to :meth:`parse_expression`. - - Because tuples do not require delimiters and may end in a bogus comma - an extra hint is needed that marks the end of a tuple. For example - for loops support tuples between `for` and `in`. In that case the - `extra_end_rules` is set to ``['name:in']``. - - `explicit_parentheses` is true if the parsing was triggered by an - expression in parentheses. This is used to figure out if an empty - tuple is a valid expression or not. - """ - lineno = self.stream.current.lineno - if simplified: - parse = self.parse_primary - elif with_condexpr: - parse = self.parse_expression - else: - parse = lambda: self.parse_expression(with_condexpr=False) - args = [] - is_tuple = False - while 1: - if args: - self.stream.expect('comma') - if self.is_tuple_end(extra_end_rules): - break - args.append(parse()) - if self.stream.current.type == 'comma': - is_tuple = True - else: - break - lineno = self.stream.current.lineno - - if not is_tuple: - if args: - return args[0] - - # if we don't have explicit parentheses, an empty tuple is - # not a valid expression. This would mean nothing (literally - # nothing) in the spot of an expression would be an empty - # tuple. - if not explicit_parentheses: - self.fail('Expected an expression, got \'%s\'' % - describe_token(self.stream.current)) - - return nodes.Tuple(args, 'load', lineno=lineno) - - def parse_list(self): - token = self.stream.expect('lbracket') - items = [] - while self.stream.current.type != 'rbracket': - if items: - self.stream.expect('comma') - if self.stream.current.type == 'rbracket': - break - items.append(self.parse_expression()) - self.stream.expect('rbracket') - return nodes.List(items, lineno=token.lineno) - - def parse_dict(self): - token = self.stream.expect('lbrace') - items = [] - while self.stream.current.type != 'rbrace': - if items: - self.stream.expect('comma') - if self.stream.current.type == 'rbrace': - break - key = self.parse_expression() - self.stream.expect('colon') - value = self.parse_expression() - items.append(nodes.Pair(key, value, lineno=key.lineno)) - self.stream.expect('rbrace') - return nodes.Dict(items, lineno=token.lineno) - - def parse_postfix(self, node): - while 1: - token_type = self.stream.current.type - if token_type == 'dot' or token_type == 'lbracket': - node = self.parse_subscript(node) - # calls are valid both after postfix expressions (getattr - # and getitem) as well as filters and tests - elif token_type == 'lparen': - node = self.parse_call(node) - else: - break - return node - - def parse_filter_expr(self, node): - while 1: - token_type = self.stream.current.type - if token_type == 'pipe': - node = self.parse_filter(node) - elif token_type == 'name' and self.stream.current.value == 'is': - node = self.parse_test(node) - # calls are valid both after postfix expressions (getattr - # and getitem) as well as filters and tests - elif token_type == 'lparen': - node = self.parse_call(node) - else: - break - return node - - def parse_subscript(self, node): - token = next(self.stream) - if token.type == 'dot': - attr_token = self.stream.current - next(self.stream) - if attr_token.type == 'name': - return nodes.Getattr(node, attr_token.value, 'load', - lineno=token.lineno) - elif attr_token.type != 'integer': - self.fail('expected name or number', attr_token.lineno) - arg = nodes.Const(attr_token.value, lineno=attr_token.lineno) - return nodes.Getitem(node, arg, 'load', lineno=token.lineno) - if token.type == 'lbracket': - args = [] - while self.stream.current.type != 'rbracket': - if args: - self.stream.expect('comma') - args.append(self.parse_subscribed()) - self.stream.expect('rbracket') - if len(args) == 1: - arg = args[0] - else: - arg = nodes.Tuple(args, 'load', lineno=token.lineno) - return nodes.Getitem(node, arg, 'load', lineno=token.lineno) - self.fail('expected subscript expression', self.lineno) - - def parse_subscribed(self): - lineno = self.stream.current.lineno - - if self.stream.current.type == 'colon': - next(self.stream) - args = [None] - else: - node = self.parse_expression() - if self.stream.current.type != 'colon': - return node - next(self.stream) - args = [node] - - if self.stream.current.type == 'colon': - args.append(None) - elif self.stream.current.type not in ('rbracket', 'comma'): - args.append(self.parse_expression()) - else: - args.append(None) - - if self.stream.current.type == 'colon': - next(self.stream) - if self.stream.current.type not in ('rbracket', 'comma'): - args.append(self.parse_expression()) - else: - args.append(None) - else: - args.append(None) - - return nodes.Slice(lineno=lineno, *args) - - def parse_call(self, node): - token = self.stream.expect('lparen') - args = [] - kwargs = [] - dyn_args = dyn_kwargs = None - require_comma = False - - def ensure(expr): - if not expr: - self.fail('invalid syntax for function call expression', - token.lineno) - - while self.stream.current.type != 'rparen': - if require_comma: - self.stream.expect('comma') - # support for trailing comma - if self.stream.current.type == 'rparen': - break - if self.stream.current.type == 'mul': - ensure(dyn_args is None and dyn_kwargs is None) - next(self.stream) - dyn_args = self.parse_expression() - elif self.stream.current.type == 'pow': - ensure(dyn_kwargs is None) - next(self.stream) - dyn_kwargs = self.parse_expression() - else: - ensure(dyn_args is None and dyn_kwargs is None) - if self.stream.current.type == 'name' and \ - self.stream.look().type == 'assign': - key = self.stream.current.value - self.stream.skip(2) - value = self.parse_expression() - kwargs.append(nodes.Keyword(key, value, - lineno=value.lineno)) - else: - ensure(not kwargs) - args.append(self.parse_expression()) - - require_comma = True - self.stream.expect('rparen') - - if node is None: - return args, kwargs, dyn_args, dyn_kwargs - return nodes.Call(node, args, kwargs, dyn_args, dyn_kwargs, - lineno=token.lineno) - - def parse_filter(self, node, start_inline=False): - while self.stream.current.type == 'pipe' or start_inline: - if not start_inline: - next(self.stream) - token = self.stream.expect('name') - name = token.value - while self.stream.current.type == 'dot': - next(self.stream) - name += '.' + self.stream.expect('name').value - if self.stream.current.type == 'lparen': - args, kwargs, dyn_args, dyn_kwargs = self.parse_call(None) - else: - args = [] - kwargs = [] - dyn_args = dyn_kwargs = None - node = nodes.Filter(node, name, args, kwargs, dyn_args, - dyn_kwargs, lineno=token.lineno) - start_inline = False - return node - - def parse_test(self, node): - token = next(self.stream) - if self.stream.current.test('name:not'): - next(self.stream) - negated = True - else: - negated = False - name = self.stream.expect('name').value - while self.stream.current.type == 'dot': - next(self.stream) - name += '.' + self.stream.expect('name').value - dyn_args = dyn_kwargs = None - kwargs = [] - if self.stream.current.type == 'lparen': - args, kwargs, dyn_args, dyn_kwargs = self.parse_call(None) - elif (self.stream.current.type in ('name', 'string', 'integer', - 'float', 'lparen', 'lbracket', - 'lbrace') and not - self.stream.current.test_any('name:else', 'name:or', - 'name:and')): - if self.stream.current.test('name:is'): - self.fail('You cannot chain multiple tests with is') - args = [self.parse_primary()] - else: - args = [] - node = nodes.Test(node, name, args, kwargs, dyn_args, - dyn_kwargs, lineno=token.lineno) - if negated: - node = nodes.Not(node, lineno=token.lineno) - return node - - def subparse(self, end_tokens=None): - body = [] - data_buffer = [] - add_data = data_buffer.append - - if end_tokens is not None: - self._end_token_stack.append(end_tokens) - - def flush_data(): - if data_buffer: - lineno = data_buffer[0].lineno - body.append(nodes.Output(data_buffer[:], lineno=lineno)) - del data_buffer[:] - - try: - while self.stream: - token = self.stream.current - if token.type == 'data': - if token.value: - add_data(nodes.TemplateData(token.value, - lineno=token.lineno)) - next(self.stream) - elif token.type == 'variable_begin': - next(self.stream) - add_data(self.parse_tuple(with_condexpr=True)) - self.stream.expect('variable_end') - elif token.type == 'block_begin': - flush_data() - next(self.stream) - if end_tokens is not None and \ - self.stream.current.test_any(*end_tokens): - return body - rv = self.parse_statement() - if isinstance(rv, list): - body.extend(rv) - else: - body.append(rv) - self.stream.expect('block_end') - else: - raise AssertionError('internal parsing error') - - flush_data() - finally: - if end_tokens is not None: - self._end_token_stack.pop() - - return body - - def parse(self): - """Parse the whole template into a `Template` node.""" - result = nodes.Template(self.subparse(), lineno=1) - result.set_environment(self.environment) - return result diff --git a/python/jinja2/runtime.py b/python/jinja2/runtime.py deleted file mode 100644 index f9d7a68..0000000 --- a/python/jinja2/runtime.py +++ /dev/null @@ -1,813 +0,0 @@ -# -*- coding: utf-8 -*- -""" - jinja2.runtime - ~~~~~~~~~~~~~~ - - Runtime helpers. - - :copyright: (c) 2017 by the Jinja Team. - :license: BSD. -""" -import sys - -from itertools import chain -from types import MethodType - -from jinja2.nodes import EvalContext, _context_function_types -from jinja2.utils import Markup, soft_unicode, escape, missing, concat, \ - internalcode, object_type_repr, evalcontextfunction, Namespace -from jinja2.exceptions import UndefinedError, TemplateRuntimeError, \ - TemplateNotFound -from jinja2._compat import imap, text_type, iteritems, \ - implements_iterator, implements_to_string, string_types, PY2, \ - with_metaclass - - -# these variables are exported to the template runtime -__all__ = ['LoopContext', 'TemplateReference', 'Macro', 'Markup', - 'TemplateRuntimeError', 'missing', 'concat', 'escape', - 'markup_join', 'unicode_join', 'to_string', 'identity', - 'TemplateNotFound', 'Namespace'] - -#: the name of the function that is used to convert something into -#: a string. We can just use the text type here. -to_string = text_type - -#: the identity function. Useful for certain things in the environment -identity = lambda x: x - -_first_iteration = object() -_last_iteration = object() - - -def markup_join(seq): - """Concatenation that escapes if necessary and converts to unicode.""" - buf = [] - iterator = imap(soft_unicode, seq) - for arg in iterator: - buf.append(arg) - if hasattr(arg, '__html__'): - return Markup(u'').join(chain(buf, iterator)) - return concat(buf) - - -def unicode_join(seq): - """Simple args to unicode conversion and concatenation.""" - return concat(imap(text_type, seq)) - - -def new_context(environment, template_name, blocks, vars=None, - shared=None, globals=None, locals=None): - """Internal helper to for context creation.""" - if vars is None: - vars = {} - if shared: - parent = vars - else: - parent = dict(globals or (), **vars) - if locals: - # if the parent is shared a copy should be created because - # we don't want to modify the dict passed - if shared: - parent = dict(parent) - for key, value in iteritems(locals): - if value is not missing: - parent[key] = value - return environment.context_class(environment, parent, template_name, - blocks) - - -class TemplateReference(object): - """The `self` in templates.""" - - def __init__(self, context): - self.__context = context - - def __getitem__(self, name): - blocks = self.__context.blocks[name] - return BlockReference(name, self.__context, blocks, 0) - - def __repr__(self): - return '<%s %r>' % ( - self.__class__.__name__, - self.__context.name - ) - - -def _get_func(x): - return getattr(x, '__func__', x) - - -class ContextMeta(type): - - def __new__(cls, name, bases, d): - rv = type.__new__(cls, name, bases, d) - if bases == (): - return rv - - resolve = _get_func(rv.resolve) - default_resolve = _get_func(Context.resolve) - resolve_or_missing = _get_func(rv.resolve_or_missing) - default_resolve_or_missing = _get_func(Context.resolve_or_missing) - - # If we have a changed resolve but no changed default or missing - # resolve we invert the call logic. - if resolve is not default_resolve and \ - resolve_or_missing is default_resolve_or_missing: - rv._legacy_resolve_mode = True - elif resolve is default_resolve and \ - resolve_or_missing is default_resolve_or_missing: - rv._fast_resolve_mode = True - - return rv - - -def resolve_or_missing(context, key, missing=missing): - if key in context.vars: - return context.vars[key] - if key in context.parent: - return context.parent[key] - return missing - - -class Context(with_metaclass(ContextMeta)): - """The template context holds the variables of a template. It stores the - values passed to the template and also the names the template exports. - Creating instances is neither supported nor useful as it's created - automatically at various stages of the template evaluation and should not - be created by hand. - - The context is immutable. Modifications on :attr:`parent` **must not** - happen and modifications on :attr:`vars` are allowed from generated - template code only. Template filters and global functions marked as - :func:`contextfunction`\\s get the active context passed as first argument - and are allowed to access the context read-only. - - The template context supports read only dict operations (`get`, - `keys`, `values`, `items`, `iterkeys`, `itervalues`, `iteritems`, - `__getitem__`, `__contains__`). Additionally there is a :meth:`resolve` - method that doesn't fail with a `KeyError` but returns an - :class:`Undefined` object for missing variables. - """ - # XXX: we want to eventually make this be a deprecation warning and - # remove it. - _legacy_resolve_mode = False - _fast_resolve_mode = False - - def __init__(self, environment, parent, name, blocks): - self.parent = parent - self.vars = {} - self.environment = environment - self.eval_ctx = EvalContext(self.environment, name) - self.exported_vars = set() - self.name = name - - # create the initial mapping of blocks. Whenever template inheritance - # takes place the runtime will update this mapping with the new blocks - # from the template. - self.blocks = dict((k, [v]) for k, v in iteritems(blocks)) - - # In case we detect the fast resolve mode we can set up an alias - # here that bypasses the legacy code logic. - if self._fast_resolve_mode: - self.resolve_or_missing = MethodType(resolve_or_missing, self) - - def super(self, name, current): - """Render a parent block.""" - try: - blocks = self.blocks[name] - index = blocks.index(current) + 1 - blocks[index] - except LookupError: - return self.environment.undefined('there is no parent block ' - 'called %r.' % name, - name='super') - return BlockReference(name, self, blocks, index) - - def get(self, key, default=None): - """Returns an item from the template context, if it doesn't exist - `default` is returned. - """ - try: - return self[key] - except KeyError: - return default - - def resolve(self, key): - """Looks up a variable like `__getitem__` or `get` but returns an - :class:`Undefined` object with the name of the name looked up. - """ - if self._legacy_resolve_mode: - rv = resolve_or_missing(self, key) - else: - rv = self.resolve_or_missing(key) - if rv is missing: - return self.environment.undefined(name=key) - return rv - - def resolve_or_missing(self, key): - """Resolves a variable like :meth:`resolve` but returns the - special `missing` value if it cannot be found. - """ - if self._legacy_resolve_mode: - rv = self.resolve(key) - if isinstance(rv, Undefined): - rv = missing - return rv - return resolve_or_missing(self, key) - - def get_exported(self): - """Get a new dict with the exported variables.""" - return dict((k, self.vars[k]) for k in self.exported_vars) - - def get_all(self): - """Return the complete context as dict including the exported - variables. For optimizations reasons this might not return an - actual copy so be careful with using it. - """ - if not self.vars: - return self.parent - if not self.parent: - return self.vars - return dict(self.parent, **self.vars) - - @internalcode - def call(__self, __obj, *args, **kwargs): - """Call the callable with the arguments and keyword arguments - provided but inject the active context or environment as first - argument if the callable is a :func:`contextfunction` or - :func:`environmentfunction`. - """ - if __debug__: - __traceback_hide__ = True # noqa - - # Allow callable classes to take a context - if hasattr(__obj, '__call__'): - fn = __obj.__call__ - for fn_type in ('contextfunction', - 'evalcontextfunction', - 'environmentfunction'): - if hasattr(fn, fn_type): - __obj = fn - break - - if isinstance(__obj, _context_function_types): - if getattr(__obj, 'contextfunction', 0): - args = (__self,) + args - elif getattr(__obj, 'evalcontextfunction', 0): - args = (__self.eval_ctx,) + args - elif getattr(__obj, 'environmentfunction', 0): - args = (__self.environment,) + args - try: - return __obj(*args, **kwargs) - except StopIteration: - return __self.environment.undefined('value was undefined because ' - 'a callable raised a ' - 'StopIteration exception') - - def derived(self, locals=None): - """Internal helper function to create a derived context. This is - used in situations where the system needs a new context in the same - template that is independent. - """ - context = new_context(self.environment, self.name, {}, - self.get_all(), True, None, locals) - context.eval_ctx = self.eval_ctx - context.blocks.update((k, list(v)) for k, v in iteritems(self.blocks)) - return context - - def _all(meth): - proxy = lambda self: getattr(self.get_all(), meth)() - proxy.__doc__ = getattr(dict, meth).__doc__ - proxy.__name__ = meth - return proxy - - keys = _all('keys') - values = _all('values') - items = _all('items') - - # not available on python 3 - if PY2: - iterkeys = _all('iterkeys') - itervalues = _all('itervalues') - iteritems = _all('iteritems') - del _all - - def __contains__(self, name): - return name in self.vars or name in self.parent - - def __getitem__(self, key): - """Lookup a variable or raise `KeyError` if the variable is - undefined. - """ - item = self.resolve_or_missing(key) - if item is missing: - raise KeyError(key) - return item - - def __repr__(self): - return '<%s %s of %r>' % ( - self.__class__.__name__, - repr(self.get_all()), - self.name - ) - - -# register the context as mapping if possible -try: - from collections import Mapping - Mapping.register(Context) -except ImportError: - pass - - -class BlockReference(object): - """One block on a template reference.""" - - def __init__(self, name, context, stack, depth): - self.name = name - self._context = context - self._stack = stack - self._depth = depth - - @property - def super(self): - """Super the block.""" - if self._depth + 1 >= len(self._stack): - return self._context.environment. \ - undefined('there is no parent block called %r.' % - self.name, name='super') - return BlockReference(self.name, self._context, self._stack, - self._depth + 1) - - @internalcode - def __call__(self): - rv = concat(self._stack[self._depth](self._context)) - if self._context.eval_ctx.autoescape: - rv = Markup(rv) - return rv - - -class LoopContextBase(object): - """A loop context for dynamic iteration.""" - - _before = _first_iteration - _current = _first_iteration - _after = _last_iteration - _length = None - - def __init__(self, undefined, recurse=None, depth0=0): - self._undefined = undefined - self._recurse = recurse - self.index0 = -1 - self.depth0 = depth0 - self._last_checked_value = missing - - def cycle(self, *args): - """Cycles among the arguments with the current loop index.""" - if not args: - raise TypeError('no items for cycling given') - return args[self.index0 % len(args)] - - def changed(self, *value): - """Checks whether the value has changed since the last call.""" - if self._last_checked_value != value: - self._last_checked_value = value - return True - return False - - first = property(lambda x: x.index0 == 0) - last = property(lambda x: x._after is _last_iteration) - index = property(lambda x: x.index0 + 1) - revindex = property(lambda x: x.length - x.index0) - revindex0 = property(lambda x: x.length - x.index) - depth = property(lambda x: x.depth0 + 1) - - @property - def previtem(self): - if self._before is _first_iteration: - return self._undefined('there is no previous item') - return self._before - - @property - def nextitem(self): - if self._after is _last_iteration: - return self._undefined('there is no next item') - return self._after - - def __len__(self): - return self.length - - @internalcode - def loop(self, iterable): - if self._recurse is None: - raise TypeError('Tried to call non recursive loop. Maybe you ' - "forgot the 'recursive' modifier.") - return self._recurse(iterable, self._recurse, self.depth0 + 1) - - # a nifty trick to enhance the error message if someone tried to call - # the the loop without or with too many arguments. - __call__ = loop - del loop - - def __repr__(self): - return '<%s %r/%r>' % ( - self.__class__.__name__, - self.index, - self.length - ) - - -class LoopContext(LoopContextBase): - - def __init__(self, iterable, undefined, recurse=None, depth0=0): - LoopContextBase.__init__(self, undefined, recurse, depth0) - self._iterator = iter(iterable) - - # try to get the length of the iterable early. This must be done - # here because there are some broken iterators around where there - # __len__ is the number of iterations left (i'm looking at your - # listreverseiterator!). - try: - self._length = len(iterable) - except (TypeError, AttributeError): - self._length = None - self._after = self._safe_next() - - @property - def length(self): - if self._length is None: - # if was not possible to get the length of the iterator when - # the loop context was created (ie: iterating over a generator) - # we have to convert the iterable into a sequence and use the - # length of that + the number of iterations so far. - iterable = tuple(self._iterator) - self._iterator = iter(iterable) - iterations_done = self.index0 + 2 - self._length = len(iterable) + iterations_done - return self._length - - def __iter__(self): - return LoopContextIterator(self) - - def _safe_next(self): - try: - return next(self._iterator) - except StopIteration: - return _last_iteration - - -@implements_iterator -class LoopContextIterator(object): - """The iterator for a loop context.""" - __slots__ = ('context',) - - def __init__(self, context): - self.context = context - - def __iter__(self): - return self - - def __next__(self): - ctx = self.context - ctx.index0 += 1 - if ctx._after is _last_iteration: - raise StopIteration() - ctx._before = ctx._current - ctx._current = ctx._after - ctx._after = ctx._safe_next() - return ctx._current, ctx - - -class Macro(object): - """Wraps a macro function.""" - - def __init__(self, environment, func, name, arguments, - catch_kwargs, catch_varargs, caller, - default_autoescape=None): - self._environment = environment - self._func = func - self._argument_count = len(arguments) - self.name = name - self.arguments = arguments - self.catch_kwargs = catch_kwargs - self.catch_varargs = catch_varargs - self.caller = caller - self.explicit_caller = 'caller' in arguments - if default_autoescape is None: - default_autoescape = environment.autoescape - self._default_autoescape = default_autoescape - - @internalcode - @evalcontextfunction - def __call__(self, *args, **kwargs): - # This requires a bit of explanation, In the past we used to - # decide largely based on compile-time information if a macro is - # safe or unsafe. While there was a volatile mode it was largely - # unused for deciding on escaping. This turns out to be - # problemtic for macros because if a macro is safe or not not so - # much depends on the escape mode when it was defined but when it - # was used. - # - # Because however we export macros from the module system and - # there are historic callers that do not pass an eval context (and - # will continue to not pass one), we need to perform an instance - # check here. - # - # This is considered safe because an eval context is not a valid - # argument to callables otherwise anwyays. Worst case here is - # that if no eval context is passed we fall back to the compile - # time autoescape flag. - if args and isinstance(args[0], EvalContext): - autoescape = args[0].autoescape - args = args[1:] - else: - autoescape = self._default_autoescape - - # try to consume the positional arguments - arguments = list(args[:self._argument_count]) - off = len(arguments) - - # For information why this is necessary refer to the handling - # of caller in the `macro_body` handler in the compiler. - found_caller = False - - # if the number of arguments consumed is not the number of - # arguments expected we start filling in keyword arguments - # and defaults. - if off != self._argument_count: - for idx, name in enumerate(self.arguments[len(arguments):]): - try: - value = kwargs.pop(name) - except KeyError: - value = missing - if name == 'caller': - found_caller = True - arguments.append(value) - else: - found_caller = self.explicit_caller - - # it's important that the order of these arguments does not change - # if not also changed in the compiler's `function_scoping` method. - # the order is caller, keyword arguments, positional arguments! - if self.caller and not found_caller: - caller = kwargs.pop('caller', None) - if caller is None: - caller = self._environment.undefined('No caller defined', - name='caller') - arguments.append(caller) - - if self.catch_kwargs: - arguments.append(kwargs) - elif kwargs: - if 'caller' in kwargs: - raise TypeError('macro %r was invoked with two values for ' - 'the special caller argument. This is ' - 'most likely a bug.' % self.name) - raise TypeError('macro %r takes no keyword argument %r' % - (self.name, next(iter(kwargs)))) - if self.catch_varargs: - arguments.append(args[self._argument_count:]) - elif len(args) > self._argument_count: - raise TypeError('macro %r takes not more than %d argument(s)' % - (self.name, len(self.arguments))) - - return self._invoke(arguments, autoescape) - - def _invoke(self, arguments, autoescape): - """This method is being swapped out by the async implementation.""" - rv = self._func(*arguments) - if autoescape: - rv = Markup(rv) - return rv - - def __repr__(self): - return '<%s %s>' % ( - self.__class__.__name__, - self.name is None and 'anonymous' or repr(self.name) - ) - - -@implements_to_string -class Undefined(object): - """The default undefined type. This undefined type can be printed and - iterated over, but every other access will raise an :exc:`jinja2.exceptions.UndefinedError`: - - >>> foo = Undefined(name='foo') - >>> str(foo) - '' - >>> not foo - True - >>> foo + 42 - Traceback (most recent call last): - ... - jinja2.exceptions.UndefinedError: 'foo' is undefined - """ - __slots__ = ('_undefined_hint', '_undefined_obj', '_undefined_name', - '_undefined_exception') - - def __init__(self, hint=None, obj=missing, name=None, exc=UndefinedError): - self._undefined_hint = hint - self._undefined_obj = obj - self._undefined_name = name - self._undefined_exception = exc - - @internalcode - def _fail_with_undefined_error(self, *args, **kwargs): - """Regular callback function for undefined objects that raises an - `jinja2.exceptions.UndefinedError` on call. - """ - if self._undefined_hint is None: - if self._undefined_obj is missing: - hint = '%r is undefined' % self._undefined_name - elif not isinstance(self._undefined_name, string_types): - hint = '%s has no element %r' % ( - object_type_repr(self._undefined_obj), - self._undefined_name - ) - else: - hint = '%r has no attribute %r' % ( - object_type_repr(self._undefined_obj), - self._undefined_name - ) - else: - hint = self._undefined_hint - raise self._undefined_exception(hint) - - @internalcode - def __getattr__(self, name): - if name[:2] == '__': - raise AttributeError(name) - return self._fail_with_undefined_error() - - __add__ = __radd__ = __mul__ = __rmul__ = __div__ = __rdiv__ = \ - __truediv__ = __rtruediv__ = __floordiv__ = __rfloordiv__ = \ - __mod__ = __rmod__ = __pos__ = __neg__ = __call__ = \ - __getitem__ = __lt__ = __le__ = __gt__ = __ge__ = __int__ = \ - __float__ = __complex__ = __pow__ = __rpow__ = __sub__ = \ - __rsub__ = _fail_with_undefined_error - - def __eq__(self, other): - return type(self) is type(other) - - def __ne__(self, other): - return not self.__eq__(other) - - def __hash__(self): - return id(type(self)) - - def __str__(self): - return u'' - - def __len__(self): - return 0 - - def __iter__(self): - if 0: - yield None - - def __nonzero__(self): - return False - __bool__ = __nonzero__ - - def __repr__(self): - return 'Undefined' - - -def make_logging_undefined(logger=None, base=None): - """Given a logger object this returns a new undefined class that will - log certain failures. It will log iterations and printing. If no - logger is given a default logger is created. - - Example:: - - logger = logging.getLogger(__name__) - LoggingUndefined = make_logging_undefined( - logger=logger, - base=Undefined - ) - - .. versionadded:: 2.8 - - :param logger: the logger to use. If not provided, a default logger - is created. - :param base: the base class to add logging functionality to. This - defaults to :class:`Undefined`. - """ - if logger is None: - import logging - logger = logging.getLogger(__name__) - logger.addHandler(logging.StreamHandler(sys.stderr)) - if base is None: - base = Undefined - - def _log_message(undef): - if undef._undefined_hint is None: - if undef._undefined_obj is missing: - hint = '%s is undefined' % undef._undefined_name - elif not isinstance(undef._undefined_name, string_types): - hint = '%s has no element %s' % ( - object_type_repr(undef._undefined_obj), - undef._undefined_name) - else: - hint = '%s has no attribute %s' % ( - object_type_repr(undef._undefined_obj), - undef._undefined_name) - else: - hint = undef._undefined_hint - logger.warning('Template variable warning: %s', hint) - - class LoggingUndefined(base): - - def _fail_with_undefined_error(self, *args, **kwargs): - try: - return base._fail_with_undefined_error(self, *args, **kwargs) - except self._undefined_exception as e: - logger.error('Template variable error: %s', str(e)) - raise e - - def __str__(self): - rv = base.__str__(self) - _log_message(self) - return rv - - def __iter__(self): - rv = base.__iter__(self) - _log_message(self) - return rv - - if PY2: - def __nonzero__(self): - rv = base.__nonzero__(self) - _log_message(self) - return rv - - def __unicode__(self): - rv = base.__unicode__(self) - _log_message(self) - return rv - else: - def __bool__(self): - rv = base.__bool__(self) - _log_message(self) - return rv - - return LoggingUndefined - - -@implements_to_string -class DebugUndefined(Undefined): - """An undefined that returns the debug info when printed. - - >>> foo = DebugUndefined(name='foo') - >>> str(foo) - '{{ foo }}' - >>> not foo - True - >>> foo + 42 - Traceback (most recent call last): - ... - jinja2.exceptions.UndefinedError: 'foo' is undefined - """ - __slots__ = () - - def __str__(self): - if self._undefined_hint is None: - if self._undefined_obj is missing: - return u'{{ %s }}' % self._undefined_name - return '{{ no such element: %s[%r] }}' % ( - object_type_repr(self._undefined_obj), - self._undefined_name - ) - return u'{{ undefined value printed: %s }}' % self._undefined_hint - - -@implements_to_string -class StrictUndefined(Undefined): - """An undefined that barks on print and iteration as well as boolean - tests and all kinds of comparisons. In other words: you can do nothing - with it except checking if it's defined using the `defined` test. - - >>> foo = StrictUndefined(name='foo') - >>> str(foo) - Traceback (most recent call last): - ... - jinja2.exceptions.UndefinedError: 'foo' is undefined - >>> not foo - Traceback (most recent call last): - ... - jinja2.exceptions.UndefinedError: 'foo' is undefined - >>> foo + 42 - Traceback (most recent call last): - ... - jinja2.exceptions.UndefinedError: 'foo' is undefined - """ - __slots__ = () - __iter__ = __str__ = __len__ = __nonzero__ = __eq__ = \ - __ne__ = __bool__ = __hash__ = \ - Undefined._fail_with_undefined_error - - -# remove remaining slots attributes, after the metaclass did the magic they -# are unneeded and irritating as they contain wrong data for the subclasses. -del Undefined.__slots__, DebugUndefined.__slots__, StrictUndefined.__slots__ diff --git a/python/jinja2/sandbox.py b/python/jinja2/sandbox.py deleted file mode 100644 index 752e812..0000000 --- a/python/jinja2/sandbox.py +++ /dev/null @@ -1,486 +0,0 @@ -# -*- coding: utf-8 -*- -""" - jinja2.sandbox - ~~~~~~~~~~~~~~ - - Adds a sandbox layer to Jinja as it was the default behavior in the old - Jinja 1 releases. This sandbox is slightly different from Jinja 1 as the - default behavior is easier to use. - - The behavior can be changed by subclassing the environment. - - :copyright: (c) 2017 by the Jinja Team. - :license: BSD. -""" -import types -import operator -from collections import Mapping -from jinja2.environment import Environment -from jinja2.exceptions import SecurityError -from jinja2._compat import string_types, PY2 -from jinja2.utils import Markup - -from markupsafe import EscapeFormatter -from string import Formatter - - -#: maximum number of items a range may produce -MAX_RANGE = 100000 - -#: attributes of function objects that are considered unsafe. -if PY2: - UNSAFE_FUNCTION_ATTRIBUTES = set(['func_closure', 'func_code', 'func_dict', - 'func_defaults', 'func_globals']) -else: - # On versions > python 2 the special attributes on functions are gone, - # but they remain on methods and generators for whatever reason. - UNSAFE_FUNCTION_ATTRIBUTES = set() - - -#: unsafe method attributes. function attributes are unsafe for methods too -UNSAFE_METHOD_ATTRIBUTES = set(['im_class', 'im_func', 'im_self']) - -#: unsafe generator attirbutes. -UNSAFE_GENERATOR_ATTRIBUTES = set(['gi_frame', 'gi_code']) - -#: unsafe attributes on coroutines -UNSAFE_COROUTINE_ATTRIBUTES = set(['cr_frame', 'cr_code']) - -#: unsafe attributes on async generators -UNSAFE_ASYNC_GENERATOR_ATTRIBUTES = set(['ag_code', 'ag_frame']) - -import warnings - -# make sure we don't warn in python 2.6 about stuff we don't care about -warnings.filterwarnings('ignore', 'the sets module', DeprecationWarning, - module='jinja2.sandbox') - -from collections import deque - -_mutable_set_types = (set,) -_mutable_mapping_types = (dict,) -_mutable_sequence_types = (list,) - - -# on python 2.x we can register the user collection types -try: - from UserDict import UserDict, DictMixin - from UserList import UserList - _mutable_mapping_types += (UserDict, DictMixin) - _mutable_set_types += (UserList,) -except ImportError: - pass - -# if sets is still available, register the mutable set from there as well -try: - from sets import Set - _mutable_set_types += (Set,) -except ImportError: - pass - -#: register Python 2.6 abstract base classes -from collections import MutableSet, MutableMapping, MutableSequence -_mutable_set_types += (MutableSet,) -_mutable_mapping_types += (MutableMapping,) -_mutable_sequence_types += (MutableSequence,) - - -_mutable_spec = ( - (_mutable_set_types, frozenset([ - 'add', 'clear', 'difference_update', 'discard', 'pop', 'remove', - 'symmetric_difference_update', 'update' - ])), - (_mutable_mapping_types, frozenset([ - 'clear', 'pop', 'popitem', 'setdefault', 'update' - ])), - (_mutable_sequence_types, frozenset([ - 'append', 'reverse', 'insert', 'sort', 'extend', 'remove' - ])), - (deque, frozenset([ - 'append', 'appendleft', 'clear', 'extend', 'extendleft', 'pop', - 'popleft', 'remove', 'rotate' - ])) -) - - -class _MagicFormatMapping(Mapping): - """This class implements a dummy wrapper to fix a bug in the Python - standard library for string formatting. - - See https://bugs.python.org/issue13598 for information about why - this is necessary. - """ - - def __init__(self, args, kwargs): - self._args = args - self._kwargs = kwargs - self._last_index = 0 - - def __getitem__(self, key): - if key == '': - idx = self._last_index - self._last_index += 1 - try: - return self._args[idx] - except LookupError: - pass - key = str(idx) - return self._kwargs[key] - - def __iter__(self): - return iter(self._kwargs) - - def __len__(self): - return len(self._kwargs) - - -def inspect_format_method(callable): - if not isinstance(callable, (types.MethodType, - types.BuiltinMethodType)) or \ - callable.__name__ not in ('format', 'format_map'): - return None - obj = callable.__self__ - if isinstance(obj, string_types): - return obj - - -def safe_range(*args): - """A range that can't generate ranges with a length of more than - MAX_RANGE items. - """ - rng = range(*args) - if len(rng) > MAX_RANGE: - raise OverflowError('range too big, maximum size for range is %d' % - MAX_RANGE) - return rng - - -def unsafe(f): - """Marks a function or method as unsafe. - - :: - - @unsafe - def delete(self): - pass - """ - f.unsafe_callable = True - return f - - -def is_internal_attribute(obj, attr): - """Test if the attribute given is an internal python attribute. For - example this function returns `True` for the `func_code` attribute of - python objects. This is useful if the environment method - :meth:`~SandboxedEnvironment.is_safe_attribute` is overridden. - - >>> from jinja2.sandbox import is_internal_attribute - >>> is_internal_attribute(str, "mro") - True - >>> is_internal_attribute(str, "upper") - False - """ - if isinstance(obj, types.FunctionType): - if attr in UNSAFE_FUNCTION_ATTRIBUTES: - return True - elif isinstance(obj, types.MethodType): - if attr in UNSAFE_FUNCTION_ATTRIBUTES or \ - attr in UNSAFE_METHOD_ATTRIBUTES: - return True - elif isinstance(obj, type): - if attr == 'mro': - return True - elif isinstance(obj, (types.CodeType, types.TracebackType, types.FrameType)): - return True - elif isinstance(obj, types.GeneratorType): - if attr in UNSAFE_GENERATOR_ATTRIBUTES: - return True - elif hasattr(types, 'CoroutineType') and isinstance(obj, types.CoroutineType): - if attr in UNSAFE_COROUTINE_ATTRIBUTES: - return True - elif hasattr(types, 'AsyncGeneratorType') and isinstance(obj, types.AsyncGeneratorType): - if attr in UNSAFE_ASYNC_GENERATOR_ATTRIBUTES: - return True - return attr.startswith('__') - - -def modifies_known_mutable(obj, attr): - """This function checks if an attribute on a builtin mutable object - (list, dict, set or deque) would modify it if called. It also supports - the "user"-versions of the objects (`sets.Set`, `UserDict.*` etc.) and - with Python 2.6 onwards the abstract base classes `MutableSet`, - `MutableMapping`, and `MutableSequence`. - - >>> modifies_known_mutable({}, "clear") - True - >>> modifies_known_mutable({}, "keys") - False - >>> modifies_known_mutable([], "append") - True - >>> modifies_known_mutable([], "index") - False - - If called with an unsupported object (such as unicode) `False` is - returned. - - >>> modifies_known_mutable("foo", "upper") - False - """ - for typespec, unsafe in _mutable_spec: - if isinstance(obj, typespec): - return attr in unsafe - return False - - -class SandboxedEnvironment(Environment): - """The sandboxed environment. It works like the regular environment but - tells the compiler to generate sandboxed code. Additionally subclasses of - this environment may override the methods that tell the runtime what - attributes or functions are safe to access. - - If the template tries to access insecure code a :exc:`SecurityError` is - raised. However also other exceptions may occur during the rendering so - the caller has to ensure that all exceptions are caught. - """ - sandboxed = True - - #: default callback table for the binary operators. A copy of this is - #: available on each instance of a sandboxed environment as - #: :attr:`binop_table` - default_binop_table = { - '+': operator.add, - '-': operator.sub, - '*': operator.mul, - '/': operator.truediv, - '//': operator.floordiv, - '**': operator.pow, - '%': operator.mod - } - - #: default callback table for the unary operators. A copy of this is - #: available on each instance of a sandboxed environment as - #: :attr:`unop_table` - default_unop_table = { - '+': operator.pos, - '-': operator.neg - } - - #: a set of binary operators that should be intercepted. Each operator - #: that is added to this set (empty by default) is delegated to the - #: :meth:`call_binop` method that will perform the operator. The default - #: operator callback is specified by :attr:`binop_table`. - #: - #: The following binary operators are interceptable: - #: ``//``, ``%``, ``+``, ``*``, ``-``, ``/``, and ``**`` - #: - #: The default operation form the operator table corresponds to the - #: builtin function. Intercepted calls are always slower than the native - #: operator call, so make sure only to intercept the ones you are - #: interested in. - #: - #: .. versionadded:: 2.6 - intercepted_binops = frozenset() - - #: a set of unary operators that should be intercepted. Each operator - #: that is added to this set (empty by default) is delegated to the - #: :meth:`call_unop` method that will perform the operator. The default - #: operator callback is specified by :attr:`unop_table`. - #: - #: The following unary operators are interceptable: ``+``, ``-`` - #: - #: The default operation form the operator table corresponds to the - #: builtin function. Intercepted calls are always slower than the native - #: operator call, so make sure only to intercept the ones you are - #: interested in. - #: - #: .. versionadded:: 2.6 - intercepted_unops = frozenset() - - def intercept_unop(self, operator): - """Called during template compilation with the name of a unary - operator to check if it should be intercepted at runtime. If this - method returns `True`, :meth:`call_unop` is excuted for this unary - operator. The default implementation of :meth:`call_unop` will use - the :attr:`unop_table` dictionary to perform the operator with the - same logic as the builtin one. - - The following unary operators are interceptable: ``+`` and ``-`` - - Intercepted calls are always slower than the native operator call, - so make sure only to intercept the ones you are interested in. - - .. versionadded:: 2.6 - """ - return False - - - def __init__(self, *args, **kwargs): - Environment.__init__(self, *args, **kwargs) - self.globals['range'] = safe_range - self.binop_table = self.default_binop_table.copy() - self.unop_table = self.default_unop_table.copy() - - def is_safe_attribute(self, obj, attr, value): - """The sandboxed environment will call this method to check if the - attribute of an object is safe to access. Per default all attributes - starting with an underscore are considered private as well as the - special attributes of internal python objects as returned by the - :func:`is_internal_attribute` function. - """ - return not (attr.startswith('_') or is_internal_attribute(obj, attr)) - - def is_safe_callable(self, obj): - """Check if an object is safely callable. Per default a function is - considered safe unless the `unsafe_callable` attribute exists and is - True. Override this method to alter the behavior, but this won't - affect the `unsafe` decorator from this module. - """ - return not (getattr(obj, 'unsafe_callable', False) or - getattr(obj, 'alters_data', False)) - - def call_binop(self, context, operator, left, right): - """For intercepted binary operator calls (:meth:`intercepted_binops`) - this function is executed instead of the builtin operator. This can - be used to fine tune the behavior of certain operators. - - .. versionadded:: 2.6 - """ - return self.binop_table[operator](left, right) - - def call_unop(self, context, operator, arg): - """For intercepted unary operator calls (:meth:`intercepted_unops`) - this function is executed instead of the builtin operator. This can - be used to fine tune the behavior of certain operators. - - .. versionadded:: 2.6 - """ - return self.unop_table[operator](arg) - - def getitem(self, obj, argument): - """Subscribe an object from sandboxed code.""" - try: - return obj[argument] - except (TypeError, LookupError): - if isinstance(argument, string_types): - try: - attr = str(argument) - except Exception: - pass - else: - try: - value = getattr(obj, attr) - except AttributeError: - pass - else: - if self.is_safe_attribute(obj, argument, value): - return value - return self.unsafe_undefined(obj, argument) - return self.undefined(obj=obj, name=argument) - - def getattr(self, obj, attribute): - """Subscribe an object from sandboxed code and prefer the - attribute. The attribute passed *must* be a bytestring. - """ - try: - value = getattr(obj, attribute) - except AttributeError: - try: - return obj[attribute] - except (TypeError, LookupError): - pass - else: - if self.is_safe_attribute(obj, attribute, value): - return value - return self.unsafe_undefined(obj, attribute) - return self.undefined(obj=obj, name=attribute) - - def unsafe_undefined(self, obj, attribute): - """Return an undefined object for unsafe attributes.""" - return self.undefined('access to attribute %r of %r ' - 'object is unsafe.' % ( - attribute, - obj.__class__.__name__ - ), name=attribute, obj=obj, exc=SecurityError) - - def format_string(self, s, args, kwargs, format_func=None): - """If a format call is detected, then this is routed through this - method so that our safety sandbox can be used for it. - """ - if isinstance(s, Markup): - formatter = SandboxedEscapeFormatter(self, s.escape) - else: - formatter = SandboxedFormatter(self) - - if format_func is not None and format_func.__name__ == 'format_map': - if len(args) != 1 or kwargs: - raise TypeError( - 'format_map() takes exactly one argument %d given' - % (len(args) + (kwargs is not None)) - ) - - kwargs = args[0] - args = None - - kwargs = _MagicFormatMapping(args, kwargs) - rv = formatter.vformat(s, args, kwargs) - return type(s)(rv) - - def call(__self, __context, __obj, *args, **kwargs): - """Call an object from sandboxed code.""" - fmt = inspect_format_method(__obj) - if fmt is not None: - return __self.format_string(fmt, args, kwargs, __obj) - - # the double prefixes are to avoid double keyword argument - # errors when proxying the call. - if not __self.is_safe_callable(__obj): - raise SecurityError('%r is not safely callable' % (__obj,)) - return __context.call(__obj, *args, **kwargs) - - -class ImmutableSandboxedEnvironment(SandboxedEnvironment): - """Works exactly like the regular `SandboxedEnvironment` but does not - permit modifications on the builtin mutable objects `list`, `set`, and - `dict` by using the :func:`modifies_known_mutable` function. - """ - - def is_safe_attribute(self, obj, attr, value): - if not SandboxedEnvironment.is_safe_attribute(self, obj, attr, value): - return False - return not modifies_known_mutable(obj, attr) - - -# This really is not a public API apparenlty. -try: - from _string import formatter_field_name_split -except ImportError: - def formatter_field_name_split(field_name): - return field_name._formatter_field_name_split() - - -class SandboxedFormatterMixin(object): - - def __init__(self, env): - self._env = env - - def get_field(self, field_name, args, kwargs): - first, rest = formatter_field_name_split(field_name) - obj = self.get_value(first, args, kwargs) - for is_attr, i in rest: - if is_attr: - obj = self._env.getattr(obj, i) - else: - obj = self._env.getitem(obj, i) - return obj, first - -class SandboxedFormatter(SandboxedFormatterMixin, Formatter): - - def __init__(self, env): - SandboxedFormatterMixin.__init__(self, env) - Formatter.__init__(self) - -class SandboxedEscapeFormatter(SandboxedFormatterMixin, EscapeFormatter): - - def __init__(self, env, escape): - SandboxedFormatterMixin.__init__(self, env) - EscapeFormatter.__init__(self, escape) diff --git a/python/jinja2/tests.py b/python/jinja2/tests.py deleted file mode 100644 index 0adc3d4..0000000 --- a/python/jinja2/tests.py +++ /dev/null @@ -1,175 +0,0 @@ -# -*- coding: utf-8 -*- -""" - jinja2.tests - ~~~~~~~~~~~~ - - Jinja test functions. Used with the "is" operator. - - :copyright: (c) 2017 by the Jinja Team. - :license: BSD, see LICENSE for more details. -""" -import operator -import re -from collections import Mapping -from jinja2.runtime import Undefined -from jinja2._compat import text_type, string_types, integer_types -import decimal - -number_re = re.compile(r'^-?\d+(\.\d+)?$') -regex_type = type(number_re) - - -test_callable = callable - - -def test_odd(value): - """Return true if the variable is odd.""" - return value % 2 == 1 - - -def test_even(value): - """Return true if the variable is even.""" - return value % 2 == 0 - - -def test_divisibleby(value, num): - """Check if a variable is divisible by a number.""" - return value % num == 0 - - -def test_defined(value): - """Return true if the variable is defined: - - .. sourcecode:: jinja - - {% if variable is defined %} - value of variable: {{ variable }} - {% else %} - variable is not defined - {% endif %} - - See the :func:`default` filter for a simple way to set undefined - variables. - """ - return not isinstance(value, Undefined) - - -def test_undefined(value): - """Like :func:`defined` but the other way round.""" - return isinstance(value, Undefined) - - -def test_none(value): - """Return true if the variable is none.""" - return value is None - - -def test_lower(value): - """Return true if the variable is lowercased.""" - return text_type(value).islower() - - -def test_upper(value): - """Return true if the variable is uppercased.""" - return text_type(value).isupper() - - -def test_string(value): - """Return true if the object is a string.""" - return isinstance(value, string_types) - - -def test_mapping(value): - """Return true if the object is a mapping (dict etc.). - - .. versionadded:: 2.6 - """ - return isinstance(value, Mapping) - - -def test_number(value): - """Return true if the variable is a number.""" - return isinstance(value, integer_types + (float, complex, decimal.Decimal)) - - -def test_sequence(value): - """Return true if the variable is a sequence. Sequences are variables - that are iterable. - """ - try: - len(value) - value.__getitem__ - except: - return False - return True - - -def test_sameas(value, other): - """Check if an object points to the same memory address than another - object: - - .. sourcecode:: jinja - - {% if foo.attribute is sameas false %} - the foo attribute really is the `False` singleton - {% endif %} - """ - return value is other - - -def test_iterable(value): - """Check if it's possible to iterate over an object.""" - try: - iter(value) - except TypeError: - return False - return True - - -def test_escaped(value): - """Check if the value is escaped.""" - return hasattr(value, '__html__') - - -def test_in(value, seq): - """Check if value is in seq. - - .. versionadded:: 2.10 - """ - return value in seq - - -TESTS = { - 'odd': test_odd, - 'even': test_even, - 'divisibleby': test_divisibleby, - 'defined': test_defined, - 'undefined': test_undefined, - 'none': test_none, - 'lower': test_lower, - 'upper': test_upper, - 'string': test_string, - 'mapping': test_mapping, - 'number': test_number, - 'sequence': test_sequence, - 'iterable': test_iterable, - 'callable': test_callable, - 'sameas': test_sameas, - 'escaped': test_escaped, - 'in': test_in, - '==': operator.eq, - 'eq': operator.eq, - 'equalto': operator.eq, - '!=': operator.ne, - 'ne': operator.ne, - '>': operator.gt, - 'gt': operator.gt, - 'greaterthan': operator.gt, - 'ge': operator.ge, - '>=': operator.ge, - '<': operator.lt, - 'lt': operator.lt, - 'lessthan': operator.lt, - '<=': operator.le, - 'le': operator.le, -} diff --git a/python/jinja2/utils.py b/python/jinja2/utils.py deleted file mode 100644 index 502a311..0000000 --- a/python/jinja2/utils.py +++ /dev/null @@ -1,647 +0,0 @@ -# -*- coding: utf-8 -*- -""" - jinja2.utils - ~~~~~~~~~~~~ - - Utility functions. - - :copyright: (c) 2017 by the Jinja Team. - :license: BSD, see LICENSE for more details. -""" -import re -import json -import errno -from collections import deque -from threading import Lock -from jinja2._compat import text_type, string_types, implements_iterator, \ - url_quote - - -_word_split_re = re.compile(r'(\s+)') -_punctuation_re = re.compile( - '^(?P<lead>(?:%s)*)(?P<middle>.*?)(?P<trail>(?:%s)*)$' % ( - '|'.join(map(re.escape, ('(', '<', '&lt;'))), - '|'.join(map(re.escape, ('.', ',', ')', '>', '\n', '&gt;'))) - ) -) -_simple_email_re = re.compile(r'^\S+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+$') -_striptags_re = re.compile(r'(<!--.*?-->|<[^>]*>)') -_entity_re = re.compile(r'&([^;]+);') -_letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' -_digits = '0123456789' - -# special singleton representing missing values for the runtime -missing = type('MissingType', (), {'__repr__': lambda x: 'missing'})() - -# internal code -internal_code = set() - -concat = u''.join - -_slash_escape = '\\/' not in json.dumps('/') - - -def contextfunction(f): - """This decorator can be used to mark a function or method context callable. - A context callable is passed the active :class:`Context` as first argument when - called from the template. This is useful if a function wants to get access - to the context or functions provided on the context object. For example - a function that returns a sorted list of template variables the current - template exports could look like this:: - - @contextfunction - def get_exported_names(context): - return sorted(context.exported_vars) - """ - f.contextfunction = True - return f - - -def evalcontextfunction(f): - """This decorator can be used to mark a function or method as an eval - context callable. This is similar to the :func:`contextfunction` - but instead of passing the context, an evaluation context object is - passed. For more information about the eval context, see - :ref:`eval-context`. - - .. versionadded:: 2.4 - """ - f.evalcontextfunction = True - return f - - -def environmentfunction(f): - """This decorator can be used to mark a function or method as environment - callable. This decorator works exactly like the :func:`contextfunction` - decorator just that the first argument is the active :class:`Environment` - and not context. - """ - f.environmentfunction = True - return f - - -def internalcode(f): - """Marks the function as internally used""" - internal_code.add(f.__code__) - return f - - -def is_undefined(obj): - """Check if the object passed is undefined. This does nothing more than - performing an instance check against :class:`Undefined` but looks nicer. - This can be used for custom filters or tests that want to react to - undefined variables. For example a custom default filter can look like - this:: - - def default(var, default=''): - if is_undefined(var): - return default - return var - """ - from jinja2.runtime import Undefined - return isinstance(obj, Undefined) - - -def consume(iterable): - """Consumes an iterable without doing anything with it.""" - for event in iterable: - pass - - -def clear_caches(): - """Jinja2 keeps internal caches for environments and lexers. These are - used so that Jinja2 doesn't have to recreate environments and lexers all - the time. Normally you don't have to care about that but if you are - measuring memory consumption you may want to clean the caches. - """ - from jinja2.environment import _spontaneous_environments - from jinja2.lexer import _lexer_cache - _spontaneous_environments.clear() - _lexer_cache.clear() - - -def import_string(import_name, silent=False): - """Imports an object based on a string. This is useful if you want to - use import paths as endpoints or something similar. An import path can - be specified either in dotted notation (``xml.sax.saxutils.escape``) - or with a colon as object delimiter (``xml.sax.saxutils:escape``). - - If the `silent` is True the return value will be `None` if the import - fails. - - :return: imported object - """ - try: - if ':' in import_name: - module, obj = import_name.split(':', 1) - elif '.' in import_name: - items = import_name.split('.') - module = '.'.join(items[:-1]) - obj = items[-1] - else: - return __import__(import_name) - return getattr(__import__(module, None, None, [obj]), obj) - except (ImportError, AttributeError): - if not silent: - raise - - -def open_if_exists(filename, mode='rb'): - """Returns a file descriptor for the filename if that file exists, - otherwise `None`. - """ - try: - return open(filename, mode) - except IOError as e: - if e.errno not in (errno.ENOENT, errno.EISDIR, errno.EINVAL): - raise - - -def object_type_repr(obj): - """Returns the name of the object's type. For some recognized - singletons the name of the object is returned instead. (For - example for `None` and `Ellipsis`). - """ - if obj is None: - return 'None' - elif obj is Ellipsis: - return 'Ellipsis' - # __builtin__ in 2.x, builtins in 3.x - if obj.__class__.__module__ in ('__builtin__', 'builtins'): - name = obj.__class__.__name__ - else: - name = obj.__class__.__module__ + '.' + obj.__class__.__name__ - return '%s object' % name - - -def pformat(obj, verbose=False): - """Prettyprint an object. Either use the `pretty` library or the - builtin `pprint`. - """ - try: - from pretty import pretty - return pretty(obj, verbose=verbose) - except ImportError: - from pprint import pformat - return pformat(obj) - - -def urlize(text, trim_url_limit=None, rel=None, target=None): - """Converts any URLs in text into clickable links. Works on http://, - https:// and www. links. Links can have trailing punctuation (periods, - commas, close-parens) and leading punctuation (opening parens) and - it'll still do the right thing. - - If trim_url_limit is not None, the URLs in link text will be limited - to trim_url_limit characters. - - If nofollow is True, the URLs in link text will get a rel="nofollow" - attribute. - - If target is not None, a target attribute will be added to the link. - """ - trim_url = lambda x, limit=trim_url_limit: limit is not None \ - and (x[:limit] + (len(x) >=limit and '...' - or '')) or x - words = _word_split_re.split(text_type(escape(text))) - rel_attr = rel and ' rel="%s"' % text_type(escape(rel)) or '' - target_attr = target and ' target="%s"' % escape(target) or '' - - for i, word in enumerate(words): - match = _punctuation_re.match(word) - if match: - lead, middle, trail = match.groups() - if middle.startswith('www.') or ( - '@' not in middle and - not middle.startswith('http://') and - not middle.startswith('https://') and - len(middle) > 0 and - middle[0] in _letters + _digits and ( - middle.endswith('.org') or - middle.endswith('.net') or - middle.endswith('.com') - )): - middle = '<a href="http://%s"%s%s>%s</a>' % (middle, - rel_attr, target_attr, trim_url(middle)) - if middle.startswith('http://') or \ - middle.startswith('https://'): - middle = '<a href="%s"%s%s>%s</a>' % (middle, - rel_attr, target_attr, trim_url(middle)) - if '@' in middle and not middle.startswith('www.') and \ - not ':' in middle and _simple_email_re.match(middle): - middle = '<a href="mailto:%s">%s</a>' % (middle, middle) - if lead + middle + trail != word: - words[i] = lead + middle + trail - return u''.join(words) - - -def generate_lorem_ipsum(n=5, html=True, min=20, max=100): - """Generate some lorem ipsum for the template.""" - from jinja2.constants import LOREM_IPSUM_WORDS - from random import choice, randrange - words = LOREM_IPSUM_WORDS.split() - result = [] - - for _ in range(n): - next_capitalized = True - last_comma = last_fullstop = 0 - word = None - last = None - p = [] - - # each paragraph contains out of 20 to 100 words. - for idx, _ in enumerate(range(randrange(min, max))): - while True: - word = choice(words) - if word != last: - last = word - break - if next_capitalized: - word = word.capitalize() - next_capitalized = False - # add commas - if idx - randrange(3, 8) > last_comma: - last_comma = idx - last_fullstop += 2 - word += ',' - # add end of sentences - if idx - randrange(10, 20) > last_fullstop: - last_comma = last_fullstop = idx - word += '.' - next_capitalized = True - p.append(word) - - # ensure that the paragraph ends with a dot. - p = u' '.join(p) - if p.endswith(','): - p = p[:-1] + '.' - elif not p.endswith('.'): - p += '.' - result.append(p) - - if not html: - return u'\n\n'.join(result) - return Markup(u'\n'.join(u'<p>%s</p>' % escape(x) for x in result)) - - -def unicode_urlencode(obj, charset='utf-8', for_qs=False): - """URL escapes a single bytestring or unicode string with the - given charset if applicable to URL safe quoting under all rules - that need to be considered under all supported Python versions. - - If non strings are provided they are converted to their unicode - representation first. - """ - if not isinstance(obj, string_types): - obj = text_type(obj) - if isinstance(obj, text_type): - obj = obj.encode(charset) - safe = not for_qs and b'/' or b'' - rv = text_type(url_quote(obj, safe)) - if for_qs: - rv = rv.replace('%20', '+') - return rv - - -class LRUCache(object): - """A simple LRU Cache implementation.""" - - # this is fast for small capacities (something below 1000) but doesn't - # scale. But as long as it's only used as storage for templates this - # won't do any harm. - - def __init__(self, capacity): - self.capacity = capacity - self._mapping = {} - self._queue = deque() - self._postinit() - - def _postinit(self): - # alias all queue methods for faster lookup - self._popleft = self._queue.popleft - self._pop = self._queue.pop - self._remove = self._queue.remove - self._wlock = Lock() - self._append = self._queue.append - - def __getstate__(self): - return { - 'capacity': self.capacity, - '_mapping': self._mapping, - '_queue': self._queue - } - - def __setstate__(self, d): - self.__dict__.update(d) - self._postinit() - - def __getnewargs__(self): - return (self.capacity,) - - def copy(self): - """Return a shallow copy of the instance.""" - rv = self.__class__(self.capacity) - rv._mapping.update(self._mapping) - rv._queue = deque(self._queue) - return rv - - def get(self, key, default=None): - """Return an item from the cache dict or `default`""" - try: - return self[key] - except KeyError: - return default - - def setdefault(self, key, default=None): - """Set `default` if the key is not in the cache otherwise - leave unchanged. Return the value of this key. - """ - self._wlock.acquire() - try: - try: - return self[key] - except KeyError: - self[key] = default - return default - finally: - self._wlock.release() - - def clear(self): - """Clear the cache.""" - self._wlock.acquire() - try: - self._mapping.clear() - self._queue.clear() - finally: - self._wlock.release() - - def __contains__(self, key): - """Check if a key exists in this cache.""" - return key in self._mapping - - def __len__(self): - """Return the current size of the cache.""" - return len(self._mapping) - - def __repr__(self): - return '<%s %r>' % ( - self.__class__.__name__, - self._mapping - ) - - def __getitem__(self, key): - """Get an item from the cache. Moves the item up so that it has the - highest priority then. - - Raise a `KeyError` if it does not exist. - """ - self._wlock.acquire() - try: - rv = self._mapping[key] - if self._queue[-1] != key: - try: - self._remove(key) - except ValueError: - # if something removed the key from the container - # when we read, ignore the ValueError that we would - # get otherwise. - pass - self._append(key) - return rv - finally: - self._wlock.release() - - def __setitem__(self, key, value): - """Sets the value for an item. Moves the item up so that it - has the highest priority then. - """ - self._wlock.acquire() - try: - if key in self._mapping: - self._remove(key) - elif len(self._mapping) == self.capacity: - del self._mapping[self._popleft()] - self._append(key) - self._mapping[key] = value - finally: - self._wlock.release() - - def __delitem__(self, key): - """Remove an item from the cache dict. - Raise a `KeyError` if it does not exist. - """ - self._wlock.acquire() - try: - del self._mapping[key] - try: - self._remove(key) - except ValueError: - # __getitem__ is not locked, it might happen - pass - finally: - self._wlock.release() - - def items(self): - """Return a list of items.""" - result = [(key, self._mapping[key]) for key in list(self._queue)] - result.reverse() - return result - - def iteritems(self): - """Iterate over all items.""" - return iter(self.items()) - - def values(self): - """Return a list of all values.""" - return [x[1] for x in self.items()] - - def itervalue(self): - """Iterate over all values.""" - return iter(self.values()) - - def keys(self): - """Return a list of all keys ordered by most recent usage.""" - return list(self) - - def iterkeys(self): - """Iterate over all keys in the cache dict, ordered by - the most recent usage. - """ - return reversed(tuple(self._queue)) - - __iter__ = iterkeys - - def __reversed__(self): - """Iterate over the values in the cache dict, oldest items - coming first. - """ - return iter(tuple(self._queue)) - - __copy__ = copy - - -# register the LRU cache as mutable mapping if possible -try: - from collections import MutableMapping - MutableMapping.register(LRUCache) -except ImportError: - pass - - -def select_autoescape(enabled_extensions=('html', 'htm', 'xml'), - disabled_extensions=(), - default_for_string=True, - default=False): - """Intelligently sets the initial value of autoescaping based on the - filename of the template. This is the recommended way to configure - autoescaping if you do not want to write a custom function yourself. - - If you want to enable it for all templates created from strings or - for all templates with `.html` and `.xml` extensions:: - - from jinja2 import Environment, select_autoescape - env = Environment(autoescape=select_autoescape( - enabled_extensions=('html', 'xml'), - default_for_string=True, - )) - - Example configuration to turn it on at all times except if the template - ends with `.txt`:: - - from jinja2 import Environment, select_autoescape - env = Environment(autoescape=select_autoescape( - disabled_extensions=('txt',), - default_for_string=True, - default=True, - )) - - The `enabled_extensions` is an iterable of all the extensions that - autoescaping should be enabled for. Likewise `disabled_extensions` is - a list of all templates it should be disabled for. If a template is - loaded from a string then the default from `default_for_string` is used. - If nothing matches then the initial value of autoescaping is set to the - value of `default`. - - For security reasons this function operates case insensitive. - - .. versionadded:: 2.9 - """ - enabled_patterns = tuple('.' + x.lstrip('.').lower() - for x in enabled_extensions) - disabled_patterns = tuple('.' + x.lstrip('.').lower() - for x in disabled_extensions) - def autoescape(template_name): - if template_name is None: - return default_for_string - template_name = template_name.lower() - if template_name.endswith(enabled_patterns): - return True - if template_name.endswith(disabled_patterns): - return False - return default - return autoescape - - -def htmlsafe_json_dumps(obj, dumper=None, **kwargs): - """Works exactly like :func:`dumps` but is safe for use in ``<script>`` - tags. It accepts the same arguments and returns a JSON string. Note that - this is available in templates through the ``|tojson`` filter which will - also mark the result as safe. Due to how this function escapes certain - characters this is safe even if used outside of ``<script>`` tags. - - The following characters are escaped in strings: - - - ``<`` - - ``>`` - - ``&`` - - ``'`` - - This makes it safe to embed such strings in any place in HTML with the - notable exception of double quoted attributes. In that case single - quote your attributes or HTML escape it in addition. - """ - if dumper is None: - dumper = json.dumps - rv = dumper(obj, **kwargs) \ - .replace(u'<', u'\\u003c') \ - .replace(u'>', u'\\u003e') \ - .replace(u'&', u'\\u0026') \ - .replace(u"'", u'\\u0027') - return Markup(rv) - - -@implements_iterator -class Cycler(object): - """A cycle helper for templates.""" - - def __init__(self, *items): - if not items: - raise RuntimeError('at least one item has to be provided') - self.items = items - self.reset() - - def reset(self): - """Resets the cycle.""" - self.pos = 0 - - @property - def current(self): - """Returns the current item.""" - return self.items[self.pos] - - def next(self): - """Goes one item ahead and returns it.""" - rv = self.current - self.pos = (self.pos + 1) % len(self.items) - return rv - - __next__ = next - - -class Joiner(object): - """A joining helper for templates.""" - - def __init__(self, sep=u', '): - self.sep = sep - self.used = False - - def __call__(self): - if not self.used: - self.used = True - return u'' - return self.sep - - -class Namespace(object): - """A namespace object that can hold arbitrary attributes. It may be - initialized from a dictionary or with keyword argments.""" - - def __init__(*args, **kwargs): - self, args = args[0], args[1:] - self.__attrs = dict(*args, **kwargs) - - def __getattribute__(self, name): - if name == '_Namespace__attrs': - return object.__getattribute__(self, name) - try: - return self.__attrs[name] - except KeyError: - raise AttributeError(name) - - def __setitem__(self, name, value): - self.__attrs[name] = value - - def __repr__(self): - return '<Namespace %r>' % self.__attrs - - -# does this python version support async for in and async generators? -try: - exec('async def _():\n async for _ in ():\n yield _') - have_async_gen = True -except SyntaxError: - have_async_gen = False - - -# Imported here because that's where it was in the past -from markupsafe import Markup, escape, soft_unicode diff --git a/python/jinja2/visitor.py b/python/jinja2/visitor.py deleted file mode 100644 index ba526df..0000000 --- a/python/jinja2/visitor.py +++ /dev/null @@ -1,87 +0,0 @@ -# -*- coding: utf-8 -*- -""" - jinja2.visitor - ~~~~~~~~~~~~~~ - - This module implements a visitor for the nodes. - - :copyright: (c) 2017 by the Jinja Team. - :license: BSD. -""" -from jinja2.nodes import Node - - -class NodeVisitor(object): - """Walks the abstract syntax tree and call visitor functions for every - node found. The visitor functions may return values which will be - forwarded by the `visit` method. - - Per default the visitor functions for the nodes are ``'visit_'`` + - class name of the node. So a `TryFinally` node visit function would - be `visit_TryFinally`. This behavior can be changed by overriding - the `get_visitor` function. If no visitor function exists for a node - (return value `None`) the `generic_visit` visitor is used instead. - """ - - def get_visitor(self, node): - """Return the visitor function for this node or `None` if no visitor - exists for this node. In that case the generic visit function is - used instead. - """ - method = 'visit_' + node.__class__.__name__ - return getattr(self, method, None) - - def visit(self, node, *args, **kwargs): - """Visit a node.""" - f = self.get_visitor(node) - if f is not None: - return f(node, *args, **kwargs) - return self.generic_visit(node, *args, **kwargs) - - def generic_visit(self, node, *args, **kwargs): - """Called if no explicit visitor function exists for a node.""" - for node in node.iter_child_nodes(): - self.visit(node, *args, **kwargs) - - -class NodeTransformer(NodeVisitor): - """Walks the abstract syntax tree and allows modifications of nodes. - - The `NodeTransformer` will walk the AST and use the return value of the - visitor functions to replace or remove the old node. If the return - value of the visitor function is `None` the node will be removed - from the previous location otherwise it's replaced with the return - value. The return value may be the original node in which case no - replacement takes place. - """ - - def generic_visit(self, node, *args, **kwargs): - for field, old_value in node.iter_fields(): - if isinstance(old_value, list): - new_values = [] - for value in old_value: - if isinstance(value, Node): - value = self.visit(value, *args, **kwargs) - if value is None: - continue - elif not isinstance(value, Node): - new_values.extend(value) - continue - new_values.append(value) - old_value[:] = new_values - elif isinstance(old_value, Node): - new_node = self.visit(old_value, *args, **kwargs) - if new_node is None: - delattr(node, field) - else: - setattr(node, field, new_node) - return node - - def visit_list(self, node, *args, **kwargs): - """As transformers may return lists in some places this method - can be used to enforce a list as return value. - """ - rv = self.visit(node, *args, **kwargs) - if not isinstance(rv, list): - rv = [rv] - return rv diff --git a/python/markupsafe/__init__.py b/python/markupsafe/__init__.py deleted file mode 100644 index 68dc85f..0000000 --- a/python/markupsafe/__init__.py +++ /dev/null @@ -1,305 +0,0 @@ -# -*- coding: utf-8 -*- -""" - markupsafe - ~~~~~~~~~~ - - Implements a Markup string. - - :copyright: (c) 2010 by Armin Ronacher. - :license: BSD, see LICENSE for more details. -""" -import re -import string -from collections import Mapping -from markupsafe._compat import text_type, string_types, int_types, \ - unichr, iteritems, PY2 - -__version__ = "1.0" - -__all__ = ['Markup', 'soft_unicode', 'escape', 'escape_silent'] - - -_striptags_re = re.compile(r'(<!--.*?-->|<[^>]*>)') -_entity_re = re.compile(r'&([^& ;]+);') - - -class Markup(text_type): - r"""Marks a string as being safe for inclusion in HTML/XML output without - needing to be escaped. This implements the `__html__` interface a couple - of frameworks and web applications use. :class:`Markup` is a direct - subclass of `unicode` and provides all the methods of `unicode` just that - it escapes arguments passed and always returns `Markup`. - - The `escape` function returns markup objects so that double escaping can't - happen. - - The constructor of the :class:`Markup` class can be used for three - different things: When passed an unicode object it's assumed to be safe, - when passed an object with an HTML representation (has an `__html__` - method) that representation is used, otherwise the object passed is - converted into a unicode string and then assumed to be safe: - - >>> Markup("Hello <em>World</em>!") - Markup(u'Hello <em>World</em>!') - >>> class Foo(object): - ... def __html__(self): - ... return '<a href="#">foo</a>' - ... - >>> Markup(Foo()) - Markup(u'<a href="#">foo</a>') - - If you want object passed being always treated as unsafe you can use the - :meth:`escape` classmethod to create a :class:`Markup` object: - - >>> Markup.escape("Hello <em>World</em>!") - Markup(u'Hello &lt;em&gt;World&lt;/em&gt;!') - - Operations on a markup string are markup aware which means that all - arguments are passed through the :func:`escape` function: - - >>> em = Markup("<em>%s</em>") - >>> em % "foo & bar" - Markup(u'<em>foo &amp; bar</em>') - >>> strong = Markup("<strong>%(text)s</strong>") - >>> strong % {'text': '<blink>hacker here</blink>'} - Markup(u'<strong>&lt;blink&gt;hacker here&lt;/blink&gt;</strong>') - >>> Markup("<em>Hello</em> ") + "<foo>" - Markup(u'<em>Hello</em> &lt;foo&gt;') - """ - __slots__ = () - - def __new__(cls, base=u'', encoding=None, errors='strict'): - if hasattr(base, '__html__'): - base = base.__html__() - if encoding is None: - return text_type.__new__(cls, base) - return text_type.__new__(cls, base, encoding, errors) - - def __html__(self): - return self - - def __add__(self, other): - if isinstance(other, string_types) or hasattr(other, '__html__'): - return self.__class__(super(Markup, self).__add__(self.escape(other))) - return NotImplemented - - def __radd__(self, other): - if hasattr(other, '__html__') or isinstance(other, string_types): - return self.escape(other).__add__(self) - return NotImplemented - - def __mul__(self, num): - if isinstance(num, int_types): - return self.__class__(text_type.__mul__(self, num)) - return NotImplemented - __rmul__ = __mul__ - - def __mod__(self, arg): - if isinstance(arg, tuple): - arg = tuple(_MarkupEscapeHelper(x, self.escape) for x in arg) - else: - arg = _MarkupEscapeHelper(arg, self.escape) - return self.__class__(text_type.__mod__(self, arg)) - - def __repr__(self): - return '%s(%s)' % ( - self.__class__.__name__, - text_type.__repr__(self) - ) - - def join(self, seq): - return self.__class__(text_type.join(self, map(self.escape, seq))) - join.__doc__ = text_type.join.__doc__ - - def split(self, *args, **kwargs): - return list(map(self.__class__, text_type.split(self, *args, **kwargs))) - split.__doc__ = text_type.split.__doc__ - - def rsplit(self, *args, **kwargs): - return list(map(self.__class__, text_type.rsplit(self, *args, **kwargs))) - rsplit.__doc__ = text_type.rsplit.__doc__ - - def splitlines(self, *args, **kwargs): - return list(map(self.__class__, text_type.splitlines( - self, *args, **kwargs))) - splitlines.__doc__ = text_type.splitlines.__doc__ - - def unescape(self): - r"""Unescape markup again into an text_type string. This also resolves - known HTML4 and XHTML entities: - - >>> Markup("Main &raquo; <em>About</em>").unescape() - u'Main \xbb <em>About</em>' - """ - from markupsafe._constants import HTML_ENTITIES - def handle_match(m): - name = m.group(1) - if name in HTML_ENTITIES: - return unichr(HTML_ENTITIES[name]) - try: - if name[:2] in ('#x', '#X'): - return unichr(int(name[2:], 16)) - elif name.startswith('#'): - return unichr(int(name[1:])) - except ValueError: - pass - # Don't modify unexpected input. - return m.group() - return _entity_re.sub(handle_match, text_type(self)) - - def striptags(self): - r"""Unescape markup into an text_type string and strip all tags. This - also resolves known HTML4 and XHTML entities. Whitespace is - normalized to one: - - >>> Markup("Main &raquo; <em>About</em>").striptags() - u'Main \xbb About' - """ - stripped = u' '.join(_striptags_re.sub('', self).split()) - return Markup(stripped).unescape() - - @classmethod - def escape(cls, s): - """Escape the string. Works like :func:`escape` with the difference - that for subclasses of :class:`Markup` this function would return the - correct subclass. - """ - rv = escape(s) - if rv.__class__ is not cls: - return cls(rv) - return rv - - def make_simple_escaping_wrapper(name): - orig = getattr(text_type, name) - def func(self, *args, **kwargs): - args = _escape_argspec(list(args), enumerate(args), self.escape) - _escape_argspec(kwargs, iteritems(kwargs), self.escape) - return self.__class__(orig(self, *args, **kwargs)) - func.__name__ = orig.__name__ - func.__doc__ = orig.__doc__ - return func - - for method in '__getitem__', 'capitalize', \ - 'title', 'lower', 'upper', 'replace', 'ljust', \ - 'rjust', 'lstrip', 'rstrip', 'center', 'strip', \ - 'translate', 'expandtabs', 'swapcase', 'zfill': - locals()[method] = make_simple_escaping_wrapper(method) - - # new in python 2.5 - if hasattr(text_type, 'partition'): - def partition(self, sep): - return tuple(map(self.__class__, - text_type.partition(self, self.escape(sep)))) - def rpartition(self, sep): - return tuple(map(self.__class__, - text_type.rpartition(self, self.escape(sep)))) - - # new in python 2.6 - if hasattr(text_type, 'format'): - def format(*args, **kwargs): - self, args = args[0], args[1:] - formatter = EscapeFormatter(self.escape) - kwargs = _MagicFormatMapping(args, kwargs) - return self.__class__(formatter.vformat(self, args, kwargs)) - - def __html_format__(self, format_spec): - if format_spec: - raise ValueError('Unsupported format specification ' - 'for Markup.') - return self - - # not in python 3 - if hasattr(text_type, '__getslice__'): - __getslice__ = make_simple_escaping_wrapper('__getslice__') - - del method, make_simple_escaping_wrapper - - -class _MagicFormatMapping(Mapping): - """This class implements a dummy wrapper to fix a bug in the Python - standard library for string formatting. - - See http://bugs.python.org/issue13598 for information about why - this is necessary. - """ - - def __init__(self, args, kwargs): - self._args = args - self._kwargs = kwargs - self._last_index = 0 - - def __getitem__(self, key): - if key == '': - idx = self._last_index - self._last_index += 1 - try: - return self._args[idx] - except LookupError: - pass - key = str(idx) - return self._kwargs[key] - - def __iter__(self): - return iter(self._kwargs) - - def __len__(self): - return len(self._kwargs) - - -if hasattr(text_type, 'format'): - class EscapeFormatter(string.Formatter): - - def __init__(self, escape): - self.escape = escape - - def format_field(self, value, format_spec): - if hasattr(value, '__html_format__'): - rv = value.__html_format__(format_spec) - elif hasattr(value, '__html__'): - if format_spec: - raise ValueError('No format specification allowed ' - 'when formatting an object with ' - 'its __html__ method.') - rv = value.__html__() - else: - # We need to make sure the format spec is unicode here as - # otherwise the wrong callback methods are invoked. For - # instance a byte string there would invoke __str__ and - # not __unicode__. - rv = string.Formatter.format_field( - self, value, text_type(format_spec)) - return text_type(self.escape(rv)) - - -def _escape_argspec(obj, iterable, escape): - """Helper for various string-wrapped functions.""" - for key, value in iterable: - if hasattr(value, '__html__') or isinstance(value, string_types): - obj[key] = escape(value) - return obj - - -class _MarkupEscapeHelper(object): - """Helper for Markup.__mod__""" - - def __init__(self, obj, escape): - self.obj = obj - self.escape = escape - - __getitem__ = lambda s, x: _MarkupEscapeHelper(s.obj[x], s.escape) - __unicode__ = __str__ = lambda s: text_type(s.escape(s.obj)) - __repr__ = lambda s: str(s.escape(repr(s.obj))) - __int__ = lambda s: int(s.obj) - __float__ = lambda s: float(s.obj) - - -# we have to import it down here as the speedups and native -# modules imports the markup type which is define above. -try: - from markupsafe._speedups import escape, escape_silent, soft_unicode -except ImportError: - from markupsafe._native import escape, escape_silent, soft_unicode - -if not PY2: - soft_str = soft_unicode - __all__.append('soft_str') diff --git a/python/markupsafe/_compat.py b/python/markupsafe/_compat.py deleted file mode 100644 index 62e5632..0000000 --- a/python/markupsafe/_compat.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -""" - markupsafe._compat - ~~~~~~~~~~~~~~~~~~ - - Compatibility module for different Python versions. - - :copyright: (c) 2013 by Armin Ronacher. - :license: BSD, see LICENSE for more details. -""" -import sys - -PY2 = sys.version_info[0] == 2 - -if not PY2: - text_type = str - string_types = (str,) - unichr = chr - int_types = (int,) - iteritems = lambda x: iter(x.items()) -else: - text_type = unicode - string_types = (str, unicode) - unichr = unichr - int_types = (int, long) - iteritems = lambda x: x.iteritems() diff --git a/python/markupsafe/_constants.py b/python/markupsafe/_constants.py deleted file mode 100644 index 919bf03..0000000 --- a/python/markupsafe/_constants.py +++ /dev/null @@ -1,267 +0,0 @@ -# -*- coding: utf-8 -*- -""" - markupsafe._constants - ~~~~~~~~~~~~~~~~~~~~~ - - Highlevel implementation of the Markup string. - - :copyright: (c) 2010 by Armin Ronacher. - :license: BSD, see LICENSE for more details. -""" - - -HTML_ENTITIES = { - 'AElig': 198, - 'Aacute': 193, - 'Acirc': 194, - 'Agrave': 192, - 'Alpha': 913, - 'Aring': 197, - 'Atilde': 195, - 'Auml': 196, - 'Beta': 914, - 'Ccedil': 199, - 'Chi': 935, - 'Dagger': 8225, - 'Delta': 916, - 'ETH': 208, - 'Eacute': 201, - 'Ecirc': 202, - 'Egrave': 200, - 'Epsilon': 917, - 'Eta': 919, - 'Euml': 203, - 'Gamma': 915, - 'Iacute': 205, - 'Icirc': 206, - 'Igrave': 204, - 'Iota': 921, - 'Iuml': 207, - 'Kappa': 922, - 'Lambda': 923, - 'Mu': 924, - 'Ntilde': 209, - 'Nu': 925, - 'OElig': 338, - 'Oacute': 211, - 'Ocirc': 212, - 'Ograve': 210, - 'Omega': 937, - 'Omicron': 927, - 'Oslash': 216, - 'Otilde': 213, - 'Ouml': 214, - 'Phi': 934, - 'Pi': 928, - 'Prime': 8243, - 'Psi': 936, - 'Rho': 929, - 'Scaron': 352, - 'Sigma': 931, - 'THORN': 222, - 'Tau': 932, - 'Theta': 920, - 'Uacute': 218, - 'Ucirc': 219, - 'Ugrave': 217, - 'Upsilon': 933, - 'Uuml': 220, - 'Xi': 926, - 'Yacute': 221, - 'Yuml': 376, - 'Zeta': 918, - 'aacute': 225, - 'acirc': 226, - 'acute': 180, - 'aelig': 230, - 'agrave': 224, - 'alefsym': 8501, - 'alpha': 945, - 'amp': 38, - 'and': 8743, - 'ang': 8736, - 'apos': 39, - 'aring': 229, - 'asymp': 8776, - 'atilde': 227, - 'auml': 228, - 'bdquo': 8222, - 'beta': 946, - 'brvbar': 166, - 'bull': 8226, - 'cap': 8745, - 'ccedil': 231, - 'cedil': 184, - 'cent': 162, - 'chi': 967, - 'circ': 710, - 'clubs': 9827, - 'cong': 8773, - 'copy': 169, - 'crarr': 8629, - 'cup': 8746, - 'curren': 164, - 'dArr': 8659, - 'dagger': 8224, - 'darr': 8595, - 'deg': 176, - 'delta': 948, - 'diams': 9830, - 'divide': 247, - 'eacute': 233, - 'ecirc': 234, - 'egrave': 232, - 'empty': 8709, - 'emsp': 8195, - 'ensp': 8194, - 'epsilon': 949, - 'equiv': 8801, - 'eta': 951, - 'eth': 240, - 'euml': 235, - 'euro': 8364, - 'exist': 8707, - 'fnof': 402, - 'forall': 8704, - 'frac12': 189, - 'frac14': 188, - 'frac34': 190, - 'frasl': 8260, - 'gamma': 947, - 'ge': 8805, - 'gt': 62, - 'hArr': 8660, - 'harr': 8596, - 'hearts': 9829, - 'hellip': 8230, - 'iacute': 237, - 'icirc': 238, - 'iexcl': 161, - 'igrave': 236, - 'image': 8465, - 'infin': 8734, - 'int': 8747, - 'iota': 953, - 'iquest': 191, - 'isin': 8712, - 'iuml': 239, - 'kappa': 954, - 'lArr': 8656, - 'lambda': 955, - 'lang': 9001, - 'laquo': 171, - 'larr': 8592, - 'lceil': 8968, - 'ldquo': 8220, - 'le': 8804, - 'lfloor': 8970, - 'lowast': 8727, - 'loz': 9674, - 'lrm': 8206, - 'lsaquo': 8249, - 'lsquo': 8216, - 'lt': 60, - 'macr': 175, - 'mdash': 8212, - 'micro': 181, - 'middot': 183, - 'minus': 8722, - 'mu': 956, - 'nabla': 8711, - 'nbsp': 160, - 'ndash': 8211, - 'ne': 8800, - 'ni': 8715, - 'not': 172, - 'notin': 8713, - 'nsub': 8836, - 'ntilde': 241, - 'nu': 957, - 'oacute': 243, - 'ocirc': 244, - 'oelig': 339, - 'ograve': 242, - 'oline': 8254, - 'omega': 969, - 'omicron': 959, - 'oplus': 8853, - 'or': 8744, - 'ordf': 170, - 'ordm': 186, - 'oslash': 248, - 'otilde': 245, - 'otimes': 8855, - 'ouml': 246, - 'para': 182, - 'part': 8706, - 'permil': 8240, - 'perp': 8869, - 'phi': 966, - 'pi': 960, - 'piv': 982, - 'plusmn': 177, - 'pound': 163, - 'prime': 8242, - 'prod': 8719, - 'prop': 8733, - 'psi': 968, - 'quot': 34, - 'rArr': 8658, - 'radic': 8730, - 'rang': 9002, - 'raquo': 187, - 'rarr': 8594, - 'rceil': 8969, - 'rdquo': 8221, - 'real': 8476, - 'reg': 174, - 'rfloor': 8971, - 'rho': 961, - 'rlm': 8207, - 'rsaquo': 8250, - 'rsquo': 8217, - 'sbquo': 8218, - 'scaron': 353, - 'sdot': 8901, - 'sect': 167, - 'shy': 173, - 'sigma': 963, - 'sigmaf': 962, - 'sim': 8764, - 'spades': 9824, - 'sub': 8834, - 'sube': 8838, - 'sum': 8721, - 'sup': 8835, - 'sup1': 185, - 'sup2': 178, - 'sup3': 179, - 'supe': 8839, - 'szlig': 223, - 'tau': 964, - 'there4': 8756, - 'theta': 952, - 'thetasym': 977, - 'thinsp': 8201, - 'thorn': 254, - 'tilde': 732, - 'times': 215, - 'trade': 8482, - 'uArr': 8657, - 'uacute': 250, - 'uarr': 8593, - 'ucirc': 251, - 'ugrave': 249, - 'uml': 168, - 'upsih': 978, - 'upsilon': 965, - 'uuml': 252, - 'weierp': 8472, - 'xi': 958, - 'yacute': 253, - 'yen': 165, - 'yuml': 255, - 'zeta': 950, - 'zwj': 8205, - 'zwnj': 8204 -} diff --git a/python/markupsafe/_native.py b/python/markupsafe/_native.py deleted file mode 100644 index 5e83f10..0000000 --- a/python/markupsafe/_native.py +++ /dev/null @@ -1,46 +0,0 @@ -# -*- coding: utf-8 -*- -""" - markupsafe._native - ~~~~~~~~~~~~~~~~~~ - - Native Python implementation the C module is not compiled. - - :copyright: (c) 2010 by Armin Ronacher. - :license: BSD, see LICENSE for more details. -""" -from markupsafe import Markup -from markupsafe._compat import text_type - - -def escape(s): - """Convert the characters &, <, >, ' and " in string s to HTML-safe - sequences. Use this if you need to display text that might contain - such characters in HTML. Marks return value as markup string. - """ - if hasattr(s, '__html__'): - return s.__html__() - return Markup(text_type(s) - .replace('&', '&amp;') - .replace('>', '&gt;') - .replace('<', '&lt;') - .replace("'", '&#39;') - .replace('"', '&#34;') - ) - - -def escape_silent(s): - """Like :func:`escape` but converts `None` into an empty - markup string. - """ - if s is None: - return Markup() - return escape(s) - - -def soft_unicode(s): - """Make a string unicode if it isn't already. That way a markup - string is not converted back to unicode. - """ - if not isinstance(s, text_type): - s = text_type(s) - return s diff --git a/python/markupsafe/_speedups.c b/python/markupsafe/_speedups.c deleted file mode 100644 index d779a68..0000000 --- a/python/markupsafe/_speedups.c +++ /dev/null @@ -1,239 +0,0 @@ -/** - * markupsafe._speedups - * ~~~~~~~~~~~~~~~~~~~~ - * - * This module implements functions for automatic escaping in C for better - * performance. - * - * :copyright: (c) 2010 by Armin Ronacher. - * :license: BSD. - */ - -#include <Python.h> - -#define ESCAPED_CHARS_TABLE_SIZE 63 -#define UNICHR(x) (PyUnicode_AS_UNICODE((PyUnicodeObject*)PyUnicode_DecodeASCII(x, strlen(x), NULL))); - -#if PY_VERSION_HEX < 0x02050000 && !defined(PY_SSIZE_T_MIN) -typedef int Py_ssize_t; -#define PY_SSIZE_T_MAX INT_MAX -#define PY_SSIZE_T_MIN INT_MIN -#endif - - -static PyObject* markup; -static Py_ssize_t escaped_chars_delta_len[ESCAPED_CHARS_TABLE_SIZE]; -static Py_UNICODE *escaped_chars_repl[ESCAPED_CHARS_TABLE_SIZE]; - -static int -init_constants(void) -{ - PyObject *module; - /* mapping of characters to replace */ - escaped_chars_repl['"'] = UNICHR("&#34;"); - escaped_chars_repl['\''] = UNICHR("&#39;"); - escaped_chars_repl['&'] = UNICHR("&amp;"); - escaped_chars_repl['<'] = UNICHR("&lt;"); - escaped_chars_repl['>'] = UNICHR("&gt;"); - - /* lengths of those characters when replaced - 1 */ - memset(escaped_chars_delta_len, 0, sizeof (escaped_chars_delta_len)); - escaped_chars_delta_len['"'] = escaped_chars_delta_len['\''] = \ - escaped_chars_delta_len['&'] = 4; - escaped_chars_delta_len['<'] = escaped_chars_delta_len['>'] = 3; - - /* import markup type so that we can mark the return value */ - module = PyImport_ImportModule("markupsafe"); - if (!module) - return 0; - markup = PyObject_GetAttrString(module, "Markup"); - Py_DECREF(module); - - return 1; -} - -static PyObject* -escape_unicode(PyUnicodeObject *in) -{ - PyUnicodeObject *out; - Py_UNICODE *inp = PyUnicode_AS_UNICODE(in); - const Py_UNICODE *inp_end = PyUnicode_AS_UNICODE(in) + PyUnicode_GET_SIZE(in); - Py_UNICODE *next_escp; - Py_UNICODE *outp; - Py_ssize_t delta=0, erepl=0, delta_len=0; - - /* First we need to figure out how long the escaped string will be */ - while (*(inp) || inp < inp_end) { - if (*inp < ESCAPED_CHARS_TABLE_SIZE) { - delta += escaped_chars_delta_len[*inp]; - erepl += !!escaped_chars_delta_len[*inp]; - } - ++inp; - } - - /* Do we need to escape anything at all? */ - if (!erepl) { - Py_INCREF(in); - return (PyObject*)in; - } - - out = (PyUnicodeObject*)PyUnicode_FromUnicode(NULL, PyUnicode_GET_SIZE(in) + delta); - if (!out) - return NULL; - - outp = PyUnicode_AS_UNICODE(out); - inp = PyUnicode_AS_UNICODE(in); - while (erepl-- > 0) { - /* look for the next substitution */ - next_escp = inp; - while (next_escp < inp_end) { - if (*next_escp < ESCAPED_CHARS_TABLE_SIZE && - (delta_len = escaped_chars_delta_len[*next_escp])) { - ++delta_len; - break; - } - ++next_escp; - } - - if (next_escp > inp) { - /* copy unescaped chars between inp and next_escp */ - Py_UNICODE_COPY(outp, inp, next_escp-inp); - outp += next_escp - inp; - } - - /* escape 'next_escp' */ - Py_UNICODE_COPY(outp, escaped_chars_repl[*next_escp], delta_len); - outp += delta_len; - - inp = next_escp + 1; - } - if (inp < inp_end) - Py_UNICODE_COPY(outp, inp, PyUnicode_GET_SIZE(in) - (inp - PyUnicode_AS_UNICODE(in))); - - return (PyObject*)out; -} - - -static PyObject* -escape(PyObject *self, PyObject *text) -{ - PyObject *s = NULL, *rv = NULL, *html; - - /* we don't have to escape integers, bools or floats */ - if (PyLong_CheckExact(text) || -#if PY_MAJOR_VERSION < 3 - PyInt_CheckExact(text) || -#endif - PyFloat_CheckExact(text) || PyBool_Check(text) || - text == Py_None) - return PyObject_CallFunctionObjArgs(markup, text, NULL); - - /* if the object has an __html__ method that performs the escaping */ - html = PyObject_GetAttrString(text, "__html__"); - if (html) { - rv = PyObject_CallObject(html, NULL); - Py_DECREF(html); - return rv; - } - - /* otherwise make the object unicode if it isn't, then escape */ - PyErr_Clear(); - if (!PyUnicode_Check(text)) { -#if PY_MAJOR_VERSION < 3 - PyObject *unicode = PyObject_Unicode(text); -#else - PyObject *unicode = PyObject_Str(text); -#endif - if (!unicode) - return NULL; - s = escape_unicode((PyUnicodeObject*)unicode); - Py_DECREF(unicode); - } - else - s = escape_unicode((PyUnicodeObject*)text); - - /* convert the unicode string into a markup object. */ - rv = PyObject_CallFunctionObjArgs(markup, (PyObject*)s, NULL); - Py_DECREF(s); - return rv; -} - - -static PyObject* -escape_silent(PyObject *self, PyObject *text) -{ - if (text != Py_None) - return escape(self, text); - return PyObject_CallFunctionObjArgs(markup, NULL); -} - - -static PyObject* -soft_unicode(PyObject *self, PyObject *s) -{ - if (!PyUnicode_Check(s)) -#if PY_MAJOR_VERSION < 3 - return PyObject_Unicode(s); -#else - return PyObject_Str(s); -#endif - Py_INCREF(s); - return s; -} - - -static PyMethodDef module_methods[] = { - {"escape", (PyCFunction)escape, METH_O, - "escape(s) -> markup\n\n" - "Convert the characters &, <, >, ', and \" in string s to HTML-safe\n" - "sequences. Use this if you need to display text that might contain\n" - "such characters in HTML. Marks return value as markup string."}, - {"escape_silent", (PyCFunction)escape_silent, METH_O, - "escape_silent(s) -> markup\n\n" - "Like escape but converts None to an empty string."}, - {"soft_unicode", (PyCFunction)soft_unicode, METH_O, - "soft_unicode(object) -> string\n\n" - "Make a string unicode if it isn't already. That way a markup\n" - "string is not converted back to unicode."}, - {NULL, NULL, 0, NULL} /* Sentinel */ -}; - - -#if PY_MAJOR_VERSION < 3 - -#ifndef PyMODINIT_FUNC /* declarations for DLL import/export */ -#define PyMODINIT_FUNC void -#endif -PyMODINIT_FUNC -init_speedups(void) -{ - if (!init_constants()) - return; - - Py_InitModule3("markupsafe._speedups", module_methods, ""); -} - -#else /* Python 3.x module initialization */ - -static struct PyModuleDef module_definition = { - PyModuleDef_HEAD_INIT, - "markupsafe._speedups", - NULL, - -1, - module_methods, - NULL, - NULL, - NULL, - NULL -}; - -PyMODINIT_FUNC -PyInit__speedups(void) -{ - if (!init_constants()) - return NULL; - - return PyModule_Create(&module_definition); -} - -#endif diff --git a/python/msvcp140.dll b/python/msvcp140.dll deleted file mode 100644 index 0a2b9b701695868334ab8111ed5687f25b8aee4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 440120 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 F{{YMR*rEUc diff --git a/python/pyexpat.pyd b/python/pyexpat.pyd deleted file mode 100644 index 901083292351b5c1a35f05b291987e15013bfe96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 164504 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 diff --git a/python/python.exe b/python/python.exe deleted file mode 100644 index da57b2aa7039023315edc25ed4e340efb3891588..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 97944 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 diff --git a/python/python3.dll b/python/python3.dll deleted file mode 100644 index e80295958277fc5522b12a73a19373f4a3698c8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58520 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 diff --git a/python/python36._pth b/python/python36._pth deleted file mode 100644 index 901a723..0000000 --- a/python/python36._pth +++ /dev/null @@ -1,6 +0,0 @@ -python36.zip -. -.. - -# Uncomment to run site.main() automatically -#import site diff --git a/python/python36.dll b/python/python36.dll deleted file mode 100644 index b7d05183701368c4ae267c8c099b20ff1598890e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3302040 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 diff --git a/python/python36.zip b/python/python36.zip deleted file mode 100644 index 9f0b9834256d508ab16731a06559541438a04afe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2215299 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%0D}2wFQO1EJ=;z2uil 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%0AK$C&RqR2^dI<RbhMw4YLDV8PSL*`IDgQ|uQ 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%0Dox`$RQJi`EzEiU{;crt>~&XzR>ktSr+NjB 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%0D$JX=^|{;ntGD$7$xiF@ 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%0ABsv;l)ZU$>B;8f|Gv@U3C(YX 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%0DA0SK?ob0MasFXbfluqXvGMwI-P` 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 aJX4`^%@A?;#zu)zC0?(BRUEAFZ~p^HB@j*k diff --git a/python/pythonw.exe b/python/pythonw.exe deleted file mode 100644 index e966a7e36eb07a9e3b7f380bbb1dc06354b864e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96408 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 diff --git a/python/select.pyd b/python/select.pyd deleted file mode 100644 index 9c9c87d8ee99e97793dfe4a44fcc2d07d3a4a60a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23704 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 diff --git a/python/six.py b/python/six.py deleted file mode 100644 index 6bf4fd3..0000000 --- a/python/six.py +++ /dev/null @@ -1,891 +0,0 @@ -# Copyright (c) 2010-2017 Benjamin Peterson -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -"""Utilities for writing code that runs on Python 2 and 3""" - -from __future__ import absolute_import - -import functools -import itertools -import operator -import sys -import types - -__author__ = "Benjamin Peterson <benjamin@python.org>" -__version__ = "1.11.0" - - -# Useful for very coarse version differentiation. -PY2 = sys.version_info[0] == 2 -PY3 = sys.version_info[0] == 3 -PY34 = sys.version_info[0:2] >= (3, 4) - -if PY3: - string_types = str, - integer_types = int, - class_types = type, - text_type = str - binary_type = bytes - - MAXSIZE = sys.maxsize -else: - string_types = basestring, - integer_types = (int, long) - class_types = (type, types.ClassType) - text_type = unicode - binary_type = str - - if sys.platform.startswith("java"): - # Jython always uses 32 bits. - MAXSIZE = int((1 << 31) - 1) - else: - # It's possible to have sizeof(long) != sizeof(Py_ssize_t). - class X(object): - - def __len__(self): - return 1 << 31 - try: - len(X()) - except OverflowError: - # 32-bit - MAXSIZE = int((1 << 31) - 1) - else: - # 64-bit - MAXSIZE = int((1 << 63) - 1) - del X - - -def _add_doc(func, doc): - """Add documentation to a function.""" - func.__doc__ = doc - - -def _import_module(name): - """Import module, returning the module after the last dot.""" - __import__(name) - return sys.modules[name] - - -class _LazyDescr(object): - - def __init__(self, name): - self.name = name - - def __get__(self, obj, tp): - result = self._resolve() - setattr(obj, self.name, result) # Invokes __set__. - try: - # This is a bit ugly, but it avoids running this again by - # removing this descriptor. - delattr(obj.__class__, self.name) - except AttributeError: - pass - return result - - -class MovedModule(_LazyDescr): - - def __init__(self, name, old, new=None): - super(MovedModule, self).__init__(name) - if PY3: - if new is None: - new = name - self.mod = new - else: - self.mod = old - - def _resolve(self): - return _import_module(self.mod) - - def __getattr__(self, attr): - _module = self._resolve() - value = getattr(_module, attr) - setattr(self, attr, value) - return value - - -class _LazyModule(types.ModuleType): - - def __init__(self, name): - super(_LazyModule, self).__init__(name) - self.__doc__ = self.__class__.__doc__ - - def __dir__(self): - attrs = ["__doc__", "__name__"] - attrs += [attr.name for attr in self._moved_attributes] - return attrs - - # Subclasses should override this - _moved_attributes = [] - - -class MovedAttribute(_LazyDescr): - - def __init__(self, name, old_mod, new_mod, old_attr=None, new_attr=None): - super(MovedAttribute, self).__init__(name) - if PY3: - if new_mod is None: - new_mod = name - self.mod = new_mod - if new_attr is None: - if old_attr is None: - new_attr = name - else: - new_attr = old_attr - self.attr = new_attr - else: - self.mod = old_mod - if old_attr is None: - old_attr = name - self.attr = old_attr - - def _resolve(self): - module = _import_module(self.mod) - return getattr(module, self.attr) - - -class _SixMetaPathImporter(object): - - """ - A meta path importer to import six.moves and its submodules. - - This class implements a PEP302 finder and loader. It should be compatible - with Python 2.5 and all existing versions of Python3 - """ - - def __init__(self, six_module_name): - self.name = six_module_name - self.known_modules = {} - - def _add_module(self, mod, *fullnames): - for fullname in fullnames: - self.known_modules[self.name + "." + fullname] = mod - - def _get_module(self, fullname): - return self.known_modules[self.name + "." + fullname] - - def find_module(self, fullname, path=None): - if fullname in self.known_modules: - return self - return None - - def __get_module(self, fullname): - try: - return self.known_modules[fullname] - except KeyError: - raise ImportError("This loader does not know module " + fullname) - - def load_module(self, fullname): - try: - # in case of a reload - return sys.modules[fullname] - except KeyError: - pass - mod = self.__get_module(fullname) - if isinstance(mod, MovedModule): - mod = mod._resolve() - else: - mod.__loader__ = self - sys.modules[fullname] = mod - return mod - - def is_package(self, fullname): - """ - Return true, if the named module is a package. - - We need this method to get correct spec objects with - Python 3.4 (see PEP451) - """ - return hasattr(self.__get_module(fullname), "__path__") - - def get_code(self, fullname): - """Return None - - Required, if is_package is implemented""" - self.__get_module(fullname) # eventually raises ImportError - return None - get_source = get_code # same as get_code - -_importer = _SixMetaPathImporter(__name__) - - -class _MovedItems(_LazyModule): - - """Lazy loading of moved objects""" - __path__ = [] # mark as package - - -_moved_attributes = [ - MovedAttribute("cStringIO", "cStringIO", "io", "StringIO"), - MovedAttribute("filter", "itertools", "builtins", "ifilter", "filter"), - MovedAttribute("filterfalse", "itertools", "itertools", "ifilterfalse", "filterfalse"), - MovedAttribute("input", "__builtin__", "builtins", "raw_input", "input"), - MovedAttribute("intern", "__builtin__", "sys"), - MovedAttribute("map", "itertools", "builtins", "imap", "map"), - MovedAttribute("getcwd", "os", "os", "getcwdu", "getcwd"), - MovedAttribute("getcwdb", "os", "os", "getcwd", "getcwdb"), - MovedAttribute("getoutput", "commands", "subprocess"), - MovedAttribute("range", "__builtin__", "builtins", "xrange", "range"), - MovedAttribute("reload_module", "__builtin__", "importlib" if PY34 else "imp", "reload"), - MovedAttribute("reduce", "__builtin__", "functools"), - MovedAttribute("shlex_quote", "pipes", "shlex", "quote"), - MovedAttribute("StringIO", "StringIO", "io"), - MovedAttribute("UserDict", "UserDict", "collections"), - MovedAttribute("UserList", "UserList", "collections"), - MovedAttribute("UserString", "UserString", "collections"), - MovedAttribute("xrange", "__builtin__", "builtins", "xrange", "range"), - MovedAttribute("zip", "itertools", "builtins", "izip", "zip"), - MovedAttribute("zip_longest", "itertools", "itertools", "izip_longest", "zip_longest"), - MovedModule("builtins", "__builtin__"), - MovedModule("configparser", "ConfigParser"), - MovedModule("copyreg", "copy_reg"), - MovedModule("dbm_gnu", "gdbm", "dbm.gnu"), - MovedModule("_dummy_thread", "dummy_thread", "_dummy_thread"), - MovedModule("http_cookiejar", "cookielib", "http.cookiejar"), - MovedModule("http_cookies", "Cookie", "http.cookies"), - MovedModule("html_entities", "htmlentitydefs", "html.entities"), - MovedModule("html_parser", "HTMLParser", "html.parser"), - MovedModule("http_client", "httplib", "http.client"), - MovedModule("email_mime_base", "email.MIMEBase", "email.mime.base"), - MovedModule("email_mime_image", "email.MIMEImage", "email.mime.image"), - MovedModule("email_mime_multipart", "email.MIMEMultipart", "email.mime.multipart"), - MovedModule("email_mime_nonmultipart", "email.MIMENonMultipart", "email.mime.nonmultipart"), - MovedModule("email_mime_text", "email.MIMEText", "email.mime.text"), - MovedModule("BaseHTTPServer", "BaseHTTPServer", "http.server"), - MovedModule("CGIHTTPServer", "CGIHTTPServer", "http.server"), - MovedModule("SimpleHTTPServer", "SimpleHTTPServer", "http.server"), - MovedModule("cPickle", "cPickle", "pickle"), - MovedModule("queue", "Queue"), - MovedModule("reprlib", "repr"), - MovedModule("socketserver", "SocketServer"), - MovedModule("_thread", "thread", "_thread"), - MovedModule("tkinter", "Tkinter"), - MovedModule("tkinter_dialog", "Dialog", "tkinter.dialog"), - MovedModule("tkinter_filedialog", "FileDialog", "tkinter.filedialog"), - MovedModule("tkinter_scrolledtext", "ScrolledText", "tkinter.scrolledtext"), - MovedModule("tkinter_simpledialog", "SimpleDialog", "tkinter.simpledialog"), - MovedModule("tkinter_tix", "Tix", "tkinter.tix"), - MovedModule("tkinter_ttk", "ttk", "tkinter.ttk"), - MovedModule("tkinter_constants", "Tkconstants", "tkinter.constants"), - MovedModule("tkinter_dnd", "Tkdnd", "tkinter.dnd"), - MovedModule("tkinter_colorchooser", "tkColorChooser", - "tkinter.colorchooser"), - MovedModule("tkinter_commondialog", "tkCommonDialog", - "tkinter.commondialog"), - MovedModule("tkinter_tkfiledialog", "tkFileDialog", "tkinter.filedialog"), - MovedModule("tkinter_font", "tkFont", "tkinter.font"), - MovedModule("tkinter_messagebox", "tkMessageBox", "tkinter.messagebox"), - MovedModule("tkinter_tksimpledialog", "tkSimpleDialog", - "tkinter.simpledialog"), - MovedModule("urllib_parse", __name__ + ".moves.urllib_parse", "urllib.parse"), - MovedModule("urllib_error", __name__ + ".moves.urllib_error", "urllib.error"), - MovedModule("urllib", __name__ + ".moves.urllib", __name__ + ".moves.urllib"), - MovedModule("urllib_robotparser", "robotparser", "urllib.robotparser"), - MovedModule("xmlrpc_client", "xmlrpclib", "xmlrpc.client"), - MovedModule("xmlrpc_server", "SimpleXMLRPCServer", "xmlrpc.server"), -] -# Add windows specific modules. -if sys.platform == "win32": - _moved_attributes += [ - MovedModule("winreg", "_winreg"), - ] - -for attr in _moved_attributes: - setattr(_MovedItems, attr.name, attr) - if isinstance(attr, MovedModule): - _importer._add_module(attr, "moves." + attr.name) -del attr - -_MovedItems._moved_attributes = _moved_attributes - -moves = _MovedItems(__name__ + ".moves") -_importer._add_module(moves, "moves") - - -class Module_six_moves_urllib_parse(_LazyModule): - - """Lazy loading of moved objects in six.moves.urllib_parse""" - - -_urllib_parse_moved_attributes = [ - MovedAttribute("ParseResult", "urlparse", "urllib.parse"), - MovedAttribute("SplitResult", "urlparse", "urllib.parse"), - MovedAttribute("parse_qs", "urlparse", "urllib.parse"), - MovedAttribute("parse_qsl", "urlparse", "urllib.parse"), - MovedAttribute("urldefrag", "urlparse", "urllib.parse"), - MovedAttribute("urljoin", "urlparse", "urllib.parse"), - MovedAttribute("urlparse", "urlparse", "urllib.parse"), - MovedAttribute("urlsplit", "urlparse", "urllib.parse"), - MovedAttribute("urlunparse", "urlparse", "urllib.parse"), - MovedAttribute("urlunsplit", "urlparse", "urllib.parse"), - MovedAttribute("quote", "urllib", "urllib.parse"), - MovedAttribute("quote_plus", "urllib", "urllib.parse"), - MovedAttribute("unquote", "urllib", "urllib.parse"), - MovedAttribute("unquote_plus", "urllib", "urllib.parse"), - MovedAttribute("unquote_to_bytes", "urllib", "urllib.parse", "unquote", "unquote_to_bytes"), - MovedAttribute("urlencode", "urllib", "urllib.parse"), - MovedAttribute("splitquery", "urllib", "urllib.parse"), - MovedAttribute("splittag", "urllib", "urllib.parse"), - MovedAttribute("splituser", "urllib", "urllib.parse"), - MovedAttribute("splitvalue", "urllib", "urllib.parse"), - MovedAttribute("uses_fragment", "urlparse", "urllib.parse"), - MovedAttribute("uses_netloc", "urlparse", "urllib.parse"), - MovedAttribute("uses_params", "urlparse", "urllib.parse"), - MovedAttribute("uses_query", "urlparse", "urllib.parse"), - MovedAttribute("uses_relative", "urlparse", "urllib.parse"), -] -for attr in _urllib_parse_moved_attributes: - setattr(Module_six_moves_urllib_parse, attr.name, attr) -del attr - -Module_six_moves_urllib_parse._moved_attributes = _urllib_parse_moved_attributes - -_importer._add_module(Module_six_moves_urllib_parse(__name__ + ".moves.urllib_parse"), - "moves.urllib_parse", "moves.urllib.parse") - - -class Module_six_moves_urllib_error(_LazyModule): - - """Lazy loading of moved objects in six.moves.urllib_error""" - - -_urllib_error_moved_attributes = [ - MovedAttribute("URLError", "urllib2", "urllib.error"), - MovedAttribute("HTTPError", "urllib2", "urllib.error"), - MovedAttribute("ContentTooShortError", "urllib", "urllib.error"), -] -for attr in _urllib_error_moved_attributes: - setattr(Module_six_moves_urllib_error, attr.name, attr) -del attr - -Module_six_moves_urllib_error._moved_attributes = _urllib_error_moved_attributes - -_importer._add_module(Module_six_moves_urllib_error(__name__ + ".moves.urllib.error"), - "moves.urllib_error", "moves.urllib.error") - - -class Module_six_moves_urllib_request(_LazyModule): - - """Lazy loading of moved objects in six.moves.urllib_request""" - - -_urllib_request_moved_attributes = [ - MovedAttribute("urlopen", "urllib2", "urllib.request"), - MovedAttribute("install_opener", "urllib2", "urllib.request"), - MovedAttribute("build_opener", "urllib2", "urllib.request"), - MovedAttribute("pathname2url", "urllib", "urllib.request"), - MovedAttribute("url2pathname", "urllib", "urllib.request"), - MovedAttribute("getproxies", "urllib", "urllib.request"), - MovedAttribute("Request", "urllib2", "urllib.request"), - MovedAttribute("OpenerDirector", "urllib2", "urllib.request"), - MovedAttribute("HTTPDefaultErrorHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPRedirectHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPCookieProcessor", "urllib2", "urllib.request"), - MovedAttribute("ProxyHandler", "urllib2", "urllib.request"), - MovedAttribute("BaseHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPPasswordMgr", "urllib2", "urllib.request"), - MovedAttribute("HTTPPasswordMgrWithDefaultRealm", "urllib2", "urllib.request"), - MovedAttribute("AbstractBasicAuthHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPBasicAuthHandler", "urllib2", "urllib.request"), - MovedAttribute("ProxyBasicAuthHandler", "urllib2", "urllib.request"), - MovedAttribute("AbstractDigestAuthHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPDigestAuthHandler", "urllib2", "urllib.request"), - MovedAttribute("ProxyDigestAuthHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPSHandler", "urllib2", "urllib.request"), - MovedAttribute("FileHandler", "urllib2", "urllib.request"), - MovedAttribute("FTPHandler", "urllib2", "urllib.request"), - MovedAttribute("CacheFTPHandler", "urllib2", "urllib.request"), - MovedAttribute("UnknownHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPErrorProcessor", "urllib2", "urllib.request"), - MovedAttribute("urlretrieve", "urllib", "urllib.request"), - MovedAttribute("urlcleanup", "urllib", "urllib.request"), - MovedAttribute("URLopener", "urllib", "urllib.request"), - MovedAttribute("FancyURLopener", "urllib", "urllib.request"), - MovedAttribute("proxy_bypass", "urllib", "urllib.request"), - MovedAttribute("parse_http_list", "urllib2", "urllib.request"), - MovedAttribute("parse_keqv_list", "urllib2", "urllib.request"), -] -for attr in _urllib_request_moved_attributes: - setattr(Module_six_moves_urllib_request, attr.name, attr) -del attr - -Module_six_moves_urllib_request._moved_attributes = _urllib_request_moved_attributes - -_importer._add_module(Module_six_moves_urllib_request(__name__ + ".moves.urllib.request"), - "moves.urllib_request", "moves.urllib.request") - - -class Module_six_moves_urllib_response(_LazyModule): - - """Lazy loading of moved objects in six.moves.urllib_response""" - - -_urllib_response_moved_attributes = [ - MovedAttribute("addbase", "urllib", "urllib.response"), - MovedAttribute("addclosehook", "urllib", "urllib.response"), - MovedAttribute("addinfo", "urllib", "urllib.response"), - MovedAttribute("addinfourl", "urllib", "urllib.response"), -] -for attr in _urllib_response_moved_attributes: - setattr(Module_six_moves_urllib_response, attr.name, attr) -del attr - -Module_six_moves_urllib_response._moved_attributes = _urllib_response_moved_attributes - -_importer._add_module(Module_six_moves_urllib_response(__name__ + ".moves.urllib.response"), - "moves.urllib_response", "moves.urllib.response") - - -class Module_six_moves_urllib_robotparser(_LazyModule): - - """Lazy loading of moved objects in six.moves.urllib_robotparser""" - - -_urllib_robotparser_moved_attributes = [ - MovedAttribute("RobotFileParser", "robotparser", "urllib.robotparser"), -] -for attr in _urllib_robotparser_moved_attributes: - setattr(Module_six_moves_urllib_robotparser, attr.name, attr) -del attr - -Module_six_moves_urllib_robotparser._moved_attributes = _urllib_robotparser_moved_attributes - -_importer._add_module(Module_six_moves_urllib_robotparser(__name__ + ".moves.urllib.robotparser"), - "moves.urllib_robotparser", "moves.urllib.robotparser") - - -class Module_six_moves_urllib(types.ModuleType): - - """Create a six.moves.urllib namespace that resembles the Python 3 namespace""" - __path__ = [] # mark as package - parse = _importer._get_module("moves.urllib_parse") - error = _importer._get_module("moves.urllib_error") - request = _importer._get_module("moves.urllib_request") - response = _importer._get_module("moves.urllib_response") - robotparser = _importer._get_module("moves.urllib_robotparser") - - def __dir__(self): - return ['parse', 'error', 'request', 'response', 'robotparser'] - -_importer._add_module(Module_six_moves_urllib(__name__ + ".moves.urllib"), - "moves.urllib") - - -def add_move(move): - """Add an item to six.moves.""" - setattr(_MovedItems, move.name, move) - - -def remove_move(name): - """Remove item from six.moves.""" - try: - delattr(_MovedItems, name) - except AttributeError: - try: - del moves.__dict__[name] - except KeyError: - raise AttributeError("no such move, %r" % (name,)) - - -if PY3: - _meth_func = "__func__" - _meth_self = "__self__" - - _func_closure = "__closure__" - _func_code = "__code__" - _func_defaults = "__defaults__" - _func_globals = "__globals__" -else: - _meth_func = "im_func" - _meth_self = "im_self" - - _func_closure = "func_closure" - _func_code = "func_code" - _func_defaults = "func_defaults" - _func_globals = "func_globals" - - -try: - advance_iterator = next -except NameError: - def advance_iterator(it): - return it.next() -next = advance_iterator - - -try: - callable = callable -except NameError: - def callable(obj): - return any("__call__" in klass.__dict__ for klass in type(obj).__mro__) - - -if PY3: - def get_unbound_function(unbound): - return unbound - - create_bound_method = types.MethodType - - def create_unbound_method(func, cls): - return func - - Iterator = object -else: - def get_unbound_function(unbound): - return unbound.im_func - - def create_bound_method(func, obj): - return types.MethodType(func, obj, obj.__class__) - - def create_unbound_method(func, cls): - return types.MethodType(func, None, cls) - - class Iterator(object): - - def next(self): - return type(self).__next__(self) - - callable = callable -_add_doc(get_unbound_function, - """Get the function out of a possibly unbound function""") - - -get_method_function = operator.attrgetter(_meth_func) -get_method_self = operator.attrgetter(_meth_self) -get_function_closure = operator.attrgetter(_func_closure) -get_function_code = operator.attrgetter(_func_code) -get_function_defaults = operator.attrgetter(_func_defaults) -get_function_globals = operator.attrgetter(_func_globals) - - -if PY3: - def iterkeys(d, **kw): - return iter(d.keys(**kw)) - - def itervalues(d, **kw): - return iter(d.values(**kw)) - - def iteritems(d, **kw): - return iter(d.items(**kw)) - - def iterlists(d, **kw): - return iter(d.lists(**kw)) - - viewkeys = operator.methodcaller("keys") - - viewvalues = operator.methodcaller("values") - - viewitems = operator.methodcaller("items") -else: - def iterkeys(d, **kw): - return d.iterkeys(**kw) - - def itervalues(d, **kw): - return d.itervalues(**kw) - - def iteritems(d, **kw): - return d.iteritems(**kw) - - def iterlists(d, **kw): - return d.iterlists(**kw) - - viewkeys = operator.methodcaller("viewkeys") - - viewvalues = operator.methodcaller("viewvalues") - - viewitems = operator.methodcaller("viewitems") - -_add_doc(iterkeys, "Return an iterator over the keys of a dictionary.") -_add_doc(itervalues, "Return an iterator over the values of a dictionary.") -_add_doc(iteritems, - "Return an iterator over the (key, value) pairs of a dictionary.") -_add_doc(iterlists, - "Return an iterator over the (key, [values]) pairs of a dictionary.") - - -if PY3: - def b(s): - return s.encode("latin-1") - - def u(s): - return s - unichr = chr - import struct - int2byte = struct.Struct(">B").pack - del struct - byte2int = operator.itemgetter(0) - indexbytes = operator.getitem - iterbytes = iter - import io - StringIO = io.StringIO - BytesIO = io.BytesIO - _assertCountEqual = "assertCountEqual" - if sys.version_info[1] <= 1: - _assertRaisesRegex = "assertRaisesRegexp" - _assertRegex = "assertRegexpMatches" - else: - _assertRaisesRegex = "assertRaisesRegex" - _assertRegex = "assertRegex" -else: - def b(s): - return s - # Workaround for standalone backslash - - def u(s): - return unicode(s.replace(r'\\', r'\\\\'), "unicode_escape") - unichr = unichr - int2byte = chr - - def byte2int(bs): - return ord(bs[0]) - - def indexbytes(buf, i): - return ord(buf[i]) - iterbytes = functools.partial(itertools.imap, ord) - import StringIO - StringIO = BytesIO = StringIO.StringIO - _assertCountEqual = "assertItemsEqual" - _assertRaisesRegex = "assertRaisesRegexp" - _assertRegex = "assertRegexpMatches" -_add_doc(b, """Byte literal""") -_add_doc(u, """Text literal""") - - -def assertCountEqual(self, *args, **kwargs): - return getattr(self, _assertCountEqual)(*args, **kwargs) - - -def assertRaisesRegex(self, *args, **kwargs): - return getattr(self, _assertRaisesRegex)(*args, **kwargs) - - -def assertRegex(self, *args, **kwargs): - return getattr(self, _assertRegex)(*args, **kwargs) - - -if PY3: - exec_ = getattr(moves.builtins, "exec") - - def reraise(tp, value, tb=None): - try: - if value is None: - value = tp() - if value.__traceback__ is not tb: - raise value.with_traceback(tb) - raise value - finally: - value = None - tb = None - -else: - def exec_(_code_, _globs_=None, _locs_=None): - """Execute code in a namespace.""" - if _globs_ is None: - frame = sys._getframe(1) - _globs_ = frame.f_globals - if _locs_ is None: - _locs_ = frame.f_locals - del frame - elif _locs_ is None: - _locs_ = _globs_ - exec("""exec _code_ in _globs_, _locs_""") - - exec_("""def reraise(tp, value, tb=None): - try: - raise tp, value, tb - finally: - tb = None -""") - - -if sys.version_info[:2] == (3, 2): - exec_("""def raise_from(value, from_value): - try: - if from_value is None: - raise value - raise value from from_value - finally: - value = None -""") -elif sys.version_info[:2] > (3, 2): - exec_("""def raise_from(value, from_value): - try: - raise value from from_value - finally: - value = None -""") -else: - def raise_from(value, from_value): - raise value - - -print_ = getattr(moves.builtins, "print", None) -if print_ is None: - def print_(*args, **kwargs): - """The new-style print function for Python 2.4 and 2.5.""" - fp = kwargs.pop("file", sys.stdout) - if fp is None: - return - - def write(data): - if not isinstance(data, basestring): - data = str(data) - # If the file has an encoding, encode unicode with it. - if (isinstance(fp, file) and - isinstance(data, unicode) and - fp.encoding is not None): - errors = getattr(fp, "errors", None) - if errors is None: - errors = "strict" - data = data.encode(fp.encoding, errors) - fp.write(data) - want_unicode = False - sep = kwargs.pop("sep", None) - if sep is not None: - if isinstance(sep, unicode): - want_unicode = True - elif not isinstance(sep, str): - raise TypeError("sep must be None or a string") - end = kwargs.pop("end", None) - if end is not None: - if isinstance(end, unicode): - want_unicode = True - elif not isinstance(end, str): - raise TypeError("end must be None or a string") - if kwargs: - raise TypeError("invalid keyword arguments to print()") - if not want_unicode: - for arg in args: - if isinstance(arg, unicode): - want_unicode = True - break - if want_unicode: - newline = unicode("\n") - space = unicode(" ") - else: - newline = "\n" - space = " " - if sep is None: - sep = space - if end is None: - end = newline - for i, arg in enumerate(args): - if i: - write(sep) - write(arg) - write(end) -if sys.version_info[:2] < (3, 3): - _print = print_ - - def print_(*args, **kwargs): - fp = kwargs.get("file", sys.stdout) - flush = kwargs.pop("flush", False) - _print(*args, **kwargs) - if flush and fp is not None: - fp.flush() - -_add_doc(reraise, """Reraise an exception.""") - -if sys.version_info[0:2] < (3, 4): - def wraps(wrapped, assigned=functools.WRAPPER_ASSIGNMENTS, - updated=functools.WRAPPER_UPDATES): - def wrapper(f): - f = functools.wraps(wrapped, assigned, updated)(f) - f.__wrapped__ = wrapped - return f - return wrapper -else: - wraps = functools.wraps - - -def with_metaclass(meta, *bases): - """Create a base class with a metaclass.""" - # This requires a bit of explanation: the basic idea is to make a dummy - # metaclass for one level of class instantiation that replaces itself with - # the actual metaclass. - class metaclass(type): - - def __new__(cls, name, this_bases, d): - return meta(name, bases, d) - - @classmethod - def __prepare__(cls, name, this_bases): - return meta.__prepare__(name, bases) - return type.__new__(metaclass, 'temporary_class', (), {}) - - -def add_metaclass(metaclass): - """Class decorator for creating a class with a metaclass.""" - def wrapper(cls): - orig_vars = cls.__dict__.copy() - slots = orig_vars.get('__slots__') - if slots is not None: - if isinstance(slots, str): - slots = [slots] - for slots_var in slots: - orig_vars.pop(slots_var) - orig_vars.pop('__dict__', None) - orig_vars.pop('__weakref__', None) - return metaclass(cls.__name__, cls.__bases__, orig_vars) - return wrapper - - -def python_2_unicode_compatible(klass): - """ - A decorator that defines __unicode__ and __str__ methods under Python 2. - Under Python 3 it does nothing. - - To support Python 2 and 3 with a single code base, define a __str__ method - returning text and apply this decorator to the class. - """ - if PY2: - if '__str__' not in klass.__dict__: - raise ValueError("@python_2_unicode_compatible cannot be applied " - "to %s because it doesn't define __str__()." % - klass.__name__) - klass.__unicode__ = klass.__str__ - klass.__str__ = lambda self: self.__unicode__().encode('utf-8') - return klass - - -# Complete the moves implementation. -# This code is at the end of this module to speed up module loading. -# Turn this module into a package. -__path__ = [] # required for PEP 302 and PEP 451 -__package__ = __name__ # see PEP 366 @ReservedAssignment -if globals().get("__spec__") is not None: - __spec__.submodule_search_locations = [] # PEP 451 @UndefinedVariable -# Remove other six meta path importers, since they cause problems. This can -# happen if six is removed from sys.modules and then reloaded. (Setuptools does -# this for some reason.) -if sys.meta_path: - for i, importer in enumerate(sys.meta_path): - # Here's some real nastiness: Another "instance" of the six module might - # be floating around. Therefore, we can't use isinstance() to check for - # the six meta path importer, since the other six instance will have - # inserted an importer with different class. - if (type(importer).__name__ == "_SixMetaPathImporter" and - importer.name == __name__): - del sys.meta_path[i] - break - del i, importer -# Finally, add the importer to the meta path import hook. -sys.meta_path.append(_importer) diff --git a/python/socks.py b/python/socks.py deleted file mode 100644 index 7bcf590..0000000 --- a/python/socks.py +++ /dev/null @@ -1,870 +0,0 @@ -"""SocksiPy - Python SOCKS module. - -Copyright 2006 Dan-Haim. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. -3. Neither the name of Dan Haim nor the names of his contributors may be used - to endorse or promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY DAN HAIM "AS IS" AND ANY EXPRESS OR IMPLIED -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -EVENT SHALL DAN HAIM OR HIS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA -OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT -OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -This module provides a standard socket-like interface for Python -for tunneling connections through SOCKS proxies. - -=============================================================================== - -Minor modifications made by Christopher Gilbert (http://motomastyle.com/) -for use in PyLoris (http://pyloris.sourceforge.net/) - -Minor modifications made by Mario Vilas (http://breakingcode.wordpress.com/) -mainly to merge bug fixes found in Sourceforge - -Modifications made by Anorov (https://github.com/Anorov) --Forked and renamed to PySocks --Fixed issue with HTTP proxy failure checking (same bug that was in the - old ___recvall() method) --Included SocksiPyHandler (sockshandler.py), to be used as a urllib2 handler, - courtesy of e000 (https://github.com/e000): - https://gist.github.com/869791#file_socksipyhandler.py --Re-styled code to make it readable - -Aliased PROXY_TYPE_SOCKS5 -> SOCKS5 etc. - -Improved exception handling and output - -Removed irritating use of sequence indexes, replaced with tuple unpacked - variables - -Fixed up Python 3 bytestring handling - chr(0x03).encode() -> b"\x03" - -Other general fixes --Added clarification that the HTTP proxy connection method only supports - CONNECT-style tunneling HTTP proxies --Various small bug fixes -""" - -from base64 import b64encode -from collections import Callable -from errno import EOPNOTSUPP, EINVAL, EAGAIN -import functools -from io import BytesIO -import logging -import os -from os import SEEK_CUR -import socket -import struct -import sys - -__version__ = "1.6.7" - - -if os.name == "nt" and sys.version_info < (3, 0): - try: - import win_inet_pton - except ImportError: - raise ImportError( - "To run PySocks on Windows you must install win_inet_pton") - -log = logging.getLogger(__name__) - -PROXY_TYPE_SOCKS4 = SOCKS4 = 1 -PROXY_TYPE_SOCKS5 = SOCKS5 = 2 -PROXY_TYPE_HTTP = HTTP = 3 - -PROXY_TYPES = {"SOCKS4": SOCKS4, "SOCKS5": SOCKS5, "HTTP": HTTP} -PRINTABLE_PROXY_TYPES = dict(zip(PROXY_TYPES.values(), PROXY_TYPES.keys())) - -_orgsocket = _orig_socket = socket.socket - - -def set_self_blocking(function): - - @functools.wraps(function) - def wrapper(*args, **kwargs): - self = args[0] - try: - _is_blocking = self.gettimeout() - if _is_blocking == 0: - self.setblocking(True) - return function(*args, **kwargs) - except Exception as e: - raise - finally: - # set orgin blocking - if _is_blocking == 0: - self.setblocking(False) - return wrapper - - -class ProxyError(IOError): - """Socket_err contains original socket.error exception.""" - def __init__(self, msg, socket_err=None): - self.msg = msg - self.socket_err = socket_err - - if socket_err: - self.msg += ": {0}".format(socket_err) - - def __str__(self): - return self.msg - - -class GeneralProxyError(ProxyError): - pass - - -class ProxyConnectionError(ProxyError): - pass - - -class SOCKS5AuthError(ProxyError): - pass - - -class SOCKS5Error(ProxyError): - pass - - -class SOCKS4Error(ProxyError): - pass - - -class HTTPError(ProxyError): - pass - -SOCKS4_ERRORS = { - 0x5B: "Request rejected or failed", - 0x5C: ("Request rejected because SOCKS server cannot connect to identd on" - " the client"), - 0x5D: ("Request rejected because the client program and identd report" - " different user-ids") -} - -SOCKS5_ERRORS = { - 0x01: "General SOCKS server failure", - 0x02: "Connection not allowed by ruleset", - 0x03: "Network unreachable", - 0x04: "Host unreachable", - 0x05: "Connection refused", - 0x06: "TTL expired", - 0x07: "Command not supported, or protocol error", - 0x08: "Address type not supported" -} - -DEFAULT_PORTS = {SOCKS4: 1080, SOCKS5: 1080, HTTP: 8080} - - -def set_default_proxy(proxy_type=None, addr=None, port=None, rdns=True, - username=None, password=None): - """Sets a default proxy. - - All further socksocket objects will use the default unless explicitly - changed. All parameters are as for socket.set_proxy().""" - socksocket.default_proxy = (proxy_type, addr, port, rdns, - username.encode() if username else None, - password.encode() if password else None) - - -def setdefaultproxy(*args, **kwargs): - if "proxytype" in kwargs: - kwargs["proxy_type"] = kwargs.pop("proxytype") - return set_default_proxy(*args, **kwargs) - - -def get_default_proxy(): - """Returns the default proxy, set by set_default_proxy.""" - return socksocket.default_proxy - -getdefaultproxy = get_default_proxy - - -def wrap_module(module): - """Attempts to replace a module's socket library with a SOCKS socket. - - Must set a default proxy using set_default_proxy(...) first. This will - only work on modules that import socket directly into the namespace; - most of the Python Standard Library falls into this category.""" - if socksocket.default_proxy: - module.socket.socket = socksocket - else: - raise GeneralProxyError("No default proxy specified") - -wrapmodule = wrap_module - - -def create_connection(dest_pair, - timeout=None, source_address=None, - proxy_type=None, proxy_addr=None, - proxy_port=None, proxy_rdns=True, - proxy_username=None, proxy_password=None, - socket_options=None): - """create_connection(dest_pair, *[, timeout], **proxy_args) -> socket object - - Like socket.create_connection(), but connects to proxy - before returning the socket object. - - dest_pair - 2-tuple of (IP/hostname, port). - **proxy_args - Same args passed to socksocket.set_proxy() if present. - timeout - Optional socket timeout value, in seconds. - source_address - tuple (host, port) for the socket to bind to as its source - address before connecting (only for compatibility) - """ - # Remove IPv6 brackets on the remote address and proxy address. - remote_host, remote_port = dest_pair - if remote_host.startswith("["): - remote_host = remote_host.strip("[]") - if proxy_addr and proxy_addr.startswith("["): - proxy_addr = proxy_addr.strip("[]") - - err = None - - # Allow the SOCKS proxy to be on IPv4 or IPv6 addresses. - for r in socket.getaddrinfo(proxy_addr, proxy_port, 0, socket.SOCK_STREAM): - family, socket_type, proto, canonname, sa = r - sock = None - try: - sock = socksocket(family, socket_type, proto) - - if socket_options: - for opt in socket_options: - sock.setsockopt(*opt) - - if isinstance(timeout, (int, float)): - sock.settimeout(timeout) - - if proxy_type: - sock.set_proxy(proxy_type, proxy_addr, proxy_port, proxy_rdns, - proxy_username, proxy_password) - if source_address: - sock.bind(source_address) - - sock.connect((remote_host, remote_port)) - return sock - - except (socket.error, ProxyConnectionError) as e: - err = e - if sock: - sock.close() - sock = None - - if err: - raise err - - raise socket.error("gai returned empty list.") - - -class _BaseSocket(socket.socket): - """Allows Python 2 delegated methods such as send() to be overridden.""" - def __init__(self, *pos, **kw): - _orig_socket.__init__(self, *pos, **kw) - - self._savedmethods = dict() - for name in self._savenames: - self._savedmethods[name] = getattr(self, name) - delattr(self, name) # Allows normal overriding mechanism to work - - _savenames = list() - - -def _makemethod(name): - return lambda self, *pos, **kw: self._savedmethods[name](*pos, **kw) -for name in ("sendto", "send", "recvfrom", "recv"): - method = getattr(_BaseSocket, name, None) - - # Determine if the method is not defined the usual way - # as a function in the class. - # Python 2 uses __slots__, so there are descriptors for each method, - # but they are not functions. - if not isinstance(method, Callable): - _BaseSocket._savenames.append(name) - setattr(_BaseSocket, name, _makemethod(name)) - - -class socksocket(_BaseSocket): - """socksocket([family[, type[, proto]]]) -> socket object - - Open a SOCKS enabled socket. The parameters are the same as - those of the standard socket init. In order for SOCKS to work, - you must specify family=AF_INET and proto=0. - The "type" argument must be either SOCK_STREAM or SOCK_DGRAM. - """ - - default_proxy = None - - def __init__(self, family=socket.AF_INET, type=socket.SOCK_STREAM, - proto=0, *args, **kwargs): - if type not in (socket.SOCK_STREAM, socket.SOCK_DGRAM): - msg = "Socket type must be stream or datagram, not {!r}" - raise ValueError(msg.format(type)) - - super(socksocket, self).__init__(family, type, proto, *args, **kwargs) - self._proxyconn = None # TCP connection to keep UDP relay alive - - if self.default_proxy: - self.proxy = self.default_proxy - else: - self.proxy = (None, None, None, None, None, None) - self.proxy_sockname = None - self.proxy_peername = None - - self._timeout = None - - def _readall(self, file, count): - """Receive EXACTLY the number of bytes requested from the file object. - - Blocks until the required number of bytes have been received.""" - data = b"" - while len(data) < count: - d = file.read(count - len(data)) - if not d: - raise GeneralProxyError("Connection closed unexpectedly") - data += d - return data - - def settimeout(self, timeout): - self._timeout = timeout - try: - # test if we're connected, if so apply timeout - peer = self.get_proxy_peername() - super(socksocket, self).settimeout(self._timeout) - except socket.error: - pass - - def gettimeout(self): - return self._timeout - - def setblocking(self, v): - if v: - self.settimeout(None) - else: - self.settimeout(0.0) - - def set_proxy(self, proxy_type=None, addr=None, port=None, rdns=True, - username=None, password=None): - """ Sets the proxy to be used. - - proxy_type - The type of the proxy to be used. Three types - are supported: PROXY_TYPE_SOCKS4 (including socks4a), - PROXY_TYPE_SOCKS5 and PROXY_TYPE_HTTP - addr - The address of the server (IP or DNS). - port - The port of the server. Defaults to 1080 for SOCKS - servers and 8080 for HTTP proxy servers. - rdns - Should DNS queries be performed on the remote side - (rather than the local side). The default is True. - Note: This has no effect with SOCKS4 servers. - username - Username to authenticate with to the server. - The default is no authentication. - password - Password to authenticate with to the server. - Only relevant when username is also provided.""" - self.proxy = (proxy_type, addr, port, rdns, - username.encode() if username else None, - password.encode() if password else None) - - def setproxy(self, *args, **kwargs): - if "proxytype" in kwargs: - kwargs["proxy_type"] = kwargs.pop("proxytype") - return self.set_proxy(*args, **kwargs) - - def bind(self, *pos, **kw): - """Implements proxy connection for UDP sockets. - - Happens during the bind() phase.""" - (proxy_type, proxy_addr, proxy_port, rdns, username, - password) = self.proxy - if not proxy_type or self.type != socket.SOCK_DGRAM: - return _orig_socket.bind(self, *pos, **kw) - - if self._proxyconn: - raise socket.error(EINVAL, "Socket already bound to an address") - if proxy_type != SOCKS5: - msg = "UDP only supported by SOCKS5 proxy type" - raise socket.error(EOPNOTSUPP, msg) - super(socksocket, self).bind(*pos, **kw) - - # Need to specify actual local port because - # some relays drop packets if a port of zero is specified. - # Avoid specifying host address in case of NAT though. - _, port = self.getsockname() - dst = ("0", port) - - self._proxyconn = _orig_socket() - proxy = self._proxy_addr() - self._proxyconn.connect(proxy) - - UDP_ASSOCIATE = b"\x03" - _, relay = self._SOCKS5_request(self._proxyconn, UDP_ASSOCIATE, dst) - - # The relay is most likely on the same host as the SOCKS proxy, - # but some proxies return a private IP address (10.x.y.z) - host, _ = proxy - _, port = relay - super(socksocket, self).connect((host, port)) - super(socksocket, self).settimeout(self._timeout) - self.proxy_sockname = ("0.0.0.0", 0) # Unknown - - def sendto(self, bytes, *args, **kwargs): - if self.type != socket.SOCK_DGRAM: - return super(socksocket, self).sendto(bytes, *args, **kwargs) - if not self._proxyconn: - self.bind(("", 0)) - - address = args[-1] - flags = args[:-1] - - header = BytesIO() - RSV = b"\x00\x00" - header.write(RSV) - STANDALONE = b"\x00" - header.write(STANDALONE) - self._write_SOCKS5_address(address, header) - - sent = super(socksocket, self).send(header.getvalue() + bytes, *flags, - **kwargs) - return sent - header.tell() - - def send(self, bytes, flags=0, **kwargs): - if self.type == socket.SOCK_DGRAM: - return self.sendto(bytes, flags, self.proxy_peername, **kwargs) - else: - return super(socksocket, self).send(bytes, flags, **kwargs) - - def recvfrom(self, bufsize, flags=0): - if self.type != socket.SOCK_DGRAM: - return super(socksocket, self).recvfrom(bufsize, flags) - if not self._proxyconn: - self.bind(("", 0)) - - buf = BytesIO(super(socksocket, self).recv(bufsize + 1024, flags)) - buf.seek(2, SEEK_CUR) - frag = buf.read(1) - if ord(frag): - raise NotImplementedError("Received UDP packet fragment") - fromhost, fromport = self._read_SOCKS5_address(buf) - - if self.proxy_peername: - peerhost, peerport = self.proxy_peername - if fromhost != peerhost or peerport not in (0, fromport): - raise socket.error(EAGAIN, "Packet filtered") - - return (buf.read(bufsize), (fromhost, fromport)) - - def recv(self, *pos, **kw): - bytes, _ = self.recvfrom(*pos, **kw) - return bytes - - def close(self): - if self._proxyconn: - self._proxyconn.close() - return super(socksocket, self).close() - - def get_proxy_sockname(self): - """Returns the bound IP address and port number at the proxy.""" - return self.proxy_sockname - - getproxysockname = get_proxy_sockname - - def get_proxy_peername(self): - """ - Returns the IP and port number of the proxy. - """ - return self.getpeername() - - getproxypeername = get_proxy_peername - - def get_peername(self): - """Returns the IP address and port number of the destination machine. - - Note: get_proxy_peername returns the proxy.""" - return self.proxy_peername - - getpeername = get_peername - - def _negotiate_SOCKS5(self, *dest_addr): - """Negotiates a stream connection through a SOCKS5 server.""" - CONNECT = b"\x01" - self.proxy_peername, self.proxy_sockname = self._SOCKS5_request( - self, CONNECT, dest_addr) - - def _SOCKS5_request(self, conn, cmd, dst): - """ - Send SOCKS5 request with given command (CMD field) and - address (DST field). Returns resolved DST address that was used. - """ - proxy_type, addr, port, rdns, username, password = self.proxy - - writer = conn.makefile("wb") - reader = conn.makefile("rb", 0) # buffering=0 renamed in Python 3 - try: - # First we'll send the authentication packages we support. - if username and password: - # The username/password details were supplied to the - # set_proxy method so we support the USERNAME/PASSWORD - # authentication (in addition to the standard none). - writer.write(b"\x05\x02\x00\x02") - else: - # No username/password were entered, therefore we - # only support connections with no authentication. - writer.write(b"\x05\x01\x00") - - # We'll receive the server's response to determine which - # method was selected - writer.flush() - chosen_auth = self._readall(reader, 2) - - if chosen_auth[0:1] != b"\x05": - # Note: string[i:i+1] is used because indexing of a bytestring - # via bytestring[i] yields an integer in Python 3 - raise GeneralProxyError( - "SOCKS5 proxy server sent invalid data") - - # Check the chosen authentication method - - if chosen_auth[1:2] == b"\x02": - # Okay, we need to perform a basic username/password - # authentication. - writer.write(b"\x01" + chr(len(username)).encode() - + username - + chr(len(password)).encode() - + password) - writer.flush() - auth_status = self._readall(reader, 2) - if auth_status[0:1] != b"\x01": - # Bad response - raise GeneralProxyError( - "SOCKS5 proxy server sent invalid data") - if auth_status[1:2] != b"\x00": - # Authentication failed - raise SOCKS5AuthError("SOCKS5 authentication failed") - - # Otherwise, authentication succeeded - - # No authentication is required if 0x00 - elif chosen_auth[1:2] != b"\x00": - # Reaching here is always bad - if chosen_auth[1:2] == b"\xFF": - raise SOCKS5AuthError( - "All offered SOCKS5 authentication methods were" - " rejected") - else: - raise GeneralProxyError( - "SOCKS5 proxy server sent invalid data") - - # Now we can request the actual connection - writer.write(b"\x05" + cmd + b"\x00") - resolved = self._write_SOCKS5_address(dst, writer) - writer.flush() - - # Get the response - resp = self._readall(reader, 3) - if resp[0:1] != b"\x05": - raise GeneralProxyError( - "SOCKS5 proxy server sent invalid data") - - status = ord(resp[1:2]) - if status != 0x00: - # Connection failed: server returned an error - error = SOCKS5_ERRORS.get(status, "Unknown error") - raise SOCKS5Error("{0:#04x}: {1}".format(status, error)) - - # Get the bound address/port - bnd = self._read_SOCKS5_address(reader) - - super(socksocket, self).settimeout(self._timeout) - return (resolved, bnd) - finally: - reader.close() - writer.close() - - def _write_SOCKS5_address(self, addr, file): - """ - Return the host and port packed for the SOCKS5 protocol, - and the resolved address as a tuple object. - """ - host, port = addr - proxy_type, _, _, rdns, username, password = self.proxy - family_to_byte = {socket.AF_INET: b"\x01", socket.AF_INET6: b"\x04"} - - # If the given destination address is an IP address, we'll - # use the IP address request even if remote resolving was specified. - # Detect whether the address is IPv4/6 directly. - for family in (socket.AF_INET, socket.AF_INET6): - try: - addr_bytes = socket.inet_pton(family, host) - file.write(family_to_byte[family] + addr_bytes) - host = socket.inet_ntop(family, addr_bytes) - file.write(struct.pack(">H", port)) - return host, port - except socket.error: - continue - - # Well it's not an IP number, so it's probably a DNS name. - if rdns: - # Resolve remotely - host_bytes = host.encode("idna") - file.write(b"\x03" + chr(len(host_bytes)).encode() + host_bytes) - else: - # Resolve locally - addresses = socket.getaddrinfo(host, port, socket.AF_UNSPEC, - socket.SOCK_STREAM, - socket.IPPROTO_TCP, - socket.AI_ADDRCONFIG) - # We can't really work out what IP is reachable, so just pick the - # first. - target_addr = addresses[0] - family = target_addr[0] - host = target_addr[4][0] - - addr_bytes = socket.inet_pton(family, host) - file.write(family_to_byte[family] + addr_bytes) - host = socket.inet_ntop(family, addr_bytes) - file.write(struct.pack(">H", port)) - return host, port - - def _read_SOCKS5_address(self, file): - atyp = self._readall(file, 1) - if atyp == b"\x01": - addr = socket.inet_ntoa(self._readall(file, 4)) - elif atyp == b"\x03": - length = self._readall(file, 1) - addr = self._readall(file, ord(length)) - elif atyp == b"\x04": - addr = socket.inet_ntop(socket.AF_INET6, self._readall(file, 16)) - else: - raise GeneralProxyError("SOCKS5 proxy server sent invalid data") - - port = struct.unpack(">H", self._readall(file, 2))[0] - return addr, port - - def _negotiate_SOCKS4(self, dest_addr, dest_port): - """Negotiates a connection through a SOCKS4 server.""" - proxy_type, addr, port, rdns, username, password = self.proxy - - writer = self.makefile("wb") - reader = self.makefile("rb", 0) # buffering=0 renamed in Python 3 - try: - # Check if the destination address provided is an IP address - remote_resolve = False - try: - addr_bytes = socket.inet_aton(dest_addr) - except socket.error: - # It's a DNS name. Check where it should be resolved. - if rdns: - addr_bytes = b"\x00\x00\x00\x01" - remote_resolve = True - else: - addr_bytes = socket.inet_aton( - socket.gethostbyname(dest_addr)) - - # Construct the request packet - writer.write(struct.pack(">BBH", 0x04, 0x01, dest_port)) - writer.write(addr_bytes) - - # The username parameter is considered userid for SOCKS4 - if username: - writer.write(username) - writer.write(b"\x00") - - # DNS name if remote resolving is required - # NOTE: This is actually an extension to the SOCKS4 protocol - # called SOCKS4A and may not be supported in all cases. - if remote_resolve: - writer.write(dest_addr.encode("idna") + b"\x00") - writer.flush() - - # Get the response from the server - resp = self._readall(reader, 8) - if resp[0:1] != b"\x00": - # Bad data - raise GeneralProxyError( - "SOCKS4 proxy server sent invalid data") - - status = ord(resp[1:2]) - if status != 0x5A: - # Connection failed: server returned an error - error = SOCKS4_ERRORS.get(status, "Unknown error") - raise SOCKS4Error("{0:#04x}: {1}".format(status, error)) - - # Get the bound address/port - self.proxy_sockname = (socket.inet_ntoa(resp[4:]), - struct.unpack(">H", resp[2:4])[0]) - if remote_resolve: - self.proxy_peername = socket.inet_ntoa(addr_bytes), dest_port - else: - self.proxy_peername = dest_addr, dest_port - finally: - reader.close() - writer.close() - - def _negotiate_HTTP(self, dest_addr, dest_port): - """Negotiates a connection through an HTTP server. - - NOTE: This currently only supports HTTP CONNECT-style proxies.""" - proxy_type, addr, port, rdns, username, password = self.proxy - - # If we need to resolve locally, we do this now - addr = dest_addr if rdns else socket.gethostbyname(dest_addr) - - http_headers = [ - (b"CONNECT " + addr.encode("idna") + b":" - + str(dest_port).encode() + b" HTTP/1.1"), - b"Host: " + dest_addr.encode("idna") - ] - - if username and password: - http_headers.append(b"Proxy-Authorization: basic " - + b64encode(username + b":" + password)) - - http_headers.append(b"\r\n") - - self.sendall(b"\r\n".join(http_headers)) - - # We just need the first line to check if the connection was successful - fobj = self.makefile() - status_line = fobj.readline() - fobj.close() - - if not status_line: - raise GeneralProxyError("Connection closed unexpectedly") - - try: - proto, status_code, status_msg = status_line.split(" ", 2) - except ValueError: - raise GeneralProxyError("HTTP proxy server sent invalid response") - - if not proto.startswith("HTTP/"): - raise GeneralProxyError( - "Proxy server does not appear to be an HTTP proxy") - - try: - status_code = int(status_code) - except ValueError: - raise HTTPError( - "HTTP proxy server did not return a valid HTTP status") - - if status_code != 200: - error = "{0}: {1}".format(status_code, status_msg) - if status_code in (400, 403, 405): - # It's likely that the HTTP proxy server does not support the - # CONNECT tunneling method - error += ("\n[*] Note: The HTTP proxy server may not be" - " supported by PySocks (must be a CONNECT tunnel" - " proxy)") - raise HTTPError(error) - - self.proxy_sockname = (b"0.0.0.0", 0) - self.proxy_peername = addr, dest_port - - _proxy_negotiators = { - SOCKS4: _negotiate_SOCKS4, - SOCKS5: _negotiate_SOCKS5, - HTTP: _negotiate_HTTP - } - - @set_self_blocking - def connect(self, dest_pair): - """ - Connects to the specified destination through a proxy. - Uses the same API as socket's connect(). - To select the proxy server, use set_proxy(). - - dest_pair - 2-tuple of (IP/hostname, port). - """ - if len(dest_pair) != 2 or dest_pair[0].startswith("["): - # Probably IPv6, not supported -- raise an error, and hope - # Happy Eyeballs (RFC6555) makes sure at least the IPv4 - # connection works... - raise socket.error("PySocks doesn't support IPv6: %s" - % str(dest_pair)) - - dest_addr, dest_port = dest_pair - - if self.type == socket.SOCK_DGRAM: - if not self._proxyconn: - self.bind(("", 0)) - dest_addr = socket.gethostbyname(dest_addr) - - # If the host address is INADDR_ANY or similar, reset the peer - # address so that packets are received from any peer - if dest_addr == "0.0.0.0" and not dest_port: - self.proxy_peername = None - else: - self.proxy_peername = (dest_addr, dest_port) - return - - (proxy_type, proxy_addr, proxy_port, rdns, username, - password) = self.proxy - - # Do a minimal input check first - if (not isinstance(dest_pair, (list, tuple)) - or len(dest_pair) != 2 - or not dest_addr - or not isinstance(dest_port, int)): - # Inputs failed, raise an error - raise GeneralProxyError( - "Invalid destination-connection (host, port) pair") - - # We set the timeout here so that we don't hang in connection or during - # negotiation. - super(socksocket, self).settimeout(self._timeout) - - if proxy_type is None: - # Treat like regular socket object - self.proxy_peername = dest_pair - super(socksocket, self).settimeout(self._timeout) - super(socksocket, self).connect((dest_addr, dest_port)) - return - - proxy_addr = self._proxy_addr() - - try: - # Initial connection to proxy server. - super(socksocket, self).connect(proxy_addr) - - except socket.error as error: - # Error while connecting to proxy - self.close() - proxy_addr, proxy_port = proxy_addr - proxy_server = "{0}:{1}".format(proxy_addr, proxy_port) - printable_type = PRINTABLE_PROXY_TYPES[proxy_type] - - msg = "Error connecting to {0} proxy {1}".format(printable_type, - proxy_server) - log.debug("%s due to: %s", msg, error) - raise ProxyConnectionError(msg, error) - - else: - # Connected to proxy server, now negotiate - try: - # Calls negotiate_{SOCKS4, SOCKS5, HTTP} - negotiate = self._proxy_negotiators[proxy_type] - negotiate(self, dest_addr, dest_port) - except socket.error as error: - # Wrap socket errors - self.close() - raise GeneralProxyError("Socket error", error) - except ProxyError: - # Protocol error while negotiating with proxy - self.close() - raise - - def _proxy_addr(self): - """ - Return proxy address to connect to as tuple object - """ - (proxy_type, proxy_addr, proxy_port, rdns, username, - password) = self.proxy - proxy_port = proxy_port or DEFAULT_PORTS.get(proxy_type) - if not proxy_port: - raise GeneralProxyError("Invalid proxy type") - return proxy_addr, proxy_port diff --git a/python/sockshandler.py b/python/sockshandler.py deleted file mode 100644 index 26c8343..0000000 --- a/python/sockshandler.py +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/env python -""" -SocksiPy + urllib2 handler - -version: 0.3 -author: e<e@tr0ll.in> - -This module provides a Handler which you can use with urllib2 to allow it to tunnel your connection through a socks.sockssocket socket, with out monkey patching the original socket... -""" -import ssl - -try: - import urllib2 - import httplib -except ImportError: # Python 3 - import urllib.request as urllib2 - import http.client as httplib - -import socks # $ pip install PySocks - -def merge_dict(a, b): - d = a.copy() - d.update(b) - return d - -class SocksiPyConnection(httplib.HTTPConnection): - def __init__(self, proxytype, proxyaddr, proxyport=None, rdns=True, username=None, password=None, *args, **kwargs): - self.proxyargs = (proxytype, proxyaddr, proxyport, rdns, username, password) - httplib.HTTPConnection.__init__(self, *args, **kwargs) - - def connect(self): - self.sock = socks.socksocket() - self.sock.setproxy(*self.proxyargs) - if type(self.timeout) in (int, float): - self.sock.settimeout(self.timeout) - self.sock.connect((self.host, self.port)) - -class SocksiPyConnectionS(httplib.HTTPSConnection): - def __init__(self, proxytype, proxyaddr, proxyport=None, rdns=True, username=None, password=None, *args, **kwargs): - self.proxyargs = (proxytype, proxyaddr, proxyport, rdns, username, password) - httplib.HTTPSConnection.__init__(self, *args, **kwargs) - - def connect(self): - sock = socks.socksocket() - sock.setproxy(*self.proxyargs) - if type(self.timeout) in (int, float): - sock.settimeout(self.timeout) - sock.connect((self.host, self.port)) - self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file) - -class SocksiPyHandler(urllib2.HTTPHandler, urllib2.HTTPSHandler): - def __init__(self, *args, **kwargs): - self.args = args - self.kw = kwargs - urllib2.HTTPHandler.__init__(self) - - def http_open(self, req): - def build(host, port=None, timeout=0, **kwargs): - kw = merge_dict(self.kw, kwargs) - conn = SocksiPyConnection(*self.args, host=host, port=port, timeout=timeout, **kw) - return conn - return self.do_open(build, req) - - def https_open(self, req): - def build(host, port=None, timeout=0, **kwargs): - kw = merge_dict(self.kw, kwargs) - conn = SocksiPyConnectionS(*self.args, host=host, port=port, timeout=timeout, **kw) - return conn - return self.do_open(build, req) - -if __name__ == "__main__": - import sys - try: - port = int(sys.argv[1]) - except (ValueError, IndexError): - port = 9050 - opener = urllib2.build_opener(SocksiPyHandler(socks.PROXY_TYPE_SOCKS5, "localhost", port)) - print("HTTP: " + opener.open("http://httpbin.org/ip").read().decode()) - print("HTTPS: " + opener.open("https://httpbin.org/ip").read().decode()) diff --git a/python/sqlite3.dll b/python/sqlite3.dll deleted file mode 100644 index 184dace41409c281531c3230b9dda6af55201b28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 880792 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%0DqI#4*l$BP4Tr<A{=2K!}Dbc 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%0DXcXYVf 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%0Aw+ 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 diff --git a/python/unicodedata.pyd b/python/unicodedata.pyd deleted file mode 100644 index ac77470d5be00f75312df6b8d584e925be555e50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 896152 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 diff --git a/python/urllib3/__init__.py b/python/urllib3/__init__.py deleted file mode 100644 index 148a9c3..0000000 --- a/python/urllib3/__init__.py +++ /dev/null @@ -1,92 +0,0 @@ -""" -urllib3 - Thread-safe connection pooling and re-using. -""" - -from __future__ import absolute_import -import warnings - -from .connectionpool import ( - HTTPConnectionPool, - HTTPSConnectionPool, - connection_from_url -) - -from . import exceptions -from .filepost import encode_multipart_formdata -from .poolmanager import PoolManager, ProxyManager, proxy_from_url -from .response import HTTPResponse -from .util.request import make_headers -from .util.url import get_host -from .util.timeout import Timeout -from .util.retry import Retry - - -# Set default logging handler to avoid "No handler found" warnings. -import logging -from logging import NullHandler - -__author__ = 'Andrey Petrov (andrey.petrov@shazow.net)' -__license__ = 'MIT' -__version__ = '1.24.1' - -__all__ = ( - 'HTTPConnectionPool', - 'HTTPSConnectionPool', - 'PoolManager', - 'ProxyManager', - 'HTTPResponse', - 'Retry', - 'Timeout', - 'add_stderr_logger', - 'connection_from_url', - 'disable_warnings', - 'encode_multipart_formdata', - 'get_host', - 'make_headers', - 'proxy_from_url', -) - -logging.getLogger(__name__).addHandler(NullHandler()) - - -def add_stderr_logger(level=logging.DEBUG): - """ - Helper for quickly adding a StreamHandler to the logger. Useful for - debugging. - - Returns the handler after adding it. - """ - # This method needs to be in this __init__.py to get the __name__ correct - # even if urllib3 is vendored within another package. - logger = logging.getLogger(__name__) - handler = logging.StreamHandler() - handler.setFormatter(logging.Formatter('%(asctime)s %(levelname)s %(message)s')) - logger.addHandler(handler) - logger.setLevel(level) - logger.debug('Added a stderr logging handler to logger: %s', __name__) - return handler - - -# ... Clean up. -del NullHandler - - -# All warning filters *must* be appended unless you're really certain that they -# shouldn't be: otherwise, it's very hard for users to use most Python -# mechanisms to silence them. -# SecurityWarning's always go off by default. -warnings.simplefilter('always', exceptions.SecurityWarning, append=True) -# SubjectAltNameWarning's should go off once per host -warnings.simplefilter('default', exceptions.SubjectAltNameWarning, append=True) -# InsecurePlatformWarning's don't vary between requests, so we keep it default. -warnings.simplefilter('default', exceptions.InsecurePlatformWarning, - append=True) -# SNIMissingWarnings should go off only once. -warnings.simplefilter('default', exceptions.SNIMissingWarning, append=True) - - -def disable_warnings(category=exceptions.HTTPWarning): - """ - Helper for quickly disabling all urllib3 warnings. - """ - warnings.simplefilter('ignore', category) diff --git a/python/urllib3/_collections.py b/python/urllib3/_collections.py deleted file mode 100644 index 34f2381..0000000 --- a/python/urllib3/_collections.py +++ /dev/null @@ -1,329 +0,0 @@ -from __future__ import absolute_import -try: - from collections.abc import Mapping, MutableMapping -except ImportError: - from collections import Mapping, MutableMapping -try: - from threading import RLock -except ImportError: # Platform-specific: No threads available - class RLock: - def __enter__(self): - pass - - def __exit__(self, exc_type, exc_value, traceback): - pass - - -from collections import OrderedDict -from .exceptions import InvalidHeader -from .packages.six import iterkeys, itervalues, PY3 - - -__all__ = ['RecentlyUsedContainer', 'HTTPHeaderDict'] - - -_Null = object() - - -class RecentlyUsedContainer(MutableMapping): - """ - Provides a thread-safe dict-like container which maintains up to - ``maxsize`` keys while throwing away the least-recently-used keys beyond - ``maxsize``. - - :param maxsize: - Maximum number of recent elements to retain. - - :param dispose_func: - Every time an item is evicted from the container, - ``dispose_func(value)`` is called. Callback which will get called - """ - - ContainerCls = OrderedDict - - def __init__(self, maxsize=10, dispose_func=None): - self._maxsize = maxsize - self.dispose_func = dispose_func - - self._container = self.ContainerCls() - self.lock = RLock() - - def __getitem__(self, key): - # Re-insert the item, moving it to the end of the eviction line. - with self.lock: - item = self._container.pop(key) - self._container[key] = item - return item - - def __setitem__(self, key, value): - evicted_value = _Null - with self.lock: - # Possibly evict the existing value of 'key' - evicted_value = self._container.get(key, _Null) - self._container[key] = value - - # If we didn't evict an existing value, we might have to evict the - # least recently used item from the beginning of the container. - if len(self._container) > self._maxsize: - _key, evicted_value = self._container.popitem(last=False) - - if self.dispose_func and evicted_value is not _Null: - self.dispose_func(evicted_value) - - def __delitem__(self, key): - with self.lock: - value = self._container.pop(key) - - if self.dispose_func: - self.dispose_func(value) - - def __len__(self): - with self.lock: - return len(self._container) - - def __iter__(self): - raise NotImplementedError('Iteration over this class is unlikely to be threadsafe.') - - def clear(self): - with self.lock: - # Copy pointers to all values, then wipe the mapping - values = list(itervalues(self._container)) - self._container.clear() - - if self.dispose_func: - for value in values: - self.dispose_func(value) - - def keys(self): - with self.lock: - return list(iterkeys(self._container)) - - -class HTTPHeaderDict(MutableMapping): - """ - :param headers: - An iterable of field-value pairs. Must not contain multiple field names - when compared case-insensitively. - - :param kwargs: - Additional field-value pairs to pass in to ``dict.update``. - - A ``dict`` like container for storing HTTP Headers. - - Field names are stored and compared case-insensitively in compliance with - RFC 7230. Iteration provides the first case-sensitive key seen for each - case-insensitive pair. - - Using ``__setitem__`` syntax overwrites fields that compare equal - case-insensitively in order to maintain ``dict``'s api. For fields that - compare equal, instead create a new ``HTTPHeaderDict`` and use ``.add`` - in a loop. - - If multiple fields that are equal case-insensitively are passed to the - constructor or ``.update``, the behavior is undefined and some will be - lost. - - >>> headers = HTTPHeaderDict() - >>> headers.add('Set-Cookie', 'foo=bar') - >>> headers.add('set-cookie', 'baz=quxx') - >>> headers['content-length'] = '7' - >>> headers['SET-cookie'] - 'foo=bar, baz=quxx' - >>> headers['Content-Length'] - '7' - """ - - def __init__(self, headers=None, **kwargs): - super(HTTPHeaderDict, self).__init__() - self._container = OrderedDict() - if headers is not None: - if isinstance(headers, HTTPHeaderDict): - self._copy_from(headers) - else: - self.extend(headers) - if kwargs: - self.extend(kwargs) - - def __setitem__(self, key, val): - self._container[key.lower()] = [key, val] - return self._container[key.lower()] - - def __getitem__(self, key): - val = self._container[key.lower()] - return ', '.join(val[1:]) - - def __delitem__(self, key): - del self._container[key.lower()] - - def __contains__(self, key): - return key.lower() in self._container - - def __eq__(self, other): - if not isinstance(other, Mapping) and not hasattr(other, 'keys'): - return False - if not isinstance(other, type(self)): - other = type(self)(other) - return (dict((k.lower(), v) for k, v in self.itermerged()) == - dict((k.lower(), v) for k, v in other.itermerged())) - - def __ne__(self, other): - return not self.__eq__(other) - - if not PY3: # Python 2 - iterkeys = MutableMapping.iterkeys - itervalues = MutableMapping.itervalues - - __marker = object() - - def __len__(self): - return len(self._container) - - def __iter__(self): - # Only provide the originally cased names - for vals in self._container.values(): - yield vals[0] - - def pop(self, key, default=__marker): - '''D.pop(k[,d]) -> v, remove specified key and return the corresponding value. - If key is not found, d is returned if given, otherwise KeyError is raised. - ''' - # Using the MutableMapping function directly fails due to the private marker. - # Using ordinary dict.pop would expose the internal structures. - # So let's reinvent the wheel. - try: - value = self[key] - except KeyError: - if default is self.__marker: - raise - return default - else: - del self[key] - return value - - def discard(self, key): - try: - del self[key] - except KeyError: - pass - - def add(self, key, val): - """Adds a (name, value) pair, doesn't overwrite the value if it already - exists. - - >>> headers = HTTPHeaderDict(foo='bar') - >>> headers.add('Foo', 'baz') - >>> headers['foo'] - 'bar, baz' - """ - key_lower = key.lower() - new_vals = [key, val] - # Keep the common case aka no item present as fast as possible - vals = self._container.setdefault(key_lower, new_vals) - if new_vals is not vals: - vals.append(val) - - def extend(self, *args, **kwargs): - """Generic import function for any type of header-like object. - Adapted version of MutableMapping.update in order to insert items - with self.add instead of self.__setitem__ - """ - if len(args) > 1: - raise TypeError("extend() takes at most 1 positional " - "arguments ({0} given)".format(len(args))) - other = args[0] if len(args) >= 1 else () - - if isinstance(other, HTTPHeaderDict): - for key, val in other.iteritems(): - self.add(key, val) - elif isinstance(other, Mapping): - for key in other: - self.add(key, other[key]) - elif hasattr(other, "keys"): - for key in other.keys(): - self.add(key, other[key]) - else: - for key, value in other: - self.add(key, value) - - for key, value in kwargs.items(): - self.add(key, value) - - def getlist(self, key, default=__marker): - """Returns a list of all the values for the named field. Returns an - empty list if the key doesn't exist.""" - try: - vals = self._container[key.lower()] - except KeyError: - if default is self.__marker: - return [] - return default - else: - return vals[1:] - - # Backwards compatibility for httplib - getheaders = getlist - getallmatchingheaders = getlist - iget = getlist - - # Backwards compatibility for http.cookiejar - get_all = getlist - - def __repr__(self): - return "%s(%s)" % (type(self).__name__, dict(self.itermerged())) - - def _copy_from(self, other): - for key in other: - val = other.getlist(key) - if isinstance(val, list): - # Don't need to convert tuples - val = list(val) - self._container[key.lower()] = [key] + val - - def copy(self): - clone = type(self)() - clone._copy_from(self) - return clone - - def iteritems(self): - """Iterate over all header lines, including duplicate ones.""" - for key in self: - vals = self._container[key.lower()] - for val in vals[1:]: - yield vals[0], val - - def itermerged(self): - """Iterate over all headers, merging duplicate ones together.""" - for key in self: - val = self._container[key.lower()] - yield val[0], ', '.join(val[1:]) - - def items(self): - return list(self.iteritems()) - - @classmethod - def from_httplib(cls, message): # Python 2 - """Read headers from a Python 2 httplib message object.""" - # python2.7 does not expose a proper API for exporting multiheaders - # efficiently. This function re-reads raw lines from the message - # object and extracts the multiheaders properly. - obs_fold_continued_leaders = (' ', '\t') - headers = [] - - for line in message.headers: - if line.startswith(obs_fold_continued_leaders): - if not headers: - # We received a header line that starts with OWS as described - # in RFC-7230 S3.2.4. This indicates a multiline header, but - # there exists no previous header to which we can attach it. - raise InvalidHeader( - 'Header continuation with no previous header: %s' % line - ) - else: - key, value = headers[-1] - headers[-1] = (key, value + ' ' + line.strip()) - continue - - key, value = line.split(':', 1) - headers.append((key, value.strip())) - - return cls(headers) diff --git a/python/urllib3/connection.py b/python/urllib3/connection.py deleted file mode 100644 index 02b3665..0000000 --- a/python/urllib3/connection.py +++ /dev/null @@ -1,391 +0,0 @@ -from __future__ import absolute_import -import datetime -import logging -import os -import socket -from socket import error as SocketError, timeout as SocketTimeout -import warnings -from .packages import six -from .packages.six.moves.http_client import HTTPConnection as _HTTPConnection -from .packages.six.moves.http_client import HTTPException # noqa: F401 - -try: # Compiled with SSL? - import ssl - BaseSSLError = ssl.SSLError -except (ImportError, AttributeError): # Platform-specific: No SSL. - ssl = None - - class BaseSSLError(BaseException): - pass - - -try: # Python 3: - # Not a no-op, we're adding this to the namespace so it can be imported. - ConnectionError = ConnectionError -except NameError: # Python 2: - class ConnectionError(Exception): - pass - - -from .exceptions import ( - NewConnectionError, - ConnectTimeoutError, - SubjectAltNameWarning, - SystemTimeWarning, -) -from .packages.ssl_match_hostname import match_hostname, CertificateError - -from .util.ssl_ import ( - resolve_cert_reqs, - resolve_ssl_version, - assert_fingerprint, - create_urllib3_context, - ssl_wrap_socket -) - - -from .util import connection - -from ._collections import HTTPHeaderDict - -log = logging.getLogger(__name__) - -port_by_scheme = { - 'http': 80, - 'https': 443, -} - -# When updating RECENT_DATE, move it to within two years of the current date, -# and not less than 6 months ago. -# Example: if Today is 2018-01-01, then RECENT_DATE should be any date on or -# after 2016-01-01 (today - 2 years) AND before 2017-07-01 (today - 6 months) -RECENT_DATE = datetime.date(2017, 6, 30) - - -class DummyConnection(object): - """Used to detect a failed ConnectionCls import.""" - pass - - -class HTTPConnection(_HTTPConnection, object): - """ - Based on httplib.HTTPConnection but provides an extra constructor - backwards-compatibility layer between older and newer Pythons. - - Additional keyword parameters are used to configure attributes of the connection. - Accepted parameters include: - - - ``strict``: See the documentation on :class:`urllib3.connectionpool.HTTPConnectionPool` - - ``source_address``: Set the source address for the current connection. - - ``socket_options``: Set specific options on the underlying socket. If not specified, then - defaults are loaded from ``HTTPConnection.default_socket_options`` which includes disabling - Nagle's algorithm (sets TCP_NODELAY to 1) unless the connection is behind a proxy. - - For example, if you wish to enable TCP Keep Alive in addition to the defaults, - you might pass:: - - HTTPConnection.default_socket_options + [ - (socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1), - ] - - Or you may want to disable the defaults by passing an empty list (e.g., ``[]``). - """ - - default_port = port_by_scheme['http'] - - #: Disable Nagle's algorithm by default. - #: ``[(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)]`` - default_socket_options = [(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)] - - #: Whether this connection verifies the host's certificate. - is_verified = False - - def __init__(self, *args, **kw): - if six.PY3: # Python 3 - kw.pop('strict', None) - - # Pre-set source_address. - self.source_address = kw.get('source_address') - - #: The socket options provided by the user. If no options are - #: provided, we use the default options. - self.socket_options = kw.pop('socket_options', self.default_socket_options) - - _HTTPConnection.__init__(self, *args, **kw) - - @property - def host(self): - """ - Getter method to remove any trailing dots that indicate the hostname is an FQDN. - - In general, SSL certificates don't include the trailing dot indicating a - fully-qualified domain name, and thus, they don't validate properly when - checked against a domain name that includes the dot. In addition, some - servers may not expect to receive the trailing dot when provided. - - However, the hostname with trailing dot is critical to DNS resolution; doing a - lookup with the trailing dot will properly only resolve the appropriate FQDN, - whereas a lookup without a trailing dot will search the system's search domain - list. Thus, it's important to keep the original host around for use only in - those cases where it's appropriate (i.e., when doing DNS lookup to establish the - actual TCP connection across which we're going to send HTTP requests). - """ - return self._dns_host.rstrip('.') - - @host.setter - def host(self, value): - """ - Setter for the `host` property. - - We assume that only urllib3 uses the _dns_host attribute; httplib itself - only uses `host`, and it seems reasonable that other libraries follow suit. - """ - self._dns_host = value - - def _new_conn(self): - """ Establish a socket connection and set nodelay settings on it. - - :return: New socket connection. - """ - extra_kw = {} - if self.source_address: - extra_kw['source_address'] = self.source_address - - if self.socket_options: - extra_kw['socket_options'] = self.socket_options - - try: - conn = connection.create_connection( - (self._dns_host, self.port), self.timeout, **extra_kw) - - except SocketTimeout as e: - raise ConnectTimeoutError( - self, "Connection to %s timed out. (connect timeout=%s)" % - (self.host, self.timeout)) - - except SocketError as e: - raise NewConnectionError( - self, "Failed to establish a new connection: %s" % e) - - return conn - - def _prepare_conn(self, conn): - self.sock = conn - if self._tunnel_host: - # TODO: Fix tunnel so it doesn't depend on self.sock state. - self._tunnel() - # Mark this connection as not reusable - self.auto_open = 0 - - def connect(self): - conn = self._new_conn() - self._prepare_conn(conn) - - def request_chunked(self, method, url, body=None, headers=None): - """ - Alternative to the common request method, which sends the - body with chunked encoding and not as one block - """ - headers = HTTPHeaderDict(headers if headers is not None else {}) - skip_accept_encoding = 'accept-encoding' in headers - skip_host = 'host' in headers - self.putrequest( - method, - url, - skip_accept_encoding=skip_accept_encoding, - skip_host=skip_host - ) - for header, value in headers.items(): - self.putheader(header, value) - if 'transfer-encoding' not in headers: - self.putheader('Transfer-Encoding', 'chunked') - self.endheaders() - - if body is not None: - stringish_types = six.string_types + (bytes,) - if isinstance(body, stringish_types): - body = (body,) - for chunk in body: - if not chunk: - continue - if not isinstance(chunk, bytes): - chunk = chunk.encode('utf8') - len_str = hex(len(chunk))[2:] - self.send(len_str.encode('utf-8')) - self.send(b'\r\n') - self.send(chunk) - self.send(b'\r\n') - - # After the if clause, to always have a closed body - self.send(b'0\r\n\r\n') - - -class HTTPSConnection(HTTPConnection): - default_port = port_by_scheme['https'] - - ssl_version = None - - def __init__(self, host, port=None, key_file=None, cert_file=None, - strict=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT, - ssl_context=None, server_hostname=None, **kw): - - HTTPConnection.__init__(self, host, port, strict=strict, - timeout=timeout, **kw) - - self.key_file = key_file - self.cert_file = cert_file - self.ssl_context = ssl_context - self.server_hostname = server_hostname - - # Required property for Google AppEngine 1.9.0 which otherwise causes - # HTTPS requests to go out as HTTP. (See Issue #356) - self._protocol = 'https' - - def connect(self): - conn = self._new_conn() - self._prepare_conn(conn) - - if self.ssl_context is None: - self.ssl_context = create_urllib3_context( - ssl_version=resolve_ssl_version(None), - cert_reqs=resolve_cert_reqs(None), - ) - - self.sock = ssl_wrap_socket( - sock=conn, - keyfile=self.key_file, - certfile=self.cert_file, - ssl_context=self.ssl_context, - server_hostname=self.server_hostname - ) - - -class VerifiedHTTPSConnection(HTTPSConnection): - """ - Based on httplib.HTTPSConnection but wraps the socket with - SSL certification. - """ - cert_reqs = None - ca_certs = None - ca_cert_dir = None - ssl_version = None - assert_fingerprint = None - - def set_cert(self, key_file=None, cert_file=None, - cert_reqs=None, ca_certs=None, - assert_hostname=None, assert_fingerprint=None, - ca_cert_dir=None): - """ - This method should only be called once, before the connection is used. - """ - # If cert_reqs is not provided, we can try to guess. If the user gave - # us a cert database, we assume they want to use it: otherwise, if - # they gave us an SSL Context object we should use whatever is set for - # it. - if cert_reqs is None: - if ca_certs or ca_cert_dir: - cert_reqs = 'CERT_REQUIRED' - elif self.ssl_context is not None: - cert_reqs = self.ssl_context.verify_mode - - self.key_file = key_file - self.cert_file = cert_file - self.cert_reqs = cert_reqs - self.assert_hostname = assert_hostname - self.assert_fingerprint = assert_fingerprint - self.ca_certs = ca_certs and os.path.expanduser(ca_certs) - self.ca_cert_dir = ca_cert_dir and os.path.expanduser(ca_cert_dir) - - def connect(self): - # Add certificate verification - conn = self._new_conn() - hostname = self.host - - if self._tunnel_host: - self.sock = conn - # Calls self._set_hostport(), so self.host is - # self._tunnel_host below. - self._tunnel() - # Mark this connection as not reusable - self.auto_open = 0 - - # Override the host with the one we're requesting data from. - hostname = self._tunnel_host - - server_hostname = hostname - if self.server_hostname is not None: - server_hostname = self.server_hostname - - is_time_off = datetime.date.today() < RECENT_DATE - if is_time_off: - warnings.warn(( - 'System time is way off (before {0}). This will probably ' - 'lead to SSL verification errors').format(RECENT_DATE), - SystemTimeWarning - ) - - # Wrap socket using verification with the root certs in - # trusted_root_certs - if self.ssl_context is None: - self.ssl_context = create_urllib3_context( - ssl_version=resolve_ssl_version(self.ssl_version), - cert_reqs=resolve_cert_reqs(self.cert_reqs), - ) - - context = self.ssl_context - context.verify_mode = resolve_cert_reqs(self.cert_reqs) - self.sock = ssl_wrap_socket( - sock=conn, - keyfile=self.key_file, - certfile=self.cert_file, - ca_certs=self.ca_certs, - ca_cert_dir=self.ca_cert_dir, - server_hostname=server_hostname, - ssl_context=context) - - if self.assert_fingerprint: - assert_fingerprint(self.sock.getpeercert(binary_form=True), - self.assert_fingerprint) - elif context.verify_mode != ssl.CERT_NONE \ - and not getattr(context, 'check_hostname', False) \ - and self.assert_hostname is not False: - # While urllib3 attempts to always turn off hostname matching from - # the TLS library, this cannot always be done. So we check whether - # the TLS Library still thinks it's matching hostnames. - cert = self.sock.getpeercert() - if not cert.get('subjectAltName', ()): - warnings.warn(( - 'Certificate for {0} has no `subjectAltName`, falling back to check for a ' - '`commonName` for now. This feature is being removed by major browsers and ' - 'deprecated by RFC 2818. (See https://github.com/shazow/urllib3/issues/497 ' - 'for details.)'.format(hostname)), - SubjectAltNameWarning - ) - _match_hostname(cert, self.assert_hostname or server_hostname) - - self.is_verified = ( - context.verify_mode == ssl.CERT_REQUIRED or - self.assert_fingerprint is not None - ) - - -def _match_hostname(cert, asserted_hostname): - try: - match_hostname(cert, asserted_hostname) - except CertificateError as e: - log.error( - 'Certificate did not match expected hostname: %s. ' - 'Certificate: %s', asserted_hostname, cert - ) - # Add cert to exception and reraise so client code can inspect - # the cert when catching the exception, if they want to - e._peer_cert = cert - raise - - -if ssl: - # Make a copy for testing. - UnverifiedHTTPSConnection = HTTPSConnection - HTTPSConnection = VerifiedHTTPSConnection -else: - HTTPSConnection = DummyConnection diff --git a/python/urllib3/connectionpool.py b/python/urllib3/connectionpool.py deleted file mode 100644 index f7a8f19..0000000 --- a/python/urllib3/connectionpool.py +++ /dev/null @@ -1,896 +0,0 @@ -from __future__ import absolute_import -import errno -import logging -import sys -import warnings - -from socket import error as SocketError, timeout as SocketTimeout -import socket - - -from .exceptions import ( - ClosedPoolError, - ProtocolError, - EmptyPoolError, - HeaderParsingError, - HostChangedError, - LocationValueError, - MaxRetryError, - ProxyError, - ReadTimeoutError, - SSLError, - TimeoutError, - InsecureRequestWarning, - NewConnectionError, -) -from .packages.ssl_match_hostname import CertificateError -from .packages import six -from .packages.six.moves import queue -from .connection import ( - port_by_scheme, - DummyConnection, - HTTPConnection, HTTPSConnection, VerifiedHTTPSConnection, - HTTPException, BaseSSLError, -) -from .request import RequestMethods -from .response import HTTPResponse - -from .util.connection import is_connection_dropped -from .util.request import set_file_position -from .util.response import assert_header_parsing -from .util.retry import Retry -from .util.timeout import Timeout -from .util.url import get_host, Url, NORMALIZABLE_SCHEMES -from .util.queue import LifoQueue - - -xrange = six.moves.xrange - -log = logging.getLogger(__name__) - -_Default = object() - - -# Pool objects -class ConnectionPool(object): - """ - Base class for all connection pools, such as - :class:`.HTTPConnectionPool` and :class:`.HTTPSConnectionPool`. - """ - - scheme = None - QueueCls = LifoQueue - - def __init__(self, host, port=None): - if not host: - raise LocationValueError("No host specified.") - - self.host = _ipv6_host(host, self.scheme) - self._proxy_host = host.lower() - self.port = port - - def __str__(self): - return '%s(host=%r, port=%r)' % (type(self).__name__, - self.host, self.port) - - def __enter__(self): - return self - - def __exit__(self, exc_type, exc_val, exc_tb): - self.close() - # Return False to re-raise any potential exceptions - return False - - def close(self): - """ - Close all pooled connections and disable the pool. - """ - pass - - -# This is taken from http://hg.python.org/cpython/file/7aaba721ebc0/Lib/socket.py#l252 -_blocking_errnos = {errno.EAGAIN, errno.EWOULDBLOCK} - - -class HTTPConnectionPool(ConnectionPool, RequestMethods): - """ - Thread-safe connection pool for one host. - - :param host: - Host used for this HTTP Connection (e.g. "localhost"), passed into - :class:`httplib.HTTPConnection`. - - :param port: - Port used for this HTTP Connection (None is equivalent to 80), passed - into :class:`httplib.HTTPConnection`. - - :param strict: - Causes BadStatusLine to be raised if the status line can't be parsed - as a valid HTTP/1.0 or 1.1 status line, passed into - :class:`httplib.HTTPConnection`. - - .. note:: - Only works in Python 2. This parameter is ignored in Python 3. - - :param timeout: - Socket timeout in seconds for each individual connection. This can - be a float or integer, which sets the timeout for the HTTP request, - or an instance of :class:`urllib3.util.Timeout` which gives you more - fine-grained control over request timeouts. After the constructor has - been parsed, this is always a `urllib3.util.Timeout` object. - - :param maxsize: - Number of connections to save that can be reused. More than 1 is useful - in multithreaded situations. If ``block`` is set to False, more - connections will be created but they will not be saved once they've - been used. - - :param block: - If set to True, no more than ``maxsize`` connections will be used at - a time. When no free connections are available, the call will block - until a connection has been released. This is a useful side effect for - particular multithreaded situations where one does not want to use more - than maxsize connections per host to prevent flooding. - - :param headers: - Headers to include with all requests, unless other headers are given - explicitly. - - :param retries: - Retry configuration to use by default with requests in this pool. - - :param _proxy: - Parsed proxy URL, should not be used directly, instead, see - :class:`urllib3.connectionpool.ProxyManager`" - - :param _proxy_headers: - A dictionary with proxy headers, should not be used directly, - instead, see :class:`urllib3.connectionpool.ProxyManager`" - - :param \\**conn_kw: - Additional parameters are used to create fresh :class:`urllib3.connection.HTTPConnection`, - :class:`urllib3.connection.HTTPSConnection` instances. - """ - - scheme = 'http' - ConnectionCls = HTTPConnection - ResponseCls = HTTPResponse - - def __init__(self, host, port=None, strict=False, - timeout=Timeout.DEFAULT_TIMEOUT, maxsize=1, block=False, - headers=None, retries=None, - _proxy=None, _proxy_headers=None, - **conn_kw): - ConnectionPool.__init__(self, host, port) - RequestMethods.__init__(self, headers) - - self.strict = strict - - if not isinstance(timeout, Timeout): - timeout = Timeout.from_float(timeout) - - if retries is None: - retries = Retry.DEFAULT - - self.timeout = timeout - self.retries = retries - - self.pool = self.QueueCls(maxsize) - self.block = block - - self.proxy = _proxy - self.proxy_headers = _proxy_headers or {} - - # Fill the queue up so that doing get() on it will block properly - for _ in xrange(maxsize): - self.pool.put(None) - - # These are mostly for testing and debugging purposes. - self.num_connections = 0 - self.num_requests = 0 - self.conn_kw = conn_kw - - if self.proxy: - # Enable Nagle's algorithm for proxies, to avoid packet fragmentation. - # We cannot know if the user has added default socket options, so we cannot replace the - # list. - self.conn_kw.setdefault('socket_options', []) - - def _new_conn(self): - """ - Return a fresh :class:`HTTPConnection`. - """ - self.num_connections += 1 - log.debug("Starting new HTTP connection (%d): %s:%s", - self.num_connections, self.host, self.port or "80") - - conn = self.ConnectionCls(host=self.host, port=self.port, - timeout=self.timeout.connect_timeout, - strict=self.strict, **self.conn_kw) - return conn - - def _get_conn(self, timeout=None): - """ - Get a connection. Will return a pooled connection if one is available. - - If no connections are available and :prop:`.block` is ``False``, then a - fresh connection is returned. - - :param timeout: - Seconds to wait before giving up and raising - :class:`urllib3.exceptions.EmptyPoolError` if the pool is empty and - :prop:`.block` is ``True``. - """ - conn = None - try: - conn = self.pool.get(block=self.block, timeout=timeout) - - except AttributeError: # self.pool is None - raise ClosedPoolError(self, "Pool is closed.") - - except queue.Empty: - if self.block: - raise EmptyPoolError(self, - "Pool reached maximum size and no more " - "connections are allowed.") - pass # Oh well, we'll create a new connection then - - # If this is a persistent connection, check if it got disconnected - if conn and is_connection_dropped(conn): - log.debug("Resetting dropped connection: %s", self.host) - conn.close() - if getattr(conn, 'auto_open', 1) == 0: - # This is a proxied connection that has been mutated by - # httplib._tunnel() and cannot be reused (since it would - # attempt to bypass the proxy) - conn = None - - return conn or self._new_conn() - - def _put_conn(self, conn): - """ - Put a connection back into the pool. - - :param conn: - Connection object for the current host and port as returned by - :meth:`._new_conn` or :meth:`._get_conn`. - - If the pool is already full, the connection is closed and discarded - because we exceeded maxsize. If connections are discarded frequently, - then maxsize should be increased. - - If the pool is closed, then the connection will be closed and discarded. - """ - try: - self.pool.put(conn, block=False) - return # Everything is dandy, done. - except AttributeError: - # self.pool is None. - pass - except queue.Full: - # This should never happen if self.block == True - log.warning( - "Connection pool is full, discarding connection: %s", - self.host) - - # Connection never got put back into the pool, close it. - if conn: - conn.close() - - def _validate_conn(self, conn): - """ - Called right before a request is made, after the socket is created. - """ - pass - - def _prepare_proxy(self, conn): - # Nothing to do for HTTP connections. - pass - - def _get_timeout(self, timeout): - """ Helper that always returns a :class:`urllib3.util.Timeout` """ - if timeout is _Default: - return self.timeout.clone() - - if isinstance(timeout, Timeout): - return timeout.clone() - else: - # User passed us an int/float. This is for backwards compatibility, - # can be removed later - return Timeout.from_float(timeout) - - def _raise_timeout(self, err, url, timeout_value): - """Is the error actually a timeout? Will raise a ReadTimeout or pass""" - - if isinstance(err, SocketTimeout): - raise ReadTimeoutError(self, url, "Read timed out. (read timeout=%s)" % timeout_value) - - # See the above comment about EAGAIN in Python 3. In Python 2 we have - # to specifically catch it and throw the timeout error - if hasattr(err, 'errno') and err.errno in _blocking_errnos: - raise ReadTimeoutError(self, url, "Read timed out. (read timeout=%s)" % timeout_value) - - # Catch possible read timeouts thrown as SSL errors. If not the - # case, rethrow the original. We need to do this because of: - # http://bugs.python.org/issue10272 - if 'timed out' in str(err) or 'did not complete (read)' in str(err): # Python < 2.7.4 - raise ReadTimeoutError(self, url, "Read timed out. (read timeout=%s)" % timeout_value) - - def _make_request(self, conn, method, url, timeout=_Default, chunked=False, - **httplib_request_kw): - """ - Perform a request on a given urllib connection object taken from our - pool. - - :param conn: - a connection from one of our connection pools - - :param timeout: - Socket timeout in seconds for the request. This can be a - float or integer, which will set the same timeout value for - the socket connect and the socket read, or an instance of - :class:`urllib3.util.Timeout`, which gives you more fine-grained - control over your timeouts. - """ - self.num_requests += 1 - - timeout_obj = self._get_timeout(timeout) - timeout_obj.start_connect() - conn.timeout = timeout_obj.connect_timeout - - # Trigger any extra validation we need to do. - try: - self._validate_conn(conn) - except (SocketTimeout, BaseSSLError) as e: - # Py2 raises this as a BaseSSLError, Py3 raises it as socket timeout. - self._raise_timeout(err=e, url=url, timeout_value=conn.timeout) - raise - - # conn.request() calls httplib.*.request, not the method in - # urllib3.request. It also calls makefile (recv) on the socket. - if chunked: - conn.request_chunked(method, url, **httplib_request_kw) - else: - conn.request(method, url, **httplib_request_kw) - - # Reset the timeout for the recv() on the socket - read_timeout = timeout_obj.read_timeout - - # App Engine doesn't have a sock attr - if getattr(conn, 'sock', None): - # In Python 3 socket.py will catch EAGAIN and return None when you - # try and read into the file pointer created by http.client, which - # instead raises a BadStatusLine exception. Instead of catching - # the exception and assuming all BadStatusLine exceptions are read - # timeouts, check for a zero timeout before making the request. - if read_timeout == 0: - raise ReadTimeoutError( - self, url, "Read timed out. (read timeout=%s)" % read_timeout) - if read_timeout is Timeout.DEFAULT_TIMEOUT: - conn.sock.settimeout(socket.getdefaulttimeout()) - else: # None or a value - conn.sock.settimeout(read_timeout) - - # Receive the response from the server - try: - try: # Python 2.7, use buffering of HTTP responses - httplib_response = conn.getresponse(buffering=True) - except TypeError: # Python 3 - try: - httplib_response = conn.getresponse() - except Exception as e: - # Remove the TypeError from the exception chain in Python 3; - # otherwise it looks like a programming error was the cause. - six.raise_from(e, None) - except (SocketTimeout, BaseSSLError, SocketError) as e: - self._raise_timeout(err=e, url=url, timeout_value=read_timeout) - raise - - # AppEngine doesn't have a version attr. - http_version = getattr(conn, '_http_vsn_str', 'HTTP/?') - log.debug("%s://%s:%s \"%s %s %s\" %s %s", self.scheme, self.host, self.port, - method, url, http_version, httplib_response.status, - httplib_response.length) - - try: - assert_header_parsing(httplib_response.msg) - except (HeaderParsingError, TypeError) as hpe: # Platform-specific: Python 3 - log.warning( - 'Failed to parse headers (url=%s): %s', - self._absolute_url(url), hpe, exc_info=True) - - return httplib_response - - def _absolute_url(self, path): - return Url(scheme=self.scheme, host=self.host, port=self.port, path=path).url - - def close(self): - """ - Close all pooled connections and disable the pool. - """ - if self.pool is None: - return - # Disable access to the pool - old_pool, self.pool = self.pool, None - - try: - while True: - conn = old_pool.get(block=False) - if conn: - conn.close() - - except queue.Empty: - pass # Done. - - def is_same_host(self, url): - """ - Check if the given ``url`` is a member of the same host as this - connection pool. - """ - if url.startswith('/'): - return True - - # TODO: Add optional support for socket.gethostbyname checking. - scheme, host, port = get_host(url) - - host = _ipv6_host(host, self.scheme) - - # Use explicit default port for comparison when none is given - if self.port and not port: - port = port_by_scheme.get(scheme) - elif not self.port and port == port_by_scheme.get(scheme): - port = None - - return (scheme, host, port) == (self.scheme, self.host, self.port) - - def urlopen(self, method, url, body=None, headers=None, retries=None, - redirect=True, assert_same_host=True, timeout=_Default, - pool_timeout=None, release_conn=None, chunked=False, - body_pos=None, **response_kw): - """ - Get a connection from the pool and perform an HTTP request. This is the - lowest level call for making a request, so you'll need to specify all - the raw details. - - .. note:: - - More commonly, it's appropriate to use a convenience method provided - by :class:`.RequestMethods`, such as :meth:`request`. - - .. note:: - - `release_conn` will only behave as expected if - `preload_content=False` because we want to make - `preload_content=False` the default behaviour someday soon without - breaking backwards compatibility. - - :param method: - HTTP request method (such as GET, POST, PUT, etc.) - - :param body: - Data to send in the request body (useful for creating - POST requests, see HTTPConnectionPool.post_url for - more convenience). - - :param headers: - Dictionary of custom headers to send, such as User-Agent, - If-None-Match, etc. If None, pool headers are used. If provided, - these headers completely replace any pool-specific headers. - - :param retries: - Configure the number of retries to allow before raising a - :class:`~urllib3.exceptions.MaxRetryError` exception. - - Pass ``None`` to retry until you receive a response. Pass a - :class:`~urllib3.util.retry.Retry` object for fine-grained control - over different types of retries. - Pass an integer number to retry connection errors that many times, - but no other types of errors. Pass zero to never retry. - - If ``False``, then retries are disabled and any exception is raised - immediately. Also, instead of raising a MaxRetryError on redirects, - the redirect response will be returned. - - :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. - - :param redirect: - If True, automatically handle redirects (status codes 301, 302, - 303, 307, 308). Each redirect counts as a retry. Disabling retries - will disable redirect, too. - - :param assert_same_host: - If ``True``, will make sure that the host of the pool requests is - consistent else will raise HostChangedError. When False, you can - use the pool on an HTTP proxy and request foreign hosts. - - :param timeout: - If specified, overrides the default timeout for this one - request. It may be a float (in seconds) or an instance of - :class:`urllib3.util.Timeout`. - - :param pool_timeout: - If set and the pool is set to block=True, then this method will - block for ``pool_timeout`` seconds and raise EmptyPoolError if no - connection is available within the time period. - - :param release_conn: - If False, then the urlopen call will not release the connection - back into the pool once a response is received (but will release if - you read the entire contents of the response such as when - `preload_content=True`). This is useful if you're not preloading - the response's content immediately. You will need to call - ``r.release_conn()`` on the response ``r`` to return the connection - back into the pool. If None, it takes the value of - ``response_kw.get('preload_content', True)``. - - :param chunked: - If True, urllib3 will send the body using chunked transfer - encoding. Otherwise, urllib3 will send the body using the standard - content-length form. Defaults to False. - - :param int body_pos: - Position to seek to in file-like body in the event of a retry or - redirect. Typically this won't need to be set because urllib3 will - auto-populate the value when needed. - - :param \\**response_kw: - Additional parameters are passed to - :meth:`urllib3.response.HTTPResponse.from_httplib` - """ - if headers is None: - headers = self.headers - - if not isinstance(retries, Retry): - retries = Retry.from_int(retries, redirect=redirect, default=self.retries) - - if release_conn is None: - release_conn = response_kw.get('preload_content', True) - - # Check host - if assert_same_host and not self.is_same_host(url): - raise HostChangedError(self, url, retries) - - conn = None - - # Track whether `conn` needs to be released before - # returning/raising/recursing. Update this variable if necessary, and - # leave `release_conn` constant throughout the function. That way, if - # the function recurses, the original value of `release_conn` will be - # passed down into the recursive call, and its value will be respected. - # - # See issue #651 [1] for details. - # - # [1] <https://github.com/shazow/urllib3/issues/651> - release_this_conn = release_conn - - # Merge the proxy headers. Only do this in HTTP. We have to copy the - # headers dict so we can safely change it without those changes being - # reflected in anyone else's copy. - if self.scheme == 'http': - headers = headers.copy() - headers.update(self.proxy_headers) - - # Must keep the exception bound to a separate variable or else Python 3 - # complains about UnboundLocalError. - err = None - - # Keep track of whether we cleanly exited the except block. This - # ensures we do proper cleanup in finally. - clean_exit = False - - # Rewind body position, if needed. Record current position - # for future rewinds in the event of a redirect/retry. - body_pos = set_file_position(body, body_pos) - - try: - # Request a connection from the queue. - timeout_obj = self._get_timeout(timeout) - conn = self._get_conn(timeout=pool_timeout) - - conn.timeout = timeout_obj.connect_timeout - - is_new_proxy_conn = self.proxy is not None and not getattr(conn, 'sock', None) - if is_new_proxy_conn: - self._prepare_proxy(conn) - - # Make the request on the httplib connection object. - httplib_response = self._make_request(conn, method, url, - timeout=timeout_obj, - body=body, headers=headers, - chunked=chunked) - - # If we're going to release the connection in ``finally:``, then - # the response doesn't need to know about the connection. Otherwise - # it will also try to release it and we'll have a double-release - # mess. - response_conn = conn if not release_conn else None - - # Pass method to Response for length checking - response_kw['request_method'] = method - - # Import httplib's response into our own wrapper object - response = self.ResponseCls.from_httplib(httplib_response, - pool=self, - connection=response_conn, - retries=retries, - **response_kw) - - # Everything went great! - clean_exit = True - - except queue.Empty: - # Timed out by queue. - raise EmptyPoolError(self, "No pool connections are available.") - - except (TimeoutError, HTTPException, SocketError, ProtocolError, - BaseSSLError, SSLError, CertificateError) as e: - # Discard the connection for these exceptions. It will be - # replaced during the next _get_conn() call. - clean_exit = False - if isinstance(e, (BaseSSLError, CertificateError)): - e = SSLError(e) - elif isinstance(e, (SocketError, NewConnectionError)) and self.proxy: - e = ProxyError('Cannot connect to proxy.', e) - elif isinstance(e, (SocketError, HTTPException)): - e = ProtocolError('Connection aborted.', e) - - retries = retries.increment(method, url, error=e, _pool=self, - _stacktrace=sys.exc_info()[2]) - retries.sleep() - - # Keep track of the error for the retry warning. - err = e - - finally: - if not clean_exit: - # We hit some kind of exception, handled or otherwise. We need - # to throw the connection away unless explicitly told not to. - # Close the connection, set the variable to None, and make sure - # we put the None back in the pool to avoid leaking it. - conn = conn and conn.close() - release_this_conn = True - - if release_this_conn: - # Put the connection back to be reused. If the connection is - # expired then it will be None, which will get replaced with a - # fresh connection during _get_conn. - self._put_conn(conn) - - if not conn: - # Try again - log.warning("Retrying (%r) after connection " - "broken by '%r': %s", retries, err, url) - return self.urlopen(method, url, body, headers, retries, - redirect, assert_same_host, - timeout=timeout, pool_timeout=pool_timeout, - release_conn=release_conn, body_pos=body_pos, - **response_kw) - - def drain_and_release_conn(response): - try: - # discard any remaining response body, the connection will be - # released back to the pool once the entire response is read - response.read() - except (TimeoutError, HTTPException, SocketError, ProtocolError, - BaseSSLError, SSLError) as e: - pass - - # Handle redirect? - redirect_location = redirect and response.get_redirect_location() - if redirect_location: - if response.status == 303: - method = 'GET' - - try: - retries = retries.increment(method, url, response=response, _pool=self) - except MaxRetryError: - if retries.raise_on_redirect: - # Drain and release the connection for this response, since - # we're not returning it to be released manually. - drain_and_release_conn(response) - raise - return response - - # drain and return the connection to the pool before recursing - drain_and_release_conn(response) - - retries.sleep_for_retry(response) - log.debug("Redirecting %s -> %s", url, redirect_location) - return self.urlopen( - method, redirect_location, body, headers, - retries=retries, redirect=redirect, - assert_same_host=assert_same_host, - timeout=timeout, pool_timeout=pool_timeout, - release_conn=release_conn, body_pos=body_pos, - **response_kw) - - # Check if we should retry the HTTP response. - has_retry_after = bool(response.getheader('Retry-After')) - if retries.is_retry(method, response.status, has_retry_after): - try: - retries = retries.increment(method, url, response=response, _pool=self) - except MaxRetryError: - if retries.raise_on_status: - # Drain and release the connection for this response, since - # we're not returning it to be released manually. - drain_and_release_conn(response) - raise - return response - - # drain and return the connection to the pool before recursing - drain_and_release_conn(response) - - retries.sleep(response) - log.debug("Retry: %s", url) - return self.urlopen( - method, url, body, headers, - retries=retries, redirect=redirect, - assert_same_host=assert_same_host, - timeout=timeout, pool_timeout=pool_timeout, - release_conn=release_conn, - body_pos=body_pos, **response_kw) - - return response - - -class HTTPSConnectionPool(HTTPConnectionPool): - """ - Same as :class:`.HTTPConnectionPool`, but HTTPS. - - When Python is compiled with the :mod:`ssl` module, then - :class:`.VerifiedHTTPSConnection` is used, which *can* verify certificates, - instead of :class:`.HTTPSConnection`. - - :class:`.VerifiedHTTPSConnection` uses one of ``assert_fingerprint``, - ``assert_hostname`` and ``host`` in this order to verify connections. - If ``assert_hostname`` is False, no verification is done. - - The ``key_file``, ``cert_file``, ``cert_reqs``, ``ca_certs``, - ``ca_cert_dir``, and ``ssl_version`` are only used if :mod:`ssl` is - available and are fed into :meth:`urllib3.util.ssl_wrap_socket` to upgrade - the connection socket into an SSL socket. - """ - - scheme = 'https' - ConnectionCls = HTTPSConnection - - def __init__(self, host, port=None, - strict=False, timeout=Timeout.DEFAULT_TIMEOUT, maxsize=1, - block=False, headers=None, retries=None, - _proxy=None, _proxy_headers=None, - key_file=None, cert_file=None, cert_reqs=None, - ca_certs=None, ssl_version=None, - assert_hostname=None, assert_fingerprint=None, - ca_cert_dir=None, **conn_kw): - - HTTPConnectionPool.__init__(self, host, port, strict, timeout, maxsize, - block, headers, retries, _proxy, _proxy_headers, - **conn_kw) - - if ca_certs and cert_reqs is None: - cert_reqs = 'CERT_REQUIRED' - - self.key_file = key_file - self.cert_file = cert_file - self.cert_reqs = cert_reqs - self.ca_certs = ca_certs - self.ca_cert_dir = ca_cert_dir - self.ssl_version = ssl_version - self.assert_hostname = assert_hostname - self.assert_fingerprint = assert_fingerprint - - def _prepare_conn(self, conn): - """ - Prepare the ``connection`` for :meth:`urllib3.util.ssl_wrap_socket` - and establish the tunnel if proxy is used. - """ - - if isinstance(conn, VerifiedHTTPSConnection): - conn.set_cert(key_file=self.key_file, - cert_file=self.cert_file, - cert_reqs=self.cert_reqs, - ca_certs=self.ca_certs, - ca_cert_dir=self.ca_cert_dir, - assert_hostname=self.assert_hostname, - assert_fingerprint=self.assert_fingerprint) - conn.ssl_version = self.ssl_version - return conn - - def _prepare_proxy(self, conn): - """ - Establish tunnel connection early, because otherwise httplib - would improperly set Host: header to proxy's IP:port. - """ - conn.set_tunnel(self._proxy_host, self.port, self.proxy_headers) - conn.connect() - - def _new_conn(self): - """ - Return a fresh :class:`httplib.HTTPSConnection`. - """ - self.num_connections += 1 - log.debug("Starting new HTTPS connection (%d): %s:%s", - self.num_connections, self.host, self.port or "443") - - if not self.ConnectionCls or self.ConnectionCls is DummyConnection: - raise SSLError("Can't connect to HTTPS URL because the SSL " - "module is not available.") - - actual_host = self.host - actual_port = self.port - if self.proxy is not None: - actual_host = self.proxy.host - actual_port = self.proxy.port - - conn = self.ConnectionCls(host=actual_host, port=actual_port, - timeout=self.timeout.connect_timeout, - strict=self.strict, **self.conn_kw) - - return self._prepare_conn(conn) - - def _validate_conn(self, conn): - """ - Called right before a request is made, after the socket is created. - """ - super(HTTPSConnectionPool, self)._validate_conn(conn) - - # Force connect early to allow us to validate the connection. - if not getattr(conn, 'sock', None): # AppEngine might not have `.sock` - conn.connect() - - if not conn.is_verified: - warnings.warn(( - 'Unverified HTTPS request is being made. ' - 'Adding certificate verification is strongly advised. See: ' - 'https://urllib3.readthedocs.io/en/latest/advanced-usage.html' - '#ssl-warnings'), - InsecureRequestWarning) - - -def connection_from_url(url, **kw): - """ - Given a url, return an :class:`.ConnectionPool` instance of its host. - - This is a shortcut for not having to parse out the scheme, host, and port - of the url before creating an :class:`.ConnectionPool` instance. - - :param url: - Absolute URL string that must include the scheme. Port is optional. - - :param \\**kw: - Passes additional parameters to the constructor of the appropriate - :class:`.ConnectionPool`. Useful for specifying things like - timeout, maxsize, headers, etc. - - Example:: - - >>> conn = connection_from_url('http://google.com/') - >>> r = conn.request('GET', '/') - """ - scheme, host, port = get_host(url) - port = port or port_by_scheme.get(scheme, 80) - if scheme == 'https': - return HTTPSConnectionPool(host, port=port, **kw) - else: - return HTTPConnectionPool(host, port=port, **kw) - - -def _ipv6_host(host, scheme): - """ - Process IPv6 address literals - """ - - # httplib doesn't like it when we include brackets in IPv6 addresses - # Specifically, if we include brackets but also pass the port then - # httplib crazily doubles up the square brackets on the Host header. - # Instead, we need to make sure we never pass ``None`` as the port. - # However, for backward compatibility reasons we can't actually - # *assert* that. See http://bugs.python.org/issue28539 - # - # Also if an IPv6 address literal has a zone identifier, the - # percent sign might be URIencoded, convert it back into ASCII - if host.startswith('[') and host.endswith(']'): - host = host.replace('%25', '%').strip('[]') - if scheme in NORMALIZABLE_SCHEMES: - host = host.lower() - return host diff --git a/python/urllib3/contrib/__init__.py b/python/urllib3/contrib/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/python/urllib3/contrib/_appengine_environ.py b/python/urllib3/contrib/_appengine_environ.py deleted file mode 100644 index f3e0094..0000000 --- a/python/urllib3/contrib/_appengine_environ.py +++ /dev/null @@ -1,30 +0,0 @@ -""" -This module provides means to detect the App Engine environment. -""" - -import os - - -def is_appengine(): - return (is_local_appengine() or - is_prod_appengine() or - is_prod_appengine_mvms()) - - -def is_appengine_sandbox(): - return is_appengine() and not is_prod_appengine_mvms() - - -def is_local_appengine(): - return ('APPENGINE_RUNTIME' in os.environ and - 'Development/' in os.environ['SERVER_SOFTWARE']) - - -def is_prod_appengine(): - return ('APPENGINE_RUNTIME' in os.environ and - 'Google App Engine/' in os.environ['SERVER_SOFTWARE'] and - not is_prod_appengine_mvms()) - - -def is_prod_appengine_mvms(): - return os.environ.get('GAE_VM', False) == 'true' diff --git a/python/urllib3/contrib/_securetransport/__init__.py b/python/urllib3/contrib/_securetransport/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/python/urllib3/contrib/_securetransport/bindings.py b/python/urllib3/contrib/_securetransport/bindings.py deleted file mode 100644 index bcf41c0..0000000 --- a/python/urllib3/contrib/_securetransport/bindings.py +++ /dev/null @@ -1,593 +0,0 @@ -""" -This module uses ctypes to bind a whole bunch of functions and constants from -SecureTransport. The goal here is to provide the low-level API to -SecureTransport. These are essentially the C-level functions and constants, and -they're pretty gross to work with. - -This code is a bastardised version of the code found in Will Bond's oscrypto -library. An enormous debt is owed to him for blazing this trail for us. For -that reason, this code should be considered to be covered both by urllib3's -license and by oscrypto's: - - Copyright (c) 2015-2016 Will Bond <will@wbond.net> - - Permission is hereby granted, free of charge, to any person obtaining a - copy of this software and associated documentation files (the "Software"), - to deal in the Software without restriction, including without limitation - the rights to use, copy, modify, merge, publish, distribute, sublicense, - and/or sell copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. -""" -from __future__ import absolute_import - -import platform -from ctypes.util import find_library -from ctypes import ( - c_void_p, c_int32, c_char_p, c_size_t, c_byte, c_uint32, c_ulong, c_long, - c_bool -) -from ctypes import CDLL, POINTER, CFUNCTYPE - - -security_path = find_library('Security') -if not security_path: - raise ImportError('The library Security could not be found') - - -core_foundation_path = find_library('CoreFoundation') -if not core_foundation_path: - raise ImportError('The library CoreFoundation could not be found') - - -version = platform.mac_ver()[0] -version_info = tuple(map(int, version.split('.'))) -if version_info < (10, 8): - raise OSError( - 'Only OS X 10.8 and newer are supported, not %s.%s' % ( - version_info[0], version_info[1] - ) - ) - -Security = CDLL(security_path, use_errno=True) -CoreFoundation = CDLL(core_foundation_path, use_errno=True) - -Boolean = c_bool -CFIndex = c_long -CFStringEncoding = c_uint32 -CFData = c_void_p -CFString = c_void_p -CFArray = c_void_p -CFMutableArray = c_void_p -CFDictionary = c_void_p -CFError = c_void_p -CFType = c_void_p -CFTypeID = c_ulong - -CFTypeRef = POINTER(CFType) -CFAllocatorRef = c_void_p - -OSStatus = c_int32 - -CFDataRef = POINTER(CFData) -CFStringRef = POINTER(CFString) -CFArrayRef = POINTER(CFArray) -CFMutableArrayRef = POINTER(CFMutableArray) -CFDictionaryRef = POINTER(CFDictionary) -CFArrayCallBacks = c_void_p -CFDictionaryKeyCallBacks = c_void_p -CFDictionaryValueCallBacks = c_void_p - -SecCertificateRef = POINTER(c_void_p) -SecExternalFormat = c_uint32 -SecExternalItemType = c_uint32 -SecIdentityRef = POINTER(c_void_p) -SecItemImportExportFlags = c_uint32 -SecItemImportExportKeyParameters = c_void_p -SecKeychainRef = POINTER(c_void_p) -SSLProtocol = c_uint32 -SSLCipherSuite = c_uint32 -SSLContextRef = POINTER(c_void_p) -SecTrustRef = POINTER(c_void_p) -SSLConnectionRef = c_uint32 -SecTrustResultType = c_uint32 -SecTrustOptionFlags = c_uint32 -SSLProtocolSide = c_uint32 -SSLConnectionType = c_uint32 -SSLSessionOption = c_uint32 - - -try: - Security.SecItemImport.argtypes = [ - CFDataRef, - CFStringRef, - POINTER(SecExternalFormat), - POINTER(SecExternalItemType), - SecItemImportExportFlags, - POINTER(SecItemImportExportKeyParameters), - SecKeychainRef, - POINTER(CFArrayRef), - ] - Security.SecItemImport.restype = OSStatus - - Security.SecCertificateGetTypeID.argtypes = [] - Security.SecCertificateGetTypeID.restype = CFTypeID - - Security.SecIdentityGetTypeID.argtypes = [] - Security.SecIdentityGetTypeID.restype = CFTypeID - - Security.SecKeyGetTypeID.argtypes = [] - Security.SecKeyGetTypeID.restype = CFTypeID - - Security.SecCertificateCreateWithData.argtypes = [ - CFAllocatorRef, - CFDataRef - ] - Security.SecCertificateCreateWithData.restype = SecCertificateRef - - Security.SecCertificateCopyData.argtypes = [ - SecCertificateRef - ] - Security.SecCertificateCopyData.restype = CFDataRef - - Security.SecCopyErrorMessageString.argtypes = [ - OSStatus, - c_void_p - ] - Security.SecCopyErrorMessageString.restype = CFStringRef - - Security.SecIdentityCreateWithCertificate.argtypes = [ - CFTypeRef, - SecCertificateRef, - POINTER(SecIdentityRef) - ] - Security.SecIdentityCreateWithCertificate.restype = OSStatus - - Security.SecKeychainCreate.argtypes = [ - c_char_p, - c_uint32, - c_void_p, - Boolean, - c_void_p, - POINTER(SecKeychainRef) - ] - Security.SecKeychainCreate.restype = OSStatus - - Security.SecKeychainDelete.argtypes = [ - SecKeychainRef - ] - Security.SecKeychainDelete.restype = OSStatus - - Security.SecPKCS12Import.argtypes = [ - CFDataRef, - CFDictionaryRef, - POINTER(CFArrayRef) - ] - Security.SecPKCS12Import.restype = OSStatus - - SSLReadFunc = CFUNCTYPE(OSStatus, SSLConnectionRef, c_void_p, POINTER(c_size_t)) - SSLWriteFunc = CFUNCTYPE(OSStatus, SSLConnectionRef, POINTER(c_byte), POINTER(c_size_t)) - - Security.SSLSetIOFuncs.argtypes = [ - SSLContextRef, - SSLReadFunc, - SSLWriteFunc - ] - Security.SSLSetIOFuncs.restype = OSStatus - - Security.SSLSetPeerID.argtypes = [ - SSLContextRef, - c_char_p, - c_size_t - ] - Security.SSLSetPeerID.restype = OSStatus - - Security.SSLSetCertificate.argtypes = [ - SSLContextRef, - CFArrayRef - ] - Security.SSLSetCertificate.restype = OSStatus - - Security.SSLSetCertificateAuthorities.argtypes = [ - SSLContextRef, - CFTypeRef, - Boolean - ] - Security.SSLSetCertificateAuthorities.restype = OSStatus - - Security.SSLSetConnection.argtypes = [ - SSLContextRef, - SSLConnectionRef - ] - Security.SSLSetConnection.restype = OSStatus - - Security.SSLSetPeerDomainName.argtypes = [ - SSLContextRef, - c_char_p, - c_size_t - ] - Security.SSLSetPeerDomainName.restype = OSStatus - - Security.SSLHandshake.argtypes = [ - SSLContextRef - ] - Security.SSLHandshake.restype = OSStatus - - Security.SSLRead.argtypes = [ - SSLContextRef, - c_char_p, - c_size_t, - POINTER(c_size_t) - ] - Security.SSLRead.restype = OSStatus - - Security.SSLWrite.argtypes = [ - SSLContextRef, - c_char_p, - c_size_t, - POINTER(c_size_t) - ] - Security.SSLWrite.restype = OSStatus - - Security.SSLClose.argtypes = [ - SSLContextRef - ] - Security.SSLClose.restype = OSStatus - - Security.SSLGetNumberSupportedCiphers.argtypes = [ - SSLContextRef, - POINTER(c_size_t) - ] - Security.SSLGetNumberSupportedCiphers.restype = OSStatus - - Security.SSLGetSupportedCiphers.argtypes = [ - SSLContextRef, - POINTER(SSLCipherSuite), - POINTER(c_size_t) - ] - Security.SSLGetSupportedCiphers.restype = OSStatus - - Security.SSLSetEnabledCiphers.argtypes = [ - SSLContextRef, - POINTER(SSLCipherSuite), - c_size_t - ] - Security.SSLSetEnabledCiphers.restype = OSStatus - - Security.SSLGetNumberEnabledCiphers.argtype = [ - SSLContextRef, - POINTER(c_size_t) - ] - Security.SSLGetNumberEnabledCiphers.restype = OSStatus - - Security.SSLGetEnabledCiphers.argtypes = [ - SSLContextRef, - POINTER(SSLCipherSuite), - POINTER(c_size_t) - ] - Security.SSLGetEnabledCiphers.restype = OSStatus - - Security.SSLGetNegotiatedCipher.argtypes = [ - SSLContextRef, - POINTER(SSLCipherSuite) - ] - Security.SSLGetNegotiatedCipher.restype = OSStatus - - Security.SSLGetNegotiatedProtocolVersion.argtypes = [ - SSLContextRef, - POINTER(SSLProtocol) - ] - Security.SSLGetNegotiatedProtocolVersion.restype = OSStatus - - Security.SSLCopyPeerTrust.argtypes = [ - SSLContextRef, - POINTER(SecTrustRef) - ] - Security.SSLCopyPeerTrust.restype = OSStatus - - Security.SecTrustSetAnchorCertificates.argtypes = [ - SecTrustRef, - CFArrayRef - ] - Security.SecTrustSetAnchorCertificates.restype = OSStatus - - Security.SecTrustSetAnchorCertificatesOnly.argstypes = [ - SecTrustRef, - Boolean - ] - Security.SecTrustSetAnchorCertificatesOnly.restype = OSStatus - - Security.SecTrustEvaluate.argtypes = [ - SecTrustRef, - POINTER(SecTrustResultType) - ] - Security.SecTrustEvaluate.restype = OSStatus - - Security.SecTrustGetCertificateCount.argtypes = [ - SecTrustRef - ] - Security.SecTrustGetCertificateCount.restype = CFIndex - - Security.SecTrustGetCertificateAtIndex.argtypes = [ - SecTrustRef, - CFIndex - ] - Security.SecTrustGetCertificateAtIndex.restype = SecCertificateRef - - Security.SSLCreateContext.argtypes = [ - CFAllocatorRef, - SSLProtocolSide, - SSLConnectionType - ] - Security.SSLCreateContext.restype = SSLContextRef - - Security.SSLSetSessionOption.argtypes = [ - SSLContextRef, - SSLSessionOption, - Boolean - ] - Security.SSLSetSessionOption.restype = OSStatus - - Security.SSLSetProtocolVersionMin.argtypes = [ - SSLContextRef, - SSLProtocol - ] - Security.SSLSetProtocolVersionMin.restype = OSStatus - - Security.SSLSetProtocolVersionMax.argtypes = [ - SSLContextRef, - SSLProtocol - ] - Security.SSLSetProtocolVersionMax.restype = OSStatus - - Security.SecCopyErrorMessageString.argtypes = [ - OSStatus, - c_void_p - ] - Security.SecCopyErrorMessageString.restype = CFStringRef - - Security.SSLReadFunc = SSLReadFunc - Security.SSLWriteFunc = SSLWriteFunc - Security.SSLContextRef = SSLContextRef - Security.SSLProtocol = SSLProtocol - Security.SSLCipherSuite = SSLCipherSuite - Security.SecIdentityRef = SecIdentityRef - Security.SecKeychainRef = SecKeychainRef - Security.SecTrustRef = SecTrustRef - Security.SecTrustResultType = SecTrustResultType - Security.SecExternalFormat = SecExternalFormat - Security.OSStatus = OSStatus - - Security.kSecImportExportPassphrase = CFStringRef.in_dll( - Security, 'kSecImportExportPassphrase' - ) - Security.kSecImportItemIdentity = CFStringRef.in_dll( - Security, 'kSecImportItemIdentity' - ) - - # CoreFoundation time! - CoreFoundation.CFRetain.argtypes = [ - CFTypeRef - ] - CoreFoundation.CFRetain.restype = CFTypeRef - - CoreFoundation.CFRelease.argtypes = [ - CFTypeRef - ] - CoreFoundation.CFRelease.restype = None - - CoreFoundation.CFGetTypeID.argtypes = [ - CFTypeRef - ] - CoreFoundation.CFGetTypeID.restype = CFTypeID - - CoreFoundation.CFStringCreateWithCString.argtypes = [ - CFAllocatorRef, - c_char_p, - CFStringEncoding - ] - CoreFoundation.CFStringCreateWithCString.restype = CFStringRef - - CoreFoundation.CFStringGetCStringPtr.argtypes = [ - CFStringRef, - CFStringEncoding - ] - CoreFoundation.CFStringGetCStringPtr.restype = c_char_p - - CoreFoundation.CFStringGetCString.argtypes = [ - CFStringRef, - c_char_p, - CFIndex, - CFStringEncoding - ] - CoreFoundation.CFStringGetCString.restype = c_bool - - CoreFoundation.CFDataCreate.argtypes = [ - CFAllocatorRef, - c_char_p, - CFIndex - ] - CoreFoundation.CFDataCreate.restype = CFDataRef - - CoreFoundation.CFDataGetLength.argtypes = [ - CFDataRef - ] - CoreFoundation.CFDataGetLength.restype = CFIndex - - CoreFoundation.CFDataGetBytePtr.argtypes = [ - CFDataRef - ] - CoreFoundation.CFDataGetBytePtr.restype = c_void_p - - CoreFoundation.CFDictionaryCreate.argtypes = [ - CFAllocatorRef, - POINTER(CFTypeRef), - POINTER(CFTypeRef), - CFIndex, - CFDictionaryKeyCallBacks, - CFDictionaryValueCallBacks - ] - CoreFoundation.CFDictionaryCreate.restype = CFDictionaryRef - - CoreFoundation.CFDictionaryGetValue.argtypes = [ - CFDictionaryRef, - CFTypeRef - ] - CoreFoundation.CFDictionaryGetValue.restype = CFTypeRef - - CoreFoundation.CFArrayCreate.argtypes = [ - CFAllocatorRef, - POINTER(CFTypeRef), - CFIndex, - CFArrayCallBacks, - ] - CoreFoundation.CFArrayCreate.restype = CFArrayRef - - CoreFoundation.CFArrayCreateMutable.argtypes = [ - CFAllocatorRef, - CFIndex, - CFArrayCallBacks - ] - CoreFoundation.CFArrayCreateMutable.restype = CFMutableArrayRef - - CoreFoundation.CFArrayAppendValue.argtypes = [ - CFMutableArrayRef, - c_void_p - ] - CoreFoundation.CFArrayAppendValue.restype = None - - CoreFoundation.CFArrayGetCount.argtypes = [ - CFArrayRef - ] - CoreFoundation.CFArrayGetCount.restype = CFIndex - - CoreFoundation.CFArrayGetValueAtIndex.argtypes = [ - CFArrayRef, - CFIndex - ] - CoreFoundation.CFArrayGetValueAtIndex.restype = c_void_p - - CoreFoundation.kCFAllocatorDefault = CFAllocatorRef.in_dll( - CoreFoundation, 'kCFAllocatorDefault' - ) - CoreFoundation.kCFTypeArrayCallBacks = c_void_p.in_dll(CoreFoundation, 'kCFTypeArrayCallBacks') - CoreFoundation.kCFTypeDictionaryKeyCallBacks = c_void_p.in_dll( - CoreFoundation, 'kCFTypeDictionaryKeyCallBacks' - ) - CoreFoundation.kCFTypeDictionaryValueCallBacks = c_void_p.in_dll( - CoreFoundation, 'kCFTypeDictionaryValueCallBacks' - ) - - CoreFoundation.CFTypeRef = CFTypeRef - CoreFoundation.CFArrayRef = CFArrayRef - CoreFoundation.CFStringRef = CFStringRef - CoreFoundation.CFDictionaryRef = CFDictionaryRef - -except (AttributeError): - raise ImportError('Error initializing ctypes') - - -class CFConst(object): - """ - A class object that acts as essentially a namespace for CoreFoundation - constants. - """ - kCFStringEncodingUTF8 = CFStringEncoding(0x08000100) - - -class SecurityConst(object): - """ - A class object that acts as essentially a namespace for Security constants. - """ - kSSLSessionOptionBreakOnServerAuth = 0 - - kSSLProtocol2 = 1 - kSSLProtocol3 = 2 - kTLSProtocol1 = 4 - kTLSProtocol11 = 7 - kTLSProtocol12 = 8 - - kSSLClientSide = 1 - kSSLStreamType = 0 - - kSecFormatPEMSequence = 10 - - kSecTrustResultInvalid = 0 - kSecTrustResultProceed = 1 - # This gap is present on purpose: this was kSecTrustResultConfirm, which - # is deprecated. - kSecTrustResultDeny = 3 - kSecTrustResultUnspecified = 4 - kSecTrustResultRecoverableTrustFailure = 5 - kSecTrustResultFatalTrustFailure = 6 - kSecTrustResultOtherError = 7 - - errSSLProtocol = -9800 - errSSLWouldBlock = -9803 - errSSLClosedGraceful = -9805 - errSSLClosedNoNotify = -9816 - errSSLClosedAbort = -9806 - - errSSLXCertChainInvalid = -9807 - errSSLCrypto = -9809 - errSSLInternal = -9810 - errSSLCertExpired = -9814 - errSSLCertNotYetValid = -9815 - errSSLUnknownRootCert = -9812 - errSSLNoRootCert = -9813 - errSSLHostNameMismatch = -9843 - errSSLPeerHandshakeFail = -9824 - errSSLPeerUserCancelled = -9839 - errSSLWeakPeerEphemeralDHKey = -9850 - errSSLServerAuthCompleted = -9841 - errSSLRecordOverflow = -9847 - - errSecVerifyFailed = -67808 - errSecNoTrustSettings = -25263 - errSecItemNotFound = -25300 - errSecInvalidTrustSettings = -25262 - - # Cipher suites. We only pick the ones our default cipher string allows. - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 = 0xC02C - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 = 0xC030 - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 = 0xC02B - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 = 0xC02F - TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 = 0x00A3 - TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 = 0x009F - TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 = 0x00A2 - TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 = 0x009E - TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 = 0xC024 - TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 = 0xC028 - TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA = 0xC00A - TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA = 0xC014 - TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 = 0x006B - TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 = 0x006A - TLS_DHE_RSA_WITH_AES_256_CBC_SHA = 0x0039 - TLS_DHE_DSS_WITH_AES_256_CBC_SHA = 0x0038 - TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 = 0xC023 - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 = 0xC027 - TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA = 0xC009 - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA = 0xC013 - TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 = 0x0067 - TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 = 0x0040 - TLS_DHE_RSA_WITH_AES_128_CBC_SHA = 0x0033 - TLS_DHE_DSS_WITH_AES_128_CBC_SHA = 0x0032 - TLS_RSA_WITH_AES_256_GCM_SHA384 = 0x009D - TLS_RSA_WITH_AES_128_GCM_SHA256 = 0x009C - TLS_RSA_WITH_AES_256_CBC_SHA256 = 0x003D - TLS_RSA_WITH_AES_128_CBC_SHA256 = 0x003C - TLS_RSA_WITH_AES_256_CBC_SHA = 0x0035 - TLS_RSA_WITH_AES_128_CBC_SHA = 0x002F - TLS_AES_128_GCM_SHA256 = 0x1301 - TLS_AES_256_GCM_SHA384 = 0x1302 - TLS_CHACHA20_POLY1305_SHA256 = 0x1303 diff --git a/python/urllib3/contrib/_securetransport/low_level.py b/python/urllib3/contrib/_securetransport/low_level.py deleted file mode 100644 index b13cd9e..0000000 --- a/python/urllib3/contrib/_securetransport/low_level.py +++ /dev/null @@ -1,346 +0,0 @@ -""" -Low-level helpers for the SecureTransport bindings. - -These are Python functions that are not directly related to the high-level APIs -but are necessary to get them to work. They include a whole bunch of low-level -CoreFoundation messing about and memory management. The concerns in this module -are almost entirely about trying to avoid memory leaks and providing -appropriate and useful assistance to the higher-level code. -""" -import base64 -import ctypes -import itertools -import re -import os -import ssl -import tempfile - -from .bindings import Security, CoreFoundation, CFConst - - -# This regular expression is used to grab PEM data out of a PEM bundle. -_PEM_CERTS_RE = re.compile( - b"-----BEGIN CERTIFICATE-----\n(.*?)\n-----END CERTIFICATE-----", re.DOTALL -) - - -def _cf_data_from_bytes(bytestring): - """ - Given a bytestring, create a CFData object from it. This CFData object must - be CFReleased by the caller. - """ - return CoreFoundation.CFDataCreate( - CoreFoundation.kCFAllocatorDefault, bytestring, len(bytestring) - ) - - -def _cf_dictionary_from_tuples(tuples): - """ - Given a list of Python tuples, create an associated CFDictionary. - """ - dictionary_size = len(tuples) - - # We need to get the dictionary keys and values out in the same order. - keys = (t[0] for t in tuples) - values = (t[1] for t in tuples) - cf_keys = (CoreFoundation.CFTypeRef * dictionary_size)(*keys) - cf_values = (CoreFoundation.CFTypeRef * dictionary_size)(*values) - - return CoreFoundation.CFDictionaryCreate( - CoreFoundation.kCFAllocatorDefault, - cf_keys, - cf_values, - dictionary_size, - CoreFoundation.kCFTypeDictionaryKeyCallBacks, - CoreFoundation.kCFTypeDictionaryValueCallBacks, - ) - - -def _cf_string_to_unicode(value): - """ - Creates a Unicode string from a CFString object. Used entirely for error - reporting. - - Yes, it annoys me quite a lot that this function is this complex. - """ - value_as_void_p = ctypes.cast(value, ctypes.POINTER(ctypes.c_void_p)) - - string = CoreFoundation.CFStringGetCStringPtr( - value_as_void_p, - CFConst.kCFStringEncodingUTF8 - ) - if string is None: - buffer = ctypes.create_string_buffer(1024) - result = CoreFoundation.CFStringGetCString( - value_as_void_p, - buffer, - 1024, - CFConst.kCFStringEncodingUTF8 - ) - if not result: - raise OSError('Error copying C string from CFStringRef') - string = buffer.value - if string is not None: - string = string.decode('utf-8') - return string - - -def _assert_no_error(error, exception_class=None): - """ - Checks the return code and throws an exception if there is an error to - report - """ - if error == 0: - return - - cf_error_string = Security.SecCopyErrorMessageString(error, None) - output = _cf_string_to_unicode(cf_error_string) - CoreFoundation.CFRelease(cf_error_string) - - if output is None or output == u'': - output = u'OSStatus %s' % error - - if exception_class is None: - exception_class = ssl.SSLError - - raise exception_class(output) - - -def _cert_array_from_pem(pem_bundle): - """ - Given a bundle of certs in PEM format, turns them into a CFArray of certs - that can be used to validate a cert chain. - """ - # Normalize the PEM bundle's line endings. - pem_bundle = pem_bundle.replace(b"\r\n", b"\n") - - der_certs = [ - base64.b64decode(match.group(1)) - for match in _PEM_CERTS_RE.finditer(pem_bundle) - ] - if not der_certs: - raise ssl.SSLError("No root certificates specified") - - cert_array = CoreFoundation.CFArrayCreateMutable( - CoreFoundation.kCFAllocatorDefault, - 0, - ctypes.byref(CoreFoundation.kCFTypeArrayCallBacks) - ) - if not cert_array: - raise ssl.SSLError("Unable to allocate memory!") - - try: - for der_bytes in der_certs: - certdata = _cf_data_from_bytes(der_bytes) - if not certdata: - raise ssl.SSLError("Unable to allocate memory!") - cert = Security.SecCertificateCreateWithData( - CoreFoundation.kCFAllocatorDefault, certdata - ) - CoreFoundation.CFRelease(certdata) - if not cert: - raise ssl.SSLError("Unable to build cert object!") - - CoreFoundation.CFArrayAppendValue(cert_array, cert) - CoreFoundation.CFRelease(cert) - except Exception: - # We need to free the array before the exception bubbles further. - # We only want to do that if an error occurs: otherwise, the caller - # should free. - CoreFoundation.CFRelease(cert_array) - - return cert_array - - -def _is_cert(item): - """ - Returns True if a given CFTypeRef is a certificate. - """ - expected = Security.SecCertificateGetTypeID() - return CoreFoundation.CFGetTypeID(item) == expected - - -def _is_identity(item): - """ - Returns True if a given CFTypeRef is an identity. - """ - expected = Security.SecIdentityGetTypeID() - return CoreFoundation.CFGetTypeID(item) == expected - - -def _temporary_keychain(): - """ - This function creates a temporary Mac keychain that we can use to work with - credentials. This keychain uses a one-time password and a temporary file to - store the data. We expect to have one keychain per socket. The returned - SecKeychainRef must be freed by the caller, including calling - SecKeychainDelete. - - Returns a tuple of the SecKeychainRef and the path to the temporary - directory that contains it. - """ - # Unfortunately, SecKeychainCreate requires a path to a keychain. This - # means we cannot use mkstemp to use a generic temporary file. Instead, - # we're going to create a temporary directory and a filename to use there. - # This filename will be 8 random bytes expanded into base64. We also need - # some random bytes to password-protect the keychain we're creating, so we - # ask for 40 random bytes. - random_bytes = os.urandom(40) - filename = base64.b16encode(random_bytes[:8]).decode('utf-8') - password = base64.b16encode(random_bytes[8:]) # Must be valid UTF-8 - tempdirectory = tempfile.mkdtemp() - - keychain_path = os.path.join(tempdirectory, filename).encode('utf-8') - - # We now want to create the keychain itself. - keychain = Security.SecKeychainRef() - status = Security.SecKeychainCreate( - keychain_path, - len(password), - password, - False, - None, - ctypes.byref(keychain) - ) - _assert_no_error(status) - - # Having created the keychain, we want to pass it off to the caller. - return keychain, tempdirectory - - -def _load_items_from_file(keychain, path): - """ - Given a single file, loads all the trust objects from it into arrays and - the keychain. - Returns a tuple of lists: the first list is a list of identities, the - second a list of certs. - """ - certificates = [] - identities = [] - result_array = None - - with open(path, 'rb') as f: - raw_filedata = f.read() - - try: - filedata = CoreFoundation.CFDataCreate( - CoreFoundation.kCFAllocatorDefault, - raw_filedata, - len(raw_filedata) - ) - result_array = CoreFoundation.CFArrayRef() - result = Security.SecItemImport( - filedata, # cert data - None, # Filename, leaving it out for now - None, # What the type of the file is, we don't care - None, # what's in the file, we don't care - 0, # import flags - None, # key params, can include passphrase in the future - keychain, # The keychain to insert into - ctypes.byref(result_array) # Results - ) - _assert_no_error(result) - - # A CFArray is not very useful to us as an intermediary - # representation, so we are going to extract the objects we want - # and then free the array. We don't need to keep hold of keys: the - # keychain already has them! - result_count = CoreFoundation.CFArrayGetCount(result_array) - for index in range(result_count): - item = CoreFoundation.CFArrayGetValueAtIndex( - result_array, index - ) - item = ctypes.cast(item, CoreFoundation.CFTypeRef) - - if _is_cert(item): - CoreFoundation.CFRetain(item) - certificates.append(item) - elif _is_identity(item): - CoreFoundation.CFRetain(item) - identities.append(item) - finally: - if result_array: - CoreFoundation.CFRelease(result_array) - - CoreFoundation.CFRelease(filedata) - - return (identities, certificates) - - -def _load_client_cert_chain(keychain, *paths): - """ - Load certificates and maybe keys from a number of files. Has the end goal - of returning a CFArray containing one SecIdentityRef, and then zero or more - SecCertificateRef objects, suitable for use as a client certificate trust - chain. - """ - # Ok, the strategy. - # - # This relies on knowing that macOS will not give you a SecIdentityRef - # unless you have imported a key into a keychain. This is a somewhat - # artificial limitation of macOS (for example, it doesn't necessarily - # affect iOS), but there is nothing inside Security.framework that lets you - # get a SecIdentityRef without having a key in a keychain. - # - # So the policy here is we take all the files and iterate them in order. - # Each one will use SecItemImport to have one or more objects loaded from - # it. We will also point at a keychain that macOS can use to work with the - # private key. - # - # Once we have all the objects, we'll check what we actually have. If we - # already have a SecIdentityRef in hand, fab: we'll use that. Otherwise, - # we'll take the first certificate (which we assume to be our leaf) and - # ask the keychain to give us a SecIdentityRef with that cert's associated - # key. - # - # We'll then return a CFArray containing the trust chain: one - # SecIdentityRef and then zero-or-more SecCertificateRef objects. The - # responsibility for freeing this CFArray will be with the caller. This - # CFArray must remain alive for the entire connection, so in practice it - # will be stored with a single SSLSocket, along with the reference to the - # keychain. - certificates = [] - identities = [] - - # Filter out bad paths. - paths = (path for path in paths if path) - - try: - for file_path in paths: - new_identities, new_certs = _load_items_from_file( - keychain, file_path - ) - identities.extend(new_identities) - certificates.extend(new_certs) - - # Ok, we have everything. The question is: do we have an identity? If - # not, we want to grab one from the first cert we have. - if not identities: - new_identity = Security.SecIdentityRef() - status = Security.SecIdentityCreateWithCertificate( - keychain, - certificates[0], - ctypes.byref(new_identity) - ) - _assert_no_error(status) - identities.append(new_identity) - - # We now want to release the original certificate, as we no longer - # need it. - CoreFoundation.CFRelease(certificates.pop(0)) - - # We now need to build a new CFArray that holds the trust chain. - trust_chain = CoreFoundation.CFArrayCreateMutable( - CoreFoundation.kCFAllocatorDefault, - 0, - ctypes.byref(CoreFoundation.kCFTypeArrayCallBacks), - ) - for item in itertools.chain(identities, certificates): - # ArrayAppendValue does a CFRetain on the item. That's fine, - # because the finally block will release our other refs to them. - CoreFoundation.CFArrayAppendValue(trust_chain, item) - - return trust_chain - finally: - for obj in itertools.chain(identities, certificates): - CoreFoundation.CFRelease(obj) diff --git a/python/urllib3/contrib/appengine.py b/python/urllib3/contrib/appengine.py deleted file mode 100644 index 2952f11..0000000 --- a/python/urllib3/contrib/appengine.py +++ /dev/null @@ -1,289 +0,0 @@ -""" -This module provides a pool manager that uses Google App Engine's -`URLFetch Service <https://cloud.google.com/appengine/docs/python/urlfetch>`_. - -Example usage:: - - from urllib3 import PoolManager - from urllib3.contrib.appengine import AppEngineManager, is_appengine_sandbox - - if is_appengine_sandbox(): - # AppEngineManager uses AppEngine's URLFetch API behind the scenes - http = AppEngineManager() - else: - # PoolManager uses a socket-level API behind the scenes - http = PoolManager() - - r = http.request('GET', 'https://google.com/') - -There are `limitations <https://cloud.google.com/appengine/docs/python/\ -urlfetch/#Python_Quotas_and_limits>`_ to the URLFetch service and it may not be -the best choice for your application. There are three options for using -urllib3 on Google App Engine: - -1. You can use :class:`AppEngineManager` with URLFetch. URLFetch is - cost-effective in many circumstances as long as your usage is within the - limitations. -2. You can use a normal :class:`~urllib3.PoolManager` by enabling sockets. - Sockets also have `limitations and restrictions - <https://cloud.google.com/appengine/docs/python/sockets/\ - #limitations-and-restrictions>`_ and have a lower free quota than URLFetch. - To use sockets, be sure to specify the following in your ``app.yaml``:: - - env_variables: - GAE_USE_SOCKETS_HTTPLIB : 'true' - -3. If you are using `App Engine Flexible -<https://cloud.google.com/appengine/docs/flexible/>`_, you can use the standard -:class:`PoolManager` without any configuration or special environment variables. -""" - -from __future__ import absolute_import -import io -import logging -import warnings -from ..packages.six.moves.urllib.parse import urljoin - -from ..exceptions import ( - HTTPError, - HTTPWarning, - MaxRetryError, - ProtocolError, - TimeoutError, - SSLError -) - -from ..request import RequestMethods -from ..response import HTTPResponse -from ..util.timeout import Timeout -from ..util.retry import Retry -from . import _appengine_environ - -try: - from google.appengine.api import urlfetch -except ImportError: - urlfetch = None - - -log = logging.getLogger(__name__) - - -class AppEnginePlatformWarning(HTTPWarning): - pass - - -class AppEnginePlatformError(HTTPError): - pass - - -class AppEngineManager(RequestMethods): - """ - Connection manager for Google App Engine sandbox applications. - - This manager uses the URLFetch service directly instead of using the - emulated httplib, and is subject to URLFetch limitations as described in - the App Engine documentation `here - <https://cloud.google.com/appengine/docs/python/urlfetch>`_. - - Notably it will raise an :class:`AppEnginePlatformError` if: - * URLFetch is not available. - * If you attempt to use this on App Engine Flexible, as full socket - support is available. - * If a request size is more than 10 megabytes. - * If a response size is more than 32 megabtyes. - * If you use an unsupported request method such as OPTIONS. - - Beyond those cases, it will raise normal urllib3 errors. - """ - - def __init__(self, headers=None, retries=None, validate_certificate=True, - urlfetch_retries=True): - if not urlfetch: - raise AppEnginePlatformError( - "URLFetch is not available in this environment.") - - if is_prod_appengine_mvms(): - raise AppEnginePlatformError( - "Use normal urllib3.PoolManager instead of AppEngineManager" - "on Managed VMs, as using URLFetch is not necessary in " - "this environment.") - - warnings.warn( - "urllib3 is using URLFetch on Google App Engine sandbox instead " - "of sockets. To use sockets directly instead of URLFetch see " - "https://urllib3.readthedocs.io/en/latest/reference/urllib3.contrib.html.", - AppEnginePlatformWarning) - - RequestMethods.__init__(self, headers) - self.validate_certificate = validate_certificate - self.urlfetch_retries = urlfetch_retries - - self.retries = retries or Retry.DEFAULT - - def __enter__(self): - return self - - def __exit__(self, exc_type, exc_val, exc_tb): - # Return False to re-raise any potential exceptions - return False - - def urlopen(self, method, url, body=None, headers=None, - retries=None, redirect=True, timeout=Timeout.DEFAULT_TIMEOUT, - **response_kw): - - retries = self._get_retries(retries, redirect) - - try: - follow_redirects = ( - redirect and - retries.redirect != 0 and - retries.total) - response = urlfetch.fetch( - url, - payload=body, - method=method, - headers=headers or {}, - allow_truncated=False, - follow_redirects=self.urlfetch_retries and follow_redirects, - deadline=self._get_absolute_timeout(timeout), - validate_certificate=self.validate_certificate, - ) - except urlfetch.DeadlineExceededError as e: - raise TimeoutError(self, e) - - except urlfetch.InvalidURLError as e: - if 'too large' in str(e): - raise AppEnginePlatformError( - "URLFetch request too large, URLFetch only " - "supports requests up to 10mb in size.", e) - raise ProtocolError(e) - - except urlfetch.DownloadError as e: - if 'Too many redirects' in str(e): - raise MaxRetryError(self, url, reason=e) - raise ProtocolError(e) - - except urlfetch.ResponseTooLargeError as e: - raise AppEnginePlatformError( - "URLFetch response too large, URLFetch only supports" - "responses up to 32mb in size.", e) - - except urlfetch.SSLCertificateError as e: - raise SSLError(e) - - except urlfetch.InvalidMethodError as e: - raise AppEnginePlatformError( - "URLFetch does not support method: %s" % method, e) - - http_response = self._urlfetch_response_to_http_response( - response, retries=retries, **response_kw) - - # Handle redirect? - redirect_location = redirect and http_response.get_redirect_location() - if redirect_location: - # Check for redirect response - if (self.urlfetch_retries and retries.raise_on_redirect): - raise MaxRetryError(self, url, "too many redirects") - else: - if http_response.status == 303: - method = 'GET' - - try: - retries = retries.increment(method, url, response=http_response, _pool=self) - except MaxRetryError: - if retries.raise_on_redirect: - raise MaxRetryError(self, url, "too many redirects") - return http_response - - retries.sleep_for_retry(http_response) - log.debug("Redirecting %s -> %s", url, redirect_location) - redirect_url = urljoin(url, redirect_location) - return self.urlopen( - method, redirect_url, body, headers, - retries=retries, redirect=redirect, - timeout=timeout, **response_kw) - - # Check if we should retry the HTTP response. - has_retry_after = bool(http_response.getheader('Retry-After')) - if retries.is_retry(method, http_response.status, has_retry_after): - retries = retries.increment( - method, url, response=http_response, _pool=self) - log.debug("Retry: %s", url) - retries.sleep(http_response) - return self.urlopen( - method, url, - body=body, headers=headers, - retries=retries, redirect=redirect, - timeout=timeout, **response_kw) - - return http_response - - def _urlfetch_response_to_http_response(self, urlfetch_resp, **response_kw): - - if is_prod_appengine(): - # Production GAE handles deflate encoding automatically, but does - # not remove the encoding header. - content_encoding = urlfetch_resp.headers.get('content-encoding') - - if content_encoding == 'deflate': - del urlfetch_resp.headers['content-encoding'] - - transfer_encoding = urlfetch_resp.headers.get('transfer-encoding') - # We have a full response's content, - # so let's make sure we don't report ourselves as chunked data. - if transfer_encoding == 'chunked': - encodings = transfer_encoding.split(",") - encodings.remove('chunked') - urlfetch_resp.headers['transfer-encoding'] = ','.join(encodings) - - original_response = HTTPResponse( - # In order for decoding to work, we must present the content as - # a file-like object. - body=io.BytesIO(urlfetch_resp.content), - msg=urlfetch_resp.header_msg, - headers=urlfetch_resp.headers, - status=urlfetch_resp.status_code, - **response_kw - ) - - return HTTPResponse( - body=io.BytesIO(urlfetch_resp.content), - headers=urlfetch_resp.headers, - status=urlfetch_resp.status_code, - original_response=original_response, - **response_kw - ) - - def _get_absolute_timeout(self, timeout): - if timeout is Timeout.DEFAULT_TIMEOUT: - return None # Defer to URLFetch's default. - if isinstance(timeout, Timeout): - if timeout._read is not None or timeout._connect is not None: - warnings.warn( - "URLFetch does not support granular timeout settings, " - "reverting to total or default URLFetch timeout.", - AppEnginePlatformWarning) - return timeout.total - return timeout - - def _get_retries(self, retries, redirect): - if not isinstance(retries, Retry): - retries = Retry.from_int( - retries, redirect=redirect, default=self.retries) - - if retries.connect or retries.read or retries.redirect: - warnings.warn( - "URLFetch only supports total retries and does not " - "recognize connect, read, or redirect retry parameters.", - AppEnginePlatformWarning) - - return retries - - -# Alias methods from _appengine_environ to maintain public API interface. - -is_appengine = _appengine_environ.is_appengine -is_appengine_sandbox = _appengine_environ.is_appengine_sandbox -is_local_appengine = _appengine_environ.is_local_appengine -is_prod_appengine = _appengine_environ.is_prod_appengine -is_prod_appengine_mvms = _appengine_environ.is_prod_appengine_mvms diff --git a/python/urllib3/contrib/ntlmpool.py b/python/urllib3/contrib/ntlmpool.py deleted file mode 100644 index 8ea127c..0000000 --- a/python/urllib3/contrib/ntlmpool.py +++ /dev/null @@ -1,111 +0,0 @@ -""" -NTLM authenticating pool, contributed by erikcederstran - -Issue #10, see: http://code.google.com/p/urllib3/issues/detail?id=10 -""" -from __future__ import absolute_import - -from logging import getLogger -from ntlm import ntlm - -from .. import HTTPSConnectionPool -from ..packages.six.moves.http_client import HTTPSConnection - - -log = getLogger(__name__) - - -class NTLMConnectionPool(HTTPSConnectionPool): - """ - Implements an NTLM authentication version of an urllib3 connection pool - """ - - scheme = 'https' - - def __init__(self, user, pw, authurl, *args, **kwargs): - """ - authurl is a random URL on the server that is protected by NTLM. - user is the Windows user, probably in the DOMAIN\\username format. - pw is the password for the user. - """ - super(NTLMConnectionPool, self).__init__(*args, **kwargs) - self.authurl = authurl - self.rawuser = user - user_parts = user.split('\\', 1) - self.domain = user_parts[0].upper() - self.user = user_parts[1] - self.pw = pw - - def _new_conn(self): - # Performs the NTLM handshake that secures the connection. The socket - # must be kept open while requests are performed. - self.num_connections += 1 - log.debug('Starting NTLM HTTPS connection no. %d: https://%s%s', - self.num_connections, self.host, self.authurl) - - headers = {'Connection': 'Keep-Alive'} - req_header = 'Authorization' - resp_header = 'www-authenticate' - - conn = HTTPSConnection(host=self.host, port=self.port) - - # Send negotiation message - headers[req_header] = ( - 'NTLM %s' % ntlm.create_NTLM_NEGOTIATE_MESSAGE(self.rawuser)) - log.debug('Request headers: %s', headers) - conn.request('GET', self.authurl, None, headers) - res = conn.getresponse() - reshdr = dict(res.getheaders()) - log.debug('Response status: %s %s', res.status, res.reason) - log.debug('Response headers: %s', reshdr) - log.debug('Response data: %s [...]', res.read(100)) - - # Remove the reference to the socket, so that it can not be closed by - # the response object (we want to keep the socket open) - res.fp = None - - # Server should respond with a challenge message - auth_header_values = reshdr[resp_header].split(', ') - auth_header_value = None - for s in auth_header_values: - if s[:5] == 'NTLM ': - auth_header_value = s[5:] - if auth_header_value is None: - raise Exception('Unexpected %s response header: %s' % - (resp_header, reshdr[resp_header])) - - # Send authentication message - ServerChallenge, NegotiateFlags = \ - ntlm.parse_NTLM_CHALLENGE_MESSAGE(auth_header_value) - auth_msg = ntlm.create_NTLM_AUTHENTICATE_MESSAGE(ServerChallenge, - self.user, - self.domain, - self.pw, - NegotiateFlags) - headers[req_header] = 'NTLM %s' % auth_msg - log.debug('Request headers: %s', headers) - conn.request('GET', self.authurl, None, headers) - res = conn.getresponse() - log.debug('Response status: %s %s', res.status, res.reason) - log.debug('Response headers: %s', dict(res.getheaders())) - log.debug('Response data: %s [...]', res.read()[:100]) - if res.status != 200: - if res.status == 401: - raise Exception('Server rejected request: wrong ' - 'username or password') - raise Exception('Wrong server response: %s %s' % - (res.status, res.reason)) - - res.fp = None - log.debug('Connection established') - return conn - - def urlopen(self, method, url, body=None, headers=None, retries=3, - redirect=True, assert_same_host=True): - if headers is None: - headers = {} - headers['Connection'] = 'Keep-Alive' - return super(NTLMConnectionPool, self).urlopen(method, url, body, - headers, retries, - redirect, - assert_same_host) diff --git a/python/urllib3/contrib/pyopenssl.py b/python/urllib3/contrib/pyopenssl.py deleted file mode 100644 index 7c0e946..0000000 --- a/python/urllib3/contrib/pyopenssl.py +++ /dev/null @@ -1,466 +0,0 @@ -""" -SSL with SNI_-support for Python 2. Follow these instructions if you would -like to verify SSL certificates in Python 2. Note, the default libraries do -*not* do certificate checking; you need to do additional work to validate -certificates yourself. - -This needs the following packages installed: - -* pyOpenSSL (tested with 16.0.0) -* cryptography (minimum 1.3.4, from pyopenssl) -* idna (minimum 2.0, from cryptography) - -However, pyopenssl depends on cryptography, which depends on idna, so while we -use all three directly here we end up having relatively few packages required. - -You can install them with the following command: - - pip install pyopenssl cryptography idna - -To activate certificate checking, call -:func:`~urllib3.contrib.pyopenssl.inject_into_urllib3` from your Python code -before you begin making HTTP requests. This can be done in a ``sitecustomize`` -module, or at any other time before your application begins using ``urllib3``, -like this:: - - try: - import urllib3.contrib.pyopenssl - urllib3.contrib.pyopenssl.inject_into_urllib3() - except ImportError: - pass - -Now you can use :mod:`urllib3` as you normally would, and it will support SNI -when the required modules are installed. - -Activating this module also has the positive side effect of disabling SSL/TLS -compression in Python 2 (see `CRIME attack`_). - -If you want to configure the default list of supported cipher suites, you can -set the ``urllib3.contrib.pyopenssl.DEFAULT_SSL_CIPHER_LIST`` variable. - -.. _sni: https://en.wikipedia.org/wiki/Server_Name_Indication -.. _crime attack: https://en.wikipedia.org/wiki/CRIME_(security_exploit) -""" -from __future__ import absolute_import - -import OpenSSL.SSL -from cryptography import x509 -from cryptography.hazmat.backends.openssl import backend as openssl_backend -from cryptography.hazmat.backends.openssl.x509 import _Certificate -try: - from cryptography.x509 import UnsupportedExtension -except ImportError: - # UnsupportedExtension is gone in cryptography >= 2.1.0 - class UnsupportedExtension(Exception): - pass - -from socket import timeout, error as SocketError -from io import BytesIO - -try: # Platform-specific: Python 2 - from socket import _fileobject -except ImportError: # Platform-specific: Python 3 - _fileobject = None - from ..packages.backports.makefile import backport_makefile - -import logging -import ssl -from ..packages import six -import sys - -from .. import util - -__all__ = ['inject_into_urllib3', 'extract_from_urllib3'] - -# SNI always works. -HAS_SNI = True - -# Map from urllib3 to PyOpenSSL compatible parameter-values. -_openssl_versions = { - ssl.PROTOCOL_SSLv23: OpenSSL.SSL.SSLv23_METHOD, - ssl.PROTOCOL_TLSv1: OpenSSL.SSL.TLSv1_METHOD, -} - -if hasattr(ssl, 'PROTOCOL_TLSv1_1') and hasattr(OpenSSL.SSL, 'TLSv1_1_METHOD'): - _openssl_versions[ssl.PROTOCOL_TLSv1_1] = OpenSSL.SSL.TLSv1_1_METHOD - -if hasattr(ssl, 'PROTOCOL_TLSv1_2') and hasattr(OpenSSL.SSL, 'TLSv1_2_METHOD'): - _openssl_versions[ssl.PROTOCOL_TLSv1_2] = OpenSSL.SSL.TLSv1_2_METHOD - -try: - _openssl_versions.update({ssl.PROTOCOL_SSLv3: OpenSSL.SSL.SSLv3_METHOD}) -except AttributeError: - pass - -_stdlib_to_openssl_verify = { - ssl.CERT_NONE: OpenSSL.SSL.VERIFY_NONE, - ssl.CERT_OPTIONAL: OpenSSL.SSL.VERIFY_PEER, - ssl.CERT_REQUIRED: - OpenSSL.SSL.VERIFY_PEER + OpenSSL.SSL.VERIFY_FAIL_IF_NO_PEER_CERT, -} -_openssl_to_stdlib_verify = dict( - (v, k) for k, v in _stdlib_to_openssl_verify.items() -) - -# OpenSSL will only write 16K at a time -SSL_WRITE_BLOCKSIZE = 16384 - -orig_util_HAS_SNI = util.HAS_SNI -orig_util_SSLContext = util.ssl_.SSLContext - - -log = logging.getLogger(__name__) - - -def inject_into_urllib3(): - 'Monkey-patch urllib3 with PyOpenSSL-backed SSL-support.' - - _validate_dependencies_met() - - util.ssl_.SSLContext = PyOpenSSLContext - util.HAS_SNI = HAS_SNI - util.ssl_.HAS_SNI = HAS_SNI - util.IS_PYOPENSSL = True - util.ssl_.IS_PYOPENSSL = True - - -def extract_from_urllib3(): - 'Undo monkey-patching by :func:`inject_into_urllib3`.' - - util.ssl_.SSLContext = orig_util_SSLContext - util.HAS_SNI = orig_util_HAS_SNI - util.ssl_.HAS_SNI = orig_util_HAS_SNI - util.IS_PYOPENSSL = False - util.ssl_.IS_PYOPENSSL = False - - -def _validate_dependencies_met(): - """ - Verifies that PyOpenSSL's package-level dependencies have been met. - Throws `ImportError` if they are not met. - """ - # Method added in `cryptography==1.1`; not available in older versions - from cryptography.x509.extensions import Extensions - if getattr(Extensions, "get_extension_for_class", None) is None: - raise ImportError("'cryptography' module missing required functionality. " - "Try upgrading to v1.3.4 or newer.") - - # pyOpenSSL 0.14 and above use cryptography for OpenSSL bindings. The _x509 - # attribute is only present on those versions. - from OpenSSL.crypto import X509 - x509 = X509() - if getattr(x509, "_x509", None) is None: - raise ImportError("'pyOpenSSL' module missing required functionality. " - "Try upgrading to v0.14 or newer.") - - -def _dnsname_to_stdlib(name): - """ - Converts a dNSName SubjectAlternativeName field to the form used by the - standard library on the given Python version. - - Cryptography produces a dNSName as a unicode string that was idna-decoded - from ASCII bytes. We need to idna-encode that string to get it back, and - then on Python 3 we also need to convert to unicode via UTF-8 (the stdlib - uses PyUnicode_FromStringAndSize on it, which decodes via UTF-8). - - If the name cannot be idna-encoded then we return None signalling that - the name given should be skipped. - """ - def idna_encode(name): - """ - Borrowed wholesale from the Python Cryptography Project. It turns out - that we can't just safely call `idna.encode`: it can explode for - wildcard names. This avoids that problem. - """ - import idna - - try: - for prefix in [u'*.', u'.']: - if name.startswith(prefix): - name = name[len(prefix):] - return prefix.encode('ascii') + idna.encode(name) - return idna.encode(name) - except idna.core.IDNAError: - return None - - name = idna_encode(name) - if name is None: - return None - elif sys.version_info >= (3, 0): - name = name.decode('utf-8') - return name - - -def get_subj_alt_name(peer_cert): - """ - Given an PyOpenSSL certificate, provides all the subject alternative names. - """ - # Pass the cert to cryptography, which has much better APIs for this. - if hasattr(peer_cert, "to_cryptography"): - cert = peer_cert.to_cryptography() - else: - # This is technically using private APIs, but should work across all - # relevant versions before PyOpenSSL got a proper API for this. - cert = _Certificate(openssl_backend, peer_cert._x509) - - # We want to find the SAN extension. Ask Cryptography to locate it (it's - # faster than looping in Python) - try: - ext = cert.extensions.get_extension_for_class( - x509.SubjectAlternativeName - ).value - except x509.ExtensionNotFound: - # No such extension, return the empty list. - return [] - except (x509.DuplicateExtension, UnsupportedExtension, - x509.UnsupportedGeneralNameType, UnicodeError) as e: - # A problem has been found with the quality of the certificate. Assume - # no SAN field is present. - log.warning( - "A problem was encountered with the certificate that prevented " - "urllib3 from finding the SubjectAlternativeName field. This can " - "affect certificate validation. The error was %s", - e, - ) - return [] - - # We want to return dNSName and iPAddress fields. We need to cast the IPs - # back to strings because the match_hostname function wants them as - # strings. - # Sadly the DNS names need to be idna encoded and then, on Python 3, UTF-8 - # decoded. This is pretty frustrating, but that's what the standard library - # does with certificates, and so we need to attempt to do the same. - # We also want to skip over names which cannot be idna encoded. - names = [ - ('DNS', name) for name in map(_dnsname_to_stdlib, ext.get_values_for_type(x509.DNSName)) - if name is not None - ] - names.extend( - ('IP Address', str(name)) - for name in ext.get_values_for_type(x509.IPAddress) - ) - - return names - - -class WrappedSocket(object): - '''API-compatibility wrapper for Python OpenSSL's Connection-class. - - Note: _makefile_refs, _drop() and _reuse() are needed for the garbage - collector of pypy. - ''' - - def __init__(self, connection, socket, suppress_ragged_eofs=True): - self.connection = connection - self.socket = socket - self.suppress_ragged_eofs = suppress_ragged_eofs - self._makefile_refs = 0 - self._closed = False - - def fileno(self): - return self.socket.fileno() - - # Copy-pasted from Python 3.5 source code - def _decref_socketios(self): - if self._makefile_refs > 0: - self._makefile_refs -= 1 - if self._closed: - self.close() - - def recv(self, *args, **kwargs): - try: - data = self.connection.recv(*args, **kwargs) - except OpenSSL.SSL.SysCallError as e: - if self.suppress_ragged_eofs and e.args == (-1, 'Unexpected EOF'): - return b'' - else: - raise SocketError(str(e)) - except OpenSSL.SSL.ZeroReturnError as e: - if self.connection.get_shutdown() == OpenSSL.SSL.RECEIVED_SHUTDOWN: - return b'' - else: - raise - except OpenSSL.SSL.WantReadError: - if not util.wait_for_read(self.socket, self.socket.gettimeout()): - raise timeout('The read operation timed out') - else: - return self.recv(*args, **kwargs) - else: - return data - - def recv_into(self, *args, **kwargs): - try: - return self.connection.recv_into(*args, **kwargs) - except OpenSSL.SSL.SysCallError as e: - if self.suppress_ragged_eofs and e.args == (-1, 'Unexpected EOF'): - return 0 - else: - raise SocketError(str(e)) - except OpenSSL.SSL.ZeroReturnError as e: - if self.connection.get_shutdown() == OpenSSL.SSL.RECEIVED_SHUTDOWN: - return 0 - else: - raise - except OpenSSL.SSL.WantReadError: - if not util.wait_for_read(self.socket, self.socket.gettimeout()): - raise timeout('The read operation timed out') - else: - return self.recv_into(*args, **kwargs) - - def settimeout(self, timeout): - return self.socket.settimeout(timeout) - - def _send_until_done(self, data): - while True: - try: - return self.connection.send(data) - except OpenSSL.SSL.WantWriteError: - if not util.wait_for_write(self.socket, self.socket.gettimeout()): - raise timeout() - continue - except OpenSSL.SSL.SysCallError as e: - raise SocketError(str(e)) - - def sendall(self, data): - total_sent = 0 - while total_sent < len(data): - sent = self._send_until_done(data[total_sent:total_sent + SSL_WRITE_BLOCKSIZE]) - total_sent += sent - - def shutdown(self): - # FIXME rethrow compatible exceptions should we ever use this - self.connection.shutdown() - - def close(self): - if self._makefile_refs < 1: - try: - self._closed = True - return self.connection.close() - except OpenSSL.SSL.Error: - return - else: - self._makefile_refs -= 1 - - def getpeercert(self, binary_form=False): - x509 = self.connection.get_peer_certificate() - - if not x509: - return x509 - - if binary_form: - return OpenSSL.crypto.dump_certificate( - OpenSSL.crypto.FILETYPE_ASN1, - x509) - - return { - 'subject': ( - (('commonName', x509.get_subject().CN),), - ), - 'subjectAltName': get_subj_alt_name(x509) - } - - def _reuse(self): - self._makefile_refs += 1 - - def _drop(self): - if self._makefile_refs < 1: - self.close() - else: - self._makefile_refs -= 1 - - -if _fileobject: # Platform-specific: Python 2 - def makefile(self, mode, bufsize=-1): - self._makefile_refs += 1 - return _fileobject(self, mode, bufsize, close=True) -else: # Platform-specific: Python 3 - makefile = backport_makefile - -WrappedSocket.makefile = makefile - - -class PyOpenSSLContext(object): - """ - I am a wrapper class for the PyOpenSSL ``Context`` object. I am responsible - for translating the interface of the standard library ``SSLContext`` object - to calls into PyOpenSSL. - """ - def __init__(self, protocol): - self.protocol = _openssl_versions[protocol] - self._ctx = OpenSSL.SSL.Context(self.protocol) - self._options = 0 - self.check_hostname = False - - @property - def options(self): - return self._options - - @options.setter - def options(self, value): - self._options = value - self._ctx.set_options(value) - - @property - def verify_mode(self): - return _openssl_to_stdlib_verify[self._ctx.get_verify_mode()] - - @verify_mode.setter - def verify_mode(self, value): - self._ctx.set_verify( - _stdlib_to_openssl_verify[value], - _verify_callback - ) - - def set_default_verify_paths(self): - self._ctx.set_default_verify_paths() - - def set_ciphers(self, ciphers): - if isinstance(ciphers, six.text_type): - ciphers = ciphers.encode('utf-8') - self._ctx.set_cipher_list(ciphers) - - def load_verify_locations(self, cafile=None, capath=None, cadata=None): - if cafile is not None: - cafile = cafile.encode('utf-8') - if capath is not None: - capath = capath.encode('utf-8') - self._ctx.load_verify_locations(cafile, capath) - if cadata is not None: - self._ctx.load_verify_locations(BytesIO(cadata)) - - def load_cert_chain(self, certfile, keyfile=None, password=None): - self._ctx.use_certificate_chain_file(certfile) - if password is not None: - self._ctx.set_passwd_cb(lambda max_length, prompt_twice, userdata: password) - self._ctx.use_privatekey_file(keyfile or certfile) - - def wrap_socket(self, sock, server_side=False, - do_handshake_on_connect=True, suppress_ragged_eofs=True, - server_hostname=None): - cnx = OpenSSL.SSL.Connection(self._ctx, sock) - - if isinstance(server_hostname, six.text_type): # Platform-specific: Python 3 - server_hostname = server_hostname.encode('utf-8') - - if server_hostname is not None: - cnx.set_tlsext_host_name(server_hostname) - - cnx.set_connect_state() - - while True: - try: - cnx.do_handshake() - except OpenSSL.SSL.WantReadError: - if not util.wait_for_read(sock, sock.gettimeout()): - raise timeout('select timed out') - continue - except OpenSSL.SSL.Error as e: - raise ssl.SSLError('bad handshake: %r' % e) - break - - return WrappedSocket(cnx, sock) - - -def _verify_callback(cnx, x509, err_no, err_depth, return_code): - return err_no == 0 diff --git a/python/urllib3/contrib/securetransport.py b/python/urllib3/contrib/securetransport.py deleted file mode 100644 index 77cb59e..0000000 --- a/python/urllib3/contrib/securetransport.py +++ /dev/null @@ -1,804 +0,0 @@ -""" -SecureTranport support for urllib3 via ctypes. - -This makes platform-native TLS available to urllib3 users on macOS without the -use of a compiler. This is an important feature because the Python Package -Index is moving to become a TLSv1.2-or-higher server, and the default OpenSSL -that ships with macOS is not capable of doing TLSv1.2. The only way to resolve -this is to give macOS users an alternative solution to the problem, and that -solution is to use SecureTransport. - -We use ctypes here because this solution must not require a compiler. That's -because pip is not allowed to require a compiler either. - -This is not intended to be a seriously long-term solution to this problem. -The hope is that PEP 543 will eventually solve this issue for us, at which -point we can retire this contrib module. But in the short term, we need to -solve the impending tire fire that is Python on Mac without this kind of -contrib module. So...here we are. - -To use this module, simply import and inject it:: - - import urllib3.contrib.securetransport - urllib3.contrib.securetransport.inject_into_urllib3() - -Happy TLSing! -""" -from __future__ import absolute_import - -import contextlib -import ctypes -import errno -import os.path -import shutil -import socket -import ssl -import threading -import weakref - -from .. import util -from ._securetransport.bindings import ( - Security, SecurityConst, CoreFoundation -) -from ._securetransport.low_level import ( - _assert_no_error, _cert_array_from_pem, _temporary_keychain, - _load_client_cert_chain -) - -try: # Platform-specific: Python 2 - from socket import _fileobject -except ImportError: # Platform-specific: Python 3 - _fileobject = None - from ..packages.backports.makefile import backport_makefile - -__all__ = ['inject_into_urllib3', 'extract_from_urllib3'] - -# SNI always works -HAS_SNI = True - -orig_util_HAS_SNI = util.HAS_SNI -orig_util_SSLContext = util.ssl_.SSLContext - -# This dictionary is used by the read callback to obtain a handle to the -# calling wrapped socket. This is a pretty silly approach, but for now it'll -# do. I feel like I should be able to smuggle a handle to the wrapped socket -# directly in the SSLConnectionRef, but for now this approach will work I -# guess. -# -# We need to lock around this structure for inserts, but we don't do it for -# reads/writes in the callbacks. The reasoning here goes as follows: -# -# 1. It is not possible to call into the callbacks before the dictionary is -# populated, so once in the callback the id must be in the dictionary. -# 2. The callbacks don't mutate the dictionary, they only read from it, and -# so cannot conflict with any of the insertions. -# -# This is good: if we had to lock in the callbacks we'd drastically slow down -# the performance of this code. -_connection_refs = weakref.WeakValueDictionary() -_connection_ref_lock = threading.Lock() - -# Limit writes to 16kB. This is OpenSSL's limit, but we'll cargo-cult it over -# for no better reason than we need *a* limit, and this one is right there. -SSL_WRITE_BLOCKSIZE = 16384 - -# This is our equivalent of util.ssl_.DEFAULT_CIPHERS, but expanded out to -# individual cipher suites. We need to do this because this is how -# SecureTransport wants them. -CIPHER_SUITES = [ - SecurityConst.TLS_AES_256_GCM_SHA384, - SecurityConst.TLS_CHACHA20_POLY1305_SHA256, - SecurityConst.TLS_AES_128_GCM_SHA256, - SecurityConst.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, - SecurityConst.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, - SecurityConst.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, - SecurityConst.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, - SecurityConst.TLS_DHE_DSS_WITH_AES_256_GCM_SHA384, - SecurityConst.TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, - SecurityConst.TLS_DHE_DSS_WITH_AES_128_GCM_SHA256, - SecurityConst.TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, - SecurityConst.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, - SecurityConst.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, - SecurityConst.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, - SecurityConst.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, - SecurityConst.TLS_DHE_RSA_WITH_AES_256_CBC_SHA256, - SecurityConst.TLS_DHE_DSS_WITH_AES_256_CBC_SHA256, - SecurityConst.TLS_DHE_RSA_WITH_AES_256_CBC_SHA, - SecurityConst.TLS_DHE_DSS_WITH_AES_256_CBC_SHA, - SecurityConst.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, - SecurityConst.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, - SecurityConst.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, - SecurityConst.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, - SecurityConst.TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, - SecurityConst.TLS_DHE_DSS_WITH_AES_128_CBC_SHA256, - SecurityConst.TLS_DHE_RSA_WITH_AES_128_CBC_SHA, - SecurityConst.TLS_DHE_DSS_WITH_AES_128_CBC_SHA, - SecurityConst.TLS_RSA_WITH_AES_256_GCM_SHA384, - SecurityConst.TLS_RSA_WITH_AES_128_GCM_SHA256, - SecurityConst.TLS_RSA_WITH_AES_256_CBC_SHA256, - SecurityConst.TLS_RSA_WITH_AES_128_CBC_SHA256, - SecurityConst.TLS_RSA_WITH_AES_256_CBC_SHA, - SecurityConst.TLS_RSA_WITH_AES_128_CBC_SHA, -] - -# Basically this is simple: for PROTOCOL_SSLv23 we turn it into a low of -# TLSv1 and a high of TLSv1.2. For everything else, we pin to that version. -_protocol_to_min_max = { - ssl.PROTOCOL_SSLv23: (SecurityConst.kTLSProtocol1, SecurityConst.kTLSProtocol12), -} - -if hasattr(ssl, "PROTOCOL_SSLv2"): - _protocol_to_min_max[ssl.PROTOCOL_SSLv2] = ( - SecurityConst.kSSLProtocol2, SecurityConst.kSSLProtocol2 - ) -if hasattr(ssl, "PROTOCOL_SSLv3"): - _protocol_to_min_max[ssl.PROTOCOL_SSLv3] = ( - SecurityConst.kSSLProtocol3, SecurityConst.kSSLProtocol3 - ) -if hasattr(ssl, "PROTOCOL_TLSv1"): - _protocol_to_min_max[ssl.PROTOCOL_TLSv1] = ( - SecurityConst.kTLSProtocol1, SecurityConst.kTLSProtocol1 - ) -if hasattr(ssl, "PROTOCOL_TLSv1_1"): - _protocol_to_min_max[ssl.PROTOCOL_TLSv1_1] = ( - SecurityConst.kTLSProtocol11, SecurityConst.kTLSProtocol11 - ) -if hasattr(ssl, "PROTOCOL_TLSv1_2"): - _protocol_to_min_max[ssl.PROTOCOL_TLSv1_2] = ( - SecurityConst.kTLSProtocol12, SecurityConst.kTLSProtocol12 - ) -if hasattr(ssl, "PROTOCOL_TLS"): - _protocol_to_min_max[ssl.PROTOCOL_TLS] = _protocol_to_min_max[ssl.PROTOCOL_SSLv23] - - -def inject_into_urllib3(): - """ - Monkey-patch urllib3 with SecureTransport-backed SSL-support. - """ - util.ssl_.SSLContext = SecureTransportContext - util.HAS_SNI = HAS_SNI - util.ssl_.HAS_SNI = HAS_SNI - util.IS_SECURETRANSPORT = True - util.ssl_.IS_SECURETRANSPORT = True - - -def extract_from_urllib3(): - """ - Undo monkey-patching by :func:`inject_into_urllib3`. - """ - util.ssl_.SSLContext = orig_util_SSLContext - util.HAS_SNI = orig_util_HAS_SNI - util.ssl_.HAS_SNI = orig_util_HAS_SNI - util.IS_SECURETRANSPORT = False - util.ssl_.IS_SECURETRANSPORT = False - - -def _read_callback(connection_id, data_buffer, data_length_pointer): - """ - SecureTransport read callback. This is called by ST to request that data - be returned from the socket. - """ - wrapped_socket = None - try: - wrapped_socket = _connection_refs.get(connection_id) - if wrapped_socket is None: - return SecurityConst.errSSLInternal - base_socket = wrapped_socket.socket - - requested_length = data_length_pointer[0] - - timeout = wrapped_socket.gettimeout() - error = None - read_count = 0 - - try: - while read_count < requested_length: - if timeout is None or timeout >= 0: - if not util.wait_for_read(base_socket, timeout): - raise socket.error(errno.EAGAIN, 'timed out') - - remaining = requested_length - read_count - buffer = (ctypes.c_char * remaining).from_address( - data_buffer + read_count - ) - chunk_size = base_socket.recv_into(buffer, remaining) - read_count += chunk_size - if not chunk_size: - if not read_count: - return SecurityConst.errSSLClosedGraceful - break - except (socket.error) as e: - error = e.errno - - if error is not None and error != errno.EAGAIN: - data_length_pointer[0] = read_count - if error == errno.ECONNRESET or error == errno.EPIPE: - return SecurityConst.errSSLClosedAbort - raise - - data_length_pointer[0] = read_count - - if read_count != requested_length: - return SecurityConst.errSSLWouldBlock - - return 0 - except Exception as e: - if wrapped_socket is not None: - wrapped_socket._exception = e - return SecurityConst.errSSLInternal - - -def _write_callback(connection_id, data_buffer, data_length_pointer): - """ - SecureTransport write callback. This is called by ST to request that data - actually be sent on the network. - """ - wrapped_socket = None - try: - wrapped_socket = _connection_refs.get(connection_id) - if wrapped_socket is None: - return SecurityConst.errSSLInternal - base_socket = wrapped_socket.socket - - bytes_to_write = data_length_pointer[0] - data = ctypes.string_at(data_buffer, bytes_to_write) - - timeout = wrapped_socket.gettimeout() - error = None - sent = 0 - - try: - while sent < bytes_to_write: - if timeout is None or timeout >= 0: - if not util.wait_for_write(base_socket, timeout): - raise socket.error(errno.EAGAIN, 'timed out') - chunk_sent = base_socket.send(data) - sent += chunk_sent - - # This has some needless copying here, but I'm not sure there's - # much value in optimising this data path. - data = data[chunk_sent:] - except (socket.error) as e: - error = e.errno - - if error is not None and error != errno.EAGAIN: - data_length_pointer[0] = sent - if error == errno.ECONNRESET or error == errno.EPIPE: - return SecurityConst.errSSLClosedAbort - raise - - data_length_pointer[0] = sent - - if sent != bytes_to_write: - return SecurityConst.errSSLWouldBlock - - return 0 - except Exception as e: - if wrapped_socket is not None: - wrapped_socket._exception = e - return SecurityConst.errSSLInternal - - -# We need to keep these two objects references alive: if they get GC'd while -# in use then SecureTransport could attempt to call a function that is in freed -# memory. That would be...uh...bad. Yeah, that's the word. Bad. -_read_callback_pointer = Security.SSLReadFunc(_read_callback) -_write_callback_pointer = Security.SSLWriteFunc(_write_callback) - - -class WrappedSocket(object): - """ - API-compatibility wrapper for Python's OpenSSL wrapped socket object. - - Note: _makefile_refs, _drop(), and _reuse() are needed for the garbage - collector of PyPy. - """ - def __init__(self, socket): - self.socket = socket - self.context = None - self._makefile_refs = 0 - self._closed = False - self._exception = None - self._keychain = None - self._keychain_dir = None - self._client_cert_chain = None - - # We save off the previously-configured timeout and then set it to - # zero. This is done because we use select and friends to handle the - # timeouts, but if we leave the timeout set on the lower socket then - # Python will "kindly" call select on that socket again for us. Avoid - # that by forcing the timeout to zero. - self._timeout = self.socket.gettimeout() - self.socket.settimeout(0) - - @contextlib.contextmanager - def _raise_on_error(self): - """ - A context manager that can be used to wrap calls that do I/O from - SecureTransport. If any of the I/O callbacks hit an exception, this - context manager will correctly propagate the exception after the fact. - This avoids silently swallowing those exceptions. - - It also correctly forces the socket closed. - """ - self._exception = None - - # We explicitly don't catch around this yield because in the unlikely - # event that an exception was hit in the block we don't want to swallow - # it. - yield - if self._exception is not None: - exception, self._exception = self._exception, None - self.close() - raise exception - - def _set_ciphers(self): - """ - Sets up the allowed ciphers. By default this matches the set in - util.ssl_.DEFAULT_CIPHERS, at least as supported by macOS. This is done - custom and doesn't allow changing at this time, mostly because parsing - OpenSSL cipher strings is going to be a freaking nightmare. - """ - ciphers = (Security.SSLCipherSuite * len(CIPHER_SUITES))(*CIPHER_SUITES) - result = Security.SSLSetEnabledCiphers( - self.context, ciphers, len(CIPHER_SUITES) - ) - _assert_no_error(result) - - def _custom_validate(self, verify, trust_bundle): - """ - Called when we have set custom validation. We do this in two cases: - first, when cert validation is entirely disabled; and second, when - using a custom trust DB. - """ - # If we disabled cert validation, just say: cool. - if not verify: - return - - # We want data in memory, so load it up. - if os.path.isfile(trust_bundle): - with open(trust_bundle, 'rb') as f: - trust_bundle = f.read() - - cert_array = None - trust = Security.SecTrustRef() - - try: - # Get a CFArray that contains the certs we want. - cert_array = _cert_array_from_pem(trust_bundle) - - # Ok, now the hard part. We want to get the SecTrustRef that ST has - # created for this connection, shove our CAs into it, tell ST to - # ignore everything else it knows, and then ask if it can build a - # chain. This is a buuuunch of code. - result = Security.SSLCopyPeerTrust( - self.context, ctypes.byref(trust) - ) - _assert_no_error(result) - if not trust: - raise ssl.SSLError("Failed to copy trust reference") - - result = Security.SecTrustSetAnchorCertificates(trust, cert_array) - _assert_no_error(result) - - result = Security.SecTrustSetAnchorCertificatesOnly(trust, True) - _assert_no_error(result) - - trust_result = Security.SecTrustResultType() - result = Security.SecTrustEvaluate( - trust, ctypes.byref(trust_result) - ) - _assert_no_error(result) - finally: - if trust: - CoreFoundation.CFRelease(trust) - - if cert_array is not None: - CoreFoundation.CFRelease(cert_array) - - # Ok, now we can look at what the result was. - successes = ( - SecurityConst.kSecTrustResultUnspecified, - SecurityConst.kSecTrustResultProceed - ) - if trust_result.value not in successes: - raise ssl.SSLError( - "certificate verify failed, error code: %d" % - trust_result.value - ) - - def handshake(self, - server_hostname, - verify, - trust_bundle, - min_version, - max_version, - client_cert, - client_key, - client_key_passphrase): - """ - Actually performs the TLS handshake. This is run automatically by - wrapped socket, and shouldn't be needed in user code. - """ - # First, we do the initial bits of connection setup. We need to create - # a context, set its I/O funcs, and set the connection reference. - self.context = Security.SSLCreateContext( - None, SecurityConst.kSSLClientSide, SecurityConst.kSSLStreamType - ) - result = Security.SSLSetIOFuncs( - self.context, _read_callback_pointer, _write_callback_pointer - ) - _assert_no_error(result) - - # Here we need to compute the handle to use. We do this by taking the - # id of self modulo 2**31 - 1. If this is already in the dictionary, we - # just keep incrementing by one until we find a free space. - with _connection_ref_lock: - handle = id(self) % 2147483647 - while handle in _connection_refs: - handle = (handle + 1) % 2147483647 - _connection_refs[handle] = self - - result = Security.SSLSetConnection(self.context, handle) - _assert_no_error(result) - - # If we have a server hostname, we should set that too. - if server_hostname: - if not isinstance(server_hostname, bytes): - server_hostname = server_hostname.encode('utf-8') - - result = Security.SSLSetPeerDomainName( - self.context, server_hostname, len(server_hostname) - ) - _assert_no_error(result) - - # Setup the ciphers. - self._set_ciphers() - - # Set the minimum and maximum TLS versions. - result = Security.SSLSetProtocolVersionMin(self.context, min_version) - _assert_no_error(result) - result = Security.SSLSetProtocolVersionMax(self.context, max_version) - _assert_no_error(result) - - # If there's a trust DB, we need to use it. We do that by telling - # SecureTransport to break on server auth. We also do that if we don't - # want to validate the certs at all: we just won't actually do any - # authing in that case. - if not verify or trust_bundle is not None: - result = Security.SSLSetSessionOption( - self.context, - SecurityConst.kSSLSessionOptionBreakOnServerAuth, - True - ) - _assert_no_error(result) - - # If there's a client cert, we need to use it. - if client_cert: - self._keychain, self._keychain_dir = _temporary_keychain() - self._client_cert_chain = _load_client_cert_chain( - self._keychain, client_cert, client_key - ) - result = Security.SSLSetCertificate( - self.context, self._client_cert_chain - ) - _assert_no_error(result) - - while True: - with self._raise_on_error(): - result = Security.SSLHandshake(self.context) - - if result == SecurityConst.errSSLWouldBlock: - raise socket.timeout("handshake timed out") - elif result == SecurityConst.errSSLServerAuthCompleted: - self._custom_validate(verify, trust_bundle) - continue - else: - _assert_no_error(result) - break - - def fileno(self): - return self.socket.fileno() - - # Copy-pasted from Python 3.5 source code - def _decref_socketios(self): - if self._makefile_refs > 0: - self._makefile_refs -= 1 - if self._closed: - self.close() - - def recv(self, bufsiz): - buffer = ctypes.create_string_buffer(bufsiz) - bytes_read = self.recv_into(buffer, bufsiz) - data = buffer[:bytes_read] - return data - - def recv_into(self, buffer, nbytes=None): - # Read short on EOF. - if self._closed: - return 0 - - if nbytes is None: - nbytes = len(buffer) - - buffer = (ctypes.c_char * nbytes).from_buffer(buffer) - processed_bytes = ctypes.c_size_t(0) - - with self._raise_on_error(): - result = Security.SSLRead( - self.context, buffer, nbytes, ctypes.byref(processed_bytes) - ) - - # There are some result codes that we want to treat as "not always - # errors". Specifically, those are errSSLWouldBlock, - # errSSLClosedGraceful, and errSSLClosedNoNotify. - if (result == SecurityConst.errSSLWouldBlock): - # If we didn't process any bytes, then this was just a time out. - # However, we can get errSSLWouldBlock in situations when we *did* - # read some data, and in those cases we should just read "short" - # and return. - if processed_bytes.value == 0: - # Timed out, no data read. - raise socket.timeout("recv timed out") - elif result in (SecurityConst.errSSLClosedGraceful, SecurityConst.errSSLClosedNoNotify): - # The remote peer has closed this connection. We should do so as - # well. Note that we don't actually return here because in - # principle this could actually be fired along with return data. - # It's unlikely though. - self.close() - else: - _assert_no_error(result) - - # Ok, we read and probably succeeded. We should return whatever data - # was actually read. - return processed_bytes.value - - def settimeout(self, timeout): - self._timeout = timeout - - def gettimeout(self): - return self._timeout - - def send(self, data): - processed_bytes = ctypes.c_size_t(0) - - with self._raise_on_error(): - result = Security.SSLWrite( - self.context, data, len(data), ctypes.byref(processed_bytes) - ) - - if result == SecurityConst.errSSLWouldBlock and processed_bytes.value == 0: - # Timed out - raise socket.timeout("send timed out") - else: - _assert_no_error(result) - - # We sent, and probably succeeded. Tell them how much we sent. - return processed_bytes.value - - def sendall(self, data): - total_sent = 0 - while total_sent < len(data): - sent = self.send(data[total_sent:total_sent + SSL_WRITE_BLOCKSIZE]) - total_sent += sent - - def shutdown(self): - with self._raise_on_error(): - Security.SSLClose(self.context) - - def close(self): - # TODO: should I do clean shutdown here? Do I have to? - if self._makefile_refs < 1: - self._closed = True - if self.context: - CoreFoundation.CFRelease(self.context) - self.context = None - if self._client_cert_chain: - CoreFoundation.CFRelease(self._client_cert_chain) - self._client_cert_chain = None - if self._keychain: - Security.SecKeychainDelete(self._keychain) - CoreFoundation.CFRelease(self._keychain) - shutil.rmtree(self._keychain_dir) - self._keychain = self._keychain_dir = None - return self.socket.close() - else: - self._makefile_refs -= 1 - - def getpeercert(self, binary_form=False): - # Urgh, annoying. - # - # Here's how we do this: - # - # 1. Call SSLCopyPeerTrust to get hold of the trust object for this - # connection. - # 2. Call SecTrustGetCertificateAtIndex for index 0 to get the leaf. - # 3. To get the CN, call SecCertificateCopyCommonName and process that - # string so that it's of the appropriate type. - # 4. To get the SAN, we need to do something a bit more complex: - # a. Call SecCertificateCopyValues to get the data, requesting - # kSecOIDSubjectAltName. - # b. Mess about with this dictionary to try to get the SANs out. - # - # This is gross. Really gross. It's going to be a few hundred LoC extra - # just to repeat something that SecureTransport can *already do*. So my - # operating assumption at this time is that what we want to do is - # instead to just flag to urllib3 that it shouldn't do its own hostname - # validation when using SecureTransport. - if not binary_form: - raise ValueError( - "SecureTransport only supports dumping binary certs" - ) - trust = Security.SecTrustRef() - certdata = None - der_bytes = None - - try: - # Grab the trust store. - result = Security.SSLCopyPeerTrust( - self.context, ctypes.byref(trust) - ) - _assert_no_error(result) - if not trust: - # Probably we haven't done the handshake yet. No biggie. - return None - - cert_count = Security.SecTrustGetCertificateCount(trust) - if not cert_count: - # Also a case that might happen if we haven't handshaked. - # Handshook? Handshaken? - return None - - leaf = Security.SecTrustGetCertificateAtIndex(trust, 0) - assert leaf - - # Ok, now we want the DER bytes. - certdata = Security.SecCertificateCopyData(leaf) - assert certdata - - data_length = CoreFoundation.CFDataGetLength(certdata) - data_buffer = CoreFoundation.CFDataGetBytePtr(certdata) - der_bytes = ctypes.string_at(data_buffer, data_length) - finally: - if certdata: - CoreFoundation.CFRelease(certdata) - if trust: - CoreFoundation.CFRelease(trust) - - return der_bytes - - def _reuse(self): - self._makefile_refs += 1 - - def _drop(self): - if self._makefile_refs < 1: - self.close() - else: - self._makefile_refs -= 1 - - -if _fileobject: # Platform-specific: Python 2 - def makefile(self, mode, bufsize=-1): - self._makefile_refs += 1 - return _fileobject(self, mode, bufsize, close=True) -else: # Platform-specific: Python 3 - def makefile(self, mode="r", buffering=None, *args, **kwargs): - # We disable buffering with SecureTransport because it conflicts with - # the buffering that ST does internally (see issue #1153 for more). - buffering = 0 - return backport_makefile(self, mode, buffering, *args, **kwargs) - -WrappedSocket.makefile = makefile - - -class SecureTransportContext(object): - """ - I am a wrapper class for the SecureTransport library, to translate the - interface of the standard library ``SSLContext`` object to calls into - SecureTransport. - """ - def __init__(self, protocol): - self._min_version, self._max_version = _protocol_to_min_max[protocol] - self._options = 0 - self._verify = False - self._trust_bundle = None - self._client_cert = None - self._client_key = None - self._client_key_passphrase = None - - @property - def check_hostname(self): - """ - SecureTransport cannot have its hostname checking disabled. For more, - see the comment on getpeercert() in this file. - """ - return True - - @check_hostname.setter - def check_hostname(self, value): - """ - SecureTransport cannot have its hostname checking disabled. For more, - see the comment on getpeercert() in this file. - """ - pass - - @property - def options(self): - # TODO: Well, crap. - # - # So this is the bit of the code that is the most likely to cause us - # trouble. Essentially we need to enumerate all of the SSL options that - # users might want to use and try to see if we can sensibly translate - # them, or whether we should just ignore them. - return self._options - - @options.setter - def options(self, value): - # TODO: Update in line with above. - self._options = value - - @property - def verify_mode(self): - return ssl.CERT_REQUIRED if self._verify else ssl.CERT_NONE - - @verify_mode.setter - def verify_mode(self, value): - self._verify = True if value == ssl.CERT_REQUIRED else False - - def set_default_verify_paths(self): - # So, this has to do something a bit weird. Specifically, what it does - # is nothing. - # - # This means that, if we had previously had load_verify_locations - # called, this does not undo that. We need to do that because it turns - # out that the rest of the urllib3 code will attempt to load the - # default verify paths if it hasn't been told about any paths, even if - # the context itself was sometime earlier. We resolve that by just - # ignoring it. - pass - - def load_default_certs(self): - return self.set_default_verify_paths() - - def set_ciphers(self, ciphers): - # For now, we just require the default cipher string. - if ciphers != util.ssl_.DEFAULT_CIPHERS: - raise ValueError( - "SecureTransport doesn't support custom cipher strings" - ) - - def load_verify_locations(self, cafile=None, capath=None, cadata=None): - # OK, we only really support cadata and cafile. - if capath is not None: - raise ValueError( - "SecureTransport does not support cert directories" - ) - - self._trust_bundle = cafile or cadata - - def load_cert_chain(self, certfile, keyfile=None, password=None): - self._client_cert = certfile - self._client_key = keyfile - self._client_cert_passphrase = password - - def wrap_socket(self, sock, server_side=False, - do_handshake_on_connect=True, suppress_ragged_eofs=True, - server_hostname=None): - # So, what do we do here? Firstly, we assert some properties. This is a - # stripped down shim, so there is some functionality we don't support. - # See PEP 543 for the real deal. - assert not server_side - assert do_handshake_on_connect - assert suppress_ragged_eofs - - # Ok, we're good to go. Now we want to create the wrapped socket object - # and store it in the appropriate place. - wrapped_socket = WrappedSocket(sock) - - # Now we can handshake - wrapped_socket.handshake( - server_hostname, self._verify, self._trust_bundle, - self._min_version, self._max_version, self._client_cert, - self._client_key, self._client_key_passphrase - ) - return wrapped_socket diff --git a/python/urllib3/contrib/socks.py b/python/urllib3/contrib/socks.py deleted file mode 100644 index 811e312..0000000 --- a/python/urllib3/contrib/socks.py +++ /dev/null @@ -1,192 +0,0 @@ -# -*- coding: utf-8 -*- -""" -This module contains provisional support for SOCKS proxies from within -urllib3. This module supports SOCKS4 (specifically the SOCKS4A variant) and -SOCKS5. To enable its functionality, either install PySocks or install this -module with the ``socks`` extra. - -The SOCKS implementation supports the full range of urllib3 features. It also -supports the following SOCKS features: - -- SOCKS4 -- SOCKS4a -- SOCKS5 -- Usernames and passwords for the SOCKS proxy - -Known Limitations: - -- Currently PySocks does not support contacting remote websites via literal - IPv6 addresses. Any such connection attempt will fail. You must use a domain - name. -- Currently PySocks does not support IPv6 connections to the SOCKS proxy. Any - such connection attempt will fail. -""" -from __future__ import absolute_import - -try: - import socks -except ImportError: - import warnings - from ..exceptions import DependencyWarning - - warnings.warn(( - 'SOCKS support in urllib3 requires the installation of optional ' - 'dependencies: specifically, PySocks. For more information, see ' - 'https://urllib3.readthedocs.io/en/latest/contrib.html#socks-proxies' - ), - DependencyWarning - ) - raise - -from socket import error as SocketError, timeout as SocketTimeout - -from ..connection import ( - HTTPConnection, HTTPSConnection -) -from ..connectionpool import ( - HTTPConnectionPool, HTTPSConnectionPool -) -from ..exceptions import ConnectTimeoutError, NewConnectionError -from ..poolmanager import PoolManager -from ..util.url import parse_url - -try: - import ssl -except ImportError: - ssl = None - - -class SOCKSConnection(HTTPConnection): - """ - A plain-text HTTP connection that connects via a SOCKS proxy. - """ - def __init__(self, *args, **kwargs): - self._socks_options = kwargs.pop('_socks_options') - super(SOCKSConnection, self).__init__(*args, **kwargs) - - def _new_conn(self): - """ - Establish a new connection via the SOCKS proxy. - """ - extra_kw = {} - if self.source_address: - extra_kw['source_address'] = self.source_address - - if self.socket_options: - extra_kw['socket_options'] = self.socket_options - - try: - conn = socks.create_connection( - (self.host, self.port), - proxy_type=self._socks_options['socks_version'], - proxy_addr=self._socks_options['proxy_host'], - proxy_port=self._socks_options['proxy_port'], - proxy_username=self._socks_options['username'], - proxy_password=self._socks_options['password'], - proxy_rdns=self._socks_options['rdns'], - timeout=self.timeout, - **extra_kw - ) - - except SocketTimeout as e: - raise ConnectTimeoutError( - self, "Connection to %s timed out. (connect timeout=%s)" % - (self.host, self.timeout)) - - except socks.ProxyError as e: - # This is fragile as hell, but it seems to be the only way to raise - # useful errors here. - if e.socket_err: - error = e.socket_err - if isinstance(error, SocketTimeout): - raise ConnectTimeoutError( - self, - "Connection to %s timed out. (connect timeout=%s)" % - (self.host, self.timeout) - ) - else: - raise NewConnectionError( - self, - "Failed to establish a new connection: %s" % error - ) - else: - raise NewConnectionError( - self, - "Failed to establish a new connection: %s" % e - ) - - except SocketError as e: # Defensive: PySocks should catch all these. - raise NewConnectionError( - self, "Failed to establish a new connection: %s" % e) - - return conn - - -# We don't need to duplicate the Verified/Unverified distinction from -# urllib3/connection.py here because the HTTPSConnection will already have been -# correctly set to either the Verified or Unverified form by that module. This -# means the SOCKSHTTPSConnection will automatically be the correct type. -class SOCKSHTTPSConnection(SOCKSConnection, HTTPSConnection): - pass - - -class SOCKSHTTPConnectionPool(HTTPConnectionPool): - ConnectionCls = SOCKSConnection - - -class SOCKSHTTPSConnectionPool(HTTPSConnectionPool): - ConnectionCls = SOCKSHTTPSConnection - - -class SOCKSProxyManager(PoolManager): - """ - A version of the urllib3 ProxyManager that routes connections via the - defined SOCKS proxy. - """ - pool_classes_by_scheme = { - 'http': SOCKSHTTPConnectionPool, - 'https': SOCKSHTTPSConnectionPool, - } - - def __init__(self, proxy_url, username=None, password=None, - num_pools=10, headers=None, **connection_pool_kw): - parsed = parse_url(proxy_url) - - if username is None and password is None and parsed.auth is not None: - split = parsed.auth.split(':') - if len(split) == 2: - username, password = split - if parsed.scheme == 'socks5': - socks_version = socks.PROXY_TYPE_SOCKS5 - rdns = False - elif parsed.scheme == 'socks5h': - socks_version = socks.PROXY_TYPE_SOCKS5 - rdns = True - elif parsed.scheme == 'socks4': - socks_version = socks.PROXY_TYPE_SOCKS4 - rdns = False - elif parsed.scheme == 'socks4a': - socks_version = socks.PROXY_TYPE_SOCKS4 - rdns = True - else: - raise ValueError( - "Unable to determine SOCKS version from %s" % proxy_url - ) - - self.proxy_url = proxy_url - - socks_options = { - 'socks_version': socks_version, - 'proxy_host': parsed.host, - 'proxy_port': parsed.port, - 'username': username, - 'password': password, - 'rdns': rdns - } - connection_pool_kw['_socks_options'] = socks_options - - super(SOCKSProxyManager, self).__init__( - num_pools, headers, **connection_pool_kw - ) - - self.pool_classes_by_scheme = SOCKSProxyManager.pool_classes_by_scheme diff --git a/python/urllib3/exceptions.py b/python/urllib3/exceptions.py deleted file mode 100644 index 7bbaa98..0000000 --- a/python/urllib3/exceptions.py +++ /dev/null @@ -1,246 +0,0 @@ -from __future__ import absolute_import -from .packages.six.moves.http_client import ( - IncompleteRead as httplib_IncompleteRead -) -# Base Exceptions - - -class HTTPError(Exception): - "Base exception used by this module." - pass - - -class HTTPWarning(Warning): - "Base warning used by this module." - pass - - -class PoolError(HTTPError): - "Base exception for errors caused within a pool." - def __init__(self, pool, message): - self.pool = pool - HTTPError.__init__(self, "%s: %s" % (pool, message)) - - def __reduce__(self): - # For pickling purposes. - return self.__class__, (None, None) - - -class RequestError(PoolError): - "Base exception for PoolErrors that have associated URLs." - def __init__(self, pool, url, message): - self.url = url - PoolError.__init__(self, pool, message) - - def __reduce__(self): - # For pickling purposes. - return self.__class__, (None, self.url, None) - - -class SSLError(HTTPError): - "Raised when SSL certificate fails in an HTTPS connection." - pass - - -class ProxyError(HTTPError): - "Raised when the connection to a proxy fails." - pass - - -class DecodeError(HTTPError): - "Raised when automatic decoding based on Content-Type fails." - pass - - -class ProtocolError(HTTPError): - "Raised when something unexpected happens mid-request/response." - pass - - -#: Renamed to ProtocolError but aliased for backwards compatibility. -ConnectionError = ProtocolError - - -# Leaf Exceptions - -class MaxRetryError(RequestError): - """Raised when the maximum number of retries is exceeded. - - :param pool: The connection pool - :type pool: :class:`~urllib3.connectionpool.HTTPConnectionPool` - :param string url: The requested Url - :param exceptions.Exception reason: The underlying error - - """ - - def __init__(self, pool, url, reason=None): - self.reason = reason - - message = "Max retries exceeded with url: %s (Caused by %r)" % ( - url, reason) - - RequestError.__init__(self, pool, url, message) - - -class HostChangedError(RequestError): - "Raised when an existing pool gets a request for a foreign host." - - def __init__(self, pool, url, retries=3): - message = "Tried to open a foreign host with url: %s" % url - RequestError.__init__(self, pool, url, message) - self.retries = retries - - -class TimeoutStateError(HTTPError): - """ Raised when passing an invalid state to a timeout """ - pass - - -class TimeoutError(HTTPError): - """ Raised when a socket timeout error occurs. - - Catching this error will catch both :exc:`ReadTimeoutErrors - <ReadTimeoutError>` and :exc:`ConnectTimeoutErrors <ConnectTimeoutError>`. - """ - pass - - -class ReadTimeoutError(TimeoutError, RequestError): - "Raised when a socket timeout occurs while receiving data from a server" - pass - - -# This timeout error does not have a URL attached and needs to inherit from the -# base HTTPError -class ConnectTimeoutError(TimeoutError): - "Raised when a socket timeout occurs while connecting to a server" - pass - - -class NewConnectionError(ConnectTimeoutError, PoolError): - "Raised when we fail to establish a new connection. Usually ECONNREFUSED." - pass - - -class EmptyPoolError(PoolError): - "Raised when a pool runs out of connections and no more are allowed." - pass - - -class ClosedPoolError(PoolError): - "Raised when a request enters a pool after the pool has been closed." - pass - - -class LocationValueError(ValueError, HTTPError): - "Raised when there is something wrong with a given URL input." - pass - - -class LocationParseError(LocationValueError): - "Raised when get_host or similar fails to parse the URL input." - - def __init__(self, location): - message = "Failed to parse: %s" % location - HTTPError.__init__(self, message) - - self.location = location - - -class ResponseError(HTTPError): - "Used as a container for an error reason supplied in a MaxRetryError." - GENERIC_ERROR = 'too many error responses' - SPECIFIC_ERROR = 'too many {status_code} error responses' - - -class SecurityWarning(HTTPWarning): - "Warned when performing security reducing actions" - pass - - -class SubjectAltNameWarning(SecurityWarning): - "Warned when connecting to a host with a certificate missing a SAN." - pass - - -class InsecureRequestWarning(SecurityWarning): - "Warned when making an unverified HTTPS request." - pass - - -class SystemTimeWarning(SecurityWarning): - "Warned when system time is suspected to be wrong" - pass - - -class InsecurePlatformWarning(SecurityWarning): - "Warned when certain SSL configuration is not available on a platform." - pass - - -class SNIMissingWarning(HTTPWarning): - "Warned when making a HTTPS request without SNI available." - pass - - -class DependencyWarning(HTTPWarning): - """ - Warned when an attempt is made to import a module with missing optional - dependencies. - """ - pass - - -class ResponseNotChunked(ProtocolError, ValueError): - "Response needs to be chunked in order to read it as chunks." - pass - - -class BodyNotHttplibCompatible(HTTPError): - """ - Body should be httplib.HTTPResponse like (have an fp attribute which - returns raw chunks) for read_chunked(). - """ - pass - - -class IncompleteRead(HTTPError, httplib_IncompleteRead): - """ - Response length doesn't match expected Content-Length - - Subclass of http_client.IncompleteRead to allow int value - for `partial` to avoid creating large objects on streamed - reads. - """ - def __init__(self, partial, expected): - super(IncompleteRead, self).__init__(partial, expected) - - def __repr__(self): - return ('IncompleteRead(%i bytes read, ' - '%i more expected)' % (self.partial, self.expected)) - - -class InvalidHeader(HTTPError): - "The header provided was somehow invalid." - pass - - -class ProxySchemeUnknown(AssertionError, ValueError): - "ProxyManager does not support the supplied scheme" - # TODO(t-8ch): Stop inheriting from AssertionError in v2.0. - - def __init__(self, scheme): - message = "Not supported proxy scheme %s" % scheme - super(ProxySchemeUnknown, self).__init__(message) - - -class HeaderParsingError(HTTPError): - "Raised by assert_header_parsing, but we convert it to a log.warning statement." - def __init__(self, defects, unparsed_data): - message = '%s, unparsed data: %r' % (defects or 'Unknown', unparsed_data) - super(HeaderParsingError, self).__init__(message) - - -class UnrewindableBodyError(HTTPError): - "urllib3 encountered an error when trying to rewind a body" - pass diff --git a/python/urllib3/fields.py b/python/urllib3/fields.py deleted file mode 100644 index 37fe64a..0000000 --- a/python/urllib3/fields.py +++ /dev/null @@ -1,178 +0,0 @@ -from __future__ import absolute_import -import email.utils -import mimetypes - -from .packages import six - - -def guess_content_type(filename, default='application/octet-stream'): - """ - Guess the "Content-Type" of a file. - - :param filename: - The filename to guess the "Content-Type" of using :mod:`mimetypes`. - :param default: - If no "Content-Type" can be guessed, default to `default`. - """ - if filename: - return mimetypes.guess_type(filename)[0] or default - return default - - -def format_header_param(name, value): - """ - Helper function to format and quote a single header parameter. - - Particularly useful for header parameters which might contain - non-ASCII values, like file names. This follows RFC 2231, as - suggested by RFC 2388 Section 4.4. - - :param name: - The name of the parameter, a string expected to be ASCII only. - :param value: - The value of the parameter, provided as a unicode string. - """ - if not any(ch in value for ch in '"\\\r\n'): - result = '%s="%s"' % (name, value) - try: - result.encode('ascii') - except (UnicodeEncodeError, UnicodeDecodeError): - pass - else: - return result - if not six.PY3 and isinstance(value, six.text_type): # Python 2: - value = value.encode('utf-8') - value = email.utils.encode_rfc2231(value, 'utf-8') - value = '%s*=%s' % (name, value) - return value - - -class RequestField(object): - """ - A data container for request body parameters. - - :param name: - The name of this request field. - :param data: - The data/value body. - :param filename: - An optional filename of the request field. - :param headers: - An optional dict-like object of headers to initially use for the field. - """ - def __init__(self, name, data, filename=None, headers=None): - self._name = name - self._filename = filename - self.data = data - self.headers = {} - if headers: - self.headers = dict(headers) - - @classmethod - def from_tuples(cls, fieldname, value): - """ - A :class:`~urllib3.fields.RequestField` factory from old-style tuple parameters. - - Supports constructing :class:`~urllib3.fields.RequestField` from - parameter of key/value strings AND key/filetuple. A filetuple is a - (filename, data, MIME type) tuple where the MIME type is optional. - For example:: - - 'foo': 'bar', - 'fakefile': ('foofile.txt', 'contents of foofile'), - 'realfile': ('barfile.txt', open('realfile').read()), - 'typedfile': ('bazfile.bin', open('bazfile').read(), 'image/jpeg'), - 'nonamefile': 'contents of nonamefile field', - - Field names and filenames must be unicode. - """ - if isinstance(value, tuple): - if len(value) == 3: - filename, data, content_type = value - else: - filename, data = value - content_type = guess_content_type(filename) - else: - filename = None - content_type = None - data = value - - request_param = cls(fieldname, data, filename=filename) - request_param.make_multipart(content_type=content_type) - - return request_param - - def _render_part(self, name, value): - """ - Overridable helper function to format a single header parameter. - - :param name: - The name of the parameter, a string expected to be ASCII only. - :param value: - The value of the parameter, provided as a unicode string. - """ - return format_header_param(name, value) - - def _render_parts(self, header_parts): - """ - Helper function to format and quote a single header. - - Useful for single headers that are composed of multiple items. E.g., - 'Content-Disposition' fields. - - :param header_parts: - A sequence of (k, v) tuples or a :class:`dict` of (k, v) to format - as `k1="v1"; k2="v2"; ...`. - """ - parts = [] - iterable = header_parts - if isinstance(header_parts, dict): - iterable = header_parts.items() - - for name, value in iterable: - if value is not None: - parts.append(self._render_part(name, value)) - - return '; '.join(parts) - - def render_headers(self): - """ - Renders the headers for this request field. - """ - lines = [] - - sort_keys = ['Content-Disposition', 'Content-Type', 'Content-Location'] - for sort_key in sort_keys: - if self.headers.get(sort_key, False): - lines.append('%s: %s' % (sort_key, self.headers[sort_key])) - - for header_name, header_value in self.headers.items(): - if header_name not in sort_keys: - if header_value: - lines.append('%s: %s' % (header_name, header_value)) - - lines.append('\r\n') - return '\r\n'.join(lines) - - def make_multipart(self, content_disposition=None, content_type=None, - content_location=None): - """ - Makes this request field into a multipart request field. - - This method overrides "Content-Disposition", "Content-Type" and - "Content-Location" headers to the request parameter. - - :param content_type: - The 'Content-Type' of the request body. - :param content_location: - The 'Content-Location' of the request body. - - """ - self.headers['Content-Disposition'] = content_disposition or 'form-data' - self.headers['Content-Disposition'] += '; '.join([ - '', self._render_parts( - (('name', self._name), ('filename', self._filename)) - ) - ]) - self.headers['Content-Type'] = content_type - self.headers['Content-Location'] = content_location diff --git a/python/urllib3/filepost.py b/python/urllib3/filepost.py deleted file mode 100644 index 78f1e19..0000000 --- a/python/urllib3/filepost.py +++ /dev/null @@ -1,98 +0,0 @@ -from __future__ import absolute_import -import binascii -import codecs -import os - -from io import BytesIO - -from .packages import six -from .packages.six import b -from .fields import RequestField - -writer = codecs.lookup('utf-8')[3] - - -def choose_boundary(): - """ - Our embarrassingly-simple replacement for mimetools.choose_boundary. - """ - boundary = binascii.hexlify(os.urandom(16)) - if six.PY3: - boundary = boundary.decode('ascii') - return boundary - - -def iter_field_objects(fields): - """ - Iterate over fields. - - Supports list of (k, v) tuples and dicts, and lists of - :class:`~urllib3.fields.RequestField`. - - """ - if isinstance(fields, dict): - i = six.iteritems(fields) - else: - i = iter(fields) - - for field in i: - if isinstance(field, RequestField): - yield field - else: - yield RequestField.from_tuples(*field) - - -def iter_fields(fields): - """ - .. deprecated:: 1.6 - - Iterate over fields. - - The addition of :class:`~urllib3.fields.RequestField` makes this function - obsolete. Instead, use :func:`iter_field_objects`, which returns - :class:`~urllib3.fields.RequestField` objects. - - Supports list of (k, v) tuples and dicts. - """ - if isinstance(fields, dict): - return ((k, v) for k, v in six.iteritems(fields)) - - return ((k, v) for k, v in fields) - - -def encode_multipart_formdata(fields, boundary=None): - """ - Encode a dictionary of ``fields`` using the multipart/form-data MIME format. - - :param fields: - Dictionary of fields or list of (key, :class:`~urllib3.fields.RequestField`). - - :param boundary: - If not specified, then a random boundary will be generated using - :func:`urllib3.filepost.choose_boundary`. - """ - body = BytesIO() - if boundary is None: - boundary = choose_boundary() - - for field in iter_field_objects(fields): - body.write(b('--%s\r\n' % (boundary))) - - writer(body).write(field.render_headers()) - data = field.data - - if isinstance(data, int): - data = str(data) # Backwards compatibility - - if isinstance(data, six.text_type): - writer(body).write(data) - else: - body.write(data) - - body.write(b'\r\n') - - body.write(b('--%s--\r\n' % (boundary))) - - content_type = str('multipart/form-data; boundary=%s' % boundary) - - return body.getvalue(), content_type diff --git a/python/urllib3/packages/__init__.py b/python/urllib3/packages/__init__.py deleted file mode 100644 index 170e974..0000000 --- a/python/urllib3/packages/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from __future__ import absolute_import - -from . import ssl_match_hostname - -__all__ = ('ssl_match_hostname', ) diff --git a/python/urllib3/packages/backports/__init__.py b/python/urllib3/packages/backports/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/python/urllib3/packages/backports/makefile.py b/python/urllib3/packages/backports/makefile.py deleted file mode 100644 index 740db37..0000000 --- a/python/urllib3/packages/backports/makefile.py +++ /dev/null @@ -1,53 +0,0 @@ -# -*- coding: utf-8 -*- -""" -backports.makefile -~~~~~~~~~~~~~~~~~~ - -Backports the Python 3 ``socket.makefile`` method for use with anything that -wants to create a "fake" socket object. -""" -import io - -from socket import SocketIO - - -def backport_makefile(self, mode="r", buffering=None, encoding=None, - errors=None, newline=None): - """ - Backport of ``socket.makefile`` from Python 3.5. - """ - if not set(mode) <= {"r", "w", "b"}: - raise ValueError( - "invalid mode %r (only r, w, b allowed)" % (mode,) - ) - writing = "w" in mode - reading = "r" in mode or not writing - assert reading or writing - binary = "b" in mode - rawmode = "" - if reading: - rawmode += "r" - if writing: - rawmode += "w" - raw = SocketIO(self, rawmode) - self._makefile_refs += 1 - if buffering is None: - buffering = -1 - if buffering < 0: - buffering = io.DEFAULT_BUFFER_SIZE - if buffering == 0: - if not binary: - raise ValueError("unbuffered streams must be binary") - return raw - if reading and writing: - buffer = io.BufferedRWPair(raw, raw, buffering) - elif reading: - buffer = io.BufferedReader(raw, buffering) - else: - assert writing - buffer = io.BufferedWriter(raw, buffering) - if binary: - return buffer - text = io.TextIOWrapper(buffer, encoding, errors, newline) - text.mode = mode - return text diff --git a/python/urllib3/packages/six.py b/python/urllib3/packages/six.py deleted file mode 100644 index 190c023..0000000 --- a/python/urllib3/packages/six.py +++ /dev/null @@ -1,868 +0,0 @@ -"""Utilities for writing code that runs on Python 2 and 3""" - -# Copyright (c) 2010-2015 Benjamin Peterson -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -from __future__ import absolute_import - -import functools -import itertools -import operator -import sys -import types - -__author__ = "Benjamin Peterson <benjamin@python.org>" -__version__ = "1.10.0" - - -# Useful for very coarse version differentiation. -PY2 = sys.version_info[0] == 2 -PY3 = sys.version_info[0] == 3 -PY34 = sys.version_info[0:2] >= (3, 4) - -if PY3: - string_types = str, - integer_types = int, - class_types = type, - text_type = str - binary_type = bytes - - MAXSIZE = sys.maxsize -else: - string_types = basestring, - integer_types = (int, long) - class_types = (type, types.ClassType) - text_type = unicode - binary_type = str - - if sys.platform.startswith("java"): - # Jython always uses 32 bits. - MAXSIZE = int((1 << 31) - 1) - else: - # It's possible to have sizeof(long) != sizeof(Py_ssize_t). - class X(object): - - def __len__(self): - return 1 << 31 - try: - len(X()) - except OverflowError: - # 32-bit - MAXSIZE = int((1 << 31) - 1) - else: - # 64-bit - MAXSIZE = int((1 << 63) - 1) - del X - - -def _add_doc(func, doc): - """Add documentation to a function.""" - func.__doc__ = doc - - -def _import_module(name): - """Import module, returning the module after the last dot.""" - __import__(name) - return sys.modules[name] - - -class _LazyDescr(object): - - def __init__(self, name): - self.name = name - - def __get__(self, obj, tp): - result = self._resolve() - setattr(obj, self.name, result) # Invokes __set__. - try: - # This is a bit ugly, but it avoids running this again by - # removing this descriptor. - delattr(obj.__class__, self.name) - except AttributeError: - pass - return result - - -class MovedModule(_LazyDescr): - - def __init__(self, name, old, new=None): - super(MovedModule, self).__init__(name) - if PY3: - if new is None: - new = name - self.mod = new - else: - self.mod = old - - def _resolve(self): - return _import_module(self.mod) - - def __getattr__(self, attr): - _module = self._resolve() - value = getattr(_module, attr) - setattr(self, attr, value) - return value - - -class _LazyModule(types.ModuleType): - - def __init__(self, name): - super(_LazyModule, self).__init__(name) - self.__doc__ = self.__class__.__doc__ - - def __dir__(self): - attrs = ["__doc__", "__name__"] - attrs += [attr.name for attr in self._moved_attributes] - return attrs - - # Subclasses should override this - _moved_attributes = [] - - -class MovedAttribute(_LazyDescr): - - def __init__(self, name, old_mod, new_mod, old_attr=None, new_attr=None): - super(MovedAttribute, self).__init__(name) - if PY3: - if new_mod is None: - new_mod = name - self.mod = new_mod - if new_attr is None: - if old_attr is None: - new_attr = name - else: - new_attr = old_attr - self.attr = new_attr - else: - self.mod = old_mod - if old_attr is None: - old_attr = name - self.attr = old_attr - - def _resolve(self): - module = _import_module(self.mod) - return getattr(module, self.attr) - - -class _SixMetaPathImporter(object): - - """ - A meta path importer to import six.moves and its submodules. - - This class implements a PEP302 finder and loader. It should be compatible - with Python 2.5 and all existing versions of Python3 - """ - - def __init__(self, six_module_name): - self.name = six_module_name - self.known_modules = {} - - def _add_module(self, mod, *fullnames): - for fullname in fullnames: - self.known_modules[self.name + "." + fullname] = mod - - def _get_module(self, fullname): - return self.known_modules[self.name + "." + fullname] - - def find_module(self, fullname, path=None): - if fullname in self.known_modules: - return self - return None - - def __get_module(self, fullname): - try: - return self.known_modules[fullname] - except KeyError: - raise ImportError("This loader does not know module " + fullname) - - def load_module(self, fullname): - try: - # in case of a reload - return sys.modules[fullname] - except KeyError: - pass - mod = self.__get_module(fullname) - if isinstance(mod, MovedModule): - mod = mod._resolve() - else: - mod.__loader__ = self - sys.modules[fullname] = mod - return mod - - def is_package(self, fullname): - """ - Return true, if the named module is a package. - - We need this method to get correct spec objects with - Python 3.4 (see PEP451) - """ - return hasattr(self.__get_module(fullname), "__path__") - - def get_code(self, fullname): - """Return None - - Required, if is_package is implemented""" - self.__get_module(fullname) # eventually raises ImportError - return None - get_source = get_code # same as get_code - -_importer = _SixMetaPathImporter(__name__) - - -class _MovedItems(_LazyModule): - - """Lazy loading of moved objects""" - __path__ = [] # mark as package - - -_moved_attributes = [ - MovedAttribute("cStringIO", "cStringIO", "io", "StringIO"), - MovedAttribute("filter", "itertools", "builtins", "ifilter", "filter"), - MovedAttribute("filterfalse", "itertools", "itertools", "ifilterfalse", "filterfalse"), - MovedAttribute("input", "__builtin__", "builtins", "raw_input", "input"), - MovedAttribute("intern", "__builtin__", "sys"), - MovedAttribute("map", "itertools", "builtins", "imap", "map"), - MovedAttribute("getcwd", "os", "os", "getcwdu", "getcwd"), - MovedAttribute("getcwdb", "os", "os", "getcwd", "getcwdb"), - MovedAttribute("range", "__builtin__", "builtins", "xrange", "range"), - MovedAttribute("reload_module", "__builtin__", "importlib" if PY34 else "imp", "reload"), - MovedAttribute("reduce", "__builtin__", "functools"), - MovedAttribute("shlex_quote", "pipes", "shlex", "quote"), - MovedAttribute("StringIO", "StringIO", "io"), - MovedAttribute("UserDict", "UserDict", "collections"), - MovedAttribute("UserList", "UserList", "collections"), - MovedAttribute("UserString", "UserString", "collections"), - MovedAttribute("xrange", "__builtin__", "builtins", "xrange", "range"), - MovedAttribute("zip", "itertools", "builtins", "izip", "zip"), - MovedAttribute("zip_longest", "itertools", "itertools", "izip_longest", "zip_longest"), - MovedModule("builtins", "__builtin__"), - MovedModule("configparser", "ConfigParser"), - MovedModule("copyreg", "copy_reg"), - MovedModule("dbm_gnu", "gdbm", "dbm.gnu"), - MovedModule("_dummy_thread", "dummy_thread", "_dummy_thread"), - MovedModule("http_cookiejar", "cookielib", "http.cookiejar"), - MovedModule("http_cookies", "Cookie", "http.cookies"), - MovedModule("html_entities", "htmlentitydefs", "html.entities"), - MovedModule("html_parser", "HTMLParser", "html.parser"), - MovedModule("http_client", "httplib", "http.client"), - MovedModule("email_mime_multipart", "email.MIMEMultipart", "email.mime.multipart"), - MovedModule("email_mime_nonmultipart", "email.MIMENonMultipart", "email.mime.nonmultipart"), - MovedModule("email_mime_text", "email.MIMEText", "email.mime.text"), - MovedModule("email_mime_base", "email.MIMEBase", "email.mime.base"), - MovedModule("BaseHTTPServer", "BaseHTTPServer", "http.server"), - MovedModule("CGIHTTPServer", "CGIHTTPServer", "http.server"), - MovedModule("SimpleHTTPServer", "SimpleHTTPServer", "http.server"), - MovedModule("cPickle", "cPickle", "pickle"), - MovedModule("queue", "Queue"), - MovedModule("reprlib", "repr"), - MovedModule("socketserver", "SocketServer"), - MovedModule("_thread", "thread", "_thread"), - MovedModule("tkinter", "Tkinter"), - MovedModule("tkinter_dialog", "Dialog", "tkinter.dialog"), - MovedModule("tkinter_filedialog", "FileDialog", "tkinter.filedialog"), - MovedModule("tkinter_scrolledtext", "ScrolledText", "tkinter.scrolledtext"), - MovedModule("tkinter_simpledialog", "SimpleDialog", "tkinter.simpledialog"), - MovedModule("tkinter_tix", "Tix", "tkinter.tix"), - MovedModule("tkinter_ttk", "ttk", "tkinter.ttk"), - MovedModule("tkinter_constants", "Tkconstants", "tkinter.constants"), - MovedModule("tkinter_dnd", "Tkdnd", "tkinter.dnd"), - MovedModule("tkinter_colorchooser", "tkColorChooser", - "tkinter.colorchooser"), - MovedModule("tkinter_commondialog", "tkCommonDialog", - "tkinter.commondialog"), - MovedModule("tkinter_tkfiledialog", "tkFileDialog", "tkinter.filedialog"), - MovedModule("tkinter_font", "tkFont", "tkinter.font"), - MovedModule("tkinter_messagebox", "tkMessageBox", "tkinter.messagebox"), - MovedModule("tkinter_tksimpledialog", "tkSimpleDialog", - "tkinter.simpledialog"), - MovedModule("urllib_parse", __name__ + ".moves.urllib_parse", "urllib.parse"), - MovedModule("urllib_error", __name__ + ".moves.urllib_error", "urllib.error"), - MovedModule("urllib", __name__ + ".moves.urllib", __name__ + ".moves.urllib"), - MovedModule("urllib_robotparser", "robotparser", "urllib.robotparser"), - MovedModule("xmlrpc_client", "xmlrpclib", "xmlrpc.client"), - MovedModule("xmlrpc_server", "SimpleXMLRPCServer", "xmlrpc.server"), -] -# Add windows specific modules. -if sys.platform == "win32": - _moved_attributes += [ - MovedModule("winreg", "_winreg"), - ] - -for attr in _moved_attributes: - setattr(_MovedItems, attr.name, attr) - if isinstance(attr, MovedModule): - _importer._add_module(attr, "moves." + attr.name) -del attr - -_MovedItems._moved_attributes = _moved_attributes - -moves = _MovedItems(__name__ + ".moves") -_importer._add_module(moves, "moves") - - -class Module_six_moves_urllib_parse(_LazyModule): - - """Lazy loading of moved objects in six.moves.urllib_parse""" - - -_urllib_parse_moved_attributes = [ - MovedAttribute("ParseResult", "urlparse", "urllib.parse"), - MovedAttribute("SplitResult", "urlparse", "urllib.parse"), - MovedAttribute("parse_qs", "urlparse", "urllib.parse"), - MovedAttribute("parse_qsl", "urlparse", "urllib.parse"), - MovedAttribute("urldefrag", "urlparse", "urllib.parse"), - MovedAttribute("urljoin", "urlparse", "urllib.parse"), - MovedAttribute("urlparse", "urlparse", "urllib.parse"), - MovedAttribute("urlsplit", "urlparse", "urllib.parse"), - MovedAttribute("urlunparse", "urlparse", "urllib.parse"), - MovedAttribute("urlunsplit", "urlparse", "urllib.parse"), - MovedAttribute("quote", "urllib", "urllib.parse"), - MovedAttribute("quote_plus", "urllib", "urllib.parse"), - MovedAttribute("unquote", "urllib", "urllib.parse"), - MovedAttribute("unquote_plus", "urllib", "urllib.parse"), - MovedAttribute("urlencode", "urllib", "urllib.parse"), - MovedAttribute("splitquery", "urllib", "urllib.parse"), - MovedAttribute("splittag", "urllib", "urllib.parse"), - MovedAttribute("splituser", "urllib", "urllib.parse"), - MovedAttribute("uses_fragment", "urlparse", "urllib.parse"), - MovedAttribute("uses_netloc", "urlparse", "urllib.parse"), - MovedAttribute("uses_params", "urlparse", "urllib.parse"), - MovedAttribute("uses_query", "urlparse", "urllib.parse"), - MovedAttribute("uses_relative", "urlparse", "urllib.parse"), -] -for attr in _urllib_parse_moved_attributes: - setattr(Module_six_moves_urllib_parse, attr.name, attr) -del attr - -Module_six_moves_urllib_parse._moved_attributes = _urllib_parse_moved_attributes - -_importer._add_module(Module_six_moves_urllib_parse(__name__ + ".moves.urllib_parse"), - "moves.urllib_parse", "moves.urllib.parse") - - -class Module_six_moves_urllib_error(_LazyModule): - - """Lazy loading of moved objects in six.moves.urllib_error""" - - -_urllib_error_moved_attributes = [ - MovedAttribute("URLError", "urllib2", "urllib.error"), - MovedAttribute("HTTPError", "urllib2", "urllib.error"), - MovedAttribute("ContentTooShortError", "urllib", "urllib.error"), -] -for attr in _urllib_error_moved_attributes: - setattr(Module_six_moves_urllib_error, attr.name, attr) -del attr - -Module_six_moves_urllib_error._moved_attributes = _urllib_error_moved_attributes - -_importer._add_module(Module_six_moves_urllib_error(__name__ + ".moves.urllib.error"), - "moves.urllib_error", "moves.urllib.error") - - -class Module_six_moves_urllib_request(_LazyModule): - - """Lazy loading of moved objects in six.moves.urllib_request""" - - -_urllib_request_moved_attributes = [ - MovedAttribute("urlopen", "urllib2", "urllib.request"), - MovedAttribute("install_opener", "urllib2", "urllib.request"), - MovedAttribute("build_opener", "urllib2", "urllib.request"), - MovedAttribute("pathname2url", "urllib", "urllib.request"), - MovedAttribute("url2pathname", "urllib", "urllib.request"), - MovedAttribute("getproxies", "urllib", "urllib.request"), - MovedAttribute("Request", "urllib2", "urllib.request"), - MovedAttribute("OpenerDirector", "urllib2", "urllib.request"), - MovedAttribute("HTTPDefaultErrorHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPRedirectHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPCookieProcessor", "urllib2", "urllib.request"), - MovedAttribute("ProxyHandler", "urllib2", "urllib.request"), - MovedAttribute("BaseHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPPasswordMgr", "urllib2", "urllib.request"), - MovedAttribute("HTTPPasswordMgrWithDefaultRealm", "urllib2", "urllib.request"), - MovedAttribute("AbstractBasicAuthHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPBasicAuthHandler", "urllib2", "urllib.request"), - MovedAttribute("ProxyBasicAuthHandler", "urllib2", "urllib.request"), - MovedAttribute("AbstractDigestAuthHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPDigestAuthHandler", "urllib2", "urllib.request"), - MovedAttribute("ProxyDigestAuthHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPSHandler", "urllib2", "urllib.request"), - MovedAttribute("FileHandler", "urllib2", "urllib.request"), - MovedAttribute("FTPHandler", "urllib2", "urllib.request"), - MovedAttribute("CacheFTPHandler", "urllib2", "urllib.request"), - MovedAttribute("UnknownHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPErrorProcessor", "urllib2", "urllib.request"), - MovedAttribute("urlretrieve", "urllib", "urllib.request"), - MovedAttribute("urlcleanup", "urllib", "urllib.request"), - MovedAttribute("URLopener", "urllib", "urllib.request"), - MovedAttribute("FancyURLopener", "urllib", "urllib.request"), - MovedAttribute("proxy_bypass", "urllib", "urllib.request"), -] -for attr in _urllib_request_moved_attributes: - setattr(Module_six_moves_urllib_request, attr.name, attr) -del attr - -Module_six_moves_urllib_request._moved_attributes = _urllib_request_moved_attributes - -_importer._add_module(Module_six_moves_urllib_request(__name__ + ".moves.urllib.request"), - "moves.urllib_request", "moves.urllib.request") - - -class Module_six_moves_urllib_response(_LazyModule): - - """Lazy loading of moved objects in six.moves.urllib_response""" - - -_urllib_response_moved_attributes = [ - MovedAttribute("addbase", "urllib", "urllib.response"), - MovedAttribute("addclosehook", "urllib", "urllib.response"), - MovedAttribute("addinfo", "urllib", "urllib.response"), - MovedAttribute("addinfourl", "urllib", "urllib.response"), -] -for attr in _urllib_response_moved_attributes: - setattr(Module_six_moves_urllib_response, attr.name, attr) -del attr - -Module_six_moves_urllib_response._moved_attributes = _urllib_response_moved_attributes - -_importer._add_module(Module_six_moves_urllib_response(__name__ + ".moves.urllib.response"), - "moves.urllib_response", "moves.urllib.response") - - -class Module_six_moves_urllib_robotparser(_LazyModule): - - """Lazy loading of moved objects in six.moves.urllib_robotparser""" - - -_urllib_robotparser_moved_attributes = [ - MovedAttribute("RobotFileParser", "robotparser", "urllib.robotparser"), -] -for attr in _urllib_robotparser_moved_attributes: - setattr(Module_six_moves_urllib_robotparser, attr.name, attr) -del attr - -Module_six_moves_urllib_robotparser._moved_attributes = _urllib_robotparser_moved_attributes - -_importer._add_module(Module_six_moves_urllib_robotparser(__name__ + ".moves.urllib.robotparser"), - "moves.urllib_robotparser", "moves.urllib.robotparser") - - -class Module_six_moves_urllib(types.ModuleType): - - """Create a six.moves.urllib namespace that resembles the Python 3 namespace""" - __path__ = [] # mark as package - parse = _importer._get_module("moves.urllib_parse") - error = _importer._get_module("moves.urllib_error") - request = _importer._get_module("moves.urllib_request") - response = _importer._get_module("moves.urllib_response") - robotparser = _importer._get_module("moves.urllib_robotparser") - - def __dir__(self): - return ['parse', 'error', 'request', 'response', 'robotparser'] - -_importer._add_module(Module_six_moves_urllib(__name__ + ".moves.urllib"), - "moves.urllib") - - -def add_move(move): - """Add an item to six.moves.""" - setattr(_MovedItems, move.name, move) - - -def remove_move(name): - """Remove item from six.moves.""" - try: - delattr(_MovedItems, name) - except AttributeError: - try: - del moves.__dict__[name] - except KeyError: - raise AttributeError("no such move, %r" % (name,)) - - -if PY3: - _meth_func = "__func__" - _meth_self = "__self__" - - _func_closure = "__closure__" - _func_code = "__code__" - _func_defaults = "__defaults__" - _func_globals = "__globals__" -else: - _meth_func = "im_func" - _meth_self = "im_self" - - _func_closure = "func_closure" - _func_code = "func_code" - _func_defaults = "func_defaults" - _func_globals = "func_globals" - - -try: - advance_iterator = next -except NameError: - def advance_iterator(it): - return it.next() -next = advance_iterator - - -try: - callable = callable -except NameError: - def callable(obj): - return any("__call__" in klass.__dict__ for klass in type(obj).__mro__) - - -if PY3: - def get_unbound_function(unbound): - return unbound - - create_bound_method = types.MethodType - - def create_unbound_method(func, cls): - return func - - Iterator = object -else: - def get_unbound_function(unbound): - return unbound.im_func - - def create_bound_method(func, obj): - return types.MethodType(func, obj, obj.__class__) - - def create_unbound_method(func, cls): - return types.MethodType(func, None, cls) - - class Iterator(object): - - def next(self): - return type(self).__next__(self) - - callable = callable -_add_doc(get_unbound_function, - """Get the function out of a possibly unbound function""") - - -get_method_function = operator.attrgetter(_meth_func) -get_method_self = operator.attrgetter(_meth_self) -get_function_closure = operator.attrgetter(_func_closure) -get_function_code = operator.attrgetter(_func_code) -get_function_defaults = operator.attrgetter(_func_defaults) -get_function_globals = operator.attrgetter(_func_globals) - - -if PY3: - def iterkeys(d, **kw): - return iter(d.keys(**kw)) - - def itervalues(d, **kw): - return iter(d.values(**kw)) - - def iteritems(d, **kw): - return iter(d.items(**kw)) - - def iterlists(d, **kw): - return iter(d.lists(**kw)) - - viewkeys = operator.methodcaller("keys") - - viewvalues = operator.methodcaller("values") - - viewitems = operator.methodcaller("items") -else: - def iterkeys(d, **kw): - return d.iterkeys(**kw) - - def itervalues(d, **kw): - return d.itervalues(**kw) - - def iteritems(d, **kw): - return d.iteritems(**kw) - - def iterlists(d, **kw): - return d.iterlists(**kw) - - viewkeys = operator.methodcaller("viewkeys") - - viewvalues = operator.methodcaller("viewvalues") - - viewitems = operator.methodcaller("viewitems") - -_add_doc(iterkeys, "Return an iterator over the keys of a dictionary.") -_add_doc(itervalues, "Return an iterator over the values of a dictionary.") -_add_doc(iteritems, - "Return an iterator over the (key, value) pairs of a dictionary.") -_add_doc(iterlists, - "Return an iterator over the (key, [values]) pairs of a dictionary.") - - -if PY3: - def b(s): - return s.encode("latin-1") - - def u(s): - return s - unichr = chr - import struct - int2byte = struct.Struct(">B").pack - del struct - byte2int = operator.itemgetter(0) - indexbytes = operator.getitem - iterbytes = iter - import io - StringIO = io.StringIO - BytesIO = io.BytesIO - _assertCountEqual = "assertCountEqual" - if sys.version_info[1] <= 1: - _assertRaisesRegex = "assertRaisesRegexp" - _assertRegex = "assertRegexpMatches" - else: - _assertRaisesRegex = "assertRaisesRegex" - _assertRegex = "assertRegex" -else: - def b(s): - return s - # Workaround for standalone backslash - - def u(s): - return unicode(s.replace(r'\\', r'\\\\'), "unicode_escape") - unichr = unichr - int2byte = chr - - def byte2int(bs): - return ord(bs[0]) - - def indexbytes(buf, i): - return ord(buf[i]) - iterbytes = functools.partial(itertools.imap, ord) - import StringIO - StringIO = BytesIO = StringIO.StringIO - _assertCountEqual = "assertItemsEqual" - _assertRaisesRegex = "assertRaisesRegexp" - _assertRegex = "assertRegexpMatches" -_add_doc(b, """Byte literal""") -_add_doc(u, """Text literal""") - - -def assertCountEqual(self, *args, **kwargs): - return getattr(self, _assertCountEqual)(*args, **kwargs) - - -def assertRaisesRegex(self, *args, **kwargs): - return getattr(self, _assertRaisesRegex)(*args, **kwargs) - - -def assertRegex(self, *args, **kwargs): - return getattr(self, _assertRegex)(*args, **kwargs) - - -if PY3: - exec_ = getattr(moves.builtins, "exec") - - def reraise(tp, value, tb=None): - if value is None: - value = tp() - if value.__traceback__ is not tb: - raise value.with_traceback(tb) - raise value - -else: - def exec_(_code_, _globs_=None, _locs_=None): - """Execute code in a namespace.""" - if _globs_ is None: - frame = sys._getframe(1) - _globs_ = frame.f_globals - if _locs_ is None: - _locs_ = frame.f_locals - del frame - elif _locs_ is None: - _locs_ = _globs_ - exec("""exec _code_ in _globs_, _locs_""") - - exec_("""def reraise(tp, value, tb=None): - raise tp, value, tb -""") - - -if sys.version_info[:2] == (3, 2): - exec_("""def raise_from(value, from_value): - if from_value is None: - raise value - raise value from from_value -""") -elif sys.version_info[:2] > (3, 2): - exec_("""def raise_from(value, from_value): - raise value from from_value -""") -else: - def raise_from(value, from_value): - raise value - - -print_ = getattr(moves.builtins, "print", None) -if print_ is None: - def print_(*args, **kwargs): - """The new-style print function for Python 2.4 and 2.5.""" - fp = kwargs.pop("file", sys.stdout) - if fp is None: - return - - def write(data): - if not isinstance(data, basestring): - data = str(data) - # If the file has an encoding, encode unicode with it. - if (isinstance(fp, file) and - isinstance(data, unicode) and - fp.encoding is not None): - errors = getattr(fp, "errors", None) - if errors is None: - errors = "strict" - data = data.encode(fp.encoding, errors) - fp.write(data) - want_unicode = False - sep = kwargs.pop("sep", None) - if sep is not None: - if isinstance(sep, unicode): - want_unicode = True - elif not isinstance(sep, str): - raise TypeError("sep must be None or a string") - end = kwargs.pop("end", None) - if end is not None: - if isinstance(end, unicode): - want_unicode = True - elif not isinstance(end, str): - raise TypeError("end must be None or a string") - if kwargs: - raise TypeError("invalid keyword arguments to print()") - if not want_unicode: - for arg in args: - if isinstance(arg, unicode): - want_unicode = True - break - if want_unicode: - newline = unicode("\n") - space = unicode(" ") - else: - newline = "\n" - space = " " - if sep is None: - sep = space - if end is None: - end = newline - for i, arg in enumerate(args): - if i: - write(sep) - write(arg) - write(end) -if sys.version_info[:2] < (3, 3): - _print = print_ - - def print_(*args, **kwargs): - fp = kwargs.get("file", sys.stdout) - flush = kwargs.pop("flush", False) - _print(*args, **kwargs) - if flush and fp is not None: - fp.flush() - -_add_doc(reraise, """Reraise an exception.""") - -if sys.version_info[0:2] < (3, 4): - def wraps(wrapped, assigned=functools.WRAPPER_ASSIGNMENTS, - updated=functools.WRAPPER_UPDATES): - def wrapper(f): - f = functools.wraps(wrapped, assigned, updated)(f) - f.__wrapped__ = wrapped - return f - return wrapper -else: - wraps = functools.wraps - - -def with_metaclass(meta, *bases): - """Create a base class with a metaclass.""" - # This requires a bit of explanation: the basic idea is to make a dummy - # metaclass for one level of class instantiation that replaces itself with - # the actual metaclass. - class metaclass(meta): - - def __new__(cls, name, this_bases, d): - return meta(name, bases, d) - return type.__new__(metaclass, 'temporary_class', (), {}) - - -def add_metaclass(metaclass): - """Class decorator for creating a class with a metaclass.""" - def wrapper(cls): - orig_vars = cls.__dict__.copy() - slots = orig_vars.get('__slots__') - if slots is not None: - if isinstance(slots, str): - slots = [slots] - for slots_var in slots: - orig_vars.pop(slots_var) - orig_vars.pop('__dict__', None) - orig_vars.pop('__weakref__', None) - return metaclass(cls.__name__, cls.__bases__, orig_vars) - return wrapper - - -def python_2_unicode_compatible(klass): - """ - A decorator that defines __unicode__ and __str__ methods under Python 2. - Under Python 3 it does nothing. - - To support Python 2 and 3 with a single code base, define a __str__ method - returning text and apply this decorator to the class. - """ - if PY2: - if '__str__' not in klass.__dict__: - raise ValueError("@python_2_unicode_compatible cannot be applied " - "to %s because it doesn't define __str__()." % - klass.__name__) - klass.__unicode__ = klass.__str__ - klass.__str__ = lambda self: self.__unicode__().encode('utf-8') - return klass - - -# Complete the moves implementation. -# This code is at the end of this module to speed up module loading. -# Turn this module into a package. -__path__ = [] # required for PEP 302 and PEP 451 -__package__ = __name__ # see PEP 366 @ReservedAssignment -if globals().get("__spec__") is not None: - __spec__.submodule_search_locations = [] # PEP 451 @UndefinedVariable -# Remove other six meta path importers, since they cause problems. This can -# happen if six is removed from sys.modules and then reloaded. (Setuptools does -# this for some reason.) -if sys.meta_path: - for i, importer in enumerate(sys.meta_path): - # Here's some real nastiness: Another "instance" of the six module might - # be floating around. Therefore, we can't use isinstance() to check for - # the six meta path importer, since the other six instance will have - # inserted an importer with different class. - if (type(importer).__name__ == "_SixMetaPathImporter" and - importer.name == __name__): - del sys.meta_path[i] - break - del i, importer -# Finally, add the importer to the meta path import hook. -sys.meta_path.append(_importer) diff --git a/python/urllib3/packages/ssl_match_hostname/__init__.py b/python/urllib3/packages/ssl_match_hostname/__init__.py deleted file mode 100644 index d6594eb..0000000 --- a/python/urllib3/packages/ssl_match_hostname/__init__.py +++ /dev/null @@ -1,19 +0,0 @@ -import sys - -try: - # Our match_hostname function is the same as 3.5's, so we only want to - # import the match_hostname function if it's at least that good. - if sys.version_info < (3, 5): - raise ImportError("Fallback to vendored code") - - from ssl import CertificateError, match_hostname -except ImportError: - try: - # Backport of the function from a pypi module - from backports.ssl_match_hostname import CertificateError, match_hostname - except ImportError: - # Our vendored copy - from ._implementation import CertificateError, match_hostname - -# Not needed, but documenting what we provide. -__all__ = ('CertificateError', 'match_hostname') diff --git a/python/urllib3/packages/ssl_match_hostname/_implementation.py b/python/urllib3/packages/ssl_match_hostname/_implementation.py deleted file mode 100644 index d6e66c0..0000000 --- a/python/urllib3/packages/ssl_match_hostname/_implementation.py +++ /dev/null @@ -1,156 +0,0 @@ -"""The match_hostname() function from Python 3.3.3, essential when using SSL.""" - -# Note: This file is under the PSF license as the code comes from the python -# stdlib. http://docs.python.org/3/license.html - -import re -import sys - -# ipaddress has been backported to 2.6+ in pypi. If it is installed on the -# system, use it to handle IPAddress ServerAltnames (this was added in -# python-3.5) otherwise only do DNS matching. This allows -# backports.ssl_match_hostname to continue to be used in Python 2.7. -try: - import ipaddress -except ImportError: - ipaddress = None - -__version__ = '3.5.0.1' - - -class CertificateError(ValueError): - pass - - -def _dnsname_match(dn, hostname, max_wildcards=1): - """Matching according to RFC 6125, section 6.4.3 - - http://tools.ietf.org/html/rfc6125#section-6.4.3 - """ - pats = [] - if not dn: - return False - - # Ported from python3-syntax: - # leftmost, *remainder = dn.split(r'.') - parts = dn.split(r'.') - leftmost = parts[0] - remainder = parts[1:] - - wildcards = leftmost.count('*') - if wildcards > max_wildcards: - # Issue #17980: avoid denials of service by refusing more - # than one wildcard per fragment. A survey of established - # policy among SSL implementations showed it to be a - # reasonable choice. - raise CertificateError( - "too many wildcards in certificate DNS name: " + repr(dn)) - - # speed up common case w/o wildcards - if not wildcards: - return dn.lower() == hostname.lower() - - # RFC 6125, section 6.4.3, subitem 1. - # The client SHOULD NOT attempt to match a presented identifier in which - # the wildcard character comprises a label other than the left-most label. - if leftmost == '*': - # When '*' is a fragment by itself, it matches a non-empty dotless - # fragment. - pats.append('[^.]+') - elif leftmost.startswith('xn--') or hostname.startswith('xn--'): - # RFC 6125, section 6.4.3, subitem 3. - # The client SHOULD NOT attempt to match a presented identifier - # where the wildcard character is embedded within an A-label or - # U-label of an internationalized domain name. - pats.append(re.escape(leftmost)) - else: - # Otherwise, '*' matches any dotless string, e.g. www* - pats.append(re.escape(leftmost).replace(r'\*', '[^.]*')) - - # add the remaining fragments, ignore any wildcards - for frag in remainder: - pats.append(re.escape(frag)) - - pat = re.compile(r'\A' + r'\.'.join(pats) + r'\Z', re.IGNORECASE) - return pat.match(hostname) - - -def _to_unicode(obj): - if isinstance(obj, str) and sys.version_info < (3,): - obj = unicode(obj, encoding='ascii', errors='strict') - return obj - -def _ipaddress_match(ipname, host_ip): - """Exact matching of IP addresses. - - RFC 6125 explicitly doesn't define an algorithm for this - (section 1.7.2 - "Out of Scope"). - """ - # OpenSSL may add a trailing newline to a subjectAltName's IP address - # Divergence from upstream: ipaddress can't handle byte str - ip = ipaddress.ip_address(_to_unicode(ipname).rstrip()) - return ip == host_ip - - -def match_hostname(cert, hostname): - """Verify that *cert* (in decoded format as returned by - SSLSocket.getpeercert()) matches the *hostname*. RFC 2818 and RFC 6125 - rules are followed, but IP addresses are not accepted for *hostname*. - - CertificateError is raised on failure. On success, the function - returns nothing. - """ - if not cert: - raise ValueError("empty or no certificate, match_hostname needs a " - "SSL socket or SSL context with either " - "CERT_OPTIONAL or CERT_REQUIRED") - try: - # Divergence from upstream: ipaddress can't handle byte str - host_ip = ipaddress.ip_address(_to_unicode(hostname)) - except ValueError: - # Not an IP address (common case) - host_ip = None - except UnicodeError: - # Divergence from upstream: Have to deal with ipaddress not taking - # byte strings. addresses should be all ascii, so we consider it not - # an ipaddress in this case - host_ip = None - except AttributeError: - # Divergence from upstream: Make ipaddress library optional - if ipaddress is None: - host_ip = None - else: - raise - dnsnames = [] - san = cert.get('subjectAltName', ()) - for key, value in san: - if key == 'DNS': - if host_ip is None and _dnsname_match(value, hostname): - return - dnsnames.append(value) - elif key == 'IP Address': - if host_ip is not None and _ipaddress_match(value, host_ip): - return - dnsnames.append(value) - if not dnsnames: - # The subject is only checked when there is no dNSName entry - # in subjectAltName - for sub in cert.get('subject', ()): - for key, value in sub: - # XXX according to RFC 2818, the most specific Common Name - # must be used. - if key == 'commonName': - if _dnsname_match(value, hostname): - return - dnsnames.append(value) - if len(dnsnames) > 1: - raise CertificateError("hostname %r " - "doesn't match either of %s" - % (hostname, ', '.join(map(repr, dnsnames)))) - elif len(dnsnames) == 1: - raise CertificateError("hostname %r " - "doesn't match %r" - % (hostname, dnsnames[0])) - else: - raise CertificateError("no appropriate commonName or " - "subjectAltName fields were found") diff --git a/python/urllib3/poolmanager.py b/python/urllib3/poolmanager.py deleted file mode 100644 index fe5491c..0000000 --- a/python/urllib3/poolmanager.py +++ /dev/null @@ -1,450 +0,0 @@ -from __future__ import absolute_import -import collections -import functools -import logging - -from ._collections import RecentlyUsedContainer -from .connectionpool import HTTPConnectionPool, HTTPSConnectionPool -from .connectionpool import port_by_scheme -from .exceptions import LocationValueError, MaxRetryError, ProxySchemeUnknown -from .packages.six.moves.urllib.parse import urljoin -from .request import RequestMethods -from .util.url import parse_url -from .util.retry import Retry - - -__all__ = ['PoolManager', 'ProxyManager', 'proxy_from_url'] - - -log = logging.getLogger(__name__) - -SSL_KEYWORDS = ('key_file', 'cert_file', 'cert_reqs', 'ca_certs', - 'ssl_version', 'ca_cert_dir', 'ssl_context') - -# All known keyword arguments that could be provided to the pool manager, its -# pools, or the underlying connections. This is used to construct a pool key. -_key_fields = ( - 'key_scheme', # str - 'key_host', # str - 'key_port', # int - 'key_timeout', # int or float or Timeout - 'key_retries', # int or Retry - 'key_strict', # bool - 'key_block', # bool - 'key_source_address', # str - 'key_key_file', # str - 'key_cert_file', # str - 'key_cert_reqs', # str - 'key_ca_certs', # str - 'key_ssl_version', # str - 'key_ca_cert_dir', # str - 'key_ssl_context', # instance of ssl.SSLContext or urllib3.util.ssl_.SSLContext - 'key_maxsize', # int - 'key_headers', # dict - 'key__proxy', # parsed proxy url - 'key__proxy_headers', # dict - 'key_socket_options', # list of (level (int), optname (int), value (int or str)) tuples - 'key__socks_options', # dict - 'key_assert_hostname', # bool or string - 'key_assert_fingerprint', # str - 'key_server_hostname', #str -) - -#: The namedtuple class used to construct keys for the connection pool. -#: All custom key schemes should include the fields in this key at a minimum. -PoolKey = collections.namedtuple('PoolKey', _key_fields) - - -def _default_key_normalizer(key_class, request_context): - """ - Create a pool key out of a request context dictionary. - - According to RFC 3986, both the scheme and host are case-insensitive. - Therefore, this function normalizes both before constructing the pool - key for an HTTPS request. If you wish to change this behaviour, provide - alternate callables to ``key_fn_by_scheme``. - - :param key_class: - The class to use when constructing the key. This should be a namedtuple - with the ``scheme`` and ``host`` keys at a minimum. - :type key_class: namedtuple - :param request_context: - A dictionary-like object that contain the context for a request. - :type request_context: dict - - :return: A namedtuple that can be used as a connection pool key. - :rtype: PoolKey - """ - # Since we mutate the dictionary, make a copy first - context = request_context.copy() - context['scheme'] = context['scheme'].lower() - context['host'] = context['host'].lower() - - # These are both dictionaries and need to be transformed into frozensets - for key in ('headers', '_proxy_headers', '_socks_options'): - if key in context and context[key] is not None: - context[key] = frozenset(context[key].items()) - - # The socket_options key may be a list and needs to be transformed into a - # tuple. - socket_opts = context.get('socket_options') - if socket_opts is not None: - context['socket_options'] = tuple(socket_opts) - - # Map the kwargs to the names in the namedtuple - this is necessary since - # namedtuples can't have fields starting with '_'. - for key in list(context.keys()): - context['key_' + key] = context.pop(key) - - # Default to ``None`` for keys missing from the context - for field in key_class._fields: - if field not in context: - context[field] = None - - return key_class(**context) - - -#: A dictionary that maps a scheme to a callable that creates a pool key. -#: This can be used to alter the way pool keys are constructed, if desired. -#: Each PoolManager makes a copy of this dictionary so they can be configured -#: globally here, or individually on the instance. -key_fn_by_scheme = { - 'http': functools.partial(_default_key_normalizer, PoolKey), - 'https': functools.partial(_default_key_normalizer, PoolKey), -} - -pool_classes_by_scheme = { - 'http': HTTPConnectionPool, - 'https': HTTPSConnectionPool, -} - - -class PoolManager(RequestMethods): - """ - Allows for arbitrary requests while transparently keeping track of - necessary connection pools for you. - - :param num_pools: - Number of connection pools to cache before discarding the least - recently used pool. - - :param headers: - Headers to include with all requests, unless other headers are given - explicitly. - - :param \\**connection_pool_kw: - Additional parameters are used to create fresh - :class:`urllib3.connectionpool.ConnectionPool` instances. - - Example:: - - >>> manager = PoolManager(num_pools=2) - >>> r = manager.request('GET', 'http://google.com/') - >>> r = manager.request('GET', 'http://google.com/mail') - >>> r = manager.request('GET', 'http://yahoo.com/') - >>> len(manager.pools) - 2 - - """ - - proxy = None - - def __init__(self, num_pools=10, headers=None, **connection_pool_kw): - RequestMethods.__init__(self, headers) - self.connection_pool_kw = connection_pool_kw - self.pools = RecentlyUsedContainer(num_pools, - dispose_func=lambda p: p.close()) - - # Locally set the pool classes and keys so other PoolManagers can - # override them. - self.pool_classes_by_scheme = pool_classes_by_scheme - self.key_fn_by_scheme = key_fn_by_scheme.copy() - - def __enter__(self): - return self - - def __exit__(self, exc_type, exc_val, exc_tb): - self.clear() - # Return False to re-raise any potential exceptions - return False - - def _new_pool(self, scheme, host, port, request_context=None): - """ - Create a new :class:`ConnectionPool` based on host, port, scheme, and - any additional pool keyword arguments. - - If ``request_context`` is provided, it is provided as keyword arguments - to the pool class used. This method is used to actually create the - connection pools handed out by :meth:`connection_from_url` and - companion methods. It is intended to be overridden for customization. - """ - pool_cls = self.pool_classes_by_scheme[scheme] - if request_context is None: - request_context = self.connection_pool_kw.copy() - - # Although the context has everything necessary to create the pool, - # this function has historically only used the scheme, host, and port - # in the positional args. When an API change is acceptable these can - # be removed. - for key in ('scheme', 'host', 'port'): - request_context.pop(key, None) - - if scheme == 'http': - for kw in SSL_KEYWORDS: - request_context.pop(kw, None) - - return pool_cls(host, port, **request_context) - - def clear(self): - """ - Empty our store of pools and direct them all to close. - - This will not affect in-flight connections, but they will not be - re-used after completion. - """ - self.pools.clear() - - def connection_from_host(self, host, port=None, scheme='http', pool_kwargs=None): - """ - Get a :class:`ConnectionPool` based on the host, port, and scheme. - - If ``port`` isn't given, it will be derived from the ``scheme`` using - ``urllib3.connectionpool.port_by_scheme``. If ``pool_kwargs`` is - provided, it is merged with the instance's ``connection_pool_kw`` - variable and used to create the new connection pool, if one is - needed. - """ - - if not host: - raise LocationValueError("No host specified.") - - request_context = self._merge_pool_kwargs(pool_kwargs) - request_context['scheme'] = scheme or 'http' - if not port: - port = port_by_scheme.get(request_context['scheme'].lower(), 80) - request_context['port'] = port - request_context['host'] = host - - return self.connection_from_context(request_context) - - def connection_from_context(self, request_context): - """ - Get a :class:`ConnectionPool` based on the request context. - - ``request_context`` must at least contain the ``scheme`` key and its - value must be a key in ``key_fn_by_scheme`` instance variable. - """ - scheme = request_context['scheme'].lower() - pool_key_constructor = self.key_fn_by_scheme[scheme] - pool_key = pool_key_constructor(request_context) - - return self.connection_from_pool_key(pool_key, request_context=request_context) - - def connection_from_pool_key(self, pool_key, request_context=None): - """ - Get a :class:`ConnectionPool` based on the provided pool key. - - ``pool_key`` should be a namedtuple that only contains immutable - objects. At a minimum it must have the ``scheme``, ``host``, and - ``port`` fields. - """ - with self.pools.lock: - # If the scheme, host, or port doesn't match existing open - # connections, open a new ConnectionPool. - pool = self.pools.get(pool_key) - if pool: - return pool - - # Make a fresh ConnectionPool of the desired type - scheme = request_context['scheme'] - host = request_context['host'] - port = request_context['port'] - pool = self._new_pool(scheme, host, port, request_context=request_context) - self.pools[pool_key] = pool - - return pool - - def connection_from_url(self, url, pool_kwargs=None): - """ - Similar to :func:`urllib3.connectionpool.connection_from_url`. - - If ``pool_kwargs`` is not provided and a new pool needs to be - constructed, ``self.connection_pool_kw`` is used to initialize - the :class:`urllib3.connectionpool.ConnectionPool`. If ``pool_kwargs`` - is provided, it is used instead. Note that if a new pool does not - need to be created for the request, the provided ``pool_kwargs`` are - not used. - """ - u = parse_url(url) - return self.connection_from_host(u.host, port=u.port, scheme=u.scheme, - pool_kwargs=pool_kwargs) - - def _merge_pool_kwargs(self, override): - """ - Merge a dictionary of override values for self.connection_pool_kw. - - This does not modify self.connection_pool_kw and returns a new dict. - Any keys in the override dictionary with a value of ``None`` are - removed from the merged dictionary. - """ - base_pool_kwargs = self.connection_pool_kw.copy() - if override: - for key, value in override.items(): - if value is None: - try: - del base_pool_kwargs[key] - except KeyError: - pass - else: - base_pool_kwargs[key] = value - return base_pool_kwargs - - def urlopen(self, method, url, redirect=True, **kw): - """ - Same as :meth:`urllib3.connectionpool.HTTPConnectionPool.urlopen` - with custom cross-host redirect logic and only sends the request-uri - portion of the ``url``. - - The given ``url`` parameter must be absolute, such that an appropriate - :class:`urllib3.connectionpool.ConnectionPool` can be chosen for it. - """ - u = parse_url(url) - conn = self.connection_from_host(u.host, port=u.port, scheme=u.scheme) - - kw['assert_same_host'] = False - kw['redirect'] = False - - if 'headers' not in kw: - kw['headers'] = self.headers.copy() - - if self.proxy is not None and u.scheme == "http": - response = conn.urlopen(method, url, **kw) - else: - response = conn.urlopen(method, u.request_uri, **kw) - - redirect_location = redirect and response.get_redirect_location() - if not redirect_location: - return response - - # Support relative URLs for redirecting. - redirect_location = urljoin(url, redirect_location) - - # RFC 7231, Section 6.4.4 - if response.status == 303: - method = 'GET' - - retries = kw.get('retries') - if not isinstance(retries, Retry): - retries = Retry.from_int(retries, redirect=redirect) - - # Strip headers marked as unsafe to forward to the redirected location. - # Check remove_headers_on_redirect to avoid a potential network call within - # conn.is_same_host() which may use socket.gethostbyname() in the future. - if (retries.remove_headers_on_redirect - and not conn.is_same_host(redirect_location)): - for header in retries.remove_headers_on_redirect: - kw['headers'].pop(header, None) - - try: - retries = retries.increment(method, url, response=response, _pool=conn) - except MaxRetryError: - if retries.raise_on_redirect: - raise - return response - - kw['retries'] = retries - kw['redirect'] = redirect - - log.info("Redirecting %s -> %s", url, redirect_location) - return self.urlopen(method, redirect_location, **kw) - - -class ProxyManager(PoolManager): - """ - Behaves just like :class:`PoolManager`, but sends all requests through - the defined proxy, using the CONNECT method for HTTPS URLs. - - :param proxy_url: - The URL of the proxy to be used. - - :param proxy_headers: - A dictionary containing headers that will be sent to the proxy. In case - of HTTP they are being sent with each request, while in the - HTTPS/CONNECT case they are sent only once. Could be used for proxy - authentication. - - Example: - >>> proxy = urllib3.ProxyManager('http://localhost:3128/') - >>> r1 = proxy.request('GET', 'http://google.com/') - >>> r2 = proxy.request('GET', 'http://httpbin.org/') - >>> len(proxy.pools) - 1 - >>> r3 = proxy.request('GET', 'https://httpbin.org/') - >>> r4 = proxy.request('GET', 'https://twitter.com/') - >>> len(proxy.pools) - 3 - - """ - - def __init__(self, proxy_url, num_pools=10, headers=None, - proxy_headers=None, **connection_pool_kw): - - if isinstance(proxy_url, HTTPConnectionPool): - proxy_url = '%s://%s:%i' % (proxy_url.scheme, proxy_url.host, - proxy_url.port) - proxy = parse_url(proxy_url) - if not proxy.port: - port = port_by_scheme.get(proxy.scheme, 80) - proxy = proxy._replace(port=port) - - if proxy.scheme not in ("http", "https"): - raise ProxySchemeUnknown(proxy.scheme) - - self.proxy = proxy - self.proxy_headers = proxy_headers or {} - - connection_pool_kw['_proxy'] = self.proxy - connection_pool_kw['_proxy_headers'] = self.proxy_headers - - super(ProxyManager, self).__init__( - num_pools, headers, **connection_pool_kw) - - def connection_from_host(self, host, port=None, scheme='http', pool_kwargs=None): - if scheme == "https": - return super(ProxyManager, self).connection_from_host( - host, port, scheme, pool_kwargs=pool_kwargs) - - return super(ProxyManager, self).connection_from_host( - self.proxy.host, self.proxy.port, self.proxy.scheme, pool_kwargs=pool_kwargs) - - def _set_proxy_headers(self, url, headers=None): - """ - Sets headers needed by proxies: specifically, the Accept and Host - headers. Only sets headers not provided by the user. - """ - headers_ = {'Accept': '*/*'} - - netloc = parse_url(url).netloc - if netloc: - headers_['Host'] = netloc - - if headers: - headers_.update(headers) - return headers_ - - def urlopen(self, method, url, redirect=True, **kw): - "Same as HTTP(S)ConnectionPool.urlopen, ``url`` must be absolute." - u = parse_url(url) - - if u.scheme == "http": - # For proxied HTTPS requests, httplib sets the necessary headers - # on the CONNECT to the proxy. For HTTP, we'll definitely - # need to set 'Host' at the very least. - headers = kw.get('headers', self.headers) - kw['headers'] = self._set_proxy_headers(url, headers) - - return super(ProxyManager, self).urlopen(method, url, redirect=redirect, **kw) - - -def proxy_from_url(url, **kw): - return ProxyManager(proxy_url=url, **kw) diff --git a/python/urllib3/request.py b/python/urllib3/request.py deleted file mode 100644 index 8f2f44b..0000000 --- a/python/urllib3/request.py +++ /dev/null @@ -1,150 +0,0 @@ -from __future__ import absolute_import - -from .filepost import encode_multipart_formdata -from .packages.six.moves.urllib.parse import urlencode - - -__all__ = ['RequestMethods'] - - -class RequestMethods(object): - """ - Convenience mixin for classes who implement a :meth:`urlopen` method, such - as :class:`~urllib3.connectionpool.HTTPConnectionPool` and - :class:`~urllib3.poolmanager.PoolManager`. - - Provides behavior for making common types of HTTP request methods and - decides which type of request field encoding to use. - - Specifically, - - :meth:`.request_encode_url` is for sending requests whose fields are - encoded in the URL (such as GET, HEAD, DELETE). - - :meth:`.request_encode_body` is for sending requests whose fields are - encoded in the *body* of the request using multipart or www-form-urlencoded - (such as for POST, PUT, PATCH). - - :meth:`.request` is for making any kind of request, it will look up the - appropriate encoding format and use one of the above two methods to make - the request. - - Initializer parameters: - - :param headers: - Headers to include with all requests, unless other headers are given - explicitly. - """ - - _encode_url_methods = {'DELETE', 'GET', 'HEAD', 'OPTIONS'} - - def __init__(self, headers=None): - self.headers = headers or {} - - def urlopen(self, method, url, body=None, headers=None, - encode_multipart=True, multipart_boundary=None, - **kw): # Abstract - raise NotImplementedError("Classes extending RequestMethods must implement " - "their own ``urlopen`` method.") - - def request(self, method, url, fields=None, headers=None, **urlopen_kw): - """ - Make a request using :meth:`urlopen` with the appropriate encoding of - ``fields`` based on the ``method`` used. - - This is a convenience method that requires the least amount of manual - effort. It can be used in most situations, while still having the - option to drop down to more specific methods when necessary, such as - :meth:`request_encode_url`, :meth:`request_encode_body`, - or even the lowest level :meth:`urlopen`. - """ - method = method.upper() - - urlopen_kw['request_url'] = url - - if method in self._encode_url_methods: - return self.request_encode_url(method, url, fields=fields, - headers=headers, - **urlopen_kw) - else: - return self.request_encode_body(method, url, fields=fields, - headers=headers, - **urlopen_kw) - - def request_encode_url(self, method, url, fields=None, headers=None, - **urlopen_kw): - """ - Make a request using :meth:`urlopen` with the ``fields`` encoded in - the url. This is useful for request methods like GET, HEAD, DELETE, etc. - """ - if headers is None: - headers = self.headers - - extra_kw = {'headers': headers} - extra_kw.update(urlopen_kw) - - if fields: - url += '?' + urlencode(fields) - - return self.urlopen(method, url, **extra_kw) - - def request_encode_body(self, method, url, fields=None, headers=None, - encode_multipart=True, multipart_boundary=None, - **urlopen_kw): - """ - Make a request using :meth:`urlopen` with the ``fields`` encoded in - the body. This is useful for request methods like POST, PUT, PATCH, etc. - - When ``encode_multipart=True`` (default), then - :meth:`urllib3.filepost.encode_multipart_formdata` is used to encode - the payload with the appropriate content type. Otherwise - :meth:`urllib.urlencode` is used with the - 'application/x-www-form-urlencoded' content type. - - Multipart encoding must be used when posting files, and it's reasonably - safe to use it in other times too. However, it may break request - signing, such as with OAuth. - - Supports an optional ``fields`` parameter of key/value strings AND - key/filetuple. A filetuple is a (filename, data, MIME type) tuple where - the MIME type is optional. For example:: - - fields = { - 'foo': 'bar', - 'fakefile': ('foofile.txt', 'contents of foofile'), - 'realfile': ('barfile.txt', open('realfile').read()), - 'typedfile': ('bazfile.bin', open('bazfile').read(), - 'image/jpeg'), - 'nonamefile': 'contents of nonamefile field', - } - - When uploading a file, providing a filename (the first parameter of the - tuple) is optional but recommended to best mimic behavior of browsers. - - Note that if ``headers`` are supplied, the 'Content-Type' header will - be overwritten because it depends on the dynamic random boundary string - which is used to compose the body of the request. The random boundary - string can be explicitly set with the ``multipart_boundary`` parameter. - """ - if headers is None: - headers = self.headers - - extra_kw = {'headers': {}} - - if fields: - if 'body' in urlopen_kw: - raise TypeError( - "request got values for both 'fields' and 'body', can only specify one.") - - if encode_multipart: - body, content_type = encode_multipart_formdata(fields, boundary=multipart_boundary) - else: - body, content_type = urlencode(fields), 'application/x-www-form-urlencoded' - - extra_kw['body'] = body - extra_kw['headers'] = {'Content-Type': content_type} - - extra_kw['headers'].update(headers) - extra_kw.update(urlopen_kw) - - return self.urlopen(method, url, **extra_kw) diff --git a/python/urllib3/response.py b/python/urllib3/response.py deleted file mode 100644 index c112690..0000000 --- a/python/urllib3/response.py +++ /dev/null @@ -1,705 +0,0 @@ -from __future__ import absolute_import -from contextlib import contextmanager -import zlib -import io -import logging -from socket import timeout as SocketTimeout -from socket import error as SocketError - -from ._collections import HTTPHeaderDict -from .exceptions import ( - BodyNotHttplibCompatible, ProtocolError, DecodeError, ReadTimeoutError, - ResponseNotChunked, IncompleteRead, InvalidHeader -) -from .packages.six import string_types as basestring, PY3 -from .packages.six.moves import http_client as httplib -from .connection import HTTPException, BaseSSLError -from .util.response import is_fp_closed, is_response_to_head - -log = logging.getLogger(__name__) - - -class DeflateDecoder(object): - - def __init__(self): - self._first_try = True - self._data = b'' - self._obj = zlib.decompressobj() - - def __getattr__(self, name): - return getattr(self._obj, name) - - def decompress(self, data): - if not data: - return data - - if not self._first_try: - return self._obj.decompress(data) - - self._data += data - try: - decompressed = self._obj.decompress(data) - if decompressed: - self._first_try = False - self._data = None - return decompressed - except zlib.error: - self._first_try = False - self._obj = zlib.decompressobj(-zlib.MAX_WBITS) - try: - return self.decompress(self._data) - finally: - self._data = None - - -class GzipDecoderState(object): - - FIRST_MEMBER = 0 - OTHER_MEMBERS = 1 - SWALLOW_DATA = 2 - - -class GzipDecoder(object): - - def __init__(self): - self._obj = zlib.decompressobj(16 + zlib.MAX_WBITS) - self._state = GzipDecoderState.FIRST_MEMBER - - def __getattr__(self, name): - return getattr(self._obj, name) - - def decompress(self, data): - ret = bytearray() - if self._state == GzipDecoderState.SWALLOW_DATA or not data: - return bytes(ret) - while True: - try: - ret += self._obj.decompress(data) - except zlib.error: - previous_state = self._state - # Ignore data after the first error - self._state = GzipDecoderState.SWALLOW_DATA - if previous_state == GzipDecoderState.OTHER_MEMBERS: - # Allow trailing garbage acceptable in other gzip clients - return bytes(ret) - raise - data = self._obj.unused_data - if not data: - return bytes(ret) - self._state = GzipDecoderState.OTHER_MEMBERS - self._obj = zlib.decompressobj(16 + zlib.MAX_WBITS) - - -class MultiDecoder(object): - """ - From RFC7231: - If one or more encodings have been applied to a representation, the - sender that applied the encodings MUST generate a Content-Encoding - header field that lists the content codings in the order in which - they were applied. - """ - - def __init__(self, modes): - self._decoders = [_get_decoder(m.strip()) for m in modes.split(',')] - - def flush(self): - return self._decoders[0].flush() - - def decompress(self, data): - for d in reversed(self._decoders): - data = d.decompress(data) - return data - - -def _get_decoder(mode): - if ',' in mode: - return MultiDecoder(mode) - - if mode == 'gzip': - return GzipDecoder() - - return DeflateDecoder() - - -class HTTPResponse(io.IOBase): - """ - HTTP Response container. - - Backwards-compatible to httplib's HTTPResponse but the response ``body`` is - loaded and decoded on-demand when the ``data`` property is accessed. This - class is also compatible with the Python standard library's :mod:`io` - module, and can hence be treated as a readable object in the context of that - framework. - - Extra parameters for behaviour not present in httplib.HTTPResponse: - - :param preload_content: - If True, the response's body will be preloaded during construction. - - :param decode_content: - If True, will attempt to decode the body based on the - 'content-encoding' header. - - :param original_response: - When this HTTPResponse wrapper is generated from an httplib.HTTPResponse - object, it's convenient to include the original for debug purposes. It's - otherwise unused. - - :param retries: - The retries contains the last :class:`~urllib3.util.retry.Retry` that - was used during the request. - - :param enforce_content_length: - Enforce content length checking. Body returned by server must match - value of Content-Length header, if present. Otherwise, raise error. - """ - - CONTENT_DECODERS = ['gzip', 'deflate'] - REDIRECT_STATUSES = [301, 302, 303, 307, 308] - - def __init__(self, body='', headers=None, status=0, version=0, reason=None, - strict=0, preload_content=True, decode_content=True, - original_response=None, pool=None, connection=None, msg=None, - retries=None, enforce_content_length=False, - request_method=None, request_url=None): - - if isinstance(headers, HTTPHeaderDict): - self.headers = headers - else: - self.headers = HTTPHeaderDict(headers) - self.status = status - self.version = version - self.reason = reason - self.strict = strict - self.decode_content = decode_content - self.retries = retries - self.enforce_content_length = enforce_content_length - - self._decoder = None - self._body = None - self._fp = None - self._original_response = original_response - self._fp_bytes_read = 0 - self.msg = msg - self._request_url = request_url - - if body and isinstance(body, (basestring, bytes)): - self._body = body - - self._pool = pool - self._connection = connection - - if hasattr(body, 'read'): - self._fp = body - - # Are we using the chunked-style of transfer encoding? - self.chunked = False - self.chunk_left = None - tr_enc = self.headers.get('transfer-encoding', '').lower() - # Don't incur the penalty of creating a list and then discarding it - encodings = (enc.strip() for enc in tr_enc.split(",")) - if "chunked" in encodings: - self.chunked = True - - # Determine length of response - self.length_remaining = self._init_length(request_method) - - # If requested, preload the body. - if preload_content and not self._body: - self._body = self.read(decode_content=decode_content) - - def get_redirect_location(self): - """ - Should we redirect and where to? - - :returns: Truthy redirect location string if we got a redirect status - code and valid location. ``None`` if redirect status and no - location. ``False`` if not a redirect status code. - """ - if self.status in self.REDIRECT_STATUSES: - return self.headers.get('location') - - return False - - def release_conn(self): - if not self._pool or not self._connection: - return - - self._pool._put_conn(self._connection) - self._connection = None - - @property - def data(self): - # For backwords-compat with earlier urllib3 0.4 and earlier. - if self._body: - return self._body - - if self._fp: - return self.read(cache_content=True) - - @property - def connection(self): - return self._connection - - def isclosed(self): - return is_fp_closed(self._fp) - - def tell(self): - """ - Obtain the number of bytes pulled over the wire so far. May differ from - the amount of content returned by :meth:``HTTPResponse.read`` if bytes - are encoded on the wire (e.g, compressed). - """ - return self._fp_bytes_read - - def _init_length(self, request_method): - """ - Set initial length value for Response content if available. - """ - length = self.headers.get('content-length') - - if length is not None: - if self.chunked: - # This Response will fail with an IncompleteRead if it can't be - # received as chunked. This method falls back to attempt reading - # the response before raising an exception. - log.warning("Received response with both Content-Length and " - "Transfer-Encoding set. This is expressly forbidden " - "by RFC 7230 sec 3.3.2. Ignoring Content-Length and " - "attempting to process response as Transfer-Encoding: " - "chunked.") - return None - - try: - # RFC 7230 section 3.3.2 specifies multiple content lengths can - # be sent in a single Content-Length header - # (e.g. Content-Length: 42, 42). This line ensures the values - # are all valid ints and that as long as the `set` length is 1, - # all values are the same. Otherwise, the header is invalid. - lengths = set([int(val) for val in length.split(',')]) - if len(lengths) > 1: - raise InvalidHeader("Content-Length contained multiple " - "unmatching values (%s)" % length) - length = lengths.pop() - except ValueError: - length = None - else: - if length < 0: - length = None - - # Convert status to int for comparison - # In some cases, httplib returns a status of "_UNKNOWN" - try: - status = int(self.status) - except ValueError: - status = 0 - - # Check for responses that shouldn't include a body - if status in (204, 304) or 100 <= status < 200 or request_method == 'HEAD': - length = 0 - - return length - - def _init_decoder(self): - """ - Set-up the _decoder attribute if necessary. - """ - # Note: content-encoding value should be case-insensitive, per RFC 7230 - # Section 3.2 - content_encoding = self.headers.get('content-encoding', '').lower() - if self._decoder is None: - if content_encoding in self.CONTENT_DECODERS: - self._decoder = _get_decoder(content_encoding) - elif ',' in content_encoding: - encodings = [e.strip() for e in content_encoding.split(',') if e.strip() in self.CONTENT_DECODERS] - if len(encodings): - self._decoder = _get_decoder(content_encoding) - - def _decode(self, data, decode_content, flush_decoder): - """ - Decode the data passed in and potentially flush the decoder. - """ - try: - if decode_content and self._decoder: - data = self._decoder.decompress(data) - except (IOError, zlib.error) as e: - content_encoding = self.headers.get('content-encoding', '').lower() - raise DecodeError( - "Received response with content-encoding: %s, but " - "failed to decode it." % content_encoding, e) - - if flush_decoder and decode_content: - data += self._flush_decoder() - - return data - - def _flush_decoder(self): - """ - Flushes the decoder. Should only be called if the decoder is actually - being used. - """ - if self._decoder: - buf = self._decoder.decompress(b'') - return buf + self._decoder.flush() - - return b'' - - @contextmanager - def _error_catcher(self): - """ - Catch low-level python exceptions, instead re-raising urllib3 - variants, so that low-level exceptions are not leaked in the - high-level api. - - On exit, release the connection back to the pool. - """ - clean_exit = False - - try: - try: - yield - - except SocketTimeout: - # FIXME: Ideally we'd like to include the url in the ReadTimeoutError but - # there is yet no clean way to get at it from this context. - raise ReadTimeoutError(self._pool, None, 'Read timed out.') - - except BaseSSLError as e: - # FIXME: Is there a better way to differentiate between SSLErrors? - if 'read operation timed out' not in str(e): # Defensive: - # This shouldn't happen but just in case we're missing an edge - # case, let's avoid swallowing SSL errors. - raise - - raise ReadTimeoutError(self._pool, None, 'Read timed out.') - - except (HTTPException, SocketError) as e: - # This includes IncompleteRead. - raise ProtocolError('Connection broken: %r' % e, e) - - # If no exception is thrown, we should avoid cleaning up - # unnecessarily. - clean_exit = True - finally: - # If we didn't terminate cleanly, we need to throw away our - # connection. - if not clean_exit: - # The response may not be closed but we're not going to use it - # anymore so close it now to ensure that the connection is - # released back to the pool. - if self._original_response: - self._original_response.close() - - # Closing the response may not actually be sufficient to close - # everything, so if we have a hold of the connection close that - # too. - if self._connection: - self._connection.close() - - # If we hold the original response but it's closed now, we should - # return the connection back to the pool. - if self._original_response and self._original_response.isclosed(): - self.release_conn() - - def read(self, amt=None, decode_content=None, cache_content=False): - """ - Similar to :meth:`httplib.HTTPResponse.read`, but with two additional - parameters: ``decode_content`` and ``cache_content``. - - :param amt: - How much of the content to read. If specified, caching is skipped - because it doesn't make sense to cache partial content as the full - response. - - :param decode_content: - If True, will attempt to decode the body based on the - 'content-encoding' header. - - :param cache_content: - If True, will save the returned data such that the same result is - returned despite of the state of the underlying file object. This - is useful if you want the ``.data`` property to continue working - after having ``.read()`` the file object. (Overridden if ``amt`` is - set.) - """ - self._init_decoder() - if decode_content is None: - decode_content = self.decode_content - - if self._fp is None: - return - - flush_decoder = False - data = None - - with self._error_catcher(): - if amt is None: - # cStringIO doesn't like amt=None - data = self._fp.read() - flush_decoder = True - else: - cache_content = False - data = self._fp.read(amt) - if amt != 0 and not data: # Platform-specific: Buggy versions of Python. - # Close the connection when no data is returned - # - # This is redundant to what httplib/http.client _should_ - # already do. However, versions of python released before - # December 15, 2012 (http://bugs.python.org/issue16298) do - # not properly close the connection in all cases. There is - # no harm in redundantly calling close. - self._fp.close() - flush_decoder = True - if self.enforce_content_length and self.length_remaining not in (0, None): - # This is an edge case that httplib failed to cover due - # to concerns of backward compatibility. We're - # addressing it here to make sure IncompleteRead is - # raised during streaming, so all calls with incorrect - # Content-Length are caught. - raise IncompleteRead(self._fp_bytes_read, self.length_remaining) - - if data: - self._fp_bytes_read += len(data) - if self.length_remaining is not None: - self.length_remaining -= len(data) - - data = self._decode(data, decode_content, flush_decoder) - - if cache_content: - self._body = data - - return data - - def stream(self, amt=2**16, decode_content=None): - """ - A generator wrapper for the read() method. A call will block until - ``amt`` bytes have been read from the connection or until the - connection is closed. - - :param amt: - How much of the content to read. The generator will return up to - much data per iteration, but may return less. This is particularly - likely when using compressed data. However, the empty string will - never be returned. - - :param decode_content: - If True, will attempt to decode the body based on the - 'content-encoding' header. - """ - if self.chunked and self.supports_chunked_reads(): - for line in self.read_chunked(amt, decode_content=decode_content): - yield line - else: - while not is_fp_closed(self._fp): - data = self.read(amt=amt, decode_content=decode_content) - - if data: - yield data - - @classmethod - def from_httplib(ResponseCls, r, **response_kw): - """ - Given an :class:`httplib.HTTPResponse` instance ``r``, return a - corresponding :class:`urllib3.response.HTTPResponse` object. - - Remaining parameters are passed to the HTTPResponse constructor, along - with ``original_response=r``. - """ - headers = r.msg - - if not isinstance(headers, HTTPHeaderDict): - if PY3: # Python 3 - headers = HTTPHeaderDict(headers.items()) - else: # Python 2 - headers = HTTPHeaderDict.from_httplib(headers) - - # HTTPResponse objects in Python 3 don't have a .strict attribute - strict = getattr(r, 'strict', 0) - resp = ResponseCls(body=r, - headers=headers, - status=r.status, - version=r.version, - reason=r.reason, - strict=strict, - original_response=r, - **response_kw) - return resp - - # Backwards-compatibility methods for httplib.HTTPResponse - def getheaders(self): - return self.headers - - def getheader(self, name, default=None): - return self.headers.get(name, default) - - # Backwards compatibility for http.cookiejar - def info(self): - return self.headers - - # Overrides from io.IOBase - def close(self): - if not self.closed: - self._fp.close() - - if self._connection: - self._connection.close() - - @property - def closed(self): - if self._fp is None: - return True - elif hasattr(self._fp, 'isclosed'): - return self._fp.isclosed() - elif hasattr(self._fp, 'closed'): - return self._fp.closed - else: - return True - - def fileno(self): - if self._fp is None: - raise IOError("HTTPResponse has no file to get a fileno from") - elif hasattr(self._fp, "fileno"): - return self._fp.fileno() - else: - raise IOError("The file-like object this HTTPResponse is wrapped " - "around has no file descriptor") - - def flush(self): - if self._fp is not None and hasattr(self._fp, 'flush'): - return self._fp.flush() - - def readable(self): - # This method is required for `io` module compatibility. - return True - - def readinto(self, b): - # This method is required for `io` module compatibility. - temp = self.read(len(b)) - if len(temp) == 0: - return 0 - else: - b[:len(temp)] = temp - return len(temp) - - def supports_chunked_reads(self): - """ - Checks if the underlying file-like object looks like a - httplib.HTTPResponse object. We do this by testing for the fp - attribute. If it is present we assume it returns raw chunks as - processed by read_chunked(). - """ - return hasattr(self._fp, 'fp') - - def _update_chunk_length(self): - # First, we'll figure out length of a chunk and then - # we'll try to read it from socket. - if self.chunk_left is not None: - return - line = self._fp.fp.readline() - line = line.split(b';', 1)[0] - try: - self.chunk_left = int(line, 16) - except ValueError: - # Invalid chunked protocol response, abort. - self.close() - raise httplib.IncompleteRead(line) - - def _handle_chunk(self, amt): - returned_chunk = None - if amt is None: - chunk = self._fp._safe_read(self.chunk_left) - returned_chunk = chunk - self._fp._safe_read(2) # Toss the CRLF at the end of the chunk. - self.chunk_left = None - elif amt < self.chunk_left: - value = self._fp._safe_read(amt) - self.chunk_left = self.chunk_left - amt - returned_chunk = value - elif amt == self.chunk_left: - value = self._fp._safe_read(amt) - self._fp._safe_read(2) # Toss the CRLF at the end of the chunk. - self.chunk_left = None - returned_chunk = value - else: # amt > self.chunk_left - returned_chunk = self._fp._safe_read(self.chunk_left) - self._fp._safe_read(2) # Toss the CRLF at the end of the chunk. - self.chunk_left = None - return returned_chunk - - def read_chunked(self, amt=None, decode_content=None): - """ - Similar to :meth:`HTTPResponse.read`, but with an additional - parameter: ``decode_content``. - - :param amt: - How much of the content to read. If specified, caching is skipped - because it doesn't make sense to cache partial content as the full - response. - - :param decode_content: - If True, will attempt to decode the body based on the - 'content-encoding' header. - """ - self._init_decoder() - # FIXME: Rewrite this method and make it a class with a better structured logic. - if not self.chunked: - raise ResponseNotChunked( - "Response is not chunked. " - "Header 'transfer-encoding: chunked' is missing.") - if not self.supports_chunked_reads(): - raise BodyNotHttplibCompatible( - "Body should be httplib.HTTPResponse like. " - "It should have have an fp attribute which returns raw chunks.") - - with self._error_catcher(): - # Don't bother reading the body of a HEAD request. - if self._original_response and is_response_to_head(self._original_response): - self._original_response.close() - return - - # If a response is already read and closed - # then return immediately. - if self._fp.fp is None: - return - - while True: - self._update_chunk_length() - if self.chunk_left == 0: - break - chunk = self._handle_chunk(amt) - decoded = self._decode(chunk, decode_content=decode_content, - flush_decoder=False) - if decoded: - yield decoded - - if decode_content: - # On CPython and PyPy, we should never need to flush the - # decoder. However, on Jython we *might* need to, so - # lets defensively do it anyway. - decoded = self._flush_decoder() - if decoded: # Platform-specific: Jython. - yield decoded - - # Chunk content ends with \r\n: discard it. - while True: - line = self._fp.fp.readline() - if not line: - # Some sites may not end with '\r\n'. - break - if line == b'\r\n': - break - - # We read everything; close the "file". - if self._original_response: - self._original_response.close() - - def geturl(self): - """ - Returns the URL that was the source of this response. - If the request that generated this response redirected, this method - will return the final redirect location. - """ - if self.retries is not None and len(self.retries.history): - return self.retries.history[-1].redirect_location - else: - return self._request_url diff --git a/python/urllib3/util/__init__.py b/python/urllib3/util/__init__.py deleted file mode 100644 index 2f2770b..0000000 --- a/python/urllib3/util/__init__.py +++ /dev/null @@ -1,54 +0,0 @@ -from __future__ import absolute_import -# For backwards compatibility, provide imports that used to be here. -from .connection import is_connection_dropped -from .request import make_headers -from .response import is_fp_closed -from .ssl_ import ( - SSLContext, - HAS_SNI, - IS_PYOPENSSL, - IS_SECURETRANSPORT, - assert_fingerprint, - resolve_cert_reqs, - resolve_ssl_version, - ssl_wrap_socket, -) -from .timeout import ( - current_time, - Timeout, -) - -from .retry import Retry -from .url import ( - get_host, - parse_url, - split_first, - Url, -) -from .wait import ( - wait_for_read, - wait_for_write -) - -__all__ = ( - 'HAS_SNI', - 'IS_PYOPENSSL', - 'IS_SECURETRANSPORT', - 'SSLContext', - 'Retry', - 'Timeout', - 'Url', - 'assert_fingerprint', - 'current_time', - 'is_connection_dropped', - 'is_fp_closed', - 'get_host', - 'parse_url', - 'make_headers', - 'resolve_cert_reqs', - 'resolve_ssl_version', - 'split_first', - 'ssl_wrap_socket', - 'wait_for_read', - 'wait_for_write' -) diff --git a/python/urllib3/util/connection.py b/python/urllib3/util/connection.py deleted file mode 100644 index 5ad70b2..0000000 --- a/python/urllib3/util/connection.py +++ /dev/null @@ -1,134 +0,0 @@ -from __future__ import absolute_import -import socket -from .wait import NoWayToWaitForSocketError, wait_for_read -from ..contrib import _appengine_environ - - -def is_connection_dropped(conn): # Platform-specific - """ - Returns True if the connection is dropped and should be closed. - - :param conn: - :class:`httplib.HTTPConnection` object. - - Note: For platforms like AppEngine, this will always return ``False`` to - let the platform handle connection recycling transparently for us. - """ - sock = getattr(conn, 'sock', False) - if sock is False: # Platform-specific: AppEngine - return False - if sock is None: # Connection already closed (such as by httplib). - return True - try: - # Returns True if readable, which here means it's been dropped - return wait_for_read(sock, timeout=0.0) - except NoWayToWaitForSocketError: # Platform-specific: AppEngine - return False - - -# This function is copied from socket.py in the Python 2.7 standard -# library test suite. Added to its signature is only `socket_options`. -# One additional modification is that we avoid binding to IPv6 servers -# discovered in DNS if the system doesn't have IPv6 functionality. -def create_connection(address, timeout=socket._GLOBAL_DEFAULT_TIMEOUT, - source_address=None, socket_options=None): - """Connect to *address* and return the socket object. - - Convenience function. Connect to *address* (a 2-tuple ``(host, - port)``) and return the socket object. Passing the optional - *timeout* parameter will set the timeout on the socket instance - before attempting to connect. If no *timeout* is supplied, the - global default timeout setting returned by :func:`getdefaulttimeout` - is used. If *source_address* is set it must be a tuple of (host, port) - for the socket to bind as a source address before making the connection. - An host of '' or port 0 tells the OS to use the default. - """ - - host, port = address - if host.startswith('['): - host = host.strip('[]') - err = None - - # Using the value from allowed_gai_family() in the context of getaddrinfo lets - # us select whether to work with IPv4 DNS records, IPv6 records, or both. - # The original create_connection function always returns all records. - family = allowed_gai_family() - - for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): - af, socktype, proto, canonname, sa = res - sock = None - try: - sock = socket.socket(af, socktype, proto) - - # If provided, set socket level options before connecting. - _set_socket_options(sock, socket_options) - - if timeout is not socket._GLOBAL_DEFAULT_TIMEOUT: - sock.settimeout(timeout) - if source_address: - sock.bind(source_address) - sock.connect(sa) - return sock - - except socket.error as e: - err = e - if sock is not None: - sock.close() - sock = None - - if err is not None: - raise err - - raise socket.error("getaddrinfo returns an empty list") - - -def _set_socket_options(sock, options): - if options is None: - return - - for opt in options: - sock.setsockopt(*opt) - - -def allowed_gai_family(): - """This function is designed to work in the context of - getaddrinfo, where family=socket.AF_UNSPEC is the default and - will perform a DNS search for both IPv6 and IPv4 records.""" - - family = socket.AF_INET - if HAS_IPV6: - family = socket.AF_UNSPEC - return family - - -def _has_ipv6(host): - """ Returns True if the system can bind an IPv6 address. """ - sock = None - has_ipv6 = False - - # App Engine doesn't support IPV6 sockets and actually has a quota on the - # number of sockets that can be used, so just early out here instead of - # creating a socket needlessly. - # See https://github.com/urllib3/urllib3/issues/1446 - if _appengine_environ.is_appengine_sandbox(): - return False - - if socket.has_ipv6: - # has_ipv6 returns true if cPython was compiled with IPv6 support. - # It does not tell us if the system has IPv6 support enabled. To - # determine that we must bind to an IPv6 address. - # https://github.com/shazow/urllib3/pull/611 - # https://bugs.python.org/issue658327 - try: - sock = socket.socket(socket.AF_INET6) - sock.bind((host, 0)) - has_ipv6 = True - except Exception: - pass - - if sock: - sock.close() - return has_ipv6 - - -HAS_IPV6 = _has_ipv6('::1') diff --git a/python/urllib3/util/queue.py b/python/urllib3/util/queue.py deleted file mode 100644 index d3d379a..0000000 --- a/python/urllib3/util/queue.py +++ /dev/null @@ -1,21 +0,0 @@ -import collections -from ..packages import six -from ..packages.six.moves import queue - -if six.PY2: - # Queue is imported for side effects on MS Windows. See issue #229. - import Queue as _unused_module_Queue # noqa: F401 - - -class LifoQueue(queue.Queue): - def _init(self, _): - self.queue = collections.deque() - - def _qsize(self, len=len): - return len(self.queue) - - def _put(self, item): - self.queue.append(item) - - def _get(self): - return self.queue.pop() diff --git a/python/urllib3/util/request.py b/python/urllib3/util/request.py deleted file mode 100644 index 3ddfcd5..0000000 --- a/python/urllib3/util/request.py +++ /dev/null @@ -1,118 +0,0 @@ -from __future__ import absolute_import -from base64 import b64encode - -from ..packages.six import b, integer_types -from ..exceptions import UnrewindableBodyError - -ACCEPT_ENCODING = 'gzip,deflate' -_FAILEDTELL = object() - - -def make_headers(keep_alive=None, accept_encoding=None, user_agent=None, - basic_auth=None, proxy_basic_auth=None, disable_cache=None): - """ - Shortcuts for generating request headers. - - :param keep_alive: - If ``True``, adds 'connection: keep-alive' header. - - :param accept_encoding: - Can be a boolean, list, or string. - ``True`` translates to 'gzip,deflate'. - List will get joined by comma. - String will be used as provided. - - :param user_agent: - String representing the user-agent you want, such as - "python-urllib3/0.6" - - :param basic_auth: - Colon-separated username:password string for 'authorization: basic ...' - auth header. - - :param proxy_basic_auth: - Colon-separated username:password string for 'proxy-authorization: basic ...' - auth header. - - :param disable_cache: - If ``True``, adds 'cache-control: no-cache' header. - - Example:: - - >>> make_headers(keep_alive=True, user_agent="Batman/1.0") - {'connection': 'keep-alive', 'user-agent': 'Batman/1.0'} - >>> make_headers(accept_encoding=True) - {'accept-encoding': 'gzip,deflate'} - """ - headers = {} - if accept_encoding: - if isinstance(accept_encoding, str): - pass - elif isinstance(accept_encoding, list): - accept_encoding = ','.join(accept_encoding) - else: - accept_encoding = ACCEPT_ENCODING - headers['accept-encoding'] = accept_encoding - - if user_agent: - headers['user-agent'] = user_agent - - if keep_alive: - headers['connection'] = 'keep-alive' - - if basic_auth: - headers['authorization'] = 'Basic ' + \ - b64encode(b(basic_auth)).decode('utf-8') - - if proxy_basic_auth: - headers['proxy-authorization'] = 'Basic ' + \ - b64encode(b(proxy_basic_auth)).decode('utf-8') - - if disable_cache: - headers['cache-control'] = 'no-cache' - - return headers - - -def set_file_position(body, pos): - """ - If a position is provided, move file to that point. - Otherwise, we'll attempt to record a position for future use. - """ - if pos is not None: - rewind_body(body, pos) - elif getattr(body, 'tell', None) is not None: - try: - pos = body.tell() - except (IOError, OSError): - # This differentiates from None, allowing us to catch - # a failed `tell()` later when trying to rewind the body. - pos = _FAILEDTELL - - return pos - - -def rewind_body(body, body_pos): - """ - Attempt to rewind body to a certain position. - Primarily used for request redirects and retries. - - :param body: - File-like object that supports seek. - - :param int pos: - Position to seek to in file. - """ - body_seek = getattr(body, 'seek', None) - if body_seek is not None and isinstance(body_pos, integer_types): - try: - body_seek(body_pos) - except (IOError, OSError): - raise UnrewindableBodyError("An error occurred when rewinding request " - "body for redirect/retry.") - elif body_pos is _FAILEDTELL: - raise UnrewindableBodyError("Unable to record file position for rewinding " - "request body during a redirect/retry.") - else: - raise ValueError("body_pos must be of type integer, " - "instead it was %s." % type(body_pos)) diff --git a/python/urllib3/util/response.py b/python/urllib3/util/response.py deleted file mode 100644 index 3d54864..0000000 --- a/python/urllib3/util/response.py +++ /dev/null @@ -1,87 +0,0 @@ -from __future__ import absolute_import -from ..packages.six.moves import http_client as httplib - -from ..exceptions import HeaderParsingError - - -def is_fp_closed(obj): - """ - Checks whether a given file-like object is closed. - - :param obj: - The file-like object to check. - """ - - try: - # Check `isclosed()` first, in case Python3 doesn't set `closed`. - # GH Issue #928 - return obj.isclosed() - except AttributeError: - pass - - try: - # Check via the official file-like-object way. - return obj.closed - except AttributeError: - pass - - try: - # Check if the object is a container for another file-like object that - # gets released on exhaustion (e.g. HTTPResponse). - return obj.fp is None - except AttributeError: - pass - - raise ValueError("Unable to determine whether fp is closed.") - - -def assert_header_parsing(headers): - """ - Asserts whether all headers have been successfully parsed. - Extracts encountered errors from the result of parsing headers. - - Only works on Python 3. - - :param headers: Headers to verify. - :type headers: `httplib.HTTPMessage`. - - :raises urllib3.exceptions.HeaderParsingError: - If parsing errors are found. - """ - - # This will fail silently if we pass in the wrong kind of parameter. - # To make debugging easier add an explicit check. - if not isinstance(headers, httplib.HTTPMessage): - raise TypeError('expected httplib.Message, got {0}.'.format( - type(headers))) - - defects = getattr(headers, 'defects', None) - get_payload = getattr(headers, 'get_payload', None) - - unparsed_data = None - if get_payload: - # get_payload is actually email.message.Message.get_payload; - # we're only interested in the result if it's not a multipart message - if not headers.is_multipart(): - payload = get_payload() - - if isinstance(payload, (bytes, str)): - unparsed_data = payload - - if defects or unparsed_data: - raise HeaderParsingError(defects=defects, unparsed_data=unparsed_data) - - -def is_response_to_head(response): - """ - Checks whether the request of a response has been a HEAD-request. - Handles the quirks of AppEngine. - - :param conn: - :type conn: :class:`httplib.HTTPResponse` - """ - # FIXME: Can we do this somehow without accessing private httplib _method? - method = response._method - if isinstance(method, int): # Platform-specific: Appengine - return method == 3 - return method.upper() == 'HEAD' diff --git a/python/urllib3/util/retry.py b/python/urllib3/util/retry.py deleted file mode 100644 index e7d0abd..0000000 --- a/python/urllib3/util/retry.py +++ /dev/null @@ -1,411 +0,0 @@ -from __future__ import absolute_import -import time -import logging -from collections import namedtuple -from itertools import takewhile -import email -import re - -from ..exceptions import ( - ConnectTimeoutError, - MaxRetryError, - ProtocolError, - ReadTimeoutError, - ResponseError, - InvalidHeader, -) -from ..packages import six - - -log = logging.getLogger(__name__) - - -# Data structure for representing the metadata of requests that result in a retry. -RequestHistory = namedtuple('RequestHistory', ["method", "url", "error", - "status", "redirect_location"]) - - -class Retry(object): - """ Retry configuration. - - Each retry attempt will create a new Retry object with updated values, so - they can be safely reused. - - Retries can be defined as a default for a pool:: - - retries = Retry(connect=5, read=2, redirect=5) - http = PoolManager(retries=retries) - response = http.request('GET', 'http://example.com/') - - Or per-request (which overrides the default for the pool):: - - response = http.request('GET', 'http://example.com/', retries=Retry(10)) - - Retries can be disabled by passing ``False``:: - - response = http.request('GET', 'http://example.com/', retries=False) - - Errors will be wrapped in :class:`~urllib3.exceptions.MaxRetryError` unless - retries are disabled, in which case the causing exception will be raised. - - :param int total: - Total number of retries to allow. Takes precedence over other counts. - - Set to ``None`` to remove this constraint and fall back on other - counts. It's a good idea to set this to some sensibly-high value to - account for unexpected edge cases and avoid infinite retry loops. - - Set to ``0`` to fail on the first retry. - - Set to ``False`` to disable and imply ``raise_on_redirect=False``. - - :param int connect: - How many connection-related errors to retry on. - - These are errors raised before the request is sent to the remote server, - which we assume has not triggered the server to process the request. - - Set to ``0`` to fail on the first retry of this type. - - :param int read: - How many times to retry on read errors. - - These errors are raised after the request was sent to the server, so the - request may have side-effects. - - Set to ``0`` to fail on the first retry of this type. - - :param int redirect: - How many redirects to perform. Limit this to avoid infinite redirect - loops. - - A redirect is a HTTP response with a status code 301, 302, 303, 307 or - 308. - - Set to ``0`` to fail on the first retry of this type. - - Set to ``False`` to disable and imply ``raise_on_redirect=False``. - - :param int status: - How many times to retry on bad status codes. - - These are retries made on responses, where status code matches - ``status_forcelist``. - - Set to ``0`` to fail on the first retry of this type. - - :param iterable method_whitelist: - Set of uppercased HTTP method verbs that we should retry on. - - By default, we only retry on methods which are considered to be - idempotent (multiple requests with the same parameters end with the - same state). See :attr:`Retry.DEFAULT_METHOD_WHITELIST`. - - Set to a ``False`` value to retry on any verb. - - :param iterable status_forcelist: - A set of integer HTTP status codes that we should force a retry on. - A retry is initiated if the request method is in ``method_whitelist`` - and the response status code is in ``status_forcelist``. - - By default, this is disabled with ``None``. - - :param float backoff_factor: - A backoff factor to apply between attempts after the second try - (most errors are resolved immediately by a second try without a - delay). urllib3 will sleep for:: - - {backoff factor} * (2 ** ({number of total retries} - 1)) - - seconds. If the backoff_factor is 0.1, then :func:`.sleep` will sleep - for [0.0s, 0.2s, 0.4s, ...] between retries. It will never be longer - than :attr:`Retry.BACKOFF_MAX`. - - By default, backoff is disabled (set to 0). - - :param bool raise_on_redirect: Whether, if the number of redirects is - exhausted, to raise a MaxRetryError, or to return a response with a - response code in the 3xx range. - - :param bool raise_on_status: Similar meaning to ``raise_on_redirect``: - whether we should raise an exception, or return a response, - if status falls in ``status_forcelist`` range and retries have - been exhausted. - - :param tuple history: The history of the request encountered during - each call to :meth:`~Retry.increment`. The list is in the order - the requests occurred. Each list item is of class :class:`RequestHistory`. - - :param bool respect_retry_after_header: - Whether to respect Retry-After header on status codes defined as - :attr:`Retry.RETRY_AFTER_STATUS_CODES` or not. - - :param iterable remove_headers_on_redirect: - Sequence of headers to remove from the request when a response - indicating a redirect is returned before firing off the redirected - request. - """ - - DEFAULT_METHOD_WHITELIST = frozenset([ - 'HEAD', 'GET', 'PUT', 'DELETE', 'OPTIONS', 'TRACE']) - - RETRY_AFTER_STATUS_CODES = frozenset([413, 429, 503]) - - DEFAULT_REDIRECT_HEADERS_BLACKLIST = frozenset(['Authorization']) - - #: Maximum backoff time. - BACKOFF_MAX = 120 - - def __init__(self, total=10, connect=None, read=None, redirect=None, status=None, - method_whitelist=DEFAULT_METHOD_WHITELIST, status_forcelist=None, - backoff_factor=0, raise_on_redirect=True, raise_on_status=True, - history=None, respect_retry_after_header=True, - remove_headers_on_redirect=DEFAULT_REDIRECT_HEADERS_BLACKLIST): - - self.total = total - self.connect = connect - self.read = read - self.status = status - - if redirect is False or total is False: - redirect = 0 - raise_on_redirect = False - - self.redirect = redirect - self.status_forcelist = status_forcelist or set() - self.method_whitelist = method_whitelist - self.backoff_factor = backoff_factor - self.raise_on_redirect = raise_on_redirect - self.raise_on_status = raise_on_status - self.history = history or tuple() - self.respect_retry_after_header = respect_retry_after_header - self.remove_headers_on_redirect = remove_headers_on_redirect - - def new(self, **kw): - params = dict( - total=self.total, - connect=self.connect, read=self.read, redirect=self.redirect, status=self.status, - method_whitelist=self.method_whitelist, - status_forcelist=self.status_forcelist, - backoff_factor=self.backoff_factor, - raise_on_redirect=self.raise_on_redirect, - raise_on_status=self.raise_on_status, - history=self.history, - remove_headers_on_redirect=self.remove_headers_on_redirect - ) - params.update(kw) - return type(self)(**params) - - @classmethod - def from_int(cls, retries, redirect=True, default=None): - """ Backwards-compatibility for the old retries format.""" - if retries is None: - retries = default if default is not None else cls.DEFAULT - - if isinstance(retries, Retry): - return retries - - redirect = bool(redirect) and None - new_retries = cls(retries, redirect=redirect) - log.debug("Converted retries value: %r -> %r", retries, new_retries) - return new_retries - - def get_backoff_time(self): - """ Formula for computing the current backoff - - :rtype: float - """ - # We want to consider only the last consecutive errors sequence (Ignore redirects). - consecutive_errors_len = len(list(takewhile(lambda x: x.redirect_location is None, - reversed(self.history)))) - if consecutive_errors_len <= 1: - return 0 - - backoff_value = self.backoff_factor * (2 ** (consecutive_errors_len - 1)) - return min(self.BACKOFF_MAX, backoff_value) - - def parse_retry_after(self, retry_after): - # Whitespace: https://tools.ietf.org/html/rfc7230#section-3.2.4 - if re.match(r"^\s*[0-9]+\s*$", retry_after): - seconds = int(retry_after) - else: - retry_date_tuple = email.utils.parsedate(retry_after) - if retry_date_tuple is None: - raise InvalidHeader("Invalid Retry-After header: %s" % retry_after) - retry_date = time.mktime(retry_date_tuple) - seconds = retry_date - time.time() - - if seconds < 0: - seconds = 0 - - return seconds - - def get_retry_after(self, response): - """ Get the value of Retry-After in seconds. """ - - retry_after = response.getheader("Retry-After") - - if retry_after is None: - return None - - return self.parse_retry_after(retry_after) - - def sleep_for_retry(self, response=None): - retry_after = self.get_retry_after(response) - if retry_after: - time.sleep(retry_after) - return True - - return False - - def _sleep_backoff(self): - backoff = self.get_backoff_time() - if backoff <= 0: - return - time.sleep(backoff) - - def sleep(self, response=None): - """ Sleep between retry attempts. - - This method will respect a server's ``Retry-After`` response header - and sleep the duration of the time requested. If that is not present, it - will use an exponential backoff. By default, the backoff factor is 0 and - this method will return immediately. - """ - - if response: - slept = self.sleep_for_retry(response) - if slept: - return - - self._sleep_backoff() - - def _is_connection_error(self, err): - """ Errors when we're fairly sure that the server did not receive the - request, so it should be safe to retry. - """ - return isinstance(err, ConnectTimeoutError) - - def _is_read_error(self, err): - """ Errors that occur after the request has been started, so we should - assume that the server began processing it. - """ - return isinstance(err, (ReadTimeoutError, ProtocolError)) - - def _is_method_retryable(self, method): - """ Checks if a given HTTP method should be retried upon, depending if - it is included on the method whitelist. - """ - if self.method_whitelist and method.upper() not in self.method_whitelist: - return False - - return True - - def is_retry(self, method, status_code, has_retry_after=False): - """ Is this method/status code retryable? (Based on whitelists and control - variables such as the number of total retries to allow, whether to - respect the Retry-After header, whether this header is present, and - whether the returned status code is on the list of status codes to - be retried upon on the presence of the aforementioned header) - """ - if not self._is_method_retryable(method): - return False - - if self.status_forcelist and status_code in self.status_forcelist: - return True - - return (self.total and self.respect_retry_after_header and - has_retry_after and (status_code in self.RETRY_AFTER_STATUS_CODES)) - - def is_exhausted(self): - """ Are we out of retries? """ - retry_counts = (self.total, self.connect, self.read, self.redirect, self.status) - retry_counts = list(filter(None, retry_counts)) - if not retry_counts: - return False - - return min(retry_counts) < 0 - - def increment(self, method=None, url=None, response=None, error=None, - _pool=None, _stacktrace=None): - """ Return a new Retry object with incremented retry counters. - - :param response: A response object, or None, if the server did not - return a response. - :type response: :class:`~urllib3.response.HTTPResponse` - :param Exception error: An error encountered during the request, or - None if the response was received successfully. - - :return: A new ``Retry`` object. - """ - if self.total is False and error: - # Disabled, indicate to re-raise the error. - raise six.reraise(type(error), error, _stacktrace) - - total = self.total - if total is not None: - total -= 1 - - connect = self.connect - read = self.read - redirect = self.redirect - status_count = self.status - cause = 'unknown' - status = None - redirect_location = None - - if error and self._is_connection_error(error): - # Connect retry? - if connect is False: - raise six.reraise(type(error), error, _stacktrace) - elif connect is not None: - connect -= 1 - - elif error and self._is_read_error(error): - # Read retry? - if read is False or not self._is_method_retryable(method): - raise six.reraise(type(error), error, _stacktrace) - elif read is not None: - read -= 1 - - elif response and response.get_redirect_location(): - # Redirect retry? - if redirect is not None: - redirect -= 1 - cause = 'too many redirects' - redirect_location = response.get_redirect_location() - status = response.status - - else: - # Incrementing because of a server error like a 500 in - # status_forcelist and a the given method is in the whitelist - cause = ResponseError.GENERIC_ERROR - if response and response.status: - if status_count is not None: - status_count -= 1 - cause = ResponseError.SPECIFIC_ERROR.format( - status_code=response.status) - status = response.status - - history = self.history + (RequestHistory(method, url, error, status, redirect_location),) - - new_retry = self.new( - total=total, - connect=connect, read=read, redirect=redirect, status=status_count, - history=history) - - if new_retry.is_exhausted(): - raise MaxRetryError(_pool, url, error or ResponseError(cause)) - - log.debug("Incremented Retry for (url='%s'): %r", url, new_retry) - - return new_retry - - def __repr__(self): - return ('{cls.__name__}(total={self.total}, connect={self.connect}, ' - 'read={self.read}, redirect={self.redirect}, status={self.status})').format( - cls=type(self), self=self) - - -# For backwards compatibility (equivalent to pre-v1.9): -Retry.DEFAULT = Retry(3) diff --git a/python/urllib3/util/ssl_.py b/python/urllib3/util/ssl_.py deleted file mode 100644 index 64ea192..0000000 --- a/python/urllib3/util/ssl_.py +++ /dev/null @@ -1,381 +0,0 @@ -from __future__ import absolute_import -import errno -import warnings -import hmac -import socket - -from binascii import hexlify, unhexlify -from hashlib import md5, sha1, sha256 - -from ..exceptions import SSLError, InsecurePlatformWarning, SNIMissingWarning -from ..packages import six - - -SSLContext = None -HAS_SNI = False -IS_PYOPENSSL = False -IS_SECURETRANSPORT = False - -# Maps the length of a digest to a possible hash function producing this digest -HASHFUNC_MAP = { - 32: md5, - 40: sha1, - 64: sha256, -} - - -def _const_compare_digest_backport(a, b): - """ - Compare two digests of equal length in constant time. - - The digests must be of type str/bytes. - Returns True if the digests match, and False otherwise. - """ - result = abs(len(a) - len(b)) - for l, r in zip(bytearray(a), bytearray(b)): - result |= l ^ r - return result == 0 - - -_const_compare_digest = getattr(hmac, 'compare_digest', - _const_compare_digest_backport) - - -try: # Test for SSL features - import ssl - from ssl import wrap_socket, CERT_NONE, PROTOCOL_SSLv23 - from ssl import HAS_SNI # Has SNI? -except ImportError: - pass - - -try: - from ssl import OP_NO_SSLv2, OP_NO_SSLv3, OP_NO_COMPRESSION -except ImportError: - OP_NO_SSLv2, OP_NO_SSLv3 = 0x1000000, 0x2000000 - OP_NO_COMPRESSION = 0x20000 - - -# Python 2.7 doesn't have inet_pton on non-Linux so we fallback on inet_aton in -# those cases. This means that we can only detect IPv4 addresses in this case. -if hasattr(socket, 'inet_pton'): - inet_pton = socket.inet_pton -else: - # Maybe we can use ipaddress if the user has urllib3[secure]? - try: - import ipaddress - - def inet_pton(_, host): - if isinstance(host, bytes): - host = host.decode('ascii') - return ipaddress.ip_address(host) - - except ImportError: # Platform-specific: Non-Linux - def inet_pton(_, host): - return socket.inet_aton(host) - - -# A secure default. -# Sources for more information on TLS ciphers: -# -# - https://wiki.mozilla.org/Security/Server_Side_TLS -# - https://www.ssllabs.com/projects/best-practices/index.html -# - https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/ -# -# The general intent is: -# - Prefer TLS 1.3 cipher suites -# - prefer cipher suites that offer perfect forward secrecy (DHE/ECDHE), -# - prefer ECDHE over DHE for better performance, -# - prefer any AES-GCM and ChaCha20 over any AES-CBC for better performance and -# security, -# - prefer AES-GCM over ChaCha20 because hardware-accelerated AES is common, -# - disable NULL authentication, MD5 MACs and DSS for security reasons. -DEFAULT_CIPHERS = ':'.join([ - 'TLS13-AES-256-GCM-SHA384', - 'TLS13-CHACHA20-POLY1305-SHA256', - 'TLS13-AES-128-GCM-SHA256', - 'ECDH+AESGCM', - 'ECDH+CHACHA20', - 'DH+AESGCM', - 'DH+CHACHA20', - 'ECDH+AES256', - 'DH+AES256', - 'ECDH+AES128', - 'DH+AES', - 'RSA+AESGCM', - 'RSA+AES', - '!aNULL', - '!eNULL', - '!MD5', -]) - -try: - from ssl import SSLContext # Modern SSL? -except ImportError: - import sys - - class SSLContext(object): # Platform-specific: Python 2 - def __init__(self, protocol_version): - self.protocol = protocol_version - # Use default values from a real SSLContext - self.check_hostname = False - self.verify_mode = ssl.CERT_NONE - self.ca_certs = None - self.options = 0 - self.certfile = None - self.keyfile = None - self.ciphers = None - - def load_cert_chain(self, certfile, keyfile): - self.certfile = certfile - self.keyfile = keyfile - - def load_verify_locations(self, cafile=None, capath=None): - self.ca_certs = cafile - - if capath is not None: - raise SSLError("CA directories not supported in older Pythons") - - def set_ciphers(self, cipher_suite): - self.ciphers = cipher_suite - - def wrap_socket(self, socket, server_hostname=None, server_side=False): - warnings.warn( - 'A true SSLContext object is not available. This prevents ' - 'urllib3 from configuring SSL appropriately and may cause ' - 'certain SSL connections to fail. You can upgrade to a newer ' - 'version of Python to solve this. For more information, see ' - 'https://urllib3.readthedocs.io/en/latest/advanced-usage.html' - '#ssl-warnings', - InsecurePlatformWarning - ) - kwargs = { - 'keyfile': self.keyfile, - 'certfile': self.certfile, - 'ca_certs': self.ca_certs, - 'cert_reqs': self.verify_mode, - 'ssl_version': self.protocol, - 'server_side': server_side, - } - return wrap_socket(socket, ciphers=self.ciphers, **kwargs) - - -def assert_fingerprint(cert, fingerprint): - """ - Checks if given fingerprint matches the supplied certificate. - - :param cert: - Certificate as bytes object. - :param fingerprint: - Fingerprint as string of hexdigits, can be interspersed by colons. - """ - - fingerprint = fingerprint.replace(':', '').lower() - digest_length = len(fingerprint) - hashfunc = HASHFUNC_MAP.get(digest_length) - if not hashfunc: - raise SSLError( - 'Fingerprint of invalid length: {0}'.format(fingerprint)) - - # We need encode() here for py32; works on py2 and p33. - fingerprint_bytes = unhexlify(fingerprint.encode()) - - cert_digest = hashfunc(cert).digest() - - if not _const_compare_digest(cert_digest, fingerprint_bytes): - raise SSLError('Fingerprints did not match. Expected "{0}", got "{1}".' - .format(fingerprint, hexlify(cert_digest))) - - -def resolve_cert_reqs(candidate): - """ - Resolves the argument to a numeric constant, which can be passed to - the wrap_socket function/method from the ssl module. - Defaults to :data:`ssl.CERT_NONE`. - If given a string it is assumed to be the name of the constant in the - :mod:`ssl` module or its abbreviation. - (So you can specify `REQUIRED` instead of `CERT_REQUIRED`. - If it's neither `None` nor a string we assume it is already the numeric - constant which can directly be passed to wrap_socket. - """ - if candidate is None: - return CERT_NONE - - if isinstance(candidate, str): - res = getattr(ssl, candidate, None) - if res is None: - res = getattr(ssl, 'CERT_' + candidate) - return res - - return candidate - - -def resolve_ssl_version(candidate): - """ - like resolve_cert_reqs - """ - if candidate is None: - return PROTOCOL_SSLv23 - - if isinstance(candidate, str): - res = getattr(ssl, candidate, None) - if res is None: - res = getattr(ssl, 'PROTOCOL_' + candidate) - return res - - return candidate - - -def create_urllib3_context(ssl_version=None, cert_reqs=None, - options=None, ciphers=None): - """All arguments have the same meaning as ``ssl_wrap_socket``. - - By default, this function does a lot of the same work that - ``ssl.create_default_context`` does on Python 3.4+. It: - - - Disables SSLv2, SSLv3, and compression - - Sets a restricted set of server ciphers - - If you wish to enable SSLv3, you can do:: - - from urllib3.util import ssl_ - context = ssl_.create_urllib3_context() - context.options &= ~ssl_.OP_NO_SSLv3 - - You can do the same to enable compression (substituting ``COMPRESSION`` - for ``SSLv3`` in the last line above). - - :param ssl_version: - The desired protocol version to use. This will default to - PROTOCOL_SSLv23 which will negotiate the highest protocol that both - the server and your installation of OpenSSL support. - :param cert_reqs: - Whether to require the certificate verification. This defaults to - ``ssl.CERT_REQUIRED``. - :param options: - Specific OpenSSL options. These default to ``ssl.OP_NO_SSLv2``, - ``ssl.OP_NO_SSLv3``, ``ssl.OP_NO_COMPRESSION``. - :param ciphers: - Which cipher suites to allow the server to select. - :returns: - Constructed SSLContext object with specified options - :rtype: SSLContext - """ - context = SSLContext(ssl_version or ssl.PROTOCOL_SSLv23) - - context.set_ciphers(ciphers or DEFAULT_CIPHERS) - - # Setting the default here, as we may have no ssl module on import - cert_reqs = ssl.CERT_REQUIRED if cert_reqs is None else cert_reqs - - if options is None: - options = 0 - # SSLv2 is easily broken and is considered harmful and dangerous - options |= OP_NO_SSLv2 - # SSLv3 has several problems and is now dangerous - options |= OP_NO_SSLv3 - # Disable compression to prevent CRIME attacks for OpenSSL 1.0+ - # (issue #309) - options |= OP_NO_COMPRESSION - - context.options |= options - - context.verify_mode = cert_reqs - if getattr(context, 'check_hostname', None) is not None: # Platform-specific: Python 3.2 - # We do our own verification, including fingerprints and alternative - # hostnames. So disable it here - context.check_hostname = False - return context - - -def ssl_wrap_socket(sock, keyfile=None, certfile=None, cert_reqs=None, - ca_certs=None, server_hostname=None, - ssl_version=None, ciphers=None, ssl_context=None, - ca_cert_dir=None): - """ - All arguments except for server_hostname, ssl_context, and ca_cert_dir have - the same meaning as they do when using :func:`ssl.wrap_socket`. - - :param server_hostname: - When SNI is supported, the expected hostname of the certificate - :param ssl_context: - A pre-made :class:`SSLContext` object. If none is provided, one will - be created using :func:`create_urllib3_context`. - :param ciphers: - A string of ciphers we wish the client to support. - :param ca_cert_dir: - A directory containing CA certificates in multiple separate files, as - supported by OpenSSL's -CApath flag or the capath argument to - SSLContext.load_verify_locations(). - """ - context = ssl_context - if context is None: - # Note: This branch of code and all the variables in it are no longer - # used by urllib3 itself. We should consider deprecating and removing - # this code. - context = create_urllib3_context(ssl_version, cert_reqs, - ciphers=ciphers) - - if ca_certs or ca_cert_dir: - try: - context.load_verify_locations(ca_certs, ca_cert_dir) - except IOError as e: # Platform-specific: Python 2.7 - raise SSLError(e) - # Py33 raises FileNotFoundError which subclasses OSError - # These are not equivalent unless we check the errno attribute - except OSError as e: # Platform-specific: Python 3.3 and beyond - if e.errno == errno.ENOENT: - raise SSLError(e) - raise - elif getattr(context, 'load_default_certs', None) is not None: - # try to load OS default certs; works well on Windows (require Python3.4+) - context.load_default_certs() - - if certfile: - context.load_cert_chain(certfile, keyfile) - - # If we detect server_hostname is an IP address then the SNI - # extension should not be used according to RFC3546 Section 3.1 - # We shouldn't warn the user if SNI isn't available but we would - # not be using SNI anyways due to IP address for server_hostname. - if ((server_hostname is not None and not is_ipaddress(server_hostname)) - or IS_SECURETRANSPORT): - if HAS_SNI and server_hostname is not None: - return context.wrap_socket(sock, server_hostname=server_hostname) - - warnings.warn( - 'An HTTPS request has been made, but the SNI (Server Name ' - 'Indication) extension to TLS is not available on this platform. ' - 'This may cause the server to present an incorrect TLS ' - 'certificate, which can cause validation failures. You can upgrade to ' - 'a newer version of Python to solve this. For more information, see ' - 'https://urllib3.readthedocs.io/en/latest/advanced-usage.html' - '#ssl-warnings', - SNIMissingWarning - ) - - return context.wrap_socket(sock) - - -def is_ipaddress(hostname): - """Detects whether the hostname given is an IP address. - - :param str hostname: Hostname to examine. - :return: True if the hostname is an IP address, False otherwise. - """ - if six.PY3 and isinstance(hostname, bytes): - # IDN A-label bytes are ASCII compatible. - hostname = hostname.decode('ascii') - - families = [socket.AF_INET] - if hasattr(socket, 'AF_INET6'): - families.append(socket.AF_INET6) - - for af in families: - try: - inet_pton(af, hostname) - except (socket.error, ValueError, OSError): - pass - else: - return True - return False diff --git a/python/urllib3/util/timeout.py b/python/urllib3/util/timeout.py deleted file mode 100644 index cec817e..0000000 --- a/python/urllib3/util/timeout.py +++ /dev/null @@ -1,242 +0,0 @@ -from __future__ import absolute_import -# The default socket timeout, used by httplib to indicate that no timeout was -# specified by the user -from socket import _GLOBAL_DEFAULT_TIMEOUT -import time - -from ..exceptions import TimeoutStateError - -# A sentinel value to indicate that no timeout was specified by the user in -# urllib3 -_Default = object() - - -# Use time.monotonic if available. -current_time = getattr(time, "monotonic", time.time) - - -class Timeout(object): - """ Timeout configuration. - - Timeouts can be defined as a default for a pool:: - - timeout = Timeout(connect=2.0, read=7.0) - http = PoolManager(timeout=timeout) - response = http.request('GET', 'http://example.com/') - - Or per-request (which overrides the default for the pool):: - - response = http.request('GET', 'http://example.com/', timeout=Timeout(10)) - - Timeouts can be disabled by setting all the parameters to ``None``:: - - no_timeout = Timeout(connect=None, read=None) - response = http.request('GET', 'http://example.com/, timeout=no_timeout) - - - :param total: - This combines the connect and read timeouts into one; the read timeout - will be set to the time leftover from the connect attempt. In the - event that both a connect timeout and a total are specified, or a read - timeout and a total are specified, the shorter timeout will be applied. - - Defaults to None. - - :type total: integer, float, or None - - :param connect: - The maximum amount of time to wait for a connection attempt to a server - to succeed. Omitting the parameter will default the connect timeout to - the system default, probably `the global default timeout in socket.py - <http://hg.python.org/cpython/file/603b4d593758/Lib/socket.py#l535>`_. - None will set an infinite timeout for connection attempts. - - :type connect: integer, float, or None - - :param read: - The maximum amount of time to wait between consecutive - read operations for a response from the server. Omitting - the parameter will default the read timeout to the system - default, probably `the global default timeout in socket.py - <http://hg.python.org/cpython/file/603b4d593758/Lib/socket.py#l535>`_. - None will set an infinite timeout. - - :type read: integer, float, or None - - .. note:: - - Many factors can affect the total amount of time for urllib3 to return - an HTTP response. - - For example, Python's DNS resolver does not obey the timeout specified - on the socket. Other factors that can affect total request time include - high CPU load, high swap, the program running at a low priority level, - or other behaviors. - - In addition, the read and total timeouts only measure the time between - read operations on the socket connecting the client and the server, - not the total amount of time for the request to return a complete - response. For most requests, the timeout is raised because the server - has not sent the first byte in the specified time. This is not always - the case; if a server streams one byte every fifteen seconds, a timeout - of 20 seconds will not trigger, even though the request will take - several minutes to complete. - - If your goal is to cut off any request after a set amount of wall clock - time, consider having a second "watcher" thread to cut off a slow - request. - """ - - #: A sentinel object representing the default timeout value - DEFAULT_TIMEOUT = _GLOBAL_DEFAULT_TIMEOUT - - def __init__(self, total=None, connect=_Default, read=_Default): - self._connect = self._validate_timeout(connect, 'connect') - self._read = self._validate_timeout(read, 'read') - self.total = self._validate_timeout(total, 'total') - self._start_connect = None - - def __str__(self): - return '%s(connect=%r, read=%r, total=%r)' % ( - type(self).__name__, self._connect, self._read, self.total) - - @classmethod - def _validate_timeout(cls, value, name): - """ Check that a timeout attribute is valid. - - :param value: The timeout value to validate - :param name: The name of the timeout attribute to validate. This is - used to specify in error messages. - :return: The validated and casted version of the given value. - :raises ValueError: If it is a numeric value less than or equal to - zero, or the type is not an integer, float, or None. - """ - if value is _Default: - return cls.DEFAULT_TIMEOUT - - if value is None or value is cls.DEFAULT_TIMEOUT: - return value - - if isinstance(value, bool): - raise ValueError("Timeout cannot be a boolean value. It must " - "be an int, float or None.") - try: - float(value) - except (TypeError, ValueError): - raise ValueError("Timeout value %s was %s, but it must be an " - "int, float or None." % (name, value)) - - try: - if value <= 0: - raise ValueError("Attempted to set %s timeout to %s, but the " - "timeout cannot be set to a value less " - "than or equal to 0." % (name, value)) - except TypeError: # Python 3 - raise ValueError("Timeout value %s was %s, but it must be an " - "int, float or None." % (name, value)) - - return value - - @classmethod - def from_float(cls, timeout): - """ Create a new Timeout from a legacy timeout value. - - The timeout value used by httplib.py sets the same timeout on the - connect(), and recv() socket requests. This creates a :class:`Timeout` - object that sets the individual timeouts to the ``timeout`` value - passed to this function. - - :param timeout: The legacy timeout value. - :type timeout: integer, float, sentinel default object, or None - :return: Timeout object - :rtype: :class:`Timeout` - """ - return Timeout(read=timeout, connect=timeout) - - def clone(self): - """ Create a copy of the timeout object - - Timeout properties are stored per-pool but each request needs a fresh - Timeout object to ensure each one has its own start/stop configured. - - :return: a copy of the timeout object - :rtype: :class:`Timeout` - """ - # We can't use copy.deepcopy because that will also create a new object - # for _GLOBAL_DEFAULT_TIMEOUT, which socket.py uses as a sentinel to - # detect the user default. - return Timeout(connect=self._connect, read=self._read, - total=self.total) - - def start_connect(self): - """ Start the timeout clock, used during a connect() attempt - - :raises urllib3.exceptions.TimeoutStateError: if you attempt - to start a timer that has been started already. - """ - if self._start_connect is not None: - raise TimeoutStateError("Timeout timer has already been started.") - self._start_connect = current_time() - return self._start_connect - - def get_connect_duration(self): - """ Gets the time elapsed since the call to :meth:`start_connect`. - - :return: Elapsed time. - :rtype: float - :raises urllib3.exceptions.TimeoutStateError: if you attempt - to get duration for a timer that hasn't been started. - """ - if self._start_connect is None: - raise TimeoutStateError("Can't get connect duration for timer " - "that has not started.") - return current_time() - self._start_connect - - @property - def connect_timeout(self): - """ Get the value to use when setting a connection timeout. - - This will be a positive float or integer, the value None - (never timeout), or the default system timeout. - - :return: Connect timeout. - :rtype: int, float, :attr:`Timeout.DEFAULT_TIMEOUT` or None - """ - if self.total is None: - return self._connect - - if self._connect is None or self._connect is self.DEFAULT_TIMEOUT: - return self.total - - return min(self._connect, self.total) - - @property - def read_timeout(self): - """ Get the value for the read timeout. - - This assumes some time has elapsed in the connection timeout and - computes the read timeout appropriately. - - If self.total is set, the read timeout is dependent on the amount of - time taken by the connect timeout. If the connection time has not been - established, a :exc:`~urllib3.exceptions.TimeoutStateError` will be - raised. - - :return: Value to use for the read timeout. - :rtype: int, float, :attr:`Timeout.DEFAULT_TIMEOUT` or None - :raises urllib3.exceptions.TimeoutStateError: If :meth:`start_connect` - has not yet been called on this object. - """ - if (self.total is not None and - self.total is not self.DEFAULT_TIMEOUT and - self._read is not None and - self._read is not self.DEFAULT_TIMEOUT): - # In case the connect timeout has not yet been established. - if self._start_connect is None: - return self._read - return max(0, min(self.total - self.get_connect_duration(), - self._read)) - elif self.total is not None and self.total is not self.DEFAULT_TIMEOUT: - return max(0, self.total - self.get_connect_duration()) - else: - return self._read diff --git a/python/urllib3/util/url.py b/python/urllib3/util/url.py deleted file mode 100644 index 6b6f996..0000000 --- a/python/urllib3/util/url.py +++ /dev/null @@ -1,230 +0,0 @@ -from __future__ import absolute_import -from collections import namedtuple - -from ..exceptions import LocationParseError - - -url_attrs = ['scheme', 'auth', 'host', 'port', 'path', 'query', 'fragment'] - -# We only want to normalize urls with an HTTP(S) scheme. -# urllib3 infers URLs without a scheme (None) to be http. -NORMALIZABLE_SCHEMES = ('http', 'https', None) - - -class Url(namedtuple('Url', url_attrs)): - """ - Datastructure for representing an HTTP URL. Used as a return value for - :func:`parse_url`. Both the scheme and host are normalized as they are - both case-insensitive according to RFC 3986. - """ - __slots__ = () - - def __new__(cls, scheme=None, auth=None, host=None, port=None, path=None, - query=None, fragment=None): - if path and not path.startswith('/'): - path = '/' + path - if scheme: - scheme = scheme.lower() - if host and scheme in NORMALIZABLE_SCHEMES: - host = host.lower() - return super(Url, cls).__new__(cls, scheme, auth, host, port, path, - query, fragment) - - @property - def hostname(self): - """For backwards-compatibility with urlparse. We're nice like that.""" - return self.host - - @property - def request_uri(self): - """Absolute path including the query string.""" - uri = self.path or '/' - - if self.query is not None: - uri += '?' + self.query - - return uri - - @property - def netloc(self): - """Network location including host and port""" - if self.port: - return '%s:%d' % (self.host, self.port) - return self.host - - @property - def url(self): - """ - Convert self into a url - - This function should more or less round-trip with :func:`.parse_url`. The - returned url may not be exactly the same as the url inputted to - :func:`.parse_url`, but it should be equivalent by the RFC (e.g., urls - with a blank port will have : removed). - - Example: :: - - >>> U = parse_url('http://google.com/mail/') - >>> U.url - 'http://google.com/mail/' - >>> Url('http', 'username:password', 'host.com', 80, - ... '/path', 'query', 'fragment').url - 'http://username:password@host.com:80/path?query#fragment' - """ - scheme, auth, host, port, path, query, fragment = self - url = '' - - # We use "is not None" we want things to happen with empty strings (or 0 port) - if scheme is not None: - url += scheme + '://' - if auth is not None: - url += auth + '@' - if host is not None: - url += host - if port is not None: - url += ':' + str(port) - if path is not None: - url += path - if query is not None: - url += '?' + query - if fragment is not None: - url += '#' + fragment - - return url - - def __str__(self): - return self.url - - -def split_first(s, delims): - """ - Given a string and an iterable of delimiters, split on the first found - delimiter. Return two split parts and the matched delimiter. - - If not found, then the first part is the full input string. - - Example:: - - >>> split_first('foo/bar?baz', '?/=') - ('foo', 'bar?baz', '/') - >>> split_first('foo/bar?baz', '123') - ('foo/bar?baz', '', None) - - Scales linearly with number of delims. Not ideal for large number of delims. - """ - min_idx = None - min_delim = None - for d in delims: - idx = s.find(d) - if idx < 0: - continue - - if min_idx is None or idx < min_idx: - min_idx = idx - min_delim = d - - if min_idx is None or min_idx < 0: - return s, '', None - - return s[:min_idx], s[min_idx + 1:], min_delim - - -def parse_url(url): - """ - Given a url, return a parsed :class:`.Url` namedtuple. Best-effort is - performed to parse incomplete urls. Fields not provided will be None. - - Partly backwards-compatible with :mod:`urlparse`. - - Example:: - - >>> parse_url('http://google.com/mail/') - Url(scheme='http', host='google.com', port=None, path='/mail/', ...) - >>> parse_url('google.com:80') - Url(scheme=None, host='google.com', port=80, path=None, ...) - >>> parse_url('/foo?bar') - Url(scheme=None, host=None, port=None, path='/foo', query='bar', ...) - """ - - # While this code has overlap with stdlib's urlparse, it is much - # simplified for our needs and less annoying. - # Additionally, this implementations does silly things to be optimal - # on CPython. - - if not url: - # Empty - return Url() - - scheme = None - auth = None - host = None - port = None - path = None - fragment = None - query = None - - # Scheme - if '://' in url: - scheme, url = url.split('://', 1) - - # Find the earliest Authority Terminator - # (http://tools.ietf.org/html/rfc3986#section-3.2) - url, path_, delim = split_first(url, ['/', '?', '#']) - - if delim: - # Reassemble the path - path = delim + path_ - - # Auth - if '@' in url: - # Last '@' denotes end of auth part - auth, url = url.rsplit('@', 1) - - # IPv6 - if url and url[0] == '[': - host, url = url.split(']', 1) - host += ']' - - # Port - if ':' in url: - _host, port = url.split(':', 1) - - if not host: - host = _host - - if port: - # If given, ports must be integers. No whitespace, no plus or - # minus prefixes, no non-integer digits such as ^2 (superscript). - if not port.isdigit(): - raise LocationParseError(url) - try: - port = int(port) - except ValueError: - raise LocationParseError(url) - else: - # Blank ports are cool, too. (rfc3986#section-3.2.3) - port = None - - elif not host and url: - host = url - - if not path: - return Url(scheme, auth, host, port, path, query, fragment) - - # Fragment - if '#' in path: - path, fragment = path.split('#', 1) - - # Query - if '?' in path: - path, query = path.split('?', 1) - - return Url(scheme, auth, host, port, path, query, fragment) - - -def get_host(url): - """ - Deprecated. Use :func:`parse_url` instead. - """ - p = parse_url(url) - return p.scheme or 'http', p.hostname, p.port diff --git a/python/urllib3/util/wait.py b/python/urllib3/util/wait.py deleted file mode 100644 index 4db71ba..0000000 --- a/python/urllib3/util/wait.py +++ /dev/null @@ -1,150 +0,0 @@ -import errno -from functools import partial -import select -import sys -try: - from time import monotonic -except ImportError: - from time import time as monotonic - -__all__ = ["NoWayToWaitForSocketError", "wait_for_read", "wait_for_write"] - - -class NoWayToWaitForSocketError(Exception): - pass - - -# How should we wait on sockets? -# -# There are two types of APIs you can use for waiting on sockets: the fancy -# modern stateful APIs like epoll/kqueue, and the older stateless APIs like -# select/poll. The stateful APIs are more efficient when you have a lots of -# sockets to keep track of, because you can set them up once and then use them -# lots of times. But we only ever want to wait on a single socket at a time -# and don't want to keep track of state, so the stateless APIs are actually -# more efficient. So we want to use select() or poll(). -# -# Now, how do we choose between select() and poll()? On traditional Unixes, -# select() has a strange calling convention that makes it slow, or fail -# altogether, for high-numbered file descriptors. The point of poll() is to fix -# that, so on Unixes, we prefer poll(). -# -# On Windows, there is no poll() (or at least Python doesn't provide a wrapper -# for it), but that's OK, because on Windows, select() doesn't have this -# strange calling convention; plain select() works fine. -# -# So: on Windows we use select(), and everywhere else we use poll(). We also -# fall back to select() in case poll() is somehow broken or missing. - -if sys.version_info >= (3, 5): - # Modern Python, that retries syscalls by default - def _retry_on_intr(fn, timeout): - return fn(timeout) -else: - # Old and broken Pythons. - def _retry_on_intr(fn, timeout): - if timeout is None: - deadline = float("inf") - else: - deadline = monotonic() + timeout - - while True: - try: - return fn(timeout) - # OSError for 3 <= pyver < 3.5, select.error for pyver <= 2.7 - except (OSError, select.error) as e: - # 'e.args[0]' incantation works for both OSError and select.error - if e.args[0] != errno.EINTR: - raise - else: - timeout = deadline - monotonic() - if timeout < 0: - timeout = 0 - if timeout == float("inf"): - timeout = None - continue - - -def select_wait_for_socket(sock, read=False, write=False, timeout=None): - if not read and not write: - raise RuntimeError("must specify at least one of read=True, write=True") - rcheck = [] - wcheck = [] - if read: - rcheck.append(sock) - if write: - wcheck.append(sock) - # When doing a non-blocking connect, most systems signal success by - # marking the socket writable. Windows, though, signals success by marked - # it as "exceptional". We paper over the difference by checking the write - # sockets for both conditions. (The stdlib selectors module does the same - # thing.) - fn = partial(select.select, rcheck, wcheck, wcheck) - rready, wready, xready = _retry_on_intr(fn, timeout) - return bool(rready or wready or xready) - - -def poll_wait_for_socket(sock, read=False, write=False, timeout=None): - if not read and not write: - raise RuntimeError("must specify at least one of read=True, write=True") - mask = 0 - if read: - mask |= select.POLLIN - if write: - mask |= select.POLLOUT - poll_obj = select.poll() - poll_obj.register(sock, mask) - - # For some reason, poll() takes timeout in milliseconds - def do_poll(t): - if t is not None: - t *= 1000 - return poll_obj.poll(t) - - return bool(_retry_on_intr(do_poll, timeout)) - - -def null_wait_for_socket(*args, **kwargs): - raise NoWayToWaitForSocketError("no select-equivalent available") - - -def _have_working_poll(): - # Apparently some systems have a select.poll that fails as soon as you try - # to use it, either due to strange configuration or broken monkeypatching - # from libraries like eventlet/greenlet. - try: - poll_obj = select.poll() - _retry_on_intr(poll_obj.poll, 0) - except (AttributeError, OSError): - return False - else: - return True - - -def wait_for_socket(*args, **kwargs): - # We delay choosing which implementation to use until the first time we're - # called. We could do it at import time, but then we might make the wrong - # decision if someone goes wild with monkeypatching select.poll after - # we're imported. - global wait_for_socket - if _have_working_poll(): - wait_for_socket = poll_wait_for_socket - elif hasattr(select, "select"): - wait_for_socket = select_wait_for_socket - else: # Platform-specific: Appengine. - wait_for_socket = null_wait_for_socket - return wait_for_socket(*args, **kwargs) - - -def wait_for_read(sock, timeout=None): - """ Waits for reading to be available on a given socket. - Returns True if the socket is readable, or False if the timeout expired. - """ - return wait_for_socket(sock, read=True, timeout=timeout) - - -def wait_for_write(sock, timeout=None): - """ Waits for writing to be available on a given socket. - Returns True if the socket is readable, or False if the timeout expired. - """ - return wait_for_socket(sock, write=True, timeout=timeout) diff --git a/python/vcruntime140.dll b/python/vcruntime140.dll deleted file mode 100644 index 8ec21b76fe20b8d8a49c4cff68546745c0d3fbd4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86840 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 diff --git a/python/werkzeug/__init__.py b/python/werkzeug/__init__.py deleted file mode 100644 index e460e75..0000000 --- a/python/werkzeug/__init__.py +++ /dev/null @@ -1,233 +0,0 @@ -# -*- coding: utf-8 -*- -""" - werkzeug - ~~~~~~~~ - - Werkzeug is the Swiss Army knife of Python web development. - - It provides useful classes and functions for any WSGI application to make - the life of a python web developer much easier. All of the provided - classes are independent from each other so you can mix it with any other - library. - - - :copyright: 2007 Pallets - :license: BSD-3-Clause -""" -import sys -from types import ModuleType - -__version__ = "0.15.4" - -# This import magic raises concerns quite often which is why the implementation -# and motivation is explained here in detail now. -# -# The majority of the functions and classes provided by Werkzeug work on the -# HTTP and WSGI layer. There is no useful grouping for those which is why -# they are all importable from "werkzeug" instead of the modules where they are -# implemented. The downside of that is, that now everything would be loaded at -# once, even if unused. -# -# The implementation of a lazy-loading module in this file replaces the -# werkzeug package when imported from within. Attribute access to the werkzeug -# module will then lazily import from the modules that implement the objects. - -# import mapping to objects in other modules -all_by_module = { - "werkzeug.debug": ["DebuggedApplication"], - "werkzeug.local": [ - "Local", - "LocalManager", - "LocalProxy", - "LocalStack", - "release_local", - ], - "werkzeug.serving": ["run_simple"], - "werkzeug.test": ["Client", "EnvironBuilder", "create_environ", "run_wsgi_app"], - "werkzeug.testapp": ["test_app"], - "werkzeug.exceptions": ["abort", "Aborter"], - "werkzeug.urls": [ - "url_decode", - "url_encode", - "url_quote", - "url_quote_plus", - "url_unquote", - "url_unquote_plus", - "url_fix", - "Href", - "iri_to_uri", - "uri_to_iri", - ], - "werkzeug.formparser": ["parse_form_data"], - "werkzeug.utils": [ - "escape", - "environ_property", - "append_slash_redirect", - "redirect", - "cached_property", - "import_string", - "dump_cookie", - "parse_cookie", - "unescape", - "format_string", - "find_modules", - "header_property", - "html", - "xhtml", - "HTMLBuilder", - "validate_arguments", - "ArgumentValidationError", - "bind_arguments", - "secure_filename", - ], - "werkzeug.wsgi": [ - "get_current_url", - "get_host", - "pop_path_info", - "peek_path_info", - "ClosingIterator", - "FileWrapper", - "make_line_iter", - "LimitedStream", - "responder", - "wrap_file", - "extract_path_info", - ], - "werkzeug.datastructures": [ - "MultiDict", - "CombinedMultiDict", - "Headers", - "EnvironHeaders", - "ImmutableList", - "ImmutableDict", - "ImmutableMultiDict", - "TypeConversionDict", - "ImmutableTypeConversionDict", - "Accept", - "MIMEAccept", - "CharsetAccept", - "LanguageAccept", - "RequestCacheControl", - "ResponseCacheControl", - "ETags", - "HeaderSet", - "WWWAuthenticate", - "Authorization", - "FileMultiDict", - "CallbackDict", - "FileStorage", - "OrderedMultiDict", - "ImmutableOrderedMultiDict", - ], - "werkzeug.useragents": ["UserAgent"], - "werkzeug.http": [ - "parse_etags", - "parse_date", - "http_date", - "cookie_date", - "parse_cache_control_header", - "is_resource_modified", - "parse_accept_header", - "parse_set_header", - "quote_etag", - "unquote_etag", - "generate_etag", - "dump_header", - "parse_list_header", - "parse_dict_header", - "parse_authorization_header", - "parse_www_authenticate_header", - "remove_entity_headers", - "is_entity_header", - "remove_hop_by_hop_headers", - "parse_options_header", - "dump_options_header", - "is_hop_by_hop_header", - "unquote_header_value", - "quote_header_value", - "HTTP_STATUS_CODES", - ], - "werkzeug.wrappers": [ - "BaseResponse", - "BaseRequest", - "Request", - "Response", - "AcceptMixin", - "ETagRequestMixin", - "ETagResponseMixin", - "ResponseStreamMixin", - "CommonResponseDescriptorsMixin", - "UserAgentMixin", - "AuthorizationMixin", - "WWWAuthenticateMixin", - "CommonRequestDescriptorsMixin", - ], - "werkzeug.middleware.dispatcher": ["DispatcherMiddleware"], - "werkzeug.middleware.shared_data": ["SharedDataMiddleware"], - "werkzeug.security": ["generate_password_hash", "check_password_hash"], - # the undocumented easteregg ;-) - "werkzeug._internal": ["_easteregg"], -} - -# modules that should be imported when accessed as attributes of werkzeug -attribute_modules = frozenset(["exceptions", "routing"]) - -object_origins = {} -for module, items in all_by_module.items(): - for item in items: - object_origins[item] = module - - -class module(ModuleType): - """Automatically import objects from the modules.""" - - def __getattr__(self, name): - if name in object_origins: - module = __import__(object_origins[name], None, None, [name]) - for extra_name in all_by_module[module.__name__]: - setattr(self, extra_name, getattr(module, extra_name)) - return getattr(module, name) - elif name in attribute_modules: - __import__("werkzeug." + name) - return ModuleType.__getattribute__(self, name) - - def __dir__(self): - """Just show what we want to show.""" - result = list(new_module.__all__) - result.extend( - ( - "__file__", - "__doc__", - "__all__", - "__docformat__", - "__name__", - "__path__", - "__package__", - "__version__", - ) - ) - return result - - -# keep a reference to this module so that it's not garbage collected -old_module = sys.modules["werkzeug"] - - -# setup the new module and patch it into the dict of loaded modules -new_module = sys.modules["werkzeug"] = module("werkzeug") -new_module.__dict__.update( - { - "__file__": __file__, - "__package__": "werkzeug", - "__path__": __path__, - "__doc__": __doc__, - "__version__": __version__, - "__all__": tuple(object_origins) + tuple(attribute_modules), - "__docformat__": "restructuredtext en", - } -) - - -# Due to bootstrapping issues we need to import exceptions here. -# Don't ask :-( -__import__("werkzeug.exceptions") diff --git a/python/werkzeug/_compat.py b/python/werkzeug/_compat.py deleted file mode 100644 index 1097983..0000000 --- a/python/werkzeug/_compat.py +++ /dev/null @@ -1,219 +0,0 @@ -# flake8: noqa -# This whole file is full of lint errors -import functools -import operator -import sys - -try: - import builtins -except ImportError: - import __builtin__ as builtins - - -PY2 = sys.version_info[0] == 2 -WIN = sys.platform.startswith("win") - -_identity = lambda x: x - -if PY2: - unichr = unichr - text_type = unicode - string_types = (str, unicode) - integer_types = (int, long) - - iterkeys = lambda d, *args, **kwargs: d.iterkeys(*args, **kwargs) - itervalues = lambda d, *args, **kwargs: d.itervalues(*args, **kwargs) - iteritems = lambda d, *args, **kwargs: d.iteritems(*args, **kwargs) - - iterlists = lambda d, *args, **kwargs: d.iterlists(*args, **kwargs) - iterlistvalues = lambda d, *args, **kwargs: d.iterlistvalues(*args, **kwargs) - - int_to_byte = chr - iter_bytes = iter - - import collections as collections_abc - - exec("def reraise(tp, value, tb=None):\n raise tp, value, tb") - - def fix_tuple_repr(obj): - def __repr__(self): - cls = self.__class__ - return "%s(%s)" % ( - cls.__name__, - ", ".join( - "%s=%r" % (field, self[index]) - for index, field in enumerate(cls._fields) - ), - ) - - obj.__repr__ = __repr__ - return obj - - def implements_iterator(cls): - cls.next = cls.__next__ - del cls.__next__ - return cls - - def implements_to_string(cls): - cls.__unicode__ = cls.__str__ - cls.__str__ = lambda x: x.__unicode__().encode("utf-8") - return cls - - def native_string_result(func): - def wrapper(*args, **kwargs): - return func(*args, **kwargs).encode("utf-8") - - return functools.update_wrapper(wrapper, func) - - def implements_bool(cls): - cls.__nonzero__ = cls.__bool__ - del cls.__bool__ - return cls - - from itertools import imap, izip, ifilter - - range_type = xrange - - from StringIO import StringIO - from cStringIO import StringIO as BytesIO - - NativeStringIO = BytesIO - - def make_literal_wrapper(reference): - return _identity - - def normalize_string_tuple(tup): - """Normalizes a string tuple to a common type. Following Python 2 - rules, upgrades to unicode are implicit. - """ - if any(isinstance(x, text_type) for x in tup): - return tuple(to_unicode(x) for x in tup) - return tup - - def try_coerce_native(s): - """Try to coerce a unicode string to native if possible. Otherwise, - leave it as unicode. - """ - try: - return to_native(s) - except UnicodeError: - return s - - wsgi_get_bytes = _identity - - def wsgi_decoding_dance(s, charset="utf-8", errors="replace"): - return s.decode(charset, errors) - - def wsgi_encoding_dance(s, charset="utf-8", errors="replace"): - if isinstance(s, bytes): - return s - return s.encode(charset, errors) - - def to_bytes(x, charset=sys.getdefaultencoding(), errors="strict"): - if x is None: - return None - if isinstance(x, (bytes, bytearray, buffer)): - return bytes(x) - if isinstance(x, unicode): - return x.encode(charset, errors) - raise TypeError("Expected bytes") - - def to_native(x, charset=sys.getdefaultencoding(), errors="strict"): - if x is None or isinstance(x, str): - return x - return x.encode(charset, errors) - - -else: - unichr = chr - text_type = str - string_types = (str,) - integer_types = (int,) - - iterkeys = lambda d, *args, **kwargs: iter(d.keys(*args, **kwargs)) - itervalues = lambda d, *args, **kwargs: iter(d.values(*args, **kwargs)) - iteritems = lambda d, *args, **kwargs: iter(d.items(*args, **kwargs)) - - iterlists = lambda d, *args, **kwargs: iter(d.lists(*args, **kwargs)) - iterlistvalues = lambda d, *args, **kwargs: iter(d.listvalues(*args, **kwargs)) - - int_to_byte = operator.methodcaller("to_bytes", 1, "big") - iter_bytes = functools.partial(map, int_to_byte) - - import collections.abc as collections_abc - - def reraise(tp, value, tb=None): - if value.__traceback__ is not tb: - raise value.with_traceback(tb) - raise value - - fix_tuple_repr = _identity - implements_iterator = _identity - implements_to_string = _identity - implements_bool = _identity - native_string_result = _identity - imap = map - izip = zip - ifilter = filter - range_type = range - - from io import StringIO, BytesIO - - NativeStringIO = StringIO - - _latin1_encode = operator.methodcaller("encode", "latin1") - - def make_literal_wrapper(reference): - if isinstance(reference, text_type): - return _identity - return _latin1_encode - - def normalize_string_tuple(tup): - """Ensures that all types in the tuple are either strings - or bytes. - """ - tupiter = iter(tup) - is_text = isinstance(next(tupiter, None), text_type) - for arg in tupiter: - if isinstance(arg, text_type) != is_text: - raise TypeError( - "Cannot mix str and bytes arguments (got %s)" % repr(tup) - ) - return tup - - try_coerce_native = _identity - wsgi_get_bytes = _latin1_encode - - def wsgi_decoding_dance(s, charset="utf-8", errors="replace"): - return s.encode("latin1").decode(charset, errors) - - def wsgi_encoding_dance(s, charset="utf-8", errors="replace"): - if isinstance(s, text_type): - s = s.encode(charset) - return s.decode("latin1", errors) - - def to_bytes(x, charset=sys.getdefaultencoding(), errors="strict"): - if x is None: - return None - if isinstance(x, (bytes, bytearray, memoryview)): # noqa - return bytes(x) - if isinstance(x, str): - return x.encode(charset, errors) - raise TypeError("Expected bytes") - - def to_native(x, charset=sys.getdefaultencoding(), errors="strict"): - if x is None or isinstance(x, str): - return x - return x.decode(charset, errors) - - -def to_unicode( - x, charset=sys.getdefaultencoding(), errors="strict", allow_none_charset=False -): - if x is None: - return None - if not isinstance(x, bytes): - return text_type(x) - if charset is None and allow_none_charset: - return x - return x.decode(charset, errors) diff --git a/python/werkzeug/_internal.py b/python/werkzeug/_internal.py deleted file mode 100644 index 90e3dd9..0000000 --- a/python/werkzeug/_internal.py +++ /dev/null @@ -1,484 +0,0 @@ -# -*- coding: utf-8 -*- -""" - werkzeug._internal - ~~~~~~~~~~~~~~~~~~ - - This module provides internally used helpers and constants. - - :copyright: 2007 Pallets - :license: BSD-3-Clause -""" -import inspect -import logging -import re -import string -from datetime import date -from datetime import datetime -from itertools import chain -from weakref import WeakKeyDictionary - -from ._compat import int_to_byte -from ._compat import integer_types -from ._compat import iter_bytes -from ._compat import range_type -from ._compat import text_type - - -_logger = None -_signature_cache = WeakKeyDictionary() -_epoch_ord = date(1970, 1, 1).toordinal() -_cookie_params = { - b"expires", - b"path", - b"comment", - b"max-age", - b"secure", - b"httponly", - b"version", -} -_legal_cookie_chars = ( - string.ascii_letters + string.digits + u"/=!#$%&'*+-.^_`|~:" -).encode("ascii") - -_cookie_quoting_map = {b",": b"\\054", b";": b"\\073", b'"': b'\\"', b"\\": b"\\\\"} -for _i in chain(range_type(32), range_type(127, 256)): - _cookie_quoting_map[int_to_byte(_i)] = ("\\%03o" % _i).encode("latin1") - -_octal_re = re.compile(br"\\[0-3][0-7][0-7]") -_quote_re = re.compile(br"[\\].") -_legal_cookie_chars_re = br"[\w\d!#%&\'~_`><@,:/\$\*\+\-\.\^\|\)\(\?\}\{\=]" -_cookie_re = re.compile( - br""" - (?P<key>[^=;]+) - (?:\s*=\s* - (?P<val> - "(?:[^\\"]|\\.)*" | - (?:.*?) - ) - )? - \s*; -""", - flags=re.VERBOSE, -) - - -class _Missing(object): - def __repr__(self): - return "no value" - - def __reduce__(self): - return "_missing" - - -_missing = _Missing() - - -def _get_environ(obj): - env = getattr(obj, "environ", obj) - assert isinstance(env, dict), ( - "%r is not a WSGI environment (has to be a dict)" % type(obj).__name__ - ) - return env - - -def _has_level_handler(logger): - """Check if there is a handler in the logging chain that will handle - the given logger's effective level. - """ - level = logger.getEffectiveLevel() - current = logger - - while current: - if any(handler.level <= level for handler in current.handlers): - return True - - if not current.propagate: - break - - current = current.parent - - return False - - -def _log(type, message, *args, **kwargs): - """Log a message to the 'werkzeug' logger. - - The logger is created the first time it is needed. If there is no - level set, it is set to :data:`logging.INFO`. If there is no handler - for the logger's effective level, a :class:`logging.StreamHandler` - is added. - """ - global _logger - - if _logger is None: - _logger = logging.getLogger("werkzeug") - - if _logger.level == logging.NOTSET: - _logger.setLevel(logging.INFO) - - if not _has_level_handler(_logger): - _logger.addHandler(logging.StreamHandler()) - - getattr(_logger, type)(message.rstrip(), *args, **kwargs) - - -def _parse_signature(func): - """Return a signature object for the function.""" - if hasattr(func, "im_func"): - func = func.im_func - - # if we have a cached validator for this function, return it - parse = _signature_cache.get(func) - if parse is not None: - return parse - - # inspect the function signature and collect all the information - if hasattr(inspect, "getfullargspec"): - tup = inspect.getfullargspec(func) - else: - tup = inspect.getargspec(func) - positional, vararg_var, kwarg_var, defaults = tup[:4] - defaults = defaults or () - arg_count = len(positional) - arguments = [] - for idx, name in enumerate(positional): - if isinstance(name, list): - raise TypeError( - "cannot parse functions that unpack tuples in the function signature" - ) - try: - default = defaults[idx - arg_count] - except IndexError: - param = (name, False, None) - else: - param = (name, True, default) - arguments.append(param) - arguments = tuple(arguments) - - def parse(args, kwargs): - new_args = [] - missing = [] - extra = {} - - # consume as many arguments as positional as possible - for idx, (name, has_default, default) in enumerate(arguments): - try: - new_args.append(args[idx]) - except IndexError: - try: - new_args.append(kwargs.pop(name)) - except KeyError: - if has_default: - new_args.append(default) - else: - missing.append(name) - else: - if name in kwargs: - extra[name] = kwargs.pop(name) - - # handle extra arguments - extra_positional = args[arg_count:] - if vararg_var is not None: - new_args.extend(extra_positional) - extra_positional = () - if kwargs and kwarg_var is None: - extra.update(kwargs) - kwargs = {} - - return ( - new_args, - kwargs, - missing, - extra, - extra_positional, - arguments, - vararg_var, - kwarg_var, - ) - - _signature_cache[func] = parse - return parse - - -def _date_to_unix(arg): - """Converts a timetuple, integer or datetime object into the seconds from - epoch in utc. - """ - if isinstance(arg, datetime): - arg = arg.utctimetuple() - elif isinstance(arg, integer_types + (float,)): - return int(arg) - year, month, day, hour, minute, second = arg[:6] - days = date(year, month, 1).toordinal() - _epoch_ord + day - 1 - hours = days * 24 + hour - minutes = hours * 60 + minute - seconds = minutes * 60 + second - return seconds - - -class _DictAccessorProperty(object): - """Baseclass for `environ_property` and `header_property`.""" - - read_only = False - - def __init__( - self, - name, - default=None, - load_func=None, - dump_func=None, - read_only=None, - doc=None, - ): - self.name = name - self.default = default - self.load_func = load_func - self.dump_func = dump_func - if read_only is not None: - self.read_only = read_only - self.__doc__ = doc - - def __get__(self, obj, type=None): - if obj is None: - return self - storage = self.lookup(obj) - if self.name not in storage: - return self.default - rv = storage[self.name] - if self.load_func is not None: - try: - rv = self.load_func(rv) - except (ValueError, TypeError): - rv = self.default - return rv - - def __set__(self, obj, value): - if self.read_only: - raise AttributeError("read only property") - if self.dump_func is not None: - value = self.dump_func(value) - self.lookup(obj)[self.name] = value - - def __delete__(self, obj): - if self.read_only: - raise AttributeError("read only property") - self.lookup(obj).pop(self.name, None) - - def __repr__(self): - return "<%s %s>" % (self.__class__.__name__, self.name) - - -def _cookie_quote(b): - buf = bytearray() - all_legal = True - _lookup = _cookie_quoting_map.get - _push = buf.extend - - for char in iter_bytes(b): - if char not in _legal_cookie_chars: - all_legal = False - char = _lookup(char, char) - _push(char) - - if all_legal: - return bytes(buf) - return bytes(b'"' + buf + b'"') - - -def _cookie_unquote(b): - if len(b) < 2: - return b - if b[:1] != b'"' or b[-1:] != b'"': - return b - - b = b[1:-1] - - i = 0 - n = len(b) - rv = bytearray() - _push = rv.extend - - while 0 <= i < n: - o_match = _octal_re.search(b, i) - q_match = _quote_re.search(b, i) - if not o_match and not q_match: - rv.extend(b[i:]) - break - j = k = -1 - if o_match: - j = o_match.start(0) - if q_match: - k = q_match.start(0) - if q_match and (not o_match or k < j): - _push(b[i:k]) - _push(b[k + 1 : k + 2]) - i = k + 2 - else: - _push(b[i:j]) - rv.append(int(b[j + 1 : j + 4], 8)) - i = j + 4 - - return bytes(rv) - - -def _cookie_parse_impl(b): - """Lowlevel cookie parsing facility that operates on bytes.""" - i = 0 - n = len(b) - - while i < n: - match = _cookie_re.search(b + b";", i) - if not match: - break - - key = match.group("key").strip() - value = match.group("val") or b"" - i = match.end(0) - - # Ignore parameters. We have no interest in them. - if key.lower() not in _cookie_params: - yield _cookie_unquote(key), _cookie_unquote(value) - - -def _encode_idna(domain): - # If we're given bytes, make sure they fit into ASCII - if not isinstance(domain, text_type): - domain.decode("ascii") - return domain - - # Otherwise check if it's already ascii, then return - try: - return domain.encode("ascii") - except UnicodeError: - pass - - # Otherwise encode each part separately - parts = domain.split(".") - for idx, part in enumerate(parts): - parts[idx] = part.encode("idna") - return b".".join(parts) - - -def _decode_idna(domain): - # If the input is a string try to encode it to ascii to - # do the idna decoding. if that fails because of an - # unicode error, then we already have a decoded idna domain - if isinstance(domain, text_type): - try: - domain = domain.encode("ascii") - except UnicodeError: - return domain - - # Decode each part separately. If a part fails, try to - # decode it with ascii and silently ignore errors. This makes - # most sense because the idna codec does not have error handling - parts = domain.split(b".") - for idx, part in enumerate(parts): - try: - parts[idx] = part.decode("idna") - except UnicodeError: - parts[idx] = part.decode("ascii", "ignore") - - return ".".join(parts) - - -def _make_cookie_domain(domain): - if domain is None: - return None - domain = _encode_idna(domain) - if b":" in domain: - domain = domain.split(b":", 1)[0] - if b"." in domain: - return domain - raise ValueError( - "Setting 'domain' for a cookie on a server running locally (ex: " - "localhost) is not supported by complying browsers. You should " - "have something like: '127.0.0.1 localhost dev.localhost' on " - "your hosts file and then point your server to run on " - "'dev.localhost' and also set 'domain' for 'dev.localhost'" - ) - - -def _easteregg(app=None): - """Like the name says. But who knows how it works?""" - - def bzzzzzzz(gyver): - import base64 - import zlib - - return zlib.decompress(base64.b64decode(gyver)).decode("ascii") - - gyver = u"\n".join( - [ - x + (77 - len(x)) * u" " - for x in bzzzzzzz( - b""" -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 -7f2zLkGNv8b191cD/3vs9Q833z8t""" - ).splitlines() - ] - ) - - def easteregged(environ, start_response): - def injecting_start_response(status, headers, exc_info=None): - headers.append(("X-Powered-By", "Werkzeug")) - return start_response(status, headers, exc_info) - - if app is not None and environ.get("QUERY_STRING") != "macgybarchakku": - return app(environ, injecting_start_response) - injecting_start_response("200 OK", [("Content-Type", "text/html")]) - return [ - ( - u""" -<!DOCTYPE html> -<html> -<head> -<title>About Werkzeug</title> -<style type="text/css"> - body { font: 15px Georgia, serif; text-align: center; } - a { color: #333; text-decoration: none; } - h1 { font-size: 30px; margin: 20px 0 10px 0; } - p { margin: 0 0 30px 0; } - pre { font: 11px 'Consolas', 'Monaco', monospace; line-height: 0.95; } -</style> -</head> -<body> -<h1><a href="http://werkzeug.pocoo.org/">Werkzeug</a></h1> -<p>the Swiss Army knife of Python web development.</p> -<pre>%s\n\n\n</pre> -</body> -</html>""" - % gyver - ).encode("latin1") - ] - - return easteregged diff --git a/python/werkzeug/_reloader.py b/python/werkzeug/_reloader.py deleted file mode 100644 index f06a63d..0000000 --- a/python/werkzeug/_reloader.py +++ /dev/null @@ -1,334 +0,0 @@ -import os -import subprocess -import sys -import threading -import time -from itertools import chain - -from ._compat import iteritems -from ._compat import PY2 -from ._compat import text_type -from ._internal import _log - - -def _iter_module_files(): - """This iterates over all relevant Python files. It goes through all - loaded files from modules, all files in folders of already loaded modules - as well as all files reachable through a package. - """ - # The list call is necessary on Python 3 in case the module - # dictionary modifies during iteration. - for module in list(sys.modules.values()): - if module is None: - continue - filename = getattr(module, "__file__", None) - if filename: - if os.path.isdir(filename) and os.path.exists( - os.path.join(filename, "__init__.py") - ): - filename = os.path.join(filename, "__init__.py") - - old = None - while not os.path.isfile(filename): - old = filename - filename = os.path.dirname(filename) - if filename == old: - break - else: - if filename[-4:] in (".pyc", ".pyo"): - filename = filename[:-1] - yield filename - - -def _find_observable_paths(extra_files=None): - """Finds all paths that should be observed.""" - rv = set( - os.path.dirname(os.path.abspath(x)) if os.path.isfile(x) else os.path.abspath(x) - for x in sys.path - ) - - for filename in extra_files or (): - rv.add(os.path.dirname(os.path.abspath(filename))) - - for module in list(sys.modules.values()): - fn = getattr(module, "__file__", None) - if fn is None: - continue - fn = os.path.abspath(fn) - rv.add(os.path.dirname(fn)) - - return _find_common_roots(rv) - - -def _get_args_for_reloading(): - """Returns the executable. This contains a workaround for windows - if the executable is incorrectly reported to not have the .exe - extension which can cause bugs on reloading. This also contains - a workaround for linux where the file is executable (possibly with - a program other than python) - """ - rv = [sys.executable] - py_script = os.path.abspath(sys.argv[0]) - args = sys.argv[1:] - # Need to look at main module to determine how it was executed. - __main__ = sys.modules["__main__"] - - if __main__.__package__ is None: - # Executed a file, like "python app.py". - if os.name == "nt": - # Windows entry points have ".exe" extension and should be - # called directly. - if not os.path.exists(py_script) and os.path.exists(py_script + ".exe"): - py_script += ".exe" - - if ( - os.path.splitext(rv[0])[1] == ".exe" - and os.path.splitext(py_script)[1] == ".exe" - ): - rv.pop(0) - - elif os.path.isfile(py_script) and os.access(py_script, os.X_OK): - # The file is marked as executable. Nix adds a wrapper that - # shouldn't be called with the Python executable. - rv.pop(0) - - rv.append(py_script) - else: - # Executed a module, like "python -m werkzeug.serving". - if sys.argv[0] == "-m": - # Flask works around previous behavior by putting - # "-m flask" in sys.argv. - # TODO remove this once Flask no longer misbehaves - args = sys.argv - else: - py_module = __main__.__package__ - name = os.path.splitext(os.path.basename(py_script))[0] - - if name != "__main__": - py_module += "." + name - - rv.extend(("-m", py_module.lstrip("."))) - - rv.extend(args) - return rv - - -def _find_common_roots(paths): - """Out of some paths it finds the common roots that need monitoring.""" - paths = [x.split(os.path.sep) for x in paths] - root = {} - for chunks in sorted(paths, key=len, reverse=True): - node = root - for chunk in chunks: - node = node.setdefault(chunk, {}) - node.clear() - - rv = set() - - def _walk(node, path): - for prefix, child in iteritems(node): - _walk(child, path + (prefix,)) - if not node: - rv.add("/".join(path)) - - _walk(root, ()) - return rv - - -class ReloaderLoop(object): - name = None - - # monkeypatched by testsuite. wrapping with `staticmethod` is required in - # case time.sleep has been replaced by a non-c function (e.g. by - # `eventlet.monkey_patch`) before we get here - _sleep = staticmethod(time.sleep) - - def __init__(self, extra_files=None, interval=1): - self.extra_files = set(os.path.abspath(x) for x in extra_files or ()) - self.interval = interval - - def run(self): - pass - - def restart_with_reloader(self): - """Spawn a new Python interpreter with the same arguments as this one, - but running the reloader thread. - """ - while 1: - _log("info", " * Restarting with %s" % self.name) - args = _get_args_for_reloading() - - # a weird bug on windows. sometimes unicode strings end up in the - # environment and subprocess.call does not like this, encode them - # to latin1 and continue. - if os.name == "nt" and PY2: - new_environ = {} - for key, value in iteritems(os.environ): - if isinstance(key, text_type): - key = key.encode("iso-8859-1") - if isinstance(value, text_type): - value = value.encode("iso-8859-1") - new_environ[key] = value - else: - new_environ = os.environ.copy() - - new_environ["WERKZEUG_RUN_MAIN"] = "true" - exit_code = subprocess.call(args, env=new_environ, close_fds=False) - if exit_code != 3: - return exit_code - - def trigger_reload(self, filename): - self.log_reload(filename) - sys.exit(3) - - def log_reload(self, filename): - filename = os.path.abspath(filename) - _log("info", " * Detected change in %r, reloading" % filename) - - -class StatReloaderLoop(ReloaderLoop): - name = "stat" - - def run(self): - mtimes = {} - while 1: - for filename in chain(_iter_module_files(), self.extra_files): - try: - mtime = os.stat(filename).st_mtime - except OSError: - continue - - old_time = mtimes.get(filename) - if old_time is None: - mtimes[filename] = mtime - continue - elif mtime > old_time: - self.trigger_reload(filename) - self._sleep(self.interval) - - -class WatchdogReloaderLoop(ReloaderLoop): - def __init__(self, *args, **kwargs): - ReloaderLoop.__init__(self, *args, **kwargs) - from watchdog.observers import Observer - from watchdog.events import FileSystemEventHandler - - self.observable_paths = set() - - def _check_modification(filename): - if filename in self.extra_files: - self.trigger_reload(filename) - dirname = os.path.dirname(filename) - if dirname.startswith(tuple(self.observable_paths)): - if filename.endswith((".pyc", ".pyo", ".py")): - self.trigger_reload(filename) - - class _CustomHandler(FileSystemEventHandler): - def on_created(self, event): - _check_modification(event.src_path) - - def on_modified(self, event): - _check_modification(event.src_path) - - def on_moved(self, event): - _check_modification(event.src_path) - _check_modification(event.dest_path) - - def on_deleted(self, event): - _check_modification(event.src_path) - - reloader_name = Observer.__name__.lower() - if reloader_name.endswith("observer"): - reloader_name = reloader_name[:-8] - reloader_name += " reloader" - - self.name = reloader_name - - self.observer_class = Observer - self.event_handler = _CustomHandler() - self.should_reload = False - - def trigger_reload(self, filename): - # This is called inside an event handler, which means throwing - # SystemExit has no effect. - # https://github.com/gorakhargosh/watchdog/issues/294 - self.should_reload = True - self.log_reload(filename) - - def run(self): - watches = {} - observer = self.observer_class() - observer.start() - - try: - while not self.should_reload: - to_delete = set(watches) - paths = _find_observable_paths(self.extra_files) - for path in paths: - if path not in watches: - try: - watches[path] = observer.schedule( - self.event_handler, path, recursive=True - ) - except OSError: - # Clear this path from list of watches We don't want - # the same error message showing again in the next - # iteration. - watches[path] = None - to_delete.discard(path) - for path in to_delete: - watch = watches.pop(path, None) - if watch is not None: - observer.unschedule(watch) - self.observable_paths = paths - self._sleep(self.interval) - finally: - observer.stop() - observer.join() - - sys.exit(3) - - -reloader_loops = {"stat": StatReloaderLoop, "watchdog": WatchdogReloaderLoop} - -try: - __import__("watchdog.observers") -except ImportError: - reloader_loops["auto"] = reloader_loops["stat"] -else: - reloader_loops["auto"] = reloader_loops["watchdog"] - - -def ensure_echo_on(): - """Ensure that echo mode is enabled. Some tools such as PDB disable - it which causes usability issues after reload.""" - # tcgetattr will fail if stdin isn't a tty - if not sys.stdin.isatty(): - return - try: - import termios - except ImportError: - return - attributes = termios.tcgetattr(sys.stdin) - if not attributes[3] & termios.ECHO: - attributes[3] |= termios.ECHO - termios.tcsetattr(sys.stdin, termios.TCSANOW, attributes) - - -def run_with_reloader(main_func, extra_files=None, interval=1, reloader_type="auto"): - """Run the given function in an independent python interpreter.""" - import signal - - reloader = reloader_loops[reloader_type](extra_files, interval) - signal.signal(signal.SIGTERM, lambda *args: sys.exit(0)) - try: - if os.environ.get("WERKZEUG_RUN_MAIN") == "true": - ensure_echo_on() - t = threading.Thread(target=main_func, args=()) - t.setDaemon(True) - t.start() - reloader.run() - else: - sys.exit(reloader.restart_with_reloader()) - except KeyboardInterrupt: - pass diff --git a/python/werkzeug/contrib/__init__.py b/python/werkzeug/contrib/__init__.py deleted file mode 100644 index 0e741f0..0000000 --- a/python/werkzeug/contrib/__init__.py +++ /dev/null @@ -1,16 +0,0 @@ -# -*- coding: utf-8 -*- -""" - werkzeug.contrib - ~~~~~~~~~~~~~~~~ - - Contains user-submitted code that other users may find useful, but which - is not part of the Werkzeug core. Anyone can write code for inclusion in - the `contrib` package. All modules in this package are distributed as an - add-on library and thus are not part of Werkzeug itself. - - This file itself is mostly for informational purposes and to tell the - Python interpreter that `contrib` is a package. - - :copyright: 2007 Pallets - :license: BSD-3-Clause -""" diff --git a/python/werkzeug/contrib/atom.py b/python/werkzeug/contrib/atom.py deleted file mode 100644 index d079d2b..0000000 --- a/python/werkzeug/contrib/atom.py +++ /dev/null @@ -1,362 +0,0 @@ -# -*- coding: utf-8 -*- -""" - werkzeug.contrib.atom - ~~~~~~~~~~~~~~~~~~~~~ - - This module provides a class called :class:`AtomFeed` which can be - used to generate feeds in the Atom syndication format (see :rfc:`4287`). - - Example:: - - def atom_feed(request): - feed = AtomFeed("My Blog", feed_url=request.url, - url=request.host_url, - subtitle="My example blog for a feed test.") - for post in Post.query.limit(10).all(): - feed.add(post.title, post.body, content_type='html', - author=post.author, url=post.url, id=post.uid, - updated=post.last_update, published=post.pub_date) - return feed.get_response() - - :copyright: 2007 Pallets - :license: BSD-3-Clause -""" -import warnings -from datetime import datetime - -from .._compat import implements_to_string -from .._compat import string_types -from ..utils import escape -from ..wrappers import BaseResponse - -warnings.warn( - "'werkzeug.contrib.atom' is deprecated as of version 0.15 and will" - " be removed in version 1.0.", - DeprecationWarning, - stacklevel=2, -) - -XHTML_NAMESPACE = "http://www.w3.org/1999/xhtml" - - -def _make_text_block(name, content, content_type=None): - """Helper function for the builder that creates an XML text block.""" - if content_type == "xhtml": - return u'<%s type="xhtml"><div xmlns="%s">%s</div></%s>\n' % ( - name, - XHTML_NAMESPACE, - content, - name, - ) - if not content_type: - return u"<%s>%s</%s>\n" % (name, escape(content), name) - return u'<%s type="%s">%s</%s>\n' % (name, content_type, escape(content), name) - - -def format_iso8601(obj): - """Format a datetime object for iso8601""" - iso8601 = obj.isoformat() - if obj.tzinfo: - return iso8601 - return iso8601 + "Z" - - -@implements_to_string -class AtomFeed(object): - - """A helper class that creates Atom feeds. - - :param title: the title of the feed. Required. - :param title_type: the type attribute for the title element. One of - ``'html'``, ``'text'`` or ``'xhtml'``. - :param url: the url for the feed (not the url *of* the feed) - :param id: a globally unique id for the feed. Must be an URI. If - not present the `feed_url` is used, but one of both is - required. - :param updated: the time the feed was modified the last time. Must - be a :class:`datetime.datetime` object. If not - present the latest entry's `updated` is used. - Treated as UTC if naive datetime. - :param feed_url: the URL to the feed. Should be the URL that was - requested. - :param author: the author of the feed. Must be either a string (the - name) or a dict with name (required) and uri or - email (both optional). Can be a list of (may be - mixed, too) strings and dicts, too, if there are - multiple authors. Required if not every entry has an - author element. - :param icon: an icon for the feed. - :param logo: a logo for the feed. - :param rights: copyright information for the feed. - :param rights_type: the type attribute for the rights element. One of - ``'html'``, ``'text'`` or ``'xhtml'``. Default is - ``'text'``. - :param subtitle: a short description of the feed. - :param subtitle_type: the type attribute for the subtitle element. - One of ``'text'``, ``'html'``, ``'text'`` - or ``'xhtml'``. Default is ``'text'``. - :param links: additional links. Must be a list of dictionaries with - href (required) and rel, type, hreflang, title, length - (all optional) - :param generator: the software that generated this feed. This must be - a tuple in the form ``(name, url, version)``. If - you don't want to specify one of them, set the item - to `None`. - :param entries: a list with the entries for the feed. Entries can also - be added later with :meth:`add`. - - For more information on the elements see - http://www.atomenabled.org/developers/syndication/ - - Everywhere where a list is demanded, any iterable can be used. - """ - - default_generator = ("Werkzeug", None, None) - - def __init__(self, title=None, entries=None, **kwargs): - self.title = title - self.title_type = kwargs.get("title_type", "text") - self.url = kwargs.get("url") - self.feed_url = kwargs.get("feed_url", self.url) - self.id = kwargs.get("id", self.feed_url) - self.updated = kwargs.get("updated") - self.author = kwargs.get("author", ()) - self.icon = kwargs.get("icon") - self.logo = kwargs.get("logo") - self.rights = kwargs.get("rights") - self.rights_type = kwargs.get("rights_type") - self.subtitle = kwargs.get("subtitle") - self.subtitle_type = kwargs.get("subtitle_type", "text") - self.generator = kwargs.get("generator") - if self.generator is None: - self.generator = self.default_generator - self.links = kwargs.get("links", []) - self.entries = list(entries) if entries else [] - - if not hasattr(self.author, "__iter__") or isinstance( - self.author, string_types + (dict,) - ): - self.author = [self.author] - for i, author in enumerate(self.author): - if not isinstance(author, dict): - self.author[i] = {"name": author} - - if not self.title: - raise ValueError("title is required") - if not self.id: - raise ValueError("id is required") - for author in self.author: - if "name" not in author: - raise TypeError("author must contain at least a name") - - def add(self, *args, **kwargs): - """Add a new entry to the feed. This function can either be called - with a :class:`FeedEntry` or some keyword and positional arguments - that are forwarded to the :class:`FeedEntry` constructor. - """ - if len(args) == 1 and not kwargs and isinstance(args[0], FeedEntry): - self.entries.append(args[0]) - else: - kwargs["feed_url"] = self.feed_url - self.entries.append(FeedEntry(*args, **kwargs)) - - def __repr__(self): - return "<%s %r (%d entries)>" % ( - self.__class__.__name__, - self.title, - len(self.entries), - ) - - def generate(self): - """Return a generator that yields pieces of XML.""" - # atom demands either an author element in every entry or a global one - if not self.author: - if any(not e.author for e in self.entries): - self.author = ({"name": "Unknown author"},) - - if not self.updated: - dates = sorted([entry.updated for entry in self.entries]) - self.updated = dates[-1] if dates else datetime.utcnow() - - yield u'<?xml version="1.0" encoding="utf-8"?>\n' - yield u'<feed xmlns="http://www.w3.org/2005/Atom">\n' - yield " " + _make_text_block("title", self.title, self.title_type) - yield u" <id>%s</id>\n" % escape(self.id) - yield u" <updated>%s</updated>\n" % format_iso8601(self.updated) - if self.url: - yield u' <link href="%s" />\n' % escape(self.url) - if self.feed_url: - yield u' <link href="%s" rel="self" />\n' % escape(self.feed_url) - for link in self.links: - yield u" <link %s/>\n" % "".join( - '%s="%s" ' % (k, escape(link[k])) for k in link - ) - for author in self.author: - yield u" <author>\n" - yield u" <name>%s</name>\n" % escape(author["name"]) - if "uri" in author: - yield u" <uri>%s</uri>\n" % escape(author["uri"]) - if "email" in author: - yield " <email>%s</email>\n" % escape(author["email"]) - yield " </author>\n" - if self.subtitle: - yield " " + _make_text_block("subtitle", self.subtitle, self.subtitle_type) - if self.icon: - yield u" <icon>%s</icon>\n" % escape(self.icon) - if self.logo: - yield u" <logo>%s</logo>\n" % escape(self.logo) - if self.rights: - yield " " + _make_text_block("rights", self.rights, self.rights_type) - generator_name, generator_url, generator_version = self.generator - if generator_name or generator_url or generator_version: - tmp = [u" <generator"] - if generator_url: - tmp.append(u' uri="%s"' % escape(generator_url)) - if generator_version: - tmp.append(u' version="%s"' % escape(generator_version)) - tmp.append(u">%s</generator>\n" % escape(generator_name)) - yield u"".join(tmp) - for entry in self.entries: - for line in entry.generate(): - yield u" " + line - yield u"</feed>\n" - - def to_string(self): - """Convert the feed into a string.""" - return u"".join(self.generate()) - - def get_response(self): - """Return a response object for the feed.""" - return BaseResponse(self.to_string(), mimetype="application/atom+xml") - - def __call__(self, environ, start_response): - """Use the class as WSGI response object.""" - return self.get_response()(environ, start_response) - - def __str__(self): - return self.to_string() - - -@implements_to_string -class FeedEntry(object): - - """Represents a single entry in a feed. - - :param title: the title of the entry. Required. - :param title_type: the type attribute for the title element. One of - ``'html'``, ``'text'`` or ``'xhtml'``. - :param content: the content of the entry. - :param content_type: the type attribute for the content element. One - of ``'html'``, ``'text'`` or ``'xhtml'``. - :param summary: a summary of the entry's content. - :param summary_type: the type attribute for the summary element. One - of ``'html'``, ``'text'`` or ``'xhtml'``. - :param url: the url for the entry. - :param id: a globally unique id for the entry. Must be an URI. If - not present the URL is used, but one of both is required. - :param updated: the time the entry was modified the last time. Must - be a :class:`datetime.datetime` object. Treated as - UTC if naive datetime. Required. - :param author: the author of the entry. Must be either a string (the - name) or a dict with name (required) and uri or - email (both optional). Can be a list of (may be - mixed, too) strings and dicts, too, if there are - multiple authors. Required if the feed does not have an - author element. - :param published: the time the entry was initially published. Must - be a :class:`datetime.datetime` object. Treated as - UTC if naive datetime. - :param rights: copyright information for the entry. - :param rights_type: the type attribute for the rights element. One of - ``'html'``, ``'text'`` or ``'xhtml'``. Default is - ``'text'``. - :param links: additional links. Must be a list of dictionaries with - href (required) and rel, type, hreflang, title, length - (all optional) - :param categories: categories for the entry. Must be a list of dictionaries - with term (required), scheme and label (all optional) - :param xml_base: The xml base (url) for this feed item. If not provided - it will default to the item url. - - For more information on the elements see - http://www.atomenabled.org/developers/syndication/ - - Everywhere where a list is demanded, any iterable can be used. - """ - - def __init__(self, title=None, content=None, feed_url=None, **kwargs): - self.title = title - self.title_type = kwargs.get("title_type", "text") - self.content = content - self.content_type = kwargs.get("content_type", "html") - self.url = kwargs.get("url") - self.id = kwargs.get("id", self.url) - self.updated = kwargs.get("updated") - self.summary = kwargs.get("summary") - self.summary_type = kwargs.get("summary_type", "html") - self.author = kwargs.get("author", ()) - self.published = kwargs.get("published") - self.rights = kwargs.get("rights") - self.links = kwargs.get("links", []) - self.categories = kwargs.get("categories", []) - self.xml_base = kwargs.get("xml_base", feed_url) - - if not hasattr(self.author, "__iter__") or isinstance( - self.author, string_types + (dict,) - ): - self.author = [self.author] - for i, author in enumerate(self.author): - if not isinstance(author, dict): - self.author[i] = {"name": author} - - if not self.title: - raise ValueError("title is required") - if not self.id: - raise ValueError("id is required") - if not self.updated: - raise ValueError("updated is required") - - def __repr__(self): - return "<%s %r>" % (self.__class__.__name__, self.title) - - def generate(self): - """Yields pieces of ATOM XML.""" - base = "" - if self.xml_base: - base = ' xml:base="%s"' % escape(self.xml_base) - yield u"<entry%s>\n" % base - yield u" " + _make_text_block("title", self.title, self.title_type) - yield u" <id>%s</id>\n" % escape(self.id) - yield u" <updated>%s</updated>\n" % format_iso8601(self.updated) - if self.published: - yield u" <published>%s</published>\n" % format_iso8601(self.published) - if self.url: - yield u' <link href="%s" />\n' % escape(self.url) - for author in self.author: - yield u" <author>\n" - yield u" <name>%s</name>\n" % escape(author["name"]) - if "uri" in author: - yield u" <uri>%s</uri>\n" % escape(author["uri"]) - if "email" in author: - yield u" <email>%s</email>\n" % escape(author["email"]) - yield u" </author>\n" - for link in self.links: - yield u" <link %s/>\n" % "".join( - '%s="%s" ' % (k, escape(link[k])) for k in link - ) - for category in self.categories: - yield u" <category %s/>\n" % "".join( - '%s="%s" ' % (k, escape(category[k])) for k in category - ) - if self.summary: - yield u" " + _make_text_block("summary", self.summary, self.summary_type) - if self.content: - yield u" " + _make_text_block("content", self.content, self.content_type) - yield u"</entry>\n" - - def to_string(self): - """Convert the feed item into a unicode object.""" - return u"".join(self.generate()) - - def __str__(self): - return self.to_string() diff --git a/python/werkzeug/contrib/cache.py b/python/werkzeug/contrib/cache.py deleted file mode 100644 index 79c749b..0000000 --- a/python/werkzeug/contrib/cache.py +++ /dev/null @@ -1,933 +0,0 @@ -# -*- coding: utf-8 -*- -""" - werkzeug.contrib.cache - ~~~~~~~~~~~~~~~~~~~~~~ - - The main problem with dynamic Web sites is, well, they're dynamic. Each - time a user requests a page, the webserver executes a lot of code, queries - the database, renders templates until the visitor gets the page he sees. - - This is a lot more expensive than just loading a file from the file system - and sending it to the visitor. - - For most Web applications, this overhead isn't a big deal but once it - becomes, you will be glad to have a cache system in place. - - How Caching Works - ================= - - Caching is pretty simple. Basically you have a cache object lurking around - somewhere that is connected to a remote cache or the file system or - something else. When the request comes in you check if the current page - is already in the cache and if so, you're returning it from the cache. - Otherwise you generate the page and put it into the cache. (Or a fragment - of the page, you don't have to cache the full thing) - - Here is a simple example of how to cache a sidebar for 5 minutes:: - - def get_sidebar(user): - identifier = 'sidebar_for/user%d' % user.id - value = cache.get(identifier) - if value is not None: - return value - value = generate_sidebar_for(user=user) - cache.set(identifier, value, timeout=60 * 5) - return value - - Creating a Cache Object - ======================= - - To create a cache object you just import the cache system of your choice - from the cache module and instantiate it. Then you can start working - with that object: - - >>> from werkzeug.contrib.cache import SimpleCache - >>> c = SimpleCache() - >>> c.set("foo", "value") - >>> c.get("foo") - 'value' - >>> c.get("missing") is None - True - - Please keep in mind that you have to create the cache and put it somewhere - you have access to it (either as a module global you can import or you just - put it into your WSGI application). - - :copyright: 2007 Pallets - :license: BSD-3-Clause -""" -import errno -import os -import platform -import re -import tempfile -import warnings -from hashlib import md5 -from time import time - -from .._compat import integer_types -from .._compat import iteritems -from .._compat import string_types -from .._compat import text_type -from .._compat import to_native -from ..posixemulation import rename - -try: - import cPickle as pickle -except ImportError: # pragma: no cover - import pickle - -warnings.warn( - "'werkzeug.contrib.cache' is deprecated as of version 0.15 and will" - " be removed in version 1.0. It has moved to https://github.com" - "/pallets/cachelib.", - DeprecationWarning, - stacklevel=2, -) - - -def _items(mappingorseq): - """Wrapper for efficient iteration over mappings represented by dicts - or sequences:: - - >>> for k, v in _items((i, i*i) for i in xrange(5)): - ... assert k*k == v - - >>> for k, v in _items(dict((i, i*i) for i in xrange(5))): - ... assert k*k == v - - """ - if hasattr(mappingorseq, "items"): - return iteritems(mappingorseq) - return mappingorseq - - -class BaseCache(object): - """Baseclass for the cache systems. All the cache systems implement this - API or a superset of it. - - :param default_timeout: the default timeout (in seconds) that is used if - no timeout is specified on :meth:`set`. A timeout - of 0 indicates that the cache never expires. - """ - - def __init__(self, default_timeout=300): - self.default_timeout = default_timeout - - def _normalize_timeout(self, timeout): - if timeout is None: - timeout = self.default_timeout - return timeout - - def get(self, key): - """Look up key in the cache and return the value for it. - - :param key: the key to be looked up. - :returns: The value if it exists and is readable, else ``None``. - """ - return None - - def delete(self, key): - """Delete `key` from the cache. - - :param key: the key to delete. - :returns: Whether the key existed and has been deleted. - :rtype: boolean - """ - return True - - def get_many(self, *keys): - """Returns a list of values for the given keys. - For each key an item in the list is created:: - - foo, bar = cache.get_many("foo", "bar") - - Has the same error handling as :meth:`get`. - - :param keys: The function accepts multiple keys as positional - arguments. - """ - return [self.get(k) for k in keys] - - def get_dict(self, *keys): - """Like :meth:`get_many` but return a dict:: - - d = cache.get_dict("foo", "bar") - foo = d["foo"] - bar = d["bar"] - - :param keys: The function accepts multiple keys as positional - arguments. - """ - return dict(zip(keys, self.get_many(*keys))) - - def set(self, key, value, timeout=None): - """Add a new key/value to the cache (overwrites value, if key already - exists in the cache). - - :param key: the key to set - :param value: the value for the key - :param timeout: the cache timeout for the key in seconds (if not - specified, it uses the default timeout). A timeout of - 0 idicates that the cache never expires. - :returns: ``True`` if key has been updated, ``False`` for backend - errors. Pickling errors, however, will raise a subclass of - ``pickle.PickleError``. - :rtype: boolean - """ - return True - - def add(self, key, value, timeout=None): - """Works like :meth:`set` but does not overwrite the values of already - existing keys. - - :param key: the key to set - :param value: the value for the key - :param timeout: the cache timeout for the key in seconds (if not - specified, it uses the default timeout). A timeout of - 0 idicates that the cache never expires. - :returns: Same as :meth:`set`, but also ``False`` for already - existing keys. - :rtype: boolean - """ - return True - - def set_many(self, mapping, timeout=None): - """Sets multiple keys and values from a mapping. - - :param mapping: a mapping with the keys/values to set. - :param timeout: the cache timeout for the key in seconds (if not - specified, it uses the default timeout). A timeout of - 0 idicates that the cache never expires. - :returns: Whether all given keys have been set. - :rtype: boolean - """ - rv = True - for key, value in _items(mapping): - if not self.set(key, value, timeout): - rv = False - return rv - - def delete_many(self, *keys): - """Deletes multiple keys at once. - - :param keys: The function accepts multiple keys as positional - arguments. - :returns: Whether all given keys have been deleted. - :rtype: boolean - """ - return all(self.delete(key) for key in keys) - - def has(self, key): - """Checks if a key exists in the cache without returning it. This is a - cheap operation that bypasses loading the actual data on the backend. - - This method is optional and may not be implemented on all caches. - - :param key: the key to check - """ - raise NotImplementedError( - "%s doesn't have an efficient implementation of `has`. That " - "means it is impossible to check whether a key exists without " - "fully loading the key's data. Consider using `self.get` " - "explicitly if you don't care about performance." - ) - - def clear(self): - """Clears the cache. Keep in mind that not all caches support - completely clearing the cache. - - :returns: Whether the cache has been cleared. - :rtype: boolean - """ - return True - - def inc(self, key, delta=1): - """Increments the value of a key by `delta`. If the key does - not yet exist it is initialized with `delta`. - - For supporting caches this is an atomic operation. - - :param key: the key to increment. - :param delta: the delta to add. - :returns: The new value or ``None`` for backend errors. - """ - value = (self.get(key) or 0) + delta - return value if self.set(key, value) else None - - def dec(self, key, delta=1): - """Decrements the value of a key by `delta`. If the key does - not yet exist it is initialized with `-delta`. - - For supporting caches this is an atomic operation. - - :param key: the key to increment. - :param delta: the delta to subtract. - :returns: The new value or `None` for backend errors. - """ - value = (self.get(key) or 0) - delta - return value if self.set(key, value) else None - - -class NullCache(BaseCache): - """A cache that doesn't cache. This can be useful for unit testing. - - :param default_timeout: a dummy parameter that is ignored but exists - for API compatibility with other caches. - """ - - def has(self, key): - return False - - -class SimpleCache(BaseCache): - """Simple memory cache for single process environments. This class exists - mainly for the development server and is not 100% thread safe. It tries - to use as many atomic operations as possible and no locks for simplicity - but it could happen under heavy load that keys are added multiple times. - - :param threshold: the maximum number of items the cache stores before - it starts deleting some. - :param default_timeout: the default timeout that is used if no timeout is - specified on :meth:`~BaseCache.set`. A timeout of - 0 indicates that the cache never expires. - """ - - def __init__(self, threshold=500, default_timeout=300): - BaseCache.__init__(self, default_timeout) - self._cache = {} - self.clear = self._cache.clear - self._threshold = threshold - - def _prune(self): - if len(self._cache) > self._threshold: - now = time() - toremove = [] - for idx, (key, (expires, _)) in enumerate(self._cache.items()): - if (expires != 0 and expires <= now) or idx % 3 == 0: - toremove.append(key) - for key in toremove: - self._cache.pop(key, None) - - def _normalize_timeout(self, timeout): - timeout = BaseCache._normalize_timeout(self, timeout) - if timeout > 0: - timeout = time() + timeout - return timeout - - def get(self, key): - try: - expires, value = self._cache[key] - if expires == 0 or expires > time(): - return pickle.loads(value) - except (KeyError, pickle.PickleError): - return None - - def set(self, key, value, timeout=None): - expires = self._normalize_timeout(timeout) - self._prune() - self._cache[key] = (expires, pickle.dumps(value, pickle.HIGHEST_PROTOCOL)) - return True - - def add(self, key, value, timeout=None): - expires = self._normalize_timeout(timeout) - self._prune() - item = (expires, pickle.dumps(value, pickle.HIGHEST_PROTOCOL)) - if key in self._cache: - return False - self._cache.setdefault(key, item) - return True - - def delete(self, key): - return self._cache.pop(key, None) is not None - - def has(self, key): - try: - expires, value = self._cache[key] - return expires == 0 or expires > time() - except KeyError: - return False - - -_test_memcached_key = re.compile(r"[^\x00-\x21\xff]{1,250}$").match - - -class MemcachedCache(BaseCache): - """A cache that uses memcached as backend. - - The first argument can either be an object that resembles the API of a - :class:`memcache.Client` or a tuple/list of server addresses. In the - event that a tuple/list is passed, Werkzeug tries to import the best - available memcache library. - - This cache looks into the following packages/modules to find bindings for - memcached: - - - ``pylibmc`` - - ``google.appengine.api.memcached`` - - ``memcached`` - - ``libmc`` - - Implementation notes: This cache backend works around some limitations in - memcached to simplify the interface. For example unicode keys are encoded - to utf-8 on the fly. Methods such as :meth:`~BaseCache.get_dict` return - the keys in the same format as passed. Furthermore all get methods - silently ignore key errors to not cause problems when untrusted user data - is passed to the get methods which is often the case in web applications. - - :param servers: a list or tuple of server addresses or alternatively - a :class:`memcache.Client` or a compatible client. - :param default_timeout: the default timeout that is used if no timeout is - specified on :meth:`~BaseCache.set`. A timeout of - 0 indicates that the cache never expires. - :param key_prefix: a prefix that is added before all keys. This makes it - possible to use the same memcached server for different - applications. Keep in mind that - :meth:`~BaseCache.clear` will also clear keys with a - different prefix. - """ - - def __init__(self, servers=None, default_timeout=300, key_prefix=None): - BaseCache.__init__(self, default_timeout) - if servers is None or isinstance(servers, (list, tuple)): - if servers is None: - servers = ["127.0.0.1:11211"] - self._client = self.import_preferred_memcache_lib(servers) - if self._client is None: - raise RuntimeError("no memcache module found") - else: - # NOTE: servers is actually an already initialized memcache - # client. - self._client = servers - - self.key_prefix = to_native(key_prefix) - - def _normalize_key(self, key): - key = to_native(key, "utf-8") - if self.key_prefix: - key = self.key_prefix + key - return key - - def _normalize_timeout(self, timeout): - timeout = BaseCache._normalize_timeout(self, timeout) - if timeout > 0: - timeout = int(time()) + timeout - return timeout - - def get(self, key): - key = self._normalize_key(key) - # memcached doesn't support keys longer than that. Because often - # checks for so long keys can occur because it's tested from user - # submitted data etc we fail silently for getting. - if _test_memcached_key(key): - return self._client.get(key) - - def get_dict(self, *keys): - key_mapping = {} - have_encoded_keys = False - for key in keys: - encoded_key = self._normalize_key(key) - if not isinstance(key, str): - have_encoded_keys = True - if _test_memcached_key(key): - key_mapping[encoded_key] = key - _keys = list(key_mapping) - d = rv = self._client.get_multi(_keys) - if have_encoded_keys or self.key_prefix: - rv = {} - for key, value in iteritems(d): - rv[key_mapping[key]] = value - if len(rv) < len(keys): - for key in keys: - if key not in rv: - rv[key] = None - return rv - - def add(self, key, value, timeout=None): - key = self._normalize_key(key) - timeout = self._normalize_timeout(timeout) - return self._client.add(key, value, timeout) - - def set(self, key, value, timeout=None): - key = self._normalize_key(key) - timeout = self._normalize_timeout(timeout) - return self._client.set(key, value, timeout) - - def get_many(self, *keys): - d = self.get_dict(*keys) - return [d[key] for key in keys] - - def set_many(self, mapping, timeout=None): - new_mapping = {} - for key, value in _items(mapping): - key = self._normalize_key(key) - new_mapping[key] = value - - timeout = self._normalize_timeout(timeout) - failed_keys = self._client.set_multi(new_mapping, timeout) - return not failed_keys - - def delete(self, key): - key = self._normalize_key(key) - if _test_memcached_key(key): - return self._client.delete(key) - - def delete_many(self, *keys): - new_keys = [] - for key in keys: - key = self._normalize_key(key) - if _test_memcached_key(key): - new_keys.append(key) - return self._client.delete_multi(new_keys) - - def has(self, key): - key = self._normalize_key(key) - if _test_memcached_key(key): - return self._client.append(key, "") - return False - - def clear(self): - return self._client.flush_all() - - def inc(self, key, delta=1): - key = self._normalize_key(key) - return self._client.incr(key, delta) - - def dec(self, key, delta=1): - key = self._normalize_key(key) - return self._client.decr(key, delta) - - def import_preferred_memcache_lib(self, servers): - """Returns an initialized memcache client. Used by the constructor.""" - try: - import pylibmc - except ImportError: - pass - else: - return pylibmc.Client(servers) - - try: - from google.appengine.api import memcache - except ImportError: - pass - else: - return memcache.Client() - - try: - import memcache - except ImportError: - pass - else: - return memcache.Client(servers) - - try: - import libmc - except ImportError: - pass - else: - return libmc.Client(servers) - - -# backwards compatibility -GAEMemcachedCache = MemcachedCache - - -class RedisCache(BaseCache): - """Uses the Redis key-value store as a cache backend. - - The first argument can be either a string denoting address of the Redis - server or an object resembling an instance of a redis.Redis class. - - Note: Python Redis API already takes care of encoding unicode strings on - the fly. - - .. versionadded:: 0.7 - - .. versionadded:: 0.8 - `key_prefix` was added. - - .. versionchanged:: 0.8 - This cache backend now properly serializes objects. - - .. versionchanged:: 0.8.3 - This cache backend now supports password authentication. - - .. versionchanged:: 0.10 - ``**kwargs`` is now passed to the redis object. - - :param host: address of the Redis server or an object which API is - compatible with the official Python Redis client (redis-py). - :param port: port number on which Redis server listens for connections. - :param password: password authentication for the Redis server. - :param db: db (zero-based numeric index) on Redis Server to connect. - :param default_timeout: the default timeout that is used if no timeout is - specified on :meth:`~BaseCache.set`. A timeout of - 0 indicates that the cache never expires. - :param key_prefix: A prefix that should be added to all keys. - - Any additional keyword arguments will be passed to ``redis.Redis``. - """ - - def __init__( - self, - host="localhost", - port=6379, - password=None, - db=0, - default_timeout=300, - key_prefix=None, - **kwargs - ): - BaseCache.__init__(self, default_timeout) - if host is None: - raise ValueError("RedisCache host parameter may not be None") - if isinstance(host, string_types): - try: - import redis - except ImportError: - raise RuntimeError("no redis module found") - if kwargs.get("decode_responses", None): - raise ValueError("decode_responses is not supported by RedisCache.") - self._client = redis.Redis( - host=host, port=port, password=password, db=db, **kwargs - ) - else: - self._client = host - self.key_prefix = key_prefix or "" - - def _normalize_timeout(self, timeout): - timeout = BaseCache._normalize_timeout(self, timeout) - if timeout == 0: - timeout = -1 - return timeout - - def dump_object(self, value): - """Dumps an object into a string for redis. By default it serializes - integers as regular string and pickle dumps everything else. - """ - t = type(value) - if t in integer_types: - return str(value).encode("ascii") - return b"!" + pickle.dumps(value) - - def load_object(self, value): - """The reversal of :meth:`dump_object`. This might be called with - None. - """ - if value is None: - return None - if value.startswith(b"!"): - try: - return pickle.loads(value[1:]) - except pickle.PickleError: - return None - try: - return int(value) - except ValueError: - # before 0.8 we did not have serialization. Still support that. - return value - - def get(self, key): - return self.load_object(self._client.get(self.key_prefix + key)) - - def get_many(self, *keys): - if self.key_prefix: - keys = [self.key_prefix + key for key in keys] - return [self.load_object(x) for x in self._client.mget(keys)] - - def set(self, key, value, timeout=None): - timeout = self._normalize_timeout(timeout) - dump = self.dump_object(value) - if timeout == -1: - result = self._client.set(name=self.key_prefix + key, value=dump) - else: - result = self._client.setex( - name=self.key_prefix + key, value=dump, time=timeout - ) - return result - - def add(self, key, value, timeout=None): - timeout = self._normalize_timeout(timeout) - dump = self.dump_object(value) - return self._client.setnx( - name=self.key_prefix + key, value=dump - ) and self._client.expire(name=self.key_prefix + key, time=timeout) - - def set_many(self, mapping, timeout=None): - timeout = self._normalize_timeout(timeout) - # Use transaction=False to batch without calling redis MULTI - # which is not supported by twemproxy - pipe = self._client.pipeline(transaction=False) - - for key, value in _items(mapping): - dump = self.dump_object(value) - if timeout == -1: - pipe.set(name=self.key_prefix + key, value=dump) - else: - pipe.setex(name=self.key_prefix + key, value=dump, time=timeout) - return pipe.execute() - - def delete(self, key): - return self._client.delete(self.key_prefix + key) - - def delete_many(self, *keys): - if not keys: - return - if self.key_prefix: - keys = [self.key_prefix + key for key in keys] - return self._client.delete(*keys) - - def has(self, key): - return self._client.exists(self.key_prefix + key) - - def clear(self): - status = False - if self.key_prefix: - keys = self._client.keys(self.key_prefix + "*") - if keys: - status = self._client.delete(*keys) - else: - status = self._client.flushdb() - return status - - def inc(self, key, delta=1): - return self._client.incr(name=self.key_prefix + key, amount=delta) - - def dec(self, key, delta=1): - return self._client.decr(name=self.key_prefix + key, amount=delta) - - -class FileSystemCache(BaseCache): - """A cache that stores the items on the file system. This cache depends - on being the only user of the `cache_dir`. Make absolutely sure that - nobody but this cache stores files there or otherwise the cache will - randomly delete files therein. - - :param cache_dir: the directory where cache files are stored. - :param threshold: the maximum number of items the cache stores before - it starts deleting some. A threshold value of 0 - indicates no threshold. - :param default_timeout: the default timeout that is used if no timeout is - specified on :meth:`~BaseCache.set`. A timeout of - 0 indicates that the cache never expires. - :param mode: the file mode wanted for the cache files, default 0600 - """ - - #: used for temporary files by the FileSystemCache - _fs_transaction_suffix = ".__wz_cache" - #: keep amount of files in a cache element - _fs_count_file = "__wz_cache_count" - - def __init__(self, cache_dir, threshold=500, default_timeout=300, mode=0o600): - BaseCache.__init__(self, default_timeout) - self._path = cache_dir - self._threshold = threshold - self._mode = mode - - try: - os.makedirs(self._path) - except OSError as ex: - if ex.errno != errno.EEXIST: - raise - - self._update_count(value=len(self._list_dir())) - - @property - def _file_count(self): - return self.get(self._fs_count_file) or 0 - - def _update_count(self, delta=None, value=None): - # If we have no threshold, don't count files - if self._threshold == 0: - return - - if delta: - new_count = self._file_count + delta - else: - new_count = value or 0 - self.set(self._fs_count_file, new_count, mgmt_element=True) - - def _normalize_timeout(self, timeout): - timeout = BaseCache._normalize_timeout(self, timeout) - if timeout != 0: - timeout = time() + timeout - return int(timeout) - - def _list_dir(self): - """return a list of (fully qualified) cache filenames - """ - mgmt_files = [ - self._get_filename(name).split("/")[-1] for name in (self._fs_count_file,) - ] - return [ - os.path.join(self._path, fn) - for fn in os.listdir(self._path) - if not fn.endswith(self._fs_transaction_suffix) and fn not in mgmt_files - ] - - def _prune(self): - if self._threshold == 0 or not self._file_count > self._threshold: - return - - entries = self._list_dir() - now = time() - for idx, fname in enumerate(entries): - try: - remove = False - with open(fname, "rb") as f: - expires = pickle.load(f) - remove = (expires != 0 and expires <= now) or idx % 3 == 0 - - if remove: - os.remove(fname) - except (IOError, OSError): - pass - self._update_count(value=len(self._list_dir())) - - def clear(self): - for fname in self._list_dir(): - try: - os.remove(fname) - except (IOError, OSError): - self._update_count(value=len(self._list_dir())) - return False - self._update_count(value=0) - return True - - def _get_filename(self, key): - if isinstance(key, text_type): - key = key.encode("utf-8") # XXX unicode review - hash = md5(key).hexdigest() - return os.path.join(self._path, hash) - - def get(self, key): - filename = self._get_filename(key) - try: - with open(filename, "rb") as f: - pickle_time = pickle.load(f) - if pickle_time == 0 or pickle_time >= time(): - return pickle.load(f) - else: - os.remove(filename) - return None - except (IOError, OSError, pickle.PickleError): - return None - - def add(self, key, value, timeout=None): - filename = self._get_filename(key) - if not os.path.exists(filename): - return self.set(key, value, timeout) - return False - - def set(self, key, value, timeout=None, mgmt_element=False): - # Management elements have no timeout - if mgmt_element: - timeout = 0 - - # Don't prune on management element update, to avoid loop - else: - self._prune() - - timeout = self._normalize_timeout(timeout) - filename = self._get_filename(key) - try: - fd, tmp = tempfile.mkstemp( - suffix=self._fs_transaction_suffix, dir=self._path - ) - with os.fdopen(fd, "wb") as f: - pickle.dump(timeout, f, 1) - pickle.dump(value, f, pickle.HIGHEST_PROTOCOL) - rename(tmp, filename) - os.chmod(filename, self._mode) - except (IOError, OSError): - return False - else: - # Management elements should not count towards threshold - if not mgmt_element: - self._update_count(delta=1) - return True - - def delete(self, key, mgmt_element=False): - try: - os.remove(self._get_filename(key)) - except (IOError, OSError): - return False - else: - # Management elements should not count towards threshold - if not mgmt_element: - self._update_count(delta=-1) - return True - - def has(self, key): - filename = self._get_filename(key) - try: - with open(filename, "rb") as f: - pickle_time = pickle.load(f) - if pickle_time == 0 or pickle_time >= time(): - return True - else: - os.remove(filename) - return False - except (IOError, OSError, pickle.PickleError): - return False - - -class UWSGICache(BaseCache): - """Implements the cache using uWSGI's caching framework. - - .. note:: - This class cannot be used when running under PyPy, because the uWSGI - API implementation for PyPy is lacking the needed functionality. - - :param default_timeout: The default timeout in seconds. - :param cache: The name of the caching instance to connect to, for - example: mycache@localhost:3031, defaults to an empty string, which - means uWSGI will cache in the local instance. If the cache is in the - same instance as the werkzeug app, you only have to provide the name of - the cache. - """ - - def __init__(self, default_timeout=300, cache=""): - BaseCache.__init__(self, default_timeout) - - if platform.python_implementation() == "PyPy": - raise RuntimeError( - "uWSGI caching does not work under PyPy, see " - "the docs for more details." - ) - - try: - import uwsgi - - self._uwsgi = uwsgi - except ImportError: - raise RuntimeError( - "uWSGI could not be imported, are you running under uWSGI?" - ) - - self.cache = cache - - def get(self, key): - rv = self._uwsgi.cache_get(key, self.cache) - if rv is None: - return - return pickle.loads(rv) - - def delete(self, key): - return self._uwsgi.cache_del(key, self.cache) - - def set(self, key, value, timeout=None): - return self._uwsgi.cache_update( - key, pickle.dumps(value), self._normalize_timeout(timeout), self.cache - ) - - def add(self, key, value, timeout=None): - return self._uwsgi.cache_set( - key, pickle.dumps(value), self._normalize_timeout(timeout), self.cache - ) - - def clear(self): - return self._uwsgi.cache_clear(self.cache) - - def has(self, key): - return self._uwsgi.cache_exists(key, self.cache) is not None diff --git a/python/werkzeug/contrib/fixers.py b/python/werkzeug/contrib/fixers.py deleted file mode 100644 index 8df0afd..0000000 --- a/python/werkzeug/contrib/fixers.py +++ /dev/null @@ -1,262 +0,0 @@ -""" -Fixers -====== - -.. warning:: - .. deprecated:: 0.15 - ``ProxyFix`` has moved to :mod:`werkzeug.middleware.proxy_fix`. - All other code in this module is deprecated and will be removed - in version 1.0. - -.. versionadded:: 0.5 - -This module includes various helpers that fix web server behavior. - -.. autoclass:: ProxyFix - :members: - -.. autoclass:: CGIRootFix - -.. autoclass:: PathInfoFromRequestUriFix - -.. autoclass:: HeaderRewriterFix - -.. autoclass:: InternetExplorerFix - -:copyright: 2007 Pallets -:license: BSD-3-Clause -""" -import warnings - -from ..datastructures import Headers -from ..datastructures import ResponseCacheControl -from ..http import parse_cache_control_header -from ..http import parse_options_header -from ..http import parse_set_header -from ..middleware.proxy_fix import ProxyFix as _ProxyFix -from ..useragents import UserAgent - -try: - from urllib.parse import unquote -except ImportError: - from urllib import unquote - - -class CGIRootFix(object): - """Wrap the application in this middleware if you are using FastCGI - or CGI and you have problems with your app root being set to the CGI - script's path instead of the path users are going to visit. - - :param app: the WSGI application - :param app_root: Defaulting to ``'/'``, you can set this to - something else if your app is mounted somewhere else. - - .. deprecated:: 0.15 - This middleware will be removed in version 1.0. - - .. versionchanged:: 0.9 - Added `app_root` parameter and renamed from - ``LighttpdCGIRootFix``. - """ - - def __init__(self, app, app_root="/"): - warnings.warn( - "'CGIRootFix' is deprecated as of version 0.15 and will be" - " removed in version 1.0.", - DeprecationWarning, - stacklevel=2, - ) - self.app = app - self.app_root = app_root.strip("/") - - def __call__(self, environ, start_response): - environ["SCRIPT_NAME"] = self.app_root - return self.app(environ, start_response) - - -class LighttpdCGIRootFix(CGIRootFix): - def __init__(self, *args, **kwargs): - warnings.warn( - "'LighttpdCGIRootFix' is renamed 'CGIRootFix'. Both will be" - " removed in version 1.0.", - DeprecationWarning, - stacklevel=2, - ) - super(LighttpdCGIRootFix, self).__init__(*args, **kwargs) - - -class PathInfoFromRequestUriFix(object): - """On windows environment variables are limited to the system charset - which makes it impossible to store the `PATH_INFO` variable in the - environment without loss of information on some systems. - - This is for example a problem for CGI scripts on a Windows Apache. - - This fixer works by recreating the `PATH_INFO` from `REQUEST_URI`, - `REQUEST_URL`, or `UNENCODED_URL` (whatever is available). Thus the - fix can only be applied if the webserver supports either of these - variables. - - :param app: the WSGI application - - .. deprecated:: 0.15 - This middleware will be removed in version 1.0. - """ - - def __init__(self, app): - warnings.warn( - "'PathInfoFromRequestUriFix' is deprecated as of version" - " 0.15 and will be removed in version 1.0.", - DeprecationWarning, - stacklevel=2, - ) - self.app = app - - def __call__(self, environ, start_response): - for key in "REQUEST_URL", "REQUEST_URI", "UNENCODED_URL": - if key not in environ: - continue - request_uri = unquote(environ[key]) - script_name = unquote(environ.get("SCRIPT_NAME", "")) - if request_uri.startswith(script_name): - environ["PATH_INFO"] = request_uri[len(script_name) :].split("?", 1)[0] - break - return self.app(environ, start_response) - - -class ProxyFix(_ProxyFix): - """ - .. deprecated:: 0.15 - ``werkzeug.contrib.fixers.ProxyFix`` has moved to - :mod:`werkzeug.middleware.proxy_fix`. This import will be - removed in 1.0. - """ - - def __init__(self, *args, **kwargs): - warnings.warn( - "'werkzeug.contrib.fixers.ProxyFix' has moved to 'werkzeug" - ".middleware.proxy_fix.ProxyFix'. This import is deprecated" - " as of version 0.15 and will be removed in 1.0.", - DeprecationWarning, - stacklevel=2, - ) - super(ProxyFix, self).__init__(*args, **kwargs) - - -class HeaderRewriterFix(object): - """This middleware can remove response headers and add others. This - is for example useful to remove the `Date` header from responses if you - are using a server that adds that header, no matter if it's present or - not or to add `X-Powered-By` headers:: - - app = HeaderRewriterFix(app, remove_headers=['Date'], - add_headers=[('X-Powered-By', 'WSGI')]) - - :param app: the WSGI application - :param remove_headers: a sequence of header keys that should be - removed. - :param add_headers: a sequence of ``(key, value)`` tuples that should - be added. - - .. deprecated:: 0.15 - This middleware will be removed in 1.0. - """ - - def __init__(self, app, remove_headers=None, add_headers=None): - warnings.warn( - "'HeaderRewriterFix' is deprecated as of version 0.15 and" - " will be removed in version 1.0.", - DeprecationWarning, - stacklevel=2, - ) - self.app = app - self.remove_headers = set(x.lower() for x in (remove_headers or ())) - self.add_headers = list(add_headers or ()) - - def __call__(self, environ, start_response): - def rewriting_start_response(status, headers, exc_info=None): - new_headers = [] - for key, value in headers: - if key.lower() not in self.remove_headers: - new_headers.append((key, value)) - new_headers += self.add_headers - return start_response(status, new_headers, exc_info) - - return self.app(environ, rewriting_start_response) - - -class InternetExplorerFix(object): - """This middleware fixes a couple of bugs with Microsoft Internet - Explorer. Currently the following fixes are applied: - - - removing of `Vary` headers for unsupported mimetypes which - causes troubles with caching. Can be disabled by passing - ``fix_vary=False`` to the constructor. - see: https://support.microsoft.com/en-us/help/824847 - - - removes offending headers to work around caching bugs in - Internet Explorer if `Content-Disposition` is set. Can be - disabled by passing ``fix_attach=False`` to the constructor. - - If it does not detect affected Internet Explorer versions it won't touch - the request / response. - - .. deprecated:: 0.15 - This middleware will be removed in 1.0. - """ - - # This code was inspired by Django fixers for the same bugs. The - # fix_vary and fix_attach fixers were originally implemented in Django - # by Michael Axiak and is available as part of the Django project: - # https://code.djangoproject.com/ticket/4148 - - def __init__(self, app, fix_vary=True, fix_attach=True): - warnings.warn( - "'InternetExplorerFix' is deprecated as of version 0.15 and" - " will be removed in version 1.0.", - DeprecationWarning, - stacklevel=2, - ) - self.app = app - self.fix_vary = fix_vary - self.fix_attach = fix_attach - - def fix_headers(self, environ, headers, status=None): - if self.fix_vary: - header = headers.get("content-type", "") - mimetype, options = parse_options_header(header) - if mimetype not in ("text/html", "text/plain", "text/sgml"): - headers.pop("vary", None) - - if self.fix_attach and "content-disposition" in headers: - pragma = parse_set_header(headers.get("pragma", "")) - pragma.discard("no-cache") - header = pragma.to_header() - if not header: - headers.pop("pragma", "") - else: - headers["Pragma"] = header - header = headers.get("cache-control", "") - if header: - cc = parse_cache_control_header(header, cls=ResponseCacheControl) - cc.no_cache = None - cc.no_store = False - header = cc.to_header() - if not header: - headers.pop("cache-control", "") - else: - headers["Cache-Control"] = header - - def run_fixed(self, environ, start_response): - def fixing_start_response(status, headers, exc_info=None): - headers = Headers(headers) - self.fix_headers(environ, headers, status) - return start_response(status, headers.to_wsgi_list(), exc_info) - - return self.app(environ, fixing_start_response) - - def __call__(self, environ, start_response): - ua = UserAgent(environ) - if ua.browser != "msie": - return self.app(environ, start_response) - return self.run_fixed(environ, start_response) diff --git a/python/werkzeug/contrib/iterio.py b/python/werkzeug/contrib/iterio.py deleted file mode 100644 index b672454..0000000 --- a/python/werkzeug/contrib/iterio.py +++ /dev/null @@ -1,358 +0,0 @@ -# -*- coding: utf-8 -*- -r""" - werkzeug.contrib.iterio - ~~~~~~~~~~~~~~~~~~~~~~~ - - This module implements a :class:`IterIO` that converts an iterator into - a stream object and the other way round. Converting streams into - iterators requires the `greenlet`_ module. - - To convert an iterator into a stream all you have to do is to pass it - directly to the :class:`IterIO` constructor. In this example we pass it - a newly created generator:: - - def foo(): - yield "something\n" - yield "otherthings" - stream = IterIO(foo()) - print stream.read() # read the whole iterator - - The other way round works a bit different because we have to ensure that - the code execution doesn't take place yet. An :class:`IterIO` call with a - callable as first argument does two things. The function itself is passed - an :class:`IterIO` stream it can feed. The object returned by the - :class:`IterIO` constructor on the other hand is not an stream object but - an iterator:: - - def foo(stream): - stream.write("some") - stream.write("thing") - stream.flush() - stream.write("otherthing") - iterator = IterIO(foo) - print iterator.next() # prints something - print iterator.next() # prints otherthing - iterator.next() # raises StopIteration - - .. _greenlet: https://github.com/python-greenlet/greenlet - - :copyright: 2007 Pallets - :license: BSD-3-Clause -""" -import warnings - -from .._compat import implements_iterator - -try: - import greenlet -except ImportError: - greenlet = None - -warnings.warn( - "'werkzeug.contrib.iterio' is deprecated as of version 0.15 and" - " will be removed in version 1.0.", - DeprecationWarning, - stacklevel=2, -) - - -def _mixed_join(iterable, sentinel): - """concatenate any string type in an intelligent way.""" - iterator = iter(iterable) - first_item = next(iterator, sentinel) - if isinstance(first_item, bytes): - return first_item + b"".join(iterator) - return first_item + u"".join(iterator) - - -def _newline(reference_string): - if isinstance(reference_string, bytes): - return b"\n" - return u"\n" - - -@implements_iterator -class IterIO(object): - """Instances of this object implement an interface compatible with the - standard Python :class:`file` object. Streams are either read-only or - write-only depending on how the object is created. - - If the first argument is an iterable a file like object is returned that - returns the contents of the iterable. In case the iterable is empty - read operations will return the sentinel value. - - If the first argument is a callable then the stream object will be - created and passed to that function. The caller itself however will - not receive a stream but an iterable. The function will be executed - step by step as something iterates over the returned iterable. Each - call to :meth:`flush` will create an item for the iterable. If - :meth:`flush` is called without any writes in-between the sentinel - value will be yielded. - - Note for Python 3: due to the incompatible interface of bytes and - streams you should set the sentinel value explicitly to an empty - bytestring (``b''``) if you are expecting to deal with bytes as - otherwise the end of the stream is marked with the wrong sentinel - value. - - .. versionadded:: 0.9 - `sentinel` parameter was added. - """ - - def __new__(cls, obj, sentinel=""): - try: - iterator = iter(obj) - except TypeError: - return IterI(obj, sentinel) - return IterO(iterator, sentinel) - - def __iter__(self): - return self - - def tell(self): - if self.closed: - raise ValueError("I/O operation on closed file") - return self.pos - - def isatty(self): - if self.closed: - raise ValueError("I/O operation on closed file") - return False - - def seek(self, pos, mode=0): - if self.closed: - raise ValueError("I/O operation on closed file") - raise IOError(9, "Bad file descriptor") - - def truncate(self, size=None): - if self.closed: - raise ValueError("I/O operation on closed file") - raise IOError(9, "Bad file descriptor") - - def write(self, s): - if self.closed: - raise ValueError("I/O operation on closed file") - raise IOError(9, "Bad file descriptor") - - def writelines(self, list): - if self.closed: - raise ValueError("I/O operation on closed file") - raise IOError(9, "Bad file descriptor") - - def read(self, n=-1): - if self.closed: - raise ValueError("I/O operation on closed file") - raise IOError(9, "Bad file descriptor") - - def readlines(self, sizehint=0): - if self.closed: - raise ValueError("I/O operation on closed file") - raise IOError(9, "Bad file descriptor") - - def readline(self, length=None): - if self.closed: - raise ValueError("I/O operation on closed file") - raise IOError(9, "Bad file descriptor") - - def flush(self): - if self.closed: - raise ValueError("I/O operation on closed file") - raise IOError(9, "Bad file descriptor") - - def __next__(self): - if self.closed: - raise StopIteration() - line = self.readline() - if not line: - raise StopIteration() - return line - - -class IterI(IterIO): - """Convert an stream into an iterator.""" - - def __new__(cls, func, sentinel=""): - if greenlet is None: - raise RuntimeError("IterI requires greenlet support") - stream = object.__new__(cls) - stream._parent = greenlet.getcurrent() - stream._buffer = [] - stream.closed = False - stream.sentinel = sentinel - stream.pos = 0 - - def run(): - func(stream) - stream.close() - - g = greenlet.greenlet(run, stream._parent) - while 1: - rv = g.switch() - if not rv: - return - yield rv[0] - - def close(self): - if not self.closed: - self.closed = True - self._flush_impl() - - def write(self, s): - if self.closed: - raise ValueError("I/O operation on closed file") - if s: - self.pos += len(s) - self._buffer.append(s) - - def writelines(self, list): - for item in list: - self.write(item) - - def flush(self): - if self.closed: - raise ValueError("I/O operation on closed file") - self._flush_impl() - - def _flush_impl(self): - data = _mixed_join(self._buffer, self.sentinel) - self._buffer = [] - if not data and self.closed: - self._parent.switch() - else: - self._parent.switch((data,)) - - -class IterO(IterIO): - """Iter output. Wrap an iterator and give it a stream like interface.""" - - def __new__(cls, gen, sentinel=""): - self = object.__new__(cls) - self._gen = gen - self._buf = None - self.sentinel = sentinel - self.closed = False - self.pos = 0 - return self - - def __iter__(self): - return self - - def _buf_append(self, string): - """Replace string directly without appending to an empty string, - avoiding type issues.""" - if not self._buf: - self._buf = string - else: - self._buf += string - - def close(self): - if not self.closed: - self.closed = True - if hasattr(self._gen, "close"): - self._gen.close() - - def seek(self, pos, mode=0): - if self.closed: - raise ValueError("I/O operation on closed file") - if mode == 1: - pos += self.pos - elif mode == 2: - self.read() - self.pos = min(self.pos, self.pos + pos) - return - elif mode != 0: - raise IOError("Invalid argument") - buf = [] - try: - tmp_end_pos = len(self._buf or "") - while pos > tmp_end_pos: - item = next(self._gen) - tmp_end_pos += len(item) - buf.append(item) - except StopIteration: - pass - if buf: - self._buf_append(_mixed_join(buf, self.sentinel)) - self.pos = max(0, pos) - - def read(self, n=-1): - if self.closed: - raise ValueError("I/O operation on closed file") - if n < 0: - self._buf_append(_mixed_join(self._gen, self.sentinel)) - result = self._buf[self.pos :] - self.pos += len(result) - return result - new_pos = self.pos + n - buf = [] - try: - tmp_end_pos = 0 if self._buf is None else len(self._buf) - while new_pos > tmp_end_pos or (self._buf is None and not buf): - item = next(self._gen) - tmp_end_pos += len(item) - buf.append(item) - except StopIteration: - pass - if buf: - self._buf_append(_mixed_join(buf, self.sentinel)) - - if self._buf is None: - return self.sentinel - - new_pos = max(0, new_pos) - try: - return self._buf[self.pos : new_pos] - finally: - self.pos = min(new_pos, len(self._buf)) - - def readline(self, length=None): - if self.closed: - raise ValueError("I/O operation on closed file") - - nl_pos = -1 - if self._buf: - nl_pos = self._buf.find(_newline(self._buf), self.pos) - buf = [] - try: - if self._buf is None: - pos = self.pos - else: - pos = len(self._buf) - while nl_pos < 0: - item = next(self._gen) - local_pos = item.find(_newline(item)) - buf.append(item) - if local_pos >= 0: - nl_pos = pos + local_pos - break - pos += len(item) - except StopIteration: - pass - if buf: - self._buf_append(_mixed_join(buf, self.sentinel)) - - if self._buf is None: - return self.sentinel - - if nl_pos < 0: - new_pos = len(self._buf) - else: - new_pos = nl_pos + 1 - if length is not None and self.pos + length < new_pos: - new_pos = self.pos + length - try: - return self._buf[self.pos : new_pos] - finally: - self.pos = min(new_pos, len(self._buf)) - - def readlines(self, sizehint=0): - total = 0 - lines = [] - line = self.readline() - while line: - lines.append(line) - total += len(line) - if 0 < sizehint <= total: - break - line = self.readline() - return lines diff --git a/python/werkzeug/contrib/lint.py b/python/werkzeug/contrib/lint.py deleted file mode 100644 index 8bd8b8a..0000000 --- a/python/werkzeug/contrib/lint.py +++ /dev/null @@ -1,11 +0,0 @@ -import warnings - -from ..middleware.lint import * # noqa: F401, F403 - -warnings.warn( - "'werkzeug.contrib.lint' has moved to 'werkzeug.middleware.lint'." - " This import is deprecated as of version 0.15 and will be removed" - " in version 1.0.", - DeprecationWarning, - stacklevel=2, -) diff --git a/python/werkzeug/contrib/profiler.py b/python/werkzeug/contrib/profiler.py deleted file mode 100644 index b79fe56..0000000 --- a/python/werkzeug/contrib/profiler.py +++ /dev/null @@ -1,42 +0,0 @@ -import warnings - -from ..middleware.profiler import * # noqa: F401, F403 - -warnings.warn( - "'werkzeug.contrib.profiler' has moved to" - "'werkzeug.middleware.profiler'. This import is deprecated as of" - "version 0.15 and will be removed in version 1.0.", - DeprecationWarning, - stacklevel=2, -) - - -class MergeStream(object): - """An object that redirects ``write`` calls to multiple streams. - Use this to log to both ``sys.stdout`` and a file:: - - f = open('profiler.log', 'w') - stream = MergeStream(sys.stdout, f) - profiler = ProfilerMiddleware(app, stream) - - .. deprecated:: 0.15 - Use the ``tee`` command in your terminal instead. This class - will be removed in 1.0. - """ - - def __init__(self, *streams): - warnings.warn( - "'MergeStream' is deprecated as of version 0.15 and will be removed in" - " version 1.0. Use your terminal's 'tee' command instead.", - DeprecationWarning, - stacklevel=2, - ) - - if not streams: - raise TypeError("At least one stream must be given.") - - self.streams = streams - - def write(self, data): - for stream in self.streams: - stream.write(data) diff --git a/python/werkzeug/contrib/securecookie.py b/python/werkzeug/contrib/securecookie.py deleted file mode 100644 index c4c9eee..0000000 --- a/python/werkzeug/contrib/securecookie.py +++ /dev/null @@ -1,362 +0,0 @@ -# -*- coding: utf-8 -*- -r""" - werkzeug.contrib.securecookie - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - This module implements a cookie that is not alterable from the client - because it adds a checksum the server checks for. You can use it as - session replacement if all you have is a user id or something to mark - a logged in user. - - Keep in mind that the data is still readable from the client as a - normal cookie is. However you don't have to store and flush the - sessions you have at the server. - - Example usage: - - >>> from werkzeug.contrib.securecookie import SecureCookie - >>> x = SecureCookie({"foo": 42, "baz": (1, 2, 3)}, "deadbeef") - - Dumping into a string so that one can store it in a cookie: - - >>> value = x.serialize() - - Loading from that string again: - - >>> x = SecureCookie.unserialize(value, "deadbeef") - >>> x["baz"] - (1, 2, 3) - - If someone modifies the cookie and the checksum is wrong the unserialize - method will fail silently and return a new empty `SecureCookie` object. - - Keep in mind that the values will be visible in the cookie so do not - store data in a cookie you don't want the user to see. - - Application Integration - ======================= - - If you are using the werkzeug request objects you could integrate the - secure cookie into your application like this:: - - from werkzeug.utils import cached_property - from werkzeug.wrappers import BaseRequest - from werkzeug.contrib.securecookie import SecureCookie - - # don't use this key but a different one; you could just use - # os.urandom(20) to get something random - SECRET_KEY = '\xfa\xdd\xb8z\xae\xe0}4\x8b\xea' - - class Request(BaseRequest): - - @cached_property - def client_session(self): - data = self.cookies.get('session_data') - if not data: - return SecureCookie(secret_key=SECRET_KEY) - return SecureCookie.unserialize(data, SECRET_KEY) - - def application(environ, start_response): - request = Request(environ) - - # get a response object here - response = ... - - if request.client_session.should_save: - session_data = request.client_session.serialize() - response.set_cookie('session_data', session_data, - httponly=True) - return response(environ, start_response) - - A less verbose integration can be achieved by using shorthand methods:: - - class Request(BaseRequest): - - @cached_property - def client_session(self): - return SecureCookie.load_cookie(self, secret_key=COOKIE_SECRET) - - def application(environ, start_response): - request = Request(environ) - - # get a response object here - response = ... - - request.client_session.save_cookie(response) - return response(environ, start_response) - - :copyright: 2007 Pallets - :license: BSD-3-Clause -""" -import base64 -import pickle -import warnings -from hashlib import sha1 as _default_hash -from hmac import new as hmac -from time import time - -from .._compat import iteritems -from .._compat import text_type -from .._compat import to_bytes -from .._compat import to_native -from .._internal import _date_to_unix -from ..contrib.sessions import ModificationTrackingDict -from ..security import safe_str_cmp -from ..urls import url_quote_plus -from ..urls import url_unquote_plus - -warnings.warn( - "'werkzeug.contrib.securecookie' is deprecated as of version 0.15" - " and will be removed in version 1.0. It has moved to" - " https://github.com/pallets/secure-cookie.", - DeprecationWarning, - stacklevel=2, -) - - -class UnquoteError(Exception): - """Internal exception used to signal failures on quoting.""" - - -class SecureCookie(ModificationTrackingDict): - """Represents a secure cookie. You can subclass this class and provide - an alternative mac method. The import thing is that the mac method - is a function with a similar interface to the hashlib. Required - methods are update() and digest(). - - Example usage: - - >>> x = SecureCookie({"foo": 42, "baz": (1, 2, 3)}, "deadbeef") - >>> x["foo"] - 42 - >>> x["baz"] - (1, 2, 3) - >>> x["blafasel"] = 23 - >>> x.should_save - True - - :param data: the initial data. Either a dict, list of tuples or `None`. - :param secret_key: the secret key. If not set `None` or not specified - it has to be set before :meth:`serialize` is called. - :param new: The initial value of the `new` flag. - """ - - #: The hash method to use. This has to be a module with a new function - #: or a function that creates a hashlib object. Such as `hashlib.md5` - #: Subclasses can override this attribute. The default hash is sha1. - #: Make sure to wrap this in staticmethod() if you store an arbitrary - #: function there such as hashlib.sha1 which might be implemented - #: as a function. - hash_method = staticmethod(_default_hash) - - #: The module used for serialization. Should have a ``dumps`` and a - #: ``loads`` method that takes bytes. The default is :mod:`pickle`. - #: - #: .. versionchanged:: 0.15 - #: The default of ``pickle`` will change to :mod:`json` in 1.0. - serialization_method = pickle - - #: if the contents should be base64 quoted. This can be disabled if the - #: serialization process returns cookie safe strings only. - quote_base64 = True - - def __init__(self, data=None, secret_key=None, new=True): - ModificationTrackingDict.__init__(self, data or ()) - # explicitly convert it into a bytestring because python 2.6 - # no longer performs an implicit string conversion on hmac - if secret_key is not None: - secret_key = to_bytes(secret_key, "utf-8") - self.secret_key = secret_key - self.new = new - - if self.serialization_method is pickle: - warnings.warn( - "The default 'SecureCookie.serialization_method' will" - " change from pickle to json in version 1.0. To upgrade" - " existing tokens, override 'unquote' to try pickle if" - " json fails.", - stacklevel=2, - ) - - def __repr__(self): - return "<%s %s%s>" % ( - self.__class__.__name__, - dict.__repr__(self), - "*" if self.should_save else "", - ) - - @property - def should_save(self): - """True if the session should be saved. By default this is only true - for :attr:`modified` cookies, not :attr:`new`. - """ - return self.modified - - @classmethod - def quote(cls, value): - """Quote the value for the cookie. This can be any object supported - by :attr:`serialization_method`. - - :param value: the value to quote. - """ - if cls.serialization_method is not None: - value = cls.serialization_method.dumps(value) - if cls.quote_base64: - value = b"".join( - base64.b64encode(to_bytes(value, "utf8")).splitlines() - ).strip() - return value - - @classmethod - def unquote(cls, value): - """Unquote the value for the cookie. If unquoting does not work a - :exc:`UnquoteError` is raised. - - :param value: the value to unquote. - """ - try: - if cls.quote_base64: - value = base64.b64decode(value) - if cls.serialization_method is not None: - value = cls.serialization_method.loads(value) - return value - except Exception: - # unfortunately pickle and other serialization modules can - # cause pretty every error here. if we get one we catch it - # and convert it into an UnquoteError - raise UnquoteError() - - def serialize(self, expires=None): - """Serialize the secure cookie into a string. - - If expires is provided, the session will be automatically invalidated - after expiration when you unseralize it. This provides better - protection against session cookie theft. - - :param expires: an optional expiration date for the cookie (a - :class:`datetime.datetime` object) - """ - if self.secret_key is None: - raise RuntimeError("no secret key defined") - if expires: - self["_expires"] = _date_to_unix(expires) - result = [] - mac = hmac(self.secret_key, None, self.hash_method) - for key, value in sorted(self.items()): - result.append( - ( - "%s=%s" % (url_quote_plus(key), self.quote(value).decode("ascii")) - ).encode("ascii") - ) - mac.update(b"|" + result[-1]) - return b"?".join([base64.b64encode(mac.digest()).strip(), b"&".join(result)]) - - @classmethod - def unserialize(cls, string, secret_key): - """Load the secure cookie from a serialized string. - - :param string: the cookie value to unserialize. - :param secret_key: the secret key used to serialize the cookie. - :return: a new :class:`SecureCookie`. - """ - if isinstance(string, text_type): - string = string.encode("utf-8", "replace") - if isinstance(secret_key, text_type): - secret_key = secret_key.encode("utf-8", "replace") - try: - base64_hash, data = string.split(b"?", 1) - except (ValueError, IndexError): - items = () - else: - items = {} - mac = hmac(secret_key, None, cls.hash_method) - for item in data.split(b"&"): - mac.update(b"|" + item) - if b"=" not in item: - items = None - break - key, value = item.split(b"=", 1) - # try to make the key a string - key = url_unquote_plus(key.decode("ascii")) - try: - key = to_native(key) - except UnicodeError: - pass - items[key] = value - - # no parsing error and the mac looks okay, we can now - # sercurely unpickle our cookie. - try: - client_hash = base64.b64decode(base64_hash) - except TypeError: - items = client_hash = None - if items is not None and safe_str_cmp(client_hash, mac.digest()): - try: - for key, value in iteritems(items): - items[key] = cls.unquote(value) - except UnquoteError: - items = () - else: - if "_expires" in items: - if time() > items["_expires"]: - items = () - else: - del items["_expires"] - else: - items = () - return cls(items, secret_key, False) - - @classmethod - def load_cookie(cls, request, key="session", secret_key=None): - """Loads a :class:`SecureCookie` from a cookie in request. If the - cookie is not set, a new :class:`SecureCookie` instanced is - returned. - - :param request: a request object that has a `cookies` attribute - which is a dict of all cookie values. - :param key: the name of the cookie. - :param secret_key: the secret key used to unquote the cookie. - Always provide the value even though it has - no default! - """ - data = request.cookies.get(key) - if not data: - return cls(secret_key=secret_key) - return cls.unserialize(data, secret_key) - - def save_cookie( - self, - response, - key="session", - expires=None, - session_expires=None, - max_age=None, - path="/", - domain=None, - secure=None, - httponly=False, - force=False, - ): - """Saves the SecureCookie in a cookie on response object. All - parameters that are not described here are forwarded directly - to :meth:`~BaseResponse.set_cookie`. - - :param response: a response object that has a - :meth:`~BaseResponse.set_cookie` method. - :param key: the name of the cookie. - :param session_expires: the expiration date of the secure cookie - stored information. If this is not provided - the cookie `expires` date is used instead. - """ - if force or self.should_save: - data = self.serialize(session_expires or expires) - response.set_cookie( - key, - data, - expires=expires, - max_age=max_age, - path=path, - domain=domain, - secure=secure, - httponly=httponly, - ) diff --git a/python/werkzeug/contrib/sessions.py b/python/werkzeug/contrib/sessions.py deleted file mode 100644 index 866e827..0000000 --- a/python/werkzeug/contrib/sessions.py +++ /dev/null @@ -1,389 +0,0 @@ -# -*- coding: utf-8 -*- -r""" - werkzeug.contrib.sessions - ~~~~~~~~~~~~~~~~~~~~~~~~~ - - This module contains some helper classes that help one to add session - support to a python WSGI application. For full client-side session - storage see :mod:`~werkzeug.contrib.securecookie` which implements a - secure, client-side session storage. - - - Application Integration - ======================= - - :: - - from werkzeug.contrib.sessions import SessionMiddleware, \ - FilesystemSessionStore - - app = SessionMiddleware(app, FilesystemSessionStore()) - - The current session will then appear in the WSGI environment as - `werkzeug.session`. However it's recommended to not use the middleware - but the stores directly in the application. However for very simple - scripts a middleware for sessions could be sufficient. - - This module does not implement methods or ways to check if a session is - expired. That should be done by a cronjob and storage specific. For - example to prune unused filesystem sessions one could check the modified - time of the files. If sessions are stored in the database the new() - method should add an expiration timestamp for the session. - - For better flexibility it's recommended to not use the middleware but the - store and session object directly in the application dispatching:: - - session_store = FilesystemSessionStore() - - def application(environ, start_response): - request = Request(environ) - sid = request.cookies.get('cookie_name') - if sid is None: - request.session = session_store.new() - else: - request.session = session_store.get(sid) - response = get_the_response_object(request) - if request.session.should_save: - session_store.save(request.session) - response.set_cookie('cookie_name', request.session.sid) - return response(environ, start_response) - - :copyright: 2007 Pallets - :license: BSD-3-Clause -""" -import os -import re -import tempfile -import warnings -from hashlib import sha1 -from os import path -from pickle import dump -from pickle import HIGHEST_PROTOCOL -from pickle import load -from random import random -from time import time - -from .._compat import PY2 -from .._compat import text_type -from ..datastructures import CallbackDict -from ..filesystem import get_filesystem_encoding -from ..posixemulation import rename -from ..utils import dump_cookie -from ..utils import parse_cookie -from ..wsgi import ClosingIterator - -warnings.warn( - "'werkzeug.contrib.sessions' is deprecated as of version 0.15 and" - " will be removed in version 1.0. It has moved to" - " https://github.com/pallets/secure-cookie.", - DeprecationWarning, - stacklevel=2, -) - -_sha1_re = re.compile(r"^[a-f0-9]{40}$") - - -def _urandom(): - if hasattr(os, "urandom"): - return os.urandom(30) - return text_type(random()).encode("ascii") - - -def generate_key(salt=None): - if salt is None: - salt = repr(salt).encode("ascii") - return sha1(b"".join([salt, str(time()).encode("ascii"), _urandom()])).hexdigest() - - -class ModificationTrackingDict(CallbackDict): - __slots__ = ("modified",) - - def __init__(self, *args, **kwargs): - def on_update(self): - self.modified = True - - self.modified = False - CallbackDict.__init__(self, on_update=on_update) - dict.update(self, *args, **kwargs) - - def copy(self): - """Create a flat copy of the dict.""" - missing = object() - result = object.__new__(self.__class__) - for name in self.__slots__: - val = getattr(self, name, missing) - if val is not missing: - setattr(result, name, val) - return result - - def __copy__(self): - return self.copy() - - -class Session(ModificationTrackingDict): - """Subclass of a dict that keeps track of direct object changes. Changes - in mutable structures are not tracked, for those you have to set - `modified` to `True` by hand. - """ - - __slots__ = ModificationTrackingDict.__slots__ + ("sid", "new") - - def __init__(self, data, sid, new=False): - ModificationTrackingDict.__init__(self, data) - self.sid = sid - self.new = new - - def __repr__(self): - return "<%s %s%s>" % ( - self.__class__.__name__, - dict.__repr__(self), - "*" if self.should_save else "", - ) - - @property - def should_save(self): - """True if the session should be saved. - - .. versionchanged:: 0.6 - By default the session is now only saved if the session is - modified, not if it is new like it was before. - """ - return self.modified - - -class SessionStore(object): - """Baseclass for all session stores. The Werkzeug contrib module does not - implement any useful stores besides the filesystem store, application - developers are encouraged to create their own stores. - - :param session_class: The session class to use. Defaults to - :class:`Session`. - """ - - def __init__(self, session_class=None): - if session_class is None: - session_class = Session - self.session_class = session_class - - def is_valid_key(self, key): - """Check if a key has the correct format.""" - return _sha1_re.match(key) is not None - - def generate_key(self, salt=None): - """Simple function that generates a new session key.""" - return generate_key(salt) - - def new(self): - """Generate a new session.""" - return self.session_class({}, self.generate_key(), True) - - def save(self, session): - """Save a session.""" - - def save_if_modified(self, session): - """Save if a session class wants an update.""" - if session.should_save: - self.save(session) - - def delete(self, session): - """Delete a session.""" - - def get(self, sid): - """Get a session for this sid or a new session object. This method - has to check if the session key is valid and create a new session if - that wasn't the case. - """ - return self.session_class({}, sid, True) - - -#: used for temporary files by the filesystem session store -_fs_transaction_suffix = ".__wz_sess" - - -class FilesystemSessionStore(SessionStore): - """Simple example session store that saves sessions on the filesystem. - This store works best on POSIX systems and Windows Vista / Windows - Server 2008 and newer. - - .. versionchanged:: 0.6 - `renew_missing` was added. Previously this was considered `True`, - now the default changed to `False` and it can be explicitly - deactivated. - - :param path: the path to the folder used for storing the sessions. - If not provided the default temporary directory is used. - :param filename_template: a string template used to give the session - a filename. ``%s`` is replaced with the - session id. - :param session_class: The session class to use. Defaults to - :class:`Session`. - :param renew_missing: set to `True` if you want the store to - give the user a new sid if the session was - not yet saved. - """ - - def __init__( - self, - path=None, - filename_template="werkzeug_%s.sess", - session_class=None, - renew_missing=False, - mode=0o644, - ): - SessionStore.__init__(self, session_class) - if path is None: - path = tempfile.gettempdir() - self.path = path - if isinstance(filename_template, text_type) and PY2: - filename_template = filename_template.encode(get_filesystem_encoding()) - assert not filename_template.endswith(_fs_transaction_suffix), ( - "filename templates may not end with %s" % _fs_transaction_suffix - ) - self.filename_template = filename_template - self.renew_missing = renew_missing - self.mode = mode - - def get_session_filename(self, sid): - # out of the box, this should be a strict ASCII subset but - # you might reconfigure the session object to have a more - # arbitrary string. - if isinstance(sid, text_type) and PY2: - sid = sid.encode(get_filesystem_encoding()) - return path.join(self.path, self.filename_template % sid) - - def save(self, session): - fn = self.get_session_filename(session.sid) - fd, tmp = tempfile.mkstemp(suffix=_fs_transaction_suffix, dir=self.path) - f = os.fdopen(fd, "wb") - try: - dump(dict(session), f, HIGHEST_PROTOCOL) - finally: - f.close() - try: - rename(tmp, fn) - os.chmod(fn, self.mode) - except (IOError, OSError): - pass - - def delete(self, session): - fn = self.get_session_filename(session.sid) - try: - os.unlink(fn) - except OSError: - pass - - def get(self, sid): - if not self.is_valid_key(sid): - return self.new() - try: - f = open(self.get_session_filename(sid), "rb") - except IOError: - if self.renew_missing: - return self.new() - data = {} - else: - try: - try: - data = load(f) - except Exception: - data = {} - finally: - f.close() - return self.session_class(data, sid, False) - - def list(self): - """Lists all sessions in the store. - - .. versionadded:: 0.6 - """ - before, after = self.filename_template.split("%s", 1) - filename_re = re.compile( - r"%s(.{5,})%s$" % (re.escape(before), re.escape(after)) - ) - result = [] - for filename in os.listdir(self.path): - #: this is a session that is still being saved. - if filename.endswith(_fs_transaction_suffix): - continue - match = filename_re.match(filename) - if match is not None: - result.append(match.group(1)) - return result - - -class SessionMiddleware(object): - """A simple middleware that puts the session object of a store provided - into the WSGI environ. It automatically sets cookies and restores - sessions. - - However a middleware is not the preferred solution because it won't be as - fast as sessions managed by the application itself and will put a key into - the WSGI environment only relevant for the application which is against - the concept of WSGI. - - The cookie parameters are the same as for the :func:`~dump_cookie` - function just prefixed with ``cookie_``. Additionally `max_age` is - called `cookie_age` and not `cookie_max_age` because of backwards - compatibility. - """ - - def __init__( - self, - app, - store, - cookie_name="session_id", - cookie_age=None, - cookie_expires=None, - cookie_path="/", - cookie_domain=None, - cookie_secure=None, - cookie_httponly=False, - cookie_samesite="Lax", - environ_key="werkzeug.session", - ): - self.app = app - self.store = store - self.cookie_name = cookie_name - self.cookie_age = cookie_age - self.cookie_expires = cookie_expires - self.cookie_path = cookie_path - self.cookie_domain = cookie_domain - self.cookie_secure = cookie_secure - self.cookie_httponly = cookie_httponly - self.cookie_samesite = cookie_samesite - self.environ_key = environ_key - - def __call__(self, environ, start_response): - cookie = parse_cookie(environ.get("HTTP_COOKIE", "")) - sid = cookie.get(self.cookie_name, None) - if sid is None: - session = self.store.new() - else: - session = self.store.get(sid) - environ[self.environ_key] = session - - def injecting_start_response(status, headers, exc_info=None): - if session.should_save: - self.store.save(session) - headers.append( - ( - "Set-Cookie", - dump_cookie( - self.cookie_name, - session.sid, - self.cookie_age, - self.cookie_expires, - self.cookie_path, - self.cookie_domain, - self.cookie_secure, - self.cookie_httponly, - samesite=self.cookie_samesite, - ), - ) - ) - return start_response(status, headers, exc_info) - - return ClosingIterator( - self.app(environ, injecting_start_response), - lambda: self.store.save_if_modified(session), - ) diff --git a/python/werkzeug/contrib/wrappers.py b/python/werkzeug/contrib/wrappers.py deleted file mode 100644 index 49b82a7..0000000 --- a/python/werkzeug/contrib/wrappers.py +++ /dev/null @@ -1,385 +0,0 @@ -# -*- coding: utf-8 -*- -""" - werkzeug.contrib.wrappers - ~~~~~~~~~~~~~~~~~~~~~~~~~ - - Extra wrappers or mixins contributed by the community. These wrappers can - be mixed in into request objects to add extra functionality. - - Example:: - - from werkzeug.wrappers import Request as RequestBase - from werkzeug.contrib.wrappers import JSONRequestMixin - - class Request(RequestBase, JSONRequestMixin): - pass - - Afterwards this request object provides the extra functionality of the - :class:`JSONRequestMixin`. - - :copyright: 2007 Pallets - :license: BSD-3-Clause -""" -import codecs -import warnings - -from .._compat import wsgi_decoding_dance -from ..exceptions import BadRequest -from ..http import dump_options_header -from ..http import parse_options_header -from ..utils import cached_property -from ..wrappers.json import JSONMixin as _JSONMixin - - -def is_known_charset(charset): - """Checks if the given charset is known to Python.""" - try: - codecs.lookup(charset) - except LookupError: - return False - return True - - -class JSONRequestMixin(_JSONMixin): - """ - .. deprecated:: 0.15 - Moved to :class:`werkzeug.wrappers.json.JSONMixin`. This old - import will be removed in version 1.0. - """ - - @property - def json(self): - warnings.warn( - "'werkzeug.contrib.wrappers.JSONRequestMixin' has moved to" - " 'werkzeug.wrappers.json.JSONMixin'. This old import will" - " be removed in version 1.0.", - DeprecationWarning, - stacklevel=2, - ) - return super(JSONRequestMixin, self).json - - -class ProtobufRequestMixin(object): - - """Add protobuf parsing method to a request object. This will parse the - input data through `protobuf`_ if possible. - - :exc:`~werkzeug.exceptions.BadRequest` will be raised if the content-type - is not protobuf or if the data itself cannot be parsed property. - - .. _protobuf: https://github.com/protocolbuffers/protobuf - - .. deprecated:: 0.15 - This mixin will be removed in version 1.0. - """ - - #: by default the :class:`ProtobufRequestMixin` will raise a - #: :exc:`~werkzeug.exceptions.BadRequest` if the object is not - #: initialized. You can bypass that check by setting this - #: attribute to `False`. - protobuf_check_initialization = True - - def parse_protobuf(self, proto_type): - """Parse the data into an instance of proto_type.""" - warnings.warn( - "'werkzeug.contrib.wrappers.ProtobufRequestMixin' is" - " deprecated as of version 0.15 and will be removed in" - " version 1.0.", - DeprecationWarning, - stacklevel=2, - ) - if "protobuf" not in self.environ.get("CONTENT_TYPE", ""): - raise BadRequest("Not a Protobuf request") - - obj = proto_type() - try: - obj.ParseFromString(self.data) - except Exception: - raise BadRequest("Unable to parse Protobuf request") - - # Fail if not all required fields are set - if self.protobuf_check_initialization and not obj.IsInitialized(): - raise BadRequest("Partial Protobuf request") - - return obj - - -class RoutingArgsRequestMixin(object): - - """This request mixin adds support for the wsgiorg routing args - `specification`_. - - .. _specification: https://wsgi.readthedocs.io/en/latest/ - specifications/routing_args.html - - .. deprecated:: 0.15 - This mixin will be removed in version 1.0. - """ - - def _get_routing_args(self): - warnings.warn( - "'werkzeug.contrib.wrappers.RoutingArgsRequestMixin' is" - " deprecated as of version 0.15 and will be removed in" - " version 1.0.", - DeprecationWarning, - stacklevel=2, - ) - return self.environ.get("wsgiorg.routing_args", (()))[0] - - def _set_routing_args(self, value): - warnings.warn( - "'werkzeug.contrib.wrappers.RoutingArgsRequestMixin' is" - " deprecated as of version 0.15 and will be removed in" - " version 1.0.", - DeprecationWarning, - stacklevel=2, - ) - if self.shallow: - raise RuntimeError( - "A shallow request tried to modify the WSGI " - "environment. If you really want to do that, " - "set `shallow` to False." - ) - self.environ["wsgiorg.routing_args"] = (value, self.routing_vars) - - routing_args = property( - _get_routing_args, - _set_routing_args, - doc=""" - The positional URL arguments as `tuple`.""", - ) - del _get_routing_args, _set_routing_args - - def _get_routing_vars(self): - warnings.warn( - "'werkzeug.contrib.wrappers.RoutingArgsRequestMixin' is" - " deprecated as of version 0.15 and will be removed in" - " version 1.0.", - DeprecationWarning, - stacklevel=2, - ) - rv = self.environ.get("wsgiorg.routing_args") - if rv is not None: - return rv[1] - rv = {} - if not self.shallow: - self.routing_vars = rv - return rv - - def _set_routing_vars(self, value): - warnings.warn( - "'werkzeug.contrib.wrappers.RoutingArgsRequestMixin' is" - " deprecated as of version 0.15 and will be removed in" - " version 1.0.", - DeprecationWarning, - stacklevel=2, - ) - if self.shallow: - raise RuntimeError( - "A shallow request tried to modify the WSGI " - "environment. If you really want to do that, " - "set `shallow` to False." - ) - self.environ["wsgiorg.routing_args"] = (self.routing_args, value) - - routing_vars = property( - _get_routing_vars, - _set_routing_vars, - doc=""" - The keyword URL arguments as `dict`.""", - ) - del _get_routing_vars, _set_routing_vars - - -class ReverseSlashBehaviorRequestMixin(object): - - """This mixin reverses the trailing slash behavior of :attr:`script_root` - and :attr:`path`. This makes it possible to use :func:`~urlparse.urljoin` - directly on the paths. - - Because it changes the behavior or :class:`Request` this class has to be - mixed in *before* the actual request class:: - - class MyRequest(ReverseSlashBehaviorRequestMixin, Request): - pass - - This example shows the differences (for an application mounted on - `/application` and the request going to `/application/foo/bar`): - - +---------------+-------------------+---------------------+ - | | normal behavior | reverse behavior | - +===============+===================+=====================+ - | `script_root` | ``/application`` | ``/application/`` | - +---------------+-------------------+---------------------+ - | `path` | ``/foo/bar`` | ``foo/bar`` | - +---------------+-------------------+---------------------+ - - .. deprecated:: 0.15 - This mixin will be removed in version 1.0. - """ - - @cached_property - def path(self): - """Requested path as unicode. This works a bit like the regular path - info in the WSGI environment but will not include a leading slash. - """ - warnings.warn( - "'werkzeug.contrib.wrappers.ReverseSlashBehaviorRequestMixin'" - " is deprecated as of version 0.15 and will be removed in" - " version 1.0.", - DeprecationWarning, - stacklevel=2, - ) - path = wsgi_decoding_dance( - self.environ.get("PATH_INFO") or "", self.charset, self.encoding_errors - ) - return path.lstrip("/") - - @cached_property - def script_root(self): - """The root path of the script includling a trailing slash.""" - warnings.warn( - "'werkzeug.contrib.wrappers.ReverseSlashBehaviorRequestMixin'" - " is deprecated as of version 0.15 and will be removed in" - " version 1.0.", - DeprecationWarning, - stacklevel=2, - ) - path = wsgi_decoding_dance( - self.environ.get("SCRIPT_NAME") or "", self.charset, self.encoding_errors - ) - return path.rstrip("/") + "/" - - -class DynamicCharsetRequestMixin(object): - - """"If this mixin is mixed into a request class it will provide - a dynamic `charset` attribute. This means that if the charset is - transmitted in the content type headers it's used from there. - - Because it changes the behavior or :class:`Request` this class has - to be mixed in *before* the actual request class:: - - class MyRequest(DynamicCharsetRequestMixin, Request): - pass - - By default the request object assumes that the URL charset is the - same as the data charset. If the charset varies on each request - based on the transmitted data it's not a good idea to let the URLs - change based on that. Most browsers assume either utf-8 or latin1 - for the URLs if they have troubles figuring out. It's strongly - recommended to set the URL charset to utf-8:: - - class MyRequest(DynamicCharsetRequestMixin, Request): - url_charset = 'utf-8' - - .. deprecated:: 0.15 - This mixin will be removed in version 1.0. - - .. versionadded:: 0.6 - """ - - #: the default charset that is assumed if the content type header - #: is missing or does not contain a charset parameter. The default - #: is latin1 which is what HTTP specifies as default charset. - #: You may however want to set this to utf-8 to better support - #: browsers that do not transmit a charset for incoming data. - default_charset = "latin1" - - def unknown_charset(self, charset): - """Called if a charset was provided but is not supported by - the Python codecs module. By default latin1 is assumed then - to not lose any information, you may override this method to - change the behavior. - - :param charset: the charset that was not found. - :return: the replacement charset. - """ - return "latin1" - - @cached_property - def charset(self): - """The charset from the content type.""" - warnings.warn( - "'werkzeug.contrib.wrappers.DynamicCharsetRequestMixin'" - " is deprecated as of version 0.15 and will be removed in" - " version 1.0.", - DeprecationWarning, - stacklevel=2, - ) - header = self.environ.get("CONTENT_TYPE") - if header: - ct, options = parse_options_header(header) - charset = options.get("charset") - if charset: - if is_known_charset(charset): - return charset - return self.unknown_charset(charset) - return self.default_charset - - -class DynamicCharsetResponseMixin(object): - - """If this mixin is mixed into a response class it will provide - a dynamic `charset` attribute. This means that if the charset is - looked up and stored in the `Content-Type` header and updates - itself automatically. This also means a small performance hit but - can be useful if you're working with different charsets on - responses. - - Because the charset attribute is no a property at class-level, the - default value is stored in `default_charset`. - - Because it changes the behavior or :class:`Response` this class has - to be mixed in *before* the actual response class:: - - class MyResponse(DynamicCharsetResponseMixin, Response): - pass - - .. deprecated:: 0.15 - This mixin will be removed in version 1.0. - - .. versionadded:: 0.6 - """ - - #: the default charset. - default_charset = "utf-8" - - def _get_charset(self): - warnings.warn( - "'werkzeug.contrib.wrappers.DynamicCharsetResponseMixin'" - " is deprecated as of version 0.15 and will be removed in" - " version 1.0.", - DeprecationWarning, - stacklevel=2, - ) - header = self.headers.get("content-type") - if header: - charset = parse_options_header(header)[1].get("charset") - if charset: - return charset - return self.default_charset - - def _set_charset(self, charset): - warnings.warn( - "'werkzeug.contrib.wrappers.DynamicCharsetResponseMixin'" - " is deprecated as of version 0.15 and will be removed in" - " version 1.0.", - DeprecationWarning, - stacklevel=2, - ) - header = self.headers.get("content-type") - ct, options = parse_options_header(header) - if not ct: - raise TypeError("Cannot set charset if Content-Type header is missing.") - options["charset"] = charset - self.headers["Content-Type"] = dump_options_header(ct, options) - - charset = property( - _get_charset, - _set_charset, - doc=""" - The charset for the response. It's stored inside the - Content-Type header as a parameter.""", - ) - del _get_charset, _set_charset diff --git a/python/werkzeug/datastructures.py b/python/werkzeug/datastructures.py deleted file mode 100644 index 9643db9..0000000 --- a/python/werkzeug/datastructures.py +++ /dev/null @@ -1,2852 +0,0 @@ -# -*- coding: utf-8 -*- -""" - werkzeug.datastructures - ~~~~~~~~~~~~~~~~~~~~~~~ - - This module provides mixins and classes with an immutable interface. - - :copyright: 2007 Pallets - :license: BSD-3-Clause -""" -import codecs -import mimetypes -import re -from copy import deepcopy -from itertools import repeat - -from ._compat import BytesIO -from ._compat import collections_abc -from ._compat import integer_types -from ._compat import iteritems -from ._compat import iterkeys -from ._compat import iterlists -from ._compat import itervalues -from ._compat import make_literal_wrapper -from ._compat import PY2 -from ._compat import string_types -from ._compat import text_type -from ._compat import to_native -from ._internal import _missing -from .filesystem import get_filesystem_encoding - -_locale_delim_re = re.compile(r"[_-]") - - -def is_immutable(self): - raise TypeError("%r objects are immutable" % self.__class__.__name__) - - -def iter_multi_items(mapping): - """Iterates over the items of a mapping yielding keys and values - without dropping any from more complex structures. - """ - if isinstance(mapping, MultiDict): - for item in iteritems(mapping, multi=True): - yield item - elif isinstance(mapping, dict): - for key, value in iteritems(mapping): - if isinstance(value, (tuple, list)): - for value in value: - yield key, value - else: - yield key, value - else: - for item in mapping: - yield item - - -def native_itermethods(names): - if not PY2: - return lambda x: x - - def setviewmethod(cls, name): - viewmethod_name = "view%s" % name - repr_name = "view_%s" % name - - def viewmethod(self, *a, **kw): - return ViewItems(self, name, repr_name, *a, **kw) - - viewmethod.__name__ = viewmethod_name - viewmethod.__doc__ = "`%s()` object providing a view on %s" % ( - viewmethod_name, - name, - ) - setattr(cls, viewmethod_name, viewmethod) - - def setitermethod(cls, name): - itermethod = getattr(cls, name) - setattr(cls, "iter%s" % name, itermethod) - - def listmethod(self, *a, **kw): - return list(itermethod(self, *a, **kw)) - - listmethod.__name__ = name - listmethod.__doc__ = "Like :py:meth:`iter%s`, but returns a list." % name - setattr(cls, name, listmethod) - - def wrap(cls): - for name in names: - setitermethod(cls, name) - setviewmethod(cls, name) - return cls - - return wrap - - -class ImmutableListMixin(object): - """Makes a :class:`list` immutable. - - .. versionadded:: 0.5 - - :private: - """ - - _hash_cache = None - - def __hash__(self): - if self._hash_cache is not None: - return self._hash_cache - rv = self._hash_cache = hash(tuple(self)) - return rv - - def __reduce_ex__(self, protocol): - return type(self), (list(self),) - - def __delitem__(self, key): - is_immutable(self) - - def __iadd__(self, other): - is_immutable(self) - - __imul__ = __iadd__ - - def __setitem__(self, key, value): - is_immutable(self) - - def append(self, item): - is_immutable(self) - - remove = append - - def extend(self, iterable): - is_immutable(self) - - def insert(self, pos, value): - is_immutable(self) - - def pop(self, index=-1): - is_immutable(self) - - def reverse(self): - is_immutable(self) - - def sort(self, cmp=None, key=None, reverse=None): - is_immutable(self) - - -class ImmutableList(ImmutableListMixin, list): - """An immutable :class:`list`. - - .. versionadded:: 0.5 - - :private: - """ - - def __repr__(self): - return "%s(%s)" % (self.__class__.__name__, list.__repr__(self)) - - -class ImmutableDictMixin(object): - """Makes a :class:`dict` immutable. - - .. versionadded:: 0.5 - - :private: - """ - - _hash_cache = None - - @classmethod - def fromkeys(cls, keys, value=None): - instance = super(cls, cls).__new__(cls) - instance.__init__(zip(keys, repeat(value))) - return instance - - def __reduce_ex__(self, protocol): - return type(self), (dict(self),) - - def _iter_hashitems(self): - return iteritems(self) - - def __hash__(self): - if self._hash_cache is not None: - return self._hash_cache - rv = self._hash_cache = hash(frozenset(self._iter_hashitems())) - return rv - - def setdefault(self, key, default=None): - is_immutable(self) - - def update(self, *args, **kwargs): - is_immutable(self) - - def pop(self, key, default=None): - is_immutable(self) - - def popitem(self): - is_immutable(self) - - def __setitem__(self, key, value): - is_immutable(self) - - def __delitem__(self, key): - is_immutable(self) - - def clear(self): - is_immutable(self) - - -class ImmutableMultiDictMixin(ImmutableDictMixin): - """Makes a :class:`MultiDict` immutable. - - .. versionadded:: 0.5 - - :private: - """ - - def __reduce_ex__(self, protocol): - return type(self), (list(iteritems(self, multi=True)),) - - def _iter_hashitems(self): - return iteritems(self, multi=True) - - def add(self, key, value): - is_immutable(self) - - def popitemlist(self): - is_immutable(self) - - def poplist(self, key): - is_immutable(self) - - def setlist(self, key, new_list): - is_immutable(self) - - def setlistdefault(self, key, default_list=None): - is_immutable(self) - - -class UpdateDictMixin(object): - """Makes dicts call `self.on_update` on modifications. - - .. versionadded:: 0.5 - - :private: - """ - - on_update = None - - def calls_update(name): # noqa: B902 - def oncall(self, *args, **kw): - rv = getattr(super(UpdateDictMixin, self), name)(*args, **kw) - if self.on_update is not None: - self.on_update(self) - return rv - - oncall.__name__ = name - return oncall - - def setdefault(self, key, default=None): - modified = key not in self - rv = super(UpdateDictMixin, self).setdefault(key, default) - if modified and self.on_update is not None: - self.on_update(self) - return rv - - def pop(self, key, default=_missing): - modified = key in self - if default is _missing: - rv = super(UpdateDictMixin, self).pop(key) - else: - rv = super(UpdateDictMixin, self).pop(key, default) - if modified and self.on_update is not None: - self.on_update(self) - return rv - - __setitem__ = calls_update("__setitem__") - __delitem__ = calls_update("__delitem__") - clear = calls_update("clear") - popitem = calls_update("popitem") - update = calls_update("update") - del calls_update - - -class TypeConversionDict(dict): - """Works like a regular dict but the :meth:`get` method can perform - type conversions. :class:`MultiDict` and :class:`CombinedMultiDict` - are subclasses of this class and provide the same feature. - - .. versionadded:: 0.5 - """ - - def get(self, key, default=None, type=None): - """Return the default value if the requested data doesn't exist. - If `type` is provided and is a callable it should convert the value, - return it or raise a :exc:`ValueError` if that is not possible. In - this case the function will return the default as if the value was not - found: - - >>> d = TypeConversionDict(foo='42', bar='blub') - >>> d.get('foo', type=int) - 42 - >>> d.get('bar', -1, type=int) - -1 - - :param key: The key to be looked up. - :param default: The default value to be returned if the key can't - be looked up. If not further specified `None` is - returned. - :param type: A callable that is used to cast the value in the - :class:`MultiDict`. If a :exc:`ValueError` is raised - by this callable the default value is returned. - """ - try: - rv = self[key] - except KeyError: - return default - if type is not None: - try: - rv = type(rv) - except ValueError: - rv = default - return rv - - -class ImmutableTypeConversionDict(ImmutableDictMixin, TypeConversionDict): - """Works like a :class:`TypeConversionDict` but does not support - modifications. - - .. versionadded:: 0.5 - """ - - def copy(self): - """Return a shallow mutable copy of this object. Keep in mind that - the standard library's :func:`copy` function is a no-op for this class - like for any other python immutable type (eg: :class:`tuple`). - """ - return TypeConversionDict(self) - - def __copy__(self): - return self - - -class ViewItems(object): - def __init__(self, multi_dict, method, repr_name, *a, **kw): - self.__multi_dict = multi_dict - self.__method = method - self.__repr_name = repr_name - self.__a = a - self.__kw = kw - - def __get_items(self): - return getattr(self.__multi_dict, self.__method)(*self.__a, **self.__kw) - - def __repr__(self): - return "%s(%r)" % (self.__repr_name, list(self.__get_items())) - - def __iter__(self): - return iter(self.__get_items()) - - -@native_itermethods(["keys", "values", "items", "lists", "listvalues"]) -class MultiDict(TypeConversionDict): - """A :class:`MultiDict` is a dictionary subclass customized to deal with - multiple values for the same key which is for example used by the parsing - functions in the wrappers. This is necessary because some HTML form - elements pass multiple values for the same key. - - :class:`MultiDict` implements all standard dictionary methods. - Internally, it saves all values for a key as a list, but the standard dict - access methods will only return the first value for a key. If you want to - gain access to the other values, too, you have to use the `list` methods as - explained below. - - Basic Usage: - - >>> d = MultiDict([('a', 'b'), ('a', 'c')]) - >>> d - MultiDict([('a', 'b'), ('a', 'c')]) - >>> d['a'] - 'b' - >>> d.getlist('a') - ['b', 'c'] - >>> 'a' in d - True - - It behaves like a normal dict thus all dict functions will only return the - first value when multiple values for one key are found. - - From Werkzeug 0.3 onwards, the `KeyError` raised by this class is also a - subclass of the :exc:`~exceptions.BadRequest` HTTP exception and will - render a page for a ``400 BAD REQUEST`` if caught in a catch-all for HTTP - exceptions. - - A :class:`MultiDict` can be constructed from an iterable of - ``(key, value)`` tuples, a dict, a :class:`MultiDict` or from Werkzeug 0.2 - onwards some keyword parameters. - - :param mapping: the initial value for the :class:`MultiDict`. Either a - regular dict, an iterable of ``(key, value)`` tuples - or `None`. - """ - - def __init__(self, mapping=None): - if isinstance(mapping, MultiDict): - dict.__init__(self, ((k, l[:]) for k, l in iterlists(mapping))) - elif isinstance(mapping, dict): - tmp = {} - for key, value in iteritems(mapping): - if isinstance(value, (tuple, list)): - if len(value) == 0: - continue - value = list(value) - else: - value = [value] - tmp[key] = value - dict.__init__(self, tmp) - else: - tmp = {} - for key, value in mapping or (): - tmp.setdefault(key, []).append(value) - dict.__init__(self, tmp) - - def __getstate__(self): - return dict(self.lists()) - - def __setstate__(self, value): - dict.clear(self) - dict.update(self, value) - - def __getitem__(self, key): - """Return the first data value for this key; - raises KeyError if not found. - - :param key: The key to be looked up. - :raise KeyError: if the key does not exist. - """ - - if key in self: - lst = dict.__getitem__(self, key) - if len(lst) > 0: - return lst[0] - raise exceptions.BadRequestKeyError(key) - - def __setitem__(self, key, value): - """Like :meth:`add` but removes an existing key first. - - :param key: the key for the value. - :param value: the value to set. - """ - dict.__setitem__(self, key, [value]) - - def add(self, key, value): - """Adds a new value for the key. - - .. versionadded:: 0.6 - - :param key: the key for the value. - :param value: the value to add. - """ - dict.setdefault(self, key, []).append(value) - - def getlist(self, key, type=None): - """Return the list of items for a given key. If that key is not in the - `MultiDict`, the return value will be an empty list. Just as `get` - `getlist` accepts a `type` parameter. All items will be converted - with the callable defined there. - - :param key: The key to be looked up. - :param type: A callable that is used to cast the value in the - :class:`MultiDict`. If a :exc:`ValueError` is raised - by this callable the value will be removed from the list. - :return: a :class:`list` of all the values for the key. - """ - try: - rv = dict.__getitem__(self, key) - except KeyError: - return [] - if type is None: - return list(rv) - result = [] - for item in rv: - try: - result.append(type(item)) - except ValueError: - pass - return result - - def setlist(self, key, new_list): - """Remove the old values for a key and add new ones. Note that the list - you pass the values in will be shallow-copied before it is inserted in - the dictionary. - - >>> d = MultiDict() - >>> d.setlist('foo', ['1', '2']) - >>> d['foo'] - '1' - >>> d.getlist('foo') - ['1', '2'] - - :param key: The key for which the values are set. - :param new_list: An iterable with the new values for the key. Old values - are removed first. - """ - dict.__setitem__(self, key, list(new_list)) - - def setdefault(self, key, default=None): - """Returns the value for the key if it is in the dict, otherwise it - returns `default` and sets that value for `key`. - - :param key: The key to be looked up. - :param default: The default value to be returned if the key is not - in the dict. If not further specified it's `None`. - """ - if key not in self: - self[key] = default - else: - default = self[key] - return default - - def setlistdefault(self, key, default_list=None): - """Like `setdefault` but sets multiple values. The list returned - is not a copy, but the list that is actually used internally. This - means that you can put new values into the dict by appending items - to the list: - - >>> d = MultiDict({"foo": 1}) - >>> d.setlistdefault("foo").extend([2, 3]) - >>> d.getlist("foo") - [1, 2, 3] - - :param key: The key to be looked up. - :param default_list: An iterable of default values. It is either copied - (in case it was a list) or converted into a list - before returned. - :return: a :class:`list` - """ - if key not in self: - default_list = list(default_list or ()) - dict.__setitem__(self, key, default_list) - else: - default_list = dict.__getitem__(self, key) - return default_list - - def items(self, multi=False): - """Return an iterator of ``(key, value)`` pairs. - - :param multi: If set to `True` the iterator returned will have a pair - for each value of each key. Otherwise it will only - contain pairs for the first value of each key. - """ - - for key, values in iteritems(dict, self): - if multi: - for value in values: - yield key, value - else: - yield key, values[0] - - def lists(self): - """Return a iterator of ``(key, values)`` pairs, where values is the list - of all values associated with the key.""" - - for key, values in iteritems(dict, self): - yield key, list(values) - - def keys(self): - return iterkeys(dict, self) - - __iter__ = keys - - def values(self): - """Returns an iterator of the first value on every key's value list.""" - for values in itervalues(dict, self): - yield values[0] - - def listvalues(self): - """Return an iterator of all values associated with a key. Zipping - :meth:`keys` and this is the same as calling :meth:`lists`: - - >>> d = MultiDict({"foo": [1, 2, 3]}) - >>> zip(d.keys(), d.listvalues()) == d.lists() - True - """ - - return itervalues(dict, self) - - def copy(self): - """Return a shallow copy of this object.""" - return self.__class__(self) - - def deepcopy(self, memo=None): - """Return a deep copy of this object.""" - return self.__class__(deepcopy(self.to_dict(flat=False), memo)) - - def to_dict(self, flat=True): - """Return the contents as regular dict. If `flat` is `True` the - returned dict will only have the first item present, if `flat` is - `False` all values will be returned as lists. - - :param flat: If set to `False` the dict returned will have lists - with all the values in it. Otherwise it will only - contain the first value for each key. - :return: a :class:`dict` - """ - if flat: - return dict(iteritems(self)) - return dict(self.lists()) - - def update(self, other_dict): - """update() extends rather than replaces existing key lists: - - >>> a = MultiDict({'x': 1}) - >>> b = MultiDict({'x': 2, 'y': 3}) - >>> a.update(b) - >>> a - MultiDict([('y', 3), ('x', 1), ('x', 2)]) - - If the value list for a key in ``other_dict`` is empty, no new values - will be added to the dict and the key will not be created: - - >>> x = {'empty_list': []} - >>> y = MultiDict() - >>> y.update(x) - >>> y - MultiDict([]) - """ - for key, value in iter_multi_items(other_dict): - MultiDict.add(self, key, value) - - def pop(self, key, default=_missing): - """Pop the first item for a list on the dict. Afterwards the - key is removed from the dict, so additional values are discarded: - - >>> d = MultiDict({"foo": [1, 2, 3]}) - >>> d.pop("foo") - 1 - >>> "foo" in d - False - - :param key: the key to pop. - :param default: if provided the value to return if the key was - not in the dictionary. - """ - try: - lst = dict.pop(self, key) - - if len(lst) == 0: - raise exceptions.BadRequestKeyError(key) - - return lst[0] - except KeyError: - if default is not _missing: - return default - raise exceptions.BadRequestKeyError(key) - - def popitem(self): - """Pop an item from the dict.""" - try: - item = dict.popitem(self) - - if len(item[1]) == 0: - raise exceptions.BadRequestKeyError(item) - - return (item[0], item[1][0]) - except KeyError as e: - raise exceptions.BadRequestKeyError(e.args[0]) - - def poplist(self, key): - """Pop the list for a key from the dict. If the key is not in the dict - an empty list is returned. - - .. versionchanged:: 0.5 - If the key does no longer exist a list is returned instead of - raising an error. - """ - return dict.pop(self, key, []) - - def popitemlist(self): - """Pop a ``(key, list)`` tuple from the dict.""" - try: - return dict.popitem(self) - except KeyError as e: - raise exceptions.BadRequestKeyError(e.args[0]) - - def __copy__(self): - return self.copy() - - def __deepcopy__(self, memo): - return self.deepcopy(memo=memo) - - def __repr__(self): - return "%s(%r)" % (self.__class__.__name__, list(iteritems(self, multi=True))) - - -class _omd_bucket(object): - """Wraps values in the :class:`OrderedMultiDict`. This makes it - possible to keep an order over multiple different keys. It requires - a lot of extra memory and slows down access a lot, but makes it - possible to access elements in O(1) and iterate in O(n). - """ - - __slots__ = ("prev", "key", "value", "next") - - def __init__(self, omd, key, value): - self.prev = omd._last_bucket - self.key = key - self.value = value - self.next = None - - if omd._first_bucket is None: - omd._first_bucket = self - if omd._last_bucket is not None: - omd._last_bucket.next = self - omd._last_bucket = self - - def unlink(self, omd): - if self.prev: - self.prev.next = self.next - if self.next: - self.next.prev = self.prev - if omd._first_bucket is self: - omd._first_bucket = self.next - if omd._last_bucket is self: - omd._last_bucket = self.prev - - -@native_itermethods(["keys", "values", "items", "lists", "listvalues"]) -class OrderedMultiDict(MultiDict): - """Works like a regular :class:`MultiDict` but preserves the - order of the fields. To convert the ordered multi dict into a - list you can use the :meth:`items` method and pass it ``multi=True``. - - In general an :class:`OrderedMultiDict` is an order of magnitude - slower than a :class:`MultiDict`. - - .. admonition:: note - - Due to a limitation in Python you cannot convert an ordered - multi dict into a regular dict by using ``dict(multidict)``. - Instead you have to use the :meth:`to_dict` method, otherwise - the internal bucket objects are exposed. - """ - - def __init__(self, mapping=None): - dict.__init__(self) - self._first_bucket = self._last_bucket = None - if mapping is not None: - OrderedMultiDict.update(self, mapping) - - def __eq__(self, other): - if not isinstance(other, MultiDict): - return NotImplemented - if isinstance(other, OrderedMultiDict): - iter1 = iteritems(self, multi=True) - iter2 = iteritems(other, multi=True) - try: - for k1, v1 in iter1: - k2, v2 = next(iter2) - if k1 != k2 or v1 != v2: - return False - except StopIteration: - return False - try: - next(iter2) - except StopIteration: - return True - return False - if len(self) != len(other): - return False - for key, values in iterlists(self): - if other.getlist(key) != values: - return False - return True - - __hash__ = None - - def __ne__(self, other): - return not self.__eq__(other) - - def __reduce_ex__(self, protocol): - return type(self), (list(iteritems(self, multi=True)),) - - def __getstate__(self): - return list(iteritems(self, multi=True)) - - def __setstate__(self, values): - dict.clear(self) - for key, value in values: - self.add(key, value) - - def __getitem__(self, key): - if key in self: - return dict.__getitem__(self, key)[0].value - raise exceptions.BadRequestKeyError(key) - - def __setitem__(self, key, value): - self.poplist(key) - self.add(key, value) - - def __delitem__(self, key): - self.pop(key) - - def keys(self): - return (key for key, value in iteritems(self)) - - __iter__ = keys - - def values(self): - return (value for key, value in iteritems(self)) - - def items(self, multi=False): - ptr = self._first_bucket - if multi: - while ptr is not None: - yield ptr.key, ptr.value - ptr = ptr.next - else: - returned_keys = set() - while ptr is not None: - if ptr.key not in returned_keys: - returned_keys.add(ptr.key) - yield ptr.key, ptr.value - ptr = ptr.next - - def lists(self): - returned_keys = set() - ptr = self._first_bucket - while ptr is not None: - if ptr.key not in returned_keys: - yield ptr.key, self.getlist(ptr.key) - returned_keys.add(ptr.key) - ptr = ptr.next - - def listvalues(self): - for _key, values in iterlists(self): - yield values - - def add(self, key, value): - dict.setdefault(self, key, []).append(_omd_bucket(self, key, value)) - - def getlist(self, key, type=None): - try: - rv = dict.__getitem__(self, key) - except KeyError: - return [] - if type is None: - return [x.value for x in rv] - result = [] - for item in rv: - try: - result.append(type(item.value)) - except ValueError: - pass - return result - - def setlist(self, key, new_list): - self.poplist(key) - for value in new_list: - self.add(key, value) - - def setlistdefault(self, key, default_list=None): - raise TypeError("setlistdefault is unsupported for ordered multi dicts") - - def update(self, mapping): - for key, value in iter_multi_items(mapping): - OrderedMultiDict.add(self, key, value) - - def poplist(self, key): - buckets = dict.pop(self, key, ()) - for bucket in buckets: - bucket.unlink(self) - return [x.value for x in buckets] - - def pop(self, key, default=_missing): - try: - buckets = dict.pop(self, key) - except KeyError: - if default is not _missing: - return default - raise exceptions.BadRequestKeyError(key) - for bucket in buckets: - bucket.unlink(self) - return buckets[0].value - - def popitem(self): - try: - key, buckets = dict.popitem(self) - except KeyError as e: - raise exceptions.BadRequestKeyError(e.args[0]) - for bucket in buckets: - bucket.unlink(self) - return key, buckets[0].value - - def popitemlist(self): - try: - key, buckets = dict.popitem(self) - except KeyError as e: - raise exceptions.BadRequestKeyError(e.args[0]) - for bucket in buckets: - bucket.unlink(self) - return key, [x.value for x in buckets] - - -def _options_header_vkw(value, kw): - return dump_options_header( - value, dict((k.replace("_", "-"), v) for k, v in kw.items()) - ) - - -def _unicodify_header_value(value): - if isinstance(value, bytes): - value = value.decode("latin-1") - if not isinstance(value, text_type): - value = text_type(value) - return value - - -@native_itermethods(["keys", "values", "items"]) -class Headers(object): - """An object that stores some headers. It has a dict-like interface - but is ordered and can store the same keys multiple times. - - This data structure is useful if you want a nicer way to handle WSGI - headers which are stored as tuples in a list. - - From Werkzeug 0.3 onwards, the :exc:`KeyError` raised by this class is - also a subclass of the :class:`~exceptions.BadRequest` HTTP exception - and will render a page for a ``400 BAD REQUEST`` if caught in a - catch-all for HTTP exceptions. - - Headers is mostly compatible with the Python :class:`wsgiref.headers.Headers` - class, with the exception of `__getitem__`. :mod:`wsgiref` will return - `None` for ``headers['missing']``, whereas :class:`Headers` will raise - a :class:`KeyError`. - - To create a new :class:`Headers` object pass it a list or dict of headers - which are used as default values. This does not reuse the list passed - to the constructor for internal usage. - - :param defaults: The list of default values for the :class:`Headers`. - - .. versionchanged:: 0.9 - This data structure now stores unicode values similar to how the - multi dicts do it. The main difference is that bytes can be set as - well which will automatically be latin1 decoded. - - .. versionchanged:: 0.9 - The :meth:`linked` function was removed without replacement as it - was an API that does not support the changes to the encoding model. - """ - - def __init__(self, defaults=None): - self._list = [] - if defaults is not None: - if isinstance(defaults, (list, Headers)): - self._list.extend(defaults) - else: - self.extend(defaults) - - def __getitem__(self, key, _get_mode=False): - if not _get_mode: - if isinstance(key, integer_types): - return self._list[key] - elif isinstance(key, slice): - return self.__class__(self._list[key]) - if not isinstance(key, string_types): - raise exceptions.BadRequestKeyError(key) - ikey = key.lower() - for k, v in self._list: - if k.lower() == ikey: - return v - # micro optimization: if we are in get mode we will catch that - # exception one stack level down so we can raise a standard - # key error instead of our special one. - if _get_mode: - raise KeyError() - raise exceptions.BadRequestKeyError(key) - - def __eq__(self, other): - return other.__class__ is self.__class__ and set(other._list) == set(self._list) - - __hash__ = None - - def __ne__(self, other): - return not self.__eq__(other) - - def get(self, key, default=None, type=None, as_bytes=False): - """Return the default value if the requested data doesn't exist. - If `type` is provided and is a callable it should convert the value, - return it or raise a :exc:`ValueError` if that is not possible. In - this case the function will return the default as if the value was not - found: - - >>> d = Headers([('Content-Length', '42')]) - >>> d.get('Content-Length', type=int) - 42 - - If a headers object is bound you must not add unicode strings - because no encoding takes place. - - .. versionadded:: 0.9 - Added support for `as_bytes`. - - :param key: The key to be looked up. - :param default: The default value to be returned if the key can't - be looked up. If not further specified `None` is - returned. - :param type: A callable that is used to cast the value in the - :class:`Headers`. If a :exc:`ValueError` is raised - by this callable the default value is returned. - :param as_bytes: return bytes instead of unicode strings. - """ - try: - rv = self.__getitem__(key, _get_mode=True) - except KeyError: - return default - if as_bytes: - rv = rv.encode("latin1") - if type is None: - return rv - try: - return type(rv) - except ValueError: - return default - - def getlist(self, key, type=None, as_bytes=False): - """Return the list of items for a given key. If that key is not in the - :class:`Headers`, the return value will be an empty list. Just as - :meth:`get` :meth:`getlist` accepts a `type` parameter. All items will - be converted with the callable defined there. - - .. versionadded:: 0.9 - Added support for `as_bytes`. - - :param key: The key to be looked up. - :param type: A callable that is used to cast the value in the - :class:`Headers`. If a :exc:`ValueError` is raised - by this callable the value will be removed from the list. - :return: a :class:`list` of all the values for the key. - :param as_bytes: return bytes instead of unicode strings. - """ - ikey = key.lower() - result = [] - for k, v in self: - if k.lower() == ikey: - if as_bytes: - v = v.encode("latin1") - if type is not None: - try: - v = type(v) - except ValueError: - continue - result.append(v) - return result - - def get_all(self, name): - """Return a list of all the values for the named field. - - This method is compatible with the :mod:`wsgiref` - :meth:`~wsgiref.headers.Headers.get_all` method. - """ - return self.getlist(name) - - def items(self, lower=False): - for key, value in self: - if lower: - key = key.lower() - yield key, value - - def keys(self, lower=False): - for key, _ in iteritems(self, lower): - yield key - - def values(self): - for _, value in iteritems(self): - yield value - - def extend(self, iterable): - """Extend the headers with a dict or an iterable yielding keys and - values. - """ - if isinstance(iterable, dict): - for key, value in iteritems(iterable): - if isinstance(value, (tuple, list)): - for v in value: - self.add(key, v) - else: - self.add(key, value) - else: - for key, value in iterable: - self.add(key, value) - - def __delitem__(self, key, _index_operation=True): - if _index_operation and isinstance(key, (integer_types, slice)): - del self._list[key] - return - key = key.lower() - new = [] - for k, v in self._list: - if k.lower() != key: - new.append((k, v)) - self._list[:] = new - - def remove(self, key): - """Remove a key. - - :param key: The key to be removed. - """ - return self.__delitem__(key, _index_operation=False) - - def pop(self, key=None, default=_missing): - """Removes and returns a key or index. - - :param key: The key to be popped. If this is an integer the item at - that position is removed, if it's a string the value for - that key is. If the key is omitted or `None` the last - item is removed. - :return: an item. - """ - if key is None: - return self._list.pop() - if isinstance(key, integer_types): - return self._list.pop(key) - try: - rv = self[key] - self.remove(key) - except KeyError: - if default is not _missing: - return default - raise - return rv - - def popitem(self): - """Removes a key or index and returns a (key, value) item.""" - return self.pop() - - def __contains__(self, key): - """Check if a key is present.""" - try: - self.__getitem__(key, _get_mode=True) - except KeyError: - return False - return True - - has_key = __contains__ - - def __iter__(self): - """Yield ``(key, value)`` tuples.""" - return iter(self._list) - - def __len__(self): - return len(self._list) - - def add(self, _key, _value, **kw): - """Add a new header tuple to the list. - - Keyword arguments can specify additional parameters for the header - value, with underscores converted to dashes:: - - >>> d = Headers() - >>> d.add('Content-Type', 'text/plain') - >>> d.add('Content-Disposition', 'attachment', filename='foo.png') - - The keyword argument dumping uses :func:`dump_options_header` - behind the scenes. - - .. versionadded:: 0.4.1 - keyword arguments were added for :mod:`wsgiref` compatibility. - """ - if kw: - _value = _options_header_vkw(_value, kw) - _key = _unicodify_header_value(_key) - _value = _unicodify_header_value(_value) - self._validate_value(_value) - self._list.append((_key, _value)) - - def _validate_value(self, value): - if not isinstance(value, text_type): - raise TypeError("Value should be unicode.") - if u"\n" in value or u"\r" in value: - raise ValueError( - "Detected newline in header value. This is " - "a potential security problem" - ) - - def add_header(self, _key, _value, **_kw): - """Add a new header tuple to the list. - - An alias for :meth:`add` for compatibility with the :mod:`wsgiref` - :meth:`~wsgiref.headers.Headers.add_header` method. - """ - self.add(_key, _value, **_kw) - - def clear(self): - """Clears all headers.""" - del self._list[:] - - def set(self, _key, _value, **kw): - """Remove all header tuples for `key` and add a new one. The newly - added key either appears at the end of the list if there was no - entry or replaces the first one. - - Keyword arguments can specify additional parameters for the header - value, with underscores converted to dashes. See :meth:`add` for - more information. - - .. versionchanged:: 0.6.1 - :meth:`set` now accepts the same arguments as :meth:`add`. - - :param key: The key to be inserted. - :param value: The value to be inserted. - """ - if kw: - _value = _options_header_vkw(_value, kw) - _key = _unicodify_header_value(_key) - _value = _unicodify_header_value(_value) - self._validate_value(_value) - if not self._list: - self._list.append((_key, _value)) - return - listiter = iter(self._list) - ikey = _key.lower() - for idx, (old_key, _old_value) in enumerate(listiter): - if old_key.lower() == ikey: - # replace first ocurrence - self._list[idx] = (_key, _value) - break - else: - self._list.append((_key, _value)) - return - self._list[idx + 1 :] = [t for t in listiter if t[0].lower() != ikey] - - def setdefault(self, key, default): - """Returns the value for the key if it is in the dict, otherwise it - returns `default` and sets that value for `key`. - - :param key: The key to be looked up. - :param default: The default value to be returned if the key is not - in the dict. If not further specified it's `None`. - """ - if key in self: - return self[key] - self.set(key, default) - return default - - def __setitem__(self, key, value): - """Like :meth:`set` but also supports index/slice based setting.""" - if isinstance(key, (slice, integer_types)): - if isinstance(key, integer_types): - value = [value] - value = [ - (_unicodify_header_value(k), _unicodify_header_value(v)) - for (k, v) in value - ] - [self._validate_value(v) for (k, v) in value] - if isinstance(key, integer_types): - self._list[key] = value[0] - else: - self._list[key] = value - else: - self.set(key, value) - - def to_list(self, charset="iso-8859-1"): - """Convert the headers into a list suitable for WSGI. - - .. deprecated:: 0.9 - """ - from warnings import warn - - warn( - "'to_list' deprecated as of version 0.9 and will be removed" - " in version 1.0. Use 'to_wsgi_list' instead.", - DeprecationWarning, - stacklevel=2, - ) - return self.to_wsgi_list() - - def to_wsgi_list(self): - """Convert the headers into a list suitable for WSGI. - - The values are byte strings in Python 2 converted to latin1 and unicode - strings in Python 3 for the WSGI server to encode. - - :return: list - """ - if PY2: - return [(to_native(k), v.encode("latin1")) for k, v in self] - return list(self) - - def copy(self): - return self.__class__(self._list) - - def __copy__(self): - return self.copy() - - def __str__(self): - """Returns formatted headers suitable for HTTP transmission.""" - strs = [] - for key, value in self.to_wsgi_list(): - strs.append("%s: %s" % (key, value)) - strs.append("\r\n") - return "\r\n".join(strs) - - def __repr__(self): - return "%s(%r)" % (self.__class__.__name__, list(self)) - - -class ImmutableHeadersMixin(object): - """Makes a :class:`Headers` immutable. We do not mark them as - hashable though since the only usecase for this datastructure - in Werkzeug is a view on a mutable structure. - - .. versionadded:: 0.5 - - :private: - """ - - def __delitem__(self, key, **kwargs): - is_immutable(self) - - def __setitem__(self, key, value): - is_immutable(self) - - set = __setitem__ - - def add(self, item): - is_immutable(self) - - remove = add_header = add - - def extend(self, iterable): - is_immutable(self) - - def insert(self, pos, value): - is_immutable(self) - - def pop(self, index=-1): - is_immutable(self) - - def popitem(self): - is_immutable(self) - - def setdefault(self, key, default): - is_immutable(self) - - -class EnvironHeaders(ImmutableHeadersMixin, Headers): - """Read only version of the headers from a WSGI environment. This - provides the same interface as `Headers` and is constructed from - a WSGI environment. - - From Werkzeug 0.3 onwards, the `KeyError` raised by this class is also a - subclass of the :exc:`~exceptions.BadRequest` HTTP exception and will - render a page for a ``400 BAD REQUEST`` if caught in a catch-all for - HTTP exceptions. - """ - - def __init__(self, environ): - self.environ = environ - - def __eq__(self, other): - return self.environ is other.environ - - __hash__ = None - - def __getitem__(self, key, _get_mode=False): - # _get_mode is a no-op for this class as there is no index but - # used because get() calls it. - if not isinstance(key, string_types): - raise KeyError(key) - key = key.upper().replace("-", "_") - if key in ("CONTENT_TYPE", "CONTENT_LENGTH"): - return _unicodify_header_value(self.environ[key]) - return _unicodify_header_value(self.environ["HTTP_" + key]) - - def __len__(self): - # the iter is necessary because otherwise list calls our - # len which would call list again and so forth. - return len(list(iter(self))) - - def __iter__(self): - for key, value in iteritems(self.environ): - if key.startswith("HTTP_") and key not in ( - "HTTP_CONTENT_TYPE", - "HTTP_CONTENT_LENGTH", - ): - yield ( - key[5:].replace("_", "-").title(), - _unicodify_header_value(value), - ) - elif key in ("CONTENT_TYPE", "CONTENT_LENGTH") and value: - yield (key.replace("_", "-").title(), _unicodify_header_value(value)) - - def copy(self): - raise TypeError("cannot create %r copies" % self.__class__.__name__) - - -@native_itermethods(["keys", "values", "items", "lists", "listvalues"]) -class CombinedMultiDict(ImmutableMultiDictMixin, MultiDict): - """A read only :class:`MultiDict` that you can pass multiple :class:`MultiDict` - instances as sequence and it will combine the return values of all wrapped - dicts: - - >>> from werkzeug.datastructures import CombinedMultiDict, MultiDict - >>> post = MultiDict([('foo', 'bar')]) - >>> get = MultiDict([('blub', 'blah')]) - >>> combined = CombinedMultiDict([get, post]) - >>> combined['foo'] - 'bar' - >>> combined['blub'] - 'blah' - - This works for all read operations and will raise a `TypeError` for - methods that usually change data which isn't possible. - - From Werkzeug 0.3 onwards, the `KeyError` raised by this class is also a - subclass of the :exc:`~exceptions.BadRequest` HTTP exception and will - render a page for a ``400 BAD REQUEST`` if caught in a catch-all for HTTP - exceptions. - """ - - def __reduce_ex__(self, protocol): - return type(self), (self.dicts,) - - def __init__(self, dicts=None): - self.dicts = dicts or [] - - @classmethod - def fromkeys(cls): - raise TypeError("cannot create %r instances by fromkeys" % cls.__name__) - - def __getitem__(self, key): - for d in self.dicts: - if key in d: - return d[key] - raise exceptions.BadRequestKeyError(key) - - def get(self, key, default=None, type=None): - for d in self.dicts: - if key in d: - if type is not None: - try: - return type(d[key]) - except ValueError: - continue - return d[key] - return default - - def getlist(self, key, type=None): - rv = [] - for d in self.dicts: - rv.extend(d.getlist(key, type)) - return rv - - def _keys_impl(self): - """This function exists so __len__ can be implemented more efficiently, - saving one list creation from an iterator. - - Using this for Python 2's ``dict.keys`` behavior would be useless since - `dict.keys` in Python 2 returns a list, while we have a set here. - """ - rv = set() - for d in self.dicts: - rv.update(iterkeys(d)) - return rv - - def keys(self): - return iter(self._keys_impl()) - - __iter__ = keys - - def items(self, multi=False): - found = set() - for d in self.dicts: - for key, value in iteritems(d, multi): - if multi: - yield key, value - elif key not in found: - found.add(key) - yield key, value - - def values(self): - for _key, value in iteritems(self): - yield value - - def lists(self): - rv = {} - for d in self.dicts: - for key, values in iterlists(d): - rv.setdefault(key, []).extend(values) - return iteritems(rv) - - def listvalues(self): - return (x[1] for x in self.lists()) - - def copy(self): - """Return a shallow mutable copy of this object. - - This returns a :class:`MultiDict` representing the data at the - time of copying. The copy will no longer reflect changes to the - wrapped dicts. - - .. versionchanged:: 0.15 - Return a mutable :class:`MultiDict`. - """ - return MultiDict(self) - - def to_dict(self, flat=True): - """Return the contents as regular dict. If `flat` is `True` the - returned dict will only have the first item present, if `flat` is - `False` all values will be returned as lists. - - :param flat: If set to `False` the dict returned will have lists - with all the values in it. Otherwise it will only - contain the first item for each key. - :return: a :class:`dict` - """ - rv = {} - for d in reversed(self.dicts): - rv.update(d.to_dict(flat)) - return rv - - def __len__(self): - return len(self._keys_impl()) - - def __contains__(self, key): - for d in self.dicts: - if key in d: - return True - return False - - has_key = __contains__ - - def __repr__(self): - return "%s(%r)" % (self.__class__.__name__, self.dicts) - - -class FileMultiDict(MultiDict): - """A special :class:`MultiDict` that has convenience methods to add - files to it. This is used for :class:`EnvironBuilder` and generally - useful for unittesting. - - .. versionadded:: 0.5 - """ - - def add_file(self, name, file, filename=None, content_type=None): - """Adds a new file to the dict. `file` can be a file name or - a :class:`file`-like or a :class:`FileStorage` object. - - :param name: the name of the field. - :param file: a filename or :class:`file`-like object - :param filename: an optional filename - :param content_type: an optional content type - """ - if isinstance(file, FileStorage): - value = file - else: - if isinstance(file, string_types): - if filename is None: - filename = file - file = open(file, "rb") - if filename and content_type is None: - content_type = ( - mimetypes.guess_type(filename)[0] or "application/octet-stream" - ) - value = FileStorage(file, filename, name, content_type) - - self.add(name, value) - - -class ImmutableDict(ImmutableDictMixin, dict): - """An immutable :class:`dict`. - - .. versionadded:: 0.5 - """ - - def __repr__(self): - return "%s(%s)" % (self.__class__.__name__, dict.__repr__(self)) - - def copy(self): - """Return a shallow mutable copy of this object. Keep in mind that - the standard library's :func:`copy` function is a no-op for this class - like for any other python immutable type (eg: :class:`tuple`). - """ - return dict(self) - - def __copy__(self): - return self - - -class ImmutableMultiDict(ImmutableMultiDictMixin, MultiDict): - """An immutable :class:`MultiDict`. - - .. versionadded:: 0.5 - """ - - def copy(self): - """Return a shallow mutable copy of this object. Keep in mind that - the standard library's :func:`copy` function is a no-op for this class - like for any other python immutable type (eg: :class:`tuple`). - """ - return MultiDict(self) - - def __copy__(self): - return self - - -class ImmutableOrderedMultiDict(ImmutableMultiDictMixin, OrderedMultiDict): - """An immutable :class:`OrderedMultiDict`. - - .. versionadded:: 0.6 - """ - - def _iter_hashitems(self): - return enumerate(iteritems(self, multi=True)) - - def copy(self): - """Return a shallow mutable copy of this object. Keep in mind that - the standard library's :func:`copy` function is a no-op for this class - like for any other python immutable type (eg: :class:`tuple`). - """ - return OrderedMultiDict(self) - - def __copy__(self): - return self - - -@native_itermethods(["values"]) -class Accept(ImmutableList): - """An :class:`Accept` object is just a list subclass for lists of - ``(value, quality)`` tuples. It is automatically sorted by specificity - and quality. - - All :class:`Accept` objects work similar to a list but provide extra - functionality for working with the data. Containment checks are - normalized to the rules of that header: - - >>> a = CharsetAccept([('ISO-8859-1', 1), ('utf-8', 0.7)]) - >>> a.best - 'ISO-8859-1' - >>> 'iso-8859-1' in a - True - >>> 'UTF8' in a - True - >>> 'utf7' in a - False - - To get the quality for an item you can use normal item lookup: - - >>> print a['utf-8'] - 0.7 - >>> a['utf7'] - 0 - - .. versionchanged:: 0.5 - :class:`Accept` objects are forced immutable now. - """ - - def __init__(self, values=()): - if values is None: - list.__init__(self) - self.provided = False - elif isinstance(values, Accept): - self.provided = values.provided - list.__init__(self, values) - else: - self.provided = True - values = sorted( - values, - key=lambda x: (self._specificity(x[0]), x[1], x[0]), - reverse=True, - ) - list.__init__(self, values) - - def _specificity(self, value): - """Returns a tuple describing the value's specificity.""" - return (value != "*",) - - def _value_matches(self, value, item): - """Check if a value matches a given accept item.""" - return item == "*" or item.lower() == value.lower() - - def __getitem__(self, key): - """Besides index lookup (getting item n) you can also pass it a string - to get the quality for the item. If the item is not in the list, the - returned quality is ``0``. - """ - if isinstance(key, string_types): - return self.quality(key) - return list.__getitem__(self, key) - - def quality(self, key): - """Returns the quality of the key. - - .. versionadded:: 0.6 - In previous versions you had to use the item-lookup syntax - (eg: ``obj[key]`` instead of ``obj.quality(key)``) - """ - for item, quality in self: - if self._value_matches(key, item): - return quality - return 0 - - def __contains__(self, value): - for item, _quality in self: - if self._value_matches(value, item): - return True - return False - - def __repr__(self): - return "%s([%s])" % ( - self.__class__.__name__, - ", ".join("(%r, %s)" % (x, y) for x, y in self), - ) - - def index(self, key): - """Get the position of an entry or raise :exc:`ValueError`. - - :param key: The key to be looked up. - - .. versionchanged:: 0.5 - This used to raise :exc:`IndexError`, which was inconsistent - with the list API. - """ - if isinstance(key, string_types): - for idx, (item, _quality) in enumerate(self): - if self._value_matches(key, item): - return idx - raise ValueError(key) - return list.index(self, key) - - def find(self, key): - """Get the position of an entry or return -1. - - :param key: The key to be looked up. - """ - try: - return self.index(key) - except ValueError: - return -1 - - def values(self): - """Iterate over all values.""" - for item in self: - yield item[0] - - def to_header(self): - """Convert the header set into an HTTP header string.""" - result = [] - for value, quality in self: - if quality != 1: - value = "%s;q=%s" % (value, quality) - result.append(value) - return ",".join(result) - - def __str__(self): - return self.to_header() - - def _best_single_match(self, match): - for client_item, quality in self: - if self._value_matches(match, client_item): - # self is sorted by specificity descending, we can exit - return client_item, quality - - def best_match(self, matches, default=None): - """Returns the best match from a list of possible matches based - on the specificity and quality of the client. If two items have the - same quality and specificity, the one is returned that comes first. - - :param matches: a list of matches to check for - :param default: the value that is returned if none match - """ - result = default - best_quality = -1 - best_specificity = (-1,) - for server_item in matches: - match = self._best_single_match(server_item) - if not match: - continue - client_item, quality = match - specificity = self._specificity(client_item) - if quality <= 0 or quality < best_quality: - continue - # better quality or same quality but more specific => better match - if quality > best_quality or specificity > best_specificity: - result = server_item - best_quality = quality - best_specificity = specificity - return result - - @property - def best(self): - """The best match as value.""" - if self: - return self[0][0] - - -class MIMEAccept(Accept): - """Like :class:`Accept` but with special methods and behavior for - mimetypes. - """ - - def _specificity(self, value): - return tuple(x != "*" for x in value.split("/", 1)) - - def _value_matches(self, value, item): - def _normalize(x): - x = x.lower() - return ("*", "*") if x == "*" else x.split("/", 1) - - # this is from the application which is trusted. to avoid developer - # frustration we actually check these for valid values - if "/" not in value: - raise ValueError("invalid mimetype %r" % value) - value_type, value_subtype = _normalize(value) - if value_type == "*" and value_subtype != "*": - raise ValueError("invalid mimetype %r" % value) - - if "/" not in item: - return False - item_type, item_subtype = _normalize(item) - if item_type == "*" and item_subtype != "*": - return False - return ( - item_type == item_subtype == "*" or value_type == value_subtype == "*" - ) or ( - item_type == value_type - and ( - item_subtype == "*" - or value_subtype == "*" - or item_subtype == value_subtype - ) - ) - - @property - def accept_html(self): - """True if this object accepts HTML.""" - return ( - "text/html" in self or "application/xhtml+xml" in self or self.accept_xhtml - ) - - @property - def accept_xhtml(self): - """True if this object accepts XHTML.""" - return "application/xhtml+xml" in self or "application/xml" in self - - @property - def accept_json(self): - """True if this object accepts JSON.""" - return "application/json" in self - - -class LanguageAccept(Accept): - """Like :class:`Accept` but with normalization for languages.""" - - def _value_matches(self, value, item): - def _normalize(language): - return _locale_delim_re.split(language.lower()) - - return item == "*" or _normalize(value) == _normalize(item) - - -class CharsetAccept(Accept): - """Like :class:`Accept` but with normalization for charsets.""" - - def _value_matches(self, value, item): - def _normalize(name): - try: - return codecs.lookup(name).name - except LookupError: - return name.lower() - - return item == "*" or _normalize(value) == _normalize(item) - - -def cache_property(key, empty, type): - """Return a new property object for a cache header. Useful if you - want to add support for a cache extension in a subclass.""" - return property( - lambda x: x._get_cache_value(key, empty, type), - lambda x, v: x._set_cache_value(key, v, type), - lambda x: x._del_cache_value(key), - "accessor for %r" % key, - ) - - -class _CacheControl(UpdateDictMixin, dict): - """Subclass of a dict that stores values for a Cache-Control header. It - has accessors for all the cache-control directives specified in RFC 2616. - The class does not differentiate between request and response directives. - - Because the cache-control directives in the HTTP header use dashes the - python descriptors use underscores for that. - - To get a header of the :class:`CacheControl` object again you can convert - the object into a string or call the :meth:`to_header` method. If you plan - to subclass it and add your own items have a look at the sourcecode for - that class. - - .. versionchanged:: 0.4 - - Setting `no_cache` or `private` to boolean `True` will set the implicit - none-value which is ``*``: - - >>> cc = ResponseCacheControl() - >>> cc.no_cache = True - >>> cc - <ResponseCacheControl 'no-cache'> - >>> cc.no_cache - '*' - >>> cc.no_cache = None - >>> cc - <ResponseCacheControl ''> - - In versions before 0.5 the behavior documented here affected the now - no longer existing `CacheControl` class. - """ - - no_cache = cache_property("no-cache", "*", None) - no_store = cache_property("no-store", None, bool) - max_age = cache_property("max-age", -1, int) - no_transform = cache_property("no-transform", None, None) - - def __init__(self, values=(), on_update=None): - dict.__init__(self, values or ()) - self.on_update = on_update - self.provided = values is not None - - def _get_cache_value(self, key, empty, type): - """Used internally by the accessor properties.""" - if type is bool: - return key in self - if key in self: - value = self[key] - if value is None: - return empty - elif type is not None: - try: - value = type(value) - except ValueError: - pass - return value - - def _set_cache_value(self, key, value, type): - """Used internally by the accessor properties.""" - if type is bool: - if value: - self[key] = None - else: - self.pop(key, None) - else: - if value is None: - self.pop(key) - elif value is True: - self[key] = None - else: - self[key] = value - - def _del_cache_value(self, key): - """Used internally by the accessor properties.""" - if key in self: - del self[key] - - def to_header(self): - """Convert the stored values into a cache control header.""" - return dump_header(self) - - def __str__(self): - return self.to_header() - - def __repr__(self): - return "<%s %s>" % ( - self.__class__.__name__, - " ".join("%s=%r" % (k, v) for k, v in sorted(self.items())), - ) - - -class RequestCacheControl(ImmutableDictMixin, _CacheControl): - """A cache control for requests. This is immutable and gives access - to all the request-relevant cache control headers. - - To get a header of the :class:`RequestCacheControl` object again you can - convert the object into a string or call the :meth:`to_header` method. If - you plan to subclass it and add your own items have a look at the sourcecode - for that class. - - .. versionadded:: 0.5 - In previous versions a `CacheControl` class existed that was used - both for request and response. - """ - - max_stale = cache_property("max-stale", "*", int) - min_fresh = cache_property("min-fresh", "*", int) - no_transform = cache_property("no-transform", None, None) - only_if_cached = cache_property("only-if-cached", None, bool) - - -class ResponseCacheControl(_CacheControl): - """A cache control for responses. Unlike :class:`RequestCacheControl` - this is mutable and gives access to response-relevant cache control - headers. - - To get a header of the :class:`ResponseCacheControl` object again you can - convert the object into a string or call the :meth:`to_header` method. If - you plan to subclass it and add your own items have a look at the sourcecode - for that class. - - .. versionadded:: 0.5 - In previous versions a `CacheControl` class existed that was used - both for request and response. - """ - - public = cache_property("public", None, bool) - private = cache_property("private", "*", None) - must_revalidate = cache_property("must-revalidate", None, bool) - proxy_revalidate = cache_property("proxy-revalidate", None, bool) - s_maxage = cache_property("s-maxage", None, None) - - -# attach cache_property to the _CacheControl as staticmethod -# so that others can reuse it. -_CacheControl.cache_property = staticmethod(cache_property) - - -class CallbackDict(UpdateDictMixin, dict): - """A dict that calls a function passed every time something is changed. - The function is passed the dict instance. - """ - - def __init__(self, initial=None, on_update=None): - dict.__init__(self, initial or ()) - self.on_update = on_update - - def __repr__(self): - return "<%s %s>" % (self.__class__.__name__, dict.__repr__(self)) - - -class HeaderSet(collections_abc.MutableSet): - """Similar to the :class:`ETags` class this implements a set-like structure. - Unlike :class:`ETags` this is case insensitive and used for vary, allow, and - content-language headers. - - If not constructed using the :func:`parse_set_header` function the - instantiation works like this: - - >>> hs = HeaderSet(['foo', 'bar', 'baz']) - >>> hs - HeaderSet(['foo', 'bar', 'baz']) - """ - - def __init__(self, headers=None, on_update=None): - self._headers = list(headers or ()) - self._set = set([x.lower() for x in self._headers]) - self.on_update = on_update - - def add(self, header): - """Add a new header to the set.""" - self.update((header,)) - - def remove(self, header): - """Remove a header from the set. This raises an :exc:`KeyError` if the - header is not in the set. - - .. versionchanged:: 0.5 - In older versions a :exc:`IndexError` was raised instead of a - :exc:`KeyError` if the object was missing. - - :param header: the header to be removed. - """ - key = header.lower() - if key not in self._set: - raise KeyError(header) - self._set.remove(key) - for idx, key in enumerate(self._headers): - if key.lower() == header: - del self._headers[idx] - break - if self.on_update is not None: - self.on_update(self) - - def update(self, iterable): - """Add all the headers from the iterable to the set. - - :param iterable: updates the set with the items from the iterable. - """ - inserted_any = False - for header in iterable: - key = header.lower() - if key not in self._set: - self._headers.append(header) - self._set.add(key) - inserted_any = True - if inserted_any and self.on_update is not None: - self.on_update(self) - - def discard(self, header): - """Like :meth:`remove` but ignores errors. - - :param header: the header to be discarded. - """ - try: - return self.remove(header) - except KeyError: - pass - - def find(self, header): - """Return the index of the header in the set or return -1 if not found. - - :param header: the header to be looked up. - """ - header = header.lower() - for idx, item in enumerate(self._headers): - if item.lower() == header: - return idx - return -1 - - def index(self, header): - """Return the index of the header in the set or raise an - :exc:`IndexError`. - - :param header: the header to be looked up. - """ - rv = self.find(header) - if rv < 0: - raise IndexError(header) - return rv - - def clear(self): - """Clear the set.""" - self._set.clear() - del self._headers[:] - if self.on_update is not None: - self.on_update(self) - - def as_set(self, preserve_casing=False): - """Return the set as real python set type. When calling this, all - the items are converted to lowercase and the ordering is lost. - - :param preserve_casing: if set to `True` the items in the set returned - will have the original case like in the - :class:`HeaderSet`, otherwise they will - be lowercase. - """ - if preserve_casing: - return set(self._headers) - return set(self._set) - - def to_header(self): - """Convert the header set into an HTTP header string.""" - return ", ".join(map(quote_header_value, self._headers)) - - def __getitem__(self, idx): - return self._headers[idx] - - def __delitem__(self, idx): - rv = self._headers.pop(idx) - self._set.remove(rv.lower()) - if self.on_update is not None: - self.on_update(self) - - def __setitem__(self, idx, value): - old = self._headers[idx] - self._set.remove(old.lower()) - self._headers[idx] = value - self._set.add(value.lower()) - if self.on_update is not None: - self.on_update(self) - - def __contains__(self, header): - return header.lower() in self._set - - def __len__(self): - return len(self._set) - - def __iter__(self): - return iter(self._headers) - - def __nonzero__(self): - return bool(self._set) - - def __str__(self): - return self.to_header() - - def __repr__(self): - return "%s(%r)" % (self.__class__.__name__, self._headers) - - -class ETags(collections_abc.Container, collections_abc.Iterable): - """A set that can be used to check if one etag is present in a collection - of etags. - """ - - def __init__(self, strong_etags=None, weak_etags=None, star_tag=False): - self._strong = frozenset(not star_tag and strong_etags or ()) - self._weak = frozenset(weak_etags or ()) - self.star_tag = star_tag - - def as_set(self, include_weak=False): - """Convert the `ETags` object into a python set. Per default all the - weak etags are not part of this set.""" - rv = set(self._strong) - if include_weak: - rv.update(self._weak) - return rv - - def is_weak(self, etag): - """Check if an etag is weak.""" - return etag in self._weak - - def is_strong(self, etag): - """Check if an etag is strong.""" - return etag in self._strong - - def contains_weak(self, etag): - """Check if an etag is part of the set including weak and strong tags.""" - return self.is_weak(etag) or self.contains(etag) - - def contains(self, etag): - """Check if an etag is part of the set ignoring weak tags. - It is also possible to use the ``in`` operator. - """ - if self.star_tag: - return True - return self.is_strong(etag) - - def contains_raw(self, etag): - """When passed a quoted tag it will check if this tag is part of the - set. If the tag is weak it is checked against weak and strong tags, - otherwise strong only.""" - etag, weak = unquote_etag(etag) - if weak: - return self.contains_weak(etag) - return self.contains(etag) - - def to_header(self): - """Convert the etags set into a HTTP header string.""" - if self.star_tag: - return "*" - return ", ".join( - ['"%s"' % x for x in self._strong] + ['W/"%s"' % x for x in self._weak] - ) - - def __call__(self, etag=None, data=None, include_weak=False): - if [etag, data].count(None) != 1: - raise TypeError("either tag or data required, but at least one") - if etag is None: - etag = generate_etag(data) - if include_weak: - if etag in self._weak: - return True - return etag in self._strong - - def __bool__(self): - return bool(self.star_tag or self._strong or self._weak) - - __nonzero__ = __bool__ - - def __str__(self): - return self.to_header() - - def __iter__(self): - return iter(self._strong) - - def __contains__(self, etag): - return self.contains(etag) - - def __repr__(self): - return "<%s %r>" % (self.__class__.__name__, str(self)) - - -class IfRange(object): - """Very simple object that represents the `If-Range` header in parsed - form. It will either have neither a etag or date or one of either but - never both. - - .. versionadded:: 0.7 - """ - - def __init__(self, etag=None, date=None): - #: The etag parsed and unquoted. Ranges always operate on strong - #: etags so the weakness information is not necessary. - self.etag = etag - #: The date in parsed format or `None`. - self.date = date - - def to_header(self): - """Converts the object back into an HTTP header.""" - if self.date is not None: - return http_date(self.date) - if self.etag is not None: - return quote_etag(self.etag) - return "" - - def __str__(self): - return self.to_header() - - def __repr__(self): - return "<%s %r>" % (self.__class__.__name__, str(self)) - - -class Range(object): - """Represents a ``Range`` header. All methods only support only - bytes as the unit. Stores a list of ranges if given, but the methods - only work if only one range is provided. - - :raise ValueError: If the ranges provided are invalid. - - .. versionchanged:: 0.15 - The ranges passed in are validated. - - .. versionadded:: 0.7 - """ - - def __init__(self, units, ranges): - #: The units of this range. Usually "bytes". - self.units = units - #: A list of ``(begin, end)`` tuples for the range header provided. - #: The ranges are non-inclusive. - self.ranges = ranges - - for start, end in ranges: - if start is None or (end is not None and (start < 0 or start >= end)): - raise ValueError("{} is not a valid range.".format((start, end))) - - def range_for_length(self, length): - """If the range is for bytes, the length is not None and there is - exactly one range and it is satisfiable it returns a ``(start, stop)`` - tuple, otherwise `None`. - """ - if self.units != "bytes" or length is None or len(self.ranges) != 1: - return None - start, end = self.ranges[0] - if end is None: - end = length - if start < 0: - start += length - if is_byte_range_valid(start, end, length): - return start, min(end, length) - - def make_content_range(self, length): - """Creates a :class:`~werkzeug.datastructures.ContentRange` object - from the current range and given content length. - """ - rng = self.range_for_length(length) - if rng is not None: - return ContentRange(self.units, rng[0], rng[1], length) - - def to_header(self): - """Converts the object back into an HTTP header.""" - ranges = [] - for begin, end in self.ranges: - if end is None: - ranges.append("%s-" % begin if begin >= 0 else str(begin)) - else: - ranges.append("%s-%s" % (begin, end - 1)) - return "%s=%s" % (self.units, ",".join(ranges)) - - def to_content_range_header(self, length): - """Converts the object into `Content-Range` HTTP header, - based on given length - """ - range_for_length = self.range_for_length(length) - if range_for_length is not None: - return "%s %d-%d/%d" % ( - self.units, - range_for_length[0], - range_for_length[1] - 1, - length, - ) - return None - - def __str__(self): - return self.to_header() - - def __repr__(self): - return "<%s %r>" % (self.__class__.__name__, str(self)) - - -class ContentRange(object): - """Represents the content range header. - - .. versionadded:: 0.7 - """ - - def __init__(self, units, start, stop, length=None, on_update=None): - assert is_byte_range_valid(start, stop, length), "Bad range provided" - self.on_update = on_update - self.set(start, stop, length, units) - - def _callback_property(name): # noqa: B902 - def fget(self): - return getattr(self, name) - - def fset(self, value): - setattr(self, name, value) - if self.on_update is not None: - self.on_update(self) - - return property(fget, fset) - - #: The units to use, usually "bytes" - units = _callback_property("_units") - #: The start point of the range or `None`. - start = _callback_property("_start") - #: The stop point of the range (non-inclusive) or `None`. Can only be - #: `None` if also start is `None`. - stop = _callback_property("_stop") - #: The length of the range or `None`. - length = _callback_property("_length") - del _callback_property - - def set(self, start, stop, length=None, units="bytes"): - """Simple method to update the ranges.""" - assert is_byte_range_valid(start, stop, length), "Bad range provided" - self._units = units - self._start = start - self._stop = stop - self._length = length - if self.on_update is not None: - self.on_update(self) - - def unset(self): - """Sets the units to `None` which indicates that the header should - no longer be used. - """ - self.set(None, None, units=None) - - def to_header(self): - if self.units is None: - return "" - if self.length is None: - length = "*" - else: - length = self.length - if self.start is None: - return "%s */%s" % (self.units, length) - return "%s %s-%s/%s" % (self.units, self.start, self.stop - 1, length) - - def __nonzero__(self): - return self.units is not None - - __bool__ = __nonzero__ - - def __str__(self): - return self.to_header() - - def __repr__(self): - return "<%s %r>" % (self.__class__.__name__, str(self)) - - -class Authorization(ImmutableDictMixin, dict): - """Represents an `Authorization` header sent by the client. You should - not create this kind of object yourself but use it when it's returned by - the `parse_authorization_header` function. - - This object is a dict subclass and can be altered by setting dict items - but it should be considered immutable as it's returned by the client and - not meant for modifications. - - .. versionchanged:: 0.5 - This object became immutable. - """ - - def __init__(self, auth_type, data=None): - dict.__init__(self, data or {}) - self.type = auth_type - - username = property( - lambda self: self.get("username"), - doc=""" - The username transmitted. This is set for both basic and digest - auth all the time.""", - ) - password = property( - lambda self: self.get("password"), - doc=""" - When the authentication type is basic this is the password - transmitted by the client, else `None`.""", - ) - realm = property( - lambda self: self.get("realm"), - doc=""" - This is the server realm sent back for HTTP digest auth.""", - ) - nonce = property( - lambda self: self.get("nonce"), - doc=""" - The nonce the server sent for digest auth, sent back by the client. - A nonce should be unique for every 401 response for HTTP digest - auth.""", - ) - uri = property( - lambda self: self.get("uri"), - doc=""" - The URI from Request-URI of the Request-Line; duplicated because - proxies are allowed to change the Request-Line in transit. HTTP - digest auth only.""", - ) - nc = property( - lambda self: self.get("nc"), - doc=""" - The nonce count value transmitted by clients if a qop-header is - also transmitted. HTTP digest auth only.""", - ) - cnonce = property( - lambda self: self.get("cnonce"), - doc=""" - If the server sent a qop-header in the ``WWW-Authenticate`` - header, the client has to provide this value for HTTP digest auth. - See the RFC for more details.""", - ) - response = property( - lambda self: self.get("response"), - doc=""" - A string of 32 hex digits computed as defined in RFC 2617, which - proves that the user knows a password. Digest auth only.""", - ) - opaque = property( - lambda self: self.get("opaque"), - doc=""" - The opaque header from the server returned unchanged by the client. - It is recommended that this string be base64 or hexadecimal data. - Digest auth only.""", - ) - qop = property( - lambda self: self.get("qop"), - doc=""" - Indicates what "quality of protection" the client has applied to - the message for HTTP digest auth. Note that this is a single token, - not a quoted list of alternatives as in WWW-Authenticate.""", - ) - - -class WWWAuthenticate(UpdateDictMixin, dict): - """Provides simple access to `WWW-Authenticate` headers.""" - - #: list of keys that require quoting in the generated header - _require_quoting = frozenset(["domain", "nonce", "opaque", "realm", "qop"]) - - def __init__(self, auth_type=None, values=None, on_update=None): - dict.__init__(self, values or ()) - if auth_type: - self["__auth_type__"] = auth_type - self.on_update = on_update - - def set_basic(self, realm="authentication required"): - """Clear the auth info and enable basic auth.""" - dict.clear(self) - dict.update(self, {"__auth_type__": "basic", "realm": realm}) - if self.on_update: - self.on_update(self) - - def set_digest( - self, realm, nonce, qop=("auth",), opaque=None, algorithm=None, stale=False - ): - """Clear the auth info and enable digest auth.""" - d = { - "__auth_type__": "digest", - "realm": realm, - "nonce": nonce, - "qop": dump_header(qop), - } - if stale: - d["stale"] = "TRUE" - if opaque is not None: - d["opaque"] = opaque - if algorithm is not None: - d["algorithm"] = algorithm - dict.clear(self) - dict.update(self, d) - if self.on_update: - self.on_update(self) - - def to_header(self): - """Convert the stored values into a WWW-Authenticate header.""" - d = dict(self) - auth_type = d.pop("__auth_type__", None) or "basic" - return "%s %s" % ( - auth_type.title(), - ", ".join( - [ - "%s=%s" - % ( - key, - quote_header_value( - value, allow_token=key not in self._require_quoting - ), - ) - for key, value in iteritems(d) - ] - ), - ) - - def __str__(self): - return self.to_header() - - def __repr__(self): - return "<%s %r>" % (self.__class__.__name__, self.to_header()) - - def auth_property(name, doc=None): # noqa: B902 - """A static helper function for subclasses to add extra authentication - system properties onto a class:: - - class FooAuthenticate(WWWAuthenticate): - special_realm = auth_property('special_realm') - - For more information have a look at the sourcecode to see how the - regular properties (:attr:`realm` etc.) are implemented. - """ - - def _set_value(self, value): - if value is None: - self.pop(name, None) - else: - self[name] = str(value) - - return property(lambda x: x.get(name), _set_value, doc=doc) - - def _set_property(name, doc=None): # noqa: B902 - def fget(self): - def on_update(header_set): - if not header_set and name in self: - del self[name] - elif header_set: - self[name] = header_set.to_header() - - return parse_set_header(self.get(name), on_update) - - return property(fget, doc=doc) - - type = auth_property( - "__auth_type__", - doc="""The type of the auth mechanism. HTTP currently specifies - ``Basic`` and ``Digest``.""", - ) - realm = auth_property( - "realm", - doc="""A string to be displayed to users so they know which - username and password to use. This string should contain at - least the name of the host performing the authentication and - might additionally indicate the collection of users who might - have access.""", - ) - domain = _set_property( - "domain", - doc="""A list of URIs that define the protection space. If a URI - is an absolute path, it is relative to the canonical root URL of - the server being accessed.""", - ) - nonce = auth_property( - "nonce", - doc=""" - A server-specified data string which should be uniquely generated - each time a 401 response is made. It is recommended that this - string be base64 or hexadecimal data.""", - ) - opaque = auth_property( - "opaque", - doc="""A string of data, specified by the server, which should - be returned by the client unchanged in the Authorization header - of subsequent requests with URIs in the same protection space. - It is recommended that this string be base64 or hexadecimal - data.""", - ) - algorithm = auth_property( - "algorithm", - doc="""A string indicating a pair of algorithms used to produce - the digest and a checksum. If this is not present it is assumed - to be "MD5". If the algorithm is not understood, the challenge - should be ignored (and a different one used, if there is more - than one).""", - ) - qop = _set_property( - "qop", - doc="""A set of quality-of-privacy directives such as auth and - auth-int.""", - ) - - @property - def stale(self): - """A flag, indicating that the previous request from the client - was rejected because the nonce value was stale. - """ - val = self.get("stale") - if val is not None: - return val.lower() == "true" - - @stale.setter - def stale(self, value): - if value is None: - self.pop("stale", None) - else: - self["stale"] = "TRUE" if value else "FALSE" - - auth_property = staticmethod(auth_property) - del _set_property - - -class FileStorage(object): - """The :class:`FileStorage` class is a thin wrapper over incoming files. - It is used by the request object to represent uploaded files. All the - attributes of the wrapper stream are proxied by the file storage so - it's possible to do ``storage.read()`` instead of the long form - ``storage.stream.read()``. - """ - - def __init__( - self, - stream=None, - filename=None, - name=None, - content_type=None, - content_length=None, - headers=None, - ): - self.name = name - self.stream = stream or BytesIO() - - # if no filename is provided we can attempt to get the filename - # from the stream object passed. There we have to be careful to - # skip things like <fdopen>, <stderr> etc. Python marks these - # special filenames with angular brackets. - if filename is None: - filename = getattr(stream, "name", None) - s = make_literal_wrapper(filename) - if filename and filename[0] == s("<") and filename[-1] == s(">"): - filename = None - - # On Python 3 we want to make sure the filename is always unicode. - # This might not be if the name attribute is bytes due to the - # file being opened from the bytes API. - if not PY2 and isinstance(filename, bytes): - filename = filename.decode(get_filesystem_encoding(), "replace") - - self.filename = filename - if headers is None: - headers = Headers() - self.headers = headers - if content_type is not None: - headers["Content-Type"] = content_type - if content_length is not None: - headers["Content-Length"] = str(content_length) - - def _parse_content_type(self): - if not hasattr(self, "_parsed_content_type"): - self._parsed_content_type = parse_options_header(self.content_type) - - @property - def content_type(self): - """The content-type sent in the header. Usually not available""" - return self.headers.get("content-type") - - @property - def content_length(self): - """The content-length sent in the header. Usually not available""" - return int(self.headers.get("content-length") or 0) - - @property - def mimetype(self): - """Like :attr:`content_type`, but without parameters (eg, without - charset, type etc.) and always lowercase. For example if the content - type is ``text/HTML; charset=utf-8`` the mimetype would be - ``'text/html'``. - - .. versionadded:: 0.7 - """ - self._parse_content_type() - return self._parsed_content_type[0].lower() - - @property - def mimetype_params(self): - """The mimetype parameters as dict. For example if the content - type is ``text/html; charset=utf-8`` the params would be - ``{'charset': 'utf-8'}``. - - .. versionadded:: 0.7 - """ - self._parse_content_type() - return self._parsed_content_type[1] - - def save(self, dst, buffer_size=16384): - """Save the file to a destination path or file object. If the - destination is a file object you have to close it yourself after the - call. The buffer size is the number of bytes held in memory during - the copy process. It defaults to 16KB. - - For secure file saving also have a look at :func:`secure_filename`. - - :param dst: a filename or open file object the uploaded file - is saved to. - :param buffer_size: the size of the buffer. This works the same as - the `length` parameter of - :func:`shutil.copyfileobj`. - """ - from shutil import copyfileobj - - close_dst = False - if isinstance(dst, string_types): - dst = open(dst, "wb") - close_dst = True - try: - copyfileobj(self.stream, dst, buffer_size) - finally: - if close_dst: - dst.close() - - def close(self): - """Close the underlying file if possible.""" - try: - self.stream.close() - except Exception: - pass - - def __nonzero__(self): - return bool(self.filename) - - __bool__ = __nonzero__ - - def __getattr__(self, name): - try: - return getattr(self.stream, name) - except AttributeError: - # SpooledTemporaryFile doesn't implement IOBase, get the - # attribute from its backing file instead. - # https://github.com/python/cpython/pull/3249 - if hasattr(self.stream, "_file"): - return getattr(self.stream._file, name) - raise - - def __iter__(self): - return iter(self.stream) - - def __repr__(self): - return "<%s: %r (%r)>" % ( - self.__class__.__name__, - self.filename, - self.content_type, - ) - - -# circular dependencies -from . import exceptions -from .http import dump_header -from .http import dump_options_header -from .http import generate_etag -from .http import http_date -from .http import is_byte_range_valid -from .http import parse_options_header -from .http import parse_set_header -from .http import quote_etag -from .http import quote_header_value -from .http import unquote_etag diff --git a/python/werkzeug/exceptions.py b/python/werkzeug/exceptions.py deleted file mode 100644 index fb6528d..0000000 --- a/python/werkzeug/exceptions.py +++ /dev/null @@ -1,774 +0,0 @@ -# -*- coding: utf-8 -*- -""" - werkzeug.exceptions - ~~~~~~~~~~~~~~~~~~~ - - This module implements a number of Python exceptions you can raise from - within your views to trigger a standard non-200 response. - - - Usage Example - ------------- - - :: - - from werkzeug.wrappers import BaseRequest - from werkzeug.wsgi import responder - from werkzeug.exceptions import HTTPException, NotFound - - def view(request): - raise NotFound() - - @responder - def application(environ, start_response): - request = BaseRequest(environ) - try: - return view(request) - except HTTPException as e: - return e - - - As you can see from this example those exceptions are callable WSGI - applications. Because of Python 2.4 compatibility those do not extend - from the response objects but only from the python exception class. - - As a matter of fact they are not Werkzeug response objects. However you - can get a response object by calling ``get_response()`` on a HTTP - exception. - - Keep in mind that you have to pass an environment to ``get_response()`` - because some errors fetch additional information from the WSGI - environment. - - If you want to hook in a different exception page to say, a 404 status - code, you can add a second except for a specific subclass of an error:: - - @responder - def application(environ, start_response): - request = BaseRequest(environ) - try: - return view(request) - except NotFound, e: - return not_found(request) - except HTTPException, e: - return e - - - :copyright: 2007 Pallets - :license: BSD-3-Clause -""" -import sys - -import werkzeug - -# Because of bootstrapping reasons we need to manually patch ourselves -# onto our parent module. -werkzeug.exceptions = sys.modules[__name__] - -from ._compat import implements_to_string -from ._compat import integer_types -from ._compat import iteritems -from ._compat import text_type -from ._internal import _get_environ -from .wrappers import Response - - -@implements_to_string -class HTTPException(Exception): - """Baseclass for all HTTP exceptions. This exception can be called as WSGI - application to render a default error page or you can catch the subclasses - of it independently and render nicer error messages. - """ - - code = None - description = None - - def __init__(self, description=None, response=None): - super(Exception, self).__init__() - if description is not None: - self.description = description - self.response = response - - @classmethod - def wrap(cls, exception, name=None): - """Create an exception that is a subclass of the calling HTTP - exception and the ``exception`` argument. - - The first argument to the class will be passed to the - wrapped ``exception``, the rest to the HTTP exception. If - ``self.args`` is not empty, the wrapped exception message is - added to the HTTP exception description. - - .. versionchanged:: 0.15 - The description includes the wrapped exception message. - """ - - class newcls(cls, exception): - def __init__(self, arg=None, *args, **kwargs): - super(cls, self).__init__(*args, **kwargs) - - if arg is None: - exception.__init__(self) - else: - exception.__init__(self, arg) - - def get_description(self, environ=None): - out = super(cls, self).get_description(environ=environ) - - if self.args: - out += "<p><pre><code>{}: {}</code></pre></p>".format( - exception.__name__, escape(exception.__str__(self)) - ) - - return out - - newcls.__module__ = sys._getframe(1).f_globals.get("__name__") - newcls.__name__ = name or cls.__name__ + exception.__name__ - return newcls - - @property - def name(self): - """The status name.""" - return HTTP_STATUS_CODES.get(self.code, "Unknown Error") - - def get_description(self, environ=None): - """Get the description.""" - return u"<p>%s</p>" % escape(self.description) - - def get_body(self, environ=None): - """Get the HTML body.""" - return text_type( - ( - u'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">\n' - u"<title>%(code)s %(name)s</title>\n" - u"<h1>%(name)s</h1>\n" - u"%(description)s\n" - ) - % { - "code": self.code, - "name": escape(self.name), - "description": self.get_description(environ), - } - ) - - def get_headers(self, environ=None): - """Get a list of headers.""" - return [("Content-Type", "text/html")] - - def get_response(self, environ=None): - """Get a response object. If one was passed to the exception - it's returned directly. - - :param environ: the optional environ for the request. This - can be used to modify the response depending - on how the request looked like. - :return: a :class:`Response` object or a subclass thereof. - """ - if self.response is not None: - return self.response - if environ is not None: - environ = _get_environ(environ) - headers = self.get_headers(environ) - return Response(self.get_body(environ), self.code, headers) - - def __call__(self, environ, start_response): - """Call the exception as WSGI application. - - :param environ: the WSGI environment. - :param start_response: the response callable provided by the WSGI - server. - """ - response = self.get_response(environ) - return response(environ, start_response) - - def __str__(self): - code = self.code if self.code is not None else "???" - return "%s %s: %s" % (code, self.name, self.description) - - def __repr__(self): - code = self.code if self.code is not None else "???" - return "<%s '%s: %s'>" % (self.__class__.__name__, code, self.name) - - -class BadRequest(HTTPException): - """*400* `Bad Request` - - Raise if the browser sends something to the application the application - or server cannot handle. - """ - - code = 400 - description = ( - "The browser (or proxy) sent a request that this server could " - "not understand." - ) - - -class ClientDisconnected(BadRequest): - """Internal exception that is raised if Werkzeug detects a disconnected - client. Since the client is already gone at that point attempting to - send the error message to the client might not work and might ultimately - result in another exception in the server. Mainly this is here so that - it is silenced by default as far as Werkzeug is concerned. - - Since disconnections cannot be reliably detected and are unspecified - by WSGI to a large extent this might or might not be raised if a client - is gone. - - .. versionadded:: 0.8 - """ - - -class SecurityError(BadRequest): - """Raised if something triggers a security error. This is otherwise - exactly like a bad request error. - - .. versionadded:: 0.9 - """ - - -class BadHost(BadRequest): - """Raised if the submitted host is badly formatted. - - .. versionadded:: 0.11.2 - """ - - -class Unauthorized(HTTPException): - """*401* ``Unauthorized`` - - Raise if the user is not authorized to access a resource. - - The ``www_authenticate`` argument should be used to set the - ``WWW-Authenticate`` header. This is used for HTTP basic auth and - other schemes. Use :class:`~werkzeug.datastructures.WWWAuthenticate` - to create correctly formatted values. Strictly speaking a 401 - response is invalid if it doesn't provide at least one value for - this header, although real clients typically don't care. - - :param description: Override the default message used for the body - of the response. - :param www-authenticate: A single value, or list of values, for the - WWW-Authenticate header. - - .. versionchanged:: 0.15.3 - If the ``www_authenticate`` argument is not set, the - ``WWW-Authenticate`` header is not set. - - .. versionchanged:: 0.15.3 - The ``response`` argument was restored. - - .. versionchanged:: 0.15.1 - ``description`` was moved back as the first argument, restoring - its previous position. - - .. versionchanged:: 0.15.0 - ``www_authenticate`` was added as the first argument, ahead of - ``description``. - """ - - code = 401 - description = ( - "The server could not verify that you are authorized to access" - " the URL requested. You either supplied the wrong credentials" - " (e.g. a bad password), or your browser doesn't understand" - " how to supply the credentials required." - ) - - def __init__(self, description=None, response=None, www_authenticate=None): - HTTPException.__init__(self, description, response) - - if www_authenticate is not None: - if not isinstance(www_authenticate, (tuple, list)): - www_authenticate = (www_authenticate,) - - self.www_authenticate = www_authenticate - - def get_headers(self, environ=None): - headers = HTTPException.get_headers(self, environ) - if self.www_authenticate: - headers.append( - ("WWW-Authenticate", ", ".join([str(x) for x in self.www_authenticate])) - ) - return headers - - -class Forbidden(HTTPException): - """*403* `Forbidden` - - Raise if the user doesn't have the permission for the requested resource - but was authenticated. - """ - - code = 403 - description = ( - "You don't have the permission to access the requested" - " resource. It is either read-protected or not readable by the" - " server." - ) - - -class NotFound(HTTPException): - """*404* `Not Found` - - Raise if a resource does not exist and never existed. - """ - - code = 404 - description = ( - "The requested URL was not found on the server. If you entered" - " the URL manually please check your spelling and try again." - ) - - -class MethodNotAllowed(HTTPException): - """*405* `Method Not Allowed` - - Raise if the server used a method the resource does not handle. For - example `POST` if the resource is view only. Especially useful for REST. - - The first argument for this exception should be a list of allowed methods. - Strictly speaking the response would be invalid if you don't provide valid - methods in the header which you can do with that list. - """ - - code = 405 - description = "The method is not allowed for the requested URL." - - def __init__(self, valid_methods=None, description=None): - """Takes an optional list of valid http methods - starting with werkzeug 0.3 the list will be mandatory.""" - HTTPException.__init__(self, description) - self.valid_methods = valid_methods - - def get_headers(self, environ=None): - headers = HTTPException.get_headers(self, environ) - if self.valid_methods: - headers.append(("Allow", ", ".join(self.valid_methods))) - return headers - - -class NotAcceptable(HTTPException): - """*406* `Not Acceptable` - - Raise if the server can't return any content conforming to the - `Accept` headers of the client. - """ - - code = 406 - - description = ( - "The resource identified by the request is only capable of" - " generating response entities which have content" - " characteristics not acceptable according to the accept" - " headers sent in the request." - ) - - -class RequestTimeout(HTTPException): - """*408* `Request Timeout` - - Raise to signalize a timeout. - """ - - code = 408 - description = ( - "The server closed the network connection because the browser" - " didn't finish the request within the specified time." - ) - - -class Conflict(HTTPException): - """*409* `Conflict` - - Raise to signal that a request cannot be completed because it conflicts - with the current state on the server. - - .. versionadded:: 0.7 - """ - - code = 409 - description = ( - "A conflict happened while processing the request. The" - " resource might have been modified while the request was being" - " processed." - ) - - -class Gone(HTTPException): - """*410* `Gone` - - Raise if a resource existed previously and went away without new location. - """ - - code = 410 - description = ( - "The requested URL is no longer available on this server and" - " there is no forwarding address. If you followed a link from a" - " foreign page, please contact the author of this page." - ) - - -class LengthRequired(HTTPException): - """*411* `Length Required` - - Raise if the browser submitted data but no ``Content-Length`` header which - is required for the kind of processing the server does. - """ - - code = 411 - description = ( - "A request with this method requires a valid <code>Content-" - "Length</code> header." - ) - - -class PreconditionFailed(HTTPException): - """*412* `Precondition Failed` - - Status code used in combination with ``If-Match``, ``If-None-Match``, or - ``If-Unmodified-Since``. - """ - - code = 412 - description = ( - "The precondition on the request for the URL failed positive evaluation." - ) - - -class RequestEntityTooLarge(HTTPException): - """*413* `Request Entity Too Large` - - The status code one should return if the data submitted exceeded a given - limit. - """ - - code = 413 - description = "The data value transmitted exceeds the capacity limit." - - -class RequestURITooLarge(HTTPException): - """*414* `Request URI Too Large` - - Like *413* but for too long URLs. - """ - - code = 414 - description = ( - "The length of the requested URL exceeds the capacity limit for" - " this server. The request cannot be processed." - ) - - -class UnsupportedMediaType(HTTPException): - """*415* `Unsupported Media Type` - - The status code returned if the server is unable to handle the media type - the client transmitted. - """ - - code = 415 - description = ( - "The server does not support the media type transmitted in the request." - ) - - -class RequestedRangeNotSatisfiable(HTTPException): - """*416* `Requested Range Not Satisfiable` - - The client asked for an invalid part of the file. - - .. versionadded:: 0.7 - """ - - code = 416 - description = "The server cannot provide the requested range." - - def __init__(self, length=None, units="bytes", description=None): - """Takes an optional `Content-Range` header value based on ``length`` - parameter. - """ - HTTPException.__init__(self, description) - self.length = length - self.units = units - - def get_headers(self, environ=None): - headers = HTTPException.get_headers(self, environ) - if self.length is not None: - headers.append(("Content-Range", "%s */%d" % (self.units, self.length))) - return headers - - -class ExpectationFailed(HTTPException): - """*417* `Expectation Failed` - - The server cannot meet the requirements of the Expect request-header. - - .. versionadded:: 0.7 - """ - - code = 417 - description = "The server could not meet the requirements of the Expect header" - - -class ImATeapot(HTTPException): - """*418* `I'm a teapot` - - The server should return this if it is a teapot and someone attempted - to brew coffee with it. - - .. versionadded:: 0.7 - """ - - code = 418 - description = "This server is a teapot, not a coffee machine" - - -class UnprocessableEntity(HTTPException): - """*422* `Unprocessable Entity` - - Used if the request is well formed, but the instructions are otherwise - incorrect. - """ - - code = 422 - description = ( - "The request was well-formed but was unable to be followed due" - " to semantic errors." - ) - - -class Locked(HTTPException): - """*423* `Locked` - - Used if the resource that is being accessed is locked. - """ - - code = 423 - description = "The resource that is being accessed is locked." - - -class FailedDependency(HTTPException): - """*424* `Failed Dependency` - - Used if the method could not be performed on the resource - because the requested action depended on another action and that action failed. - """ - - code = 424 - description = ( - "The method could not be performed on the resource because the" - " requested action depended on another action and that action" - " failed." - ) - - -class PreconditionRequired(HTTPException): - """*428* `Precondition Required` - - The server requires this request to be conditional, typically to prevent - the lost update problem, which is a race condition between two or more - clients attempting to update a resource through PUT or DELETE. By requiring - each client to include a conditional header ("If-Match" or "If-Unmodified- - Since") with the proper value retained from a recent GET request, the - server ensures that each client has at least seen the previous revision of - the resource. - """ - - code = 428 - description = ( - "This request is required to be conditional; try using" - ' "If-Match" or "If-Unmodified-Since".' - ) - - -class TooManyRequests(HTTPException): - """*429* `Too Many Requests` - - The server is limiting the rate at which this user receives responses, and - this request exceeds that rate. (The server may use any convenient method - to identify users and their request rates). The server may include a - "Retry-After" header to indicate how long the user should wait before - retrying. - """ - - code = 429 - description = "This user has exceeded an allotted request count. Try again later." - - -class RequestHeaderFieldsTooLarge(HTTPException): - """*431* `Request Header Fields Too Large` - - The server refuses to process the request because the header fields are too - large. One or more individual fields may be too large, or the set of all - headers is too large. - """ - - code = 431 - description = "One or more header fields exceeds the maximum size." - - -class UnavailableForLegalReasons(HTTPException): - """*451* `Unavailable For Legal Reasons` - - This status code indicates that the server is denying access to the - resource as a consequence of a legal demand. - """ - - code = 451 - description = "Unavailable for legal reasons." - - -class InternalServerError(HTTPException): - """*500* `Internal Server Error` - - Raise if an internal server error occurred. This is a good fallback if an - unknown error occurred in the dispatcher. - """ - - code = 500 - description = ( - "The server encountered an internal error and was unable to" - " complete your request. Either the server is overloaded or" - " there is an error in the application." - ) - - -class NotImplemented(HTTPException): - """*501* `Not Implemented` - - Raise if the application does not support the action requested by the - browser. - """ - - code = 501 - description = "The server does not support the action requested by the browser." - - -class BadGateway(HTTPException): - """*502* `Bad Gateway` - - If you do proxying in your application you should return this status code - if you received an invalid response from the upstream server it accessed - in attempting to fulfill the request. - """ - - code = 502 - description = ( - "The proxy server received an invalid response from an upstream server." - ) - - -class ServiceUnavailable(HTTPException): - """*503* `Service Unavailable` - - Status code you should return if a service is temporarily unavailable. - """ - - code = 503 - description = ( - "The server is temporarily unable to service your request due" - " to maintenance downtime or capacity problems. Please try" - " again later." - ) - - -class GatewayTimeout(HTTPException): - """*504* `Gateway Timeout` - - Status code you should return if a connection to an upstream server - times out. - """ - - code = 504 - description = "The connection to an upstream server timed out." - - -class HTTPVersionNotSupported(HTTPException): - """*505* `HTTP Version Not Supported` - - The server does not support the HTTP protocol version used in the request. - """ - - code = 505 - description = ( - "The server does not support the HTTP protocol version used in the request." - ) - - -default_exceptions = {} -__all__ = ["HTTPException"] - - -def _find_exceptions(): - for _name, obj in iteritems(globals()): - try: - is_http_exception = issubclass(obj, HTTPException) - except TypeError: - is_http_exception = False - if not is_http_exception or obj.code is None: - continue - __all__.append(obj.__name__) - old_obj = default_exceptions.get(obj.code, None) - if old_obj is not None and issubclass(obj, old_obj): - continue - default_exceptions[obj.code] = obj - - -_find_exceptions() -del _find_exceptions - - -class Aborter(object): - """When passed a dict of code -> exception items it can be used as - callable that raises exceptions. If the first argument to the - callable is an integer it will be looked up in the mapping, if it's - a WSGI application it will be raised in a proxy exception. - - The rest of the arguments are forwarded to the exception constructor. - """ - - def __init__(self, mapping=None, extra=None): - if mapping is None: - mapping = default_exceptions - self.mapping = dict(mapping) - if extra is not None: - self.mapping.update(extra) - - def __call__(self, code, *args, **kwargs): - if not args and not kwargs and not isinstance(code, integer_types): - raise HTTPException(response=code) - if code not in self.mapping: - raise LookupError("no exception for %r" % code) - raise self.mapping[code](*args, **kwargs) - - -def abort(status, *args, **kwargs): - """Raises an :py:exc:`HTTPException` for the given status code or WSGI - application:: - - abort(404) # 404 Not Found - abort(Response('Hello World')) - - Can be passed a WSGI application or a status code. If a status code is - given it's looked up in the list of exceptions and will raise that - exception, if passed a WSGI application it will wrap it in a proxy WSGI - exception and raise that:: - - abort(404) - abort(Response('Hello World')) - - """ - return _aborter(status, *args, **kwargs) - - -_aborter = Aborter() - - -#: an exception that is used internally to signal both a key error and a -#: bad request. Used by a lot of the datastructures. -BadRequestKeyError = BadRequest.wrap(KeyError) - -# imported here because of circular dependencies of werkzeug.utils -from .http import HTTP_STATUS_CODES -from .utils import escape diff --git a/python/werkzeug/filesystem.py b/python/werkzeug/filesystem.py deleted file mode 100644 index d016cae..0000000 --- a/python/werkzeug/filesystem.py +++ /dev/null @@ -1,64 +0,0 @@ -# -*- coding: utf-8 -*- -""" - werkzeug.filesystem - ~~~~~~~~~~~~~~~~~~~ - - Various utilities for the local filesystem. - - :copyright: 2007 Pallets - :license: BSD-3-Clause -""" -import codecs -import sys -import warnings - -# We do not trust traditional unixes. -has_likely_buggy_unicode_filesystem = ( - sys.platform.startswith("linux") or "bsd" in sys.platform -) - - -def _is_ascii_encoding(encoding): - """Given an encoding this figures out if the encoding is actually ASCII (which - is something we don't actually want in most cases). This is necessary - because ASCII comes under many names such as ANSI_X3.4-1968. - """ - if encoding is None: - return False - try: - return codecs.lookup(encoding).name == "ascii" - except LookupError: - return False - - -class BrokenFilesystemWarning(RuntimeWarning, UnicodeWarning): - """The warning used by Werkzeug to signal a broken filesystem. Will only be - used once per runtime.""" - - -_warned_about_filesystem_encoding = False - - -def get_filesystem_encoding(): - """Returns the filesystem encoding that should be used. Note that this is - different from the Python understanding of the filesystem encoding which - might be deeply flawed. Do not use this value against Python's unicode APIs - because it might be different. See :ref:`filesystem-encoding` for the exact - behavior. - - The concept of a filesystem encoding in generally is not something you - should rely on. As such if you ever need to use this function except for - writing wrapper code reconsider. - """ - global _warned_about_filesystem_encoding - rv = sys.getfilesystemencoding() - if has_likely_buggy_unicode_filesystem and not rv or _is_ascii_encoding(rv): - if not _warned_about_filesystem_encoding: - warnings.warn( - "Detected a misconfigured UNIX filesystem: Will use" - " UTF-8 as filesystem encoding instead of {0!r}".format(rv), - BrokenFilesystemWarning, - ) - _warned_about_filesystem_encoding = True - return "utf-8" - return rv diff --git a/python/werkzeug/formparser.py b/python/werkzeug/formparser.py deleted file mode 100644 index 0ddc5c8..0000000 --- a/python/werkzeug/formparser.py +++ /dev/null @@ -1,586 +0,0 @@ -# -*- coding: utf-8 -*- -""" - werkzeug.formparser - ~~~~~~~~~~~~~~~~~~~ - - This module implements the form parsing. It supports url-encoded forms - as well as non-nested multipart uploads. - - :copyright: 2007 Pallets - :license: BSD-3-Clause -""" -import codecs -import re -from functools import update_wrapper -from itertools import chain -from itertools import repeat -from itertools import tee - -from ._compat import BytesIO -from ._compat import text_type -from ._compat import to_native -from .datastructures import FileStorage -from .datastructures import Headers -from .datastructures import MultiDict -from .http import parse_options_header -from .urls import url_decode_stream -from .wsgi import get_content_length -from .wsgi import get_input_stream -from .wsgi import make_line_iter - -# there are some platforms where SpooledTemporaryFile is not available. -# In that case we need to provide a fallback. -try: - from tempfile import SpooledTemporaryFile -except ImportError: - from tempfile import TemporaryFile - - SpooledTemporaryFile = None - - -#: an iterator that yields empty strings -_empty_string_iter = repeat("") - -#: a regular expression for multipart boundaries -_multipart_boundary_re = re.compile("^[ -~]{0,200}[!-~]$") - -#: supported http encodings that are also available in python we support -#: for multipart messages. -_supported_multipart_encodings = frozenset(["base64", "quoted-printable"]) - - -def default_stream_factory( - total_content_length, filename, content_type, content_length=None -): - """The stream factory that is used per default.""" - max_size = 1024 * 500 - if SpooledTemporaryFile is not None: - return SpooledTemporaryFile(max_size=max_size, mode="wb+") - if total_content_length is None or total_content_length > max_size: - return TemporaryFile("wb+") - return BytesIO() - - -def parse_form_data( - environ, - stream_factory=None, - charset="utf-8", - errors="replace", - max_form_memory_size=None, - max_content_length=None, - cls=None, - silent=True, -): - """Parse the form data in the environ and return it as tuple in the form - ``(stream, form, files)``. You should only call this method if the - transport method is `POST`, `PUT`, or `PATCH`. - - If the mimetype of the data transmitted is `multipart/form-data` the - files multidict will be filled with `FileStorage` objects. If the - mimetype is unknown the input stream is wrapped and returned as first - argument, else the stream is empty. - - This is a shortcut for the common usage of :class:`FormDataParser`. - - Have a look at :ref:`dealing-with-request-data` for more details. - - .. versionadded:: 0.5 - The `max_form_memory_size`, `max_content_length` and - `cls` parameters were added. - - .. versionadded:: 0.5.1 - The optional `silent` flag was added. - - :param environ: the WSGI environment to be used for parsing. - :param stream_factory: An optional callable that returns a new read and - writeable file descriptor. This callable works - the same as :meth:`~BaseResponse._get_file_stream`. - :param charset: The character set for URL and url encoded form data. - :param errors: The encoding error behavior. - :param max_form_memory_size: the maximum number of bytes to be accepted for - in-memory stored form data. If the data - exceeds the value specified an - :exc:`~exceptions.RequestEntityTooLarge` - exception is raised. - :param max_content_length: If this is provided and the transmitted data - is longer than this value an - :exc:`~exceptions.RequestEntityTooLarge` - exception is raised. - :param cls: an optional dict class to use. If this is not specified - or `None` the default :class:`MultiDict` is used. - :param silent: If set to False parsing errors will not be caught. - :return: A tuple in the form ``(stream, form, files)``. - """ - return FormDataParser( - stream_factory, - charset, - errors, - max_form_memory_size, - max_content_length, - cls, - silent, - ).parse_from_environ(environ) - - -def exhaust_stream(f): - """Helper decorator for methods that exhausts the stream on return.""" - - def wrapper(self, stream, *args, **kwargs): - try: - return f(self, stream, *args, **kwargs) - finally: - exhaust = getattr(stream, "exhaust", None) - if exhaust is not None: - exhaust() - else: - while 1: - chunk = stream.read(1024 * 64) - if not chunk: - break - - return update_wrapper(wrapper, f) - - -class FormDataParser(object): - """This class implements parsing of form data for Werkzeug. By itself - it can parse multipart and url encoded form data. It can be subclassed - and extended but for most mimetypes it is a better idea to use the - untouched stream and expose it as separate attributes on a request - object. - - .. versionadded:: 0.8 - - :param stream_factory: An optional callable that returns a new read and - writeable file descriptor. This callable works - the same as :meth:`~BaseResponse._get_file_stream`. - :param charset: The character set for URL and url encoded form data. - :param errors: The encoding error behavior. - :param max_form_memory_size: the maximum number of bytes to be accepted for - in-memory stored form data. If the data - exceeds the value specified an - :exc:`~exceptions.RequestEntityTooLarge` - exception is raised. - :param max_content_length: If this is provided and the transmitted data - is longer than this value an - :exc:`~exceptions.RequestEntityTooLarge` - exception is raised. - :param cls: an optional dict class to use. If this is not specified - or `None` the default :class:`MultiDict` is used. - :param silent: If set to False parsing errors will not be caught. - """ - - def __init__( - self, - stream_factory=None, - charset="utf-8", - errors="replace", - max_form_memory_size=None, - max_content_length=None, - cls=None, - silent=True, - ): - if stream_factory is None: - stream_factory = default_stream_factory - self.stream_factory = stream_factory - self.charset = charset - self.errors = errors - self.max_form_memory_size = max_form_memory_size - self.max_content_length = max_content_length - if cls is None: - cls = MultiDict - self.cls = cls - self.silent = silent - - def get_parse_func(self, mimetype, options): - return self.parse_functions.get(mimetype) - - def parse_from_environ(self, environ): - """Parses the information from the environment as form data. - - :param environ: the WSGI environment to be used for parsing. - :return: A tuple in the form ``(stream, form, files)``. - """ - content_type = environ.get("CONTENT_TYPE", "") - content_length = get_content_length(environ) - mimetype, options = parse_options_header(content_type) - return self.parse(get_input_stream(environ), mimetype, content_length, options) - - def parse(self, stream, mimetype, content_length, options=None): - """Parses the information from the given stream, mimetype, - content length and mimetype parameters. - - :param stream: an input stream - :param mimetype: the mimetype of the data - :param content_length: the content length of the incoming data - :param options: optional mimetype parameters (used for - the multipart boundary for instance) - :return: A tuple in the form ``(stream, form, files)``. - """ - if ( - self.max_content_length is not None - and content_length is not None - and content_length > self.max_content_length - ): - raise exceptions.RequestEntityTooLarge() - if options is None: - options = {} - - parse_func = self.get_parse_func(mimetype, options) - if parse_func is not None: - try: - return parse_func(self, stream, mimetype, content_length, options) - except ValueError: - if not self.silent: - raise - - return stream, self.cls(), self.cls() - - @exhaust_stream - def _parse_multipart(self, stream, mimetype, content_length, options): - parser = MultiPartParser( - self.stream_factory, - self.charset, - self.errors, - max_form_memory_size=self.max_form_memory_size, - cls=self.cls, - ) - boundary = options.get("boundary") - if boundary is None: - raise ValueError("Missing boundary") - if isinstance(boundary, text_type): - boundary = boundary.encode("ascii") - form, files = parser.parse(stream, boundary, content_length) - return stream, form, files - - @exhaust_stream - def _parse_urlencoded(self, stream, mimetype, content_length, options): - if ( - self.max_form_memory_size is not None - and content_length is not None - and content_length > self.max_form_memory_size - ): - raise exceptions.RequestEntityTooLarge() - form = url_decode_stream(stream, self.charset, errors=self.errors, cls=self.cls) - return stream, form, self.cls() - - #: mapping of mimetypes to parsing functions - parse_functions = { - "multipart/form-data": _parse_multipart, - "application/x-www-form-urlencoded": _parse_urlencoded, - "application/x-url-encoded": _parse_urlencoded, - } - - -def is_valid_multipart_boundary(boundary): - """Checks if the string given is a valid multipart boundary.""" - return _multipart_boundary_re.match(boundary) is not None - - -def _line_parse(line): - """Removes line ending characters and returns a tuple (`stripped_line`, - `is_terminated`). - """ - if line[-2:] in ["\r\n", b"\r\n"]: - return line[:-2], True - elif line[-1:] in ["\r", "\n", b"\r", b"\n"]: - return line[:-1], True - return line, False - - -def parse_multipart_headers(iterable): - """Parses multipart headers from an iterable that yields lines (including - the trailing newline symbol). The iterable has to be newline terminated. - - The iterable will stop at the line where the headers ended so it can be - further consumed. - - :param iterable: iterable of strings that are newline terminated - """ - result = [] - for line in iterable: - line = to_native(line) - line, line_terminated = _line_parse(line) - if not line_terminated: - raise ValueError("unexpected end of line in multipart header") - if not line: - break - elif line[0] in " \t" and result: - key, value = result[-1] - result[-1] = (key, value + "\n " + line[1:]) - else: - parts = line.split(":", 1) - if len(parts) == 2: - result.append((parts[0].strip(), parts[1].strip())) - - # we link the list to the headers, no need to create a copy, the - # list was not shared anyways. - return Headers(result) - - -_begin_form = "begin_form" -_begin_file = "begin_file" -_cont = "cont" -_end = "end" - - -class MultiPartParser(object): - def __init__( - self, - stream_factory=None, - charset="utf-8", - errors="replace", - max_form_memory_size=None, - cls=None, - buffer_size=64 * 1024, - ): - self.charset = charset - self.errors = errors - self.max_form_memory_size = max_form_memory_size - self.stream_factory = ( - default_stream_factory if stream_factory is None else stream_factory - ) - self.cls = MultiDict if cls is None else cls - - # make sure the buffer size is divisible by four so that we can base64 - # decode chunk by chunk - assert buffer_size % 4 == 0, "buffer size has to be divisible by 4" - # also the buffer size has to be at least 1024 bytes long or long headers - # will freak out the system - assert buffer_size >= 1024, "buffer size has to be at least 1KB" - - self.buffer_size = buffer_size - - def _fix_ie_filename(self, filename): - """Internet Explorer 6 transmits the full file name if a file is - uploaded. This function strips the full path if it thinks the - filename is Windows-like absolute. - """ - if filename[1:3] == ":\\" or filename[:2] == "\\\\": - return filename.split("\\")[-1] - return filename - - def _find_terminator(self, iterator): - """The terminator might have some additional newlines before it. - There is at least one application that sends additional newlines - before headers (the python setuptools package). - """ - for line in iterator: - if not line: - break - line = line.strip() - if line: - return line - return b"" - - def fail(self, message): - raise ValueError(message) - - def get_part_encoding(self, headers): - transfer_encoding = headers.get("content-transfer-encoding") - if ( - transfer_encoding is not None - and transfer_encoding in _supported_multipart_encodings - ): - return transfer_encoding - - def get_part_charset(self, headers): - # Figure out input charset for current part - content_type = headers.get("content-type") - if content_type: - mimetype, ct_params = parse_options_header(content_type) - return ct_params.get("charset", self.charset) - return self.charset - - def start_file_streaming(self, filename, headers, total_content_length): - if isinstance(filename, bytes): - filename = filename.decode(self.charset, self.errors) - filename = self._fix_ie_filename(filename) - content_type = headers.get("content-type") - try: - content_length = int(headers["content-length"]) - except (KeyError, ValueError): - content_length = 0 - container = self.stream_factory( - total_content_length=total_content_length, - filename=filename, - content_type=content_type, - content_length=content_length, - ) - return filename, container - - def in_memory_threshold_reached(self, bytes): - raise exceptions.RequestEntityTooLarge() - - def validate_boundary(self, boundary): - if not boundary: - self.fail("Missing boundary") - if not is_valid_multipart_boundary(boundary): - self.fail("Invalid boundary: %s" % boundary) - if len(boundary) > self.buffer_size: # pragma: no cover - # this should never happen because we check for a minimum size - # of 1024 and boundaries may not be longer than 200. The only - # situation when this happens is for non debug builds where - # the assert is skipped. - self.fail("Boundary longer than buffer size") - - def parse_lines(self, file, boundary, content_length, cap_at_buffer=True): - """Generate parts of - ``('begin_form', (headers, name))`` - ``('begin_file', (headers, name, filename))`` - ``('cont', bytestring)`` - ``('end', None)`` - - Always obeys the grammar - parts = ( begin_form cont* end | - begin_file cont* end )* - """ - next_part = b"--" + boundary - last_part = next_part + b"--" - - iterator = chain( - make_line_iter( - file, - limit=content_length, - buffer_size=self.buffer_size, - cap_at_buffer=cap_at_buffer, - ), - _empty_string_iter, - ) - - terminator = self._find_terminator(iterator) - - if terminator == last_part: - return - elif terminator != next_part: - self.fail("Expected boundary at start of multipart data") - - while terminator != last_part: - headers = parse_multipart_headers(iterator) - - disposition = headers.get("content-disposition") - if disposition is None: - self.fail("Missing Content-Disposition header") - disposition, extra = parse_options_header(disposition) - transfer_encoding = self.get_part_encoding(headers) - name = extra.get("name") - filename = extra.get("filename") - - # if no content type is given we stream into memory. A list is - # used as a temporary container. - if filename is None: - yield _begin_form, (headers, name) - - # otherwise we parse the rest of the headers and ask the stream - # factory for something we can write in. - else: - yield _begin_file, (headers, name, filename) - - buf = b"" - for line in iterator: - if not line: - self.fail("unexpected end of stream") - - if line[:2] == b"--": - terminator = line.rstrip() - if terminator in (next_part, last_part): - break - - if transfer_encoding is not None: - if transfer_encoding == "base64": - transfer_encoding = "base64_codec" - try: - line = codecs.decode(line, transfer_encoding) - except Exception: - self.fail("could not decode transfer encoded chunk") - - # we have something in the buffer from the last iteration. - # this is usually a newline delimiter. - if buf: - yield _cont, buf - buf = b"" - - # If the line ends with windows CRLF we write everything except - # the last two bytes. In all other cases however we write - # everything except the last byte. If it was a newline, that's - # fine, otherwise it does not matter because we will write it - # the next iteration. this ensures we do not write the - # final newline into the stream. That way we do not have to - # truncate the stream. However we do have to make sure that - # if something else than a newline is in there we write it - # out. - if line[-2:] == b"\r\n": - buf = b"\r\n" - cutoff = -2 - else: - buf = line[-1:] - cutoff = -1 - yield _cont, line[:cutoff] - - else: # pragma: no cover - raise ValueError("unexpected end of part") - - # if we have a leftover in the buffer that is not a newline - # character we have to flush it, otherwise we will chop of - # certain values. - if buf not in (b"", b"\r", b"\n", b"\r\n"): - yield _cont, buf - - yield _end, None - - def parse_parts(self, file, boundary, content_length): - """Generate ``('file', (name, val))`` and - ``('form', (name, val))`` parts. - """ - in_memory = 0 - - for ellt, ell in self.parse_lines(file, boundary, content_length): - if ellt == _begin_file: - headers, name, filename = ell - is_file = True - guard_memory = False - filename, container = self.start_file_streaming( - filename, headers, content_length - ) - _write = container.write - - elif ellt == _begin_form: - headers, name = ell - is_file = False - container = [] - _write = container.append - guard_memory = self.max_form_memory_size is not None - - elif ellt == _cont: - _write(ell) - # if we write into memory and there is a memory size limit we - # count the number of bytes in memory and raise an exception if - # there is too much data in memory. - if guard_memory: - in_memory += len(ell) - if in_memory > self.max_form_memory_size: - self.in_memory_threshold_reached(in_memory) - - elif ellt == _end: - if is_file: - container.seek(0) - yield ( - "file", - (name, FileStorage(container, filename, name, headers=headers)), - ) - else: - part_charset = self.get_part_charset(headers) - yield ( - "form", - (name, b"".join(container).decode(part_charset, self.errors)), - ) - - def parse(self, file, boundary, content_length): - formstream, filestream = tee( - self.parse_parts(file, boundary, content_length), 2 - ) - form = (p[1] for p in formstream if p[0] == "form") - files = (p[1] for p in filestream if p[0] == "file") - return self.cls(form), self.cls(files) - - -from . import exceptions diff --git a/python/werkzeug/http.py b/python/werkzeug/http.py deleted file mode 100644 index af32007..0000000 --- a/python/werkzeug/http.py +++ /dev/null @@ -1,1303 +0,0 @@ -# -*- coding: utf-8 -*- -""" - werkzeug.http - ~~~~~~~~~~~~~ - - Werkzeug comes with a bunch of utilities that help Werkzeug to deal with - HTTP data. Most of the classes and functions provided by this module are - used by the wrappers, but they are useful on their own, too, especially if - the response and request objects are not used. - - This covers some of the more HTTP centric features of WSGI, some other - utilities such as cookie handling are documented in the `werkzeug.utils` - module. - - - :copyright: 2007 Pallets - :license: BSD-3-Clause -""" -import base64 -import re -import warnings -from datetime import datetime -from datetime import timedelta -from hashlib import md5 -from time import gmtime -from time import time - -from ._compat import integer_types -from ._compat import iteritems -from ._compat import PY2 -from ._compat import string_types -from ._compat import text_type -from ._compat import to_bytes -from ._compat import to_unicode -from ._compat import try_coerce_native -from ._internal import _cookie_parse_impl -from ._internal import _cookie_quote -from ._internal import _make_cookie_domain - -try: - from email.utils import parsedate_tz -except ImportError: - from email.Utils import parsedate_tz - -try: - from urllib.request import parse_http_list as _parse_list_header - from urllib.parse import unquote_to_bytes as _unquote -except ImportError: - from urllib2 import parse_http_list as _parse_list_header - from urllib2 import unquote as _unquote - -_cookie_charset = "latin1" -_basic_auth_charset = "utf-8" -# for explanation of "media-range", etc. see Sections 5.3.{1,2} of RFC 7231 -_accept_re = re.compile( - r""" - ( # media-range capturing-parenthesis - [^\s;,]+ # type/subtype - (?:[ \t]*;[ \t]* # ";" - (?: # parameter non-capturing-parenthesis - [^\s;,q][^\s;,]* # token that doesn't start with "q" - | # or - q[^\s;,=][^\s;,]* # token that is more than just "q" - ) - )* # zero or more parameters - ) # end of media-range - (?:[ \t]*;[ \t]*q= # weight is a "q" parameter - (\d*(?:\.\d+)?) # qvalue capturing-parentheses - [^,]* # "extension" accept params: who cares? - )? # accept params are optional - """, - re.VERBOSE, -) -_token_chars = frozenset( - "!#$%&'*+-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ^_`abcdefghijklmnopqrstuvwxyz|~" -) -_etag_re = re.compile(r'([Ww]/)?(?:"(.*?)"|(.*?))(?:\s*,\s*|$)') -_unsafe_header_chars = set('()<>@,;:"/[]?={} \t') -_option_header_piece_re = re.compile( - r""" - ;\s*,?\s* # newlines were replaced with commas - (?P<key> - "[^"\\]*(?:\\.[^"\\]*)*" # quoted string - | - [^\s;,=*]+ # token - ) - (?:\*(?P<count>\d+))? # *1, optional continuation index - \s* - (?: # optionally followed by =value - (?: # equals sign, possibly with encoding - \*\s*=\s* # * indicates extended notation - (?: # optional encoding - (?P<encoding>[^\s]+?) - '(?P<language>[^\s]*?)' - )? - | - =\s* # basic notation - ) - (?P<value> - "[^"\\]*(?:\\.[^"\\]*)*" # quoted string - | - [^;,]+ # token - )? - )? - \s* - """, - flags=re.VERBOSE, -) -_option_header_start_mime_type = re.compile(r",\s*([^;,\s]+)([;,]\s*.+)?") - -_entity_headers = frozenset( - [ - "allow", - "content-encoding", - "content-language", - "content-length", - "content-location", - "content-md5", - "content-range", - "content-type", - "expires", - "last-modified", - ] -) -_hop_by_hop_headers = frozenset( - [ - "connection", - "keep-alive", - "proxy-authenticate", - "proxy-authorization", - "te", - "trailer", - "transfer-encoding", - "upgrade", - ] -) - - -HTTP_STATUS_CODES = { - 100: "Continue", - 101: "Switching Protocols", - 102: "Processing", - 200: "OK", - 201: "Created", - 202: "Accepted", - 203: "Non Authoritative Information", - 204: "No Content", - 205: "Reset Content", - 206: "Partial Content", - 207: "Multi Status", - 226: "IM Used", # see RFC 3229 - 300: "Multiple Choices", - 301: "Moved Permanently", - 302: "Found", - 303: "See Other", - 304: "Not Modified", - 305: "Use Proxy", - 307: "Temporary Redirect", - 308: "Permanent Redirect", - 400: "Bad Request", - 401: "Unauthorized", - 402: "Payment Required", # unused - 403: "Forbidden", - 404: "Not Found", - 405: "Method Not Allowed", - 406: "Not Acceptable", - 407: "Proxy Authentication Required", - 408: "Request Timeout", - 409: "Conflict", - 410: "Gone", - 411: "Length Required", - 412: "Precondition Failed", - 413: "Request Entity Too Large", - 414: "Request URI Too Long", - 415: "Unsupported Media Type", - 416: "Requested Range Not Satisfiable", - 417: "Expectation Failed", - 418: "I'm a teapot", # see RFC 2324 - 421: "Misdirected Request", # see RFC 7540 - 422: "Unprocessable Entity", - 423: "Locked", - 424: "Failed Dependency", - 426: "Upgrade Required", - 428: "Precondition Required", # see RFC 6585 - 429: "Too Many Requests", - 431: "Request Header Fields Too Large", - 449: "Retry With", # proprietary MS extension - 451: "Unavailable For Legal Reasons", - 500: "Internal Server Error", - 501: "Not Implemented", - 502: "Bad Gateway", - 503: "Service Unavailable", - 504: "Gateway Timeout", - 505: "HTTP Version Not Supported", - 507: "Insufficient Storage", - 510: "Not Extended", -} - - -def wsgi_to_bytes(data): - """coerce wsgi unicode represented bytes to real ones""" - if isinstance(data, bytes): - return data - return data.encode("latin1") # XXX: utf8 fallback? - - -def bytes_to_wsgi(data): - assert isinstance(data, bytes), "data must be bytes" - if isinstance(data, str): - return data - else: - return data.decode("latin1") - - -def quote_header_value(value, extra_chars="", allow_token=True): - """Quote a header value if necessary. - - .. versionadded:: 0.5 - - :param value: the value to quote. - :param extra_chars: a list of extra characters to skip quoting. - :param allow_token: if this is enabled token values are returned - unchanged. - """ - if isinstance(value, bytes): - value = bytes_to_wsgi(value) - value = str(value) - if allow_token: - token_chars = _token_chars | set(extra_chars) - if set(value).issubset(token_chars): - return value - return '"%s"' % value.replace("\\", "\\\\").replace('"', '\\"') - - -def unquote_header_value(value, is_filename=False): - r"""Unquotes a header value. (Reversal of :func:`quote_header_value`). - This does not use the real unquoting but what browsers are actually - using for quoting. - - .. versionadded:: 0.5 - - :param value: the header value to unquote. - """ - if value and value[0] == value[-1] == '"': - # this is not the real unquoting, but fixing this so that the - # RFC is met will result in bugs with internet explorer and - # probably some other browsers as well. IE for example is - # uploading files with "C:\foo\bar.txt" as filename - value = value[1:-1] - - # if this is a filename and the starting characters look like - # a UNC path, then just return the value without quotes. Using the - # replace sequence below on a UNC path has the effect of turning - # the leading double slash into a single slash and then - # _fix_ie_filename() doesn't work correctly. See #458. - if not is_filename or value[:2] != "\\\\": - return value.replace("\\\\", "\\").replace('\\"', '"') - return value - - -def dump_options_header(header, options): - """The reverse function to :func:`parse_options_header`. - - :param header: the header to dump - :param options: a dict of options to append. - """ - segments = [] - if header is not None: - segments.append(header) - for key, value in iteritems(options): - if value is None: - segments.append(key) - else: - segments.append("%s=%s" % (key, quote_header_value(value))) - return "; ".join(segments) - - -def dump_header(iterable, allow_token=True): - """Dump an HTTP header again. This is the reversal of - :func:`parse_list_header`, :func:`parse_set_header` and - :func:`parse_dict_header`. This also quotes strings that include an - equals sign unless you pass it as dict of key, value pairs. - - >>> dump_header({'foo': 'bar baz'}) - 'foo="bar baz"' - >>> dump_header(('foo', 'bar baz')) - 'foo, "bar baz"' - - :param iterable: the iterable or dict of values to quote. - :param allow_token: if set to `False` tokens as values are disallowed. - See :func:`quote_header_value` for more details. - """ - if isinstance(iterable, dict): - items = [] - for key, value in iteritems(iterable): - if value is None: - items.append(key) - else: - items.append( - "%s=%s" % (key, quote_header_value(value, allow_token=allow_token)) - ) - else: - items = [quote_header_value(x, allow_token=allow_token) for x in iterable] - return ", ".join(items) - - -def parse_list_header(value): - """Parse lists as described by RFC 2068 Section 2. - - In particular, parse comma-separated lists where the elements of - the list may include quoted-strings. A quoted-string could - contain a comma. A non-quoted string could have quotes in the - middle. Quotes are removed automatically after parsing. - - It basically works like :func:`parse_set_header` just that items - may appear multiple times and case sensitivity is preserved. - - The return value is a standard :class:`list`: - - >>> parse_list_header('token, "quoted value"') - ['token', 'quoted value'] - - To create a header from the :class:`list` again, use the - :func:`dump_header` function. - - :param value: a string with a list header. - :return: :class:`list` - """ - result = [] - for item in _parse_list_header(value): - if item[:1] == item[-1:] == '"': - item = unquote_header_value(item[1:-1]) - result.append(item) - return result - - -def parse_dict_header(value, cls=dict): - """Parse lists of key, value pairs as described by RFC 2068 Section 2 and - convert them into a python dict (or any other mapping object created from - the type with a dict like interface provided by the `cls` argument): - - >>> d = parse_dict_header('foo="is a fish", bar="as well"') - >>> type(d) is dict - True - >>> sorted(d.items()) - [('bar', 'as well'), ('foo', 'is a fish')] - - If there is no value for a key it will be `None`: - - >>> parse_dict_header('key_without_value') - {'key_without_value': None} - - To create a header from the :class:`dict` again, use the - :func:`dump_header` function. - - .. versionchanged:: 0.9 - Added support for `cls` argument. - - :param value: a string with a dict header. - :param cls: callable to use for storage of parsed results. - :return: an instance of `cls` - """ - result = cls() - if not isinstance(value, text_type): - # XXX: validate - value = bytes_to_wsgi(value) - for item in _parse_list_header(value): - if "=" not in item: - result[item] = None - continue - name, value = item.split("=", 1) - if value[:1] == value[-1:] == '"': - value = unquote_header_value(value[1:-1]) - result[name] = value - return result - - -def parse_options_header(value, multiple=False): - """Parse a ``Content-Type`` like header into a tuple with the content - type and the options: - - >>> parse_options_header('text/html; charset=utf8') - ('text/html', {'charset': 'utf8'}) - - This should not be used to parse ``Cache-Control`` like headers that use - a slightly different format. For these headers use the - :func:`parse_dict_header` function. - - .. versionchanged:: 0.15 - :rfc:`2231` parameter continuations are handled. - - .. versionadded:: 0.5 - - :param value: the header to parse. - :param multiple: Whether try to parse and return multiple MIME types - :return: (mimetype, options) or (mimetype, options, mimetype, options, …) - if multiple=True - """ - if not value: - return "", {} - - result = [] - - value = "," + value.replace("\n", ",") - while value: - match = _option_header_start_mime_type.match(value) - if not match: - break - result.append(match.group(1)) # mimetype - options = {} - # Parse options - rest = match.group(2) - continued_encoding = None - while rest: - optmatch = _option_header_piece_re.match(rest) - if not optmatch: - break - option, count, encoding, language, option_value = optmatch.groups() - # Continuations don't have to supply the encoding after the - # first line. If we're in a continuation, track the current - # encoding to use for subsequent lines. Reset it when the - # continuation ends. - if not count: - continued_encoding = None - else: - if not encoding: - encoding = continued_encoding - continued_encoding = encoding - option = unquote_header_value(option) - if option_value is not None: - option_value = unquote_header_value(option_value, option == "filename") - if encoding is not None: - option_value = _unquote(option_value).decode(encoding) - if count: - # Continuations append to the existing value. For - # simplicity, this ignores the possibility of - # out-of-order indices, which shouldn't happen anyway. - options[option] = options.get(option, "") + option_value - else: - options[option] = option_value - rest = rest[optmatch.end() :] - result.append(options) - if multiple is False: - return tuple(result) - value = rest - - return tuple(result) if result else ("", {}) - - -def parse_accept_header(value, cls=None): - """Parses an HTTP Accept-* header. This does not implement a complete - valid algorithm but one that supports at least value and quality - extraction. - - Returns a new :class:`Accept` object (basically a list of ``(value, quality)`` - tuples sorted by the quality with some additional accessor methods). - - The second parameter can be a subclass of :class:`Accept` that is created - with the parsed values and returned. - - :param value: the accept header string to be parsed. - :param cls: the wrapper class for the return value (can be - :class:`Accept` or a subclass thereof) - :return: an instance of `cls`. - """ - if cls is None: - cls = Accept - - if not value: - return cls(None) - - result = [] - for match in _accept_re.finditer(value): - quality = match.group(2) - if not quality: - quality = 1 - else: - quality = max(min(float(quality), 1), 0) - result.append((match.group(1), quality)) - return cls(result) - - -def parse_cache_control_header(value, on_update=None, cls=None): - """Parse a cache control header. The RFC differs between response and - request cache control, this method does not. It's your responsibility - to not use the wrong control statements. - - .. versionadded:: 0.5 - The `cls` was added. If not specified an immutable - :class:`~werkzeug.datastructures.RequestCacheControl` is returned. - - :param value: a cache control header to be parsed. - :param on_update: an optional callable that is called every time a value - on the :class:`~werkzeug.datastructures.CacheControl` - object is changed. - :param cls: the class for the returned object. By default - :class:`~werkzeug.datastructures.RequestCacheControl` is used. - :return: a `cls` object. - """ - if cls is None: - cls = RequestCacheControl - if not value: - return cls(None, on_update) - return cls(parse_dict_header(value), on_update) - - -def parse_set_header(value, on_update=None): - """Parse a set-like header and return a - :class:`~werkzeug.datastructures.HeaderSet` object: - - >>> hs = parse_set_header('token, "quoted value"') - - The return value is an object that treats the items case-insensitively - and keeps the order of the items: - - >>> 'TOKEN' in hs - True - >>> hs.index('quoted value') - 1 - >>> hs - HeaderSet(['token', 'quoted value']) - - To create a header from the :class:`HeaderSet` again, use the - :func:`dump_header` function. - - :param value: a set header to be parsed. - :param on_update: an optional callable that is called every time a - value on the :class:`~werkzeug.datastructures.HeaderSet` - object is changed. - :return: a :class:`~werkzeug.datastructures.HeaderSet` - """ - if not value: - return HeaderSet(None, on_update) - return HeaderSet(parse_list_header(value), on_update) - - -def parse_authorization_header(value): - """Parse an HTTP basic/digest authorization header transmitted by the web - browser. The return value is either `None` if the header was invalid or - not given, otherwise an :class:`~werkzeug.datastructures.Authorization` - object. - - :param value: the authorization header to parse. - :return: a :class:`~werkzeug.datastructures.Authorization` object or `None`. - """ - if not value: - return - value = wsgi_to_bytes(value) - try: - auth_type, auth_info = value.split(None, 1) - auth_type = auth_type.lower() - except ValueError: - return - if auth_type == b"basic": - try: - username, password = base64.b64decode(auth_info).split(b":", 1) - except Exception: - return - return Authorization( - "basic", - { - "username": to_unicode(username, _basic_auth_charset), - "password": to_unicode(password, _basic_auth_charset), - }, - ) - elif auth_type == b"digest": - auth_map = parse_dict_header(auth_info) - for key in "username", "realm", "nonce", "uri", "response": - if key not in auth_map: - return - if "qop" in auth_map: - if not auth_map.get("nc") or not auth_map.get("cnonce"): - return - return Authorization("digest", auth_map) - - -def parse_www_authenticate_header(value, on_update=None): - """Parse an HTTP WWW-Authenticate header into a - :class:`~werkzeug.datastructures.WWWAuthenticate` object. - - :param value: a WWW-Authenticate header to parse. - :param on_update: an optional callable that is called every time a value - on the :class:`~werkzeug.datastructures.WWWAuthenticate` - object is changed. - :return: a :class:`~werkzeug.datastructures.WWWAuthenticate` object. - """ - if not value: - return WWWAuthenticate(on_update=on_update) - try: - auth_type, auth_info = value.split(None, 1) - auth_type = auth_type.lower() - except (ValueError, AttributeError): - return WWWAuthenticate(value.strip().lower(), on_update=on_update) - return WWWAuthenticate(auth_type, parse_dict_header(auth_info), on_update) - - -def parse_if_range_header(value): - """Parses an if-range header which can be an etag or a date. Returns - a :class:`~werkzeug.datastructures.IfRange` object. - - .. versionadded:: 0.7 - """ - if not value: - return IfRange() - date = parse_date(value) - if date is not None: - return IfRange(date=date) - # drop weakness information - return IfRange(unquote_etag(value)[0]) - - -def parse_range_header(value, make_inclusive=True): - """Parses a range header into a :class:`~werkzeug.datastructures.Range` - object. If the header is missing or malformed `None` is returned. - `ranges` is a list of ``(start, stop)`` tuples where the ranges are - non-inclusive. - - .. versionadded:: 0.7 - """ - if not value or "=" not in value: - return None - - ranges = [] - last_end = 0 - units, rng = value.split("=", 1) - units = units.strip().lower() - - for item in rng.split(","): - item = item.strip() - if "-" not in item: - return None - if item.startswith("-"): - if last_end < 0: - return None - try: - begin = int(item) - except ValueError: - return None - end = None - last_end = -1 - elif "-" in item: - begin, end = item.split("-", 1) - begin = begin.strip() - end = end.strip() - if not begin.isdigit(): - return None - begin = int(begin) - if begin < last_end or last_end < 0: - return None - if end: - if not end.isdigit(): - return None - end = int(end) + 1 - if begin >= end: - return None - else: - end = None - last_end = end - ranges.append((begin, end)) - - return Range(units, ranges) - - -def parse_content_range_header(value, on_update=None): - """Parses a range header into a - :class:`~werkzeug.datastructures.ContentRange` object or `None` if - parsing is not possible. - - .. versionadded:: 0.7 - - :param value: a content range header to be parsed. - :param on_update: an optional callable that is called every time a value - on the :class:`~werkzeug.datastructures.ContentRange` - object is changed. - """ - if value is None: - return None - try: - units, rangedef = (value or "").strip().split(None, 1) - except ValueError: - return None - - if "/" not in rangedef: - return None - rng, length = rangedef.split("/", 1) - if length == "*": - length = None - elif length.isdigit(): - length = int(length) - else: - return None - - if rng == "*": - return ContentRange(units, None, None, length, on_update=on_update) - elif "-" not in rng: - return None - - start, stop = rng.split("-", 1) - try: - start = int(start) - stop = int(stop) + 1 - except ValueError: - return None - - if is_byte_range_valid(start, stop, length): - return ContentRange(units, start, stop, length, on_update=on_update) - - -def quote_etag(etag, weak=False): - """Quote an etag. - - :param etag: the etag to quote. - :param weak: set to `True` to tag it "weak". - """ - if '"' in etag: - raise ValueError("invalid etag") - etag = '"%s"' % etag - if weak: - etag = "W/" + etag - return etag - - -def unquote_etag(etag): - """Unquote a single etag: - - >>> unquote_etag('W/"bar"') - ('bar', True) - >>> unquote_etag('"bar"') - ('bar', False) - - :param etag: the etag identifier to unquote. - :return: a ``(etag, weak)`` tuple. - """ - if not etag: - return None, None - etag = etag.strip() - weak = False - if etag.startswith(("W/", "w/")): - weak = True - etag = etag[2:] - if etag[:1] == etag[-1:] == '"': - etag = etag[1:-1] - return etag, weak - - -def parse_etags(value): - """Parse an etag header. - - :param value: the tag header to parse - :return: an :class:`~werkzeug.datastructures.ETags` object. - """ - if not value: - return ETags() - strong = [] - weak = [] - end = len(value) - pos = 0 - while pos < end: - match = _etag_re.match(value, pos) - if match is None: - break - is_weak, quoted, raw = match.groups() - if raw == "*": - return ETags(star_tag=True) - elif quoted: - raw = quoted - if is_weak: - weak.append(raw) - else: - strong.append(raw) - pos = match.end() - return ETags(strong, weak) - - -def generate_etag(data): - """Generate an etag for some data.""" - return md5(data).hexdigest() - - -def parse_date(value): - """Parse one of the following date formats into a datetime object: - - .. sourcecode:: text - - Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123 - Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036 - Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format - - If parsing fails the return value is `None`. - - :param value: a string with a supported date format. - :return: a :class:`datetime.datetime` object. - """ - if value: - t = parsedate_tz(value.strip()) - if t is not None: - try: - year = t[0] - # unfortunately that function does not tell us if two digit - # years were part of the string, or if they were prefixed - # with two zeroes. So what we do is to assume that 69-99 - # refer to 1900, and everything below to 2000 - if year >= 0 and year <= 68: - year += 2000 - elif year >= 69 and year <= 99: - year += 1900 - return datetime(*((year,) + t[1:7])) - timedelta(seconds=t[-1] or 0) - except (ValueError, OverflowError): - return None - - -def _dump_date(d, delim): - """Used for `http_date` and `cookie_date`.""" - if d is None: - d = gmtime() - elif isinstance(d, datetime): - d = d.utctimetuple() - elif isinstance(d, (integer_types, float)): - d = gmtime(d) - return "%s, %02d%s%s%s%s %02d:%02d:%02d GMT" % ( - ("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")[d.tm_wday], - d.tm_mday, - delim, - ( - "Jan", - "Feb", - "Mar", - "Apr", - "May", - "Jun", - "Jul", - "Aug", - "Sep", - "Oct", - "Nov", - "Dec", - )[d.tm_mon - 1], - delim, - str(d.tm_year), - d.tm_hour, - d.tm_min, - d.tm_sec, - ) - - -def cookie_date(expires=None): - """Formats the time to ensure compatibility with Netscape's cookie - standard. - - Accepts a floating point number expressed in seconds since the epoch in, a - datetime object or a timetuple. All times in UTC. The :func:`parse_date` - function can be used to parse such a date. - - Outputs a string in the format ``Wdy, DD-Mon-YYYY HH:MM:SS GMT``. - - :param expires: If provided that date is used, otherwise the current. - """ - return _dump_date(expires, "-") - - -def http_date(timestamp=None): - """Formats the time to match the RFC1123 date format. - - Accepts a floating point number expressed in seconds since the epoch in, a - datetime object or a timetuple. All times in UTC. The :func:`parse_date` - function can be used to parse such a date. - - Outputs a string in the format ``Wdy, DD Mon YYYY HH:MM:SS GMT``. - - :param timestamp: If provided that date is used, otherwise the current. - """ - return _dump_date(timestamp, " ") - - -def parse_age(value=None): - """Parses a base-10 integer count of seconds into a timedelta. - - If parsing fails, the return value is `None`. - - :param value: a string consisting of an integer represented in base-10 - :return: a :class:`datetime.timedelta` object or `None`. - """ - if not value: - return None - try: - seconds = int(value) - except ValueError: - return None - if seconds < 0: - return None - try: - return timedelta(seconds=seconds) - except OverflowError: - return None - - -def dump_age(age=None): - """Formats the duration as a base-10 integer. - - :param age: should be an integer number of seconds, - a :class:`datetime.timedelta` object, or, - if the age is unknown, `None` (default). - """ - if age is None: - return - if isinstance(age, timedelta): - # do the equivalent of Python 2.7's timedelta.total_seconds(), - # but disregarding fractional seconds - age = age.seconds + (age.days * 24 * 3600) - - age = int(age) - if age < 0: - raise ValueError("age cannot be negative") - - return str(age) - - -def is_resource_modified( - environ, etag=None, data=None, last_modified=None, ignore_if_range=True -): - """Convenience method for conditional requests. - - :param environ: the WSGI environment of the request to be checked. - :param etag: the etag for the response for comparison. - :param data: or alternatively the data of the response to automatically - generate an etag using :func:`generate_etag`. - :param last_modified: an optional date of the last modification. - :param ignore_if_range: If `False`, `If-Range` header will be taken into - account. - :return: `True` if the resource was modified, otherwise `False`. - """ - if etag is None and data is not None: - etag = generate_etag(data) - elif data is not None: - raise TypeError("both data and etag given") - if environ["REQUEST_METHOD"] not in ("GET", "HEAD"): - return False - - unmodified = False - if isinstance(last_modified, string_types): - last_modified = parse_date(last_modified) - - # ensure that microsecond is zero because the HTTP spec does not transmit - # that either and we might have some false positives. See issue #39 - if last_modified is not None: - last_modified = last_modified.replace(microsecond=0) - - if_range = None - if not ignore_if_range and "HTTP_RANGE" in environ: - # https://tools.ietf.org/html/rfc7233#section-3.2 - # A server MUST ignore an If-Range header field received in a request - # that does not contain a Range header field. - if_range = parse_if_range_header(environ.get("HTTP_IF_RANGE")) - - if if_range is not None and if_range.date is not None: - modified_since = if_range.date - else: - modified_since = parse_date(environ.get("HTTP_IF_MODIFIED_SINCE")) - - if modified_since and last_modified and last_modified <= modified_since: - unmodified = True - - if etag: - etag, _ = unquote_etag(etag) - if if_range is not None and if_range.etag is not None: - unmodified = parse_etags(if_range.etag).contains(etag) - else: - if_none_match = parse_etags(environ.get("HTTP_IF_NONE_MATCH")) - if if_none_match: - # https://tools.ietf.org/html/rfc7232#section-3.2 - # "A recipient MUST use the weak comparison function when comparing - # entity-tags for If-None-Match" - unmodified = if_none_match.contains_weak(etag) - - # https://tools.ietf.org/html/rfc7232#section-3.1 - # "Origin server MUST use the strong comparison function when - # comparing entity-tags for If-Match" - if_match = parse_etags(environ.get("HTTP_IF_MATCH")) - if if_match: - unmodified = not if_match.is_strong(etag) - - return not unmodified - - -def remove_entity_headers(headers, allowed=("expires", "content-location")): - """Remove all entity headers from a list or :class:`Headers` object. This - operation works in-place. `Expires` and `Content-Location` headers are - by default not removed. The reason for this is :rfc:`2616` section - 10.3.5 which specifies some entity headers that should be sent. - - .. versionchanged:: 0.5 - added `allowed` parameter. - - :param headers: a list or :class:`Headers` object. - :param allowed: a list of headers that should still be allowed even though - they are entity headers. - """ - allowed = set(x.lower() for x in allowed) - headers[:] = [ - (key, value) - for key, value in headers - if not is_entity_header(key) or key.lower() in allowed - ] - - -def remove_hop_by_hop_headers(headers): - """Remove all HTTP/1.1 "Hop-by-Hop" headers from a list or - :class:`Headers` object. This operation works in-place. - - .. versionadded:: 0.5 - - :param headers: a list or :class:`Headers` object. - """ - headers[:] = [ - (key, value) for key, value in headers if not is_hop_by_hop_header(key) - ] - - -def is_entity_header(header): - """Check if a header is an entity header. - - .. versionadded:: 0.5 - - :param header: the header to test. - :return: `True` if it's an entity header, `False` otherwise. - """ - return header.lower() in _entity_headers - - -def is_hop_by_hop_header(header): - """Check if a header is an HTTP/1.1 "Hop-by-Hop" header. - - .. versionadded:: 0.5 - - :param header: the header to test. - :return: `True` if it's an HTTP/1.1 "Hop-by-Hop" header, `False` otherwise. - """ - return header.lower() in _hop_by_hop_headers - - -def parse_cookie(header, charset="utf-8", errors="replace", cls=None): - """Parse a cookie. Either from a string or WSGI environ. - - Per default encoding errors are ignored. If you want a different behavior - you can set `errors` to ``'replace'`` or ``'strict'``. In strict mode a - :exc:`HTTPUnicodeError` is raised. - - .. versionchanged:: 0.5 - This function now returns a :class:`TypeConversionDict` instead of a - regular dict. The `cls` parameter was added. - - :param header: the header to be used to parse the cookie. Alternatively - this can be a WSGI environment. - :param charset: the charset for the cookie values. - :param errors: the error behavior for the charset decoding. - :param cls: an optional dict class to use. If this is not specified - or `None` the default :class:`TypeConversionDict` is - used. - """ - if isinstance(header, dict): - header = header.get("HTTP_COOKIE", "") - elif header is None: - header = "" - - # If the value is an unicode string it's mangled through latin1. This - # is done because on PEP 3333 on Python 3 all headers are assumed latin1 - # which however is incorrect for cookies, which are sent in page encoding. - # As a result we - if isinstance(header, text_type): - header = header.encode("latin1", "replace") - - if cls is None: - cls = TypeConversionDict - - def _parse_pairs(): - for key, val in _cookie_parse_impl(header): - key = to_unicode(key, charset, errors, allow_none_charset=True) - if not key: - continue - val = to_unicode(val, charset, errors, allow_none_charset=True) - yield try_coerce_native(key), val - - return cls(_parse_pairs()) - - -def dump_cookie( - key, - value="", - max_age=None, - expires=None, - path="/", - domain=None, - secure=False, - httponly=False, - charset="utf-8", - sync_expires=True, - max_size=4093, - samesite=None, -): - """Creates a new Set-Cookie header without the ``Set-Cookie`` prefix - The parameters are the same as in the cookie Morsel object in the - Python standard library but it accepts unicode data, too. - - On Python 3 the return value of this function will be a unicode - string, on Python 2 it will be a native string. In both cases the - return value is usually restricted to ascii as the vast majority of - values are properly escaped, but that is no guarantee. If a unicode - string is returned it's tunneled through latin1 as required by - PEP 3333. - - The return value is not ASCII safe if the key contains unicode - characters. This is technically against the specification but - happens in the wild. It's strongly recommended to not use - non-ASCII values for the keys. - - :param max_age: should be a number of seconds, or `None` (default) if - the cookie should last only as long as the client's - browser session. Additionally `timedelta` objects - are accepted, too. - :param expires: should be a `datetime` object or unix timestamp. - :param path: limits the cookie to a given path, per default it will - span the whole domain. - :param domain: Use this if you want to set a cross-domain cookie. For - example, ``domain=".example.com"`` will set a cookie - that is readable by the domain ``www.example.com``, - ``foo.example.com`` etc. Otherwise, a cookie will only - be readable by the domain that set it. - :param secure: The cookie will only be available via HTTPS - :param httponly: disallow JavaScript to access the cookie. This is an - extension to the cookie standard and probably not - supported by all browsers. - :param charset: the encoding for unicode values. - :param sync_expires: automatically set expires if max_age is defined - but expires not. - :param max_size: Warn if the final header value exceeds this size. The - default, 4093, should be safely `supported by most browsers - <cookie_>`_. Set to 0 to disable this check. - :param samesite: Limits the scope of the cookie such that it will only - be attached to requests if those requests are "same-site". - - .. _`cookie`: http://browsercookielimits.squawky.net/ - """ - key = to_bytes(key, charset) - value = to_bytes(value, charset) - - if path is not None: - path = iri_to_uri(path, charset) - domain = _make_cookie_domain(domain) - if isinstance(max_age, timedelta): - max_age = (max_age.days * 60 * 60 * 24) + max_age.seconds - if expires is not None: - if not isinstance(expires, string_types): - expires = cookie_date(expires) - elif max_age is not None and sync_expires: - expires = to_bytes(cookie_date(time() + max_age)) - - samesite = samesite.title() if samesite else None - if samesite not in ("Strict", "Lax", None): - raise ValueError("invalid SameSite value; must be 'Strict', 'Lax' or None") - - buf = [key + b"=" + _cookie_quote(value)] - - # XXX: In theory all of these parameters that are not marked with `None` - # should be quoted. Because stdlib did not quote it before I did not - # want to introduce quoting there now. - for k, v, q in ( - (b"Domain", domain, True), - (b"Expires", expires, False), - (b"Max-Age", max_age, False), - (b"Secure", secure, None), - (b"HttpOnly", httponly, None), - (b"Path", path, False), - (b"SameSite", samesite, False), - ): - if q is None: - if v: - buf.append(k) - continue - - if v is None: - continue - - tmp = bytearray(k) - if not isinstance(v, (bytes, bytearray)): - v = to_bytes(text_type(v), charset) - if q: - v = _cookie_quote(v) - tmp += b"=" + v - buf.append(bytes(tmp)) - - # The return value will be an incorrectly encoded latin1 header on - # Python 3 for consistency with the headers object and a bytestring - # on Python 2 because that's how the API makes more sense. - rv = b"; ".join(buf) - if not PY2: - rv = rv.decode("latin1") - - # Warn if the final value of the cookie is less than the limit. If the - # cookie is too large, then it may be silently ignored, which can be quite - # hard to debug. - cookie_size = len(rv) - - if max_size and cookie_size > max_size: - value_size = len(value) - warnings.warn( - 'The "{key}" cookie is too large: the value was {value_size} bytes' - " but the header required {extra_size} extra bytes. The final size" - " was {cookie_size} bytes but the limit is {max_size} bytes." - " Browsers may silently ignore cookies larger than this.".format( - key=key, - value_size=value_size, - extra_size=cookie_size - value_size, - cookie_size=cookie_size, - max_size=max_size, - ), - stacklevel=2, - ) - - return rv - - -def is_byte_range_valid(start, stop, length): - """Checks if a given byte content range is valid for the given length. - - .. versionadded:: 0.7 - """ - if (start is None) != (stop is None): - return False - elif start is None: - return length is None or length >= 0 - elif length is None: - return 0 <= start < stop - elif start >= stop: - return False - return 0 <= start < length - - -# circular dependency fun -from .datastructures import Accept -from .datastructures import Authorization -from .datastructures import ContentRange -from .datastructures import ETags -from .datastructures import HeaderSet -from .datastructures import IfRange -from .datastructures import Range -from .datastructures import RequestCacheControl -from .datastructures import TypeConversionDict -from .datastructures import WWWAuthenticate -from .urls import iri_to_uri - -# DEPRECATED -from .datastructures import CharsetAccept as _CharsetAccept -from .datastructures import Headers as _Headers -from .datastructures import LanguageAccept as _LanguageAccept -from .datastructures import MIMEAccept as _MIMEAccept - - -class MIMEAccept(_MIMEAccept): - def __init__(self, *args, **kwargs): - warnings.warn( - "'werkzeug.http.MIMEAccept' has moved to 'werkzeug" - ".datastructures.MIMEAccept' as of version 0.5. This old" - " import will be removed in version 1.0.", - DeprecationWarning, - stacklevel=2, - ) - super(MIMEAccept, self).__init__(*args, **kwargs) - - -class CharsetAccept(_CharsetAccept): - def __init__(self, *args, **kwargs): - warnings.warn( - "'werkzeug.http.CharsetAccept' has moved to 'werkzeug" - ".datastructures.CharsetAccept' as of version 0.5. This old" - " import will be removed in version 1.0.", - DeprecationWarning, - stacklevel=2, - ) - super(CharsetAccept, self).__init__(*args, **kwargs) - - -class LanguageAccept(_LanguageAccept): - def __init__(self, *args, **kwargs): - warnings.warn( - "'werkzeug.http.LanguageAccept' has moved to 'werkzeug" - ".datastructures.LanguageAccept' as of version 0.5. This" - " old import will be removed in version 1.0.", - DeprecationWarning, - stacklevel=2, - ) - super(LanguageAccept, self).__init__(*args, **kwargs) - - -class Headers(_Headers): - def __init__(self, *args, **kwargs): - warnings.warn( - "'werkzeug.http.Headers' has moved to 'werkzeug" - ".datastructures.Headers' as of version 0.5. This old" - " import will be removed in version 1.0.", - DeprecationWarning, - stacklevel=2, - ) - super(Headers, self).__init__(*args, **kwargs) diff --git a/python/werkzeug/local.py b/python/werkzeug/local.py deleted file mode 100644 index 9a6088c..0000000 --- a/python/werkzeug/local.py +++ /dev/null @@ -1,421 +0,0 @@ -# -*- coding: utf-8 -*- -""" - werkzeug.local - ~~~~~~~~~~~~~~ - - This module implements context-local objects. - - :copyright: 2007 Pallets - :license: BSD-3-Clause -""" -import copy -from functools import update_wrapper - -from ._compat import implements_bool -from ._compat import PY2 -from .wsgi import ClosingIterator - -# since each thread has its own greenlet we can just use those as identifiers -# for the context. If greenlets are not available we fall back to the -# current thread ident depending on where it is. -try: - from greenlet import getcurrent as get_ident -except ImportError: - try: - from thread import get_ident - except ImportError: - from _thread import get_ident - - -def release_local(local): - """Releases the contents of the local for the current context. - This makes it possible to use locals without a manager. - - Example:: - - >>> loc = Local() - >>> loc.foo = 42 - >>> release_local(loc) - >>> hasattr(loc, 'foo') - False - - With this function one can release :class:`Local` objects as well - as :class:`LocalStack` objects. However it is not possible to - release data held by proxies that way, one always has to retain - a reference to the underlying local object in order to be able - to release it. - - .. versionadded:: 0.6.1 - """ - local.__release_local__() - - -class Local(object): - __slots__ = ("__storage__", "__ident_func__") - - def __init__(self): - object.__setattr__(self, "__storage__", {}) - object.__setattr__(self, "__ident_func__", get_ident) - - def __iter__(self): - return iter(self.__storage__.items()) - - def __call__(self, proxy): - """Create a proxy for a name.""" - return LocalProxy(self, proxy) - - def __release_local__(self): - self.__storage__.pop(self.__ident_func__(), None) - - def __getattr__(self, name): - try: - return self.__storage__[self.__ident_func__()][name] - except KeyError: - raise AttributeError(name) - - def __setattr__(self, name, value): - ident = self.__ident_func__() - storage = self.__storage__ - try: - storage[ident][name] = value - except KeyError: - storage[ident] = {name: value} - - def __delattr__(self, name): - try: - del self.__storage__[self.__ident_func__()][name] - except KeyError: - raise AttributeError(name) - - -class LocalStack(object): - """This class works similar to a :class:`Local` but keeps a stack - of objects instead. This is best explained with an example:: - - >>> ls = LocalStack() - >>> ls.push(42) - >>> ls.top - 42 - >>> ls.push(23) - >>> ls.top - 23 - >>> ls.pop() - 23 - >>> ls.top - 42 - - They can be force released by using a :class:`LocalManager` or with - the :func:`release_local` function but the correct way is to pop the - item from the stack after using. When the stack is empty it will - no longer be bound to the current context (and as such released). - - By calling the stack without arguments it returns a proxy that resolves to - the topmost item on the stack. - - .. versionadded:: 0.6.1 - """ - - def __init__(self): - self._local = Local() - - def __release_local__(self): - self._local.__release_local__() - - def _get__ident_func__(self): - return self._local.__ident_func__ - - def _set__ident_func__(self, value): - object.__setattr__(self._local, "__ident_func__", value) - - __ident_func__ = property(_get__ident_func__, _set__ident_func__) - del _get__ident_func__, _set__ident_func__ - - def __call__(self): - def _lookup(): - rv = self.top - if rv is None: - raise RuntimeError("object unbound") - return rv - - return LocalProxy(_lookup) - - def push(self, obj): - """Pushes a new item to the stack""" - rv = getattr(self._local, "stack", None) - if rv is None: - self._local.stack = rv = [] - rv.append(obj) - return rv - - def pop(self): - """Removes the topmost item from the stack, will return the - old value or `None` if the stack was already empty. - """ - stack = getattr(self._local, "stack", None) - if stack is None: - return None - elif len(stack) == 1: - release_local(self._local) - return stack[-1] - else: - return stack.pop() - - @property - def top(self): - """The topmost item on the stack. If the stack is empty, - `None` is returned. - """ - try: - return self._local.stack[-1] - except (AttributeError, IndexError): - return None - - -class LocalManager(object): - """Local objects cannot manage themselves. For that you need a local - manager. You can pass a local manager multiple locals or add them later - by appending them to `manager.locals`. Every time the manager cleans up, - it will clean up all the data left in the locals for this context. - - The `ident_func` parameter can be added to override the default ident - function for the wrapped locals. - - .. versionchanged:: 0.6.1 - Instead of a manager the :func:`release_local` function can be used - as well. - - .. versionchanged:: 0.7 - `ident_func` was added. - """ - - def __init__(self, locals=None, ident_func=None): - if locals is None: - self.locals = [] - elif isinstance(locals, Local): - self.locals = [locals] - else: - self.locals = list(locals) - if ident_func is not None: - self.ident_func = ident_func - for local in self.locals: - object.__setattr__(local, "__ident_func__", ident_func) - else: - self.ident_func = get_ident - - def get_ident(self): - """Return the context identifier the local objects use internally for - this context. You cannot override this method to change the behavior - but use it to link other context local objects (such as SQLAlchemy's - scoped sessions) to the Werkzeug locals. - - .. versionchanged:: 0.7 - You can pass a different ident function to the local manager that - will then be propagated to all the locals passed to the - constructor. - """ - return self.ident_func() - - def cleanup(self): - """Manually clean up the data in the locals for this context. Call - this at the end of the request or use `make_middleware()`. - """ - for local in self.locals: - release_local(local) - - def make_middleware(self, app): - """Wrap a WSGI application so that cleaning up happens after - request end. - """ - - def application(environ, start_response): - return ClosingIterator(app(environ, start_response), self.cleanup) - - return application - - def middleware(self, func): - """Like `make_middleware` but for decorating functions. - - Example usage:: - - @manager.middleware - def application(environ, start_response): - ... - - The difference to `make_middleware` is that the function passed - will have all the arguments copied from the inner application - (name, docstring, module). - """ - return update_wrapper(self.make_middleware(func), func) - - def __repr__(self): - return "<%s storages: %d>" % (self.__class__.__name__, len(self.locals)) - - -@implements_bool -class LocalProxy(object): - """Acts as a proxy for a werkzeug local. Forwards all operations to - a proxied object. The only operations not supported for forwarding - are right handed operands and any kind of assignment. - - Example usage:: - - from werkzeug.local import Local - l = Local() - - # these are proxies - request = l('request') - user = l('user') - - - from werkzeug.local import LocalStack - _response_local = LocalStack() - - # this is a proxy - response = _response_local() - - Whenever something is bound to l.user / l.request the proxy objects - will forward all operations. If no object is bound a :exc:`RuntimeError` - will be raised. - - To create proxies to :class:`Local` or :class:`LocalStack` objects, - call the object as shown above. If you want to have a proxy to an - object looked up by a function, you can (as of Werkzeug 0.6.1) pass - a function to the :class:`LocalProxy` constructor:: - - session = LocalProxy(lambda: get_current_request().session) - - .. versionchanged:: 0.6.1 - The class can be instantiated with a callable as well now. - """ - - __slots__ = ("__local", "__dict__", "__name__", "__wrapped__") - - def __init__(self, local, name=None): - object.__setattr__(self, "_LocalProxy__local", local) - object.__setattr__(self, "__name__", name) - if callable(local) and not hasattr(local, "__release_local__"): - # "local" is a callable that is not an instance of Local or - # LocalManager: mark it as a wrapped function. - object.__setattr__(self, "__wrapped__", local) - - def _get_current_object(self): - """Return the current object. This is useful if you want the real - object behind the proxy at a time for performance reasons or because - you want to pass the object into a different context. - """ - if not hasattr(self.__local, "__release_local__"): - return self.__local() - try: - return getattr(self.__local, self.__name__) - except AttributeError: - raise RuntimeError("no object bound to %s" % self.__name__) - - @property - def __dict__(self): - try: - return self._get_current_object().__dict__ - except RuntimeError: - raise AttributeError("__dict__") - - def __repr__(self): - try: - obj = self._get_current_object() - except RuntimeError: - return "<%s unbound>" % self.__class__.__name__ - return repr(obj) - - def __bool__(self): - try: - return bool(self._get_current_object()) - except RuntimeError: - return False - - def __unicode__(self): - try: - return unicode(self._get_current_object()) # noqa - except RuntimeError: - return repr(self) - - def __dir__(self): - try: - return dir(self._get_current_object()) - except RuntimeError: - return [] - - def __getattr__(self, name): - if name == "__members__": - return dir(self._get_current_object()) - return getattr(self._get_current_object(), name) - - def __setitem__(self, key, value): - self._get_current_object()[key] = value - - def __delitem__(self, key): - del self._get_current_object()[key] - - if PY2: - __getslice__ = lambda x, i, j: x._get_current_object()[i:j] - - def __setslice__(self, i, j, seq): - self._get_current_object()[i:j] = seq - - def __delslice__(self, i, j): - del self._get_current_object()[i:j] - - __setattr__ = lambda x, n, v: setattr(x._get_current_object(), n, v) - __delattr__ = lambda x, n: delattr(x._get_current_object(), n) - __str__ = lambda x: str(x._get_current_object()) - __lt__ = lambda x, o: x._get_current_object() < o - __le__ = lambda x, o: x._get_current_object() <= o - __eq__ = lambda x, o: x._get_current_object() == o - __ne__ = lambda x, o: x._get_current_object() != o - __gt__ = lambda x, o: x._get_current_object() > o - __ge__ = lambda x, o: x._get_current_object() >= o - __cmp__ = lambda x, o: cmp(x._get_current_object(), o) # noqa - __hash__ = lambda x: hash(x._get_current_object()) - __call__ = lambda x, *a, **kw: x._get_current_object()(*a, **kw) - __len__ = lambda x: len(x._get_current_object()) - __getitem__ = lambda x, i: x._get_current_object()[i] - __iter__ = lambda x: iter(x._get_current_object()) - __contains__ = lambda x, i: i in x._get_current_object() - __add__ = lambda x, o: x._get_current_object() + o - __sub__ = lambda x, o: x._get_current_object() - o - __mul__ = lambda x, o: x._get_current_object() * o - __floordiv__ = lambda x, o: x._get_current_object() // o - __mod__ = lambda x, o: x._get_current_object() % o - __divmod__ = lambda x, o: x._get_current_object().__divmod__(o) - __pow__ = lambda x, o: x._get_current_object() ** o - __lshift__ = lambda x, o: x._get_current_object() << o - __rshift__ = lambda x, o: x._get_current_object() >> o - __and__ = lambda x, o: x._get_current_object() & o - __xor__ = lambda x, o: x._get_current_object() ^ o - __or__ = lambda x, o: x._get_current_object() | o - __div__ = lambda x, o: x._get_current_object().__div__(o) - __truediv__ = lambda x, o: x._get_current_object().__truediv__(o) - __neg__ = lambda x: -(x._get_current_object()) - __pos__ = lambda x: +(x._get_current_object()) - __abs__ = lambda x: abs(x._get_current_object()) - __invert__ = lambda x: ~(x._get_current_object()) - __complex__ = lambda x: complex(x._get_current_object()) - __int__ = lambda x: int(x._get_current_object()) - __long__ = lambda x: long(x._get_current_object()) # noqa - __float__ = lambda x: float(x._get_current_object()) - __oct__ = lambda x: oct(x._get_current_object()) - __hex__ = lambda x: hex(x._get_current_object()) - __index__ = lambda x: x._get_current_object().__index__() - __coerce__ = lambda x, o: x._get_current_object().__coerce__(x, o) - __enter__ = lambda x: x._get_current_object().__enter__() - __exit__ = lambda x, *a, **kw: x._get_current_object().__exit__(*a, **kw) - __radd__ = lambda x, o: o + x._get_current_object() - __rsub__ = lambda x, o: o - x._get_current_object() - __rmul__ = lambda x, o: o * x._get_current_object() - __rdiv__ = lambda x, o: o / x._get_current_object() - if PY2: - __rtruediv__ = lambda x, o: x._get_current_object().__rtruediv__(o) - else: - __rtruediv__ = __rdiv__ - __rfloordiv__ = lambda x, o: o // x._get_current_object() - __rmod__ = lambda x, o: o % x._get_current_object() - __rdivmod__ = lambda x, o: x._get_current_object().__rdivmod__(o) - __copy__ = lambda x: copy.copy(x._get_current_object()) - __deepcopy__ = lambda x, memo: copy.deepcopy(x._get_current_object(), memo) diff --git a/python/werkzeug/middleware/__init__.py b/python/werkzeug/middleware/__init__.py deleted file mode 100644 index 5e049f5..0000000 --- a/python/werkzeug/middleware/__init__.py +++ /dev/null @@ -1,25 +0,0 @@ -""" -Middleware -========== - -A WSGI middleware is a WSGI application that wraps another application -in order to observe or change its behavior. Werkzeug provides some -middleware for common use cases. - -.. toctree:: - :maxdepth: 1 - - proxy_fix - shared_data - dispatcher - http_proxy - lint - profiler - -The :doc:`interactive debugger </debug>` is also a middleware that can -be applied manually, although it is typically used automatically with -the :doc:`development server </serving>`. - -:copyright: 2007 Pallets -:license: BSD-3-Clause -""" diff --git a/python/werkzeug/middleware/dispatcher.py b/python/werkzeug/middleware/dispatcher.py deleted file mode 100644 index 2eb173e..0000000 --- a/python/werkzeug/middleware/dispatcher.py +++ /dev/null @@ -1,66 +0,0 @@ -""" -Application Dispatcher -====================== - -This middleware creates a single WSGI application that dispatches to -multiple other WSGI applications mounted at different URL paths. - -A common example is writing a Single Page Application, where you have a -backend API and a frontend written in JavaScript that does the routing -in the browser rather than requesting different pages from the server. -The frontend is a single HTML and JS file that should be served for any -path besides "/api". - -This example dispatches to an API app under "/api", an admin app -under "/admin", and an app that serves frontend files for all other -requests:: - - app = DispatcherMiddleware(serve_frontend, { - '/api': api_app, - '/admin': admin_app, - }) - -In production, you might instead handle this at the HTTP server level, -serving files or proxying to application servers based on location. The -API and admin apps would each be deployed with a separate WSGI server, -and the static files would be served directly by the HTTP server. - -.. autoclass:: DispatcherMiddleware - -:copyright: 2007 Pallets -:license: BSD-3-Clause -""" - - -class DispatcherMiddleware(object): - """Combine multiple applications as a single WSGI application. - Requests are dispatched to an application based on the path it is - mounted under. - - :param app: The WSGI application to dispatch to if the request - doesn't match a mounted path. - :param mounts: Maps path prefixes to applications for dispatching. - """ - - def __init__(self, app, mounts=None): - self.app = app - self.mounts = mounts or {} - - def __call__(self, environ, start_response): - script = environ.get("PATH_INFO", "") - path_info = "" - - while "/" in script: - if script in self.mounts: - app = self.mounts[script] - break - - script, last_item = script.rsplit("/", 1) - path_info = "/%s%s" % (last_item, path_info) - else: - app = self.mounts.get(script, self.app) - - original_script_name = environ.get("SCRIPT_NAME", "") - environ["SCRIPT_NAME"] = original_script_name + script - environ["PATH_INFO"] = path_info - return app(environ, start_response) diff --git a/python/werkzeug/middleware/http_proxy.py b/python/werkzeug/middleware/http_proxy.py deleted file mode 100644 index bfdc071..0000000 --- a/python/werkzeug/middleware/http_proxy.py +++ /dev/null @@ -1,219 +0,0 @@ -""" -Basic HTTP Proxy -================ - -.. autoclass:: ProxyMiddleware - -:copyright: 2007 Pallets -:license: BSD-3-Clause -""" -import socket - -from ..datastructures import EnvironHeaders -from ..http import is_hop_by_hop_header -from ..urls import url_parse -from ..urls import url_quote -from ..wsgi import get_input_stream - -try: - from http import client -except ImportError: - import httplib as client - - -class ProxyMiddleware(object): - """Proxy requests under a path to an external server, routing other - requests to the app. - - This middleware can only proxy HTTP requests, as that is the only - protocol handled by the WSGI server. Other protocols, such as - websocket requests, cannot be proxied at this layer. This should - only be used for development, in production a real proxying server - should be used. - - The middleware takes a dict that maps a path prefix to a dict - describing the host to be proxied to:: - - app = ProxyMiddleware(app, { - "/static/": { - "target": "http://127.0.0.1:5001/", - } - }) - - Each host has the following options: - - ``target``: - The target URL to dispatch to. This is required. - ``remove_prefix``: - Whether to remove the prefix from the URL before dispatching it - to the target. The default is ``False``. - ``host``: - ``"<auto>"`` (default): - The host header is automatically rewritten to the URL of the - target. - ``None``: - The host header is unmodified from the client request. - Any other value: - The host header is overwritten with the value. - ``headers``: - A dictionary of headers to be sent with the request to the - target. The default is ``{}``. - ``ssl_context``: - A :class:`ssl.SSLContext` defining how to verify requests if the - target is HTTPS. The default is ``None``. - - In the example above, everything under ``"/static/"`` is proxied to - the server on port 5001. The host header is rewritten to the target, - and the ``"/static/"`` prefix is removed from the URLs. - - :param app: The WSGI application to wrap. - :param targets: Proxy target configurations. See description above. - :param chunk_size: Size of chunks to read from input stream and - write to target. - :param timeout: Seconds before an operation to a target fails. - - .. versionadded:: 0.14 - """ - - def __init__(self, app, targets, chunk_size=2 << 13, timeout=10): - def _set_defaults(opts): - opts.setdefault("remove_prefix", False) - opts.setdefault("host", "<auto>") - opts.setdefault("headers", {}) - opts.setdefault("ssl_context", None) - return opts - - self.app = app - self.targets = dict( - ("/%s/" % k.strip("/"), _set_defaults(v)) for k, v in targets.items() - ) - self.chunk_size = chunk_size - self.timeout = timeout - - def proxy_to(self, opts, path, prefix): - target = url_parse(opts["target"]) - - def application(environ, start_response): - headers = list(EnvironHeaders(environ).items()) - headers[:] = [ - (k, v) - for k, v in headers - if not is_hop_by_hop_header(k) - and k.lower() not in ("content-length", "host") - ] - headers.append(("Connection", "close")) - - if opts["host"] == "<auto>": - headers.append(("Host", target.ascii_host)) - elif opts["host"] is None: - headers.append(("Host", environ["HTTP_HOST"])) - else: - headers.append(("Host", opts["host"])) - - headers.extend(opts["headers"].items()) - remote_path = path - - if opts["remove_prefix"]: - remote_path = "%s/%s" % ( - target.path.rstrip("/"), - remote_path[len(prefix) :].lstrip("/"), - ) - - content_length = environ.get("CONTENT_LENGTH") - chunked = False - - if content_length not in ("", None): - headers.append(("Content-Length", content_length)) - elif content_length is not None: - headers.append(("Transfer-Encoding", "chunked")) - chunked = True - - try: - if target.scheme == "http": - con = client.HTTPConnection( - target.ascii_host, target.port or 80, timeout=self.timeout - ) - elif target.scheme == "https": - con = client.HTTPSConnection( - target.ascii_host, - target.port or 443, - timeout=self.timeout, - context=opts["ssl_context"], - ) - else: - raise RuntimeError( - "Target scheme must be 'http' or 'https', got '{}'.".format( - target.scheme - ) - ) - - con.connect() - remote_url = url_quote(remote_path) - querystring = environ["QUERY_STRING"] - - if querystring: - remote_url = remote_url + "?" + querystring - - con.putrequest(environ["REQUEST_METHOD"], remote_url, skip_host=True) - - for k, v in headers: - if k.lower() == "connection": - v = "close" - - con.putheader(k, v) - - con.endheaders() - stream = get_input_stream(environ) - - while 1: - data = stream.read(self.chunk_size) - - if not data: - break - - if chunked: - con.send(b"%x\r\n%s\r\n" % (len(data), data)) - else: - con.send(data) - - resp = con.getresponse() - except socket.error: - from ..exceptions import BadGateway - - return BadGateway()(environ, start_response) - - start_response( - "%d %s" % (resp.status, resp.reason), - [ - (k.title(), v) - for k, v in resp.getheaders() - if not is_hop_by_hop_header(k) - ], - ) - - def read(): - while 1: - try: - data = resp.read(self.chunk_size) - except socket.error: - break - - if not data: - break - - yield data - - return read() - - return application - - def __call__(self, environ, start_response): - path = environ["PATH_INFO"] - app = self.app - - for prefix, opts in self.targets.items(): - if path.startswith(prefix): - app = self.proxy_to(opts, path, prefix) - break - - return app(environ, start_response) diff --git a/python/werkzeug/middleware/lint.py b/python/werkzeug/middleware/lint.py deleted file mode 100644 index 98f9581..0000000 --- a/python/werkzeug/middleware/lint.py +++ /dev/null @@ -1,408 +0,0 @@ -""" -WSGI Protocol Linter -==================== - -This module provides a middleware that performs sanity checks on the -behavior of the WSGI server and application. It checks that the -:pep:`3333` WSGI spec is properly implemented. It also warns on some -common HTTP errors such as non-empty responses for 304 status codes. - -.. autoclass:: LintMiddleware - -:copyright: 2007 Pallets -:license: BSD-3-Clause -""" -from warnings import warn - -from .._compat import implements_iterator -from .._compat import PY2 -from .._compat import string_types -from ..datastructures import Headers -from ..http import is_entity_header -from ..wsgi import FileWrapper - -try: - from urllib.parse import urlparse -except ImportError: - from urlparse import urlparse - - -class WSGIWarning(Warning): - """Warning class for WSGI warnings.""" - - -class HTTPWarning(Warning): - """Warning class for HTTP warnings.""" - - -def check_string(context, obj, stacklevel=3): - if type(obj) is not str: - warn( - "'%s' requires strings, got '%s'" % (context, type(obj).__name__), - WSGIWarning, - ) - - -class InputStream(object): - def __init__(self, stream): - self._stream = stream - - def read(self, *args): - if len(args) == 0: - warn( - "WSGI does not guarantee an EOF marker on the input stream, thus making" - " calls to 'wsgi.input.read()' unsafe. Conforming servers may never" - " return from this call.", - WSGIWarning, - stacklevel=2, - ) - elif len(args) != 1: - warn( - "Too many parameters passed to 'wsgi.input.read()'.", - WSGIWarning, - stacklevel=2, - ) - return self._stream.read(*args) - - def readline(self, *args): - if len(args) == 0: - warn( - "Calls to 'wsgi.input.readline()' without arguments are unsafe. Use" - " 'wsgi.input.read()' instead.", - WSGIWarning, - stacklevel=2, - ) - elif len(args) == 1: - warn( - "'wsgi.input.readline()' was called with a size hint. WSGI does not" - " support this, although it's available on all major servers.", - WSGIWarning, - stacklevel=2, - ) - else: - raise TypeError("Too many arguments passed to 'wsgi.input.readline()'.") - return self._stream.readline(*args) - - def __iter__(self): - try: - return iter(self._stream) - except TypeError: - warn("'wsgi.input' is not iterable.", WSGIWarning, stacklevel=2) - return iter(()) - - def close(self): - warn("The application closed the input stream!", WSGIWarning, stacklevel=2) - self._stream.close() - - -class ErrorStream(object): - def __init__(self, stream): - self._stream = stream - - def write(self, s): - check_string("wsgi.error.write()", s) - self._stream.write(s) - - def flush(self): - self._stream.flush() - - def writelines(self, seq): - for line in seq: - self.write(line) - - def close(self): - warn("The application closed the error stream!", WSGIWarning, stacklevel=2) - self._stream.close() - - -class GuardedWrite(object): - def __init__(self, write, chunks): - self._write = write - self._chunks = chunks - - def __call__(self, s): - check_string("write()", s) - self._write.write(s) - self._chunks.append(len(s)) - - -@implements_iterator -class GuardedIterator(object): - def __init__(self, iterator, headers_set, chunks): - self._iterator = iterator - if PY2: - self._next = iter(iterator).next - else: - self._next = iter(iterator).__next__ - self.closed = False - self.headers_set = headers_set - self.chunks = chunks - - def __iter__(self): - return self - - def __next__(self): - if self.closed: - warn("Iterated over closed 'app_iter'.", WSGIWarning, stacklevel=2) - - rv = self._next() - - if not self.headers_set: - warn( - "The application returned before it started the response.", - WSGIWarning, - stacklevel=2, - ) - - check_string("application iterator items", rv) - self.chunks.append(len(rv)) - return rv - - def close(self): - self.closed = True - - if hasattr(self._iterator, "close"): - self._iterator.close() - - if self.headers_set: - status_code, headers = self.headers_set - bytes_sent = sum(self.chunks) - content_length = headers.get("content-length", type=int) - - if status_code == 304: - for key, _value in headers: - key = key.lower() - if key not in ("expires", "content-location") and is_entity_header( - key - ): - warn( - "Entity header %r found in 304 response." % key, HTTPWarning - ) - if bytes_sent: - warn("304 responses must not have a body.", HTTPWarning) - elif 100 <= status_code < 200 or status_code == 204: - if content_length != 0: - warn( - "%r responses must have an empty content length." % status_code, - HTTPWarning, - ) - if bytes_sent: - warn( - "%r responses must not have a body." % status_code, HTTPWarning - ) - elif content_length is not None and content_length != bytes_sent: - warn( - "Content-Length and the number of bytes sent to the client do not" - " match.", - WSGIWarning, - ) - - def __del__(self): - if not self.closed: - try: - warn( - "Iterator was garbage collected before it was closed.", WSGIWarning - ) - except Exception: - pass - - -class LintMiddleware(object): - """Warns about common errors in the WSGI and HTTP behavior of the - server and wrapped application. Some of the issues it check are: - - - invalid status codes - - non-bytestrings sent to the WSGI server - - strings returned from the WSGI application - - non-empty conditional responses - - unquoted etags - - relative URLs in the Location header - - unsafe calls to wsgi.input - - unclosed iterators - - Error information is emitted using the :mod:`warnings` module. - - :param app: The WSGI application to wrap. - - .. code-block:: python - - from werkzeug.middleware.lint import LintMiddleware - app = LintMiddleware(app) - """ - - def __init__(self, app): - self.app = app - - def check_environ(self, environ): - if type(environ) is not dict: - warn( - "WSGI environment is not a standard Python dict.", - WSGIWarning, - stacklevel=4, - ) - for key in ( - "REQUEST_METHOD", - "SERVER_NAME", - "SERVER_PORT", - "wsgi.version", - "wsgi.input", - "wsgi.errors", - "wsgi.multithread", - "wsgi.multiprocess", - "wsgi.run_once", - ): - if key not in environ: - warn( - "Required environment key %r not found" % key, - WSGIWarning, - stacklevel=3, - ) - if environ["wsgi.version"] != (1, 0): - warn("Environ is not a WSGI 1.0 environ.", WSGIWarning, stacklevel=3) - - script_name = environ.get("SCRIPT_NAME", "") - path_info = environ.get("PATH_INFO", "") - - if script_name and script_name[0] != "/": - warn( - "'SCRIPT_NAME' does not start with a slash: %r" % script_name, - WSGIWarning, - stacklevel=3, - ) - - if path_info and path_info[0] != "/": - warn( - "'PATH_INFO' does not start with a slash: %r" % path_info, - WSGIWarning, - stacklevel=3, - ) - - def check_start_response(self, status, headers, exc_info): - check_string("status", status) - status_code = status.split(None, 1)[0] - - if len(status_code) != 3 or not status_code.isdigit(): - warn(WSGIWarning("Status code must be three digits"), stacklevel=3) - - if len(status) < 4 or status[3] != " ": - warn( - WSGIWarning( - "Invalid value for status %r. Valid " - "status strings are three digits, a space " - "and a status explanation" - ), - stacklevel=3, - ) - - status_code = int(status_code) - - if status_code < 100: - warn(WSGIWarning("status code < 100 detected"), stacklevel=3) - - if type(headers) is not list: - warn(WSGIWarning("header list is not a list"), stacklevel=3) - - for item in headers: - if type(item) is not tuple or len(item) != 2: - warn(WSGIWarning("Headers must tuple 2-item tuples"), stacklevel=3) - name, value = item - if type(name) is not str or type(value) is not str: - warn(WSGIWarning("header items must be strings"), stacklevel=3) - if name.lower() == "status": - warn( - WSGIWarning( - "The status header is not supported due to " - "conflicts with the CGI spec." - ), - stacklevel=3, - ) - - if exc_info is not None and not isinstance(exc_info, tuple): - warn(WSGIWarning("invalid value for exc_info"), stacklevel=3) - - headers = Headers(headers) - self.check_headers(headers) - - return status_code, headers - - def check_headers(self, headers): - etag = headers.get("etag") - - if etag is not None: - if etag.startswith(("W/", "w/")): - if etag.startswith("w/"): - warn( - HTTPWarning("weak etag indicator should be upcase."), - stacklevel=4, - ) - - etag = etag[2:] - - if not (etag[:1] == etag[-1:] == '"'): - warn(HTTPWarning("unquoted etag emitted."), stacklevel=4) - - location = headers.get("location") - - if location is not None: - if not urlparse(location).netloc: - warn( - HTTPWarning("absolute URLs required for location header"), - stacklevel=4, - ) - - def check_iterator(self, app_iter): - if isinstance(app_iter, string_types): - warn( - "The application returned astring. The response will send one character" - " at a time to the client, which will kill performance. Return a list" - " or iterable instead.", - WSGIWarning, - stacklevel=3, - ) - - def __call__(self, *args, **kwargs): - if len(args) != 2: - warn("A WSGI app takes two arguments.", WSGIWarning, stacklevel=2) - - if kwargs: - warn( - "A WSGI app does not take keyword arguments.", WSGIWarning, stacklevel=2 - ) - - environ, start_response = args - - self.check_environ(environ) - environ["wsgi.input"] = InputStream(environ["wsgi.input"]) - environ["wsgi.errors"] = ErrorStream(environ["wsgi.errors"]) - - # Hook our own file wrapper in so that applications will always - # iterate to the end and we can check the content length. - environ["wsgi.file_wrapper"] = FileWrapper - - headers_set = [] - chunks = [] - - def checking_start_response(*args, **kwargs): - if len(args) not in (2, 3): - warn( - "Invalid number of arguments: %s, expected 2 or 3." % len(args), - WSGIWarning, - stacklevel=2, - ) - - if kwargs: - warn("'start_response' does not take keyword arguments.", WSGIWarning) - - status, headers = args[:2] - - if len(args) == 3: - exc_info = args[2] - else: - exc_info = None - - headers_set[:] = self.check_start_response(status, headers, exc_info) - return GuardedWrite(start_response(status, headers, exc_info), chunks) - - app_iter = self.app(environ, checking_start_response) - self.check_iterator(app_iter) - return GuardedIterator(app_iter, headers_set, chunks) diff --git a/python/werkzeug/middleware/profiler.py b/python/werkzeug/middleware/profiler.py deleted file mode 100644 index 32a14d9..0000000 --- a/python/werkzeug/middleware/profiler.py +++ /dev/null @@ -1,132 +0,0 @@ -""" -Application Profiler -==================== - -This module provides a middleware that profiles each request with the -:mod:`cProfile` module. This can help identify bottlenecks in your code -that may be slowing down your application. - -.. autoclass:: ProfilerMiddleware - -:copyright: 2007 Pallets -:license: BSD-3-Clause -""" -from __future__ import print_function - -import os.path -import sys -import time -from pstats import Stats - -try: - from cProfile import Profile -except ImportError: - from profile import Profile - - -class ProfilerMiddleware(object): - """Wrap a WSGI application and profile the execution of each - request. Responses are buffered so that timings are more exact. - - If ``stream`` is given, :class:`pstats.Stats` are written to it - after each request. If ``profile_dir`` is given, :mod:`cProfile` - data files are saved to that directory, one file per request. - - The filename can be customized by passing ``filename_format``. If - it is a string, it will be formatted using :meth:`str.format` with - the following fields available: - - - ``{method}`` - The request method; GET, POST, etc. - - ``{path}`` - The request path or 'root' should one not exist. - - ``{elapsed}`` - The elapsed time of the request. - - ``{time}`` - The time of the request. - - If it is a callable, it will be called with the WSGI ``environ`` - dict and should return a filename. - - :param app: The WSGI application to wrap. - :param stream: Write stats to this stream. Disable with ``None``. - :param sort_by: A tuple of columns to sort stats by. See - :meth:`pstats.Stats.sort_stats`. - :param restrictions: A tuple of restrictions to filter stats by. See - :meth:`pstats.Stats.print_stats`. - :param profile_dir: Save profile data files to this directory. - :param filename_format: Format string for profile data file names, - or a callable returning a name. See explanation above. - - .. code-block:: python - - from werkzeug.middleware.profiler import ProfilerMiddleware - app = ProfilerMiddleware(app) - - .. versionchanged:: 0.15 - Stats are written even if ``profile_dir`` is given, and can be - disable by passing ``stream=None``. - - .. versionadded:: 0.15 - Added ``filename_format``. - - .. versionadded:: 0.9 - Added ``restrictions`` and ``profile_dir``. - """ - - def __init__( - self, - app, - stream=sys.stdout, - sort_by=("time", "calls"), - restrictions=(), - profile_dir=None, - filename_format="{method}.{path}.{elapsed:.0f}ms.{time:.0f}.prof", - ): - self._app = app - self._stream = stream - self._sort_by = sort_by - self._restrictions = restrictions - self._profile_dir = profile_dir - self._filename_format = filename_format - - def __call__(self, environ, start_response): - response_body = [] - - def catching_start_response(status, headers, exc_info=None): - start_response(status, headers, exc_info) - return response_body.append - - def runapp(): - app_iter = self._app(environ, catching_start_response) - response_body.extend(app_iter) - - if hasattr(app_iter, "close"): - app_iter.close() - - profile = Profile() - start = time.time() - profile.runcall(runapp) - body = b"".join(response_body) - elapsed = time.time() - start - - if self._profile_dir is not None: - if callable(self._filename_format): - filename = self._filename_format(environ) - else: - filename = self._filename_format.format( - method=environ["REQUEST_METHOD"], - path=( - environ.get("PATH_INFO").strip("/").replace("/", ".") or "root" - ), - elapsed=elapsed * 1000.0, - time=time.time(), - ) - filename = os.path.join(self._profile_dir, filename) - profile.dump_stats(filename) - - if self._stream is not None: - stats = Stats(profile, stream=self._stream) - stats.sort_stats(*self._sort_by) - print("-" * 80, file=self._stream) - print("PATH: {!r}".format(environ.get("PATH_INFO", "")), file=self._stream) - stats.print_stats(*self._restrictions) - print("-" * 80 + "\n", file=self._stream) - - return [body] diff --git a/python/werkzeug/middleware/proxy_fix.py b/python/werkzeug/middleware/proxy_fix.py deleted file mode 100644 index dc1dacc..0000000 --- a/python/werkzeug/middleware/proxy_fix.py +++ /dev/null @@ -1,228 +0,0 @@ -""" -X-Forwarded-For Proxy Fix -========================= - -This module provides a middleware that adjusts the WSGI environ based on -``X-Forwarded-`` headers that proxies in front of an application may -set. - -When an application is running behind a proxy server, WSGI may see the -request as coming from that server rather than the real client. Proxies -set various headers to track where the request actually came from. - -This middleware should only be applied if the application is actually -behind such a proxy, and should be configured with the number of proxies -that are chained in front of it. Not all proxies set all the headers. -Since incoming headers can be faked, you must set how many proxies are -setting each header so the middleware knows what to trust. - -.. autoclass:: ProxyFix - -:copyright: 2007 Pallets -:license: BSD-3-Clause -""" -import warnings - - -class ProxyFix(object): - """Adjust the WSGI environ based on ``X-Forwarded-`` that proxies in - front of the application may set. - - - ``X-Forwarded-For`` sets ``REMOTE_ADDR``. - - ``X-Forwarded-Proto`` sets ``wsgi.url_scheme``. - - ``X-Forwarded-Host`` sets ``HTTP_HOST``, ``SERVER_NAME``, and - ``SERVER_PORT``. - - ``X-Forwarded-Port`` sets ``HTTP_HOST`` and ``SERVER_PORT``. - - ``X-Forwarded-Prefix`` sets ``SCRIPT_NAME``. - - You must tell the middleware how many proxies set each header so it - knows what values to trust. It is a security issue to trust values - that came from the client rather than a proxy. - - The original values of the headers are stored in the WSGI - environ as ``werkzeug.proxy_fix.orig``, a dict. - - :param app: The WSGI application to wrap. - :param x_for: Number of values to trust for ``X-Forwarded-For``. - :param x_proto: Number of values to trust for ``X-Forwarded-Proto``. - :param x_host: Number of values to trust for ``X-Forwarded-Host``. - :param x_port: Number of values to trust for ``X-Forwarded-Port``. - :param x_prefix: Number of values to trust for - ``X-Forwarded-Prefix``. - :param num_proxies: Deprecated, use ``x_for`` instead. - - .. code-block:: python - - from werkzeug.middleware.proxy_fix import ProxyFix - # App is behind one proxy that sets the -For and -Host headers. - app = ProxyFix(app, x_for=1, x_host=1) - - .. versionchanged:: 0.15 - All headers support multiple values. The ``num_proxies`` - argument is deprecated. Each header is configured with a - separate number of trusted proxies. - - .. versionchanged:: 0.15 - Original WSGI environ values are stored in the - ``werkzeug.proxy_fix.orig`` dict. ``orig_remote_addr``, - ``orig_wsgi_url_scheme``, and ``orig_http_host`` are deprecated - and will be removed in 1.0. - - .. versionchanged:: 0.15 - Support ``X-Forwarded-Port`` and ``X-Forwarded-Prefix``. - - .. versionchanged:: 0.15 - ``X-Fowarded-Host`` and ``X-Forwarded-Port`` modify - ``SERVER_NAME`` and ``SERVER_PORT``. - """ - - def __init__( - self, app, num_proxies=None, x_for=1, x_proto=0, x_host=0, x_port=0, x_prefix=0 - ): - self.app = app - self.x_for = x_for - self.x_proto = x_proto - self.x_host = x_host - self.x_port = x_port - self.x_prefix = x_prefix - self.num_proxies = num_proxies - - @property - def num_proxies(self): - """The number of proxies setting ``X-Forwarded-For`` in front - of the application. - - .. deprecated:: 0.15 - A separate number of trusted proxies is configured for each - header. ``num_proxies`` maps to ``x_for``. This method will - be removed in 1.0. - - :internal: - """ - warnings.warn( - "'num_proxies' is deprecated as of version 0.15 and will be" - " removed in version 1.0. Use 'x_for' instead.", - DeprecationWarning, - stacklevel=2, - ) - return self.x_for - - @num_proxies.setter - def num_proxies(self, value): - if value is not None: - warnings.warn( - "'num_proxies' is deprecated as of version 0.15 and" - " will be removed in version 1.0. Use 'x_for' instead.", - DeprecationWarning, - stacklevel=2, - ) - self.x_for = value - - def get_remote_addr(self, forwarded_for): - """Get the real ``remote_addr`` by looking backwards ``x_for`` - number of values in the ``X-Forwarded-For`` header. - - :param forwarded_for: List of values parsed from the - ``X-Forwarded-For`` header. - :return: The real ``remote_addr``, or ``None`` if there were not - at least ``x_for`` values. - - .. deprecated:: 0.15 - This is handled internally for each header. This method will - be removed in 1.0. - - .. versionchanged:: 0.9 - Use ``num_proxies`` instead of always picking the first - value. - - .. versionadded:: 0.8 - """ - warnings.warn( - "'get_remote_addr' is deprecated as of version 0.15 and" - " will be removed in version 1.0. It is now handled" - " internally for each header.", - DeprecationWarning, - ) - return self._get_trusted_comma(self.x_for, ",".join(forwarded_for)) - - def _get_trusted_comma(self, trusted, value): - """Get the real value from a comma-separated header based on the - configured number of trusted proxies. - - :param trusted: Number of values to trust in the header. - :param value: Header value to parse. - :return: The real value, or ``None`` if there are fewer values - than the number of trusted proxies. - - .. versionadded:: 0.15 - """ - if not (trusted and value): - return - values = [x.strip() for x in value.split(",")] - if len(values) >= trusted: - return values[-trusted] - - def __call__(self, environ, start_response): - """Modify the WSGI environ based on the various ``Forwarded`` - headers before calling the wrapped application. Store the - original environ values in ``werkzeug.proxy_fix.orig_{key}``. - """ - environ_get = environ.get - orig_remote_addr = environ_get("REMOTE_ADDR") - orig_wsgi_url_scheme = environ_get("wsgi.url_scheme") - orig_http_host = environ_get("HTTP_HOST") - environ.update( - { - "werkzeug.proxy_fix.orig": { - "REMOTE_ADDR": orig_remote_addr, - "wsgi.url_scheme": orig_wsgi_url_scheme, - "HTTP_HOST": orig_http_host, - "SERVER_NAME": environ_get("SERVER_NAME"), - "SERVER_PORT": environ_get("SERVER_PORT"), - "SCRIPT_NAME": environ_get("SCRIPT_NAME"), - }, - # todo: remove deprecated keys - "werkzeug.proxy_fix.orig_remote_addr": orig_remote_addr, - "werkzeug.proxy_fix.orig_wsgi_url_scheme": orig_wsgi_url_scheme, - "werkzeug.proxy_fix.orig_http_host": orig_http_host, - } - ) - - x_for = self._get_trusted_comma(self.x_for, environ_get("HTTP_X_FORWARDED_FOR")) - if x_for: - environ["REMOTE_ADDR"] = x_for - - x_proto = self._get_trusted_comma( - self.x_proto, environ_get("HTTP_X_FORWARDED_PROTO") - ) - if x_proto: - environ["wsgi.url_scheme"] = x_proto - - x_host = self._get_trusted_comma( - self.x_host, environ_get("HTTP_X_FORWARDED_HOST") - ) - if x_host: - environ["HTTP_HOST"] = x_host - parts = x_host.split(":", 1) - environ["SERVER_NAME"] = parts[0] - if len(parts) == 2: - environ["SERVER_PORT"] = parts[1] - - x_port = self._get_trusted_comma( - self.x_port, environ_get("HTTP_X_FORWARDED_PORT") - ) - if x_port: - host = environ.get("HTTP_HOST") - if host: - parts = host.split(":", 1) - host = parts[0] if len(parts) == 2 else host - environ["HTTP_HOST"] = "%s:%s" % (host, x_port) - environ["SERVER_PORT"] = x_port - - x_prefix = self._get_trusted_comma( - self.x_prefix, environ_get("HTTP_X_FORWARDED_PREFIX") - ) - if x_prefix: - environ["SCRIPT_NAME"] = x_prefix - - return self.app(environ, start_response) diff --git a/python/werkzeug/middleware/shared_data.py b/python/werkzeug/middleware/shared_data.py deleted file mode 100644 index a902281..0000000 --- a/python/werkzeug/middleware/shared_data.py +++ /dev/null @@ -1,260 +0,0 @@ -""" -Serve Shared Static Files -========================= - -.. autoclass:: SharedDataMiddleware - :members: is_allowed - -:copyright: 2007 Pallets -:license: BSD-3-Clause -""" -import mimetypes -import os -import posixpath -from datetime import datetime -from io import BytesIO -from time import mktime -from time import time -from zlib import adler32 - -from .._compat import PY2 -from .._compat import string_types -from ..filesystem import get_filesystem_encoding -from ..http import http_date -from ..http import is_resource_modified -from ..wsgi import get_path_info -from ..wsgi import wrap_file - - -class SharedDataMiddleware(object): - - """A WSGI middleware that provides static content for development - environments or simple server setups. Usage is quite simple:: - - import os - from werkzeug.wsgi import SharedDataMiddleware - - app = SharedDataMiddleware(app, { - '/static': os.path.join(os.path.dirname(__file__), 'static') - }) - - The contents of the folder ``./shared`` will now be available on - ``http://example.com/shared/``. This is pretty useful during development - because a standalone media server is not required. One can also mount - files on the root folder and still continue to use the application because - the shared data middleware forwards all unhandled requests to the - application, even if the requests are below one of the shared folders. - - If `pkg_resources` is available you can also tell the middleware to serve - files from package data:: - - app = SharedDataMiddleware(app, { - '/static': ('myapplication', 'static') - }) - - This will then serve the ``static`` folder in the `myapplication` - Python package. - - The optional `disallow` parameter can be a list of :func:`~fnmatch.fnmatch` - rules for files that are not accessible from the web. If `cache` is set to - `False` no caching headers are sent. - - Currently the middleware does not support non ASCII filenames. If the - encoding on the file system happens to be the encoding of the URI it may - work but this could also be by accident. We strongly suggest using ASCII - only file names for static files. - - The middleware will guess the mimetype using the Python `mimetype` - module. If it's unable to figure out the charset it will fall back - to `fallback_mimetype`. - - .. versionchanged:: 0.5 - The cache timeout is configurable now. - - .. versionadded:: 0.6 - The `fallback_mimetype` parameter was added. - - :param app: the application to wrap. If you don't want to wrap an - application you can pass it :exc:`NotFound`. - :param exports: a list or dict of exported files and folders. - :param disallow: a list of :func:`~fnmatch.fnmatch` rules. - :param fallback_mimetype: the fallback mimetype for unknown files. - :param cache: enable or disable caching headers. - :param cache_timeout: the cache timeout in seconds for the headers. - """ - - def __init__( - self, - app, - exports, - disallow=None, - cache=True, - cache_timeout=60 * 60 * 12, - fallback_mimetype="text/plain", - ): - self.app = app - self.exports = [] - self.cache = cache - self.cache_timeout = cache_timeout - - if hasattr(exports, "items"): - exports = exports.items() - - for key, value in exports: - if isinstance(value, tuple): - loader = self.get_package_loader(*value) - elif isinstance(value, string_types): - if os.path.isfile(value): - loader = self.get_file_loader(value) - else: - loader = self.get_directory_loader(value) - else: - raise TypeError("unknown def %r" % value) - - self.exports.append((key, loader)) - - if disallow is not None: - from fnmatch import fnmatch - - self.is_allowed = lambda x: not fnmatch(x, disallow) - - self.fallback_mimetype = fallback_mimetype - - def is_allowed(self, filename): - """Subclasses can override this method to disallow the access to - certain files. However by providing `disallow` in the constructor - this method is overwritten. - """ - return True - - def _opener(self, filename): - return lambda: ( - open(filename, "rb"), - datetime.utcfromtimestamp(os.path.getmtime(filename)), - int(os.path.getsize(filename)), - ) - - def get_file_loader(self, filename): - return lambda x: (os.path.basename(filename), self._opener(filename)) - - def get_package_loader(self, package, package_path): - from pkg_resources import DefaultProvider, ResourceManager, get_provider - - loadtime = datetime.utcnow() - provider = get_provider(package) - manager = ResourceManager() - filesystem_bound = isinstance(provider, DefaultProvider) - - def loader(path): - if path is None: - return None, None - - path = posixpath.join(package_path, path) - - if not provider.has_resource(path): - return None, None - - basename = posixpath.basename(path) - - if filesystem_bound: - return ( - basename, - self._opener(provider.get_resource_filename(manager, path)), - ) - - s = provider.get_resource_string(manager, path) - return basename, lambda: (BytesIO(s), loadtime, len(s)) - - return loader - - def get_directory_loader(self, directory): - def loader(path): - if path is not None: - path = os.path.join(directory, path) - else: - path = directory - - if os.path.isfile(path): - return os.path.basename(path), self._opener(path) - - return None, None - - return loader - - def generate_etag(self, mtime, file_size, real_filename): - if not isinstance(real_filename, bytes): - real_filename = real_filename.encode(get_filesystem_encoding()) - - return "wzsdm-%d-%s-%s" % ( - mktime(mtime.timetuple()), - file_size, - adler32(real_filename) & 0xFFFFFFFF, - ) - - def __call__(self, environ, start_response): - cleaned_path = get_path_info(environ) - - if PY2: - cleaned_path = cleaned_path.encode(get_filesystem_encoding()) - - # sanitize the path for non unix systems - cleaned_path = cleaned_path.strip("/") - - for sep in os.sep, os.altsep: - if sep and sep != "/": - cleaned_path = cleaned_path.replace(sep, "/") - - path = "/" + "/".join(x for x in cleaned_path.split("/") if x and x != "..") - file_loader = None - - for search_path, loader in self.exports: - if search_path == path: - real_filename, file_loader = loader(None) - - if file_loader is not None: - break - - if not search_path.endswith("/"): - search_path += "/" - - if path.startswith(search_path): - real_filename, file_loader = loader(path[len(search_path) :]) - - if file_loader is not None: - break - - if file_loader is None or not self.is_allowed(real_filename): - return self.app(environ, start_response) - - guessed_type = mimetypes.guess_type(real_filename) - mime_type = guessed_type[0] or self.fallback_mimetype - f, mtime, file_size = file_loader() - - headers = [("Date", http_date())] - - if self.cache: - timeout = self.cache_timeout - etag = self.generate_etag(mtime, file_size, real_filename) - headers += [ - ("Etag", '"%s"' % etag), - ("Cache-Control", "max-age=%d, public" % timeout), - ] - - if not is_resource_modified(environ, etag, last_modified=mtime): - f.close() - start_response("304 Not Modified", headers) - return [] - - headers.append(("Expires", http_date(time() + timeout))) - else: - headers.append(("Cache-Control", "public")) - - headers.extend( - ( - ("Content-Type", mime_type), - ("Content-Length", str(file_size)), - ("Last-Modified", http_date(mtime)), - ) - ) - start_response("200 OK", headers) - return wrap_file(environ, f) diff --git a/python/werkzeug/posixemulation.py b/python/werkzeug/posixemulation.py deleted file mode 100644 index 696b456..0000000 --- a/python/werkzeug/posixemulation.py +++ /dev/null @@ -1,117 +0,0 @@ -# -*- coding: utf-8 -*- -r""" - werkzeug.posixemulation - ~~~~~~~~~~~~~~~~~~~~~~~ - - Provides a POSIX emulation for some features that are relevant to - web applications. The main purpose is to simplify support for - systems such as Windows NT that are not 100% POSIX compatible. - - Currently this only implements a :func:`rename` function that - follows POSIX semantics. Eg: if the target file already exists it - will be replaced without asking. - - This module was introduced in 0.6.1 and is not a public interface. - It might become one in later versions of Werkzeug. - - :copyright: 2007 Pallets - :license: BSD-3-Clause -""" -import errno -import os -import random -import sys -import time - -from ._compat import to_unicode -from .filesystem import get_filesystem_encoding - -can_rename_open_file = False - -if os.name == "nt": - try: - import ctypes - - _MOVEFILE_REPLACE_EXISTING = 0x1 - _MOVEFILE_WRITE_THROUGH = 0x8 - _MoveFileEx = ctypes.windll.kernel32.MoveFileExW - - def _rename(src, dst): - src = to_unicode(src, get_filesystem_encoding()) - dst = to_unicode(dst, get_filesystem_encoding()) - if _rename_atomic(src, dst): - return True - retry = 0 - rv = False - while not rv and retry < 100: - rv = _MoveFileEx( - src, dst, _MOVEFILE_REPLACE_EXISTING | _MOVEFILE_WRITE_THROUGH - ) - if not rv: - time.sleep(0.001) - retry += 1 - return rv - - # new in Vista and Windows Server 2008 - _CreateTransaction = ctypes.windll.ktmw32.CreateTransaction - _CommitTransaction = ctypes.windll.ktmw32.CommitTransaction - _MoveFileTransacted = ctypes.windll.kernel32.MoveFileTransactedW - _CloseHandle = ctypes.windll.kernel32.CloseHandle - can_rename_open_file = True - - def _rename_atomic(src, dst): - ta = _CreateTransaction(None, 0, 0, 0, 0, 1000, "Werkzeug rename") - if ta == -1: - return False - try: - retry = 0 - rv = False - while not rv and retry < 100: - rv = _MoveFileTransacted( - src, - dst, - None, - None, - _MOVEFILE_REPLACE_EXISTING | _MOVEFILE_WRITE_THROUGH, - ta, - ) - if rv: - rv = _CommitTransaction(ta) - break - else: - time.sleep(0.001) - retry += 1 - return rv - finally: - _CloseHandle(ta) - - except Exception: - - def _rename(src, dst): - return False - - def _rename_atomic(src, dst): - return False - - def rename(src, dst): - # Try atomic or pseudo-atomic rename - if _rename(src, dst): - return - # Fall back to "move away and replace" - try: - os.rename(src, dst) - except OSError as e: - if e.errno != errno.EEXIST: - raise - old = "%s-%08x" % (dst, random.randint(0, sys.maxsize)) - os.rename(dst, old) - os.rename(src, dst) - try: - os.unlink(old) - except Exception: - pass - - -else: - rename = os.rename - can_rename_open_file = True diff --git a/python/werkzeug/routing.py b/python/werkzeug/routing.py deleted file mode 100644 index 6b1dd98..0000000 --- a/python/werkzeug/routing.py +++ /dev/null @@ -1,2026 +0,0 @@ -# -*- coding: utf-8 -*- -""" - werkzeug.routing - ~~~~~~~~~~~~~~~~ - - When it comes to combining multiple controller or view functions (however - you want to call them) you need a dispatcher. A simple way would be - applying regular expression tests on the ``PATH_INFO`` and calling - registered callback functions that return the value then. - - This module implements a much more powerful system than simple regular - expression matching because it can also convert values in the URLs and - build URLs. - - Here a simple example that creates an URL map for an application with - two subdomains (www and kb) and some URL rules: - - >>> m = Map([ - ... # Static URLs - ... Rule('/', endpoint='static/index'), - ... Rule('/about', endpoint='static/about'), - ... Rule('/help', endpoint='static/help'), - ... # Knowledge Base - ... Subdomain('kb', [ - ... Rule('/', endpoint='kb/index'), - ... Rule('/browse/', endpoint='kb/browse'), - ... Rule('/browse/<int:id>/', endpoint='kb/browse'), - ... Rule('/browse/<int:id>/<int:page>', endpoint='kb/browse') - ... ]) - ... ], default_subdomain='www') - - If the application doesn't use subdomains it's perfectly fine to not set - the default subdomain and not use the `Subdomain` rule factory. The endpoint - in the rules can be anything, for example import paths or unique - identifiers. The WSGI application can use those endpoints to get the - handler for that URL. It doesn't have to be a string at all but it's - recommended. - - Now it's possible to create a URL adapter for one of the subdomains and - build URLs: - - >>> c = m.bind('example.com') - >>> c.build("kb/browse", dict(id=42)) - 'http://kb.example.com/browse/42/' - >>> c.build("kb/browse", dict()) - 'http://kb.example.com/browse/' - >>> c.build("kb/browse", dict(id=42, page=3)) - 'http://kb.example.com/browse/42/3' - >>> c.build("static/about") - '/about' - >>> c.build("static/index", force_external=True) - 'http://www.example.com/' - - >>> c = m.bind('example.com', subdomain='kb') - >>> c.build("static/about") - 'http://www.example.com/about' - - The first argument to bind is the server name *without* the subdomain. - Per default it will assume that the script is mounted on the root, but - often that's not the case so you can provide the real mount point as - second argument: - - >>> c = m.bind('example.com', '/applications/example') - - The third argument can be the subdomain, if not given the default - subdomain is used. For more details about binding have a look at the - documentation of the `MapAdapter`. - - And here is how you can match URLs: - - >>> c = m.bind('example.com') - >>> c.match("/") - ('static/index', {}) - >>> c.match("/about") - ('static/about', {}) - >>> c = m.bind('example.com', '/', 'kb') - >>> c.match("/") - ('kb/index', {}) - >>> c.match("/browse/42/23") - ('kb/browse', {'id': 42, 'page': 23}) - - If matching fails you get a `NotFound` exception, if the rule thinks - it's a good idea to redirect (for example because the URL was defined - to have a slash at the end but the request was missing that slash) it - will raise a `RequestRedirect` exception. Both are subclasses of the - `HTTPException` so you can use those errors as responses in the - application. - - If matching succeeded but the URL rule was incompatible to the given - method (for example there were only rules for `GET` and `HEAD` and - routing system tried to match a `POST` request) a `MethodNotAllowed` - exception is raised. - - - :copyright: 2007 Pallets - :license: BSD-3-Clause -""" -import ast -import difflib -import posixpath -import re -import uuid -from pprint import pformat -from threading import Lock - -from ._compat import implements_to_string -from ._compat import iteritems -from ._compat import itervalues -from ._compat import native_string_result -from ._compat import string_types -from ._compat import text_type -from ._compat import to_bytes -from ._compat import to_unicode -from ._compat import wsgi_decoding_dance -from ._internal import _encode_idna -from ._internal import _get_environ -from .datastructures import ImmutableDict -from .datastructures import MultiDict -from .exceptions import BadHost -from .exceptions import HTTPException -from .exceptions import MethodNotAllowed -from .exceptions import NotFound -from .urls import _fast_url_quote -from .urls import url_encode -from .urls import url_join -from .urls import url_quote -from .utils import cached_property -from .utils import format_string -from .utils import redirect -from .wsgi import get_host - -_rule_re = re.compile( - r""" - (?P<static>[^<]*) # static rule data - < - (?: - (?P<converter>[a-zA-Z_][a-zA-Z0-9_]*) # converter name - (?:\((?P<args>.*?)\))? # converter arguments - \: # variable delimiter - )? - (?P<variable>[a-zA-Z_][a-zA-Z0-9_]*) # variable name - > - """, - re.VERBOSE, -) -_simple_rule_re = re.compile(r"<([^>]+)>") -_converter_args_re = re.compile( - r""" - ((?P<name>\w+)\s*=\s*)? - (?P<value> - True|False| - \d+.\d+| - \d+.| - \d+| - [\w\d_.]+| - [urUR]?(?P<stringval>"[^"]*?"|'[^']*') - )\s*, - """, - re.VERBOSE | re.UNICODE, -) - - -_PYTHON_CONSTANTS = {"None": None, "True": True, "False": False} - - -def _pythonize(value): - if value in _PYTHON_CONSTANTS: - return _PYTHON_CONSTANTS[value] - for convert in int, float: - try: - return convert(value) - except ValueError: - pass - if value[:1] == value[-1:] and value[0] in "\"'": - value = value[1:-1] - return text_type(value) - - -def parse_converter_args(argstr): - argstr += "," - args = [] - kwargs = {} - - for item in _converter_args_re.finditer(argstr): - value = item.group("stringval") - if value is None: - value = item.group("value") - value = _pythonize(value) - if not item.group("name"): - args.append(value) - else: - name = item.group("name") - kwargs[name] = value - - return tuple(args), kwargs - - -def parse_rule(rule): - """Parse a rule and return it as generator. Each iteration yields tuples - in the form ``(converter, arguments, variable)``. If the converter is - `None` it's a static url part, otherwise it's a dynamic one. - - :internal: - """ - pos = 0 - end = len(rule) - do_match = _rule_re.match - used_names = set() - while pos < end: - m = do_match(rule, pos) - if m is None: - break - data = m.groupdict() - if data["static"]: - yield None, None, data["static"] - variable = data["variable"] - converter = data["converter"] or "default" - if variable in used_names: - raise ValueError("variable name %r used twice." % variable) - used_names.add(variable) - yield converter, data["args"] or None, variable - pos = m.end() - if pos < end: - remaining = rule[pos:] - if ">" in remaining or "<" in remaining: - raise ValueError("malformed url rule: %r" % rule) - yield None, None, remaining - - -class RoutingException(Exception): - """Special exceptions that require the application to redirect, notifying - about missing urls, etc. - - :internal: - """ - - -class RequestRedirect(HTTPException, RoutingException): - """Raise if the map requests a redirect. This is for example the case if - `strict_slashes` are activated and an url that requires a trailing slash. - - The attribute `new_url` contains the absolute destination url. - """ - - code = 308 - - def __init__(self, new_url): - RoutingException.__init__(self, new_url) - self.new_url = new_url - - def get_response(self, environ): - return redirect(self.new_url, self.code) - - -class RequestSlash(RoutingException): - """Internal exception.""" - - -class RequestAliasRedirect(RoutingException): # noqa: B903 - """This rule is an alias and wants to redirect to the canonical URL.""" - - def __init__(self, matched_values): - self.matched_values = matched_values - - -@implements_to_string -class BuildError(RoutingException, LookupError): - """Raised if the build system cannot find a URL for an endpoint with the - values provided. - """ - - def __init__(self, endpoint, values, method, adapter=None): - LookupError.__init__(self, endpoint, values, method) - self.endpoint = endpoint - self.values = values - self.method = method - self.adapter = adapter - - @cached_property - def suggested(self): - return self.closest_rule(self.adapter) - - def closest_rule(self, adapter): - def _score_rule(rule): - return sum( - [ - 0.98 - * difflib.SequenceMatcher( - None, rule.endpoint, self.endpoint - ).ratio(), - 0.01 * bool(set(self.values or ()).issubset(rule.arguments)), - 0.01 * bool(rule.methods and self.method in rule.methods), - ] - ) - - if adapter and adapter.map._rules: - return max(adapter.map._rules, key=_score_rule) - - def __str__(self): - message = [] - message.append("Could not build url for endpoint %r" % self.endpoint) - if self.method: - message.append(" (%r)" % self.method) - if self.values: - message.append(" with values %r" % sorted(self.values.keys())) - message.append(".") - if self.suggested: - if self.endpoint == self.suggested.endpoint: - if self.method and self.method not in self.suggested.methods: - message.append( - " Did you mean to use methods %r?" - % sorted(self.suggested.methods) - ) - missing_values = self.suggested.arguments.union( - set(self.suggested.defaults or ()) - ) - set(self.values.keys()) - if missing_values: - message.append( - " Did you forget to specify values %r?" % sorted(missing_values) - ) - else: - message.append(" Did you mean %r instead?" % self.suggested.endpoint) - return u"".join(message) - - -class ValidationError(ValueError): - """Validation error. If a rule converter raises this exception the rule - does not match the current URL and the next URL is tried. - """ - - -class RuleFactory(object): - """As soon as you have more complex URL setups it's a good idea to use rule - factories to avoid repetitive tasks. Some of them are builtin, others can - be added by subclassing `RuleFactory` and overriding `get_rules`. - """ - - def get_rules(self, map): - """Subclasses of `RuleFactory` have to override this method and return - an iterable of rules.""" - raise NotImplementedError() - - -class Subdomain(RuleFactory): - """All URLs provided by this factory have the subdomain set to a - specific domain. For example if you want to use the subdomain for - the current language this can be a good setup:: - - url_map = Map([ - Rule('/', endpoint='#select_language'), - Subdomain('<string(length=2):lang_code>', [ - Rule('/', endpoint='index'), - Rule('/about', endpoint='about'), - Rule('/help', endpoint='help') - ]) - ]) - - All the rules except for the ``'#select_language'`` endpoint will now - listen on a two letter long subdomain that holds the language code - for the current request. - """ - - def __init__(self, subdomain, rules): - self.subdomain = subdomain - self.rules = rules - - def get_rules(self, map): - for rulefactory in self.rules: - for rule in rulefactory.get_rules(map): - rule = rule.empty() - rule.subdomain = self.subdomain - yield rule - - -class Submount(RuleFactory): - """Like `Subdomain` but prefixes the URL rule with a given string:: - - url_map = Map([ - Rule('/', endpoint='index'), - Submount('/blog', [ - Rule('/', endpoint='blog/index'), - Rule('/entry/<entry_slug>', endpoint='blog/show') - ]) - ]) - - Now the rule ``'blog/show'`` matches ``/blog/entry/<entry_slug>``. - """ - - def __init__(self, path, rules): - self.path = path.rstrip("/") - self.rules = rules - - def get_rules(self, map): - for rulefactory in self.rules: - for rule in rulefactory.get_rules(map): - rule = rule.empty() - rule.rule = self.path + rule.rule - yield rule - - -class EndpointPrefix(RuleFactory): - """Prefixes all endpoints (which must be strings for this factory) with - another string. This can be useful for sub applications:: - - url_map = Map([ - Rule('/', endpoint='index'), - EndpointPrefix('blog/', [Submount('/blog', [ - Rule('/', endpoint='index'), - Rule('/entry/<entry_slug>', endpoint='show') - ])]) - ]) - """ - - def __init__(self, prefix, rules): - self.prefix = prefix - self.rules = rules - - def get_rules(self, map): - for rulefactory in self.rules: - for rule in rulefactory.get_rules(map): - rule = rule.empty() - rule.endpoint = self.prefix + rule.endpoint - yield rule - - -class RuleTemplate(object): - """Returns copies of the rules wrapped and expands string templates in - the endpoint, rule, defaults or subdomain sections. - - Here a small example for such a rule template:: - - from werkzeug.routing import Map, Rule, RuleTemplate - - resource = RuleTemplate([ - Rule('/$name/', endpoint='$name.list'), - Rule('/$name/<int:id>', endpoint='$name.show') - ]) - - url_map = Map([resource(name='user'), resource(name='page')]) - - When a rule template is called the keyword arguments are used to - replace the placeholders in all the string parameters. - """ - - def __init__(self, rules): - self.rules = list(rules) - - def __call__(self, *args, **kwargs): - return RuleTemplateFactory(self.rules, dict(*args, **kwargs)) - - -class RuleTemplateFactory(RuleFactory): - """A factory that fills in template variables into rules. Used by - `RuleTemplate` internally. - - :internal: - """ - - def __init__(self, rules, context): - self.rules = rules - self.context = context - - def get_rules(self, map): - for rulefactory in self.rules: - for rule in rulefactory.get_rules(map): - new_defaults = subdomain = None - if rule.defaults: - new_defaults = {} - for key, value in iteritems(rule.defaults): - if isinstance(value, string_types): - value = format_string(value, self.context) - new_defaults[key] = value - if rule.subdomain is not None: - subdomain = format_string(rule.subdomain, self.context) - new_endpoint = rule.endpoint - if isinstance(new_endpoint, string_types): - new_endpoint = format_string(new_endpoint, self.context) - yield Rule( - format_string(rule.rule, self.context), - new_defaults, - subdomain, - rule.methods, - rule.build_only, - new_endpoint, - rule.strict_slashes, - ) - - -def _prefix_names(src): - """ast parse and prefix names with `.` to avoid collision with user vars""" - tree = ast.parse(src).body[0] - if isinstance(tree, ast.Expr): - tree = tree.value - for node in ast.walk(tree): - if isinstance(node, ast.Name): - node.id = "." + node.id - return tree - - -_CALL_CONVERTER_CODE_FMT = "self._converters[{elem!r}].to_url()" -_IF_KWARGS_URL_ENCODE_CODE = """\ -if kwargs: - q = '?' - params = self._encode_query_vars(kwargs) -else: - q = params = '' -""" -_IF_KWARGS_URL_ENCODE_AST = _prefix_names(_IF_KWARGS_URL_ENCODE_CODE) -_URL_ENCODE_AST_NAMES = (_prefix_names("q"), _prefix_names("params")) - - -@implements_to_string -class Rule(RuleFactory): - """A Rule represents one URL pattern. There are some options for `Rule` - that change the way it behaves and are passed to the `Rule` constructor. - Note that besides the rule-string all arguments *must* be keyword arguments - in order to not break the application on Werkzeug upgrades. - - `string` - Rule strings basically are just normal URL paths with placeholders in - the format ``<converter(arguments):name>`` where the converter and the - arguments are optional. If no converter is defined the `default` - converter is used which means `string` in the normal configuration. - - URL rules that end with a slash are branch URLs, others are leaves. - If you have `strict_slashes` enabled (which is the default), all - branch URLs that are matched without a trailing slash will trigger a - redirect to the same URL with the missing slash appended. - - The converters are defined on the `Map`. - - `endpoint` - The endpoint for this rule. This can be anything. A reference to a - function, a string, a number etc. The preferred way is using a string - because the endpoint is used for URL generation. - - `defaults` - An optional dict with defaults for other rules with the same endpoint. - This is a bit tricky but useful if you want to have unique URLs:: - - url_map = Map([ - Rule('/all/', defaults={'page': 1}, endpoint='all_entries'), - Rule('/all/page/<int:page>', endpoint='all_entries') - ]) - - If a user now visits ``http://example.com/all/page/1`` he will be - redirected to ``http://example.com/all/``. If `redirect_defaults` is - disabled on the `Map` instance this will only affect the URL - generation. - - `subdomain` - The subdomain rule string for this rule. If not specified the rule - only matches for the `default_subdomain` of the map. If the map is - not bound to a subdomain this feature is disabled. - - Can be useful if you want to have user profiles on different subdomains - and all subdomains are forwarded to your application:: - - url_map = Map([ - Rule('/', subdomain='<username>', endpoint='user/homepage'), - Rule('/stats', subdomain='<username>', endpoint='user/stats') - ]) - - `methods` - A sequence of http methods this rule applies to. If not specified, all - methods are allowed. For example this can be useful if you want different - endpoints for `POST` and `GET`. If methods are defined and the path - matches but the method matched against is not in this list or in the - list of another rule for that path the error raised is of the type - `MethodNotAllowed` rather than `NotFound`. If `GET` is present in the - list of methods and `HEAD` is not, `HEAD` is added automatically. - - .. versionchanged:: 0.6.1 - `HEAD` is now automatically added to the methods if `GET` is - present. The reason for this is that existing code often did not - work properly in servers not rewriting `HEAD` to `GET` - automatically and it was not documented how `HEAD` should be - treated. This was considered a bug in Werkzeug because of that. - - `strict_slashes` - Override the `Map` setting for `strict_slashes` only for this rule. If - not specified the `Map` setting is used. - - `build_only` - Set this to True and the rule will never match but will create a URL - that can be build. This is useful if you have resources on a subdomain - or folder that are not handled by the WSGI application (like static data) - - `redirect_to` - If given this must be either a string or callable. In case of a - callable it's called with the url adapter that triggered the match and - the values of the URL as keyword arguments and has to return the target - for the redirect, otherwise it has to be a string with placeholders in - rule syntax:: - - def foo_with_slug(adapter, id): - # ask the database for the slug for the old id. this of - # course has nothing to do with werkzeug. - return 'foo/' + Foo.get_slug_for_id(id) - - url_map = Map([ - Rule('/foo/<slug>', endpoint='foo'), - Rule('/some/old/url/<slug>', redirect_to='foo/<slug>'), - Rule('/other/old/url/<int:id>', redirect_to=foo_with_slug) - ]) - - When the rule is matched the routing system will raise a - `RequestRedirect` exception with the target for the redirect. - - Keep in mind that the URL will be joined against the URL root of the - script so don't use a leading slash on the target URL unless you - really mean root of that domain. - - `alias` - If enabled this rule serves as an alias for another rule with the same - endpoint and arguments. - - `host` - If provided and the URL map has host matching enabled this can be - used to provide a match rule for the whole host. This also means - that the subdomain feature is disabled. - - .. versionadded:: 0.7 - The `alias` and `host` parameters were added. - """ - - def __init__( - self, - string, - defaults=None, - subdomain=None, - methods=None, - build_only=False, - endpoint=None, - strict_slashes=None, - redirect_to=None, - alias=False, - host=None, - ): - if not string.startswith("/"): - raise ValueError("urls must start with a leading slash") - self.rule = string - self.is_leaf = not string.endswith("/") - - self.map = None - self.strict_slashes = strict_slashes - self.subdomain = subdomain - self.host = host - self.defaults = defaults - self.build_only = build_only - self.alias = alias - if methods is None: - self.methods = None - else: - if isinstance(methods, str): - raise TypeError("param `methods` should be `Iterable[str]`, not `str`") - self.methods = set([x.upper() for x in methods]) - if "HEAD" not in self.methods and "GET" in self.methods: - self.methods.add("HEAD") - self.endpoint = endpoint - self.redirect_to = redirect_to - - if defaults: - self.arguments = set(map(str, defaults)) - else: - self.arguments = set() - self._trace = self._converters = self._regex = self._argument_weights = None - - def empty(self): - """ - Return an unbound copy of this rule. - - This can be useful if want to reuse an already bound URL for another - map. See ``get_empty_kwargs`` to override what keyword arguments are - provided to the new copy. - """ - return type(self)(self.rule, **self.get_empty_kwargs()) - - def get_empty_kwargs(self): - """ - Provides kwargs for instantiating empty copy with empty() - - Use this method to provide custom keyword arguments to the subclass of - ``Rule`` when calling ``some_rule.empty()``. Helpful when the subclass - has custom keyword arguments that are needed at instantiation. - - Must return a ``dict`` that will be provided as kwargs to the new - instance of ``Rule``, following the initial ``self.rule`` value which - is always provided as the first, required positional argument. - """ - defaults = None - if self.defaults: - defaults = dict(self.defaults) - return dict( - defaults=defaults, - subdomain=self.subdomain, - methods=self.methods, - build_only=self.build_only, - endpoint=self.endpoint, - strict_slashes=self.strict_slashes, - redirect_to=self.redirect_to, - alias=self.alias, - host=self.host, - ) - - def get_rules(self, map): - yield self - - def refresh(self): - """Rebinds and refreshes the URL. Call this if you modified the - rule in place. - - :internal: - """ - self.bind(self.map, rebind=True) - - def bind(self, map, rebind=False): - """Bind the url to a map and create a regular expression based on - the information from the rule itself and the defaults from the map. - - :internal: - """ - if self.map is not None and not rebind: - raise RuntimeError("url rule %r already bound to map %r" % (self, self.map)) - self.map = map - if self.strict_slashes is None: - self.strict_slashes = map.strict_slashes - if self.subdomain is None: - self.subdomain = map.default_subdomain - self.compile() - - def get_converter(self, variable_name, converter_name, args, kwargs): - """Looks up the converter for the given parameter. - - .. versionadded:: 0.9 - """ - if converter_name not in self.map.converters: - raise LookupError("the converter %r does not exist" % converter_name) - return self.map.converters[converter_name](self.map, *args, **kwargs) - - def _encode_query_vars(self, query_vars): - return url_encode( - query_vars, - charset=self.map.charset, - sort=self.map.sort_parameters, - key=self.map.sort_key, - ) - - def compile(self): - """Compiles the regular expression and stores it.""" - assert self.map is not None, "rule not bound" - - if self.map.host_matching: - domain_rule = self.host or "" - else: - domain_rule = self.subdomain or "" - - self._trace = [] - self._converters = {} - self._static_weights = [] - self._argument_weights = [] - regex_parts = [] - - def _build_regex(rule): - index = 0 - for converter, arguments, variable in parse_rule(rule): - if converter is None: - regex_parts.append(re.escape(variable)) - self._trace.append((False, variable)) - for part in variable.split("/"): - if part: - self._static_weights.append((index, -len(part))) - else: - if arguments: - c_args, c_kwargs = parse_converter_args(arguments) - else: - c_args = () - c_kwargs = {} - convobj = self.get_converter(variable, converter, c_args, c_kwargs) - regex_parts.append("(?P<%s>%s)" % (variable, convobj.regex)) - self._converters[variable] = convobj - self._trace.append((True, variable)) - self._argument_weights.append(convobj.weight) - self.arguments.add(str(variable)) - index = index + 1 - - _build_regex(domain_rule) - regex_parts.append("\\|") - self._trace.append((False, "|")) - _build_regex(self.rule if self.is_leaf else self.rule.rstrip("/")) - if not self.is_leaf: - self._trace.append((False, "/")) - - self._build = self._compile_builder(False).__get__(self, None) - self._build_unknown = self._compile_builder(True).__get__(self, None) - - if self.build_only: - return - regex = r"^%s%s$" % ( - u"".join(regex_parts), - (not self.is_leaf or not self.strict_slashes) - and "(?<!/)(?P<__suffix__>/?)" - or "", - ) - self._regex = re.compile(regex, re.UNICODE) - - def match(self, path, method=None): - """Check if the rule matches a given path. Path is a string in the - form ``"subdomain|/path"`` and is assembled by the map. If - the map is doing host matching the subdomain part will be the host - instead. - - If the rule matches a dict with the converted values is returned, - otherwise the return value is `None`. - - :internal: - """ - if not self.build_only: - m = self._regex.search(path) - if m is not None: - groups = m.groupdict() - # we have a folder like part of the url without a trailing - # slash and strict slashes enabled. raise an exception that - # tells the map to redirect to the same url but with a - # trailing slash - if ( - self.strict_slashes - and not self.is_leaf - and not groups.pop("__suffix__") - and ( - method is None or self.methods is None or method in self.methods - ) - ): - raise RequestSlash() - # if we are not in strict slashes mode we have to remove - # a __suffix__ - elif not self.strict_slashes: - del groups["__suffix__"] - - result = {} - for name, value in iteritems(groups): - try: - value = self._converters[name].to_python(value) - except ValidationError: - return - result[str(name)] = value - if self.defaults: - result.update(self.defaults) - - if self.alias and self.map.redirect_defaults: - raise RequestAliasRedirect(result) - - return result - - @staticmethod - def _get_func_code(code, name): - globs, locs = {}, {} - exec(code, globs, locs) - return locs[name] - - def _compile_builder(self, append_unknown=True): - defaults = self.defaults or {} - dom_ops = [] - url_ops = [] - - opl = dom_ops - for is_dynamic, data in self._trace: - if data == "|" and opl is dom_ops: - opl = url_ops - continue - # this seems like a silly case to ever come up but: - # if a default is given for a value that appears in the rule, - # resolve it to a constant ahead of time - if is_dynamic and data in defaults: - data = self._converters[data].to_url(defaults[data]) - opl.append((False, data)) - elif not is_dynamic: - opl.append( - (False, url_quote(to_bytes(data, self.map.charset), safe="/:|+")) - ) - else: - opl.append((True, data)) - - def _convert(elem): - ret = _prefix_names(_CALL_CONVERTER_CODE_FMT.format(elem=elem)) - ret.args = [ast.Name(str(elem), ast.Load())] # str for py2 - return ret - - def _parts(ops): - parts = [ - _convert(elem) if is_dynamic else ast.Str(s=elem) - for is_dynamic, elem in ops - ] - parts = parts or [ast.Str("")] - # constant fold - ret = [parts[0]] - for p in parts[1:]: - if isinstance(p, ast.Str) and isinstance(ret[-1], ast.Str): - ret[-1] = ast.Str(ret[-1].s + p.s) - else: - ret.append(p) - return ret - - dom_parts = _parts(dom_ops) - url_parts = _parts(url_ops) - if not append_unknown: - body = [] - else: - body = [_IF_KWARGS_URL_ENCODE_AST] - url_parts.extend(_URL_ENCODE_AST_NAMES) - - def _join(parts): - if len(parts) == 1: # shortcut - return parts[0] - elif hasattr(ast, "JoinedStr"): # py36+ - return ast.JoinedStr(parts) - else: - call = _prefix_names('"".join()') - call.args = [ast.Tuple(parts, ast.Load())] - return call - - body.append( - ast.Return(ast.Tuple([_join(dom_parts), _join(url_parts)], ast.Load())) - ) - - # str is necessary for python2 - pargs = [ - str(elem) - for is_dynamic, elem in dom_ops + url_ops - if is_dynamic and elem not in defaults - ] - kargs = [str(k) for k in defaults] - - func_ast = _prefix_names("def _(): pass") - func_ast.name = "<builder:{!r}>".format(self.rule) - if hasattr(ast, "arg"): # py3 - func_ast.args.args.append(ast.arg(".self", None)) - for arg in pargs + kargs: - func_ast.args.args.append(ast.arg(arg, None)) - func_ast.args.kwarg = ast.arg(".kwargs", None) - else: - func_ast.args.args.append(ast.Name(".self", ast.Load())) - for arg in pargs + kargs: - func_ast.args.args.append(ast.Name(arg, ast.Load())) - func_ast.args.kwarg = ".kwargs" - for _ in kargs: - func_ast.args.defaults.append(ast.Str("")) - func_ast.body = body - - module = ast.fix_missing_locations(ast.Module([func_ast])) - code = compile(module, "<werkzeug routing>", "exec") - return self._get_func_code(code, func_ast.name) - - def build(self, values, append_unknown=True): - """Assembles the relative url for that rule and the subdomain. - If building doesn't work for some reasons `None` is returned. - - :internal: - """ - try: - if append_unknown: - return self._build_unknown(**values) - else: - return self._build(**values) - except ValidationError: - return None - - def provides_defaults_for(self, rule): - """Check if this rule has defaults for a given rule. - - :internal: - """ - return ( - not self.build_only - and self.defaults - and self.endpoint == rule.endpoint - and self != rule - and self.arguments == rule.arguments - ) - - def suitable_for(self, values, method=None): - """Check if the dict of values has enough data for url generation. - - :internal: - """ - # if a method was given explicitly and that method is not supported - # by this rule, this rule is not suitable. - if ( - method is not None - and self.methods is not None - and method not in self.methods - ): - return False - - defaults = self.defaults or () - - # all arguments required must be either in the defaults dict or - # the value dictionary otherwise it's not suitable - for key in self.arguments: - if key not in defaults and key not in values: - return False - - # in case defaults are given we ensure that either the value was - # skipped or the value is the same as the default value. - if defaults: - for key, value in iteritems(defaults): - if key in values and value != values[key]: - return False - - return True - - def match_compare_key(self): - """The match compare key for sorting. - - Current implementation: - - 1. rules without any arguments come first for performance - reasons only as we expect them to match faster and some - common ones usually don't have any arguments (index pages etc.) - 2. rules with more static parts come first so the second argument - is the negative length of the number of the static weights. - 3. we order by static weights, which is a combination of index - and length - 4. The more complex rules come first so the next argument is the - negative length of the number of argument weights. - 5. lastly we order by the actual argument weights. - - :internal: - """ - return ( - bool(self.arguments), - -len(self._static_weights), - self._static_weights, - -len(self._argument_weights), - self._argument_weights, - ) - - def build_compare_key(self): - """The build compare key for sorting. - - :internal: - """ - return 1 if self.alias else 0, -len(self.arguments), -len(self.defaults or ()) - - def __eq__(self, other): - return self.__class__ is other.__class__ and self._trace == other._trace - - __hash__ = None - - def __ne__(self, other): - return not self.__eq__(other) - - def __str__(self): - return self.rule - - @native_string_result - def __repr__(self): - if self.map is None: - return u"<%s (unbound)>" % self.__class__.__name__ - tmp = [] - for is_dynamic, data in self._trace: - if is_dynamic: - tmp.append(u"<%s>" % data) - else: - tmp.append(data) - return u"<%s %s%s -> %s>" % ( - self.__class__.__name__, - repr((u"".join(tmp)).lstrip(u"|")).lstrip(u"u"), - self.methods is not None and u" (%s)" % u", ".join(self.methods) or u"", - self.endpoint, - ) - - -class BaseConverter(object): - """Base class for all converters.""" - - regex = "[^/]+" - weight = 100 - - def __init__(self, map): - self.map = map - - def to_python(self, value): - return value - - def to_url(self, value): - if isinstance(value, (bytes, bytearray)): - return _fast_url_quote(value) - return _fast_url_quote(text_type(value).encode(self.map.charset)) - - -class UnicodeConverter(BaseConverter): - """This converter is the default converter and accepts any string but - only one path segment. Thus the string can not include a slash. - - This is the default validator. - - Example:: - - Rule('/pages/<page>'), - Rule('/<string(length=2):lang_code>') - - :param map: the :class:`Map`. - :param minlength: the minimum length of the string. Must be greater - or equal 1. - :param maxlength: the maximum length of the string. - :param length: the exact length of the string. - """ - - def __init__(self, map, minlength=1, maxlength=None, length=None): - BaseConverter.__init__(self, map) - if length is not None: - length = "{%d}" % int(length) - else: - if maxlength is None: - maxlength = "" - else: - maxlength = int(maxlength) - length = "{%s,%s}" % (int(minlength), maxlength) - self.regex = "[^/]" + length - - -class AnyConverter(BaseConverter): - """Matches one of the items provided. Items can either be Python - identifiers or strings:: - - Rule('/<any(about, help, imprint, class, "foo,bar"):page_name>') - - :param map: the :class:`Map`. - :param items: this function accepts the possible items as positional - arguments. - """ - - def __init__(self, map, *items): - BaseConverter.__init__(self, map) - self.regex = "(?:%s)" % "|".join([re.escape(x) for x in items]) - - -class PathConverter(BaseConverter): - """Like the default :class:`UnicodeConverter`, but it also matches - slashes. This is useful for wikis and similar applications:: - - Rule('/<path:wikipage>') - Rule('/<path:wikipage>/edit') - - :param map: the :class:`Map`. - """ - - regex = "[^/].*?" - weight = 200 - - -class NumberConverter(BaseConverter): - """Baseclass for `IntegerConverter` and `FloatConverter`. - - :internal: - """ - - weight = 50 - - def __init__(self, map, fixed_digits=0, min=None, max=None, signed=False): - if signed: - self.regex = self.signed_regex - BaseConverter.__init__(self, map) - self.fixed_digits = fixed_digits - self.min = min - self.max = max - self.signed = signed - - def to_python(self, value): - if self.fixed_digits and len(value) != self.fixed_digits: - raise ValidationError() - value = self.num_convert(value) - if (self.min is not None and value < self.min) or ( - self.max is not None and value > self.max - ): - raise ValidationError() - return value - - def to_url(self, value): - value = self.num_convert(value) - if self.fixed_digits: - value = ("%%0%sd" % self.fixed_digits) % value - return str(value) - - @property - def signed_regex(self): - return r"-?" + self.regex - - -class IntegerConverter(NumberConverter): - """This converter only accepts integer values:: - - Rule("/page/<int:page>") - - By default it only accepts unsigned, positive values. The ``signed`` - parameter will enable signed, negative values. :: - - Rule("/page/<int(signed=True):page>") - - :param map: The :class:`Map`. - :param fixed_digits: The number of fixed digits in the URL. If you - set this to ``4`` for example, the rule will only match if the - URL looks like ``/0001/``. The default is variable length. - :param min: The minimal value. - :param max: The maximal value. - :param signed: Allow signed (negative) values. - - .. versionadded:: 0.15 - The ``signed`` parameter. - """ - - regex = r"\d+" - num_convert = int - - -class FloatConverter(NumberConverter): - """This converter only accepts floating point values:: - - Rule("/probability/<float:probability>") - - By default it only accepts unsigned, positive values. The ``signed`` - parameter will enable signed, negative values. :: - - Rule("/offset/<float(signed=True):offset>") - - :param map: The :class:`Map`. - :param min: The minimal value. - :param max: The maximal value. - :param signed: Allow signed (negative) values. - - .. versionadded:: 0.15 - The ``signed`` parameter. - """ - - regex = r"\d+\.\d+" - num_convert = float - - def __init__(self, map, min=None, max=None, signed=False): - NumberConverter.__init__(self, map, min=min, max=max, signed=signed) - - -class UUIDConverter(BaseConverter): - """This converter only accepts UUID strings:: - - Rule('/object/<uuid:identifier>') - - .. versionadded:: 0.10 - - :param map: the :class:`Map`. - """ - - regex = ( - r"[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-" - r"[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}" - ) - - def to_python(self, value): - return uuid.UUID(value) - - def to_url(self, value): - return str(value) - - -#: the default converter mapping for the map. -DEFAULT_CONVERTERS = { - "default": UnicodeConverter, - "string": UnicodeConverter, - "any": AnyConverter, - "path": PathConverter, - "int": IntegerConverter, - "float": FloatConverter, - "uuid": UUIDConverter, -} - - -class Map(object): - """The map class stores all the URL rules and some configuration - parameters. Some of the configuration values are only stored on the - `Map` instance since those affect all rules, others are just defaults - and can be overridden for each rule. Note that you have to specify all - arguments besides the `rules` as keyword arguments! - - :param rules: sequence of url rules for this map. - :param default_subdomain: The default subdomain for rules without a - subdomain defined. - :param charset: charset of the url. defaults to ``"utf-8"`` - :param strict_slashes: Take care of trailing slashes. - :param redirect_defaults: This will redirect to the default rule if it - wasn't visited that way. This helps creating - unique URLs. - :param converters: A dict of converters that adds additional converters - to the list of converters. If you redefine one - converter this will override the original one. - :param sort_parameters: If set to `True` the url parameters are sorted. - See `url_encode` for more details. - :param sort_key: The sort key function for `url_encode`. - :param encoding_errors: the error method to use for decoding - :param host_matching: if set to `True` it enables the host matching - feature and disables the subdomain one. If - enabled the `host` parameter to rules is used - instead of the `subdomain` one. - - .. versionadded:: 0.5 - `sort_parameters` and `sort_key` was added. - - .. versionadded:: 0.7 - `encoding_errors` and `host_matching` was added. - """ - - #: A dict of default converters to be used. - default_converters = ImmutableDict(DEFAULT_CONVERTERS) - - def __init__( - self, - rules=None, - default_subdomain="", - charset="utf-8", - strict_slashes=True, - redirect_defaults=True, - converters=None, - sort_parameters=False, - sort_key=None, - encoding_errors="replace", - host_matching=False, - ): - self._rules = [] - self._rules_by_endpoint = {} - self._remap = True - self._remap_lock = Lock() - - self.default_subdomain = default_subdomain - self.charset = charset - self.encoding_errors = encoding_errors - self.strict_slashes = strict_slashes - self.redirect_defaults = redirect_defaults - self.host_matching = host_matching - - self.converters = self.default_converters.copy() - if converters: - self.converters.update(converters) - - self.sort_parameters = sort_parameters - self.sort_key = sort_key - - for rulefactory in rules or (): - self.add(rulefactory) - - def is_endpoint_expecting(self, endpoint, *arguments): - """Iterate over all rules and check if the endpoint expects - the arguments provided. This is for example useful if you have - some URLs that expect a language code and others that do not and - you want to wrap the builder a bit so that the current language - code is automatically added if not provided but endpoints expect - it. - - :param endpoint: the endpoint to check. - :param arguments: this function accepts one or more arguments - as positional arguments. Each one of them is - checked. - """ - self.update() - arguments = set(arguments) - for rule in self._rules_by_endpoint[endpoint]: - if arguments.issubset(rule.arguments): - return True - return False - - def iter_rules(self, endpoint=None): - """Iterate over all rules or the rules of an endpoint. - - :param endpoint: if provided only the rules for that endpoint - are returned. - :return: an iterator - """ - self.update() - if endpoint is not None: - return iter(self._rules_by_endpoint[endpoint]) - return iter(self._rules) - - def add(self, rulefactory): - """Add a new rule or factory to the map and bind it. Requires that the - rule is not bound to another map. - - :param rulefactory: a :class:`Rule` or :class:`RuleFactory` - """ - for rule in rulefactory.get_rules(self): - rule.bind(self) - self._rules.append(rule) - self._rules_by_endpoint.setdefault(rule.endpoint, []).append(rule) - self._remap = True - - def bind( - self, - server_name, - script_name=None, - subdomain=None, - url_scheme="http", - default_method="GET", - path_info=None, - query_args=None, - ): - """Return a new :class:`MapAdapter` with the details specified to the - call. Note that `script_name` will default to ``'/'`` if not further - specified or `None`. The `server_name` at least is a requirement - because the HTTP RFC requires absolute URLs for redirects and so all - redirect exceptions raised by Werkzeug will contain the full canonical - URL. - - If no path_info is passed to :meth:`match` it will use the default path - info passed to bind. While this doesn't really make sense for - manual bind calls, it's useful if you bind a map to a WSGI - environment which already contains the path info. - - `subdomain` will default to the `default_subdomain` for this map if - no defined. If there is no `default_subdomain` you cannot use the - subdomain feature. - - .. versionadded:: 0.7 - `query_args` added - - .. versionadded:: 0.8 - `query_args` can now also be a string. - - .. versionchanged:: 0.15 - ``path_info`` defaults to ``'/'`` if ``None``. - """ - server_name = server_name.lower() - if self.host_matching: - if subdomain is not None: - raise RuntimeError("host matching enabled and a subdomain was provided") - elif subdomain is None: - subdomain = self.default_subdomain - if script_name is None: - script_name = "/" - if path_info is None: - path_info = "/" - try: - server_name = _encode_idna(server_name) - except UnicodeError: - raise BadHost() - return MapAdapter( - self, - server_name, - script_name, - subdomain, - url_scheme, - path_info, - default_method, - query_args, - ) - - def bind_to_environ(self, environ, server_name=None, subdomain=None): - """Like :meth:`bind` but you can pass it an WSGI environment and it - will fetch the information from that dictionary. Note that because of - limitations in the protocol there is no way to get the current - subdomain and real `server_name` from the environment. If you don't - provide it, Werkzeug will use `SERVER_NAME` and `SERVER_PORT` (or - `HTTP_HOST` if provided) as used `server_name` with disabled subdomain - feature. - - If `subdomain` is `None` but an environment and a server name is - provided it will calculate the current subdomain automatically. - Example: `server_name` is ``'example.com'`` and the `SERVER_NAME` - in the wsgi `environ` is ``'staging.dev.example.com'`` the calculated - subdomain will be ``'staging.dev'``. - - If the object passed as environ has an environ attribute, the value of - this attribute is used instead. This allows you to pass request - objects. Additionally `PATH_INFO` added as a default of the - :class:`MapAdapter` so that you don't have to pass the path info to - the match method. - - .. versionchanged:: 0.5 - previously this method accepted a bogus `calculate_subdomain` - parameter that did not have any effect. It was removed because - of that. - - .. versionchanged:: 0.8 - This will no longer raise a ValueError when an unexpected server - name was passed. - - :param environ: a WSGI environment. - :param server_name: an optional server name hint (see above). - :param subdomain: optionally the current subdomain (see above). - """ - environ = _get_environ(environ) - - wsgi_server_name = get_host(environ).lower() - - if server_name is None: - server_name = wsgi_server_name - else: - server_name = server_name.lower() - - if subdomain is None and not self.host_matching: - cur_server_name = wsgi_server_name.split(".") - real_server_name = server_name.split(".") - offset = -len(real_server_name) - if cur_server_name[offset:] != real_server_name: - # This can happen even with valid configs if the server was - # accesssed directly by IP address under some situations. - # Instead of raising an exception like in Werkzeug 0.7 or - # earlier we go by an invalid subdomain which will result - # in a 404 error on matching. - subdomain = "<invalid>" - else: - subdomain = ".".join(filter(None, cur_server_name[:offset])) - - def _get_wsgi_string(name): - val = environ.get(name) - if val is not None: - return wsgi_decoding_dance(val, self.charset) - - script_name = _get_wsgi_string("SCRIPT_NAME") - path_info = _get_wsgi_string("PATH_INFO") - query_args = _get_wsgi_string("QUERY_STRING") - return Map.bind( - self, - server_name, - script_name, - subdomain, - environ["wsgi.url_scheme"], - environ["REQUEST_METHOD"], - path_info, - query_args=query_args, - ) - - def update(self): - """Called before matching and building to keep the compiled rules - in the correct order after things changed. - """ - if not self._remap: - return - - with self._remap_lock: - if not self._remap: - return - - self._rules.sort(key=lambda x: x.match_compare_key()) - for rules in itervalues(self._rules_by_endpoint): - rules.sort(key=lambda x: x.build_compare_key()) - self._remap = False - - def __repr__(self): - rules = self.iter_rules() - return "%s(%s)" % (self.__class__.__name__, pformat(list(rules))) - - -class MapAdapter(object): - - """Returned by :meth:`Map.bind` or :meth:`Map.bind_to_environ` and does - the URL matching and building based on runtime information. - """ - - def __init__( - self, - map, - server_name, - script_name, - subdomain, - url_scheme, - path_info, - default_method, - query_args=None, - ): - self.map = map - self.server_name = to_unicode(server_name) - script_name = to_unicode(script_name) - if not script_name.endswith(u"/"): - script_name += u"/" - self.script_name = script_name - self.subdomain = to_unicode(subdomain) - self.url_scheme = to_unicode(url_scheme) - self.path_info = to_unicode(path_info) - self.default_method = to_unicode(default_method) - self.query_args = query_args - - def dispatch( - self, view_func, path_info=None, method=None, catch_http_exceptions=False - ): - """Does the complete dispatching process. `view_func` is called with - the endpoint and a dict with the values for the view. It should - look up the view function, call it, and return a response object - or WSGI application. http exceptions are not caught by default - so that applications can display nicer error messages by just - catching them by hand. If you want to stick with the default - error messages you can pass it ``catch_http_exceptions=True`` and - it will catch the http exceptions. - - Here a small example for the dispatch usage:: - - from werkzeug.wrappers import Request, Response - from werkzeug.wsgi import responder - from werkzeug.routing import Map, Rule - - def on_index(request): - return Response('Hello from the index') - - url_map = Map([Rule('/', endpoint='index')]) - views = {'index': on_index} - - @responder - def application(environ, start_response): - request = Request(environ) - urls = url_map.bind_to_environ(environ) - return urls.dispatch(lambda e, v: views[e](request, **v), - catch_http_exceptions=True) - - Keep in mind that this method might return exception objects, too, so - use :class:`Response.force_type` to get a response object. - - :param view_func: a function that is called with the endpoint as - first argument and the value dict as second. Has - to dispatch to the actual view function with this - information. (see above) - :param path_info: the path info to use for matching. Overrides the - path info specified on binding. - :param method: the HTTP method used for matching. Overrides the - method specified on binding. - :param catch_http_exceptions: set to `True` to catch any of the - werkzeug :class:`HTTPException`\\s. - """ - try: - try: - endpoint, args = self.match(path_info, method) - except RequestRedirect as e: - return e - return view_func(endpoint, args) - except HTTPException as e: - if catch_http_exceptions: - return e - raise - - def match(self, path_info=None, method=None, return_rule=False, query_args=None): - """The usage is simple: you just pass the match method the current - path info as well as the method (which defaults to `GET`). The - following things can then happen: - - - you receive a `NotFound` exception that indicates that no URL is - matching. A `NotFound` exception is also a WSGI application you - can call to get a default page not found page (happens to be the - same object as `werkzeug.exceptions.NotFound`) - - - you receive a `MethodNotAllowed` exception that indicates that there - is a match for this URL but not for the current request method. - This is useful for RESTful applications. - - - you receive a `RequestRedirect` exception with a `new_url` - attribute. This exception is used to notify you about a request - Werkzeug requests from your WSGI application. This is for example the - case if you request ``/foo`` although the correct URL is ``/foo/`` - You can use the `RequestRedirect` instance as response-like object - similar to all other subclasses of `HTTPException`. - - - you get a tuple in the form ``(endpoint, arguments)`` if there is - a match (unless `return_rule` is True, in which case you get a tuple - in the form ``(rule, arguments)``) - - If the path info is not passed to the match method the default path - info of the map is used (defaults to the root URL if not defined - explicitly). - - All of the exceptions raised are subclasses of `HTTPException` so they - can be used as WSGI responses. They will all render generic error or - redirect pages. - - Here is a small example for matching: - - >>> m = Map([ - ... Rule('/', endpoint='index'), - ... Rule('/downloads/', endpoint='downloads/index'), - ... Rule('/downloads/<int:id>', endpoint='downloads/show') - ... ]) - >>> urls = m.bind("example.com", "/") - >>> urls.match("/", "GET") - ('index', {}) - >>> urls.match("/downloads/42") - ('downloads/show', {'id': 42}) - - And here is what happens on redirect and missing URLs: - - >>> urls.match("/downloads") - Traceback (most recent call last): - ... - RequestRedirect: http://example.com/downloads/ - >>> urls.match("/missing") - Traceback (most recent call last): - ... - NotFound: 404 Not Found - - :param path_info: the path info to use for matching. Overrides the - path info specified on binding. - :param method: the HTTP method used for matching. Overrides the - method specified on binding. - :param return_rule: return the rule that matched instead of just the - endpoint (defaults to `False`). - :param query_args: optional query arguments that are used for - automatic redirects as string or dictionary. It's - currently not possible to use the query arguments - for URL matching. - - .. versionadded:: 0.6 - `return_rule` was added. - - .. versionadded:: 0.7 - `query_args` was added. - - .. versionchanged:: 0.8 - `query_args` can now also be a string. - """ - self.map.update() - if path_info is None: - path_info = self.path_info - else: - path_info = to_unicode(path_info, self.map.charset) - if query_args is None: - query_args = self.query_args - method = (method or self.default_method).upper() - - path = u"%s|%s" % ( - self.map.host_matching and self.server_name or self.subdomain, - path_info and "/%s" % path_info.lstrip("/"), - ) - - have_match_for = set() - for rule in self.map._rules: - try: - rv = rule.match(path, method) - except RequestSlash: - raise RequestRedirect( - self.make_redirect_url( - url_quote(path_info, self.map.charset, safe="/:|+") + "/", - query_args, - ) - ) - except RequestAliasRedirect as e: - raise RequestRedirect( - self.make_alias_redirect_url( - path, rule.endpoint, e.matched_values, method, query_args - ) - ) - if rv is None: - continue - if rule.methods is not None and method not in rule.methods: - have_match_for.update(rule.methods) - continue - - if self.map.redirect_defaults: - redirect_url = self.get_default_redirect(rule, method, rv, query_args) - if redirect_url is not None: - raise RequestRedirect(redirect_url) - - if rule.redirect_to is not None: - if isinstance(rule.redirect_to, string_types): - - def _handle_match(match): - value = rv[match.group(1)] - return rule._converters[match.group(1)].to_url(value) - - redirect_url = _simple_rule_re.sub(_handle_match, rule.redirect_to) - else: - redirect_url = rule.redirect_to(self, **rv) - raise RequestRedirect( - str( - url_join( - "%s://%s%s%s" - % ( - self.url_scheme or "http", - self.subdomain + "." if self.subdomain else "", - self.server_name, - self.script_name, - ), - redirect_url, - ) - ) - ) - - if return_rule: - return rule, rv - else: - return rule.endpoint, rv - - if have_match_for: - raise MethodNotAllowed(valid_methods=list(have_match_for)) - raise NotFound() - - def test(self, path_info=None, method=None): - """Test if a rule would match. Works like `match` but returns `True` - if the URL matches, or `False` if it does not exist. - - :param path_info: the path info to use for matching. Overrides the - path info specified on binding. - :param method: the HTTP method used for matching. Overrides the - method specified on binding. - """ - try: - self.match(path_info, method) - except RequestRedirect: - pass - except HTTPException: - return False - return True - - def allowed_methods(self, path_info=None): - """Returns the valid methods that match for a given path. - - .. versionadded:: 0.7 - """ - try: - self.match(path_info, method="--") - except MethodNotAllowed as e: - return e.valid_methods - except HTTPException: - pass - return [] - - def get_host(self, domain_part): - """Figures out the full host name for the given domain part. The - domain part is a subdomain in case host matching is disabled or - a full host name. - """ - if self.map.host_matching: - if domain_part is None: - return self.server_name - return to_unicode(domain_part, "ascii") - subdomain = domain_part - if subdomain is None: - subdomain = self.subdomain - else: - subdomain = to_unicode(subdomain, "ascii") - return (subdomain + u"." if subdomain else u"") + self.server_name - - def get_default_redirect(self, rule, method, values, query_args): - """A helper that returns the URL to redirect to if it finds one. - This is used for default redirecting only. - - :internal: - """ - assert self.map.redirect_defaults - for r in self.map._rules_by_endpoint[rule.endpoint]: - # every rule that comes after this one, including ourself - # has a lower priority for the defaults. We order the ones - # with the highest priority up for building. - if r is rule: - break - if r.provides_defaults_for(rule) and r.suitable_for(values, method): - values.update(r.defaults) - domain_part, path = r.build(values) - return self.make_redirect_url(path, query_args, domain_part=domain_part) - - def encode_query_args(self, query_args): - if not isinstance(query_args, string_types): - query_args = url_encode(query_args, self.map.charset) - return query_args - - def make_redirect_url(self, path_info, query_args=None, domain_part=None): - """Creates a redirect URL. - - :internal: - """ - suffix = "" - if query_args: - suffix = "?" + self.encode_query_args(query_args) - return str( - "%s://%s/%s%s" - % ( - self.url_scheme or "http", - self.get_host(domain_part), - posixpath.join( - self.script_name[:-1].lstrip("/"), path_info.lstrip("/") - ), - suffix, - ) - ) - - def make_alias_redirect_url(self, path, endpoint, values, method, query_args): - """Internally called to make an alias redirect URL.""" - url = self.build( - endpoint, values, method, append_unknown=False, force_external=True - ) - if query_args: - url += "?" + self.encode_query_args(query_args) - assert url != path, "detected invalid alias setting. No canonical URL found" - return url - - def _partial_build(self, endpoint, values, method, append_unknown): - """Helper for :meth:`build`. Returns subdomain and path for the - rule that accepts this endpoint, values and method. - - :internal: - """ - # in case the method is none, try with the default method first - if method is None: - rv = self._partial_build( - endpoint, values, self.default_method, append_unknown - ) - if rv is not None: - return rv - - # default method did not match or a specific method is passed, - # check all and go with first result. - for rule in self.map._rules_by_endpoint.get(endpoint, ()): - if rule.suitable_for(values, method): - rv = rule.build(values, append_unknown) - if rv is not None: - return rv - - def build( - self, - endpoint, - values=None, - method=None, - force_external=False, - append_unknown=True, - ): - """Building URLs works pretty much the other way round. Instead of - `match` you call `build` and pass it the endpoint and a dict of - arguments for the placeholders. - - The `build` function also accepts an argument called `force_external` - which, if you set it to `True` will force external URLs. Per default - external URLs (include the server name) will only be used if the - target URL is on a different subdomain. - - >>> m = Map([ - ... Rule('/', endpoint='index'), - ... Rule('/downloads/', endpoint='downloads/index'), - ... Rule('/downloads/<int:id>', endpoint='downloads/show') - ... ]) - >>> urls = m.bind("example.com", "/") - >>> urls.build("index", {}) - '/' - >>> urls.build("downloads/show", {'id': 42}) - '/downloads/42' - >>> urls.build("downloads/show", {'id': 42}, force_external=True) - 'http://example.com/downloads/42' - - Because URLs cannot contain non ASCII data you will always get - bytestrings back. Non ASCII characters are urlencoded with the - charset defined on the map instance. - - Additional values are converted to unicode and appended to the URL as - URL querystring parameters: - - >>> urls.build("index", {'q': 'My Searchstring'}) - '/?q=My+Searchstring' - - When processing those additional values, lists are furthermore - interpreted as multiple values (as per - :py:class:`werkzeug.datastructures.MultiDict`): - - >>> urls.build("index", {'q': ['a', 'b', 'c']}) - '/?q=a&q=b&q=c' - - Passing a ``MultiDict`` will also add multiple values: - - >>> urls.build("index", MultiDict((('p', 'z'), ('q', 'a'), ('q', 'b')))) - '/?p=z&q=a&q=b' - - If a rule does not exist when building a `BuildError` exception is - raised. - - The build method accepts an argument called `method` which allows you - to specify the method you want to have an URL built for if you have - different methods for the same endpoint specified. - - .. versionadded:: 0.6 - the `append_unknown` parameter was added. - - :param endpoint: the endpoint of the URL to build. - :param values: the values for the URL to build. Unhandled values are - appended to the URL as query parameters. - :param method: the HTTP method for the rule if there are different - URLs for different methods on the same endpoint. - :param force_external: enforce full canonical external URLs. If the URL - scheme is not provided, this will generate - a protocol-relative URL. - :param append_unknown: unknown parameters are appended to the generated - URL as query string argument. Disable this - if you want the builder to ignore those. - """ - self.map.update() - - if values: - if isinstance(values, MultiDict): - temp_values = {} - # iteritems(dict, values) is like `values.lists()` - # without the call or `list()` coercion overhead. - for key, value in iteritems(dict, values): - if not value: - continue - if len(value) == 1: # flatten single item lists - value = value[0] - if value is None: # drop None - continue - temp_values[key] = value - values = temp_values - else: - # drop None - values = dict(i for i in iteritems(values) if i[1] is not None) - else: - values = {} - - rv = self._partial_build(endpoint, values, method, append_unknown) - if rv is None: - raise BuildError(endpoint, values, method, self) - domain_part, path = rv - - host = self.get_host(domain_part) - - # shortcut this. - if not force_external and ( - (self.map.host_matching and host == self.server_name) - or (not self.map.host_matching and domain_part == self.subdomain) - ): - return "%s/%s" % (self.script_name.rstrip("/"), path.lstrip("/")) - return str( - "%s//%s%s/%s" - % ( - self.url_scheme + ":" if self.url_scheme else "", - host, - self.script_name[:-1], - path.lstrip("/"), - ) - ) diff --git a/python/werkzeug/security.py b/python/werkzeug/security.py deleted file mode 100644 index 1842afd..0000000 --- a/python/werkzeug/security.py +++ /dev/null @@ -1,241 +0,0 @@ -# -*- coding: utf-8 -*- -""" - werkzeug.security - ~~~~~~~~~~~~~~~~~ - - Security related helpers such as secure password hashing tools. - - :copyright: 2007 Pallets - :license: BSD-3-Clause -""" -import codecs -import hashlib -import hmac -import os -import posixpath -from random import SystemRandom -from struct import Struct - -from ._compat import izip -from ._compat import PY2 -from ._compat import range_type -from ._compat import text_type -from ._compat import to_bytes -from ._compat import to_native - -SALT_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" -DEFAULT_PBKDF2_ITERATIONS = 150000 - -_pack_int = Struct(">I").pack -_builtin_safe_str_cmp = getattr(hmac, "compare_digest", None) -_sys_rng = SystemRandom() -_os_alt_seps = list( - sep for sep in [os.path.sep, os.path.altsep] if sep not in (None, "/") -) - - -def pbkdf2_hex( - data, salt, iterations=DEFAULT_PBKDF2_ITERATIONS, keylen=None, hashfunc=None -): - """Like :func:`pbkdf2_bin`, but returns a hex-encoded string. - - .. versionadded:: 0.9 - - :param data: the data to derive. - :param salt: the salt for the derivation. - :param iterations: the number of iterations. - :param keylen: the length of the resulting key. If not provided, - the digest size will be used. - :param hashfunc: the hash function to use. This can either be the - string name of a known hash function, or a function - from the hashlib module. Defaults to sha256. - """ - rv = pbkdf2_bin(data, salt, iterations, keylen, hashfunc) - return to_native(codecs.encode(rv, "hex_codec")) - - -def pbkdf2_bin( - data, salt, iterations=DEFAULT_PBKDF2_ITERATIONS, keylen=None, hashfunc=None -): - """Returns a binary digest for the PBKDF2 hash algorithm of `data` - with the given `salt`. It iterates `iterations` times and produces a - key of `keylen` bytes. By default, SHA-256 is used as hash function; - a different hashlib `hashfunc` can be provided. - - .. versionadded:: 0.9 - - :param data: the data to derive. - :param salt: the salt for the derivation. - :param iterations: the number of iterations. - :param keylen: the length of the resulting key. If not provided - the digest size will be used. - :param hashfunc: the hash function to use. This can either be the - string name of a known hash function or a function - from the hashlib module. Defaults to sha256. - """ - if not hashfunc: - hashfunc = "sha256" - - data = to_bytes(data) - salt = to_bytes(salt) - - if callable(hashfunc): - _test_hash = hashfunc() - hash_name = getattr(_test_hash, "name", None) - else: - hash_name = hashfunc - return hashlib.pbkdf2_hmac(hash_name, data, salt, iterations, keylen) - - -def safe_str_cmp(a, b): - """This function compares strings in somewhat constant time. This - requires that the length of at least one string is known in advance. - - Returns `True` if the two strings are equal, or `False` if they are not. - - .. versionadded:: 0.7 - """ - if isinstance(a, text_type): - a = a.encode("utf-8") - if isinstance(b, text_type): - b = b.encode("utf-8") - - if _builtin_safe_str_cmp is not None: - return _builtin_safe_str_cmp(a, b) - - if len(a) != len(b): - return False - - rv = 0 - if PY2: - for x, y in izip(a, b): - rv |= ord(x) ^ ord(y) - else: - for x, y in izip(a, b): - rv |= x ^ y - - return rv == 0 - - -def gen_salt(length): - """Generate a random string of SALT_CHARS with specified ``length``.""" - if length <= 0: - raise ValueError("Salt length must be positive") - return "".join(_sys_rng.choice(SALT_CHARS) for _ in range_type(length)) - - -def _hash_internal(method, salt, password): - """Internal password hash helper. Supports plaintext without salt, - unsalted and salted passwords. In case salted passwords are used - hmac is used. - """ - if method == "plain": - return password, method - - if isinstance(password, text_type): - password = password.encode("utf-8") - - if method.startswith("pbkdf2:"): - args = method[7:].split(":") - if len(args) not in (1, 2): - raise ValueError("Invalid number of arguments for PBKDF2") - method = args.pop(0) - iterations = args and int(args[0] or 0) or DEFAULT_PBKDF2_ITERATIONS - is_pbkdf2 = True - actual_method = "pbkdf2:%s:%d" % (method, iterations) - else: - is_pbkdf2 = False - actual_method = method - - if is_pbkdf2: - if not salt: - raise ValueError("Salt is required for PBKDF2") - rv = pbkdf2_hex(password, salt, iterations, hashfunc=method) - elif salt: - if isinstance(salt, text_type): - salt = salt.encode("utf-8") - mac = _create_mac(salt, password, method) - rv = mac.hexdigest() - else: - rv = hashlib.new(method, password).hexdigest() - return rv, actual_method - - -def _create_mac(key, msg, method): - if callable(method): - return hmac.HMAC(key, msg, method) - - def hashfunc(d=b""): - return hashlib.new(method, d) - - # Python 2.7 used ``hasattr(digestmod, '__call__')`` - # to detect if hashfunc is callable - hashfunc.__call__ = hashfunc - return hmac.HMAC(key, msg, hashfunc) - - -def generate_password_hash(password, method="pbkdf2:sha256", salt_length=8): - """Hash a password with the given method and salt with a string of - the given length. The format of the string returned includes the method - that was used so that :func:`check_password_hash` can check the hash. - - The format for the hashed string looks like this:: - - method$salt$hash - - This method can **not** generate unsalted passwords but it is possible - to set param method='plain' in order to enforce plaintext passwords. - If a salt is used, hmac is used internally to salt the password. - - If PBKDF2 is wanted it can be enabled by setting the method to - ``pbkdf2:method:iterations`` where iterations is optional:: - - pbkdf2:sha256:80000$salt$hash - pbkdf2:sha256$salt$hash - - :param password: the password to hash. - :param method: the hash method to use (one that hashlib supports). Can - optionally be in the format ``pbkdf2:<method>[:iterations]`` - to enable PBKDF2. - :param salt_length: the length of the salt in letters. - """ - salt = gen_salt(salt_length) if method != "plain" else "" - h, actual_method = _hash_internal(method, salt, password) - return "%s$%s$%s" % (actual_method, salt, h) - - -def check_password_hash(pwhash, password): - """check a password against a given salted and hashed password value. - In order to support unsalted legacy passwords this method supports - plain text passwords, md5 and sha1 hashes (both salted and unsalted). - - Returns `True` if the password matched, `False` otherwise. - - :param pwhash: a hashed string like returned by - :func:`generate_password_hash`. - :param password: the plaintext password to compare against the hash. - """ - if pwhash.count("$") < 2: - return False - method, salt, hashval = pwhash.split("$", 2) - return safe_str_cmp(_hash_internal(method, salt, password)[0], hashval) - - -def safe_join(directory, *pathnames): - """Safely join `directory` and one or more untrusted `pathnames`. If this - cannot be done, this function returns ``None``. - - :param directory: the base directory. - :param pathnames: the untrusted pathnames relative to that directory. - """ - parts = [directory] - for filename in pathnames: - if filename != "": - filename = posixpath.normpath(filename) - for sep in _os_alt_seps: - if sep in filename: - return None - if os.path.isabs(filename) or filename == ".." or filename.startswith("../"): - return None - parts.append(filename) - return posixpath.join(*parts) diff --git a/python/werkzeug/serving.py b/python/werkzeug/serving.py deleted file mode 100644 index ff9f880..0000000 --- a/python/werkzeug/serving.py +++ /dev/null @@ -1,1074 +0,0 @@ -# -*- coding: utf-8 -*- -""" - werkzeug.serving - ~~~~~~~~~~~~~~~~ - - There are many ways to serve a WSGI application. While you're developing - it you usually don't want a full blown webserver like Apache but a simple - standalone one. From Python 2.5 onwards there is the `wsgiref`_ server in - the standard library. If you're using older versions of Python you can - download the package from the cheeseshop. - - However there are some caveats. Sourcecode won't reload itself when - changed and each time you kill the server using ``^C`` you get an - `KeyboardInterrupt` error. While the latter is easy to solve the first - one can be a pain in the ass in some situations. - - The easiest way is creating a small ``start-myproject.py`` that runs the - application:: - - #!/usr/bin/env python - # -*- coding: utf-8 -*- - from myproject import make_app - from werkzeug.serving import run_simple - - app = make_app(...) - run_simple('localhost', 8080, app, use_reloader=True) - - You can also pass it a `extra_files` keyword argument with a list of - additional files (like configuration files) you want to observe. - - For bigger applications you should consider using `click` - (http://click.pocoo.org) instead of a simple start file. - - - :copyright: 2007 Pallets - :license: BSD-3-Clause -""" -import io -import os -import signal -import socket -import sys - -import werkzeug -from ._compat import PY2 -from ._compat import reraise -from ._compat import WIN -from ._compat import wsgi_encoding_dance -from ._internal import _log -from .exceptions import InternalServerError -from .urls import uri_to_iri -from .urls import url_parse -from .urls import url_unquote - -try: - import socketserver - from http.server import BaseHTTPRequestHandler - from http.server import HTTPServer -except ImportError: - import SocketServer as socketserver - from BaseHTTPServer import HTTPServer - from BaseHTTPServer import BaseHTTPRequestHandler - -try: - import ssl -except ImportError: - - class _SslDummy(object): - def __getattr__(self, name): - raise RuntimeError("SSL support unavailable") - - ssl = _SslDummy() - -try: - import termcolor -except ImportError: - termcolor = None - - -def _get_openssl_crypto_module(): - try: - from OpenSSL import crypto - except ImportError: - raise TypeError("Using ad-hoc certificates requires the pyOpenSSL library.") - else: - return crypto - - -ThreadingMixIn = socketserver.ThreadingMixIn -can_fork = hasattr(os, "fork") - -if can_fork: - ForkingMixIn = socketserver.ForkingMixIn -else: - - class ForkingMixIn(object): - pass - - -try: - af_unix = socket.AF_UNIX -except AttributeError: - af_unix = None - - -LISTEN_QUEUE = 128 -can_open_by_fd = not WIN and hasattr(socket, "fromfd") - -# On Python 3, ConnectionError represents the same errnos as -# socket.error from Python 2, while socket.error is an alias for the -# more generic OSError. -if PY2: - _ConnectionError = socket.error -else: - _ConnectionError = ConnectionError - - -class DechunkedInput(io.RawIOBase): - """An input stream that handles Transfer-Encoding 'chunked'""" - - def __init__(self, rfile): - self._rfile = rfile - self._done = False - self._len = 0 - - def readable(self): - return True - - def read_chunk_len(self): - try: - line = self._rfile.readline().decode("latin1") - _len = int(line.strip(), 16) - except ValueError: - raise IOError("Invalid chunk header") - if _len < 0: - raise IOError("Negative chunk length not allowed") - return _len - - def readinto(self, buf): - read = 0 - while not self._done and read < len(buf): - if self._len == 0: - # This is the first chunk or we fully consumed the previous - # one. Read the next length of the next chunk - self._len = self.read_chunk_len() - - if self._len == 0: - # Found the final chunk of size 0. The stream is now exhausted, - # but there is still a final newline that should be consumed - self._done = True - - if self._len > 0: - # There is data (left) in this chunk, so append it to the - # buffer. If this operation fully consumes the chunk, this will - # reset self._len to 0. - n = min(len(buf), self._len) - buf[read : read + n] = self._rfile.read(n) - self._len -= n - read += n - - if self._len == 0: - # Skip the terminating newline of a chunk that has been fully - # consumed. This also applies to the 0-sized final chunk - terminator = self._rfile.readline() - if terminator not in (b"\n", b"\r\n", b"\r"): - raise IOError("Missing chunk terminating newline") - - return read - - -class WSGIRequestHandler(BaseHTTPRequestHandler, object): - - """A request handler that implements WSGI dispatching.""" - - @property - def server_version(self): - return "Werkzeug/" + werkzeug.__version__ - - def make_environ(self): - request_url = url_parse(self.path) - - def shutdown_server(): - self.server.shutdown_signal = True - - url_scheme = "http" if self.server.ssl_context is None else "https" - if not self.client_address: - self.client_address = "<local>" - if isinstance(self.client_address, str): - self.client_address = (self.client_address, 0) - else: - pass - path_info = url_unquote(request_url.path) - - environ = { - "wsgi.version": (1, 0), - "wsgi.url_scheme": url_scheme, - "wsgi.input": self.rfile, - "wsgi.errors": sys.stderr, - "wsgi.multithread": self.server.multithread, - "wsgi.multiprocess": self.server.multiprocess, - "wsgi.run_once": False, - "werkzeug.server.shutdown": shutdown_server, - "SERVER_SOFTWARE": self.server_version, - "REQUEST_METHOD": self.command, - "SCRIPT_NAME": "", - "PATH_INFO": wsgi_encoding_dance(path_info), - "QUERY_STRING": wsgi_encoding_dance(request_url.query), - # Non-standard, added by mod_wsgi, uWSGI - "REQUEST_URI": wsgi_encoding_dance(self.path), - # Non-standard, added by gunicorn - "RAW_URI": wsgi_encoding_dance(self.path), - "REMOTE_ADDR": self.address_string(), - "REMOTE_PORT": self.port_integer(), - "SERVER_NAME": self.server.server_address[0], - "SERVER_PORT": str(self.server.server_address[1]), - "SERVER_PROTOCOL": self.request_version, - } - - for key, value in self.get_header_items(): - key = key.upper().replace("-", "_") - value = value.replace("\r\n", "") - if key not in ("CONTENT_TYPE", "CONTENT_LENGTH"): - key = "HTTP_" + key - if key in environ: - value = "{},{}".format(environ[key], value) - environ[key] = value - - if environ.get("HTTP_TRANSFER_ENCODING", "").strip().lower() == "chunked": - environ["wsgi.input_terminated"] = True - environ["wsgi.input"] = DechunkedInput(environ["wsgi.input"]) - - if request_url.scheme and request_url.netloc: - environ["HTTP_HOST"] = request_url.netloc - - return environ - - def run_wsgi(self): - if self.headers.get("Expect", "").lower().strip() == "100-continue": - self.wfile.write(b"HTTP/1.1 100 Continue\r\n\r\n") - - self.environ = environ = self.make_environ() - headers_set = [] - headers_sent = [] - - def write(data): - assert headers_set, "write() before start_response" - if not headers_sent: - status, response_headers = headers_sent[:] = headers_set - try: - code, msg = status.split(None, 1) - except ValueError: - code, msg = status, "" - code = int(code) - self.send_response(code, msg) - header_keys = set() - for key, value in response_headers: - self.send_header(key, value) - key = key.lower() - header_keys.add(key) - if not ( - "content-length" in header_keys - or environ["REQUEST_METHOD"] == "HEAD" - or code < 200 - or code in (204, 304) - ): - self.close_connection = True - self.send_header("Connection", "close") - if "server" not in header_keys: - self.send_header("Server", self.version_string()) - if "date" not in header_keys: - self.send_header("Date", self.date_time_string()) - self.end_headers() - - assert isinstance(data, bytes), "applications must write bytes" - self.wfile.write(data) - self.wfile.flush() - - def start_response(status, response_headers, exc_info=None): - if exc_info: - try: - if headers_sent: - reraise(*exc_info) - finally: - exc_info = None - elif headers_set: - raise AssertionError("Headers already set") - headers_set[:] = [status, response_headers] - return write - - def execute(app): - application_iter = app(environ, start_response) - try: - for data in application_iter: - write(data) - if not headers_sent: - write(b"") - finally: - if hasattr(application_iter, "close"): - application_iter.close() - application_iter = None - - try: - execute(self.server.app) - except (_ConnectionError, socket.timeout) as e: - self.connection_dropped(e, environ) - except Exception: - if self.server.passthrough_errors: - raise - from .debug.tbtools import get_current_traceback - - traceback = get_current_traceback(ignore_system_exceptions=True) - try: - # if we haven't yet sent the headers but they are set - # we roll back to be able to set them again. - if not headers_sent: - del headers_set[:] - execute(InternalServerError()) - except Exception: - pass - self.server.log("error", "Error on request:\n%s", traceback.plaintext) - - def handle(self): - """Handles a request ignoring dropped connections.""" - rv = None - try: - rv = BaseHTTPRequestHandler.handle(self) - except (_ConnectionError, socket.timeout) as e: - self.connection_dropped(e) - except Exception as e: - if self.server.ssl_context is None or not is_ssl_error(e): - raise - if self.server.shutdown_signal: - self.initiate_shutdown() - return rv - - def initiate_shutdown(self): - """A horrible, horrible way to kill the server for Python 2.6 and - later. It's the best we can do. - """ - # Windows does not provide SIGKILL, go with SIGTERM then. - sig = getattr(signal, "SIGKILL", signal.SIGTERM) - # reloader active - if is_running_from_reloader(): - os.kill(os.getpid(), sig) - # python 2.7 - self.server._BaseServer__shutdown_request = True - # python 2.6 - self.server._BaseServer__serving = False - - def connection_dropped(self, error, environ=None): - """Called if the connection was closed by the client. By default - nothing happens. - """ - - def handle_one_request(self): - """Handle a single HTTP request.""" - self.raw_requestline = self.rfile.readline() - if not self.raw_requestline: - self.close_connection = 1 - elif self.parse_request(): - return self.run_wsgi() - - def send_response(self, code, message=None): - """Send the response header and log the response code.""" - self.log_request(code) - if message is None: - message = code in self.responses and self.responses[code][0] or "" - if self.request_version != "HTTP/0.9": - hdr = "%s %d %s\r\n" % (self.protocol_version, code, message) - self.wfile.write(hdr.encode("ascii")) - - def version_string(self): - return BaseHTTPRequestHandler.version_string(self).strip() - - def address_string(self): - if getattr(self, "environ", None): - return self.environ["REMOTE_ADDR"] - elif not self.client_address: - return "<local>" - elif isinstance(self.client_address, str): - return self.client_address - else: - return self.client_address[0] - - def port_integer(self): - return self.client_address[1] - - def log_request(self, code="-", size="-"): - try: - path = uri_to_iri(self.path) - msg = "%s %s %s" % (self.command, path, self.request_version) - except AttributeError: - # path isn't set if the requestline was bad - msg = self.requestline - - code = str(code) - - if termcolor: - color = termcolor.colored - - if code[0] == "1": # 1xx - Informational - msg = color(msg, attrs=["bold"]) - elif code[0] == "2": # 2xx - Success - msg = color(msg, color="white") - elif code == "304": # 304 - Resource Not Modified - msg = color(msg, color="cyan") - elif code[0] == "3": # 3xx - Redirection - msg = color(msg, color="green") - elif code == "404": # 404 - Resource Not Found - msg = color(msg, color="yellow") - elif code[0] == "4": # 4xx - Client Error - msg = color(msg, color="red", attrs=["bold"]) - else: # 5xx, or any other response - msg = color(msg, color="magenta", attrs=["bold"]) - - self.log("info", '"%s" %s %s', msg, code, size) - - def log_error(self, *args): - self.log("error", *args) - - def log_message(self, format, *args): - self.log("info", format, *args) - - def log(self, type, message, *args): - _log( - type, - "%s - - [%s] %s\n" - % (self.address_string(), self.log_date_time_string(), message % args), - ) - - def get_header_items(self): - """ - Get an iterable list of key/value pairs representing headers. - - This function provides Python 2/3 compatibility as related to the - parsing of request headers. Python 2.7 is not compliant with - RFC 3875 Section 4.1.18 which requires multiple values for headers - to be provided or RFC 2616 which allows for folding of multi-line - headers. This function will return a matching list regardless - of Python version. It can be removed once Python 2.7 support - is dropped. - - :return: List of tuples containing header hey/value pairs - """ - if PY2: - # For Python 2, process the headers manually according to - # W3C RFC 2616 Section 4.2. - items = [] - for header in self.headers.headers: - # Remove "\r\n" from the header and split on ":" to get - # the field name and value. - try: - key, value = header[0:-2].split(":", 1) - except ValueError: - # If header could not be slit with : but starts with white - # space and it follows an existing header, it's a folded - # header. - if header[0] in ("\t", " ") and items: - # Pop off the last header - key, value = items.pop() - # Append the current header to the value of the last - # header which will be placed back on the end of the - # list - value = value + header - # Otherwise it's just a bad header and should error - else: - # Re-raise the value error - raise - - # Add the key and the value once stripped of leading - # white space. The specification allows for stripping - # trailing white space but the Python 3 code does not - # strip trailing white space. Therefore, trailing space - # will be left as is to match the Python 3 behavior. - items.append((key, value.lstrip())) - else: - items = self.headers.items() - - return items - - -#: backwards compatible name if someone is subclassing it -BaseRequestHandler = WSGIRequestHandler - - -def generate_adhoc_ssl_pair(cn=None): - from random import random - - crypto = _get_openssl_crypto_module() - - # pretty damn sure that this is not actually accepted by anyone - if cn is None: - cn = "*" - - cert = crypto.X509() - cert.set_serial_number(int(random() * sys.maxsize)) - cert.gmtime_adj_notBefore(0) - cert.gmtime_adj_notAfter(60 * 60 * 24 * 365) - - subject = cert.get_subject() - subject.CN = cn - subject.O = "Dummy Certificate" # noqa: E741 - - issuer = cert.get_issuer() - issuer.CN = subject.CN - issuer.O = subject.O # noqa: E741 - - pkey = crypto.PKey() - pkey.generate_key(crypto.TYPE_RSA, 2048) - cert.set_pubkey(pkey) - cert.sign(pkey, "sha256") - - return cert, pkey - - -def make_ssl_devcert(base_path, host=None, cn=None): - """Creates an SSL key for development. This should be used instead of - the ``'adhoc'`` key which generates a new cert on each server start. - It accepts a path for where it should store the key and cert and - either a host or CN. If a host is given it will use the CN - ``*.host/CN=host``. - - For more information see :func:`run_simple`. - - .. versionadded:: 0.9 - - :param base_path: the path to the certificate and key. The extension - ``.crt`` is added for the certificate, ``.key`` is - added for the key. - :param host: the name of the host. This can be used as an alternative - for the `cn`. - :param cn: the `CN` to use. - """ - from OpenSSL import crypto - - if host is not None: - cn = "*.%s/CN=%s" % (host, host) - cert, pkey = generate_adhoc_ssl_pair(cn=cn) - - cert_file = base_path + ".crt" - pkey_file = base_path + ".key" - - with open(cert_file, "wb") as f: - f.write(crypto.dump_certificate(crypto.FILETYPE_PEM, cert)) - with open(pkey_file, "wb") as f: - f.write(crypto.dump_privatekey(crypto.FILETYPE_PEM, pkey)) - - return cert_file, pkey_file - - -def generate_adhoc_ssl_context(): - """Generates an adhoc SSL context for the development server.""" - crypto = _get_openssl_crypto_module() - import tempfile - import atexit - - cert, pkey = generate_adhoc_ssl_pair() - cert_handle, cert_file = tempfile.mkstemp() - pkey_handle, pkey_file = tempfile.mkstemp() - atexit.register(os.remove, pkey_file) - atexit.register(os.remove, cert_file) - - os.write(cert_handle, crypto.dump_certificate(crypto.FILETYPE_PEM, cert)) - os.write(pkey_handle, crypto.dump_privatekey(crypto.FILETYPE_PEM, pkey)) - os.close(cert_handle) - os.close(pkey_handle) - ctx = load_ssl_context(cert_file, pkey_file) - return ctx - - -def load_ssl_context(cert_file, pkey_file=None, protocol=None): - """Loads SSL context from cert/private key files and optional protocol. - Many parameters are directly taken from the API of - :py:class:`ssl.SSLContext`. - - :param cert_file: Path of the certificate to use. - :param pkey_file: Path of the private key to use. If not given, the key - will be obtained from the certificate file. - :param protocol: One of the ``PROTOCOL_*`` constants in the stdlib ``ssl`` - module. Defaults to ``PROTOCOL_SSLv23``. - """ - if protocol is None: - protocol = ssl.PROTOCOL_SSLv23 - ctx = _SSLContext(protocol) - ctx.load_cert_chain(cert_file, pkey_file) - return ctx - - -class _SSLContext(object): - - """A dummy class with a small subset of Python3's ``ssl.SSLContext``, only - intended to be used with and by Werkzeug.""" - - def __init__(self, protocol): - self._protocol = protocol - self._certfile = None - self._keyfile = None - self._password = None - - def load_cert_chain(self, certfile, keyfile=None, password=None): - self._certfile = certfile - self._keyfile = keyfile or certfile - self._password = password - - def wrap_socket(self, sock, **kwargs): - return ssl.wrap_socket( - sock, - keyfile=self._keyfile, - certfile=self._certfile, - ssl_version=self._protocol, - **kwargs - ) - - -def is_ssl_error(error=None): - """Checks if the given error (or the current one) is an SSL error.""" - exc_types = (ssl.SSLError,) - try: - from OpenSSL.SSL import Error - - exc_types += (Error,) - except ImportError: - pass - - if error is None: - error = sys.exc_info()[1] - return isinstance(error, exc_types) - - -def select_address_family(host, port): - """Return ``AF_INET4``, ``AF_INET6``, or ``AF_UNIX`` depending on - the host and port.""" - # disabled due to problems with current ipv6 implementations - # and various operating systems. Probably this code also is - # not supposed to work, but I can't come up with any other - # ways to implement this. - # try: - # info = socket.getaddrinfo(host, port, socket.AF_UNSPEC, - # socket.SOCK_STREAM, 0, - # socket.AI_PASSIVE) - # if info: - # return info[0][0] - # except socket.gaierror: - # pass - if host.startswith("unix://"): - return socket.AF_UNIX - elif ":" in host and hasattr(socket, "AF_INET6"): - return socket.AF_INET6 - return socket.AF_INET - - -def get_sockaddr(host, port, family): - """Return a fully qualified socket address that can be passed to - :func:`socket.bind`.""" - if family == af_unix: - return host.split("://", 1)[1] - try: - res = socket.getaddrinfo( - host, port, family, socket.SOCK_STREAM, socket.IPPROTO_TCP - ) - except socket.gaierror: - return host, port - return res[0][4] - - -class BaseWSGIServer(HTTPServer, object): - - """Simple single-threaded, single-process WSGI server.""" - - multithread = False - multiprocess = False - request_queue_size = LISTEN_QUEUE - - def __init__( - self, - host, - port, - app, - handler=None, - passthrough_errors=False, - ssl_context=None, - fd=None, - ): - if handler is None: - handler = WSGIRequestHandler - - self.address_family = select_address_family(host, port) - - if fd is not None: - real_sock = socket.fromfd(fd, self.address_family, socket.SOCK_STREAM) - port = 0 - - server_address = get_sockaddr(host, int(port), self.address_family) - - # remove socket file if it already exists - if self.address_family == af_unix and os.path.exists(server_address): - os.unlink(server_address) - HTTPServer.__init__(self, server_address, handler) - - self.app = app - self.passthrough_errors = passthrough_errors - self.shutdown_signal = False - self.host = host - self.port = self.socket.getsockname()[1] - - # Patch in the original socket. - if fd is not None: - self.socket.close() - self.socket = real_sock - self.server_address = self.socket.getsockname() - - if ssl_context is not None: - if isinstance(ssl_context, tuple): - ssl_context = load_ssl_context(*ssl_context) - if ssl_context == "adhoc": - ssl_context = generate_adhoc_ssl_context() - # If we are on Python 2 the return value from socket.fromfd - # is an internal socket object but what we need for ssl wrap - # is the wrapper around it :( - sock = self.socket - if PY2 and not isinstance(sock, socket.socket): - sock = socket.socket(sock.family, sock.type, sock.proto, sock) - self.socket = ssl_context.wrap_socket(sock, server_side=True) - self.ssl_context = ssl_context - else: - self.ssl_context = None - - def log(self, type, message, *args): - _log(type, message, *args) - - def serve_forever(self): - self.shutdown_signal = False - try: - HTTPServer.serve_forever(self) - except KeyboardInterrupt: - pass - finally: - self.server_close() - - def handle_error(self, request, client_address): - if self.passthrough_errors: - raise - # Python 2 still causes a socket.error after the earlier - # handling, so silence it here. - if isinstance(sys.exc_info()[1], _ConnectionError): - return - return HTTPServer.handle_error(self, request, client_address) - - def get_request(self): - con, info = self.socket.accept() - return con, info - - -class ThreadedWSGIServer(ThreadingMixIn, BaseWSGIServer): - - """A WSGI server that does threading.""" - - multithread = True - daemon_threads = True - - -class ForkingWSGIServer(ForkingMixIn, BaseWSGIServer): - - """A WSGI server that does forking.""" - - multiprocess = True - - def __init__( - self, - host, - port, - app, - processes=40, - handler=None, - passthrough_errors=False, - ssl_context=None, - fd=None, - ): - if not can_fork: - raise ValueError("Your platform does not support forking.") - BaseWSGIServer.__init__( - self, host, port, app, handler, passthrough_errors, ssl_context, fd - ) - self.max_children = processes - - -def make_server( - host=None, - port=None, - app=None, - threaded=False, - processes=1, - request_handler=None, - passthrough_errors=False, - ssl_context=None, - fd=None, -): - """Create a new server instance that is either threaded, or forks - or just processes one request after another. - """ - if threaded and processes > 1: - raise ValueError("cannot have a multithreaded and multi process server.") - elif threaded: - return ThreadedWSGIServer( - host, port, app, request_handler, passthrough_errors, ssl_context, fd=fd - ) - elif processes > 1: - return ForkingWSGIServer( - host, - port, - app, - processes, - request_handler, - passthrough_errors, - ssl_context, - fd=fd, - ) - else: - return BaseWSGIServer( - host, port, app, request_handler, passthrough_errors, ssl_context, fd=fd - ) - - -def is_running_from_reloader(): - """Checks if the application is running from within the Werkzeug - reloader subprocess. - - .. versionadded:: 0.10 - """ - return os.environ.get("WERKZEUG_RUN_MAIN") == "true" - - -def run_simple( - hostname, - port, - application, - use_reloader=False, - use_debugger=False, - use_evalex=True, - extra_files=None, - reloader_interval=1, - reloader_type="auto", - threaded=False, - processes=1, - request_handler=None, - static_files=None, - passthrough_errors=False, - ssl_context=None, -): - """Start a WSGI application. Optional features include a reloader, - multithreading and fork support. - - This function has a command-line interface too:: - - python -m werkzeug.serving --help - - .. versionadded:: 0.5 - `static_files` was added to simplify serving of static files as well - as `passthrough_errors`. - - .. versionadded:: 0.6 - support for SSL was added. - - .. versionadded:: 0.8 - Added support for automatically loading a SSL context from certificate - file and private key. - - .. versionadded:: 0.9 - Added command-line interface. - - .. versionadded:: 0.10 - Improved the reloader and added support for changing the backend - through the `reloader_type` parameter. See :ref:`reloader` - for more information. - - .. versionchanged:: 0.15 - Bind to a Unix socket by passing a path that starts with - ``unix://`` as the ``hostname``. - - :param hostname: The host to bind to, for example ``'localhost'``. - If the value is a path that starts with ``unix://`` it will bind - to a Unix socket instead of a TCP socket.. - :param port: The port for the server. eg: ``8080`` - :param application: the WSGI application to execute - :param use_reloader: should the server automatically restart the python - process if modules were changed? - :param use_debugger: should the werkzeug debugging system be used? - :param use_evalex: should the exception evaluation feature be enabled? - :param extra_files: a list of files the reloader should watch - additionally to the modules. For example configuration - files. - :param reloader_interval: the interval for the reloader in seconds. - :param reloader_type: the type of reloader to use. The default is - auto detection. Valid values are ``'stat'`` and - ``'watchdog'``. See :ref:`reloader` for more - information. - :param threaded: should the process handle each request in a separate - thread? - :param processes: if greater than 1 then handle each request in a new process - up to this maximum number of concurrent processes. - :param request_handler: optional parameter that can be used to replace - the default one. You can use this to replace it - with a different - :class:`~BaseHTTPServer.BaseHTTPRequestHandler` - subclass. - :param static_files: a list or dict of paths for static files. This works - exactly like :class:`SharedDataMiddleware`, it's actually - just wrapping the application in that middleware before - serving. - :param passthrough_errors: set this to `True` to disable the error catching. - This means that the server will die on errors but - it can be useful to hook debuggers in (pdb etc.) - :param ssl_context: an SSL context for the connection. Either an - :class:`ssl.SSLContext`, a tuple in the form - ``(cert_file, pkey_file)``, the string ``'adhoc'`` if - the server should automatically create one, or ``None`` - to disable SSL (which is the default). - """ - if not isinstance(port, int): - raise TypeError("port must be an integer") - if use_debugger: - from .debug import DebuggedApplication - - application = DebuggedApplication(application, use_evalex) - if static_files: - from .middleware.shared_data import SharedDataMiddleware - - application = SharedDataMiddleware(application, static_files) - - def log_startup(sock): - display_hostname = hostname if hostname not in ("", "*") else "localhost" - quit_msg = "(Press CTRL+C to quit)" - if sock.family == af_unix: - _log("info", " * Running on %s %s", display_hostname, quit_msg) - else: - if ":" in display_hostname: - display_hostname = "[%s]" % display_hostname - port = sock.getsockname()[1] - _log( - "info", - " * Running on %s://%s:%d/ %s", - "http" if ssl_context is None else "https", - display_hostname, - port, - quit_msg, - ) - - def inner(): - try: - fd = int(os.environ["WERKZEUG_SERVER_FD"]) - except (LookupError, ValueError): - fd = None - srv = make_server( - hostname, - port, - application, - threaded, - processes, - request_handler, - passthrough_errors, - ssl_context, - fd=fd, - ) - if fd is None: - log_startup(srv.socket) - srv.serve_forever() - - if use_reloader: - # If we're not running already in the subprocess that is the - # reloader we want to open up a socket early to make sure the - # port is actually available. - if not is_running_from_reloader(): - if port == 0 and not can_open_by_fd: - raise ValueError( - "Cannot bind to a random port with enabled " - "reloader if the Python interpreter does " - "not support socket opening by fd." - ) - - # Create and destroy a socket so that any exceptions are - # raised before we spawn a separate Python interpreter and - # lose this ability. - address_family = select_address_family(hostname, port) - server_address = get_sockaddr(hostname, port, address_family) - s = socket.socket(address_family, socket.SOCK_STREAM) - s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) - s.bind(server_address) - if hasattr(s, "set_inheritable"): - s.set_inheritable(True) - - # If we can open the socket by file descriptor, then we can just - # reuse this one and our socket will survive the restarts. - if can_open_by_fd: - os.environ["WERKZEUG_SERVER_FD"] = str(s.fileno()) - s.listen(LISTEN_QUEUE) - log_startup(s) - else: - s.close() - if address_family == af_unix: - _log("info", "Unlinking %s" % server_address) - os.unlink(server_address) - - # Do not use relative imports, otherwise "python -m werkzeug.serving" - # breaks. - from ._reloader import run_with_reloader - - run_with_reloader(inner, extra_files, reloader_interval, reloader_type) - else: - inner() - - -def run_with_reloader(*args, **kwargs): - # People keep using undocumented APIs. Do not use this function - # please, we do not guarantee that it continues working. - from ._reloader import run_with_reloader - - return run_with_reloader(*args, **kwargs) - - -def main(): - """A simple command-line interface for :py:func:`run_simple`.""" - - # in contrast to argparse, this works at least under Python < 2.7 - import optparse - from .utils import import_string - - parser = optparse.OptionParser(usage="Usage: %prog [options] app_module:app_object") - parser.add_option( - "-b", - "--bind", - dest="address", - help="The hostname:port the app should listen on.", - ) - parser.add_option( - "-d", - "--debug", - dest="use_debugger", - action="store_true", - default=False, - help="Use Werkzeug's debugger.", - ) - parser.add_option( - "-r", - "--reload", - dest="use_reloader", - action="store_true", - default=False, - help="Reload Python process if modules change.", - ) - options, args = parser.parse_args() - - hostname, port = None, None - if options.address: - address = options.address.split(":") - hostname = address[0] - if len(address) > 1: - port = address[1] - - if len(args) != 1: - sys.stdout.write("No application supplied, or too much. See --help\n") - sys.exit(1) - app = import_string(args[0]) - - run_simple( - hostname=(hostname or "127.0.0.1"), - port=int(port or 5000), - application=app, - use_reloader=options.use_reloader, - use_debugger=options.use_debugger, - ) - - -if __name__ == "__main__": - main() diff --git a/python/werkzeug/test.py b/python/werkzeug/test.py deleted file mode 100644 index 6148665..0000000 --- a/python/werkzeug/test.py +++ /dev/null @@ -1,1146 +0,0 @@ -# -*- coding: utf-8 -*- -""" - werkzeug.test - ~~~~~~~~~~~~~ - - This module implements a client to WSGI applications for testing. - - :copyright: 2007 Pallets - :license: BSD-3-Clause -""" -import mimetypes -import sys -from io import BytesIO -from itertools import chain -from random import random -from tempfile import TemporaryFile -from time import time - -from ._compat import iteritems -from ._compat import iterlists -from ._compat import itervalues -from ._compat import make_literal_wrapper -from ._compat import reraise -from ._compat import string_types -from ._compat import text_type -from ._compat import to_bytes -from ._compat import wsgi_encoding_dance -from ._internal import _get_environ -from .datastructures import CallbackDict -from .datastructures import CombinedMultiDict -from .datastructures import EnvironHeaders -from .datastructures import FileMultiDict -from .datastructures import FileStorage -from .datastructures import Headers -from .datastructures import MultiDict -from .http import dump_cookie -from .http import dump_options_header -from .http import parse_options_header -from .urls import iri_to_uri -from .urls import url_encode -from .urls import url_fix -from .urls import url_parse -from .urls import url_unparse -from .urls import url_unquote -from .utils import get_content_type -from .wrappers import BaseRequest -from .wsgi import ClosingIterator -from .wsgi import get_current_url - -try: - from urllib.request import Request as U2Request -except ImportError: - from urllib2 import Request as U2Request - -try: - from http.cookiejar import CookieJar -except ImportError: - from cookielib import CookieJar - - -def stream_encode_multipart( - values, use_tempfile=True, threshold=1024 * 500, boundary=None, charset="utf-8" -): - """Encode a dict of values (either strings or file descriptors or - :class:`FileStorage` objects.) into a multipart encoded string stored - in a file descriptor. - """ - if boundary is None: - boundary = "---------------WerkzeugFormPart_%s%s" % (time(), random()) - _closure = [BytesIO(), 0, False] - - if use_tempfile: - - def write_binary(string): - stream, total_length, on_disk = _closure - if on_disk: - stream.write(string) - else: - length = len(string) - if length + _closure[1] <= threshold: - stream.write(string) - else: - new_stream = TemporaryFile("wb+") - new_stream.write(stream.getvalue()) - new_stream.write(string) - _closure[0] = new_stream - _closure[2] = True - _closure[1] = total_length + length - - else: - write_binary = _closure[0].write - - def write(string): - write_binary(string.encode(charset)) - - if not isinstance(values, MultiDict): - values = MultiDict(values) - - for key, values in iterlists(values): - for value in values: - write('--%s\r\nContent-Disposition: form-data; name="%s"' % (boundary, key)) - reader = getattr(value, "read", None) - if reader is not None: - filename = getattr(value, "filename", getattr(value, "name", None)) - content_type = getattr(value, "content_type", None) - if content_type is None: - content_type = ( - filename - and mimetypes.guess_type(filename)[0] - or "application/octet-stream" - ) - if filename is not None: - write('; filename="%s"\r\n' % filename) - else: - write("\r\n") - write("Content-Type: %s\r\n\r\n" % content_type) - while 1: - chunk = reader(16384) - if not chunk: - break - write_binary(chunk) - else: - if not isinstance(value, string_types): - value = str(value) - - value = to_bytes(value, charset) - write("\r\n\r\n") - write_binary(value) - write("\r\n") - write("--%s--\r\n" % boundary) - - length = int(_closure[0].tell()) - _closure[0].seek(0) - return _closure[0], length, boundary - - -def encode_multipart(values, boundary=None, charset="utf-8"): - """Like `stream_encode_multipart` but returns a tuple in the form - (``boundary``, ``data``) where data is a bytestring. - """ - stream, length, boundary = stream_encode_multipart( - values, use_tempfile=False, boundary=boundary, charset=charset - ) - return boundary, stream.read() - - -def File(fd, filename=None, mimetype=None): - """Backwards compat. - - .. deprecated:: 0.5 - """ - from warnings import warn - - warn( - "'werkzeug.test.File' is deprecated as of version 0.5 and will" - " be removed in version 1.0. Use 'EnvironBuilder' or" - " 'FileStorage' instead.", - DeprecationWarning, - stacklevel=2, - ) - return FileStorage(fd, filename=filename, content_type=mimetype) - - -class _TestCookieHeaders(object): - - """A headers adapter for cookielib - """ - - def __init__(self, headers): - self.headers = headers - - def getheaders(self, name): - headers = [] - name = name.lower() - for k, v in self.headers: - if k.lower() == name: - headers.append(v) - return headers - - def get_all(self, name, default=None): - rv = [] - for k, v in self.headers: - if k.lower() == name.lower(): - rv.append(v) - return rv or default or [] - - -class _TestCookieResponse(object): - - """Something that looks like a httplib.HTTPResponse, but is actually just an - adapter for our test responses to make them available for cookielib. - """ - - def __init__(self, headers): - self.headers = _TestCookieHeaders(headers) - - def info(self): - return self.headers - - -class _TestCookieJar(CookieJar): - - """A cookielib.CookieJar modified to inject and read cookie headers from - and to wsgi environments, and wsgi application responses. - """ - - def inject_wsgi(self, environ): - """Inject the cookies as client headers into the server's wsgi - environment. - """ - cvals = ["%s=%s" % (c.name, c.value) for c in self] - - if cvals: - environ["HTTP_COOKIE"] = "; ".join(cvals) - else: - environ.pop("HTTP_COOKIE", None) - - def extract_wsgi(self, environ, headers): - """Extract the server's set-cookie headers as cookies into the - cookie jar. - """ - self.extract_cookies( - _TestCookieResponse(headers), U2Request(get_current_url(environ)) - ) - - -def _iter_data(data): - """Iterates over a `dict` or :class:`MultiDict` yielding all keys and - values. - This is used to iterate over the data passed to the - :class:`EnvironBuilder`. - """ - if isinstance(data, MultiDict): - for key, values in iterlists(data): - for value in values: - yield key, value - else: - for key, values in iteritems(data): - if isinstance(values, list): - for value in values: - yield key, value - else: - yield key, values - - -class EnvironBuilder(object): - """This class can be used to conveniently create a WSGI environment - for testing purposes. It can be used to quickly create WSGI environments - or request objects from arbitrary data. - - The signature of this class is also used in some other places as of - Werkzeug 0.5 (:func:`create_environ`, :meth:`BaseResponse.from_values`, - :meth:`Client.open`). Because of this most of the functionality is - available through the constructor alone. - - Files and regular form data can be manipulated independently of each - other with the :attr:`form` and :attr:`files` attributes, but are - passed with the same argument to the constructor: `data`. - - `data` can be any of these values: - - - a `str` or `bytes` object: The object is converted into an - :attr:`input_stream`, the :attr:`content_length` is set and you have to - provide a :attr:`content_type`. - - a `dict` or :class:`MultiDict`: The keys have to be strings. The values - have to be either any of the following objects, or a list of any of the - following objects: - - - a :class:`file`-like object: These are converted into - :class:`FileStorage` objects automatically. - - a `tuple`: The :meth:`~FileMultiDict.add_file` method is called - with the key and the unpacked `tuple` items as positional - arguments. - - a `str`: The string is set as form data for the associated key. - - a file-like object: The object content is loaded in memory and then - handled like a regular `str` or a `bytes`. - - :param path: the path of the request. In the WSGI environment this will - end up as `PATH_INFO`. If the `query_string` is not defined - and there is a question mark in the `path` everything after - it is used as query string. - :param base_url: the base URL is a URL that is used to extract the WSGI - URL scheme, host (server name + server port) and the - script root (`SCRIPT_NAME`). - :param query_string: an optional string or dict with URL parameters. - :param method: the HTTP method to use, defaults to `GET`. - :param input_stream: an optional input stream. Do not specify this and - `data`. As soon as an input stream is set you can't - modify :attr:`args` and :attr:`files` unless you - set the :attr:`input_stream` to `None` again. - :param content_type: The content type for the request. As of 0.5 you - don't have to provide this when specifying files - and form data via `data`. - :param content_length: The content length for the request. You don't - have to specify this when providing data via - `data`. - :param errors_stream: an optional error stream that is used for - `wsgi.errors`. Defaults to :data:`stderr`. - :param multithread: controls `wsgi.multithread`. Defaults to `False`. - :param multiprocess: controls `wsgi.multiprocess`. Defaults to `False`. - :param run_once: controls `wsgi.run_once`. Defaults to `False`. - :param headers: an optional list or :class:`Headers` object of headers. - :param data: a string or dict of form data or a file-object. - See explanation above. - :param json: An object to be serialized and assigned to ``data``. - Defaults the content type to ``"application/json"``. - Serialized with the function assigned to :attr:`json_dumps`. - :param environ_base: an optional dict of environment defaults. - :param environ_overrides: an optional dict of environment overrides. - :param charset: the charset used to encode unicode data. - - .. versionadded:: 0.15 - The ``json`` param and :meth:`json_dumps` method. - - .. versionadded:: 0.15 - The environ has keys ``REQUEST_URI`` and ``RAW_URI`` containing - the path before perecent-decoding. This is not part of the WSGI - PEP, but many WSGI servers include it. - - .. versionchanged:: 0.6 - ``path`` and ``base_url`` can now be unicode strings that are - encoded with :func:`iri_to_uri`. - """ - - #: the server protocol to use. defaults to HTTP/1.1 - server_protocol = "HTTP/1.1" - - #: the wsgi version to use. defaults to (1, 0) - wsgi_version = (1, 0) - - #: the default request class for :meth:`get_request` - request_class = BaseRequest - - import json - - #: The serialization function used when ``json`` is passed. - json_dumps = staticmethod(json.dumps) - del json - - def __init__( - self, - path="/", - base_url=None, - query_string=None, - method="GET", - input_stream=None, - content_type=None, - content_length=None, - errors_stream=None, - multithread=False, - multiprocess=False, - run_once=False, - headers=None, - data=None, - environ_base=None, - environ_overrides=None, - charset="utf-8", - mimetype=None, - json=None, - ): - path_s = make_literal_wrapper(path) - if query_string is not None and path_s("?") in path: - raise ValueError("Query string is defined in the path and as an argument") - if query_string is None and path_s("?") in path: - path, query_string = path.split(path_s("?"), 1) - self.charset = charset - self.path = iri_to_uri(path) - if base_url is not None: - base_url = url_fix(iri_to_uri(base_url, charset), charset) - self.base_url = base_url - if isinstance(query_string, (bytes, text_type)): - self.query_string = query_string - else: - if query_string is None: - query_string = MultiDict() - elif not isinstance(query_string, MultiDict): - query_string = MultiDict(query_string) - self.args = query_string - self.method = method - if headers is None: - headers = Headers() - elif not isinstance(headers, Headers): - headers = Headers(headers) - self.headers = headers - if content_type is not None: - self.content_type = content_type - if errors_stream is None: - errors_stream = sys.stderr - self.errors_stream = errors_stream - self.multithread = multithread - self.multiprocess = multiprocess - self.run_once = run_once - self.environ_base = environ_base - self.environ_overrides = environ_overrides - self.input_stream = input_stream - self.content_length = content_length - self.closed = False - - if json is not None: - if data is not None: - raise TypeError("can't provide both json and data") - - data = self.json_dumps(json) - - if self.content_type is None: - self.content_type = "application/json" - - if data: - if input_stream is not None: - raise TypeError("can't provide input stream and data") - if hasattr(data, "read"): - data = data.read() - if isinstance(data, text_type): - data = data.encode(self.charset) - if isinstance(data, bytes): - self.input_stream = BytesIO(data) - if self.content_length is None: - self.content_length = len(data) - else: - for key, value in _iter_data(data): - if isinstance(value, (tuple, dict)) or hasattr(value, "read"): - self._add_file_from_data(key, value) - else: - self.form.setlistdefault(key).append(value) - - if mimetype is not None: - self.mimetype = mimetype - - @classmethod - def from_environ(cls, environ, **kwargs): - """Turn an environ dict back into a builder. Any extra kwargs - override the args extracted from the environ. - - .. versionadded:: 0.15 - """ - headers = Headers(EnvironHeaders(environ)) - out = { - "path": environ["PATH_INFO"], - "base_url": cls._make_base_url( - environ["wsgi.url_scheme"], headers.pop("Host"), environ["SCRIPT_NAME"] - ), - "query_string": environ["QUERY_STRING"], - "method": environ["REQUEST_METHOD"], - "input_stream": environ["wsgi.input"], - "content_type": headers.pop("Content-Type", None), - "content_length": headers.pop("Content-Length", None), - "errors_stream": environ["wsgi.errors"], - "multithread": environ["wsgi.multithread"], - "multiprocess": environ["wsgi.multiprocess"], - "run_once": environ["wsgi.run_once"], - "headers": headers, - } - out.update(kwargs) - return cls(**out) - - def _add_file_from_data(self, key, value): - """Called in the EnvironBuilder to add files from the data dict.""" - if isinstance(value, tuple): - self.files.add_file(key, *value) - elif isinstance(value, dict): - from warnings import warn - - warn( - "Passing a dict as file data is deprecated as of" - " version 0.5 and will be removed in version 1.0. Use" - " a tuple or 'FileStorage' object instead.", - DeprecationWarning, - stacklevel=2, - ) - value = dict(value) - mimetype = value.pop("mimetype", None) - if mimetype is not None: - value["content_type"] = mimetype - self.files.add_file(key, **value) - else: - self.files.add_file(key, value) - - @staticmethod - def _make_base_url(scheme, host, script_root): - return url_unparse((scheme, host, script_root, "", "")).rstrip("/") + "/" - - @property - def base_url(self): - """The base URL is used to extract the URL scheme, host name, - port, and root path. - """ - return self._make_base_url(self.url_scheme, self.host, self.script_root) - - @base_url.setter - def base_url(self, value): - if value is None: - scheme = "http" - netloc = "localhost" - script_root = "" - else: - scheme, netloc, script_root, qs, anchor = url_parse(value) - if qs or anchor: - raise ValueError("base url must not contain a query string or fragment") - self.script_root = script_root.rstrip("/") - self.host = netloc - self.url_scheme = scheme - - def _get_content_type(self): - ct = self.headers.get("Content-Type") - if ct is None and not self._input_stream: - if self._files: - return "multipart/form-data" - elif self._form: - return "application/x-www-form-urlencoded" - return None - return ct - - def _set_content_type(self, value): - if value is None: - self.headers.pop("Content-Type", None) - else: - self.headers["Content-Type"] = value - - content_type = property( - _get_content_type, - _set_content_type, - doc="""The content type for the request. Reflected from and to - the :attr:`headers`. Do not set if you set :attr:`files` or - :attr:`form` for auto detection.""", - ) - del _get_content_type, _set_content_type - - def _get_content_length(self): - return self.headers.get("Content-Length", type=int) - - def _get_mimetype(self): - ct = self.content_type - if ct: - return ct.split(";")[0].strip() - - def _set_mimetype(self, value): - self.content_type = get_content_type(value, self.charset) - - def _get_mimetype_params(self): - def on_update(d): - self.headers["Content-Type"] = dump_options_header(self.mimetype, d) - - d = parse_options_header(self.headers.get("content-type", ""))[1] - return CallbackDict(d, on_update) - - mimetype = property( - _get_mimetype, - _set_mimetype, - doc="""The mimetype (content type without charset etc.) - - .. versionadded:: 0.14 - """, - ) - mimetype_params = property( - _get_mimetype_params, - doc=""" The mimetype parameters as dict. For example if the - content type is ``text/html; charset=utf-8`` the params would be - ``{'charset': 'utf-8'}``. - - .. versionadded:: 0.14 - """, - ) - del _get_mimetype, _set_mimetype, _get_mimetype_params - - def _set_content_length(self, value): - if value is None: - self.headers.pop("Content-Length", None) - else: - self.headers["Content-Length"] = str(value) - - content_length = property( - _get_content_length, - _set_content_length, - doc="""The content length as integer. Reflected from and to the - :attr:`headers`. Do not set if you set :attr:`files` or - :attr:`form` for auto detection.""", - ) - del _get_content_length, _set_content_length - - def form_property(name, storage, doc): # noqa: B902 - key = "_" + name - - def getter(self): - if self._input_stream is not None: - raise AttributeError("an input stream is defined") - rv = getattr(self, key) - if rv is None: - rv = storage() - setattr(self, key, rv) - - return rv - - def setter(self, value): - self._input_stream = None - setattr(self, key, value) - - return property(getter, setter, doc=doc) - - form = form_property("form", MultiDict, doc="A :class:`MultiDict` of form values.") - files = form_property( - "files", - FileMultiDict, - doc="""A :class:`FileMultiDict` of uploaded files. You can use - the :meth:`~FileMultiDict.add_file` method to add new files to - the dict.""", - ) - del form_property - - def _get_input_stream(self): - return self._input_stream - - def _set_input_stream(self, value): - self._input_stream = value - self._form = self._files = None - - input_stream = property( - _get_input_stream, - _set_input_stream, - doc="""An optional input stream. If you set this it will clear - :attr:`form` and :attr:`files`.""", - ) - del _get_input_stream, _set_input_stream - - def _get_query_string(self): - if self._query_string is None: - if self._args is not None: - return url_encode(self._args, charset=self.charset) - return "" - return self._query_string - - def _set_query_string(self, value): - self._query_string = value - self._args = None - - query_string = property( - _get_query_string, - _set_query_string, - doc="""The query string. If you set this to a string - :attr:`args` will no longer be available.""", - ) - del _get_query_string, _set_query_string - - def _get_args(self): - if self._query_string is not None: - raise AttributeError("a query string is defined") - if self._args is None: - self._args = MultiDict() - return self._args - - def _set_args(self, value): - self._query_string = None - self._args = value - - args = property( - _get_args, _set_args, doc="The URL arguments as :class:`MultiDict`." - ) - del _get_args, _set_args - - @property - def server_name(self): - """The server name (read-only, use :attr:`host` to set)""" - return self.host.split(":", 1)[0] - - @property - def server_port(self): - """The server port as integer (read-only, use :attr:`host` to set)""" - pieces = self.host.split(":", 1) - if len(pieces) == 2 and pieces[1].isdigit(): - return int(pieces[1]) - elif self.url_scheme == "https": - return 443 - return 80 - - def __del__(self): - try: - self.close() - except Exception: - pass - - def close(self): - """Closes all files. If you put real :class:`file` objects into the - :attr:`files` dict you can call this method to automatically close - them all in one go. - """ - if self.closed: - return - try: - files = itervalues(self.files) - except AttributeError: - files = () - for f in files: - try: - f.close() - except Exception: - pass - self.closed = True - - def get_environ(self): - """Return the built environ. - - .. versionchanged:: 0.15 - The content type and length headers are set based on - input stream detection. Previously this only set the WSGI - keys. - """ - input_stream = self.input_stream - content_length = self.content_length - - mimetype = self.mimetype - content_type = self.content_type - - if input_stream is not None: - start_pos = input_stream.tell() - input_stream.seek(0, 2) - end_pos = input_stream.tell() - input_stream.seek(start_pos) - content_length = end_pos - start_pos - elif mimetype == "multipart/form-data": - values = CombinedMultiDict([self.form, self.files]) - input_stream, content_length, boundary = stream_encode_multipart( - values, charset=self.charset - ) - content_type = mimetype + '; boundary="%s"' % boundary - elif mimetype == "application/x-www-form-urlencoded": - # XXX: py2v3 review - values = url_encode(self.form, charset=self.charset) - values = values.encode("ascii") - content_length = len(values) - input_stream = BytesIO(values) - else: - input_stream = BytesIO() - - result = {} - if self.environ_base: - result.update(self.environ_base) - - def _path_encode(x): - return wsgi_encoding_dance(url_unquote(x, self.charset), self.charset) - - qs = wsgi_encoding_dance(self.query_string) - - result.update( - { - "REQUEST_METHOD": self.method, - "SCRIPT_NAME": _path_encode(self.script_root), - "PATH_INFO": _path_encode(self.path), - "QUERY_STRING": qs, - # Non-standard, added by mod_wsgi, uWSGI - "REQUEST_URI": wsgi_encoding_dance(self.path), - # Non-standard, added by gunicorn - "RAW_URI": wsgi_encoding_dance(self.path), - "SERVER_NAME": self.server_name, - "SERVER_PORT": str(self.server_port), - "HTTP_HOST": self.host, - "SERVER_PROTOCOL": self.server_protocol, - "wsgi.version": self.wsgi_version, - "wsgi.url_scheme": self.url_scheme, - "wsgi.input": input_stream, - "wsgi.errors": self.errors_stream, - "wsgi.multithread": self.multithread, - "wsgi.multiprocess": self.multiprocess, - "wsgi.run_once": self.run_once, - } - ) - - headers = self.headers.copy() - - if content_type is not None: - result["CONTENT_TYPE"] = content_type - headers.set("Content-Type", content_type) - - if content_length is not None: - result["CONTENT_LENGTH"] = str(content_length) - headers.set("Content-Length", content_length) - - for key, value in headers.to_wsgi_list(): - result["HTTP_%s" % key.upper().replace("-", "_")] = value - - if self.environ_overrides: - result.update(self.environ_overrides) - - return result - - def get_request(self, cls=None): - """Returns a request with the data. If the request class is not - specified :attr:`request_class` is used. - - :param cls: The request wrapper to use. - """ - if cls is None: - cls = self.request_class - return cls(self.get_environ()) - - -class ClientRedirectError(Exception): - """If a redirect loop is detected when using follow_redirects=True with - the :cls:`Client`, then this exception is raised. - """ - - -class Client(object): - """This class allows you to send requests to a wrapped application. - - The response wrapper can be a class or factory function that takes - three arguments: app_iter, status and headers. The default response - wrapper just returns a tuple. - - Example:: - - class ClientResponse(BaseResponse): - ... - - client = Client(MyApplication(), response_wrapper=ClientResponse) - - The use_cookies parameter indicates whether cookies should be stored and - sent for subsequent requests. This is True by default, but passing False - will disable this behaviour. - - If you want to request some subdomain of your application you may set - `allow_subdomain_redirects` to `True` as if not no external redirects - are allowed. - - .. versionadded:: 0.5 - `use_cookies` is new in this version. Older versions did not provide - builtin cookie support. - - .. versionadded:: 0.14 - The `mimetype` parameter was added. - - .. versionadded:: 0.15 - The ``json`` parameter. - """ - - def __init__( - self, - application, - response_wrapper=None, - use_cookies=True, - allow_subdomain_redirects=False, - ): - self.application = application - self.response_wrapper = response_wrapper - if use_cookies: - self.cookie_jar = _TestCookieJar() - else: - self.cookie_jar = None - self.allow_subdomain_redirects = allow_subdomain_redirects - - def set_cookie( - self, - server_name, - key, - value="", - max_age=None, - expires=None, - path="/", - domain=None, - secure=None, - httponly=False, - charset="utf-8", - ): - """Sets a cookie in the client's cookie jar. The server name - is required and has to match the one that is also passed to - the open call. - """ - assert self.cookie_jar is not None, "cookies disabled" - header = dump_cookie( - key, value, max_age, expires, path, domain, secure, httponly, charset - ) - environ = create_environ(path, base_url="http://" + server_name) - headers = [("Set-Cookie", header)] - self.cookie_jar.extract_wsgi(environ, headers) - - def delete_cookie(self, server_name, key, path="/", domain=None): - """Deletes a cookie in the test client.""" - self.set_cookie( - server_name, key, expires=0, max_age=0, path=path, domain=domain - ) - - def run_wsgi_app(self, environ, buffered=False): - """Runs the wrapped WSGI app with the given environment.""" - if self.cookie_jar is not None: - self.cookie_jar.inject_wsgi(environ) - rv = run_wsgi_app(self.application, environ, buffered=buffered) - if self.cookie_jar is not None: - self.cookie_jar.extract_wsgi(environ, rv[2]) - return rv - - def resolve_redirect(self, response, new_location, environ, buffered=False): - """Perform a new request to the location given by the redirect - response to the previous request. - """ - scheme, netloc, path, qs, anchor = url_parse(new_location) - builder = EnvironBuilder.from_environ(environ, query_string=qs) - - to_name_parts = netloc.split(":", 1)[0].split(".") - from_name_parts = builder.server_name.split(".") - - if to_name_parts != [""]: - # The new location has a host, use it for the base URL. - builder.url_scheme = scheme - builder.host = netloc - else: - # A local redirect with autocorrect_location_header=False - # doesn't have a host, so use the request's host. - to_name_parts = from_name_parts - - # Explain why a redirect to a different server name won't be followed. - if to_name_parts != from_name_parts: - if to_name_parts[-len(from_name_parts) :] == from_name_parts: - if not self.allow_subdomain_redirects: - raise RuntimeError("Following subdomain redirects is not enabled.") - else: - raise RuntimeError("Following external redirects is not supported.") - - path_parts = path.split("/") - root_parts = builder.script_root.split("/") - - if path_parts[: len(root_parts)] == root_parts: - # Strip the script root from the path. - builder.path = path[len(builder.script_root) :] - else: - # The new location is not under the script root, so use the - # whole path and clear the previous root. - builder.path = path - builder.script_root = "" - - status_code = int(response[1].split(None, 1)[0]) - - # Only 307 and 308 preserve all of the original request. - if status_code not in {307, 308}: - # HEAD is preserved, everything else becomes GET. - if builder.method != "HEAD": - builder.method = "GET" - - # Clear the body and the headers that describe it. - builder.input_stream = None - builder.content_type = None - builder.content_length = None - builder.headers.pop("Transfer-Encoding", None) - - # Disable the response wrapper while handling redirects. Not - # thread safe, but the client should not be shared anyway. - old_response_wrapper = self.response_wrapper - self.response_wrapper = None - - try: - return self.open(builder, as_tuple=True, buffered=buffered) - finally: - self.response_wrapper = old_response_wrapper - - def open(self, *args, **kwargs): - """Takes the same arguments as the :class:`EnvironBuilder` class with - some additions: You can provide a :class:`EnvironBuilder` or a WSGI - environment as only argument instead of the :class:`EnvironBuilder` - arguments and two optional keyword arguments (`as_tuple`, `buffered`) - that change the type of the return value or the way the application is - executed. - - .. versionchanged:: 0.5 - If a dict is provided as file in the dict for the `data` parameter - the content type has to be called `content_type` now instead of - `mimetype`. This change was made for consistency with - :class:`werkzeug.FileWrapper`. - - The `follow_redirects` parameter was added to :func:`open`. - - Additional parameters: - - :param as_tuple: Returns a tuple in the form ``(environ, result)`` - :param buffered: Set this to True to buffer the application run. - This will automatically close the application for - you as well. - :param follow_redirects: Set this to True if the `Client` should - follow HTTP redirects. - """ - as_tuple = kwargs.pop("as_tuple", False) - buffered = kwargs.pop("buffered", False) - follow_redirects = kwargs.pop("follow_redirects", False) - environ = None - if not kwargs and len(args) == 1: - if isinstance(args[0], EnvironBuilder): - environ = args[0].get_environ() - elif isinstance(args[0], dict): - environ = args[0] - if environ is None: - builder = EnvironBuilder(*args, **kwargs) - try: - environ = builder.get_environ() - finally: - builder.close() - - response = self.run_wsgi_app(environ.copy(), buffered=buffered) - - # handle redirects - redirect_chain = [] - while 1: - status_code = int(response[1].split(None, 1)[0]) - if ( - status_code not in {301, 302, 303, 305, 307, 308} - or not follow_redirects - ): - break - - # Exhaust intermediate response bodies to ensure middleware - # that returns an iterator runs any cleanup code. - if not buffered: - for _ in response[0]: - pass - - new_location = response[2]["location"] - new_redirect_entry = (new_location, status_code) - if new_redirect_entry in redirect_chain: - raise ClientRedirectError("loop detected") - redirect_chain.append(new_redirect_entry) - environ, response = self.resolve_redirect( - response, new_location, environ, buffered=buffered - ) - - if self.response_wrapper is not None: - response = self.response_wrapper(*response) - if as_tuple: - return environ, response - return response - - def get(self, *args, **kw): - """Like open but method is enforced to GET.""" - kw["method"] = "GET" - return self.open(*args, **kw) - - def patch(self, *args, **kw): - """Like open but method is enforced to PATCH.""" - kw["method"] = "PATCH" - return self.open(*args, **kw) - - def post(self, *args, **kw): - """Like open but method is enforced to POST.""" - kw["method"] = "POST" - return self.open(*args, **kw) - - def head(self, *args, **kw): - """Like open but method is enforced to HEAD.""" - kw["method"] = "HEAD" - return self.open(*args, **kw) - - def put(self, *args, **kw): - """Like open but method is enforced to PUT.""" - kw["method"] = "PUT" - return self.open(*args, **kw) - - def delete(self, *args, **kw): - """Like open but method is enforced to DELETE.""" - kw["method"] = "DELETE" - return self.open(*args, **kw) - - def options(self, *args, **kw): - """Like open but method is enforced to OPTIONS.""" - kw["method"] = "OPTIONS" - return self.open(*args, **kw) - - def trace(self, *args, **kw): - """Like open but method is enforced to TRACE.""" - kw["method"] = "TRACE" - return self.open(*args, **kw) - - def __repr__(self): - return "<%s %r>" % (self.__class__.__name__, self.application) - - -def create_environ(*args, **kwargs): - """Create a new WSGI environ dict based on the values passed. The first - parameter should be the path of the request which defaults to '/'. The - second one can either be an absolute path (in that case the host is - localhost:80) or a full path to the request with scheme, netloc port and - the path to the script. - - This accepts the same arguments as the :class:`EnvironBuilder` - constructor. - - .. versionchanged:: 0.5 - This function is now a thin wrapper over :class:`EnvironBuilder` which - was added in 0.5. The `headers`, `environ_base`, `environ_overrides` - and `charset` parameters were added. - """ - builder = EnvironBuilder(*args, **kwargs) - try: - return builder.get_environ() - finally: - builder.close() - - -def run_wsgi_app(app, environ, buffered=False): - """Return a tuple in the form (app_iter, status, headers) of the - application output. This works best if you pass it an application that - returns an iterator all the time. - - Sometimes applications may use the `write()` callable returned - by the `start_response` function. This tries to resolve such edge - cases automatically. But if you don't get the expected output you - should set `buffered` to `True` which enforces buffering. - - If passed an invalid WSGI application the behavior of this function is - undefined. Never pass non-conforming WSGI applications to this function. - - :param app: the application to execute. - :param buffered: set to `True` to enforce buffering. - :return: tuple in the form ``(app_iter, status, headers)`` - """ - environ = _get_environ(environ) - response = [] - buffer = [] - - def start_response(status, headers, exc_info=None): - if exc_info is not None: - reraise(*exc_info) - response[:] = [status, headers] - return buffer.append - - app_rv = app(environ, start_response) - close_func = getattr(app_rv, "close", None) - app_iter = iter(app_rv) - - # when buffering we emit the close call early and convert the - # application iterator into a regular list - if buffered: - try: - app_iter = list(app_iter) - finally: - if close_func is not None: - close_func() - - # otherwise we iterate the application iter until we have a response, chain - # the already received data with the already collected data and wrap it in - # a new `ClosingIterator` if we need to restore a `close` callable from the - # original return value. - else: - for item in app_iter: - buffer.append(item) - if response: - break - if buffer: - app_iter = chain(buffer, app_iter) - if close_func is not None and app_iter is not app_rv: - app_iter = ClosingIterator(app_iter, close_func) - - return app_iter, response[0], Headers(response[1]) diff --git a/python/werkzeug/testapp.py b/python/werkzeug/testapp.py deleted file mode 100644 index 8ea23be..0000000 --- a/python/werkzeug/testapp.py +++ /dev/null @@ -1,241 +0,0 @@ -# -*- coding: utf-8 -*- -""" - werkzeug.testapp - ~~~~~~~~~~~~~~~~ - - Provide a small test application that can be used to test a WSGI server - and check it for WSGI compliance. - - :copyright: 2007 Pallets - :license: BSD-3-Clause -""" -import base64 -import os -import sys -from textwrap import wrap - -import werkzeug -from .utils import escape -from .wrappers import BaseRequest as Request -from .wrappers import BaseResponse as Response - -logo = Response( - base64.b64decode( - """ -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 -=""" - ), - mimetype="image/png", -) - - -TEMPLATE = u"""\ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" - "http://www.w3.org/TR/html4/loose.dtd"> -<title>WSGI Information</title> -<style type="text/css"> - @import url(https://fonts.googleapis.com/css?family=Ubuntu); - - body { font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', - 'Verdana', sans-serif; background-color: white; color: #000; - font-size: 15px; text-align: center; } - #logo { float: right; padding: 0 0 10px 10px; } - div.box { text-align: left; width: 45em; margin: auto; padding: 50px 0; - background-color: white; } - h1, h2 { font-family: 'Ubuntu', 'Lucida Grande', 'Lucida Sans Unicode', - 'Geneva', 'Verdana', sans-serif; font-weight: normal; } - h1 { margin: 0 0 30px 0; } - h2 { font-size: 1.4em; margin: 1em 0 0.5em 0; } - table { width: 100%%; border-collapse: collapse; border: 1px solid #AFC5C9 } - table th { background-color: #AFC1C4; color: white; font-size: 0.72em; - font-weight: normal; width: 18em; vertical-align: top; - padding: 0.5em 0 0.1em 0.5em; } - table td { border: 1px solid #AFC5C9; padding: 0.1em 0 0.1em 0.5em; } - code { font-family: 'Consolas', 'Monaco', 'Bitstream Vera Sans Mono', - monospace; font-size: 0.7em; } - ul li { line-height: 1.5em; } - ul.path { font-size: 0.7em; margin: 0 -30px; padding: 8px 30px; - list-style: none; background: #E8EFF0; } - ul.path li { line-height: 1.6em; } - li.virtual { color: #999; text-decoration: underline; } - li.exp { background: white; } -</style> -<div class="box"> - <img src="?resource=logo" id="logo" alt="[The Werkzeug Logo]" /> - <h1>WSGI Information</h1> - <p> - This page displays all available information about the WSGI server and - the underlying Python interpreter. - <h2 id="python-interpreter">Python Interpreter</h2> - <table> - <tr> - <th>Python Version - <td>%(python_version)s - <tr> - <th>Platform - <td>%(platform)s [%(os)s] - <tr> - <th>API Version - <td>%(api_version)s - <tr> - <th>Byteorder - <td>%(byteorder)s - <tr> - <th>Werkzeug Version - <td>%(werkzeug_version)s - </table> - <h2 id="wsgi-environment">WSGI Environment</h2> - <table>%(wsgi_env)s</table> - <h2 id="installed-eggs">Installed Eggs</h2> - <p> - The following python packages were installed on the system as - Python eggs: - <ul>%(python_eggs)s</ul> - <h2 id="sys-path">System Path</h2> - <p> - The following paths are the current contents of the load path. The - following entries are looked up for Python packages. Note that not - all items in this path are folders. Gray and underlined items are - entries pointing to invalid resources or used by custom import hooks - such as the zip importer. - <p> - Items with a bright background were expanded for display from a relative - path. If you encounter such paths in the output you might want to check - your setup as relative paths are usually problematic in multithreaded - environments. - <ul class="path">%(sys_path)s</ul> -</div> -""" - - -def iter_sys_path(): - if os.name == "posix": - - def strip(x): - prefix = os.path.expanduser("~") - if x.startswith(prefix): - x = "~" + x[len(prefix) :] - return x - - else: - - def strip(x): - return x - - cwd = os.path.abspath(os.getcwd()) - for item in sys.path: - path = os.path.join(cwd, item or os.path.curdir) - yield strip(os.path.normpath(path)), not os.path.isdir(path), path != item - - -def render_testapp(req): - try: - import pkg_resources - except ImportError: - eggs = () - else: - eggs = sorted(pkg_resources.working_set, key=lambda x: x.project_name.lower()) - python_eggs = [] - for egg in eggs: - try: - version = egg.version - except (ValueError, AttributeError): - version = "unknown" - python_eggs.append( - "<li>%s <small>[%s]</small>" % (escape(egg.project_name), escape(version)) - ) - - wsgi_env = [] - sorted_environ = sorted(req.environ.items(), key=lambda x: repr(x[0]).lower()) - for key, value in sorted_environ: - wsgi_env.append( - "<tr><th>%s<td><code>%s</code>" - % (escape(str(key)), " ".join(wrap(escape(repr(value))))) - ) - - sys_path = [] - for item, virtual, expanded in iter_sys_path(): - class_ = [] - if virtual: - class_.append("virtual") - if expanded: - class_.append("exp") - sys_path.append( - "<li%s>%s" - % (' class="%s"' % " ".join(class_) if class_ else "", escape(item)) - ) - - return ( - TEMPLATE - % { - "python_version": "<br>".join(escape(sys.version).splitlines()), - "platform": escape(sys.platform), - "os": escape(os.name), - "api_version": sys.api_version, - "byteorder": sys.byteorder, - "werkzeug_version": werkzeug.__version__, - "python_eggs": "\n".join(python_eggs), - "wsgi_env": "\n".join(wsgi_env), - "sys_path": "\n".join(sys_path), - } - ).encode("utf-8") - - -def test_app(environ, start_response): - """Simple test application that dumps the environment. You can use - it to check if Werkzeug is working properly: - - .. sourcecode:: pycon - - >>> from werkzeug.serving import run_simple - >>> from werkzeug.testapp import test_app - >>> run_simple('localhost', 3000, test_app) - * Running on http://localhost:3000/ - - The application displays important information from the WSGI environment, - the Python interpreter and the installed libraries. - """ - req = Request(environ, populate_request=False) - if req.args.get("resource") == "logo": - response = logo - else: - response = Response(render_testapp(req), mimetype="text/html") - return response(environ, start_response) - - -if __name__ == "__main__": - from .serving import run_simple - - run_simple("localhost", 5000, test_app, use_reloader=True) diff --git a/python/werkzeug/urls.py b/python/werkzeug/urls.py deleted file mode 100644 index 38e9e5a..0000000 --- a/python/werkzeug/urls.py +++ /dev/null @@ -1,1134 +0,0 @@ -# -*- coding: utf-8 -*- -""" - werkzeug.urls - ~~~~~~~~~~~~~ - - ``werkzeug.urls`` used to provide several wrapper functions for Python 2 - urlparse, whose main purpose were to work around the behavior of the Py2 - stdlib and its lack of unicode support. While this was already a somewhat - inconvenient situation, it got even more complicated because Python 3's - ``urllib.parse`` actually does handle unicode properly. In other words, - this module would wrap two libraries with completely different behavior. So - now this module contains a 2-and-3-compatible backport of Python 3's - ``urllib.parse``, which is mostly API-compatible. - - :copyright: 2007 Pallets - :license: BSD-3-Clause -""" -import codecs -import os -import re -from collections import namedtuple - -from ._compat import fix_tuple_repr -from ._compat import implements_to_string -from ._compat import make_literal_wrapper -from ._compat import normalize_string_tuple -from ._compat import PY2 -from ._compat import text_type -from ._compat import to_native -from ._compat import to_unicode -from ._compat import try_coerce_native -from ._internal import _decode_idna -from ._internal import _encode_idna -from .datastructures import iter_multi_items -from .datastructures import MultiDict - -# A regular expression for what a valid schema looks like -_scheme_re = re.compile(r"^[a-zA-Z0-9+-.]+$") - -# Characters that are safe in any part of an URL. -_always_safe = frozenset( - bytearray( - b"abcdefghijklmnopqrstuvwxyz" - b"ABCDEFGHIJKLMNOPQRSTUVWXYZ" - b"0123456789" - b"-._~" - ) -) - -_hexdigits = "0123456789ABCDEFabcdef" -_hextobyte = dict( - ((a + b).encode(), int(a + b, 16)) for a in _hexdigits for b in _hexdigits -) -_bytetohex = [("%%%02X" % char).encode("ascii") for char in range(256)] - - -_URLTuple = fix_tuple_repr( - namedtuple("_URLTuple", ["scheme", "netloc", "path", "query", "fragment"]) -) - - -class BaseURL(_URLTuple): - """Superclass of :py:class:`URL` and :py:class:`BytesURL`.""" - - __slots__ = () - - def replace(self, **kwargs): - """Return an URL with the same values, except for those parameters - given new values by whichever keyword arguments are specified.""" - return self._replace(**kwargs) - - @property - def host(self): - """The host part of the URL if available, otherwise `None`. The - host is either the hostname or the IP address mentioned in the - URL. It will not contain the port. - """ - return self._split_host()[0] - - @property - def ascii_host(self): - """Works exactly like :attr:`host` but will return a result that - is restricted to ASCII. If it finds a netloc that is not ASCII - it will attempt to idna decode it. This is useful for socket - operations when the URL might include internationalized characters. - """ - rv = self.host - if rv is not None and isinstance(rv, text_type): - try: - rv = _encode_idna(rv) - except UnicodeError: - rv = rv.encode("ascii", "ignore") - return to_native(rv, "ascii", "ignore") - - @property - def port(self): - """The port in the URL as an integer if it was present, `None` - otherwise. This does not fill in default ports. - """ - try: - rv = int(to_native(self._split_host()[1])) - if 0 <= rv <= 65535: - return rv - except (ValueError, TypeError): - pass - - @property - def auth(self): - """The authentication part in the URL if available, `None` - otherwise. - """ - return self._split_netloc()[0] - - @property - def username(self): - """The username if it was part of the URL, `None` otherwise. - This undergoes URL decoding and will always be a unicode string. - """ - rv = self._split_auth()[0] - if rv is not None: - return _url_unquote_legacy(rv) - - @property - def raw_username(self): - """The username if it was part of the URL, `None` otherwise. - Unlike :attr:`username` this one is not being decoded. - """ - return self._split_auth()[0] - - @property - def password(self): - """The password if it was part of the URL, `None` otherwise. - This undergoes URL decoding and will always be a unicode string. - """ - rv = self._split_auth()[1] - if rv is not None: - return _url_unquote_legacy(rv) - - @property - def raw_password(self): - """The password if it was part of the URL, `None` otherwise. - Unlike :attr:`password` this one is not being decoded. - """ - return self._split_auth()[1] - - def decode_query(self, *args, **kwargs): - """Decodes the query part of the URL. Ths is a shortcut for - calling :func:`url_decode` on the query argument. The arguments and - keyword arguments are forwarded to :func:`url_decode` unchanged. - """ - return url_decode(self.query, *args, **kwargs) - - def join(self, *args, **kwargs): - """Joins this URL with another one. This is just a convenience - function for calling into :meth:`url_join` and then parsing the - return value again. - """ - return url_parse(url_join(self, *args, **kwargs)) - - def to_url(self): - """Returns a URL string or bytes depending on the type of the - information stored. This is just a convenience function - for calling :meth:`url_unparse` for this URL. - """ - return url_unparse(self) - - def decode_netloc(self): - """Decodes the netloc part into a string.""" - rv = _decode_idna(self.host or "") - - if ":" in rv: - rv = "[%s]" % rv - port = self.port - if port is not None: - rv = "%s:%d" % (rv, port) - auth = ":".join( - filter( - None, - [ - _url_unquote_legacy(self.raw_username or "", "/:%@"), - _url_unquote_legacy(self.raw_password or "", "/:%@"), - ], - ) - ) - if auth: - rv = "%s@%s" % (auth, rv) - return rv - - def to_uri_tuple(self): - """Returns a :class:`BytesURL` tuple that holds a URI. This will - encode all the information in the URL properly to ASCII using the - rules a web browser would follow. - - It's usually more interesting to directly call :meth:`iri_to_uri` which - will return a string. - """ - return url_parse(iri_to_uri(self).encode("ascii")) - - def to_iri_tuple(self): - """Returns a :class:`URL` tuple that holds a IRI. This will try - to decode as much information as possible in the URL without - losing information similar to how a web browser does it for the - URL bar. - - It's usually more interesting to directly call :meth:`uri_to_iri` which - will return a string. - """ - return url_parse(uri_to_iri(self)) - - def get_file_location(self, pathformat=None): - """Returns a tuple with the location of the file in the form - ``(server, location)``. If the netloc is empty in the URL or - points to localhost, it's represented as ``None``. - - The `pathformat` by default is autodetection but needs to be set - when working with URLs of a specific system. The supported values - are ``'windows'`` when working with Windows or DOS paths and - ``'posix'`` when working with posix paths. - - If the URL does not point to a local file, the server and location - are both represented as ``None``. - - :param pathformat: The expected format of the path component. - Currently ``'windows'`` and ``'posix'`` are - supported. Defaults to ``None`` which is - autodetect. - """ - if self.scheme != "file": - return None, None - - path = url_unquote(self.path) - host = self.netloc or None - - if pathformat is None: - if os.name == "nt": - pathformat = "windows" - else: - pathformat = "posix" - - if pathformat == "windows": - if path[:1] == "/" and path[1:2].isalpha() and path[2:3] in "|:": - path = path[1:2] + ":" + path[3:] - windows_share = path[:3] in ("\\" * 3, "/" * 3) - import ntpath - - path = ntpath.normpath(path) - # Windows shared drives are represented as ``\\host\\directory``. - # That results in a URL like ``file://///host/directory``, and a - # path like ``///host/directory``. We need to special-case this - # because the path contains the hostname. - if windows_share and host is None: - parts = path.lstrip("\\").split("\\", 1) - if len(parts) == 2: - host, path = parts - else: - host = parts[0] - path = "" - elif pathformat == "posix": - import posixpath - - path = posixpath.normpath(path) - else: - raise TypeError("Invalid path format %s" % repr(pathformat)) - - if host in ("127.0.0.1", "::1", "localhost"): - host = None - - return host, path - - def _split_netloc(self): - if self._at in self.netloc: - return self.netloc.split(self._at, 1) - return None, self.netloc - - def _split_auth(self): - auth = self._split_netloc()[0] - if not auth: - return None, None - if self._colon not in auth: - return auth, None - return auth.split(self._colon, 1) - - def _split_host(self): - rv = self._split_netloc()[1] - if not rv: - return None, None - - if not rv.startswith(self._lbracket): - if self._colon in rv: - return rv.split(self._colon, 1) - return rv, None - - idx = rv.find(self._rbracket) - if idx < 0: - return rv, None - - host = rv[1:idx] - rest = rv[idx + 1 :] - if rest.startswith(self._colon): - return host, rest[1:] - return host, None - - -@implements_to_string -class URL(BaseURL): - """Represents a parsed URL. This behaves like a regular tuple but - also has some extra attributes that give further insight into the - URL. - """ - - __slots__ = () - _at = "@" - _colon = ":" - _lbracket = "[" - _rbracket = "]" - - def __str__(self): - return self.to_url() - - def encode_netloc(self): - """Encodes the netloc part to an ASCII safe URL as bytes.""" - rv = self.ascii_host or "" - if ":" in rv: - rv = "[%s]" % rv - port = self.port - if port is not None: - rv = "%s:%d" % (rv, port) - auth = ":".join( - filter( - None, - [ - url_quote(self.raw_username or "", "utf-8", "strict", "/:%"), - url_quote(self.raw_password or "", "utf-8", "strict", "/:%"), - ], - ) - ) - if auth: - rv = "%s@%s" % (auth, rv) - return to_native(rv) - - def encode(self, charset="utf-8", errors="replace"): - """Encodes the URL to a tuple made out of bytes. The charset is - only being used for the path, query and fragment. - """ - return BytesURL( - self.scheme.encode("ascii"), - self.encode_netloc(), - self.path.encode(charset, errors), - self.query.encode(charset, errors), - self.fragment.encode(charset, errors), - ) - - -class BytesURL(BaseURL): - """Represents a parsed URL in bytes.""" - - __slots__ = () - _at = b"@" - _colon = b":" - _lbracket = b"[" - _rbracket = b"]" - - def __str__(self): - return self.to_url().decode("utf-8", "replace") - - def encode_netloc(self): - """Returns the netloc unchanged as bytes.""" - return self.netloc - - def decode(self, charset="utf-8", errors="replace"): - """Decodes the URL to a tuple made out of strings. The charset is - only being used for the path, query and fragment. - """ - return URL( - self.scheme.decode("ascii"), - self.decode_netloc(), - self.path.decode(charset, errors), - self.query.decode(charset, errors), - self.fragment.decode(charset, errors), - ) - - -_unquote_maps = {frozenset(): _hextobyte} - - -def _unquote_to_bytes(string, unsafe=""): - if isinstance(string, text_type): - string = string.encode("utf-8") - - if isinstance(unsafe, text_type): - unsafe = unsafe.encode("utf-8") - - unsafe = frozenset(bytearray(unsafe)) - groups = iter(string.split(b"%")) - result = bytearray(next(groups, b"")) - - try: - hex_to_byte = _unquote_maps[unsafe] - except KeyError: - hex_to_byte = _unquote_maps[unsafe] = { - h: b for h, b in _hextobyte.items() if b not in unsafe - } - - for group in groups: - code = group[:2] - - if code in hex_to_byte: - result.append(hex_to_byte[code]) - result.extend(group[2:]) - else: - result.append(37) # % - result.extend(group) - - return bytes(result) - - -def _url_encode_impl(obj, charset, encode_keys, sort, key): - iterable = iter_multi_items(obj) - if sort: - iterable = sorted(iterable, key=key) - for key, value in iterable: - if value is None: - continue - if not isinstance(key, bytes): - key = text_type(key).encode(charset) - if not isinstance(value, bytes): - value = text_type(value).encode(charset) - yield _fast_url_quote_plus(key) + "=" + _fast_url_quote_plus(value) - - -def _url_unquote_legacy(value, unsafe=""): - try: - return url_unquote(value, charset="utf-8", errors="strict", unsafe=unsafe) - except UnicodeError: - return url_unquote(value, charset="latin1", unsafe=unsafe) - - -def url_parse(url, scheme=None, allow_fragments=True): - """Parses a URL from a string into a :class:`URL` tuple. If the URL - is lacking a scheme it can be provided as second argument. Otherwise, - it is ignored. Optionally fragments can be stripped from the URL - by setting `allow_fragments` to `False`. - - The inverse of this function is :func:`url_unparse`. - - :param url: the URL to parse. - :param scheme: the default schema to use if the URL is schemaless. - :param allow_fragments: if set to `False` a fragment will be removed - from the URL. - """ - s = make_literal_wrapper(url) - is_text_based = isinstance(url, text_type) - - if scheme is None: - scheme = s("") - netloc = query = fragment = s("") - i = url.find(s(":")) - if i > 0 and _scheme_re.match(to_native(url[:i], errors="replace")): - # make sure "iri" is not actually a port number (in which case - # "scheme" is really part of the path) - rest = url[i + 1 :] - if not rest or any(c not in s("0123456789") for c in rest): - # not a port number - scheme, url = url[:i].lower(), rest - - if url[:2] == s("//"): - delim = len(url) - for c in s("/?#"): - wdelim = url.find(c, 2) - if wdelim >= 0: - delim = min(delim, wdelim) - netloc, url = url[2:delim], url[delim:] - if (s("[") in netloc and s("]") not in netloc) or ( - s("]") in netloc and s("[") not in netloc - ): - raise ValueError("Invalid IPv6 URL") - - if allow_fragments and s("#") in url: - url, fragment = url.split(s("#"), 1) - if s("?") in url: - url, query = url.split(s("?"), 1) - - result_type = URL if is_text_based else BytesURL - return result_type(scheme, netloc, url, query, fragment) - - -def _make_fast_url_quote(charset="utf-8", errors="strict", safe="/:", unsafe=""): - """Precompile the translation table for a URL encoding function. - - Unlike :func:`url_quote`, the generated function only takes the - string to quote. - - :param charset: The charset to encode the result with. - :param errors: How to handle encoding errors. - :param safe: An optional sequence of safe characters to never encode. - :param unsafe: An optional sequence of unsafe characters to always encode. - """ - if isinstance(safe, text_type): - safe = safe.encode(charset, errors) - - if isinstance(unsafe, text_type): - unsafe = unsafe.encode(charset, errors) - - safe = (frozenset(bytearray(safe)) | _always_safe) - frozenset(bytearray(unsafe)) - table = [chr(c) if c in safe else "%%%02X" % c for c in range(256)] - - if not PY2: - - def quote(string): - return "".join([table[c] for c in string]) - - else: - - def quote(string): - return "".join([table[c] for c in bytearray(string)]) - - return quote - - -_fast_url_quote = _make_fast_url_quote() -_fast_quote_plus = _make_fast_url_quote(safe=" ", unsafe="+") - - -def _fast_url_quote_plus(string): - return _fast_quote_plus(string).replace(" ", "+") - - -def url_quote(string, charset="utf-8", errors="strict", safe="/:", unsafe=""): - """URL encode a single string with a given encoding. - - :param s: the string to quote. - :param charset: the charset to be used. - :param safe: an optional sequence of safe characters. - :param unsafe: an optional sequence of unsafe characters. - - .. versionadded:: 0.9.2 - The `unsafe` parameter was added. - """ - if not isinstance(string, (text_type, bytes, bytearray)): - string = text_type(string) - if isinstance(string, text_type): - string = string.encode(charset, errors) - if isinstance(safe, text_type): - safe = safe.encode(charset, errors) - if isinstance(unsafe, text_type): - unsafe = unsafe.encode(charset, errors) - safe = (frozenset(bytearray(safe)) | _always_safe) - frozenset(bytearray(unsafe)) - rv = bytearray() - for char in bytearray(string): - if char in safe: - rv.append(char) - else: - rv.extend(_bytetohex[char]) - return to_native(bytes(rv)) - - -def url_quote_plus(string, charset="utf-8", errors="strict", safe=""): - """URL encode a single string with the given encoding and convert - whitespace to "+". - - :param s: The string to quote. - :param charset: The charset to be used. - :param safe: An optional sequence of safe characters. - """ - return url_quote(string, charset, errors, safe + " ", "+").replace(" ", "+") - - -def url_unparse(components): - """The reverse operation to :meth:`url_parse`. This accepts arbitrary - as well as :class:`URL` tuples and returns a URL as a string. - - :param components: the parsed URL as tuple which should be converted - into a URL string. - """ - scheme, netloc, path, query, fragment = normalize_string_tuple(components) - s = make_literal_wrapper(scheme) - url = s("") - - # We generally treat file:///x and file:/x the same which is also - # what browsers seem to do. This also allows us to ignore a schema - # register for netloc utilization or having to differenciate between - # empty and missing netloc. - if netloc or (scheme and path.startswith(s("/"))): - if path and path[:1] != s("/"): - path = s("/") + path - url = s("//") + (netloc or s("")) + path - elif path: - url += path - if scheme: - url = scheme + s(":") + url - if query: - url = url + s("?") + query - if fragment: - url = url + s("#") + fragment - return url - - -def url_unquote(string, charset="utf-8", errors="replace", unsafe=""): - """URL decode a single string with a given encoding. If the charset - is set to `None` no unicode decoding is performed and raw bytes - are returned. - - :param s: the string to unquote. - :param charset: the charset of the query string. If set to `None` - no unicode decoding will take place. - :param errors: the error handling for the charset decoding. - """ - rv = _unquote_to_bytes(string, unsafe) - if charset is not None: - rv = rv.decode(charset, errors) - return rv - - -def url_unquote_plus(s, charset="utf-8", errors="replace"): - """URL decode a single string with the given `charset` and decode "+" to - whitespace. - - Per default encoding errors are ignored. If you want a different behavior - you can set `errors` to ``'replace'`` or ``'strict'``. In strict mode a - :exc:`HTTPUnicodeError` is raised. - - :param s: The string to unquote. - :param charset: the charset of the query string. If set to `None` - no unicode decoding will take place. - :param errors: The error handling for the `charset` decoding. - """ - if isinstance(s, text_type): - s = s.replace(u"+", u" ") - else: - s = s.replace(b"+", b" ") - return url_unquote(s, charset, errors) - - -def url_fix(s, charset="utf-8"): - r"""Sometimes you get an URL by a user that just isn't a real URL because - it contains unsafe characters like ' ' and so on. This function can fix - some of the problems in a similar way browsers handle data entered by the - user: - - >>> url_fix(u'http://de.wikipedia.org/wiki/Elf (Begriffskl\xe4rung)') - 'http://de.wikipedia.org/wiki/Elf%20(Begriffskl%C3%A4rung)' - - :param s: the string with the URL to fix. - :param charset: The target charset for the URL if the url was given as - unicode string. - """ - # First step is to switch to unicode processing and to convert - # backslashes (which are invalid in URLs anyways) to slashes. This is - # consistent with what Chrome does. - s = to_unicode(s, charset, "replace").replace("\\", "/") - - # For the specific case that we look like a malformed windows URL - # we want to fix this up manually: - if s.startswith("file://") and s[7:8].isalpha() and s[8:10] in (":/", "|/"): - s = "file:///" + s[7:] - - url = url_parse(s) - path = url_quote(url.path, charset, safe="/%+$!*'(),") - qs = url_quote_plus(url.query, charset, safe=":&%=+$!*'(),") - anchor = url_quote_plus(url.fragment, charset, safe=":&%=+$!*'(),") - return to_native(url_unparse((url.scheme, url.encode_netloc(), path, qs, anchor))) - - -# not-unreserved characters remain quoted when unquoting to IRI -_to_iri_unsafe = "".join([chr(c) for c in range(128) if c not in _always_safe]) - - -def _codec_error_url_quote(e): - """Used in :func:`uri_to_iri` after unquoting to re-quote any - invalid bytes. - """ - out = _fast_url_quote(e.object[e.start : e.end]) - - if PY2: - out = out.decode("utf-8") - - return out, e.end - - -codecs.register_error("werkzeug.url_quote", _codec_error_url_quote) - - -def uri_to_iri(uri, charset="utf-8", errors="werkzeug.url_quote"): - """Convert a URI to an IRI. All valid UTF-8 characters are unquoted, - leaving all reserved and invalid characters quoted. If the URL has - a domain, it is decoded from Punycode. - - >>> uri_to_iri("http://xn--n3h.net/p%C3%A5th?q=%C3%A8ry%DF") - 'http://\\u2603.net/p\\xe5th?q=\\xe8ry%DF' - - :param uri: The URI to convert. - :param charset: The encoding to encode unquoted bytes with. - :param errors: Error handler to use during ``bytes.encode``. By - default, invalid bytes are left quoted. - - .. versionchanged:: 0.15 - All reserved and invalid characters remain quoted. Previously, - only some reserved characters were preserved, and invalid bytes - were replaced instead of left quoted. - - .. versionadded:: 0.6 - """ - if isinstance(uri, tuple): - uri = url_unparse(uri) - - uri = url_parse(to_unicode(uri, charset)) - path = url_unquote(uri.path, charset, errors, _to_iri_unsafe) - query = url_unquote(uri.query, charset, errors, _to_iri_unsafe) - fragment = url_unquote(uri.fragment, charset, errors, _to_iri_unsafe) - return url_unparse((uri.scheme, uri.decode_netloc(), path, query, fragment)) - - -# reserved characters remain unquoted when quoting to URI -_to_uri_safe = ":/?#[]@!$&'()*+,;=%" - - -def iri_to_uri(iri, charset="utf-8", errors="strict", safe_conversion=False): - """Convert an IRI to a URI. All non-ASCII and unsafe characters are - quoted. If the URL has a domain, it is encoded to Punycode. - - >>> iri_to_uri('http://\\u2603.net/p\\xe5th?q=\\xe8ry%DF') - 'http://xn--n3h.net/p%C3%A5th?q=%C3%A8ry%DF' - - :param iri: The IRI to convert. - :param charset: The encoding of the IRI. - :param errors: Error handler to use during ``bytes.encode``. - :param safe_conversion: Return the URL unchanged if it only contains - ASCII characters and no whitespace. See the explanation below. - - There is a general problem with IRI conversion with some protocols - that are in violation of the URI specification. Consider the - following two IRIs:: - - magnet:?xt=uri:whatever - itms-services://?action=download-manifest - - After parsing, we don't know if the scheme requires the ``//``, - which is dropped if empty, but conveys different meanings in the - final URL if it's present or not. In this case, you can use - ``safe_conversion``, which will return the URL unchanged if it only - contains ASCII characters and no whitespace. This can result in a - URI with unquoted characters if it was not already quoted correctly, - but preserves the URL's semantics. Werkzeug uses this for the - ``Location`` header for redirects. - - .. versionchanged:: 0.15 - All reserved characters remain unquoted. Previously, only some - reserved characters were left unquoted. - - .. versionchanged:: 0.9.6 - The ``safe_conversion`` parameter was added. - - .. versionadded:: 0.6 - """ - if isinstance(iri, tuple): - iri = url_unparse(iri) - - if safe_conversion: - # If we're not sure if it's safe to convert the URL, and it only - # contains ASCII characters, return it unconverted. - try: - native_iri = to_native(iri) - ascii_iri = native_iri.encode("ascii") - - # Only return if it doesn't have whitespace. (Why?) - if len(ascii_iri.split()) == 1: - return native_iri - except UnicodeError: - pass - - iri = url_parse(to_unicode(iri, charset, errors)) - path = url_quote(iri.path, charset, errors, _to_uri_safe) - query = url_quote(iri.query, charset, errors, _to_uri_safe) - fragment = url_quote(iri.fragment, charset, errors, _to_uri_safe) - return to_native( - url_unparse((iri.scheme, iri.encode_netloc(), path, query, fragment)) - ) - - -def url_decode( - s, - charset="utf-8", - decode_keys=False, - include_empty=True, - errors="replace", - separator="&", - cls=None, -): - """ - Parse a querystring and return it as :class:`MultiDict`. There is a - difference in key decoding on different Python versions. On Python 3 - keys will always be fully decoded whereas on Python 2, keys will - remain bytestrings if they fit into ASCII. On 2.x keys can be forced - to be unicode by setting `decode_keys` to `True`. - - If the charset is set to `None` no unicode decoding will happen and - raw bytes will be returned. - - Per default a missing value for a key will default to an empty key. If - you don't want that behavior you can set `include_empty` to `False`. - - Per default encoding errors are ignored. If you want a different behavior - you can set `errors` to ``'replace'`` or ``'strict'``. In strict mode a - `HTTPUnicodeError` is raised. - - .. versionchanged:: 0.5 - In previous versions ";" and "&" could be used for url decoding. - This changed in 0.5 where only "&" is supported. If you want to - use ";" instead a different `separator` can be provided. - - The `cls` parameter was added. - - :param s: a string with the query string to decode. - :param charset: the charset of the query string. If set to `None` - no unicode decoding will take place. - :param decode_keys: Used on Python 2.x to control whether keys should - be forced to be unicode objects. If set to `True` - then keys will be unicode in all cases. Otherwise, - they remain `str` if they fit into ASCII. - :param include_empty: Set to `False` if you don't want empty values to - appear in the dict. - :param errors: the decoding error behavior. - :param separator: the pair separator to be used, defaults to ``&`` - :param cls: an optional dict class to use. If this is not specified - or `None` the default :class:`MultiDict` is used. - """ - if cls is None: - cls = MultiDict - if isinstance(s, text_type) and not isinstance(separator, text_type): - separator = separator.decode(charset or "ascii") - elif isinstance(s, bytes) and not isinstance(separator, bytes): - separator = separator.encode(charset or "ascii") - return cls( - _url_decode_impl( - s.split(separator), charset, decode_keys, include_empty, errors - ) - ) - - -def url_decode_stream( - stream, - charset="utf-8", - decode_keys=False, - include_empty=True, - errors="replace", - separator="&", - cls=None, - limit=None, - return_iterator=False, -): - """Works like :func:`url_decode` but decodes a stream. The behavior - of stream and limit follows functions like - :func:`~werkzeug.wsgi.make_line_iter`. The generator of pairs is - directly fed to the `cls` so you can consume the data while it's - parsed. - - .. versionadded:: 0.8 - - :param stream: a stream with the encoded querystring - :param charset: the charset of the query string. If set to `None` - no unicode decoding will take place. - :param decode_keys: Used on Python 2.x to control whether keys should - be forced to be unicode objects. If set to `True`, - keys will be unicode in all cases. Otherwise, they - remain `str` if they fit into ASCII. - :param include_empty: Set to `False` if you don't want empty values to - appear in the dict. - :param errors: the decoding error behavior. - :param separator: the pair separator to be used, defaults to ``&`` - :param cls: an optional dict class to use. If this is not specified - or `None` the default :class:`MultiDict` is used. - :param limit: the content length of the URL data. Not necessary if - a limited stream is provided. - :param return_iterator: if set to `True` the `cls` argument is ignored - and an iterator over all decoded pairs is - returned - """ - from .wsgi import make_chunk_iter - - pair_iter = make_chunk_iter(stream, separator, limit) - decoder = _url_decode_impl(pair_iter, charset, decode_keys, include_empty, errors) - - if return_iterator: - return decoder - - if cls is None: - cls = MultiDict - - return cls(decoder) - - -def _url_decode_impl(pair_iter, charset, decode_keys, include_empty, errors): - for pair in pair_iter: - if not pair: - continue - s = make_literal_wrapper(pair) - equal = s("=") - if equal in pair: - key, value = pair.split(equal, 1) - else: - if not include_empty: - continue - key = pair - value = s("") - key = url_unquote_plus(key, charset, errors) - if charset is not None and PY2 and not decode_keys: - key = try_coerce_native(key) - yield key, url_unquote_plus(value, charset, errors) - - -def url_encode( - obj, charset="utf-8", encode_keys=False, sort=False, key=None, separator=b"&" -): - """URL encode a dict/`MultiDict`. If a value is `None` it will not appear - in the result string. Per default only values are encoded into the target - charset strings. If `encode_keys` is set to ``True`` unicode keys are - supported too. - - If `sort` is set to `True` the items are sorted by `key` or the default - sorting algorithm. - - .. versionadded:: 0.5 - `sort`, `key`, and `separator` were added. - - :param obj: the object to encode into a query string. - :param charset: the charset of the query string. - :param encode_keys: set to `True` if you have unicode keys. (Ignored on - Python 3.x) - :param sort: set to `True` if you want parameters to be sorted by `key`. - :param separator: the separator to be used for the pairs. - :param key: an optional function to be used for sorting. For more details - check out the :func:`sorted` documentation. - """ - separator = to_native(separator, "ascii") - return separator.join(_url_encode_impl(obj, charset, encode_keys, sort, key)) - - -def url_encode_stream( - obj, - stream=None, - charset="utf-8", - encode_keys=False, - sort=False, - key=None, - separator=b"&", -): - """Like :meth:`url_encode` but writes the results to a stream - object. If the stream is `None` a generator over all encoded - pairs is returned. - - .. versionadded:: 0.8 - - :param obj: the object to encode into a query string. - :param stream: a stream to write the encoded object into or `None` if - an iterator over the encoded pairs should be returned. In - that case the separator argument is ignored. - :param charset: the charset of the query string. - :param encode_keys: set to `True` if you have unicode keys. (Ignored on - Python 3.x) - :param sort: set to `True` if you want parameters to be sorted by `key`. - :param separator: the separator to be used for the pairs. - :param key: an optional function to be used for sorting. For more details - check out the :func:`sorted` documentation. - """ - separator = to_native(separator, "ascii") - gen = _url_encode_impl(obj, charset, encode_keys, sort, key) - if stream is None: - return gen - for idx, chunk in enumerate(gen): - if idx: - stream.write(separator) - stream.write(chunk) - - -def url_join(base, url, allow_fragments=True): - """Join a base URL and a possibly relative URL to form an absolute - interpretation of the latter. - - :param base: the base URL for the join operation. - :param url: the URL to join. - :param allow_fragments: indicates whether fragments should be allowed. - """ - if isinstance(base, tuple): - base = url_unparse(base) - if isinstance(url, tuple): - url = url_unparse(url) - - base, url = normalize_string_tuple((base, url)) - s = make_literal_wrapper(base) - - if not base: - return url - if not url: - return base - - bscheme, bnetloc, bpath, bquery, bfragment = url_parse( - base, allow_fragments=allow_fragments - ) - scheme, netloc, path, query, fragment = url_parse(url, bscheme, allow_fragments) - if scheme != bscheme: - return url - if netloc: - return url_unparse((scheme, netloc, path, query, fragment)) - netloc = bnetloc - - if path[:1] == s("/"): - segments = path.split(s("/")) - elif not path: - segments = bpath.split(s("/")) - if not query: - query = bquery - else: - segments = bpath.split(s("/"))[:-1] + path.split(s("/")) - - # If the rightmost part is "./" we want to keep the slash but - # remove the dot. - if segments[-1] == s("."): - segments[-1] = s("") - - # Resolve ".." and "." - segments = [segment for segment in segments if segment != s(".")] - while 1: - i = 1 - n = len(segments) - 1 - while i < n: - if segments[i] == s("..") and segments[i - 1] not in (s(""), s("..")): - del segments[i - 1 : i + 1] - break - i += 1 - else: - break - - # Remove trailing ".." if the URL is absolute - unwanted_marker = [s(""), s("..")] - while segments[:2] == unwanted_marker: - del segments[1] - - path = s("/").join(segments) - return url_unparse((scheme, netloc, path, query, fragment)) - - -class Href(object): - """Implements a callable that constructs URLs with the given base. The - function can be called with any number of positional and keyword - arguments which than are used to assemble the URL. Works with URLs - and posix paths. - - Positional arguments are appended as individual segments to - the path of the URL: - - >>> href = Href('/foo') - >>> href('bar', 23) - '/foo/bar/23' - >>> href('foo', bar=23) - '/foo/foo?bar=23' - - If any of the arguments (positional or keyword) evaluates to `None` it - will be skipped. If no keyword arguments are given the last argument - can be a :class:`dict` or :class:`MultiDict` (or any other dict subclass), - otherwise the keyword arguments are used for the query parameters, cutting - off the first trailing underscore of the parameter name: - - >>> href(is_=42) - '/foo?is=42' - >>> href({'foo': 'bar'}) - '/foo?foo=bar' - - Combining of both methods is not allowed: - - >>> href({'foo': 'bar'}, bar=42) - Traceback (most recent call last): - ... - TypeError: keyword arguments and query-dicts can't be combined - - Accessing attributes on the href object creates a new href object with - the attribute name as prefix: - - >>> bar_href = href.bar - >>> bar_href("blub") - '/foo/bar/blub' - - If `sort` is set to `True` the items are sorted by `key` or the default - sorting algorithm: - - >>> href = Href("/", sort=True) - >>> href(a=1, b=2, c=3) - '/?a=1&b=2&c=3' - - .. versionadded:: 0.5 - `sort` and `key` were added. - """ - - def __init__(self, base="./", charset="utf-8", sort=False, key=None): - if not base: - base = "./" - self.base = base - self.charset = charset - self.sort = sort - self.key = key - - def __getattr__(self, name): - if name[:2] == "__": - raise AttributeError(name) - base = self.base - if base[-1:] != "/": - base += "/" - return Href(url_join(base, name), self.charset, self.sort, self.key) - - def __call__(self, *path, **query): - if path and isinstance(path[-1], dict): - if query: - raise TypeError("keyword arguments and query-dicts can't be combined") - query, path = path[-1], path[:-1] - elif query: - query = dict( - [(k.endswith("_") and k[:-1] or k, v) for k, v in query.items()] - ) - path = "/".join( - [ - to_unicode(url_quote(x, self.charset), "ascii") - for x in path - if x is not None - ] - ).lstrip("/") - rv = self.base - if path: - if not rv.endswith("/"): - rv += "/" - rv = url_join(rv, "./" + path) - if query: - rv += "?" + to_unicode( - url_encode(query, self.charset, sort=self.sort, key=self.key), "ascii" - ) - return to_native(rv) diff --git a/python/werkzeug/useragents.py b/python/werkzeug/useragents.py deleted file mode 100644 index e265e09..0000000 --- a/python/werkzeug/useragents.py +++ /dev/null @@ -1,220 +0,0 @@ -# -*- coding: utf-8 -*- -""" - werkzeug.useragents - ~~~~~~~~~~~~~~~~~~~ - - This module provides a helper to inspect user agent strings. This module - is far from complete but should work for most of the currently available - browsers. - - - :copyright: 2007 Pallets - :license: BSD-3-Clause -""" -import re -import warnings - - -class UserAgentParser(object): - """A simple user agent parser. Used by the `UserAgent`.""" - - platforms = ( - ("cros", "chromeos"), - ("iphone|ios", "iphone"), - ("ipad", "ipad"), - (r"darwin|mac|os\s*x", "macos"), - ("win", "windows"), - (r"android", "android"), - ("netbsd", "netbsd"), - ("openbsd", "openbsd"), - ("freebsd", "freebsd"), - ("dragonfly", "dragonflybsd"), - ("(sun|i86)os", "solaris"), - (r"x11|lin(\b|ux)?", "linux"), - (r"nintendo\s+wii", "wii"), - ("irix", "irix"), - ("hp-?ux", "hpux"), - ("aix", "aix"), - ("sco|unix_sv", "sco"), - ("bsd", "bsd"), - ("amiga", "amiga"), - ("blackberry|playbook", "blackberry"), - ("symbian", "symbian"), - ) - browsers = ( - ("googlebot", "google"), - ("msnbot", "msn"), - ("yahoo", "yahoo"), - ("ask jeeves", "ask"), - (r"aol|america\s+online\s+browser", "aol"), - ("opera", "opera"), - ("edge", "edge"), - ("chrome|crios", "chrome"), - ("seamonkey", "seamonkey"), - ("firefox|firebird|phoenix|iceweasel", "firefox"), - ("galeon", "galeon"), - ("safari|version", "safari"), - ("webkit", "webkit"), - ("camino", "camino"), - ("konqueror", "konqueror"), - ("k-meleon", "kmeleon"), - ("netscape", "netscape"), - (r"msie|microsoft\s+internet\s+explorer|trident/.+? rv:", "msie"), - ("lynx", "lynx"), - ("links", "links"), - ("Baiduspider", "baidu"), - ("bingbot", "bing"), - ("mozilla", "mozilla"), - ) - - _browser_version_re = r"(?:%s)[/\sa-z(]*(\d+[.\da-z]+)?" - _language_re = re.compile( - r"(?:;\s*|\s+)(\b\w{2}\b(?:-\b\w{2}\b)?)\s*;|" - r"(?:\(|\[|;)\s*(\b\w{2}\b(?:-\b\w{2}\b)?)\s*(?:\]|\)|;)" - ) - - def __init__(self): - self.platforms = [(b, re.compile(a, re.I)) for a, b in self.platforms] - self.browsers = [ - (b, re.compile(self._browser_version_re % a, re.I)) - for a, b in self.browsers - ] - - def __call__(self, user_agent): - for platform, regex in self.platforms: # noqa: B007 - match = regex.search(user_agent) - if match is not None: - break - else: - platform = None - for browser, regex in self.browsers: # noqa: B007 - match = regex.search(user_agent) - if match is not None: - version = match.group(1) - break - else: - browser = version = None - match = self._language_re.search(user_agent) - if match is not None: - language = match.group(1) or match.group(2) - else: - language = None - return platform, browser, version, language - - -class UserAgent(object): - """Represents a user agent. Pass it a WSGI environment or a user agent - string and you can inspect some of the details from the user agent - string via the attributes. The following attributes exist: - - .. attribute:: string - - the raw user agent string - - .. attribute:: platform - - the browser platform. The following platforms are currently - recognized: - - - `aix` - - `amiga` - - `android` - - `blackberry` - - `bsd` - - `chromeos` - - `dragonflybsd` - - `freebsd` - - `hpux` - - `ipad` - - `iphone` - - `irix` - - `linux` - - `macos` - - `netbsd` - - `openbsd` - - `sco` - - `solaris` - - `symbian` - - `wii` - - `windows` - - .. attribute:: browser - - the name of the browser. The following browsers are currently - recognized: - - - `aol` * - - `ask` * - - `baidu` * - - `bing` * - - `camino` - - `chrome` - - `edge` - - `firefox` - - `galeon` - - `google` * - - `kmeleon` - - `konqueror` - - `links` - - `lynx` - - `mozilla` - - `msie` - - `msn` - - `netscape` - - `opera` - - `safari` - - `seamonkey` - - `webkit` - - `yahoo` * - - (Browsers marked with a star (``*``) are crawlers.) - - .. attribute:: version - - the version of the browser - - .. attribute:: language - - the language of the browser - """ - - _parser = UserAgentParser() - - def __init__(self, environ_or_string): - if isinstance(environ_or_string, dict): - environ_or_string = environ_or_string.get("HTTP_USER_AGENT", "") - self.string = environ_or_string - self.platform, self.browser, self.version, self.language = self._parser( - environ_or_string - ) - - def to_header(self): - return self.string - - def __str__(self): - return self.string - - def __nonzero__(self): - return bool(self.browser) - - __bool__ = __nonzero__ - - def __repr__(self): - return "<%s %r/%s>" % (self.__class__.__name__, self.browser, self.version) - - -# DEPRECATED -from .wrappers import UserAgentMixin as _UserAgentMixin - - -class UserAgentMixin(_UserAgentMixin): - @property - def user_agent(self, *args, **kwargs): - warnings.warn( - "'werkzeug.useragents.UserAgentMixin' should be imported" - " from 'werkzeug.wrappers.UserAgentMixin'. This old import" - " will be removed in version 1.0.", - DeprecationWarning, - stacklevel=2, - ) - return super(_UserAgentMixin, self).user_agent diff --git a/python/werkzeug/utils.py b/python/werkzeug/utils.py deleted file mode 100644 index 2062057..0000000 --- a/python/werkzeug/utils.py +++ /dev/null @@ -1,836 +0,0 @@ -# -*- coding: utf-8 -*- -""" - werkzeug.utils - ~~~~~~~~~~~~~~ - - This module implements various utilities for WSGI applications. Most of - them are used by the request and response wrappers but especially for - middleware development it makes sense to use them without the wrappers. - - :copyright: 2007 Pallets - :license: BSD-3-Clause -""" -import codecs -import os -import pkgutil -import re -import sys -import warnings - -from ._compat import iteritems -from ._compat import PY2 -from ._compat import reraise -from ._compat import string_types -from ._compat import text_type -from ._compat import unichr -from ._internal import _DictAccessorProperty -from ._internal import _missing -from ._internal import _parse_signature - -try: - from html.entities import name2codepoint -except ImportError: - from htmlentitydefs import name2codepoint - - -_format_re = re.compile(r"\$(?:(%s)|\{(%s)\})" % (("[a-zA-Z_][a-zA-Z0-9_]*",) * 2)) -_entity_re = re.compile(r"&([^;]+);") -_filename_ascii_strip_re = re.compile(r"[^A-Za-z0-9_.-]") -_windows_device_files = ( - "CON", - "AUX", - "COM1", - "COM2", - "COM3", - "COM4", - "LPT1", - "LPT2", - "LPT3", - "PRN", - "NUL", -) - - -class cached_property(property): - """A decorator that converts a function into a lazy property. The - function wrapped is called the first time to retrieve the result - and then that calculated result is used the next time you access - the value:: - - class Foo(object): - - @cached_property - def foo(self): - # calculate something important here - return 42 - - The class has to have a `__dict__` in order for this property to - work. - """ - - # implementation detail: A subclass of python's builtin property - # decorator, we override __get__ to check for a cached value. If one - # chooses to invoke __get__ by hand the property will still work as - # expected because the lookup logic is replicated in __get__ for - # manual invocation. - - def __init__(self, func, name=None, doc=None): - self.__name__ = name or func.__name__ - self.__module__ = func.__module__ - self.__doc__ = doc or func.__doc__ - self.func = func - - def __set__(self, obj, value): - obj.__dict__[self.__name__] = value - - def __get__(self, obj, type=None): - if obj is None: - return self - value = obj.__dict__.get(self.__name__, _missing) - if value is _missing: - value = self.func(obj) - obj.__dict__[self.__name__] = value - return value - - -class environ_property(_DictAccessorProperty): - """Maps request attributes to environment variables. This works not only - for the Werzeug request object, but also any other class with an - environ attribute: - - >>> class Test(object): - ... environ = {'key': 'value'} - ... test = environ_property('key') - >>> var = Test() - >>> var.test - 'value' - - If you pass it a second value it's used as default if the key does not - exist, the third one can be a converter that takes a value and converts - it. If it raises :exc:`ValueError` or :exc:`TypeError` the default value - is used. If no default value is provided `None` is used. - - Per default the property is read only. You have to explicitly enable it - by passing ``read_only=False`` to the constructor. - """ - - read_only = True - - def lookup(self, obj): - return obj.environ - - -class header_property(_DictAccessorProperty): - """Like `environ_property` but for headers.""" - - def lookup(self, obj): - return obj.headers - - -class HTMLBuilder(object): - """Helper object for HTML generation. - - Per default there are two instances of that class. The `html` one, and - the `xhtml` one for those two dialects. The class uses keyword parameters - and positional parameters to generate small snippets of HTML. - - Keyword parameters are converted to XML/SGML attributes, positional - arguments are used as children. Because Python accepts positional - arguments before keyword arguments it's a good idea to use a list with the - star-syntax for some children: - - >>> html.p(class_='foo', *[html.a('foo', href='foo.html'), ' ', - ... html.a('bar', href='bar.html')]) - u'<p class="foo"><a href="foo.html">foo</a> <a href="bar.html">bar</a></p>' - - This class works around some browser limitations and can not be used for - arbitrary SGML/XML generation. For that purpose lxml and similar - libraries exist. - - Calling the builder escapes the string passed: - - >>> html.p(html("<foo>")) - u'<p>&lt;foo&gt;</p>' - """ - - _entity_re = re.compile(r"&([^;]+);") - _entities = name2codepoint.copy() - _entities["apos"] = 39 - _empty_elements = { - "area", - "base", - "basefont", - "br", - "col", - "command", - "embed", - "frame", - "hr", - "img", - "input", - "keygen", - "isindex", - "link", - "meta", - "param", - "source", - "wbr", - } - _boolean_attributes = { - "selected", - "checked", - "compact", - "declare", - "defer", - "disabled", - "ismap", - "multiple", - "nohref", - "noresize", - "noshade", - "nowrap", - } - _plaintext_elements = {"textarea"} - _c_like_cdata = {"script", "style"} - - def __init__(self, dialect): - self._dialect = dialect - - def __call__(self, s): - return escape(s) - - def __getattr__(self, tag): - if tag[:2] == "__": - raise AttributeError(tag) - - def proxy(*children, **arguments): - buffer = "<" + tag - for key, value in iteritems(arguments): - if value is None: - continue - if key[-1] == "_": - key = key[:-1] - if key in self._boolean_attributes: - if not value: - continue - if self._dialect == "xhtml": - value = '="' + key + '"' - else: - value = "" - else: - value = '="' + escape(value) + '"' - buffer += " " + key + value - if not children and tag in self._empty_elements: - if self._dialect == "xhtml": - buffer += " />" - else: - buffer += ">" - return buffer - buffer += ">" - - children_as_string = "".join( - [text_type(x) for x in children if x is not None] - ) - - if children_as_string: - if tag in self._plaintext_elements: - children_as_string = escape(children_as_string) - elif tag in self._c_like_cdata and self._dialect == "xhtml": - children_as_string = ( - "/*<![CDATA[*/" + children_as_string + "/*]]>*/" - ) - buffer += children_as_string + "</" + tag + ">" - return buffer - - return proxy - - def __repr__(self): - return "<%s for %r>" % (self.__class__.__name__, self._dialect) - - -html = HTMLBuilder("html") -xhtml = HTMLBuilder("xhtml") - -# https://cgit.freedesktop.org/xdg/shared-mime-info/tree/freedesktop.org.xml.in -# https://www.iana.org/assignments/media-types/media-types.xhtml -# Types listed in the XDG mime info that have a charset in the IANA registration. -_charset_mimetypes = { - "application/ecmascript", - "application/javascript", - "application/sql", - "application/xml", - "application/xml-dtd", - "application/xml-external-parsed-entity", -} - - -def get_content_type(mimetype, charset): - """Returns the full content type string with charset for a mimetype. - - If the mimetype represents text, the charset parameter will be - appended, otherwise the mimetype is returned unchanged. - - :param mimetype: The mimetype to be used as content type. - :param charset: The charset to be appended for text mimetypes. - :return: The content type. - - .. verionchanged:: 0.15 - Any type that ends with ``+xml`` gets a charset, not just those - that start with ``application/``. Known text types such as - ``application/javascript`` are also given charsets. - """ - if ( - mimetype.startswith("text/") - or mimetype in _charset_mimetypes - or mimetype.endswith("+xml") - ): - mimetype += "; charset=" + charset - - return mimetype - - -def detect_utf_encoding(data): - """Detect which UTF encoding was used to encode the given bytes. - - The latest JSON standard (:rfc:`8259`) suggests that only UTF-8 is - accepted. Older documents allowed 8, 16, or 32. 16 and 32 can be big - or little endian. Some editors or libraries may prepend a BOM. - - :internal: - - :param data: Bytes in unknown UTF encoding. - :return: UTF encoding name - - .. versionadded:: 0.15 - """ - head = data[:4] - - if head[:3] == codecs.BOM_UTF8: - return "utf-8-sig" - - if b"\x00" not in head: - return "utf-8" - - if head in (codecs.BOM_UTF32_BE, codecs.BOM_UTF32_LE): - return "utf-32" - - if head[:2] in (codecs.BOM_UTF16_BE, codecs.BOM_UTF16_LE): - return "utf-16" - - if len(head) == 4: - if head[:3] == b"\x00\x00\x00": - return "utf-32-be" - - if head[::2] == b"\x00\x00": - return "utf-16-be" - - if head[1:] == b"\x00\x00\x00": - return "utf-32-le" - - if head[1::2] == b"\x00\x00": - return "utf-16-le" - - if len(head) == 2: - return "utf-16-be" if head.startswith(b"\x00") else "utf-16-le" - - return "utf-8" - - -def format_string(string, context): - """String-template format a string: - - >>> format_string('$foo and ${foo}s', dict(foo=42)) - '42 and 42s' - - This does not do any attribute lookup etc. For more advanced string - formattings have a look at the `werkzeug.template` module. - - :param string: the format string. - :param context: a dict with the variables to insert. - """ - - def lookup_arg(match): - x = context[match.group(1) or match.group(2)] - if not isinstance(x, string_types): - x = type(string)(x) - return x - - return _format_re.sub(lookup_arg, string) - - -def secure_filename(filename): - r"""Pass it a filename and it will return a secure version of it. This - filename can then safely be stored on a regular file system and passed - to :func:`os.path.join`. The filename returned is an ASCII only string - for maximum portability. - - On windows systems the function also makes sure that the file is not - named after one of the special device files. - - >>> secure_filename("My cool movie.mov") - 'My_cool_movie.mov' - >>> secure_filename("../../../etc/passwd") - 'etc_passwd' - >>> secure_filename(u'i contain cool \xfcml\xe4uts.txt') - 'i_contain_cool_umlauts.txt' - - The function might return an empty filename. It's your responsibility - to ensure that the filename is unique and that you abort or - generate a random filename if the function returned an empty one. - - .. versionadded:: 0.5 - - :param filename: the filename to secure - """ - if isinstance(filename, text_type): - from unicodedata import normalize - - filename = normalize("NFKD", filename).encode("ascii", "ignore") - if not PY2: - filename = filename.decode("ascii") - for sep in os.path.sep, os.path.altsep: - if sep: - filename = filename.replace(sep, " ") - filename = str(_filename_ascii_strip_re.sub("", "_".join(filename.split()))).strip( - "._" - ) - - # on nt a couple of special files are present in each folder. We - # have to ensure that the target file is not such a filename. In - # this case we prepend an underline - if ( - os.name == "nt" - and filename - and filename.split(".")[0].upper() in _windows_device_files - ): - filename = "_" + filename - - return filename - - -def escape(s, quote=None): - """Replace special characters "&", "<", ">" and (") to HTML-safe sequences. - - There is a special handling for `None` which escapes to an empty string. - - .. versionchanged:: 0.9 - `quote` is now implicitly on. - - :param s: the string to escape. - :param quote: ignored. - """ - if s is None: - return "" - elif hasattr(s, "__html__"): - return text_type(s.__html__()) - elif not isinstance(s, string_types): - s = text_type(s) - if quote is not None: - from warnings import warn - - warn( - "The 'quote' parameter is no longer used as of version 0.9" - " and will be removed in version 1.0.", - DeprecationWarning, - stacklevel=2, - ) - s = ( - s.replace("&", "&amp;") - .replace("<", "&lt;") - .replace(">", "&gt;") - .replace('"', "&quot;") - ) - return s - - -def unescape(s): - """The reverse function of `escape`. This unescapes all the HTML - entities, not only the XML entities inserted by `escape`. - - :param s: the string to unescape. - """ - - def handle_match(m): - name = m.group(1) - if name in HTMLBuilder._entities: - return unichr(HTMLBuilder._entities[name]) - try: - if name[:2] in ("#x", "#X"): - return unichr(int(name[2:], 16)) - elif name.startswith("#"): - return unichr(int(name[1:])) - except ValueError: - pass - return u"" - - return _entity_re.sub(handle_match, s) - - -def redirect(location, code=302, Response=None): - """Returns a response object (a WSGI application) that, if called, - redirects the client to the target location. Supported codes are - 301, 302, 303, 305, 307, and 308. 300 is not supported because - it's not a real redirect and 304 because it's the answer for a - request with a request with defined If-Modified-Since headers. - - .. versionadded:: 0.6 - The location can now be a unicode string that is encoded using - the :func:`iri_to_uri` function. - - .. versionadded:: 0.10 - The class used for the Response object can now be passed in. - - :param location: the location the response should redirect to. - :param code: the redirect status code. defaults to 302. - :param class Response: a Response class to use when instantiating a - response. The default is :class:`werkzeug.wrappers.Response` if - unspecified. - """ - if Response is None: - from .wrappers import Response - - display_location = escape(location) - if isinstance(location, text_type): - # Safe conversion is necessary here as we might redirect - # to a broken URI scheme (for instance itms-services). - from .urls import iri_to_uri - - location = iri_to_uri(location, safe_conversion=True) - response = Response( - '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">\n' - "<title>Redirecting...</title>\n" - "<h1>Redirecting...</h1>\n" - "<p>You should be redirected automatically to target URL: " - '<a href="%s">%s</a>. If not click the link.' - % (escape(location), display_location), - code, - mimetype="text/html", - ) - response.headers["Location"] = location - return response - - -def append_slash_redirect(environ, code=301): - """Redirects to the same URL but with a slash appended. The behavior - of this function is undefined if the path ends with a slash already. - - :param environ: the WSGI environment for the request that triggers - the redirect. - :param code: the status code for the redirect. - """ - new_path = environ["PATH_INFO"].strip("/") + "/" - query_string = environ.get("QUERY_STRING") - if query_string: - new_path += "?" + query_string - return redirect(new_path, code) - - -def import_string(import_name, silent=False): - """Imports an object based on a string. This is useful if you want to - use import paths as endpoints or something similar. An import path can - be specified either in dotted notation (``xml.sax.saxutils.escape``) - or with a colon as object delimiter (``xml.sax.saxutils:escape``). - - If `silent` is True the return value will be `None` if the import fails. - - :param import_name: the dotted name for the object to import. - :param silent: if set to `True` import errors are ignored and - `None` is returned instead. - :return: imported object - """ - # force the import name to automatically convert to strings - # __import__ is not able to handle unicode strings in the fromlist - # if the module is a package - import_name = str(import_name).replace(":", ".") - try: - try: - __import__(import_name) - except ImportError: - if "." not in import_name: - raise - else: - return sys.modules[import_name] - - module_name, obj_name = import_name.rsplit(".", 1) - module = __import__(module_name, globals(), locals(), [obj_name]) - try: - return getattr(module, obj_name) - except AttributeError as e: - raise ImportError(e) - - except ImportError as e: - if not silent: - reraise( - ImportStringError, ImportStringError(import_name, e), sys.exc_info()[2] - ) - - -def find_modules(import_path, include_packages=False, recursive=False): - """Finds all the modules below a package. This can be useful to - automatically import all views / controllers so that their metaclasses / - function decorators have a chance to register themselves on the - application. - - Packages are not returned unless `include_packages` is `True`. This can - also recursively list modules but in that case it will import all the - packages to get the correct load path of that module. - - :param import_path: the dotted name for the package to find child modules. - :param include_packages: set to `True` if packages should be returned, too. - :param recursive: set to `True` if recursion should happen. - :return: generator - """ - module = import_string(import_path) - path = getattr(module, "__path__", None) - if path is None: - raise ValueError("%r is not a package" % import_path) - basename = module.__name__ + "." - for _importer, modname, ispkg in pkgutil.iter_modules(path): - modname = basename + modname - if ispkg: - if include_packages: - yield modname - if recursive: - for item in find_modules(modname, include_packages, True): - yield item - else: - yield modname - - -def validate_arguments(func, args, kwargs, drop_extra=True): - """Checks if the function accepts the arguments and keyword arguments. - Returns a new ``(args, kwargs)`` tuple that can safely be passed to - the function without causing a `TypeError` because the function signature - is incompatible. If `drop_extra` is set to `True` (which is the default) - any extra positional or keyword arguments are dropped automatically. - - The exception raised provides three attributes: - - `missing` - A set of argument names that the function expected but where - missing. - - `extra` - A dict of keyword arguments that the function can not handle but - where provided. - - `extra_positional` - A list of values that where given by positional argument but the - function cannot accept. - - This can be useful for decorators that forward user submitted data to - a view function:: - - from werkzeug.utils import ArgumentValidationError, validate_arguments - - def sanitize(f): - def proxy(request): - data = request.values.to_dict() - try: - args, kwargs = validate_arguments(f, (request,), data) - except ArgumentValidationError: - raise BadRequest('The browser failed to transmit all ' - 'the data expected.') - return f(*args, **kwargs) - return proxy - - :param func: the function the validation is performed against. - :param args: a tuple of positional arguments. - :param kwargs: a dict of keyword arguments. - :param drop_extra: set to `False` if you don't want extra arguments - to be silently dropped. - :return: tuple in the form ``(args, kwargs)``. - """ - parser = _parse_signature(func) - args, kwargs, missing, extra, extra_positional = parser(args, kwargs)[:5] - if missing: - raise ArgumentValidationError(tuple(missing)) - elif (extra or extra_positional) and not drop_extra: - raise ArgumentValidationError(None, extra, extra_positional) - return tuple(args), kwargs - - -def bind_arguments(func, args, kwargs): - """Bind the arguments provided into a dict. When passed a function, - a tuple of arguments and a dict of keyword arguments `bind_arguments` - returns a dict of names as the function would see it. This can be useful - to implement a cache decorator that uses the function arguments to build - the cache key based on the values of the arguments. - - :param func: the function the arguments should be bound for. - :param args: tuple of positional arguments. - :param kwargs: a dict of keyword arguments. - :return: a :class:`dict` of bound keyword arguments. - """ - ( - args, - kwargs, - missing, - extra, - extra_positional, - arg_spec, - vararg_var, - kwarg_var, - ) = _parse_signature(func)(args, kwargs) - values = {} - for (name, _has_default, _default), value in zip(arg_spec, args): - values[name] = value - if vararg_var is not None: - values[vararg_var] = tuple(extra_positional) - elif extra_positional: - raise TypeError("too many positional arguments") - if kwarg_var is not None: - multikw = set(extra) & set([x[0] for x in arg_spec]) - if multikw: - raise TypeError( - "got multiple values for keyword argument " + repr(next(iter(multikw))) - ) - values[kwarg_var] = extra - elif extra: - raise TypeError("got unexpected keyword argument " + repr(next(iter(extra)))) - return values - - -class ArgumentValidationError(ValueError): - - """Raised if :func:`validate_arguments` fails to validate""" - - def __init__(self, missing=None, extra=None, extra_positional=None): - self.missing = set(missing or ()) - self.extra = extra or {} - self.extra_positional = extra_positional or [] - ValueError.__init__( - self, - "function arguments invalid. (%d missing, %d additional)" - % (len(self.missing), len(self.extra) + len(self.extra_positional)), - ) - - -class ImportStringError(ImportError): - """Provides information about a failed :func:`import_string` attempt.""" - - #: String in dotted notation that failed to be imported. - import_name = None - #: Wrapped exception. - exception = None - - def __init__(self, import_name, exception): - self.import_name = import_name - self.exception = exception - - msg = ( - "import_string() failed for %r. Possible reasons are:\n\n" - "- missing __init__.py in a package;\n" - "- package or module path not included in sys.path;\n" - "- duplicated package or module name taking precedence in " - "sys.path;\n" - "- missing module, class, function or variable;\n\n" - "Debugged import:\n\n%s\n\n" - "Original exception:\n\n%s: %s" - ) - - name = "" - tracked = [] - for part in import_name.replace(":", ".").split("."): - name += (name and ".") + part - imported = import_string(name, silent=True) - if imported: - tracked.append((name, getattr(imported, "__file__", None))) - else: - track = ["- %r found in %r." % (n, i) for n, i in tracked] - track.append("- %r not found." % name) - msg = msg % ( - import_name, - "\n".join(track), - exception.__class__.__name__, - str(exception), - ) - break - - ImportError.__init__(self, msg) - - def __repr__(self): - return "<%s(%r, %r)>" % ( - self.__class__.__name__, - self.import_name, - self.exception, - ) - - -# DEPRECATED -from .datastructures import CombinedMultiDict as _CombinedMultiDict -from .datastructures import EnvironHeaders as _EnvironHeaders -from .datastructures import Headers as _Headers -from .datastructures import MultiDict as _MultiDict -from .http import dump_cookie as _dump_cookie -from .http import parse_cookie as _parse_cookie - - -class MultiDict(_MultiDict): - def __init__(self, *args, **kwargs): - warnings.warn( - "'werkzeug.utils.MultiDict' has moved to 'werkzeug" - ".datastructures.MultiDict' as of version 0.5. This old" - " import will be removed in version 1.0.", - DeprecationWarning, - stacklevel=2, - ) - super(MultiDict, self).__init__(*args, **kwargs) - - -class CombinedMultiDict(_CombinedMultiDict): - def __init__(self, *args, **kwargs): - warnings.warn( - "'werkzeug.utils.CombinedMultiDict' has moved to 'werkzeug" - ".datastructures.CombinedMultiDict' as of version 0.5. This" - " old import will be removed in version 1.0.", - DeprecationWarning, - stacklevel=2, - ) - super(CombinedMultiDict, self).__init__(*args, **kwargs) - - -class Headers(_Headers): - def __init__(self, *args, **kwargs): - warnings.warn( - "'werkzeug.utils.Headers' has moved to 'werkzeug" - ".datastructures.Headers' as of version 0.5. This old" - " import will be removed in version 1.0.", - DeprecationWarning, - stacklevel=2, - ) - super(Headers, self).__init__(*args, **kwargs) - - -class EnvironHeaders(_EnvironHeaders): - def __init__(self, *args, **kwargs): - warnings.warn( - "'werkzeug.utils.EnvironHeaders' has moved to 'werkzeug" - ".datastructures.EnvironHeaders' as of version 0.5. This" - " old import will be removed in version 1.0.", - DeprecationWarning, - stacklevel=2, - ) - super(EnvironHeaders, self).__init__(*args, **kwargs) - - -def parse_cookie(*args, **kwargs): - warnings.warn( - "'werkzeug.utils.parse_cookie' as moved to 'werkzeug.http" - ".parse_cookie' as of version 0.5. This old import will be" - " removed in version 1.0.", - DeprecationWarning, - stacklevel=2, - ) - return _parse_cookie(*args, **kwargs) - - -def dump_cookie(*args, **kwargs): - warnings.warn( - "'werkzeug.utils.dump_cookie' as moved to 'werkzeug.http" - ".dump_cookie' as of version 0.5. This old import will be" - " removed in version 1.0.", - DeprecationWarning, - stacklevel=2, - ) - return _dump_cookie(*args, **kwargs) diff --git a/python/werkzeug/wrappers/__init__.py b/python/werkzeug/wrappers/__init__.py deleted file mode 100644 index 56c764a..0000000 --- a/python/werkzeug/wrappers/__init__.py +++ /dev/null @@ -1,36 +0,0 @@ -""" -werkzeug.wrappers -~~~~~~~~~~~~~~~~~ - -The wrappers are simple request and response objects which you can -subclass to do whatever you want them to do. The request object contains -the information transmitted by the client (webbrowser) and the response -object contains all the information sent back to the browser. - -An important detail is that the request object is created with the WSGI -environ and will act as high-level proxy whereas the response object is an -actual WSGI application. - -Like everything else in Werkzeug these objects will work correctly with -unicode data. Incoming form data parsed by the response object will be -decoded into an unicode object if possible and if it makes sense. - -:copyright: 2007 Pallets -:license: BSD-3-Clause -""" -from .accept import AcceptMixin -from .auth import AuthorizationMixin -from .auth import WWWAuthenticateMixin -from .base_request import BaseRequest -from .base_response import BaseResponse -from .common_descriptors import CommonRequestDescriptorsMixin -from .common_descriptors import CommonResponseDescriptorsMixin -from .etag import ETagRequestMixin -from .etag import ETagResponseMixin -from .request import PlainRequest -from .request import Request -from .request import StreamOnlyMixin -from .response import Response -from .response import ResponseStream -from .response import ResponseStreamMixin -from .user_agent import UserAgentMixin diff --git a/python/werkzeug/wrappers/accept.py b/python/werkzeug/wrappers/accept.py deleted file mode 100644 index d0620a0..0000000 --- a/python/werkzeug/wrappers/accept.py +++ /dev/null @@ -1,50 +0,0 @@ -from ..datastructures import CharsetAccept -from ..datastructures import LanguageAccept -from ..datastructures import MIMEAccept -from ..http import parse_accept_header -from ..utils import cached_property - - -class AcceptMixin(object): - """A mixin for classes with an :attr:`~BaseResponse.environ` attribute - to get all the HTTP accept headers as - :class:`~werkzeug.datastructures.Accept` objects (or subclasses - thereof). - """ - - @cached_property - def accept_mimetypes(self): - """List of mimetypes this client supports as - :class:`~werkzeug.datastructures.MIMEAccept` object. - """ - return parse_accept_header(self.environ.get("HTTP_ACCEPT"), MIMEAccept) - - @cached_property - def accept_charsets(self): - """List of charsets this client supports as - :class:`~werkzeug.datastructures.CharsetAccept` object. - """ - return parse_accept_header( - self.environ.get("HTTP_ACCEPT_CHARSET"), CharsetAccept - ) - - @cached_property - def accept_encodings(self): - """List of encodings this client accepts. Encodings in a HTTP term - are compression encodings such as gzip. For charsets have a look at - :attr:`accept_charset`. - """ - return parse_accept_header(self.environ.get("HTTP_ACCEPT_ENCODING")) - - @cached_property - def accept_languages(self): - """List of languages this client accepts as - :class:`~werkzeug.datastructures.LanguageAccept` object. - - .. versionchanged 0.5 - In previous versions this was a regular - :class:`~werkzeug.datastructures.Accept` object. - """ - return parse_accept_header( - self.environ.get("HTTP_ACCEPT_LANGUAGE"), LanguageAccept - ) diff --git a/python/werkzeug/wrappers/auth.py b/python/werkzeug/wrappers/auth.py deleted file mode 100644 index 714f755..0000000 --- a/python/werkzeug/wrappers/auth.py +++ /dev/null @@ -1,33 +0,0 @@ -from ..http import parse_authorization_header -from ..http import parse_www_authenticate_header -from ..utils import cached_property - - -class AuthorizationMixin(object): - """Adds an :attr:`authorization` property that represents the parsed - value of the `Authorization` header as - :class:`~werkzeug.datastructures.Authorization` object. - """ - - @cached_property - def authorization(self): - """The `Authorization` object in parsed form.""" - header = self.environ.get("HTTP_AUTHORIZATION") - return parse_authorization_header(header) - - -class WWWAuthenticateMixin(object): - """Adds a :attr:`www_authenticate` property to a response object.""" - - @property - def www_authenticate(self): - """The `WWW-Authenticate` header in a parsed form.""" - - def on_update(www_auth): - if not www_auth and "www-authenticate" in self.headers: - del self.headers["www-authenticate"] - elif www_auth: - self.headers["WWW-Authenticate"] = www_auth.to_header() - - header = self.headers.get("www-authenticate") - return parse_www_authenticate_header(header, on_update) diff --git a/python/werkzeug/wrappers/base_request.py b/python/werkzeug/wrappers/base_request.py deleted file mode 100644 index 41e8aad..0000000 --- a/python/werkzeug/wrappers/base_request.py +++ /dev/null @@ -1,693 +0,0 @@ -import warnings -from functools import update_wrapper -from io import BytesIO - -from .._compat import to_native -from .._compat import to_unicode -from .._compat import wsgi_decoding_dance -from .._compat import wsgi_get_bytes -from ..datastructures import CombinedMultiDict -from ..datastructures import EnvironHeaders -from ..datastructures import ImmutableList -from ..datastructures import ImmutableMultiDict -from ..datastructures import ImmutableTypeConversionDict -from ..datastructures import iter_multi_items -from ..datastructures import MultiDict -from ..formparser import default_stream_factory -from ..formparser import FormDataParser -from ..http import parse_cookie -from ..http import parse_options_header -from ..urls import url_decode -from ..utils import cached_property -from ..utils import environ_property -from ..wsgi import get_content_length -from ..wsgi import get_current_url -from ..wsgi import get_host -from ..wsgi import get_input_stream - - -class BaseRequest(object): - """Very basic request object. This does not implement advanced stuff like - entity tag parsing or cache controls. The request object is created with - the WSGI environment as first argument and will add itself to the WSGI - environment as ``'werkzeug.request'`` unless it's created with - `populate_request` set to False. - - There are a couple of mixins available that add additional functionality - to the request object, there is also a class called `Request` which - subclasses `BaseRequest` and all the important mixins. - - It's a good idea to create a custom subclass of the :class:`BaseRequest` - and add missing functionality either via mixins or direct implementation. - Here an example for such subclasses:: - - from werkzeug.wrappers import BaseRequest, ETagRequestMixin - - class Request(BaseRequest, ETagRequestMixin): - pass - - Request objects are **read only**. As of 0.5 modifications are not - allowed in any place. Unlike the lower level parsing functions the - request object will use immutable objects everywhere possible. - - Per default the request object will assume all the text data is `utf-8` - encoded. Please refer to :doc:`the unicode chapter </unicode>` for more - details about customizing the behavior. - - Per default the request object will be added to the WSGI - environment as `werkzeug.request` to support the debugging system. - If you don't want that, set `populate_request` to `False`. - - If `shallow` is `True` the environment is initialized as shallow - object around the environ. Every operation that would modify the - environ in any way (such as consuming form data) raises an exception - unless the `shallow` attribute is explicitly set to `False`. This - is useful for middlewares where you don't want to consume the form - data by accident. A shallow request is not populated to the WSGI - environment. - - .. versionchanged:: 0.5 - read-only mode was enforced by using immutables classes for all - data. - """ - - #: the charset for the request, defaults to utf-8 - charset = "utf-8" - - #: the error handling procedure for errors, defaults to 'replace' - encoding_errors = "replace" - - #: the maximum content length. This is forwarded to the form data - #: parsing function (:func:`parse_form_data`). When set and the - #: :attr:`form` or :attr:`files` attribute is accessed and the - #: parsing fails because more than the specified value is transmitted - #: a :exc:`~werkzeug.exceptions.RequestEntityTooLarge` exception is raised. - #: - #: Have a look at :ref:`dealing-with-request-data` for more details. - #: - #: .. versionadded:: 0.5 - max_content_length = None - - #: the maximum form field size. This is forwarded to the form data - #: parsing function (:func:`parse_form_data`). When set and the - #: :attr:`form` or :attr:`files` attribute is accessed and the - #: data in memory for post data is longer than the specified value a - #: :exc:`~werkzeug.exceptions.RequestEntityTooLarge` exception is raised. - #: - #: Have a look at :ref:`dealing-with-request-data` for more details. - #: - #: .. versionadded:: 0.5 - max_form_memory_size = None - - #: the class to use for `args` and `form`. The default is an - #: :class:`~werkzeug.datastructures.ImmutableMultiDict` which supports - #: multiple values per key. alternatively it makes sense to use an - #: :class:`~werkzeug.datastructures.ImmutableOrderedMultiDict` which - #: preserves order or a :class:`~werkzeug.datastructures.ImmutableDict` - #: which is the fastest but only remembers the last key. It is also - #: possible to use mutable structures, but this is not recommended. - #: - #: .. versionadded:: 0.6 - parameter_storage_class = ImmutableMultiDict - - #: the type to be used for list values from the incoming WSGI environment. - #: By default an :class:`~werkzeug.datastructures.ImmutableList` is used - #: (for example for :attr:`access_list`). - #: - #: .. versionadded:: 0.6 - list_storage_class = ImmutableList - - #: the type to be used for dict values from the incoming WSGI environment. - #: By default an - #: :class:`~werkzeug.datastructures.ImmutableTypeConversionDict` is used - #: (for example for :attr:`cookies`). - #: - #: .. versionadded:: 0.6 - dict_storage_class = ImmutableTypeConversionDict - - #: The form data parser that shoud be used. Can be replaced to customize - #: the form date parsing. - form_data_parser_class = FormDataParser - - #: Optionally a list of hosts that is trusted by this request. By default - #: all hosts are trusted which means that whatever the client sends the - #: host is will be accepted. - #: - #: Because `Host` and `X-Forwarded-Host` headers can be set to any value by - #: a malicious client, it is recommended to either set this property or - #: implement similar validation in the proxy (if application is being run - #: behind one). - #: - #: .. versionadded:: 0.9 - trusted_hosts = None - - #: Indicates whether the data descriptor should be allowed to read and - #: buffer up the input stream. By default it's enabled. - #: - #: .. versionadded:: 0.9 - disable_data_descriptor = False - - def __init__(self, environ, populate_request=True, shallow=False): - self.environ = environ - if populate_request and not shallow: - self.environ["werkzeug.request"] = self - self.shallow = shallow - - def __repr__(self): - # make sure the __repr__ even works if the request was created - # from an invalid WSGI environment. If we display the request - # in a debug session we don't want the repr to blow up. - args = [] - try: - args.append("'%s'" % to_native(self.url, self.url_charset)) - args.append("[%s]" % self.method) - except Exception: - args.append("(invalid WSGI environ)") - - return "<%s %s>" % (self.__class__.__name__, " ".join(args)) - - @property - def url_charset(self): - """The charset that is assumed for URLs. Defaults to the value - of :attr:`charset`. - - .. versionadded:: 0.6 - """ - return self.charset - - @classmethod - def from_values(cls, *args, **kwargs): - """Create a new request object based on the values provided. If - environ is given missing values are filled from there. This method is - useful for small scripts when you need to simulate a request from an URL. - Do not use this method for unittesting, there is a full featured client - object (:class:`Client`) that allows to create multipart requests, - support for cookies etc. - - This accepts the same options as the - :class:`~werkzeug.test.EnvironBuilder`. - - .. versionchanged:: 0.5 - This method now accepts the same arguments as - :class:`~werkzeug.test.EnvironBuilder`. Because of this the - `environ` parameter is now called `environ_overrides`. - - :return: request object - """ - from ..test import EnvironBuilder - - charset = kwargs.pop("charset", cls.charset) - kwargs["charset"] = charset - builder = EnvironBuilder(*args, **kwargs) - try: - return builder.get_request(cls) - finally: - builder.close() - - @classmethod - def application(cls, f): - """Decorate a function as responder that accepts the request as first - argument. This works like the :func:`responder` decorator but the - function is passed the request object as first argument and the - request object will be closed automatically:: - - @Request.application - def my_wsgi_app(request): - return Response('Hello World!') - - As of Werkzeug 0.14 HTTP exceptions are automatically caught and - converted to responses instead of failing. - - :param f: the WSGI callable to decorate - :return: a new WSGI callable - """ - #: return a callable that wraps the -2nd argument with the request - #: and calls the function with all the arguments up to that one and - #: the request. The return value is then called with the latest - #: two arguments. This makes it possible to use this decorator for - #: both methods and standalone WSGI functions. - from ..exceptions import HTTPException - - def application(*args): - request = cls(args[-2]) - with request: - try: - resp = f(*args[:-2] + (request,)) - except HTTPException as e: - resp = e.get_response(args[-2]) - return resp(*args[-2:]) - - return update_wrapper(application, f) - - def _get_file_stream( - self, total_content_length, content_type, filename=None, content_length=None - ): - """Called to get a stream for the file upload. - - This must provide a file-like class with `read()`, `readline()` - and `seek()` methods that is both writeable and readable. - - The default implementation returns a temporary file if the total - content length is higher than 500KB. Because many browsers do not - provide a content length for the files only the total content - length matters. - - :param total_content_length: the total content length of all the - data in the request combined. This value - is guaranteed to be there. - :param content_type: the mimetype of the uploaded file. - :param filename: the filename of the uploaded file. May be `None`. - :param content_length: the length of this file. This value is usually - not provided because webbrowsers do not provide - this value. - """ - return default_stream_factory( - total_content_length=total_content_length, - filename=filename, - content_type=content_type, - content_length=content_length, - ) - - @property - def want_form_data_parsed(self): - """Returns True if the request method carries content. As of - Werkzeug 0.9 this will be the case if a content type is transmitted. - - .. versionadded:: 0.8 - """ - return bool(self.environ.get("CONTENT_TYPE")) - - def make_form_data_parser(self): - """Creates the form data parser. Instantiates the - :attr:`form_data_parser_class` with some parameters. - - .. versionadded:: 0.8 - """ - return self.form_data_parser_class( - self._get_file_stream, - self.charset, - self.encoding_errors, - self.max_form_memory_size, - self.max_content_length, - self.parameter_storage_class, - ) - - def _load_form_data(self): - """Method used internally to retrieve submitted data. After calling - this sets `form` and `files` on the request object to multi dicts - filled with the incoming form data. As a matter of fact the input - stream will be empty afterwards. You can also call this method to - force the parsing of the form data. - - .. versionadded:: 0.8 - """ - # abort early if we have already consumed the stream - if "form" in self.__dict__: - return - - _assert_not_shallow(self) - - if self.want_form_data_parsed: - content_type = self.environ.get("CONTENT_TYPE", "") - content_length = get_content_length(self.environ) - mimetype, options = parse_options_header(content_type) - parser = self.make_form_data_parser() - data = parser.parse( - self._get_stream_for_parsing(), mimetype, content_length, options - ) - else: - data = ( - self.stream, - self.parameter_storage_class(), - self.parameter_storage_class(), - ) - - # inject the values into the instance dict so that we bypass - # our cached_property non-data descriptor. - d = self.__dict__ - d["stream"], d["form"], d["files"] = data - - def _get_stream_for_parsing(self): - """This is the same as accessing :attr:`stream` with the difference - that if it finds cached data from calling :meth:`get_data` first it - will create a new stream out of the cached data. - - .. versionadded:: 0.9.3 - """ - cached_data = getattr(self, "_cached_data", None) - if cached_data is not None: - return BytesIO(cached_data) - return self.stream - - def close(self): - """Closes associated resources of this request object. This - closes all file handles explicitly. You can also use the request - object in a with statement which will automatically close it. - - .. versionadded:: 0.9 - """ - files = self.__dict__.get("files") - for _key, value in iter_multi_items(files or ()): - value.close() - - def __enter__(self): - return self - - def __exit__(self, exc_type, exc_value, tb): - self.close() - - @cached_property - def stream(self): - """ - If the incoming form data was not encoded with a known mimetype - the data is stored unmodified in this stream for consumption. Most - of the time it is a better idea to use :attr:`data` which will give - you that data as a string. The stream only returns the data once. - - Unlike :attr:`input_stream` this stream is properly guarded that you - can't accidentally read past the length of the input. Werkzeug will - internally always refer to this stream to read data which makes it - possible to wrap this object with a stream that does filtering. - - .. versionchanged:: 0.9 - This stream is now always available but might be consumed by the - form parser later on. Previously the stream was only set if no - parsing happened. - """ - _assert_not_shallow(self) - return get_input_stream(self.environ) - - input_stream = environ_property( - "wsgi.input", - """The WSGI input stream. - - In general it's a bad idea to use this one because you can - easily read past the boundary. Use the :attr:`stream` - instead.""", - ) - - @cached_property - def args(self): - """The parsed URL parameters (the part in the URL after the question - mark). - - By default an - :class:`~werkzeug.datastructures.ImmutableMultiDict` - is returned from this function. This can be changed by setting - :attr:`parameter_storage_class` to a different type. This might - be necessary if the order of the form data is important. - """ - return url_decode( - wsgi_get_bytes(self.environ.get("QUERY_STRING", "")), - self.url_charset, - errors=self.encoding_errors, - cls=self.parameter_storage_class, - ) - - @cached_property - def data(self): - """ - Contains the incoming request data as string in case it came with - a mimetype Werkzeug does not handle. - """ - - if self.disable_data_descriptor: - raise AttributeError("data descriptor is disabled") - # XXX: this should eventually be deprecated. - - # We trigger form data parsing first which means that the descriptor - # will not cache the data that would otherwise be .form or .files - # data. This restores the behavior that was there in Werkzeug - # before 0.9. New code should use :meth:`get_data` explicitly as - # this will make behavior explicit. - return self.get_data(parse_form_data=True) - - def get_data(self, cache=True, as_text=False, parse_form_data=False): - """This reads the buffered incoming data from the client into one - bytestring. By default this is cached but that behavior can be - changed by setting `cache` to `False`. - - Usually it's a bad idea to call this method without checking the - content length first as a client could send dozens of megabytes or more - to cause memory problems on the server. - - Note that if the form data was already parsed this method will not - return anything as form data parsing does not cache the data like - this method does. To implicitly invoke form data parsing function - set `parse_form_data` to `True`. When this is done the return value - of this method will be an empty string if the form parser handles - the data. This generally is not necessary as if the whole data is - cached (which is the default) the form parser will used the cached - data to parse the form data. Please be generally aware of checking - the content length first in any case before calling this method - to avoid exhausting server memory. - - If `as_text` is set to `True` the return value will be a decoded - unicode string. - - .. versionadded:: 0.9 - """ - rv = getattr(self, "_cached_data", None) - if rv is None: - if parse_form_data: - self._load_form_data() - rv = self.stream.read() - if cache: - self._cached_data = rv - if as_text: - rv = rv.decode(self.charset, self.encoding_errors) - return rv - - @cached_property - def form(self): - """The form parameters. By default an - :class:`~werkzeug.datastructures.ImmutableMultiDict` - is returned from this function. This can be changed by setting - :attr:`parameter_storage_class` to a different type. This might - be necessary if the order of the form data is important. - - Please keep in mind that file uploads will not end up here, but instead - in the :attr:`files` attribute. - - .. versionchanged:: 0.9 - - Previous to Werkzeug 0.9 this would only contain form data for POST - and PUT requests. - """ - self._load_form_data() - return self.form - - @cached_property - def values(self): - """A :class:`werkzeug.datastructures.CombinedMultiDict` that combines - :attr:`args` and :attr:`form`.""" - args = [] - for d in self.args, self.form: - if not isinstance(d, MultiDict): - d = MultiDict(d) - args.append(d) - return CombinedMultiDict(args) - - @cached_property - def files(self): - """:class:`~werkzeug.datastructures.MultiDict` object containing - all uploaded files. Each key in :attr:`files` is the name from the - ``<input type="file" name="">``. Each value in :attr:`files` is a - Werkzeug :class:`~werkzeug.datastructures.FileStorage` object. - - It basically behaves like a standard file object you know from Python, - with the difference that it also has a - :meth:`~werkzeug.datastructures.FileStorage.save` function that can - store the file on the filesystem. - - Note that :attr:`files` will only contain data if the request method was - POST, PUT or PATCH and the ``<form>`` that posted to the request had - ``enctype="multipart/form-data"``. It will be empty otherwise. - - See the :class:`~werkzeug.datastructures.MultiDict` / - :class:`~werkzeug.datastructures.FileStorage` documentation for - more details about the used data structure. - """ - self._load_form_data() - return self.files - - @cached_property - def cookies(self): - """A :class:`dict` with the contents of all cookies transmitted with - the request.""" - return parse_cookie( - self.environ, - self.charset, - self.encoding_errors, - cls=self.dict_storage_class, - ) - - @cached_property - def headers(self): - """The headers from the WSGI environ as immutable - :class:`~werkzeug.datastructures.EnvironHeaders`. - """ - return EnvironHeaders(self.environ) - - @cached_property - def path(self): - """Requested path as unicode. This works a bit like the regular path - info in the WSGI environment but will always include a leading slash, - even if the URL root is accessed. - """ - raw_path = wsgi_decoding_dance( - self.environ.get("PATH_INFO") or "", self.charset, self.encoding_errors - ) - return "/" + raw_path.lstrip("/") - - @cached_property - def full_path(self): - """Requested path as unicode, including the query string.""" - return self.path + u"?" + to_unicode(self.query_string, self.url_charset) - - @cached_property - def script_root(self): - """The root path of the script without the trailing slash.""" - raw_path = wsgi_decoding_dance( - self.environ.get("SCRIPT_NAME") or "", self.charset, self.encoding_errors - ) - return raw_path.rstrip("/") - - @cached_property - def url(self): - """The reconstructed current URL as IRI. - See also: :attr:`trusted_hosts`. - """ - return get_current_url(self.environ, trusted_hosts=self.trusted_hosts) - - @cached_property - def base_url(self): - """Like :attr:`url` but without the querystring - See also: :attr:`trusted_hosts`. - """ - return get_current_url( - self.environ, strip_querystring=True, trusted_hosts=self.trusted_hosts - ) - - @cached_property - def url_root(self): - """The full URL root (with hostname), this is the application - root as IRI. - See also: :attr:`trusted_hosts`. - """ - return get_current_url(self.environ, True, trusted_hosts=self.trusted_hosts) - - @cached_property - def host_url(self): - """Just the host with scheme as IRI. - See also: :attr:`trusted_hosts`. - """ - return get_current_url( - self.environ, host_only=True, trusted_hosts=self.trusted_hosts - ) - - @cached_property - def host(self): - """Just the host including the port if available. - See also: :attr:`trusted_hosts`. - """ - return get_host(self.environ, trusted_hosts=self.trusted_hosts) - - query_string = environ_property( - "QUERY_STRING", - "", - read_only=True, - load_func=wsgi_get_bytes, - doc="The URL parameters as raw bytestring.", - ) - method = environ_property( - "REQUEST_METHOD", - "GET", - read_only=True, - load_func=lambda x: x.upper(), - doc="The request method. (For example ``'GET'`` or ``'POST'``).", - ) - - @cached_property - def access_route(self): - """If a forwarded header exists this is a list of all ip addresses - from the client ip to the last proxy server. - """ - if "HTTP_X_FORWARDED_FOR" in self.environ: - addr = self.environ["HTTP_X_FORWARDED_FOR"].split(",") - return self.list_storage_class([x.strip() for x in addr]) - elif "REMOTE_ADDR" in self.environ: - return self.list_storage_class([self.environ["REMOTE_ADDR"]]) - return self.list_storage_class() - - @property - def remote_addr(self): - """The remote address of the client.""" - return self.environ.get("REMOTE_ADDR") - - remote_user = environ_property( - "REMOTE_USER", - doc="""If the server supports user authentication, and the - script is protected, this attribute contains the username the - user has authenticated as.""", - ) - - scheme = environ_property( - "wsgi.url_scheme", - doc=""" - URL scheme (http or https). - - .. versionadded:: 0.7""", - ) - - @property - def is_xhr(self): - """True if the request was triggered via a JavaScript XMLHttpRequest. - This only works with libraries that support the ``X-Requested-With`` - header and set it to "XMLHttpRequest". Libraries that do that are - prototype, jQuery and Mochikit and probably some more. - - .. deprecated:: 0.13 - ``X-Requested-With`` is not standard and is unreliable. You - may be able to use :attr:`AcceptMixin.accept_mimetypes` - instead. - """ - warnings.warn( - "'Request.is_xhr' is deprecated as of version 0.13 and will" - " be removed in version 1.0. The 'X-Requested-With' header" - " is not standard and is unreliable. You may be able to use" - " 'accept_mimetypes' instead.", - DeprecationWarning, - stacklevel=2, - ) - return self.environ.get("HTTP_X_REQUESTED_WITH", "").lower() == "xmlhttprequest" - - is_secure = property( - lambda self: self.environ["wsgi.url_scheme"] == "https", - doc="`True` if the request is secure.", - ) - is_multithread = environ_property( - "wsgi.multithread", - doc="""boolean that is `True` if the application is served by a - multithreaded WSGI server.""", - ) - is_multiprocess = environ_property( - "wsgi.multiprocess", - doc="""boolean that is `True` if the application is served by a - WSGI server that spawns multiple processes.""", - ) - is_run_once = environ_property( - "wsgi.run_once", - doc="""boolean that is `True` if the application will be - executed only once in a process lifetime. This is the case for - CGI for example, but it's not guaranteed that the execution only - happens one time.""", - ) - - -def _assert_not_shallow(request): - if request.shallow: - raise RuntimeError( - "A shallow request tried to consume form data. If you really" - " want to do that, set `shallow` to False." - ) diff --git a/python/werkzeug/wrappers/base_response.py b/python/werkzeug/wrappers/base_response.py deleted file mode 100644 index d944a7d..0000000 --- a/python/werkzeug/wrappers/base_response.py +++ /dev/null @@ -1,702 +0,0 @@ -import warnings - -from .._compat import integer_types -from .._compat import string_types -from .._compat import text_type -from .._compat import to_bytes -from .._compat import to_native -from ..datastructures import Headers -from ..http import dump_cookie -from ..http import HTTP_STATUS_CODES -from ..http import remove_entity_headers -from ..urls import iri_to_uri -from ..urls import url_join -from ..utils import get_content_type -from ..wsgi import ClosingIterator -from ..wsgi import get_current_url - - -def _run_wsgi_app(*args): - """This function replaces itself to ensure that the test module is not - imported unless required. DO NOT USE! - """ - global _run_wsgi_app - from ..test import run_wsgi_app as _run_wsgi_app - - return _run_wsgi_app(*args) - - -def _warn_if_string(iterable): - """Helper for the response objects to check if the iterable returned - to the WSGI server is not a string. - """ - if isinstance(iterable, string_types): - warnings.warn( - "Response iterable was set to a string. This will appear to" - " work but means that the server will send the data to the" - " client one character at a time. This is almost never" - " intended behavior, use 'response.data' to assign strings" - " to the response object.", - stacklevel=2, - ) - - -def _iter_encoded(iterable, charset): - for item in iterable: - if isinstance(item, text_type): - yield item.encode(charset) - else: - yield item - - -def _clean_accept_ranges(accept_ranges): - if accept_ranges is True: - return "bytes" - elif accept_ranges is False: - return "none" - elif isinstance(accept_ranges, text_type): - return to_native(accept_ranges) - raise ValueError("Invalid accept_ranges value") - - -class BaseResponse(object): - """Base response class. The most important fact about a response object - is that it's a regular WSGI application. It's initialized with a couple - of response parameters (headers, body, status code etc.) and will start a - valid WSGI response when called with the environ and start response - callable. - - Because it's a WSGI application itself processing usually ends before the - actual response is sent to the server. This helps debugging systems - because they can catch all the exceptions before responses are started. - - Here a small example WSGI application that takes advantage of the - response objects:: - - from werkzeug.wrappers import BaseResponse as Response - - def index(): - return Response('Index page') - - def application(environ, start_response): - path = environ.get('PATH_INFO') or '/' - if path == '/': - response = index() - else: - response = Response('Not Found', status=404) - return response(environ, start_response) - - Like :class:`BaseRequest` which object is lacking a lot of functionality - implemented in mixins. This gives you a better control about the actual - API of your response objects, so you can create subclasses and add custom - functionality. A full featured response object is available as - :class:`Response` which implements a couple of useful mixins. - - To enforce a new type of already existing responses you can use the - :meth:`force_type` method. This is useful if you're working with different - subclasses of response objects and you want to post process them with a - known interface. - - Per default the response object will assume all the text data is `utf-8` - encoded. Please refer to :doc:`the unicode chapter </unicode>` for more - details about customizing the behavior. - - Response can be any kind of iterable or string. If it's a string it's - considered being an iterable with one item which is the string passed. - Headers can be a list of tuples or a - :class:`~werkzeug.datastructures.Headers` object. - - Special note for `mimetype` and `content_type`: For most mime types - `mimetype` and `content_type` work the same, the difference affects - only 'text' mimetypes. If the mimetype passed with `mimetype` is a - mimetype starting with `text/`, the charset parameter of the response - object is appended to it. In contrast the `content_type` parameter is - always added as header unmodified. - - .. versionchanged:: 0.5 - the `direct_passthrough` parameter was added. - - :param response: a string or response iterable. - :param status: a string with a status or an integer with the status code. - :param headers: a list of headers or a - :class:`~werkzeug.datastructures.Headers` object. - :param mimetype: the mimetype for the response. See notice above. - :param content_type: the content type for the response. See notice above. - :param direct_passthrough: if set to `True` :meth:`iter_encoded` is not - called before iteration which makes it - possible to pass special iterators through - unchanged (see :func:`wrap_file` for more - details.) - """ - - #: the charset of the response. - charset = "utf-8" - - #: the default status if none is provided. - default_status = 200 - - #: the default mimetype if none is provided. - default_mimetype = "text/plain" - - #: if set to `False` accessing properties on the response object will - #: not try to consume the response iterator and convert it into a list. - #: - #: .. versionadded:: 0.6.2 - #: - #: That attribute was previously called `implicit_seqence_conversion`. - #: (Notice the typo). If you did use this feature, you have to adapt - #: your code to the name change. - implicit_sequence_conversion = True - - #: Should this response object correct the location header to be RFC - #: conformant? This is true by default. - #: - #: .. versionadded:: 0.8 - autocorrect_location_header = True - - #: Should this response object automatically set the content-length - #: header if possible? This is true by default. - #: - #: .. versionadded:: 0.8 - automatically_set_content_length = True - - #: Warn if a cookie header exceeds this size. The default, 4093, should be - #: safely `supported by most browsers <cookie_>`_. A cookie larger than - #: this size will still be sent, but it may be ignored or handled - #: incorrectly by some browsers. Set to 0 to disable this check. - #: - #: .. versionadded:: 0.13 - #: - #: .. _`cookie`: http://browsercookielimits.squawky.net/ - max_cookie_size = 4093 - - def __init__( - self, - response=None, - status=None, - headers=None, - mimetype=None, - content_type=None, - direct_passthrough=False, - ): - if isinstance(headers, Headers): - self.headers = headers - elif not headers: - self.headers = Headers() - else: - self.headers = Headers(headers) - - if content_type is None: - if mimetype is None and "content-type" not in self.headers: - mimetype = self.default_mimetype - if mimetype is not None: - mimetype = get_content_type(mimetype, self.charset) - content_type = mimetype - if content_type is not None: - self.headers["Content-Type"] = content_type - if status is None: - status = self.default_status - if isinstance(status, integer_types): - self.status_code = status - else: - self.status = status - - self.direct_passthrough = direct_passthrough - self._on_close = [] - - # we set the response after the headers so that if a class changes - # the charset attribute, the data is set in the correct charset. - if response is None: - self.response = [] - elif isinstance(response, (text_type, bytes, bytearray)): - self.set_data(response) - else: - self.response = response - - def call_on_close(self, func): - """Adds a function to the internal list of functions that should - be called as part of closing down the response. Since 0.7 this - function also returns the function that was passed so that this - can be used as a decorator. - - .. versionadded:: 0.6 - """ - self._on_close.append(func) - return func - - def __repr__(self): - if self.is_sequence: - body_info = "%d bytes" % sum(map(len, self.iter_encoded())) - else: - body_info = "streamed" if self.is_streamed else "likely-streamed" - return "<%s %s [%s]>" % (self.__class__.__name__, body_info, self.status) - - @classmethod - def force_type(cls, response, environ=None): - """Enforce that the WSGI response is a response object of the current - type. Werkzeug will use the :class:`BaseResponse` internally in many - situations like the exceptions. If you call :meth:`get_response` on an - exception you will get back a regular :class:`BaseResponse` object, even - if you are using a custom subclass. - - This method can enforce a given response type, and it will also - convert arbitrary WSGI callables into response objects if an environ - is provided:: - - # convert a Werkzeug response object into an instance of the - # MyResponseClass subclass. - response = MyResponseClass.force_type(response) - - # convert any WSGI application into a response object - response = MyResponseClass.force_type(response, environ) - - This is especially useful if you want to post-process responses in - the main dispatcher and use functionality provided by your subclass. - - Keep in mind that this will modify response objects in place if - possible! - - :param response: a response object or wsgi application. - :param environ: a WSGI environment object. - :return: a response object. - """ - if not isinstance(response, BaseResponse): - if environ is None: - raise TypeError( - "cannot convert WSGI application into response" - " objects without an environ" - ) - response = BaseResponse(*_run_wsgi_app(response, environ)) - response.__class__ = cls - return response - - @classmethod - def from_app(cls, app, environ, buffered=False): - """Create a new response object from an application output. This - works best if you pass it an application that returns a generator all - the time. Sometimes applications may use the `write()` callable - returned by the `start_response` function. This tries to resolve such - edge cases automatically. But if you don't get the expected output - you should set `buffered` to `True` which enforces buffering. - - :param app: the WSGI application to execute. - :param environ: the WSGI environment to execute against. - :param buffered: set to `True` to enforce buffering. - :return: a response object. - """ - return cls(*_run_wsgi_app(app, environ, buffered)) - - def _get_status_code(self): - return self._status_code - - def _set_status_code(self, code): - self._status_code = code - try: - self._status = "%d %s" % (code, HTTP_STATUS_CODES[code].upper()) - except KeyError: - self._status = "%d UNKNOWN" % code - - status_code = property( - _get_status_code, _set_status_code, doc="The HTTP Status code as number" - ) - del _get_status_code, _set_status_code - - def _get_status(self): - return self._status - - def _set_status(self, value): - try: - self._status = to_native(value) - except AttributeError: - raise TypeError("Invalid status argument") - - try: - self._status_code = int(self._status.split(None, 1)[0]) - except ValueError: - self._status_code = 0 - self._status = "0 %s" % self._status - except IndexError: - raise ValueError("Empty status argument") - - status = property(_get_status, _set_status, doc="The HTTP Status code") - del _get_status, _set_status - - def get_data(self, as_text=False): - """The string representation of the request body. Whenever you call - this property the request iterable is encoded and flattened. This - can lead to unwanted behavior if you stream big data. - - This behavior can be disabled by setting - :attr:`implicit_sequence_conversion` to `False`. - - If `as_text` is set to `True` the return value will be a decoded - unicode string. - - .. versionadded:: 0.9 - """ - self._ensure_sequence() - rv = b"".join(self.iter_encoded()) - if as_text: - rv = rv.decode(self.charset) - return rv - - def set_data(self, value): - """Sets a new string as response. The value set must either by a - unicode or bytestring. If a unicode string is set it's encoded - automatically to the charset of the response (utf-8 by default). - - .. versionadded:: 0.9 - """ - # if an unicode string is set, it's encoded directly so that we - # can set the content length - if isinstance(value, text_type): - value = value.encode(self.charset) - else: - value = bytes(value) - self.response = [value] - if self.automatically_set_content_length: - self.headers["Content-Length"] = str(len(value)) - - data = property( - get_data, - set_data, - doc="A descriptor that calls :meth:`get_data` and :meth:`set_data`.", - ) - - def calculate_content_length(self): - """Returns the content length if available or `None` otherwise.""" - try: - self._ensure_sequence() - except RuntimeError: - return None - return sum(len(x) for x in self.iter_encoded()) - - def _ensure_sequence(self, mutable=False): - """This method can be called by methods that need a sequence. If - `mutable` is true, it will also ensure that the response sequence - is a standard Python list. - - .. versionadded:: 0.6 - """ - if self.is_sequence: - # if we need a mutable object, we ensure it's a list. - if mutable and not isinstance(self.response, list): - self.response = list(self.response) - return - if self.direct_passthrough: - raise RuntimeError( - "Attempted implicit sequence conversion but the" - " response object is in direct passthrough mode." - ) - if not self.implicit_sequence_conversion: - raise RuntimeError( - "The response object required the iterable to be a" - " sequence, but the implicit conversion was disabled." - " Call make_sequence() yourself." - ) - self.make_sequence() - - def make_sequence(self): - """Converts the response iterator in a list. By default this happens - automatically if required. If `implicit_sequence_conversion` is - disabled, this method is not automatically called and some properties - might raise exceptions. This also encodes all the items. - - .. versionadded:: 0.6 - """ - if not self.is_sequence: - # if we consume an iterable we have to ensure that the close - # method of the iterable is called if available when we tear - # down the response - close = getattr(self.response, "close", None) - self.response = list(self.iter_encoded()) - if close is not None: - self.call_on_close(close) - - def iter_encoded(self): - """Iter the response encoded with the encoding of the response. - If the response object is invoked as WSGI application the return - value of this method is used as application iterator unless - :attr:`direct_passthrough` was activated. - """ - if __debug__: - _warn_if_string(self.response) - # Encode in a separate function so that self.response is fetched - # early. This allows us to wrap the response with the return - # value from get_app_iter or iter_encoded. - return _iter_encoded(self.response, self.charset) - - def set_cookie( - self, - key, - value="", - max_age=None, - expires=None, - path="/", - domain=None, - secure=False, - httponly=False, - samesite=None, - ): - """Sets a cookie. The parameters are the same as in the cookie `Morsel` - object in the Python standard library but it accepts unicode data, too. - - A warning is raised if the size of the cookie header exceeds - :attr:`max_cookie_size`, but the header will still be set. - - :param key: the key (name) of the cookie to be set. - :param value: the value of the cookie. - :param max_age: should be a number of seconds, or `None` (default) if - the cookie should last only as long as the client's - browser session. - :param expires: should be a `datetime` object or UNIX timestamp. - :param path: limits the cookie to a given path, per default it will - span the whole domain. - :param domain: if you want to set a cross-domain cookie. For example, - ``domain=".example.com"`` will set a cookie that is - readable by the domain ``www.example.com``, - ``foo.example.com`` etc. Otherwise, a cookie will only - be readable by the domain that set it. - :param secure: If `True`, the cookie will only be available via HTTPS - :param httponly: disallow JavaScript to access the cookie. This is an - extension to the cookie standard and probably not - supported by all browsers. - :param samesite: Limits the scope of the cookie such that it will only - be attached to requests if those requests are - "same-site". - """ - self.headers.add( - "Set-Cookie", - dump_cookie( - key, - value=value, - max_age=max_age, - expires=expires, - path=path, - domain=domain, - secure=secure, - httponly=httponly, - charset=self.charset, - max_size=self.max_cookie_size, - samesite=samesite, - ), - ) - - def delete_cookie(self, key, path="/", domain=None): - """Delete a cookie. Fails silently if key doesn't exist. - - :param key: the key (name) of the cookie to be deleted. - :param path: if the cookie that should be deleted was limited to a - path, the path has to be defined here. - :param domain: if the cookie that should be deleted was limited to a - domain, that domain has to be defined here. - """ - self.set_cookie(key, expires=0, max_age=0, path=path, domain=domain) - - @property - def is_streamed(self): - """If the response is streamed (the response is not an iterable with - a length information) this property is `True`. In this case streamed - means that there is no information about the number of iterations. - This is usually `True` if a generator is passed to the response object. - - This is useful for checking before applying some sort of post - filtering that should not take place for streamed responses. - """ - try: - len(self.response) - except (TypeError, AttributeError): - return True - return False - - @property - def is_sequence(self): - """If the iterator is buffered, this property will be `True`. A - response object will consider an iterator to be buffered if the - response attribute is a list or tuple. - - .. versionadded:: 0.6 - """ - return isinstance(self.response, (tuple, list)) - - def close(self): - """Close the wrapped response if possible. You can also use the object - in a with statement which will automatically close it. - - .. versionadded:: 0.9 - Can now be used in a with statement. - """ - if hasattr(self.response, "close"): - self.response.close() - for func in self._on_close: - func() - - def __enter__(self): - return self - - def __exit__(self, exc_type, exc_value, tb): - self.close() - - def freeze(self): - """Call this method if you want to make your response object ready for - being pickled. This buffers the generator if there is one. It will - also set the `Content-Length` header to the length of the body. - - .. versionchanged:: 0.6 - The `Content-Length` header is now set. - """ - # we explicitly set the length to a list of the *encoded* response - # iterator. Even if the implicit sequence conversion is disabled. - self.response = list(self.iter_encoded()) - self.headers["Content-Length"] = str(sum(map(len, self.response))) - - def get_wsgi_headers(self, environ): - """This is automatically called right before the response is started - and returns headers modified for the given environment. It returns a - copy of the headers from the response with some modifications applied - if necessary. - - For example the location header (if present) is joined with the root - URL of the environment. Also the content length is automatically set - to zero here for certain status codes. - - .. versionchanged:: 0.6 - Previously that function was called `fix_headers` and modified - the response object in place. Also since 0.6, IRIs in location - and content-location headers are handled properly. - - Also starting with 0.6, Werkzeug will attempt to set the content - length if it is able to figure it out on its own. This is the - case if all the strings in the response iterable are already - encoded and the iterable is buffered. - - :param environ: the WSGI environment of the request. - :return: returns a new :class:`~werkzeug.datastructures.Headers` - object. - """ - headers = Headers(self.headers) - location = None - content_location = None - content_length = None - status = self.status_code - - # iterate over the headers to find all values in one go. Because - # get_wsgi_headers is used each response that gives us a tiny - # speedup. - for key, value in headers: - ikey = key.lower() - if ikey == u"location": - location = value - elif ikey == u"content-location": - content_location = value - elif ikey == u"content-length": - content_length = value - - # make sure the location header is an absolute URL - if location is not None: - old_location = location - if isinstance(location, text_type): - # Safe conversion is necessary here as we might redirect - # to a broken URI scheme (for instance itms-services). - location = iri_to_uri(location, safe_conversion=True) - - if self.autocorrect_location_header: - current_url = get_current_url(environ, strip_querystring=True) - if isinstance(current_url, text_type): - current_url = iri_to_uri(current_url) - location = url_join(current_url, location) - if location != old_location: - headers["Location"] = location - - # make sure the content location is a URL - if content_location is not None and isinstance(content_location, text_type): - headers["Content-Location"] = iri_to_uri(content_location) - - if 100 <= status < 200 or status == 204: - # Per section 3.3.2 of RFC 7230, "a server MUST NOT send a - # Content-Length header field in any response with a status - # code of 1xx (Informational) or 204 (No Content)." - headers.remove("Content-Length") - elif status == 304: - remove_entity_headers(headers) - - # if we can determine the content length automatically, we - # should try to do that. But only if this does not involve - # flattening the iterator or encoding of unicode strings in - # the response. We however should not do that if we have a 304 - # response. - if ( - self.automatically_set_content_length - and self.is_sequence - and content_length is None - and status not in (204, 304) - and not (100 <= status < 200) - ): - try: - content_length = sum(len(to_bytes(x, "ascii")) for x in self.response) - except UnicodeError: - # aha, something non-bytestringy in there, too bad, we - # can't safely figure out the length of the response. - pass - else: - headers["Content-Length"] = str(content_length) - - return headers - - def get_app_iter(self, environ): - """Returns the application iterator for the given environ. Depending - on the request method and the current status code the return value - might be an empty response rather than the one from the response. - - If the request method is `HEAD` or the status code is in a range - where the HTTP specification requires an empty response, an empty - iterable is returned. - - .. versionadded:: 0.6 - - :param environ: the WSGI environment of the request. - :return: a response iterable. - """ - status = self.status_code - if ( - environ["REQUEST_METHOD"] == "HEAD" - or 100 <= status < 200 - or status in (204, 304) - ): - iterable = () - elif self.direct_passthrough: - if __debug__: - _warn_if_string(self.response) - return self.response - else: - iterable = self.iter_encoded() - return ClosingIterator(iterable, self.close) - - def get_wsgi_response(self, environ): - """Returns the final WSGI response as tuple. The first item in - the tuple is the application iterator, the second the status and - the third the list of headers. The response returned is created - specially for the given environment. For example if the request - method in the WSGI environment is ``'HEAD'`` the response will - be empty and only the headers and status code will be present. - - .. versionadded:: 0.6 - - :param environ: the WSGI environment of the request. - :return: an ``(app_iter, status, headers)`` tuple. - """ - headers = self.get_wsgi_headers(environ) - app_iter = self.get_app_iter(environ) - return app_iter, self.status, headers.to_wsgi_list() - - def __call__(self, environ, start_response): - """Process this response as WSGI application. - - :param environ: the WSGI environment. - :param start_response: the response callable provided by the WSGI - server. - :return: an application iterator - """ - app_iter, status, headers = self.get_wsgi_response(environ) - start_response(status, headers) - return app_iter diff --git a/python/werkzeug/wrappers/common_descriptors.py b/python/werkzeug/wrappers/common_descriptors.py deleted file mode 100644 index e4107ee..0000000 --- a/python/werkzeug/wrappers/common_descriptors.py +++ /dev/null @@ -1,322 +0,0 @@ -from datetime import datetime -from datetime import timedelta - -from .._compat import string_types -from ..datastructures import CallbackDict -from ..http import dump_age -from ..http import dump_header -from ..http import dump_options_header -from ..http import http_date -from ..http import parse_age -from ..http import parse_date -from ..http import parse_options_header -from ..http import parse_set_header -from ..utils import cached_property -from ..utils import environ_property -from ..utils import get_content_type -from ..utils import header_property -from ..wsgi import get_content_length - - -class CommonRequestDescriptorsMixin(object): - """A mixin for :class:`BaseRequest` subclasses. Request objects that - mix this class in will automatically get descriptors for a couple of - HTTP headers with automatic type conversion. - - .. versionadded:: 0.5 - """ - - content_type = environ_property( - "CONTENT_TYPE", - doc="""The Content-Type entity-header field indicates the media - type of the entity-body sent to the recipient or, in the case of - the HEAD method, the media type that would have been sent had - the request been a GET.""", - ) - - @cached_property - def content_length(self): - """The Content-Length entity-header field indicates the size of the - entity-body in bytes or, in the case of the HEAD method, the size of - the entity-body that would have been sent had the request been a - GET. - """ - return get_content_length(self.environ) - - content_encoding = environ_property( - "HTTP_CONTENT_ENCODING", - doc="""The Content-Encoding entity-header field is used as a - modifier to the media-type. When present, its value indicates - what additional content codings have been applied to the - entity-body, and thus what decoding mechanisms must be applied - in order to obtain the media-type referenced by the Content-Type - header field. - - .. versionadded:: 0.9""", - ) - content_md5 = environ_property( - "HTTP_CONTENT_MD5", - doc="""The Content-MD5 entity-header field, as defined in - RFC 1864, is an MD5 digest of the entity-body for the purpose of - providing an end-to-end message integrity check (MIC) of the - entity-body. (Note: a MIC is good for detecting accidental - modification of the entity-body in transit, but is not proof - against malicious attacks.) - - .. versionadded:: 0.9""", - ) - referrer = environ_property( - "HTTP_REFERER", - doc="""The Referer[sic] request-header field allows the client - to specify, for the server's benefit, the address (URI) of the - resource from which the Request-URI was obtained (the - "referrer", although the header field is misspelled).""", - ) - date = environ_property( - "HTTP_DATE", - None, - parse_date, - doc="""The Date general-header field represents the date and - time at which the message was originated, having the same - semantics as orig-date in RFC 822.""", - ) - max_forwards = environ_property( - "HTTP_MAX_FORWARDS", - None, - int, - doc="""The Max-Forwards request-header field provides a - mechanism with the TRACE and OPTIONS methods to limit the number - of proxies or gateways that can forward the request to the next - inbound server.""", - ) - - def _parse_content_type(self): - if not hasattr(self, "_parsed_content_type"): - self._parsed_content_type = parse_options_header( - self.environ.get("CONTENT_TYPE", "") - ) - - @property - def mimetype(self): - """Like :attr:`content_type`, but without parameters (eg, without - charset, type etc.) and always lowercase. For example if the content - type is ``text/HTML; charset=utf-8`` the mimetype would be - ``'text/html'``. - """ - self._parse_content_type() - return self._parsed_content_type[0].lower() - - @property - def mimetype_params(self): - """The mimetype parameters as dict. For example if the content - type is ``text/html; charset=utf-8`` the params would be - ``{'charset': 'utf-8'}``. - """ - self._parse_content_type() - return self._parsed_content_type[1] - - @cached_property - def pragma(self): - """The Pragma general-header field is used to include - implementation-specific directives that might apply to any recipient - along the request/response chain. All pragma directives specify - optional behavior from the viewpoint of the protocol; however, some - systems MAY require that behavior be consistent with the directives. - """ - return parse_set_header(self.environ.get("HTTP_PRAGMA", "")) - - -class CommonResponseDescriptorsMixin(object): - """A mixin for :class:`BaseResponse` subclasses. Response objects that - mix this class in will automatically get descriptors for a couple of - HTTP headers with automatic type conversion. - """ - - @property - def mimetype(self): - """The mimetype (content type without charset etc.)""" - ct = self.headers.get("content-type") - if ct: - return ct.split(";")[0].strip() - - @mimetype.setter - def mimetype(self, value): - self.headers["Content-Type"] = get_content_type(value, self.charset) - - @property - def mimetype_params(self): - """The mimetype parameters as dict. For example if the - content type is ``text/html; charset=utf-8`` the params would be - ``{'charset': 'utf-8'}``. - - .. versionadded:: 0.5 - """ - - def on_update(d): - self.headers["Content-Type"] = dump_options_header(self.mimetype, d) - - d = parse_options_header(self.headers.get("content-type", ""))[1] - return CallbackDict(d, on_update) - - location = header_property( - "Location", - doc="""The Location response-header field is used to redirect - the recipient to a location other than the Request-URI for - completion of the request or identification of a new - resource.""", - ) - age = header_property( - "Age", - None, - parse_age, - dump_age, - doc="""The Age response-header field conveys the sender's - estimate of the amount of time since the response (or its - revalidation) was generated at the origin server. - - Age values are non-negative decimal integers, representing time - in seconds.""", - ) - content_type = header_property( - "Content-Type", - doc="""The Content-Type entity-header field indicates the media - type of the entity-body sent to the recipient or, in the case of - the HEAD method, the media type that would have been sent had - the request been a GET.""", - ) - content_length = header_property( - "Content-Length", - None, - int, - str, - doc="""The Content-Length entity-header field indicates the size - of the entity-body, in decimal number of OCTETs, sent to the - recipient or, in the case of the HEAD method, the size of the - entity-body that would have been sent had the request been a - GET.""", - ) - content_location = header_property( - "Content-Location", - doc="""The Content-Location entity-header field MAY be used to - supply the resource location for the entity enclosed in the - message when that entity is accessible from a location separate - from the requested resource's URI.""", - ) - content_encoding = header_property( - "Content-Encoding", - doc="""The Content-Encoding entity-header field is used as a - modifier to the media-type. When present, its value indicates - what additional content codings have been applied to the - entity-body, and thus what decoding mechanisms must be applied - in order to obtain the media-type referenced by the Content-Type - header field.""", - ) - content_md5 = header_property( - "Content-MD5", - doc="""The Content-MD5 entity-header field, as defined in - RFC 1864, is an MD5 digest of the entity-body for the purpose of - providing an end-to-end message integrity check (MIC) of the - entity-body. (Note: a MIC is good for detecting accidental - modification of the entity-body in transit, but is not proof - against malicious attacks.)""", - ) - date = header_property( - "Date", - None, - parse_date, - http_date, - doc="""The Date general-header field represents the date and - time at which the message was originated, having the same - semantics as orig-date in RFC 822.""", - ) - expires = header_property( - "Expires", - None, - parse_date, - http_date, - doc="""The Expires entity-header field gives the date/time after - which the response is considered stale. A stale cache entry may - not normally be returned by a cache.""", - ) - last_modified = header_property( - "Last-Modified", - None, - parse_date, - http_date, - doc="""The Last-Modified entity-header field indicates the date - and time at which the origin server believes the variant was - last modified.""", - ) - - @property - def retry_after(self): - """The Retry-After response-header field can be used with a - 503 (Service Unavailable) response to indicate how long the - service is expected to be unavailable to the requesting client. - - Time in seconds until expiration or date. - """ - value = self.headers.get("retry-after") - if value is None: - return - elif value.isdigit(): - return datetime.utcnow() + timedelta(seconds=int(value)) - return parse_date(value) - - @retry_after.setter - def retry_after(self, value): - if value is None: - if "retry-after" in self.headers: - del self.headers["retry-after"] - return - elif isinstance(value, datetime): - value = http_date(value) - else: - value = str(value) - self.headers["Retry-After"] = value - - def _set_property(name, doc=None): # noqa: B902 - def fget(self): - def on_update(header_set): - if not header_set and name in self.headers: - del self.headers[name] - elif header_set: - self.headers[name] = header_set.to_header() - - return parse_set_header(self.headers.get(name), on_update) - - def fset(self, value): - if not value: - del self.headers[name] - elif isinstance(value, string_types): - self.headers[name] = value - else: - self.headers[name] = dump_header(value) - - return property(fget, fset, doc=doc) - - vary = _set_property( - "Vary", - doc="""The Vary field value indicates the set of request-header - fields that fully determines, while the response is fresh, - whether a cache is permitted to use the response to reply to a - subsequent request without revalidation.""", - ) - content_language = _set_property( - "Content-Language", - doc="""The Content-Language entity-header field describes the - natural language(s) of the intended audience for the enclosed - entity. Note that this might not be equivalent to all the - languages used within the entity-body.""", - ) - allow = _set_property( - "Allow", - doc="""The Allow entity-header field lists the set of methods - supported by the resource identified by the Request-URI. The - purpose of this field is strictly to inform the recipient of - valid methods associated with the resource. An Allow header - field MUST be present in a 405 (Method Not Allowed) - response.""", - ) - - del _set_property diff --git a/python/werkzeug/wrappers/etag.py b/python/werkzeug/wrappers/etag.py deleted file mode 100644 index 0733506..0000000 --- a/python/werkzeug/wrappers/etag.py +++ /dev/null @@ -1,304 +0,0 @@ -from .._compat import string_types -from .._internal import _get_environ -from ..datastructures import ContentRange -from ..datastructures import RequestCacheControl -from ..datastructures import ResponseCacheControl -from ..http import generate_etag -from ..http import http_date -from ..http import is_resource_modified -from ..http import parse_cache_control_header -from ..http import parse_content_range_header -from ..http import parse_date -from ..http import parse_etags -from ..http import parse_if_range_header -from ..http import parse_range_header -from ..http import quote_etag -from ..http import unquote_etag -from ..utils import cached_property -from ..utils import header_property -from ..wrappers.base_response import _clean_accept_ranges -from ..wsgi import _RangeWrapper - - -class ETagRequestMixin(object): - """Add entity tag and cache descriptors to a request object or object with - a WSGI environment available as :attr:`~BaseRequest.environ`. This not - only provides access to etags but also to the cache control header. - """ - - @cached_property - def cache_control(self): - """A :class:`~werkzeug.datastructures.RequestCacheControl` object - for the incoming cache control headers. - """ - cache_control = self.environ.get("HTTP_CACHE_CONTROL") - return parse_cache_control_header(cache_control, None, RequestCacheControl) - - @cached_property - def if_match(self): - """An object containing all the etags in the `If-Match` header. - - :rtype: :class:`~werkzeug.datastructures.ETags` - """ - return parse_etags(self.environ.get("HTTP_IF_MATCH")) - - @cached_property - def if_none_match(self): - """An object containing all the etags in the `If-None-Match` header. - - :rtype: :class:`~werkzeug.datastructures.ETags` - """ - return parse_etags(self.environ.get("HTTP_IF_NONE_MATCH")) - - @cached_property - def if_modified_since(self): - """The parsed `If-Modified-Since` header as datetime object.""" - return parse_date(self.environ.get("HTTP_IF_MODIFIED_SINCE")) - - @cached_property - def if_unmodified_since(self): - """The parsed `If-Unmodified-Since` header as datetime object.""" - return parse_date(self.environ.get("HTTP_IF_UNMODIFIED_SINCE")) - - @cached_property - def if_range(self): - """The parsed `If-Range` header. - - .. versionadded:: 0.7 - - :rtype: :class:`~werkzeug.datastructures.IfRange` - """ - return parse_if_range_header(self.environ.get("HTTP_IF_RANGE")) - - @cached_property - def range(self): - """The parsed `Range` header. - - .. versionadded:: 0.7 - - :rtype: :class:`~werkzeug.datastructures.Range` - """ - return parse_range_header(self.environ.get("HTTP_RANGE")) - - -class ETagResponseMixin(object): - """Adds extra functionality to a response object for etag and cache - handling. This mixin requires an object with at least a `headers` - object that implements a dict like interface similar to - :class:`~werkzeug.datastructures.Headers`. - - If you want the :meth:`freeze` method to automatically add an etag, you - have to mixin this method before the response base class. The default - response class does not do that. - """ - - @property - def cache_control(self): - """The Cache-Control general-header field is used to specify - directives that MUST be obeyed by all caching mechanisms along the - request/response chain. - """ - - def on_update(cache_control): - if not cache_control and "cache-control" in self.headers: - del self.headers["cache-control"] - elif cache_control: - self.headers["Cache-Control"] = cache_control.to_header() - - return parse_cache_control_header( - self.headers.get("cache-control"), on_update, ResponseCacheControl - ) - - def _wrap_response(self, start, length): - """Wrap existing Response in case of Range Request context.""" - if self.status_code == 206: - self.response = _RangeWrapper(self.response, start, length) - - def _is_range_request_processable(self, environ): - """Return ``True`` if `Range` header is present and if underlying - resource is considered unchanged when compared with `If-Range` header. - """ - return ( - "HTTP_IF_RANGE" not in environ - or not is_resource_modified( - environ, - self.headers.get("etag"), - None, - self.headers.get("last-modified"), - ignore_if_range=False, - ) - ) and "HTTP_RANGE" in environ - - def _process_range_request(self, environ, complete_length=None, accept_ranges=None): - """Handle Range Request related headers (RFC7233). If `Accept-Ranges` - header is valid, and Range Request is processable, we set the headers - as described by the RFC, and wrap the underlying response in a - RangeWrapper. - - Returns ``True`` if Range Request can be fulfilled, ``False`` otherwise. - - :raises: :class:`~werkzeug.exceptions.RequestedRangeNotSatisfiable` - if `Range` header could not be parsed or satisfied. - """ - from ..exceptions import RequestedRangeNotSatisfiable - - if accept_ranges is None: - return False - self.headers["Accept-Ranges"] = accept_ranges - if not self._is_range_request_processable(environ) or complete_length is None: - return False - parsed_range = parse_range_header(environ.get("HTTP_RANGE")) - if parsed_range is None: - raise RequestedRangeNotSatisfiable(complete_length) - range_tuple = parsed_range.range_for_length(complete_length) - content_range_header = parsed_range.to_content_range_header(complete_length) - if range_tuple is None or content_range_header is None: - raise RequestedRangeNotSatisfiable(complete_length) - content_length = range_tuple[1] - range_tuple[0] - # Be sure not to send 206 response - # if requested range is the full content. - if content_length != complete_length: - self.headers["Content-Length"] = content_length - self.content_range = content_range_header - self.status_code = 206 - self._wrap_response(range_tuple[0], content_length) - return True - return False - - def make_conditional( - self, request_or_environ, accept_ranges=False, complete_length=None - ): - """Make the response conditional to the request. This method works - best if an etag was defined for the response already. The `add_etag` - method can be used to do that. If called without etag just the date - header is set. - - This does nothing if the request method in the request or environ is - anything but GET or HEAD. - - For optimal performance when handling range requests, it's recommended - that your response data object implements `seekable`, `seek` and `tell` - methods as described by :py:class:`io.IOBase`. Objects returned by - :meth:`~werkzeug.wsgi.wrap_file` automatically implement those methods. - - It does not remove the body of the response because that's something - the :meth:`__call__` function does for us automatically. - - Returns self so that you can do ``return resp.make_conditional(req)`` - but modifies the object in-place. - - :param request_or_environ: a request object or WSGI environment to be - used to make the response conditional - against. - :param accept_ranges: This parameter dictates the value of - `Accept-Ranges` header. If ``False`` (default), - the header is not set. If ``True``, it will be set - to ``"bytes"``. If ``None``, it will be set to - ``"none"``. If it's a string, it will use this - value. - :param complete_length: Will be used only in valid Range Requests. - It will set `Content-Range` complete length - value and compute `Content-Length` real value. - This parameter is mandatory for successful - Range Requests completion. - :raises: :class:`~werkzeug.exceptions.RequestedRangeNotSatisfiable` - if `Range` header could not be parsed or satisfied. - """ - environ = _get_environ(request_or_environ) - if environ["REQUEST_METHOD"] in ("GET", "HEAD"): - # if the date is not in the headers, add it now. We however - # will not override an already existing header. Unfortunately - # this header will be overriden by many WSGI servers including - # wsgiref. - if "date" not in self.headers: - self.headers["Date"] = http_date() - accept_ranges = _clean_accept_ranges(accept_ranges) - is206 = self._process_range_request(environ, complete_length, accept_ranges) - if not is206 and not is_resource_modified( - environ, - self.headers.get("etag"), - None, - self.headers.get("last-modified"), - ): - if parse_etags(environ.get("HTTP_IF_MATCH")): - self.status_code = 412 - else: - self.status_code = 304 - if ( - self.automatically_set_content_length - and "content-length" not in self.headers - ): - length = self.calculate_content_length() - if length is not None: - self.headers["Content-Length"] = length - return self - - def add_etag(self, overwrite=False, weak=False): - """Add an etag for the current response if there is none yet.""" - if overwrite or "etag" not in self.headers: - self.set_etag(generate_etag(self.get_data()), weak) - - def set_etag(self, etag, weak=False): - """Set the etag, and override the old one if there was one.""" - self.headers["ETag"] = quote_etag(etag, weak) - - def get_etag(self): - """Return a tuple in the form ``(etag, is_weak)``. If there is no - ETag the return value is ``(None, None)``. - """ - return unquote_etag(self.headers.get("ETag")) - - def freeze(self, no_etag=False): - """Call this method if you want to make your response object ready for - pickeling. This buffers the generator if there is one. This also - sets the etag unless `no_etag` is set to `True`. - """ - if not no_etag: - self.add_etag() - super(ETagResponseMixin, self).freeze() - - accept_ranges = header_property( - "Accept-Ranges", - doc="""The `Accept-Ranges` header. Even though the name would - indicate that multiple values are supported, it must be one - string token only. - - The values ``'bytes'`` and ``'none'`` are common. - - .. versionadded:: 0.7""", - ) - - def _get_content_range(self): - def on_update(rng): - if not rng: - del self.headers["content-range"] - else: - self.headers["Content-Range"] = rng.to_header() - - rv = parse_content_range_header(self.headers.get("content-range"), on_update) - # always provide a content range object to make the descriptor - # more user friendly. It provides an unset() method that can be - # used to remove the header quickly. - if rv is None: - rv = ContentRange(None, None, None, on_update=on_update) - return rv - - def _set_content_range(self, value): - if not value: - del self.headers["content-range"] - elif isinstance(value, string_types): - self.headers["Content-Range"] = value - else: - self.headers["Content-Range"] = value.to_header() - - content_range = property( - _get_content_range, - _set_content_range, - doc="""The ``Content-Range`` header as - :class:`~werkzeug.datastructures.ContentRange` object. Even if - the header is not set it wil provide such an object for easier - manipulation. - - .. versionadded:: 0.7""", - ) - del _get_content_range, _set_content_range diff --git a/python/werkzeug/wrappers/json.py b/python/werkzeug/wrappers/json.py deleted file mode 100644 index 6d5dc33..0000000 --- a/python/werkzeug/wrappers/json.py +++ /dev/null @@ -1,145 +0,0 @@ -from __future__ import absolute_import - -import datetime -import uuid - -from .._compat import text_type -from ..exceptions import BadRequest -from ..utils import detect_utf_encoding - -try: - import simplejson as _json -except ImportError: - import json as _json - - -class _JSONModule(object): - @staticmethod - def _default(o): - if isinstance(o, datetime.date): - return o.isoformat() - - if isinstance(o, uuid.UUID): - return str(o) - - if hasattr(o, "__html__"): - return text_type(o.__html__()) - - raise TypeError() - - @classmethod - def dumps(cls, obj, **kw): - kw.setdefault("separators", (",", ":")) - kw.setdefault("default", cls._default) - kw.setdefault("sort_keys", True) - return _json.dumps(obj, **kw) - - @staticmethod - def loads(s, **kw): - if isinstance(s, bytes): - # Needed for Python < 3.6 - encoding = detect_utf_encoding(s) - s = s.decode(encoding) - - return _json.loads(s, **kw) - - -class JSONMixin(object): - """Mixin to parse :attr:`data` as JSON. Can be mixed in for both - :class:`~werkzeug.wrappers.Request` and - :class:`~werkzeug.wrappers.Response` classes. - - If `simplejson`_ is installed it is preferred over Python's built-in - :mod:`json` module. - - .. _simplejson: https://simplejson.readthedocs.io/en/latest/ - """ - - #: A module or other object that has ``dumps`` and ``loads`` - #: functions that match the API of the built-in :mod:`json` module. - json_module = _JSONModule - - @property - def json(self): - """The parsed JSON data if :attr:`mimetype` indicates JSON - (:mimetype:`application/json`, see :meth:`is_json`). - - Calls :meth:`get_json` with default arguments. - """ - return self.get_json() - - @property - def is_json(self): - """Check if the mimetype indicates JSON data, either - :mimetype:`application/json` or :mimetype:`application/*+json`. - """ - mt = self.mimetype - return ( - mt == "application/json" - or mt.startswith("application/") - and mt.endswith("+json") - ) - - def _get_data_for_json(self, cache): - try: - return self.get_data(cache=cache) - except TypeError: - # Response doesn't have cache param. - return self.get_data() - - # Cached values for ``(silent=False, silent=True)``. Initialized - # with sentinel values. - _cached_json = (Ellipsis, Ellipsis) - - def get_json(self, force=False, silent=False, cache=True): - """Parse :attr:`data` as JSON. - - If the mimetype does not indicate JSON - (:mimetype:`application/json`, see :meth:`is_json`), this - returns ``None``. - - If parsing fails, :meth:`on_json_loading_failed` is called and - its return value is used as the return value. - - :param force: Ignore the mimetype and always try to parse JSON. - :param silent: Silence parsing errors and return ``None`` - instead. - :param cache: Store the parsed JSON to return for subsequent - calls. - """ - if cache and self._cached_json[silent] is not Ellipsis: - return self._cached_json[silent] - - if not (force or self.is_json): - return None - - data = self._get_data_for_json(cache=cache) - - try: - rv = self.json_module.loads(data) - except ValueError as e: - if silent: - rv = None - - if cache: - normal_rv, _ = self._cached_json - self._cached_json = (normal_rv, rv) - else: - rv = self.on_json_loading_failed(e) - - if cache: - _, silent_rv = self._cached_json - self._cached_json = (rv, silent_rv) - else: - if cache: - self._cached_json = (rv, rv) - - return rv - - def on_json_loading_failed(self, e): - """Called if :meth:`get_json` parsing fails and isn't silenced. - If this method returns a value, it is used as the return value - for :meth:`get_json`. The default implementation raises - :exc:`~werkzeug.exceptions.BadRequest`. - """ - raise BadRequest("Failed to decode JSON object: {0}".format(e)) diff --git a/python/werkzeug/wrappers/request.py b/python/werkzeug/wrappers/request.py deleted file mode 100644 index d1c71b6..0000000 --- a/python/werkzeug/wrappers/request.py +++ /dev/null @@ -1,44 +0,0 @@ -from .accept import AcceptMixin -from .auth import AuthorizationMixin -from .base_request import BaseRequest -from .common_descriptors import CommonRequestDescriptorsMixin -from .etag import ETagRequestMixin -from .user_agent import UserAgentMixin - - -class Request( - BaseRequest, - AcceptMixin, - ETagRequestMixin, - UserAgentMixin, - AuthorizationMixin, - CommonRequestDescriptorsMixin, -): - """Full featured request object implementing the following mixins: - - - :class:`AcceptMixin` for accept header parsing - - :class:`ETagRequestMixin` for etag and cache control handling - - :class:`UserAgentMixin` for user agent introspection - - :class:`AuthorizationMixin` for http auth handling - - :class:`CommonRequestDescriptorsMixin` for common headers - """ - - -class StreamOnlyMixin(object): - """If mixed in before the request object this will change the bahavior - of it to disable handling of form parsing. This disables the - :attr:`files`, :attr:`form` attributes and will just provide a - :attr:`stream` attribute that however is always available. - - .. versionadded:: 0.9 - """ - - disable_data_descriptor = True - want_form_data_parsed = False - - -class PlainRequest(StreamOnlyMixin, Request): - """A request object without special form parsing capabilities. - - .. versionadded:: 0.9 - """ diff --git a/python/werkzeug/wrappers/response.py b/python/werkzeug/wrappers/response.py deleted file mode 100644 index cd86cac..0000000 --- a/python/werkzeug/wrappers/response.py +++ /dev/null @@ -1,78 +0,0 @@ -from ..utils import cached_property -from .auth import WWWAuthenticateMixin -from .base_response import BaseResponse -from .common_descriptors import CommonResponseDescriptorsMixin -from .etag import ETagResponseMixin - - -class ResponseStream(object): - """A file descriptor like object used by the :class:`ResponseStreamMixin` to - represent the body of the stream. It directly pushes into the response - iterable of the response object. - """ - - mode = "wb+" - - def __init__(self, response): - self.response = response - self.closed = False - - def write(self, value): - if self.closed: - raise ValueError("I/O operation on closed file") - self.response._ensure_sequence(mutable=True) - self.response.response.append(value) - self.response.headers.pop("Content-Length", None) - return len(value) - - def writelines(self, seq): - for item in seq: - self.write(item) - - def close(self): - self.closed = True - - def flush(self): - if self.closed: - raise ValueError("I/O operation on closed file") - - def isatty(self): - if self.closed: - raise ValueError("I/O operation on closed file") - return False - - def tell(self): - self.response._ensure_sequence() - return sum(map(len, self.response.response)) - - @property - def encoding(self): - return self.response.charset - - -class ResponseStreamMixin(object): - """Mixin for :class:`BaseRequest` subclasses. Classes that inherit from - this mixin will automatically get a :attr:`stream` property that provides - a write-only interface to the response iterable. - """ - - @cached_property - def stream(self): - """The response iterable as write-only stream.""" - return ResponseStream(self) - - -class Response( - BaseResponse, - ETagResponseMixin, - ResponseStreamMixin, - CommonResponseDescriptorsMixin, - WWWAuthenticateMixin, -): - """Full featured response object implementing the following mixins: - - - :class:`ETagResponseMixin` for etag and cache control handling - - :class:`ResponseStreamMixin` to add support for the `stream` property - - :class:`CommonResponseDescriptorsMixin` for various HTTP descriptors - - :class:`WWWAuthenticateMixin` for HTTP authentication support - """ diff --git a/python/werkzeug/wrappers/user_agent.py b/python/werkzeug/wrappers/user_agent.py deleted file mode 100644 index 72588dd..0000000 --- a/python/werkzeug/wrappers/user_agent.py +++ /dev/null @@ -1,15 +0,0 @@ -from ..utils import cached_property - - -class UserAgentMixin(object): - """Adds a `user_agent` attribute to the request object which - contains the parsed user agent of the browser that triggered the - request as a :class:`~werkzeug.useragents.UserAgent` object. - """ - - @cached_property - def user_agent(self): - """The current user agent.""" - from ..useragents import UserAgent - - return UserAgent(self.environ) diff --git a/python/werkzeug/wsgi.py b/python/werkzeug/wsgi.py deleted file mode 100644 index f069f2d..0000000 --- a/python/werkzeug/wsgi.py +++ /dev/null @@ -1,1067 +0,0 @@ -# -*- coding: utf-8 -*- -""" - werkzeug.wsgi - ~~~~~~~~~~~~~ - - This module implements WSGI related helpers. - - :copyright: 2007 Pallets - :license: BSD-3-Clause -""" -import io -import re -import warnings -from functools import partial -from functools import update_wrapper -from itertools import chain - -from ._compat import BytesIO -from ._compat import implements_iterator -from ._compat import make_literal_wrapper -from ._compat import string_types -from ._compat import text_type -from ._compat import to_bytes -from ._compat import to_unicode -from ._compat import try_coerce_native -from ._compat import wsgi_get_bytes -from ._internal import _encode_idna -from .urls import uri_to_iri -from .urls import url_join -from .urls import url_parse -from .urls import url_quote - - -def responder(f): - """Marks a function as responder. Decorate a function with it and it - will automatically call the return value as WSGI application. - - Example:: - - @responder - def application(environ, start_response): - return Response('Hello World!') - """ - return update_wrapper(lambda *a: f(*a)(*a[-2:]), f) - - -def get_current_url( - environ, - root_only=False, - strip_querystring=False, - host_only=False, - trusted_hosts=None, -): - """A handy helper function that recreates the full URL as IRI for the - current request or parts of it. Here's an example: - - >>> from werkzeug.test import create_environ - >>> env = create_environ("/?param=foo", "http://localhost/script") - >>> get_current_url(env) - 'http://localhost/script/?param=foo' - >>> get_current_url(env, root_only=True) - 'http://localhost/script/' - >>> get_current_url(env, host_only=True) - 'http://localhost/' - >>> get_current_url(env, strip_querystring=True) - 'http://localhost/script/' - - This optionally it verifies that the host is in a list of trusted hosts. - If the host is not in there it will raise a - :exc:`~werkzeug.exceptions.SecurityError`. - - Note that the string returned might contain unicode characters as the - representation is an IRI not an URI. If you need an ASCII only - representation you can use the :func:`~werkzeug.urls.iri_to_uri` - function: - - >>> from werkzeug.urls import iri_to_uri - >>> iri_to_uri(get_current_url(env)) - 'http://localhost/script/?param=foo' - - :param environ: the WSGI environment to get the current URL from. - :param root_only: set `True` if you only want the root URL. - :param strip_querystring: set to `True` if you don't want the querystring. - :param host_only: set to `True` if the host URL should be returned. - :param trusted_hosts: a list of trusted hosts, see :func:`host_is_trusted` - for more information. - """ - tmp = [environ["wsgi.url_scheme"], "://", get_host(environ, trusted_hosts)] - cat = tmp.append - if host_only: - return uri_to_iri("".join(tmp) + "/") - cat(url_quote(wsgi_get_bytes(environ.get("SCRIPT_NAME", ""))).rstrip("/")) - cat("/") - if not root_only: - cat(url_quote(wsgi_get_bytes(environ.get("PATH_INFO", "")).lstrip(b"/"))) - if not strip_querystring: - qs = get_query_string(environ) - if qs: - cat("?" + qs) - return uri_to_iri("".join(tmp)) - - -def host_is_trusted(hostname, trusted_list): - """Checks if a host is trusted against a list. This also takes care - of port normalization. - - .. versionadded:: 0.9 - - :param hostname: the hostname to check - :param trusted_list: a list of hostnames to check against. If a - hostname starts with a dot it will match against - all subdomains as well. - """ - if not hostname: - return False - - if isinstance(trusted_list, string_types): - trusted_list = [trusted_list] - - def _normalize(hostname): - if ":" in hostname: - hostname = hostname.rsplit(":", 1)[0] - return _encode_idna(hostname) - - try: - hostname = _normalize(hostname) - except UnicodeError: - return False - for ref in trusted_list: - if ref.startswith("."): - ref = ref[1:] - suffix_match = True - else: - suffix_match = False - try: - ref = _normalize(ref) - except UnicodeError: - return False - if ref == hostname: - return True - if suffix_match and hostname.endswith(b"." + ref): - return True - return False - - -def get_host(environ, trusted_hosts=None): - """Return the host for the given WSGI environment. This first checks - the ``Host`` header. If it's not present, then ``SERVER_NAME`` and - ``SERVER_PORT`` are used. The host will only contain the port if it - is different than the standard port for the protocol. - - Optionally, verify that the host is trusted using - :func:`host_is_trusted` and raise a - :exc:`~werkzeug.exceptions.SecurityError` if it is not. - - :param environ: The WSGI environment to get the host from. - :param trusted_hosts: A list of trusted hosts. - :return: Host, with port if necessary. - :raise ~werkzeug.exceptions.SecurityError: If the host is not - trusted. - """ - if "HTTP_HOST" in environ: - rv = environ["HTTP_HOST"] - if environ["wsgi.url_scheme"] == "http" and rv.endswith(":80"): - rv = rv[:-3] - elif environ["wsgi.url_scheme"] == "https" and rv.endswith(":443"): - rv = rv[:-4] - else: - rv = environ["SERVER_NAME"] - if (environ["wsgi.url_scheme"], environ["SERVER_PORT"]) not in ( - ("https", "443"), - ("http", "80"), - ): - rv += ":" + environ["SERVER_PORT"] - if trusted_hosts is not None: - if not host_is_trusted(rv, trusted_hosts): - from .exceptions import SecurityError - - raise SecurityError('Host "%s" is not trusted' % rv) - return rv - - -def get_content_length(environ): - """Returns the content length from the WSGI environment as - integer. If it's not available or chunked transfer encoding is used, - ``None`` is returned. - - .. versionadded:: 0.9 - - :param environ: the WSGI environ to fetch the content length from. - """ - if environ.get("HTTP_TRANSFER_ENCODING", "") == "chunked": - return None - - content_length = environ.get("CONTENT_LENGTH") - if content_length is not None: - try: - return max(0, int(content_length)) - except (ValueError, TypeError): - pass - - -def get_input_stream(environ, safe_fallback=True): - """Returns the input stream from the WSGI environment and wraps it - in the most sensible way possible. The stream returned is not the - raw WSGI stream in most cases but one that is safe to read from - without taking into account the content length. - - If content length is not set, the stream will be empty for safety reasons. - If the WSGI server supports chunked or infinite streams, it should set - the ``wsgi.input_terminated`` value in the WSGI environ to indicate that. - - .. versionadded:: 0.9 - - :param environ: the WSGI environ to fetch the stream from. - :param safe_fallback: use an empty stream as a safe fallback when the - content length is not set. Disabling this allows infinite streams, - which can be a denial-of-service risk. - """ - stream = environ["wsgi.input"] - content_length = get_content_length(environ) - - # A wsgi extension that tells us if the input is terminated. In - # that case we return the stream unchanged as we know we can safely - # read it until the end. - if environ.get("wsgi.input_terminated"): - return stream - - # If the request doesn't specify a content length, returning the stream is - # potentially dangerous because it could be infinite, malicious or not. If - # safe_fallback is true, return an empty stream instead for safety. - if content_length is None: - return BytesIO() if safe_fallback else stream - - # Otherwise limit the stream to the content length - return LimitedStream(stream, content_length) - - -def get_query_string(environ): - """Returns the `QUERY_STRING` from the WSGI environment. This also takes - care about the WSGI decoding dance on Python 3 environments as a - native string. The string returned will be restricted to ASCII - characters. - - .. versionadded:: 0.9 - - :param environ: the WSGI environment object to get the query string from. - """ - qs = wsgi_get_bytes(environ.get("QUERY_STRING", "")) - # QUERY_STRING really should be ascii safe but some browsers - # will send us some unicode stuff (I am looking at you IE). - # In that case we want to urllib quote it badly. - return try_coerce_native(url_quote(qs, safe=":&%=+$!*'(),")) - - -def get_path_info(environ, charset="utf-8", errors="replace"): - """Returns the `PATH_INFO` from the WSGI environment and properly - decodes it. This also takes care about the WSGI decoding dance - on Python 3 environments. if the `charset` is set to `None` a - bytestring is returned. - - .. versionadded:: 0.9 - - :param environ: the WSGI environment object to get the path from. - :param charset: the charset for the path info, or `None` if no - decoding should be performed. - :param errors: the decoding error handling. - """ - path = wsgi_get_bytes(environ.get("PATH_INFO", "")) - return to_unicode(path, charset, errors, allow_none_charset=True) - - -def get_script_name(environ, charset="utf-8", errors="replace"): - """Returns the `SCRIPT_NAME` from the WSGI environment and properly - decodes it. This also takes care about the WSGI decoding dance - on Python 3 environments. if the `charset` is set to `None` a - bytestring is returned. - - .. versionadded:: 0.9 - - :param environ: the WSGI environment object to get the path from. - :param charset: the charset for the path, or `None` if no - decoding should be performed. - :param errors: the decoding error handling. - """ - path = wsgi_get_bytes(environ.get("SCRIPT_NAME", "")) - return to_unicode(path, charset, errors, allow_none_charset=True) - - -def pop_path_info(environ, charset="utf-8", errors="replace"): - """Removes and returns the next segment of `PATH_INFO`, pushing it onto - `SCRIPT_NAME`. Returns `None` if there is nothing left on `PATH_INFO`. - - If the `charset` is set to `None` a bytestring is returned. - - If there are empty segments (``'/foo//bar``) these are ignored but - properly pushed to the `SCRIPT_NAME`: - - >>> env = {'SCRIPT_NAME': '/foo', 'PATH_INFO': '/a/b'} - >>> pop_path_info(env) - 'a' - >>> env['SCRIPT_NAME'] - '/foo/a' - >>> pop_path_info(env) - 'b' - >>> env['SCRIPT_NAME'] - '/foo/a/b' - - .. versionadded:: 0.5 - - .. versionchanged:: 0.9 - The path is now decoded and a charset and encoding - parameter can be provided. - - :param environ: the WSGI environment that is modified. - """ - path = environ.get("PATH_INFO") - if not path: - return None - - script_name = environ.get("SCRIPT_NAME", "") - - # shift multiple leading slashes over - old_path = path - path = path.lstrip("/") - if path != old_path: - script_name += "/" * (len(old_path) - len(path)) - - if "/" not in path: - environ["PATH_INFO"] = "" - environ["SCRIPT_NAME"] = script_name + path - rv = wsgi_get_bytes(path) - else: - segment, path = path.split("/", 1) - environ["PATH_INFO"] = "/" + path - environ["SCRIPT_NAME"] = script_name + segment - rv = wsgi_get_bytes(segment) - - return to_unicode(rv, charset, errors, allow_none_charset=True) - - -def peek_path_info(environ, charset="utf-8", errors="replace"): - """Returns the next segment on the `PATH_INFO` or `None` if there - is none. Works like :func:`pop_path_info` without modifying the - environment: - - >>> env = {'SCRIPT_NAME': '/foo', 'PATH_INFO': '/a/b'} - >>> peek_path_info(env) - 'a' - >>> peek_path_info(env) - 'a' - - If the `charset` is set to `None` a bytestring is returned. - - .. versionadded:: 0.5 - - .. versionchanged:: 0.9 - The path is now decoded and a charset and encoding - parameter can be provided. - - :param environ: the WSGI environment that is checked. - """ - segments = environ.get("PATH_INFO", "").lstrip("/").split("/", 1) - if segments: - return to_unicode( - wsgi_get_bytes(segments[0]), charset, errors, allow_none_charset=True - ) - - -def extract_path_info( - environ_or_baseurl, - path_or_url, - charset="utf-8", - errors="werkzeug.url_quote", - collapse_http_schemes=True, -): - """Extracts the path info from the given URL (or WSGI environment) and - path. The path info returned is a unicode string, not a bytestring - suitable for a WSGI environment. The URLs might also be IRIs. - - If the path info could not be determined, `None` is returned. - - Some examples: - - >>> extract_path_info('http://example.com/app', '/app/hello') - u'/hello' - >>> extract_path_info('http://example.com/app', - ... 'https://example.com/app/hello') - u'/hello' - >>> extract_path_info('http://example.com/app', - ... 'https://example.com/app/hello', - ... collapse_http_schemes=False) is None - True - - Instead of providing a base URL you can also pass a WSGI environment. - - :param environ_or_baseurl: a WSGI environment dict, a base URL or - base IRI. This is the root of the - application. - :param path_or_url: an absolute path from the server root, a - relative path (in which case it's the path info) - or a full URL. Also accepts IRIs and unicode - parameters. - :param charset: the charset for byte data in URLs - :param errors: the error handling on decode - :param collapse_http_schemes: if set to `False` the algorithm does - not assume that http and https on the - same server point to the same - resource. - - .. versionchanged:: 0.15 - The ``errors`` parameter defaults to leaving invalid bytes - quoted instead of replacing them. - - .. versionadded:: 0.6 - """ - - def _normalize_netloc(scheme, netloc): - parts = netloc.split(u"@", 1)[-1].split(u":", 1) - if len(parts) == 2: - netloc, port = parts - if (scheme == u"http" and port == u"80") or ( - scheme == u"https" and port == u"443" - ): - port = None - else: - netloc = parts[0] - port = None - if port is not None: - netloc += u":" + port - return netloc - - # make sure whatever we are working on is a IRI and parse it - path = uri_to_iri(path_or_url, charset, errors) - if isinstance(environ_or_baseurl, dict): - environ_or_baseurl = get_current_url(environ_or_baseurl, root_only=True) - base_iri = uri_to_iri(environ_or_baseurl, charset, errors) - base_scheme, base_netloc, base_path = url_parse(base_iri)[:3] - cur_scheme, cur_netloc, cur_path, = url_parse(url_join(base_iri, path))[:3] - - # normalize the network location - base_netloc = _normalize_netloc(base_scheme, base_netloc) - cur_netloc = _normalize_netloc(cur_scheme, cur_netloc) - - # is that IRI even on a known HTTP scheme? - if collapse_http_schemes: - for scheme in base_scheme, cur_scheme: - if scheme not in (u"http", u"https"): - return None - else: - if not (base_scheme in (u"http", u"https") and base_scheme == cur_scheme): - return None - - # are the netlocs compatible? - if base_netloc != cur_netloc: - return None - - # are we below the application path? - base_path = base_path.rstrip(u"/") - if not cur_path.startswith(base_path): - return None - - return u"/" + cur_path[len(base_path) :].lstrip(u"/") - - -@implements_iterator -class ClosingIterator(object): - """The WSGI specification requires that all middlewares and gateways - respect the `close` callback of the iterable returned by the application. - Because it is useful to add another close action to a returned iterable - and adding a custom iterable is a boring task this class can be used for - that:: - - return ClosingIterator(app(environ, start_response), [cleanup_session, - cleanup_locals]) - - If there is just one close function it can be passed instead of the list. - - A closing iterator is not needed if the application uses response objects - and finishes the processing if the response is started:: - - try: - return response(environ, start_response) - finally: - cleanup_session() - cleanup_locals() - """ - - def __init__(self, iterable, callbacks=None): - iterator = iter(iterable) - self._next = partial(next, iterator) - if callbacks is None: - callbacks = [] - elif callable(callbacks): - callbacks = [callbacks] - else: - callbacks = list(callbacks) - iterable_close = getattr(iterable, "close", None) - if iterable_close: - callbacks.insert(0, iterable_close) - self._callbacks = callbacks - - def __iter__(self): - return self - - def __next__(self): - return self._next() - - def close(self): - for callback in self._callbacks: - callback() - - -def wrap_file(environ, file, buffer_size=8192): - """Wraps a file. This uses the WSGI server's file wrapper if available - or otherwise the generic :class:`FileWrapper`. - - .. versionadded:: 0.5 - - If the file wrapper from the WSGI server is used it's important to not - iterate over it from inside the application but to pass it through - unchanged. If you want to pass out a file wrapper inside a response - object you have to set :attr:`~BaseResponse.direct_passthrough` to `True`. - - More information about file wrappers are available in :pep:`333`. - - :param file: a :class:`file`-like object with a :meth:`~file.read` method. - :param buffer_size: number of bytes for one iteration. - """ - return environ.get("wsgi.file_wrapper", FileWrapper)(file, buffer_size) - - -@implements_iterator -class FileWrapper(object): - """This class can be used to convert a :class:`file`-like object into - an iterable. It yields `buffer_size` blocks until the file is fully - read. - - You should not use this class directly but rather use the - :func:`wrap_file` function that uses the WSGI server's file wrapper - support if it's available. - - .. versionadded:: 0.5 - - If you're using this object together with a :class:`BaseResponse` you have - to use the `direct_passthrough` mode. - - :param file: a :class:`file`-like object with a :meth:`~file.read` method. - :param buffer_size: number of bytes for one iteration. - """ - - def __init__(self, file, buffer_size=8192): - self.file = file - self.buffer_size = buffer_size - - def close(self): - if hasattr(self.file, "close"): - self.file.close() - - def seekable(self): - if hasattr(self.file, "seekable"): - return self.file.seekable() - if hasattr(self.file, "seek"): - return True - return False - - def seek(self, *args): - if hasattr(self.file, "seek"): - self.file.seek(*args) - - def tell(self): - if hasattr(self.file, "tell"): - return self.file.tell() - return None - - def __iter__(self): - return self - - def __next__(self): - data = self.file.read(self.buffer_size) - if data: - return data - raise StopIteration() - - -@implements_iterator -class _RangeWrapper(object): - # private for now, but should we make it public in the future ? - - """This class can be used to convert an iterable object into - an iterable that will only yield a piece of the underlying content. - It yields blocks until the underlying stream range is fully read. - The yielded blocks will have a size that can't exceed the original - iterator defined block size, but that can be smaller. - - If you're using this object together with a :class:`BaseResponse` you have - to use the `direct_passthrough` mode. - - :param iterable: an iterable object with a :meth:`__next__` method. - :param start_byte: byte from which read will start. - :param byte_range: how many bytes to read. - """ - - def __init__(self, iterable, start_byte=0, byte_range=None): - self.iterable = iter(iterable) - self.byte_range = byte_range - self.start_byte = start_byte - self.end_byte = None - if byte_range is not None: - self.end_byte = self.start_byte + self.byte_range - self.read_length = 0 - self.seekable = hasattr(iterable, "seekable") and iterable.seekable() - self.end_reached = False - - def __iter__(self): - return self - - def _next_chunk(self): - try: - chunk = next(self.iterable) - self.read_length += len(chunk) - return chunk - except StopIteration: - self.end_reached = True - raise - - def _first_iteration(self): - chunk = None - if self.seekable: - self.iterable.seek(self.start_byte) - self.read_length = self.iterable.tell() - contextual_read_length = self.read_length - else: - while self.read_length <= self.start_byte: - chunk = self._next_chunk() - if chunk is not None: - chunk = chunk[self.start_byte - self.read_length :] - contextual_read_length = self.start_byte - return chunk, contextual_read_length - - def _next(self): - if self.end_reached: - raise StopIteration() - chunk = None - contextual_read_length = self.read_length - if self.read_length == 0: - chunk, contextual_read_length = self._first_iteration() - if chunk is None: - chunk = self._next_chunk() - if self.end_byte is not None and self.read_length >= self.end_byte: - self.end_reached = True - return chunk[: self.end_byte - contextual_read_length] - return chunk - - def __next__(self): - chunk = self._next() - if chunk: - return chunk - self.end_reached = True - raise StopIteration() - - def close(self): - if hasattr(self.iterable, "close"): - self.iterable.close() - - -def _make_chunk_iter(stream, limit, buffer_size): - """Helper for the line and chunk iter functions.""" - if isinstance(stream, (bytes, bytearray, text_type)): - raise TypeError( - "Passed a string or byte object instead of true iterator or stream." - ) - if not hasattr(stream, "read"): - for item in stream: - if item: - yield item - return - if not isinstance(stream, LimitedStream) and limit is not None: - stream = LimitedStream(stream, limit) - _read = stream.read - while 1: - item = _read(buffer_size) - if not item: - break - yield item - - -def make_line_iter(stream, limit=None, buffer_size=10 * 1024, cap_at_buffer=False): - """Safely iterates line-based over an input stream. If the input stream - is not a :class:`LimitedStream` the `limit` parameter is mandatory. - - This uses the stream's :meth:`~file.read` method internally as opposite - to the :meth:`~file.readline` method that is unsafe and can only be used - in violation of the WSGI specification. The same problem applies to the - `__iter__` function of the input stream which calls :meth:`~file.readline` - without arguments. - - If you need line-by-line processing it's strongly recommended to iterate - over the input stream using this helper function. - - .. versionchanged:: 0.8 - This function now ensures that the limit was reached. - - .. versionadded:: 0.9 - added support for iterators as input stream. - - .. versionadded:: 0.11.10 - added support for the `cap_at_buffer` parameter. - - :param stream: the stream or iterate to iterate over. - :param limit: the limit in bytes for the stream. (Usually - content length. Not necessary if the `stream` - is a :class:`LimitedStream`. - :param buffer_size: The optional buffer size. - :param cap_at_buffer: if this is set chunks are split if they are longer - than the buffer size. Internally this is implemented - that the buffer size might be exhausted by a factor - of two however. - """ - _iter = _make_chunk_iter(stream, limit, buffer_size) - - first_item = next(_iter, "") - if not first_item: - return - - s = make_literal_wrapper(first_item) - empty = s("") - cr = s("\r") - lf = s("\n") - crlf = s("\r\n") - - _iter = chain((first_item,), _iter) - - def _iter_basic_lines(): - _join = empty.join - buffer = [] - while 1: - new_data = next(_iter, "") - if not new_data: - break - new_buf = [] - buf_size = 0 - for item in chain(buffer, new_data.splitlines(True)): - new_buf.append(item) - buf_size += len(item) - if item and item[-1:] in crlf: - yield _join(new_buf) - new_buf = [] - elif cap_at_buffer and buf_size >= buffer_size: - rv = _join(new_buf) - while len(rv) >= buffer_size: - yield rv[:buffer_size] - rv = rv[buffer_size:] - new_buf = [rv] - buffer = new_buf - if buffer: - yield _join(buffer) - - # This hackery is necessary to merge 'foo\r' and '\n' into one item - # of 'foo\r\n' if we were unlucky and we hit a chunk boundary. - previous = empty - for item in _iter_basic_lines(): - if item == lf and previous[-1:] == cr: - previous += item - item = empty - if previous: - yield previous - previous = item - if previous: - yield previous - - -def make_chunk_iter( - stream, separator, limit=None, buffer_size=10 * 1024, cap_at_buffer=False -): - """Works like :func:`make_line_iter` but accepts a separator - which divides chunks. If you want newline based processing - you should use :func:`make_line_iter` instead as it - supports arbitrary newline markers. - - .. versionadded:: 0.8 - - .. versionadded:: 0.9 - added support for iterators as input stream. - - .. versionadded:: 0.11.10 - added support for the `cap_at_buffer` parameter. - - :param stream: the stream or iterate to iterate over. - :param separator: the separator that divides chunks. - :param limit: the limit in bytes for the stream. (Usually - content length. Not necessary if the `stream` - is otherwise already limited). - :param buffer_size: The optional buffer size. - :param cap_at_buffer: if this is set chunks are split if they are longer - than the buffer size. Internally this is implemented - that the buffer size might be exhausted by a factor - of two however. - """ - _iter = _make_chunk_iter(stream, limit, buffer_size) - - first_item = next(_iter, "") - if not first_item: - return - - _iter = chain((first_item,), _iter) - if isinstance(first_item, text_type): - separator = to_unicode(separator) - _split = re.compile(r"(%s)" % re.escape(separator)).split - _join = u"".join - else: - separator = to_bytes(separator) - _split = re.compile(b"(" + re.escape(separator) + b")").split - _join = b"".join - - buffer = [] - while 1: - new_data = next(_iter, "") - if not new_data: - break - chunks = _split(new_data) - new_buf = [] - buf_size = 0 - for item in chain(buffer, chunks): - if item == separator: - yield _join(new_buf) - new_buf = [] - buf_size = 0 - else: - buf_size += len(item) - new_buf.append(item) - - if cap_at_buffer and buf_size >= buffer_size: - rv = _join(new_buf) - while len(rv) >= buffer_size: - yield rv[:buffer_size] - rv = rv[buffer_size:] - new_buf = [rv] - buf_size = len(rv) - - buffer = new_buf - if buffer: - yield _join(buffer) - - -@implements_iterator -class LimitedStream(io.IOBase): - """Wraps a stream so that it doesn't read more than n bytes. If the - stream is exhausted and the caller tries to get more bytes from it - :func:`on_exhausted` is called which by default returns an empty - string. The return value of that function is forwarded - to the reader function. So if it returns an empty string - :meth:`read` will return an empty string as well. - - The limit however must never be higher than what the stream can - output. Otherwise :meth:`readlines` will try to read past the - limit. - - .. admonition:: Note on WSGI compliance - - calls to :meth:`readline` and :meth:`readlines` are not - WSGI compliant because it passes a size argument to the - readline methods. Unfortunately the WSGI PEP is not safely - implementable without a size argument to :meth:`readline` - because there is no EOF marker in the stream. As a result - of that the use of :meth:`readline` is discouraged. - - For the same reason iterating over the :class:`LimitedStream` - is not portable. It internally calls :meth:`readline`. - - We strongly suggest using :meth:`read` only or using the - :func:`make_line_iter` which safely iterates line-based - over a WSGI input stream. - - :param stream: the stream to wrap. - :param limit: the limit for the stream, must not be longer than - what the string can provide if the stream does not - end with `EOF` (like `wsgi.input`) - """ - - def __init__(self, stream, limit): - self._read = stream.read - self._readline = stream.readline - self._pos = 0 - self.limit = limit - - def __iter__(self): - return self - - @property - def is_exhausted(self): - """If the stream is exhausted this attribute is `True`.""" - return self._pos >= self.limit - - def on_exhausted(self): - """This is called when the stream tries to read past the limit. - The return value of this function is returned from the reading - function. - """ - # Read null bytes from the stream so that we get the - # correct end of stream marker. - return self._read(0) - - def on_disconnect(self): - """What should happen if a disconnect is detected? The return - value of this function is returned from read functions in case - the client went away. By default a - :exc:`~werkzeug.exceptions.ClientDisconnected` exception is raised. - """ - from .exceptions import ClientDisconnected - - raise ClientDisconnected() - - def exhaust(self, chunk_size=1024 * 64): - """Exhaust the stream. This consumes all the data left until the - limit is reached. - - :param chunk_size: the size for a chunk. It will read the chunk - until the stream is exhausted and throw away - the results. - """ - to_read = self.limit - self._pos - chunk = chunk_size - while to_read > 0: - chunk = min(to_read, chunk) - self.read(chunk) - to_read -= chunk - - def read(self, size=None): - """Read `size` bytes or if size is not provided everything is read. - - :param size: the number of bytes read. - """ - if self._pos >= self.limit: - return self.on_exhausted() - if size is None or size == -1: # -1 is for consistence with file - size = self.limit - to_read = min(self.limit - self._pos, size) - try: - read = self._read(to_read) - except (IOError, ValueError): - return self.on_disconnect() - if to_read and len(read) != to_read: - return self.on_disconnect() - self._pos += len(read) - return read - - def readline(self, size=None): - """Reads one line from the stream.""" - if self._pos >= self.limit: - return self.on_exhausted() - if size is None: - size = self.limit - self._pos - else: - size = min(size, self.limit - self._pos) - try: - line = self._readline(size) - except (ValueError, IOError): - return self.on_disconnect() - if size and not line: - return self.on_disconnect() - self._pos += len(line) - return line - - def readlines(self, size=None): - """Reads a file into a list of strings. It calls :meth:`readline` - until the file is read to the end. It does support the optional - `size` argument if the underlaying stream supports it for - `readline`. - """ - last_pos = self._pos - result = [] - if size is not None: - end = min(self.limit, last_pos + size) - else: - end = self.limit - while 1: - if size is not None: - size -= last_pos - self._pos - if self._pos >= end: - break - result.append(self.readline(size)) - if size is not None: - last_pos = self._pos - return result - - def tell(self): - """Returns the position of the stream. - - .. versionadded:: 0.9 - """ - return self._pos - - def __next__(self): - line = self.readline() - if not line: - raise StopIteration() - return line - - def readable(self): - return True - - -# DEPRECATED -from .middleware.dispatcher import DispatcherMiddleware as _DispatcherMiddleware -from .middleware.http_proxy import ProxyMiddleware as _ProxyMiddleware -from .middleware.shared_data import SharedDataMiddleware as _SharedDataMiddleware - - -class ProxyMiddleware(_ProxyMiddleware): - """ - .. deprecated:: 0.15 - ``werkzeug.wsgi.ProxyMiddleware`` has moved to - :mod:`werkzeug.middleware.http_proxy`. This import will be - removed in 1.0. - """ - - def __init__(self, *args, **kwargs): - warnings.warn( - "'werkzeug.wsgi.ProxyMiddleware' has moved to 'werkzeug" - ".middleware.http_proxy.ProxyMiddleware'. This import is" - " deprecated as of version 0.15 and will be removed in" - " version 1.0.", - DeprecationWarning, - stacklevel=2, - ) - super(ProxyMiddleware, self).__init__(*args, **kwargs) - - -class SharedDataMiddleware(_SharedDataMiddleware): - """ - .. deprecated:: 0.15 - ``werkzeug.wsgi.SharedDataMiddleware`` has moved to - :mod:`werkzeug.middleware.shared_data`. This import will be - removed in 1.0. - """ - - def __init__(self, *args, **kwargs): - warnings.warn( - "'werkzeug.wsgi.SharedDataMiddleware' has moved to" - " 'werkzeug.middleware.shared_data.SharedDataMiddleware'." - " This import is deprecated as of version 0.15 and will be" - " removed in version 1.0.", - DeprecationWarning, - stacklevel=2, - ) - super(SharedDataMiddleware, self).__init__(*args, **kwargs) - - -class DispatcherMiddleware(_DispatcherMiddleware): - """ - .. deprecated:: 0.15 - ``werkzeug.wsgi.DispatcherMiddleware`` has moved to - :mod:`werkzeug.middleware.dispatcher`. This import will be - removed in 1.0. - """ - - def __init__(self, *args, **kwargs): - warnings.warn( - "'werkzeug.wsgi.DispatcherMiddleware' has moved to" - " 'werkzeug.middleware.dispatcher.DispatcherMiddleware'." - " This import is deprecated as of version 0.15 and will be" - " removed in version 1.0.", - DeprecationWarning, - stacklevel=2, - ) - super(DispatcherMiddleware, self).__init__(*args, **kwargs) diff --git a/python/winsound.pyd b/python/winsound.pyd deleted file mode 100644 index 651f097a2f2789971f2ba9db3f32106d30d10942..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24728 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 b-CU9=N)7M(DbqGQDEyf&Y?ifEe$f8`z!d5h diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..3c03957 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,6 @@ +Flask>=1.0.3 +gevent>=1.2.2 +Brotli>=1.0.7 +PySocks>=1.6.8 +urllib3>=1.24.1 +defusedxml>=0.5.0

#MB{TxY&34| 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≠4uZBK}>(zl->H5&tgY-$neph<_LH?;`$P#J`L9 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 @O!+nBAK=YxzPvDm61zj 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󢩘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 W&Pt-D$_nRve|TZXqY2LfPW=y0cL3%9 diff --git a/python/_ctypes.pyd b/python/_ctypes.pyd deleted file mode 100644 index 059069c09ef9c099c9dccf2759b2dcbdf3c9f15e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102552 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 v7g&^M@%X z%Ni6bJr!%|D*-<#zHQCu}n@nTWDc${LtDE5z2yj&D7Pg+dW z-@clJyvrqf;TojRMl8g7tRbrr^3Nfwa`bn| zS%GI_ZLH!A^;E8+{un2FDmmC98}oW9VWm@)SHTFBa1T5%9;E(2MoxabH60{TQH3SK ze=IhC_{|^7<&OtfF}@`TV}2m=sC_@qkw~e-kHd=~assn)gfvdl;`@$8Di~rktacSM zcBDW**^Vb2B!`IB!jG?2f-~8|HAE<^HrC=LKQeD_Tw4?Ubsq6BPx$fKy!On){g~Ij&IzYlDIK41q>Yd#jTxiL2Jt-FA?*|>0x#) z+s{r1`1#H_91`2o^akXcSd4CvG*0_)Ch(YD8g{*Q9@G~i>0Tj{CfSce`=kCDE2`)q zL@sPNVZP<$en=@+Ga#U#2qgHJHVn)lqr(i%gMw+PXh~?f<(8FOR94nnYpq*WR+N@hR#vuI*)Ek^ zQ@X{LrL}JS-k)>tow*>E?f$;s|Lgzy?Z7$r-gD36=X{>d=RDlx4b!o!czOix)a7-j zkUc4jEPJdIAGW3(NwDRBwlFtfBk4}O5$iQ)>82&)^CIzJfYY${JS86Xl4~S zxGGFqdk;(qO&75s?7*2&vnG*ILpz2UU5(_nB#^z%vB z{CLkXpkQ6D2x8GbbXpS1v;#Jl=$SUO>|NN!e_Gr#eC|llS1May+*inKJS~Oo;$cq} zbO6*|Nbmk^rVtuUJL)vMt`U{Ohq_N3s#}LU5_~wEcsEX&*-0;Gb08yY;Pc3q1syoa z_e#tABLV@b#+1qhJE43PUO!a4J?!_06sYfX@1k1 zKfiSd$r_-?aD1;(cmTiNm(Qd{Yd*2h0qjeT39UD-Bs_Q>JKyO&q%yEo^A=oN zuTiwDIM%YF6C$Yfn)H?x5%zI|FpemR5c;&PIJ}Ea%&Kk4SGAUA#*=Wcf<=s7l7QV> z!#5;sAjS=zB{FWz#!u7GnDPUJx8kes`!*yn-VU|#^2oGNERd-O*PP2_#1aj7eB>{w zOdzx_$vj$%BC&~r4!a^ukCwh+N?i1$99Fd+)p+&{)u=!?1~u$0)!>zptRVIG%_|b| zt%l|m9b9Pg`74wfeUhcfyu9JisV`-UlT8?Gf`i42PRQw9TDrp<4@dOkO7 z&C9g$lNzpm1!AaW`hIlKjo)IHb3^i<0ATDuJOI)M1stR&aj&5CwF>b(AttVdt$7w> zQaUV1IGO2Sd0jdx2}UH7Dt90XPBDo*brPkXY+12`#1?(>uyvYd!|W`a8`d%+@x+ul zr2d5lu9`N7KGw3TjA0^j+AYvb^T~JtiH1EnMb+H?&*qZ@hh6^|V&d?`f{&S!YQaU= zEjaXRoEU>GSX1cB>1$dMOV}9rJq`+qg$EJNP7b>!37^BFJ(L~S7zHxhi&n@s1%bm1 zTe}e-XY9pgL`eWJPCr6@JZ#NL0F3&1*xF}s*Lv-IAUqDiNPM390QWeTNZ3eC`cC0a z5YBzA2R2NNyP@AC^wkfSy@fs1O>yY|xIFg!=7ve}@h^xdAKiTYKB%QTyt6xetnL_U zIy>@+5_Oxt18N_r75TPa?!sttSZi_B?DEJ)4HL*m2erP35zHrQP*iwlOa6Spx(7W- zF!Ch|$dQ8AfJ%3Gck9e9oacb!lhC`JaP-~n?d3R!24C6URUR4i67?qzQlj~{!ed8E zN2T#!;EB+6i4A;E|1na>M*sX&-*6u^$@$IR3B(?_}YW7KXgjNrB~LI~3Y>5R`0 z9PAG71#6AU^I>bgB8d0iJbfD9hg#EIcpxDcXb+S(?;Ey0m55;aexch&l0rk|c}Z(< z{?o?+Q*0L8rNSQYD4ft?0)Xf-!gT`b-+` z5@twTJqzls#bk-EMX^GR`yQMG^aVRT8S}{uC-x4ZHnrr>iCl?Oh(z4S*!bi}sc9W> zSiwMl>=<~mPr$Y`J>{~GTlX>(Ev$w3OwUZ5GnCvqsC7{D5B);@@jm|J%Mfiu^NNue zn<6lr|IwkN_U0er!UJ(45za+YQy|^HKk6vHxf~xJg!_+19UXm?!xtsk8$98g%Vdh7 z6fKwI@GQX^&<%AMgq)GUd^$3yJA=+r@6JeJKAp_dok52Ib!X5qI^7v$Yv|4(GevjC zA?DM0X5ATNNbb%cD|2^774yr1gWVZ~iQO6WL4@v%0_Nv3-@<&J`B}`TuYPrB90oT- z&dfi+{Qb-)O`tnt2UvJ_25sm>9hg6c`Skfm)S3Co%ui%~0`pI?v?rN=ocUeMk1+oT z^U1E=ok88(ozcnaA7TD6<`epLXPjg{?LY+FSWGgr17gfiVg3l_k7WKB<|~+=&iqW~ zXEC3q7P~Vv%%@GA-5D0<=Q6*5`9;hxVSYLDE15rs`E-l|pv`<2^NCTRFPPuJ{1EdS znZKO*E1AEB`Rka!p7|S@zlr&qnZK3!+nB$d`8%1vi}~%$-^=_C=I>|zLFOM~{$b{K zGXDtkBg{X>{4VCx2dV&Dc7KZb9P5h&<|i^gnfWQqr>QF7B=g5GU%~uz=4UcLi}^hB z4a~PNKbQFh%r9boIrHZ*e?If8nD1hK9rH<6cV{#(Kg9e-<}YXdO6IR&{yOHbXZ}X! zZ({xy=C?6_8}oNCe<$;IF@HDn+nK)?zIh0J7VMjFzi;+@^Tm9~erEDYZjNvvb#o*x zq#*Ac@-P>Ydz6n{JrD;P^pDKM1$$z?3rD_2eu5DS2VOjcq;nxwaWL)|ok$kBa{$M!EBy42aqAX*-t0cbHCy+3F-sB} zxM*OcDG91ie|ko4T;u?vVoJmvnTEXTwtfTSxO))7&!K1u>GQe}P)Pw73IQQ>dtC#( z$hSjL>RhP#6CzbYCW<;Qy{)6SZ?d;SLC{Ay)rY8yc!+AG00C=09JaOu{5SFma>sDo z#$nPj@~F_1&~Wfp=z?Hpuk($LXQ<9%yaOZW&$r@QbV1iwUrPzt_28vM)_F_^y1JPwwX3$gMD zx!i|v%yZywJrW9cRY(O3Y5(T#_;8Vst3Q@&NGk+k!7$1{nvTQD@DaIgzOMOiP&)|; zlPS9|p!Q?1M`z%wzeg=a5aHy&mw^#9VTQ3|R{|i8Zyyjw<9of>;Vh<}hB)1SW?xZ3 zOnh=2$|i1_SKu2U{Ua#=U#z4*k)dL5G9fsk0Q~3i#Ixxn6AfkTD7nLN%S}= z3ir^<`*z|9U;Bhl_1@QiJ9|sCw@bWRlrU#;JGXD;Zafo-2+ysIf3%eJKZ)lTI`K&> z4*Z0k>y87;5jwS+Y$F7s#0aGm!7xSu!xKP40t4pS|F^+#1Yr1ejYlP0)=~R~w)Ky- zZPhV_(4NnLLH{4Mr}G!v13c!IBoU7eCp5d0p=&1(T`~|eN<~;{f=ljw)Y)RkN^K=( zfP+X1Pvz3VG=-tst_B&MW~Q_z-_QcXKaw3iEI@^5M(lAm@z~m-#*(s+$G+3S zdY*+fcaB}8n0r|VW>enjQ1>Sh#9rbViYdj6d;vyT9w`RLo6DxT@mcoPB1?S7uqX3I zY`A=6Jmwbj1}yH%jQ_^`XPoeYRRB|y14(rD$RvE|K9Jn}Vy5}e;V)sDgYEjoqdx!v zkvsT*f(q09Pfec(1BWpYMr_J-m9e~#|v9O)wt_VPQ<`t6jq$8;UqxD$E(|h`Vx6B%37)4UAj|=6iHxWE5*p z6MP7v5aksK;9*A`&U=cyiE`Go&xPdN6Zr_Ckd7?ITf+Uo$ZNPc`gcT*ynwsNZg_Y= zn<6iPDWTwzj7KqMHhlzRvDZR|bkoQ5aIEOa$dAPO=K`+3W${DFb^FnTNE|YnyC)LH zg-p*0xKe$n#dE)y4>64H&QbVt9~5yyH{ z{FFP^cJy!lDK5M`GD;}>Qt;kOg!02wEx-dg9i3fwh^kbLpc9AYrndjoezbsL%ZBjr z*}$0Rsm2U#Fm962hR&(Q>eIqg_uqg2^ORl)KoW%Qh(oAgf?U);k^}Cue^FxHNHt0c zkemQ!?-CFJjY>@mFSy5o%c@=Uz!0M3DFGqYjilE&3NaCLx-?^3etBdeWD_YAq4CX) z>D=;*L`kzF?kK+Sd8`%F0jmtiwtd(p2x8fp?5g&N8HKaXO9XBphhZxT#DmoBPZ3^S zFFp9#2CM|tVk;7aTL+WliIH|(=gt+OED>3M0uSg65#Q+`ljFe11VX*R0;JEO zG=M8?qz5j>=c%atXi@?kBT-5>V8IvP6Yk)Hy{tpt!vmoX5>O>tpalu}94ZpKc|^1O zIG}k__{PSp+0U1Lmix?e$fDc4FEnKB%b`Ih4%|m_;V90hJ`QnM0&xh-f|@!HCiQYW zD(R+DxDn2go^h12J&~Knf>Gfp&cp=ltcrY2gKK)~ho?Qe z_2vpKXL+yZ*OZ*=56KcKKb1UDh_R%l%$*Ld)7sxY-(HB4AV=bh{(7~;O9s}Mo1S|Vb92(tzQGaTruvdrp!m)xy1se)? z<2bg68|9%eJRw;YGWZ_0fbbjiETY}Et}E%wy$(E5d1QU{U9;8q!Gg7ux@jONCacpR*s zJHo2yf6J)QXzN9E8DSkqmmyXz_jXhY%e`Jqzz6|V-rt--P2%=c%zADebmC{oGk+T# zIlI*cRdf(G0~i1`e8KzW1oO9nFJWz=s2eFNc|D_&(Y!}gm?|*1kWC>AU%lwoA|h=h zNonz>r)+?`tP``sj2b}(`1%DtdO_!Tvy+&iWOP#}Ngu@c25V|#-?R|yKbLkGNP*i2V= zcu|~oirW_++%abnH}|xZ_~>lmp^Pqj_b_YwfH*F6v9)SIKQ1)J+CZ1{tmOmZxzJDq z;xZ6{@m%?dUBxbh(mhP6<=(DHIy8jQvL-8sYe!)**yB_;~aWiQnN{Lir|1@_v7r2J+0Utx)Q49CxE8S?!is#i#-bOnIGbRiTLWbDSAZAk7|-|SqGD$I8Z)=>w<{u_$Dy8^@X{cuu3c; z{hK}6WS(8i9sL|Vwhk>uRsZ`tO9&j+$8lf5{RB7E5XW5#XMrn$n*&!1w*+ovaU3@Q zF0}}8r^ImvTub1p;J$%74EG}3cDP&Nmc!8xs^vlP+(@{g z^o+demxa7<#`8|N8*#q|&IeZoR|NMW!c%bl3fF^h+u-QeC|nczy{>fo+{+XVM0+#7Izf%^t7$ri^c z;Bw$5!Oej4!mWne2=_4DZn#(BI^n*8OR&drW8iY&Cd18v^TMr$+YGl8?q#^caNocs z@7F;eIZ;InwxHiJAhr0vrQMmnZ^wG6ba3k{2UN{Tf47f#b%iz|-wZR<&OkTzH zFL2+$B~Aj2;4HZ9IgZIFK{Q}Mi!zza2B{yxJ7Ww;Womx!R>^5 z8Sc+;U2qoyE<@o?8soSK+(Ec@xVO>P7vUa-yA^IZoDXgmToIfO?n1aExRXf#8Qgxj zC*ZcgEr**Aw;g${hYP_~!xh2taAV;5!5sm<9e{fdZYN+m8EMMV7xW{6!fwvO8gg#_!EVEqxr}6df%_t z^QAW|`g_%5OG|GGJ{;1%K7YLS^ZS1vIES-3 z7z#LRLJp3bgm6c#$L)0m@x*Z+sAUV?0foDr{J0u_*z00IKvZ;4h$TEd$B-ZW)ZnLN z0aSqtHq}@Ay^8S}!SO70tsjs>xZQ5&q&`t(1X+Wfz8bf@w9pi_c=8%lcmeB_{zgFA#7xp%Z)yLv>Nu*sKaZi!}-T zg1U(~T;7yl5ekHBLX|*il!3ZB3A+`w{s046et|RORFqXO0y?4=Qo5NwAhwvsK?xku zlAH>9ruNIi>zqr_Zy|rcxsYI1>&N@@XdI5a1ouEZmISxaa!|i=p?8GBPOG2zHdaH9 zBcwxF0U`*(Q?K8*kn#jlj}IvXN{u0v5I-2DIC+oCIvVK%&ZXQEr#DP(6SJ2dL0_I4 zzbjg7w5w%=(Id0o)pH2l#drX#E0MYYQkT0HV>Y1acq!8OSnabEOY1x}v2G@04tj`S z(GGzWxJr;rUulU=F!+Fws7;K$oK`05L|KX8M-0DWDQl263@70R`i!BV&|`hzlz^a7 zoPvRuTN*$oiHNg|@~U?Ke0@X!MtK9$(C_Tpa2n9W+`wN%vQY}z{ag7ZIl&`+3%zbd zO&!P|Y&;;LBk@|N$48jyN1viR;xrIeBCSOEPB7fi;137_z##w@AaOAKke?mj9QM_ehXMk?dcZ4R zQHysZ;w2Hn_;f}i@Q}en;b(l4dLJw{91!HD%k6F;^fDo$quNpJ46lC&+XL5syWwhp?#5(BP?A z>=kquhl7+L0dLDP%Q8z#Cs6i~`xkQ=IVzqH=15Uwy%kfOM3Kc}QaTa$gAOJD{oxRk zl@eV9+^%p9qY8%u(j*93Cee&2?;K2?p^xXxAvq1D0W`D3~VhqRB!rB;FCnA3%%5e7PW0PETzU!zYA=y-=D^SMYm*^eHcS z9E1z{7sGY*O-3*`18^)~Hjf*Rt{Jb0YCnn$m#o@RMG3i!9ZY~_u^B&*#SMkQtYXC4 zI}Xz;2!KJTSrYRGvys=?vwU6|)t!F5)05T+eKN+!GC?hhE3!m^a77lA@Cz19P_T-y z{*UINU@xg{)U|S!%|#i5kLo2Us6wt;f?6D<;Xq7OL$@#E$}TC3rH@JkK@*MU>kqg* zMAKs7lAh`bE-zblG3X0zjrNaJyo5;vPEk9Ep+-#66bTu!O5j^jWEJ#pXbp^8n~0;! z;T)wKL1!e@hoN`?;PrqsDYAet<1;G8E9yN=QVDe7_W8pL>!L9joJ(hxlz??EByOMx z`=snS5LIvVl3LgRt%(W>Ld~mn5(bMJTCC4RfHh&1!{i)|AOv1T;8BE}i`}FQLTr1R z2)a_GgThE>Ayg~h1kT3>Mc{+=q9kLIMX}TasTK|?#)s-W7(uX7N&Dvt#qk`lEx&9! zNDNSv$N;si^#m}4k%~g!v9?ppXrvmF>>LFNqO)g#vnqvw9s!PJ9z_(PL9tO;tVMuh zCK@QVsPA+#0Q8Q|S!9(F$Bh{-6R|>+meD|J31`8RD667@GF@b{AX_<(ZkQk~kB!A# zAbn2_Sh&!MfD-VQjg=J{GmtmHC5&^y2#HJBsqN7B>z%$P;4HLYrx#;YVsTM75gn29S1?<`Je0$i%gjALn2IhKYl)%u(ZnhQT?)K0yma`B6H< zy+l(ESvw?r?Ts_}QSJcRkhOF2%+mbHC3#aEMKcO3W|mY^8>3+rl?C~EB_%z=@(T*{ z5fY6vv!c*ZIAcaBgk+DflDrDw!;CU8muPtT+{&V|(!BCwj#K6+bEp#?4j7bzAX<=z z1By3U039Sg=^dWQjv+pB4v0_;#~e;E2;d1yZyif}y+ryMl_dp^k}@}8im@onNtq#Y;siyuO_3i(?Ib4?CM1iZVZ^hU9>tVEj~ik_vOMMI z2$rQxnCZ~}P-xC3KMVk20cD0gv`eg)V7+1%t4x6%VIam#j#j>RrXoG|s3bKG*%BGE zv59C61FW1L68snD%2nx`S`CH_PP+vw=S zMaDU%exoDBsx#AfiQnle@l*$3d(MpZm|$N`N}`u!EOj@!Yr@PztjG)p!%%-9dlUsF zB@-~HK&coJhXVvpAt7;4Pbep;66&@XQV&BTROm3l9&f#VCa%G-ne8G9HnNv8ohPZ@ z?+Sa}Iaqrs{3iPY_0AAO=gccaY=yE7bQNeLDJj-7OFcfdN*J{O1~9gXog>7|Q4|Z- zVK%H0BQS}Z#59~NhTdY61jQX@3&A2lb)Vu6m4G&ds!Sm6Os$e?THO?I*Jj4Z<%$^I z3e{y1vIVS3njryB;WCH=?|EVGF*V8#8jn`7!-C!i?QJq@PZBf(Wz&MTq7EK z!X8YqM0p|V;)GO`m(5Cywtph=&T41P;$ThU1W~~Ta)6lZo!1{E175H9Qr{MM zy#ReaS?!}8EXZt*>+78?9n{a6J|dG+|5A$E<5`TSXlO#KQCAW63o&{PLC*spXGShb zKVZC1wEguJMr;kFDnX~l*?_)gV+!Q$Zme-P&>+mD5ETRvF=P%xn8c<2$bjYY=i-qV z>myz@s=AmlLj?@Rm{S8CvO%{jFOp?Mg=83raw$|xUY=-ICylyCxRXsuRMTV~4c=>D zHWkM7vixfSW2#%WP!E5DJ3vCt1=9m$5GEjd$Hn|DSq6!BF)jbJ_n4L;J3+5HvT~vz zX2lQ)`^cYWjuCrluQrB2BMN#qkQOH#PPAsS zavK5whZpLkFx^WQZPqM#89qN~7eEdR)(DLMYZ!yTG)K*NvNlYBRiIaxmjZi*73(xC zYVYvcKGN6p5!P^8m}q?<+Mxa-QMfeVY-m7h1fdOn3}sp(UH}53T9`W|nJuy;uE0-o zh>LyxrHVSZ*qaz5B(}koVzL8lh2b-e0mUJijGsh#4ONFLrY)>d!iLUw7rnYQ&Po1 z<7^(AseVW!=!mjGv}Bcpl1W*`Rt*TFXfo|mSrRvN@EvN;bCp1@U+;DVk~4uZ@9 zq2*&X6xqF~ICJ8FkwIG2Vuc_8A2OuY$(CS%!Z3;;Y?pupL;|qTvgp*9m`u?5dv*uf zMD>91W|bjp3XS3A&%F^vj(l<)lOvcouNbvbL=lHz$n;K`UW+gyUWcUrOV2efca1j| z*c&m*n;gZZ`7;V9BR=k7=n(Fs^u_F@IW>|3A=$KGRwtO!bSXCzP8ftsR{%Gr&I;ya zTB3w_A_}tWnPOQcQ)EUx)(p&z`D=q#;Gqc)Qy-oXdm=f|cf2fyyp#fQBt0pg#g*BT zCJI(rXhqd-^cV5#sGX2BcF{=41S0Cq;D#kEqyUj^9YGw;z{h6j8IKaCW&~{lh$@Lg zDd*m4!hNs$AUO40egdXVjjwk$GU^l;86b>!o0Pi%ayFMJP3M58(5kYiB>K5*#JI9* zi-V><0h1BqMg)sqE%~=Hsp!>al6#XXDrZpsG3Fx;NSMJuB6Du?5!Smg@lU~whK2Qkj^I+Jv@pB?^*X@69n}H< zVzVrT=@;{17OE@^)Cr6eph>Z8!GnP-01PcDk%2*& z>`}nBiK!P7a1&(J6Y_v8_Jo9~B5{Vu3pE=+CN!c#FqMFL$1w2@8nF{oLJ`804#kNk zr}}3EP59?Hnim0%iz_)03q*sVk%-!)_+m)}svC5BYbhPat$bd%cCl;ZN7WVdOe=Nm zaK|TNUG!*St*`Vh8Q~+~G<+PV8PoF}?OL)RaS`4XiSO8nVhI0tezfPP3*VohQfL!P zk358;qe13xVPmZ*s0hwU(p21H%iA#RNQZY{99uP?Z<_B|>JKcQubCg5U!FgS>;m(d zu}&hjoCa65kkwdR$k7kG-MA_Fl_j(dGc>X(GTm@;}PbeVPQJkhvkaL zdT_kS;rW_c*lg>h=lmI!>2vb)D3!No7%eU18hV5kvv{GNVJu!_kFatUZ+Xu!7H?&b zuu2wh4Z^7Ja#&p|S-g!1tI9%HfZD)uUFdICfA*XnY!reS9&ALv3h~mHEnDWQM)SBe zDk*-bCcQY1m9wr#*gRIwdU;r-5N{*G5~)4`q^%UQ~2SG%r+b>mm{{d&4Yab z)UVaTnpUm>YvBqip;V4{se?a!0!aw}1=lg@b-p~5{%r(2!Mn~K?- zu4I>@K9qjfv3)Ptd!UVlJ%F%7DCdwY-VTISA#9E;9tSSaiLhg`c(n)%AuLxG?+)z0 z=|EVbEbM87ZA4g+EbK7C4j`VupcZjWRS{}W`Hm5Um=?v z3ez5p|HgxxR*@zj>d+?00 zFAbf!2jk=;=qLKm@&rPdn9PIzRs#t`en~}f0q6I+#g}Czg?Te8rI=6mlTD>mkX0ps5W)86KvVOuI@2>dft<5^4R2BhR%6%5<@? z&V!rX-+^I!J}p3=fyr35tf0hG56jDs$iJ|$#sMc-<++(GE>o{&(KZCEmssYm(tMv&20P*0&)q}0AOJv@B!WmY9C>Eaj+s>9TG6L7gY$K4qcsB7bKEVIqX+g>LM`s|SSy4@EzsY`5xl6+ zX24VjUNEmmK7_#%_CF{>2U$e{#Bq0vq4}5x4sf&NsTr38SQs1MMDQlw6ou1oq!3m& zS1e_5uvl8N+(9*V*Mqnql(@$v_)x=VVGRVc%FmKPBrh1FmxrYK`UNTl?4%M!)R0C>XRe3v{<#giSeCIfl5s;uAA;wB(Wz+EUH z%$CeyGq?czQZ`2q=_lg=pV2#_fC_9b6)1p9BP^A4hbUWzokNBJd6@O}xj+>JJnjjC zUQDUto)t?(8w4@vbNQDB(f{0fSspPCIEx#JZ~@;L0&?Xsh%)vu897RA1s0S`E8OoD zOPcHkv**4+s$NqpA(O}r;c z1RG|gxFlA4c+bX>w+=^)clo!(i@}l_(edFp~J4n*n7=(+1l>zK0KA&O{ z>I-Y~-SrKjCUNC3=Zxh*@Id)yLY&`Jgm)j z*J19$iE%i`F*uG3nAck;M9hIe<^J-UBYUJd3A9=iS)|tTjIg4Wm-SUaXKMy zfk!)_;5TCTgn0OZjdr9iL{m|Y_$E4`n@(+~Rk&{Hm5^vG>H>L$!4xv$E|i`e*hvL; z&H}j$5Gvd)!dm|Trv7Q{hC)9R16@U{ zres-gzw18}`$Orl23M3HL$aU}_;eWA3eNa?IE~=*g$*T8BG{g$<^3zA+Dk#)iumH7 z_}~vr#>NcvNjWC>3D~&_mxtYfrgBXGlT^Si%6wr(88_ne+>2e@NLi@BVG+oE60;># zVl0>!B+*EB+`RahD6JqRwg?(3w*)mRa94*HVm-Z7lUGL@2 z0}$*RlZhs3*l`zqnKb`@8TQzy=L_iUNSL{qyi% zrdU$p&Lh~%+r+E<^$u5R+73r*T1rhSo4b>O>2OY z@|Uh{SN=kJF(Pj|J*|{S?`z{wd`31mH7!AWu?f$)_Skb9p4;)<7hEZcJbcH9(P*V*D_dB)lI$GY=Jr&TRVO>2kSg!|rgmY!GI zggoW_*FNyf@uhThJyW|CX<|J=kB5-ge@c&C=bwGMk0*{! zrqP`8=218z6VE&FOzleqPhW{=#VFyKPaU1M3D3Ey!t*i2pF{B#Liz)EUrF#4pZhAi zXvpZa0eFF>0Stzfcy_^2dC6i}2+wU|JcSsx9nZKu?ME_03gjU>=)R#k7AC!u_t!|^ z`_J*whC1K}`b$dN*Y#}rYonOQoVk7Hm9kK%=dal z&MuG6KI0{DDfpbDkkkK;Pk5F)`hSj&&!!cf{`X0uK%FFV%bFR ziZU_2xh_V3m3Zc^kJ)SXVl2_s7Nfr^yl=lZ_N;(ytQ_wpc+}xNf1mI^g!|2KDR&F+ z+i-sXt_t}}E$zhf4q16!c<#DGh+l9a>M{X(&F#W-(U{R`$#_e|gJh$H&%g=@9 z6r`8h+lc2j#Fw7e;ki>xPe9&;=PucE6!7BBF5nK07e~TT9_@G*U!8U#TN(ut>=L-4 z?7dVjJ=9%__OnoqQ#^D!9#-`cCPwdh0X;P$uLIj)KZEP}QugGL)fMqpKG-v^Vr$Q5 zS<2IHsU1>Vg!ZxR{cJ6GBI6Lk{)2ujBo>!4I+TU)rHMJV9X$Io#U!x{_~C!@YkTL{ zmyM+loZ=P0xg#}guZ*^7+d=v7k>7TVU1e~dgm4~Vop2UeIF=%CD_@4p+1E3^3*jky zVGo9DMEo{fQ(j65_)U;xRSM7xT;ZLb)RmeXD z*Dg3rXmk7%$n!}dekblzcBQ73AiM$B15XL@6}WOwr>0#+`Qy6dSvcfh^$fzFOHI2R z;hngaznGeK9QEPaQD@wjQ~vuA7fuf6WeDE^_~*XbGn~!^t^zDM^b2mIKiYFxjxa^9 z{-O;HE0G8PTF-puAiM!#UA@9FImfL8JPyDSJn_hWcKBTg%LR<&{Yx9S8qg0soV@-* zs?&XJ%fLGOf$T*h{6x%d)9=6p@XKvNn-1Zg!cOA4Lk#0U_Y~IGPoUBM?3Hj&oQv`% zC(w>SyV&r6pKwn#k>bR&d$||hEPwi+zo*R|Q{bk;VZxnp7UDDlx53SSfBz3bAf6)( z&IBpacrh1OlEa|cmAJ@$actjPLm%Np2kZI>C#-MlBOKp8<#x$(7H;D>3hy{W_#uRM zw&43CviFATuqR4JPPEUcP#{fNEbP0pH`aR<;<<0uaX1KW96QMbhp;ZRj>8(`Y{NJ@ zipA%0dNIdu9oOUzjO8 zFgb(uIZKq|*kNC_SRpY>IAu;K4OuA^7VJKxwd1w^v&>CBj-^9NY^DrjwQiI6j1W4b z5T&?XSi2=0>=BHl3ikvBbT^?Zp|p@U7#VSO&5L+fD=H6k$&uJ5SC!uGZ-d zy2nk7W@DLn=0YqJdsN9XG1@kk+yaQOGnPGG)cTj3+ao%GQLKao+hy4)qG&*@UeU99 z%PJJbF6+3f-6~$G)M)kDO07nhtx?x#vz^*ncQ(%(a9p=r?NZnBE95OZEeEw$sWwy_ zo!MHK5joUWyRr>#l`Gq+(r9>*T6MKCTcgn^v#XuPnrxTO z=+ZbfPMuqA`1u@^wK~17Mz6~@@NQ+cMx{1p8@1Kd*#@IT+l0t=_3r zWmnf$tI-O#AscPdW@`+!E-mj=YMn+|D=ZUxL)S8~M@I-cpujB5~D)LJg*g6Gi&UiPBdNYBjN9dhtYbvu@(-o_UV5 z0rlLLi9K?Z&}U*_73ibgE;lVI#NkE~g;}JKP@c#EV(2IFgkmHJ5qgKPa@9HxMX6Qe z*a?f)anmKtO(2!DiQGC)rv=LBG)j%8rlwZusvW2BI(-Yn*t)}_OT=xN*mwJ4;S3Uh zRIK&jsN3R6TbRXFa1Qu|+zi|mb7fp9o{Qm6#y$O>P5AmJ8l4Qlj>zxg2aJ@iq}S1p zbRt0`Vvo#A1Rsw>ejzTvc{m@p5V?6cFXu+iKCYIdGe(Xe5x&3_{nK#OxThM8MtDBr z)N>7-6Y-l+8z-KybP&ICJcqbCy!UYml;KByA#N#R1Q0`klKl7vhL3Y0B!p5a9{qBm z8R4r=Vm%5FH^|kn`Ze^3*E4^r2jz?JngIf_^s^8aKn}6|)m#qNo{^(9XoC@#+8Sc< ze5i|8){35G6mTW@qaPo49nzH`%|e!fN^d}W35pBRW-M=Gkm(twz~>efoQgqG$z`)U zCF-E~w_ufnbf=dqFM~&nNvLBP>gGlpa{x!`t)EM&#F{@N))xx3<2fZOr4(3Kd=}}b zRZEc z&V*}-4hRzt^o-vd6XbYMfHe408R`*;)+$B;9GA|hrxI@o&x5FYPn^X_j>xOWZvb`{ z5SC@*ip?AU{r$fV0Vw*palkX4=YQY_Du*a5lvgMlm8+Gl%Ey)ODf_F2s1&L^RgtP% zwOqAQwMMm0wO+MRm8iZzy;S{2b+RT$qt)D_`J;x@rfVKH|YPO|A+oZ{V>C&2CX5_FxgOQa2Q+$uVJ0x zM#HU!ZbO1G*;sC@F?x;7#&yPx#ygD98ecTNYCLE>$8?eD5>t+;%rwX3F$GNPO}{bS zZrW`+Wct|jndvK2ym^>;gn5j)%-mq!Xl^s_H@{;(Z2r{zr8&cLsYPX(X1Uxl*RsL# zN6X(W$<}o1Tx*rJ&H9}6CF>BI)@HHg*@|s0+alY|wr6Z_+TOK&ZaZlkX1~Bb*3R2? z_Qm$A?XC7L_8sF96STm7|mjNV9nsxH-cs(-0Askf^iQ$MBt zv-(5zr|KWnBQ&El7eSHSq5m+8%Vw|*I5{)ql@{nPpv^>6Dr!wAD@!$iY$!wkbb!zROhhNldB z46hmfWw03M7^{qK<5J@_#x2G_8DBGY8vkWXFzHNYQ@+V%3YuC>x0voUy>3c2XPSAl z);z^rYWAAfn(s94Fu!g-XdYl0Y#DCRSn@6NEG~=J@}T80%TtyvOQvm%03 ztsT~PtY27vwDz}6u<^D^ThO-AcAM=r+X34l+i{!4UTU9hUto9J{r0W)ckLe%oFUxl zlcE*;KK{@A$NcB~Kll@Tl5&_*snjbsDW6lmq8hEk z2GtVPHL4A&TT~|XRP}@E7uBz*-%!7+KCJ#qJw%hIxlVJV<~B{6=26XV%_o}UnjbWA zT8-AAwPEr#0-cNv~Bv>U!K{KN2rL1DbqIMX=axY&5D zvDLWAc$e`}<1XO$OU5I{FOBD#^d_sR!Zg=ZXIcf!e%9nMFEw9de#*Sh{06X?v*cJR z0NJZ7O_oP2KUl_DP1Z{51lwlY%eIT`m)LUvJ&)aIUt+((evADM`-ArF_Q&n-*bfsN za|L=&iYq`&(ufNI*m@qbg$~()V-(6&}ZrI)IX_j*YDTArGHTw!pbU&cGWUHtaO)HoRbX#qa_6<{;xa#$w}s^V{HgpO}r7Rp4}+Ebmyp zu#B)yur^qiSg%3*PFWLdR@)@oR9o1#+V+6$pzVFz$F@X!rTw?Sn0xJS+7H=}QhTd# z1{COS1fR{9@NWJ({w970{{;UI|0(|sKT>&-Ql*@w3@JA%pH}Wc%m1bnXl|M6TGjQc z2Y@qOs*|d*>U4FMxPF~B>Bj1w)a}#l*B#WQ>$CMs^mpqY0AFj@f2vP3 ztOVBl#<0!smf=0aImYvi7aC2*1;*bScYwCuGad$Q#hWrrSDBWWt})$V+HZQx^uFnz zrh(?6=JU*#nDfm==5q5+^Rwn;%Q(w;%S2#|+Y$!s?zL7!Ea(8N8*1V=U0RH#6=9uOuO^Wt>ZK_rQ znXU&P%+nTY%d{2Rx!MKV25nfoOuJgUPP-nw@mBQEquM`$zF*M3qL=-^>Mz&N(q9Q#wn!fUr(LK2t^OYUgZe+{p8+ML z8m=-l0Rt95UkHGo{@(Z$w1x9b<4kH(0eI;W(>Bvnrgqal(+8$O<_pak<}C9J^8)kl z&3`v{n-eU_mUE#Q6j_=3V^x3k zF!g!rG__7WLp@JjrLI%^)FE}VdZYR_^%Lsn!B;+juFy|2NHbb?(}1N8Ns=11_Gb6C%2YITrq)1XPr*SfSzwby8G(>|!(4xZDY{SdvV(X~Os4c3p) z&(N;|jQ8pj3|ZjKzc)N?c+&8^p~LXH;a$Vu495(|p*Qq5US!OKl}ZJg%QqH5bDL|t z(pYQs8$-tB#831`)?_kGGEFyCLc^PHs)F88XY!gFOd(UFX}M{oX^m-}=^^vu=GV-J%>OW-Fi)~9 zu&lIPZ@C$?`iNzhymct(bRu|r33{&5I>$O6z2^e8daVbogKRlAy=|uL3Y*u~ zXuH<-JKMdshtZ3#*uJoRZR=+rXdi0NuxsrWQ0-Ftwf2YYFM%h1Ch)|Kf-b`GX3%dD zG`{Wp^ZYB2pr7(J$_C|1q3iIwegg(pJ}4WU@8UtYEAW!m@A=4++}*u z^o;2x@V-N)znc1)2b)9Cj^8zZ0PT2;g|uU}Wrby(Q^#g0Cb*Rk@X;KV`&V#%R+Sb_~vOQ{h(l*wf zX`gDZf-YBYUuD0}exv<<`y=)j0m+kgnh@}UHU{zvK9g7SI^M=R_&REr5usfTK&YFwJzHOboHpoOVgul6c!6UHr%1NZ-`9j?>r zP2e~#j8(iCt+eWI*53|jKMei(fc^r*g@z1+(x5Zg40l4OYc{q3>UTp|-e-K*_&4Ks z#vcLu^GxG`#f8vU=9#L2x9d!|nzn=gyadhpi0Pzh0LCYzJzLE)&2{D_=If!^9Wwvb ze8harJl>)OCz@qhXn7R4{JdqaWj}i0JZq*^XPs=l#riwzR>1x-j8{Iger@fxE`|(W zZd+w*vAqTTPirr-&$8Fr|7d>}(&iQWTlVirj_<%w1+X5%kLEAqS3=|a4Mr(h4Wd1Z(4P31vg?{~^%Xwo^Vr&W6~GC80+q`E*|uU@CVSN#wq_-<&= zC)L9sR}`A@ni7p$(+Ej^D`dz)&0jSUNb=**0?*SbC0spxXt`zZbm!Z@N>uq2Txr>vw|NwCg+c0}TrdVT=cFH9TPW&~U`?wc(^V zF3d0*jZ=)XjkkiMJZRi*+-W>voM0*fpIBnL*>n*`CK|KRoCnCRG2e=D$x`S%H$cC; z&Dv${utjVM_Vev3`wR9CjN#t5e@yUchpGekB=YIN!x{XAsto9EI*iXYs_NCP>P_kg zAXQ&gcdJKh(lt6wg=U`SCX5(%Y4&T5YED36rfM&S_ErRb>Vt$NxwuRF3flWE=r&b% zF-B!mAp0soyAMO!J*WFn_X$SC$@<~?RQ*`}c>Q$!QvGuM8fe3Uj`x-Rd;Ji@6hl46 z5X&$oz6YAk4#S(EbDhx)9vi|4ZJqH(z~Cw4UqSDKOy`(Jn-r!@liRciTFyG)8%eyk zP49u$zcQUN#hDY$Bh6QstIP|{P3D`-o6K9xe=xV3-!uQk{5eJyi5RzywitkWWtM7S zpWkwgrNy$vveoh|aPW1@CzfN-n16uIJQR@p0hpI;OR0~t zxox&>6UHN3Y;CrEwsSEa!9j4`L4f%%#%<>-$3SbGt6T_PxdmGDa~Ki751siNQ1nRk zSjeXz}^;Y#x%}bh-nriI^Xv5!Wb-HqlX_rH1xKsD7?nm7SeI~|R&9EeB3`W=x z?l5dM{1IcUeTEB-IT$r;F>WRA0Iu#l~EpX#LXaPGgYS?c&3|j$bPJ!m9FlU<| zHES(Ca6W45PRkz4N0xMJF{H*F)@QAIt*=-=wkFwz*)Fg-ZS}T$Y){#~xBbiZsGaM? zsX?$q58*H57eI>(K(=2Cn);CM-Q)4yRCE zqRLXKpv&1*1*)kSbInrChn=NP7I#h3{ z4nia7RDGs8ruqi@^-rnv*1{#R*gHC||vjhbtqW!#|I2>RcmxmU9dbg@(Ow5A<8<$lfEnnRkuXpTVp z=+b--p3qO5s2vKqM%v{i+AP>I3|bpBk*V5p?JVdb)!I5xP)Pf}Hc>YcT4OHL7yY`B zZWXK*~LN*Pr zF>G9BTnSBN6YyfEaj)@pXdMGg$)+uXKg;MUjMZnxcMi-Vq_wOhfl8|;ntjo?X#?GgJ4I}I|o zfnGR_(`k%e#?R!h;1_~#Kf~8T0^S4(_%g66Lv@)dh;hIwNWJaQ6F&wnOjDPuYt&b% z*F!HH3%#F*u790ogJutU<9+nR-(jm849RyPv)J*_11;J~;9RBJN{rd7w6&0j0c|5R z!Zq3(z`1V)=e}3F4SN1g?b8^KzKoIl+uB30iX6anMI77Pl?b=;sult}Itp zDyx((@QDyOMJMcL$3R8tpc)smLT*E@J5{?t1;Pqm9O^{3xjC;C(!70Gn63F=m zXu*w|^}xwav_69I4b}A&prC-AXAW?#3awp<)~D4S+_&C8xrh@EPLVdIPLMmCzkR`fd7y`cCL* zCow)9X;2u_4Vi`l*g3a=o9{Pt8Y0l2yI|`~gxzgEu+(K-58OP2(Q2phxN!`$-b28- zBfz<1rsL2XPMH$G#gk#*90?5~-E1&h%$4TNuySrSZ^MZHh&jbF0#=VP;NuocrDZwB zuWjIJ+c2IvVi{vCfd0G2y4`vNl5ixrb(?LgZM$uUZKrLwt=+cQwjVaQgSNxAPTLXN zFRp`5|ung?wQFCic)~6PIF06b- ztY_!w=j*GWACh($!dR5#_B#D~{YL#J{T6+jek=NYJM@@c`rXiE_QJMx0C;dne^`G6 zcAI1RE?~qd=W~ChRY4>4I5#b-3mik#ku1X`o;C<`1u2pE*lV+5Vu<2FD{|26n3EtWFf=&LGd^%IN{!YD>*3jJ<}#A zDi$9YXMNgJ6K->?-hb+g_6heKOB|jv|G2I7^UtnXH*|g5>Je@H>iDnVX1B%ni|f}f z<(gZL{&V@urE|ZWcE{3#15TMKPqC(P{ZXG)t;)gtpaJnS69x?LH!n|l9zUEO5{DV5fx2z!n?ahk?#-S5G$cLp3f1A8y|g51uAgplu%-Y zJFtX(X*54ik*%1b;#bFwlLH7H7QZ@f7&e+eOYqwvxJuv!`=~sLNcEu)gV5RA4<6nqmmLp zCjv;IMKOsFERS3T4RfC0oU74B3n(W%LujY84kh=+2v(zP@%Y|M1s! zfBNy$L21vFtsbyI?|5Lw-RE!ka?H(x3Vh$yADy$DkNn`-aB*<(x&A2+J!(AXWo```}XM^XSxa zIYJY~|4-A9K*PM!(1V6mMu~>2e-#a5*_hB1m;DkASI|+E0it8gFVgY7HG_=>yZ%pc zR~`;!_x{ZoTVvm|?@P94Ms|g4k*taAj4;Z+QyN6pWK9c3$dWBdWZx=lwroQvQ7TE3 zB=LPlDZTZ5-}kzH*YEoNd7in?oO3o;2x4Ym4)W#q--ib01f*D=Y+GXStyhcMH%YD+ zpB$egkrkl9?J`p68-Sy>M8+MDlWrJCJ<`ck?C4mOh7Z2aWyi-gj^8nhQ+f(32QK-cV$4g?yG)#Jjlnn;(Zm%)mEg0#Fhb|F+vf!J;5$LQ9a~8h_(5 zWEj9_$DKe2cLu+1?AvLB4$k%6M}2)HwtYOnN7CmzLT@{|+z(r5l-N&Od$hgeUreQZ zeS9QP_7cuWNz_SiK$$Q(ZkP-p4Ir>mSc%=e34ri7y+J7Ww_c9i1#Vgo(7DvQj9gFj zCX7)mDmJq9RPz8gVH*4}R)87vXY~7(WkC{w5Ctk#CG8{9TTXNUL<-a4Mfmo@uM+7=!r%;Use)O!a(+sX#vU9Fu90J>2WFR{bJ+ zQM+LZ4#L#gT`-}ehhPR6!FLWy4Jr_gy?wzlKps6`M@fVjAWC=+XW%m-6!)Iw(Lg(+ z!4u$iDG!kFL1+LK20|1NCKwYl5G262Klw$V@TmEL_Z|}}gtwK545&q9K^X=BGN2Lx zSKQAg;P>yQ_kBe8KaYsu2YA0tj_v2<2v=$HNb`It-GBZP_oWz>ewFXa@Z@w@UK|0T)q*~vdY;KtkczZN2zu~DK`Lp96(Rw@r zjull+6YB~d%cm8Q;&U{p?x3>a8S7Xlr%Wo9PoJD9pF2%Yi;Pbn4f`zC~&24%Yoib}* ze)_r6~|)aHb$5S?nyKzrM8MP_NFW(=D6*m%TL|6$dq zbve(Ea;plwZ=ShGufZBl*4ZiYl$@<#ze;2#ijz=Z|~V+FDNQM|hZh!0^M`S_gPuC4WP@sS-X-#mf+0#o|%cWim8mia8`3qaR?7xjL%vXyV*iszfSB88cPJAnc5 zpFj?UFz*0)KtRB+)9~~F3uc4<;llW)g%FDIkyKIY2% zn)Kmy{#RWnl5ldO^3)z)1(PR687`3KnN^cUbGnR%@iMxF>~}-_M|+&b0&OhQuIc91 z>Fw8^6%EqT?(7&6Df44*MKyf>T4z*H2~ANou?fyZf8N|LiD!#D4L?K_Gb=1r7`bQR zZKM#s=Fw1D*yUU~arqax%O-+lmzZbs4pFo6adrL$!^+d6gs0L%7SAD9X@vsF##C1TvPWlct6uHzRFw zeltm3a$+BZ{o$1bF+VDMeptNmpk#fBkzw+U>>Gi;X%Sf;?xmmTDx(|Ax>lo0+4@pJ zR>bMmP5+7ZEyS}*>jbnwtfl$cxbngHdSe6)=OwB1LanO-vbU~Cnf6lM4J4k6E@J5M zb_;&A8W2>Y`#6$|OLt9DThc=IwIs_H&ae4ws*9eqpT9ca0EWoyLMTJavZ?OM>ulI; zp@ibSvVxd1w+m^$t_Wo=e^TYd=XKKR0h5mXca7=fIyWp$g&JcTP}7HCUcm-&D}5zx ztGJn~>yn<~hh)Q}Fdb!Qp}}}N>Ml+o9mj}&sdq)WlK7&S;ioGo%=yZX?2WaQD*L-8 zN5AG?w4(M5O=U1ZvTx-jTKRpvo@d?(gp;y^SWo;N=g|dw)S_ulHMty=a~dg_$Ny!? z{I7tNpi*T4Bp6iy;BE&3z9STNHGwm`@Ewda32{8g9ORUw2H-K4U?@uu&=MYyQBoW_ z37)*`?F&Bpj^KMJ*$lT&2IVmUceQL+=4%ly<^2|v?!f%t83EzY-{VjyAr6ItaVY3x zd3Q1%-6BoZFlS)Ks1M~w^uXg?m(Gn%?`_noMlx|l&D$nvQYhRTJ?>QVFwg;7V|6sL zl@0nzKj=F8ppkEjg)`|~)>+wDPRr@!3ao-zLElQG1ZqXj?8RC4T>Y=)$K9&#+zLL? z{am$j@4N6>#ih?N?62#aHBNKt4%KA@7hkX|eq>R2Mr=%M^SJSh8dkyN_3I1wvZo;4 zEhLYWNP^jo-fCDg6Qh8A7g=$+{+VnS-%PkS=zfimp5Py74ivTO+0+dGbi?9;otZB# zlq@?Va*8dIUOZl;S^i9((dEnEppSb397E73O&4U6$cW^i zc@yslbz8Za0?T^zP91Z{j(H0uTM6}C&fr^Xx_y6SG~9{IuKROesx5nqu$R!wv(N>D zDv_JyQfp#H2}6U#E+dQ-4FQ)m?v)}Uuhq0&KXTxO3-8#1+>?i+rU{tS&z(6Mm$Y={ z*#jr?i(!Hp0Ziei7ZqCIWbSzk?a^~8Gfsy+AT3ZdKBlhRM;V{OKgh== zz*|g0iAYgu&YIyi8P@6Grk}?xSPge0`E=To5^v&b`d7Io9h2_nb}ojxk#QUa8X-G0 zmj%+?)n922RObIkbA)^kCj*S2_6Z4@Z&5rhUe~j^z+hf>!z;2x^IWWbWxvrc4Dv^c zaogc6km>BfFVO#v>Hehu{|nP?Q!04-i1aq$$r7f^4U+;Zs>HCOSm7wa|4PPS&_KAg zgwXFaz)$E$590vXe(>*alm-|QjCf!=fHpu*O6nX&3FhelB~tiy!Y=Ht90UscKhh%@ z26SR*(hZ9}7Axh)IA-Kmmyddc1PWeIBpxm^p$lM4qO{ng7ww;Ew?bp65v7Xlq{^9y ze8Uxf+}!|x;~1SzySdHyWewH7(yS|el<5-V49*Vn#x+7G9^Wgj4K216+DuN-@wAIM zNX87fwH8g8>K4y9@uwu~D*IO{A9j6Z%^KDvlOdEW5MzW7uve>^;qcJxWT$Z_##uo; zrPGgI3(J^j<{_$B%1*1&oKH|!Hao}~cnIU>SD0`F8RvHl@1jp;b1~KW^_2MgX@)CK z{u{aQ;yEIn!~vzk8f1;&bd0K2(2C(->rj&vhLHR=`f_YnjV^<4~pavu8pIKcd zKzvt=62S#w3zm+(e za;w*i|5?^4`rQNyCMaRyP$Knw8(KC9Pw{c0clTQ9tj2-%~e914+Ii@7CuTgLbE$vTe|_c)C6McyZmJoDvA_%w(Fk zN4+av^ix|reM!|;_!J6~NNchB@G;4n(X2t}hicr64drdElKNTK*vIRWAN>1!2IeRR z)*H(XiPjWz%fe$ubtJMTG3vq0YH@?1ICD*6i}KVx>jGb=^hqcd?r`3JrsA5&!r@RE zfydakuWOw#f-Ad+ZD9kPxYF2oYFaKjyBWfQys9N`ogkg-Y#LWh^}cXZwJX}#|AKk_ zbgQSz+K8u`oJ#i|N4my7JbjML<6(;)wOenzh-|wcUH-#_JAs5QB*}8f6;X z{C9Rd0wO(fZQ(+fa!kzpTEKoV4~T>Kr>R6 zHD-ZbBC}}J=+hO60|`fda|Z}fB)+CgM25oLh9y>Sy7u~ch}?((wvbn;Kd|y(u4M^r zDqm{jhFQo^-na(&_`4c=QmE7=8#uX}o1cCWR}zNfb5;kofh(R-X+@|?ynMJv({Ln@ zggv$vyVv%;zlDOL$?LVKMn!$0Rnk~;^J~s*xiWdt^!h6&Jnk$y1rwpP@#J(Dv>Jr_ zxc1#?!z5oj)0>D?cMx8?7F4P!>Q&nQycWIQMd^Lg?Zsz7Z_6iiRZC*|25gKs(3R26 z4?570xWzXP8MTHGX6{!U>vlY0?-;USA@bU;5~anski2*=oL_F+TSj)_>t}-`RHj}w W2dVpIKvVf0__!`T{zOxCw(mb(*JxG% diff --git a/python/_decimal.pyd b/python/_decimal.pyd deleted file mode 100644 index 275af6c9e37a2c8b9f00853b576f885337edce85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 216728 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 z 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%0A;d)8A% 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%0Ajw|CneO`!FScnvmCL3VD52Lypy-KSv_x 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%0AO%KEszI|2?z_1pbef+U(*dIz)47q1?q&sy;&0 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